Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 967fcfa5 authored by Svetoslav Ganov's avatar Svetoslav Ganov Committed by Android (Google) Code Review
Browse files

Merge "Use the correct handler when persisting the settings state." into nyc-dev

parents 37a40271 9205749c
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -203,9 +203,6 @@ public class SettingsProvider extends ContentProvider {
    @GuardedBy("mLock")
    private HandlerThread mHandlerThread;

    @GuardedBy("mLock")
    private Handler mBackgroundHandler;

    // We have to call in the user manager with no lock held,
    private volatile UserManager mUserManager;

@@ -254,7 +251,6 @@ public class SettingsProvider extends ContentProvider {
            mHandlerThread = new HandlerThread(LOG_TAG,
                    Process.THREAD_PRIORITY_BACKGROUND);
            mHandlerThread.start();
            mBackgroundHandler = new Handler(mHandlerThread.getLooper());
            mSettingsRegistry = new SettingsRegistry();
        }
        registerBroadcastReceivers();
@@ -1680,7 +1676,7 @@ public class SettingsProvider extends ContentProvider {
            if (mSettingsStates.get(key) == null) {
                final int maxBytesPerPackage = getMaxBytesPerPackageForType(getTypeFromKey(key));
                SettingsState settingsState = new SettingsState(mLock, getSettingsFile(key), key,
                        maxBytesPerPackage, mBackgroundHandler);
                        maxBytesPerPackage, mHandlerThread.getLooper());
                mSettingsStates.put(key, settingsState);
            }
        }
+5 −5
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.providers.settings;

import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.SystemClock;
import android.provider.Settings;
@@ -27,7 +28,6 @@ import android.util.Base64;
import android.util.Slog;
import android.util.Xml;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.os.BackgroundThread;
import libcore.io.IoUtils;
import libcore.util.Objects;
import org.xmlpull.v1.XmlPullParser;
@@ -135,14 +135,14 @@ final class SettingsState {
    private long mNextId;

    public SettingsState(Object lock, File file, int key, int maxBytesPerAppPackage,
            Handler handler) {
            Looper looper) {
        // It is important that we use the same lock as the settings provider
        // to ensure multiple mutations on this state are atomicaly persisted
        // as the async persistence should be blocked while we make changes.
        mLock = lock;
        mStatePersistFile = file;
        mKey = key;
        mHandler = handler;
        mHandler = new MyHandler(looper);
        if (maxBytesPerAppPackage == MAX_BYTES_PER_APP_PACKAGE_LIMITED) {
            mMaxBytesPerAppPackage = maxBytesPerAppPackage;
            mPackageToMemoryUsage = new ArrayMap<>();
@@ -548,8 +548,8 @@ final class SettingsState {
    private final class MyHandler extends Handler {
        public static final int MSG_PERSIST_SETTINGS = 1;

        public MyHandler() {
            super(BackgroundThread.getHandler().getLooper());
        public MyHandler(Looper looper) {
            super(looper);
        }

        @Override
+4 −3
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
package com.android.providers.settings;

import android.os.Handler;
import android.os.Looper;
import android.test.AndroidTestCase;
import android.util.Xml;

@@ -127,7 +128,7 @@ public class SettingsStateTest extends AndroidTestCase {
        final Object lock = new Object();

        final SettingsState ssWriter = new SettingsState(lock, file, 1,
                SettingsState.MAX_BYTES_PER_APP_PACKAGE_UNLIMITED, new Handler());
                SettingsState.MAX_BYTES_PER_APP_PACKAGE_UNLIMITED, Looper.getMainLooper());
        ssWriter.setVersionLocked(SettingsState.SETTINGS_VERSOIN_NEW_ENCODING);

        ssWriter.insertSettingLocked("k1", "\u0000", "package");
@@ -139,7 +140,7 @@ public class SettingsStateTest extends AndroidTestCase {
        }

        final SettingsState ssReader = new SettingsState(lock, file, 1,
                SettingsState.MAX_BYTES_PER_APP_PACKAGE_UNLIMITED, new Handler());
                SettingsState.MAX_BYTES_PER_APP_PACKAGE_UNLIMITED, Looper.getMainLooper());
        synchronized (lock) {
            assertEquals("\u0000", ssReader.getSettingLocked("k1").getValue());
            assertEquals("abc", ssReader.getSettingLocked("k2").getValue());
@@ -166,7 +167,7 @@ public class SettingsStateTest extends AndroidTestCase {
        os.close();

        final SettingsState ss = new SettingsState(lock, file, 1,
                SettingsState.MAX_BYTES_PER_APP_PACKAGE_UNLIMITED, new Handler());
                SettingsState.MAX_BYTES_PER_APP_PACKAGE_UNLIMITED, Looper.getMainLooper());
        synchronized (lock) {
            SettingsState.Setting s;
            s = ss.getSettingLocked("k0");