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

Commit fedd5f1f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Removing host deletion on startup and corresponding callbacks" into ub-launcher3-master

parents 7f791a86 01615a69
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -130,7 +130,7 @@ public class DbDowngradeHelperTest {
        }
        helper.close();

        helper = new DatabaseHelper(mContext, null, DB_FILE) {
        helper = new DatabaseHelper(mContext, DB_FILE) {
            @Override
            public void onOpen(SQLiteDatabase db) { }
        };
@@ -161,7 +161,7 @@ public class DbDowngradeHelperTest {

        DbDowngradeHelper.updateSchemaFile(mSchemaFile, LauncherProvider.SCHEMA_VERSION, mContext);

        DatabaseHelper dbHelper = new DatabaseHelper(mContext, null, DB_FILE) {
        DatabaseHelper dbHelper = new DatabaseHelper(mContext, DB_FILE) {
            @Override
            public void onOpen(SQLiteDatabase db) { }
        };
+1 −1
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ public class TestLauncherProvider extends LauncherProvider {

    private static class MyDatabaseHelper extends DatabaseHelper {
        public MyDatabaseHelper(Context context) {
            super(context, null, null);
            super(context, null);
            initIds();
        }

+1 −8
Original line number Diff line number Diff line
@@ -173,7 +173,7 @@ import java.util.function.Supplier;
 * Default launcher application.
 */
public class Launcher extends BaseDraggingActivity implements LauncherExterns,
        Callbacks, LauncherProviderChangeListener, UserEventDelegate,
        Callbacks, UserEventDelegate,
        InvariantDeviceProfile.OnIDPChangeListener, PluginListener<OverlayPlugin> {
    public static final String TAG = "Launcher";

@@ -614,13 +614,6 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
        return mLauncherView.findViewById(id);
    }

    @Override
    public void onAppWidgetHostReset() {
        if (mAppWidgetHost != null) {
            mAppWidgetHost.startListening();
        }
    }

    private LauncherCallbacks mLauncherCallbacks;

    /**
+5 −15
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
import static com.android.launcher3.util.SecureSettingsObserver.newNotificationSettingsObserver;

import android.content.ComponentName;
import android.content.ContentProviderClient;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
@@ -71,10 +70,6 @@ public class LauncherAppState {
    }

    private LauncherAppState(Context context) {
        if (getLocalProvider(context) == null) {
            throw new RuntimeException(
                    "Initializing LauncherAppState in the absence of LauncherProvider");
        }
        Log.v(Launcher.TAG, "LauncherAppState initiated");
        Preconditions.assertUIThread();
        mContext = context;
@@ -99,7 +94,10 @@ public class LauncherAppState {
        if (FeatureFlags.IS_DOGFOOD_BUILD) {
            filter.addAction(ACTION_FORCE_ROLOAD);
        }
        // TODO: remove listener on terminate
        FeatureFlags.APP_SEARCH_IMPROVEMENTS.addChangeListener(context, mModel::forceReload);
        CustomWidgetManager.INSTANCE.get(mContext)
                .setWidgetRefreshCallback(mModel::refreshAndBindWidgetsAndShortcuts);

        mContext.registerReceiver(mModel, filter);
        UserManagerCompat.getInstance(mContext).enableAndResetCache();
@@ -149,16 +147,15 @@ public class LauncherAppState {
        final LauncherAppsCompat launcherApps = LauncherAppsCompat.getInstance(mContext);
        launcherApps.removeOnAppsChangedCallback(mModel);
        mInstallSessionTracker.unregister();
        CustomWidgetManager.INSTANCE.get(mContext).setWidgetRefreshCallback(null);

        if (mNotificationDotsObserver != null) {
            mNotificationDotsObserver.unregister();
        }
    }

    LauncherModel setLauncher(Launcher launcher) {
        getLocalProvider(mContext).setLauncherProviderChangeListener(launcher);
        mModel.initialize(launcher);
        CustomWidgetManager.INSTANCE.get(launcher)
                .setWidgetRefreshCallback(mModel::refreshAndBindWidgetsAndShortcuts);
        return mModel;
    }

@@ -184,11 +181,4 @@ public class LauncherAppState {
    public static InvariantDeviceProfile getIDP(Context context) {
        return InvariantDeviceProfile.INSTANCE.get(context);
    }

    private static LauncherProvider getLocalProvider(Context context) {
        try (ContentProviderClient cl = context.getContentResolver()
                .acquireContentProviderClient(LauncherProvider.AUTHORITY)) {
            return (LauncherProvider) cl.getLocalContentProvider();
        }
    }
}
+4 −50
Original line number Diff line number Diff line
@@ -45,8 +45,6 @@ import android.net.Uri;
import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Process;
import android.os.UserHandle;
import android.provider.BaseColumns;
@@ -69,7 +67,6 @@ import com.android.launcher3.util.IntArray;
import com.android.launcher3.util.IntSet;
import com.android.launcher3.util.NoLocaleSQLiteHelper;
import com.android.launcher3.util.PackageManagerHelper;
import com.android.launcher3.util.Preconditions;
import com.android.launcher3.util.Thunk;

import org.xmlpull.v1.XmlPullParser;
@@ -100,9 +97,6 @@ public class LauncherProvider extends ContentProvider {

    static final String EMPTY_DATABASE_CREATED = "EMPTY_DATABASE_CREATED";

    private final ChangeListenerWrapper mListenerWrapper = new ChangeListenerWrapper();
    private Handler mListenerHandler;

    protected DatabaseHelper mOpenHelper;

    /**
@@ -122,7 +116,6 @@ public class LauncherProvider extends ContentProvider {
        if (FeatureFlags.IS_DOGFOOD_BUILD) {
            Log.d(TAG, "Launcher process started");
        }
        mListenerHandler = new Handler(mListenerWrapper);

        // The content provider exists for the entire duration of the launcher main process and
        // is the first component to get created.
@@ -130,14 +123,6 @@ public class LauncherProvider extends ContentProvider {
        return true;
    }

    /**
     * Sets a provider listener.
     */
    public void setLauncherProviderChangeListener(LauncherProviderChangeListener listener) {
        Preconditions.assertUIThread();
        mListenerWrapper.mListener = listener;
    }

    @Override
    public String getType(Uri uri) {
        SqlArguments args = new SqlArguments(uri, null, null);
@@ -153,7 +138,7 @@ public class LauncherProvider extends ContentProvider {
     */
    protected synchronized void createDbIfNotExists() {
        if (mOpenHelper == null) {
            mOpenHelper = new DatabaseHelper(getContext(), mListenerHandler);
            mOpenHelper = new DatabaseHelper(getContext());

            if (RestoreDbTask.isPending(getContext())) {
                if (!RestoreDbTask.performRestore(getContext(), mOpenHelper,
@@ -552,15 +537,13 @@ public class LauncherProvider extends ContentProvider {
     * The class is subclassed in tests to create an in-memory db.
     */
    public static class DatabaseHelper extends NoLocaleSQLiteHelper implements LayoutParserCallback {
        private final BackupManager mBackupManager;
        private final Handler mWidgetHostResetHandler;
        private final Context mContext;
        private int mMaxItemId = -1;
        private int mMaxScreenId = -1;
        private boolean mBackupTableExists;

        DatabaseHelper(Context context, Handler widgetHostResetHandler) {
            this(context, widgetHostResetHandler, LauncherFiles.LAUNCHER_DB);
        DatabaseHelper(Context context) {
            this(context, LauncherFiles.LAUNCHER_DB);
            // Table creation sometimes fails silently, which leads to a crash loop.
            // This way, we will try to create a table every time after crash, so the device
            // would eventually be able to recover.
@@ -577,12 +560,9 @@ public class LauncherProvider extends ContentProvider {
        /**
         * Constructor used in tests and for restore.
         */
        public DatabaseHelper(
                Context context, Handler widgetHostResetHandler, String tableName) {
        public DatabaseHelper(Context context, String tableName) {
            super(context, tableName, SCHEMA_VERSION);
            mContext = context;
            mWidgetHostResetHandler = widgetHostResetHandler;
            mBackupManager = new BackupManager(mContext);
        }

        protected void initIds() {
@@ -621,13 +601,6 @@ public class LauncherProvider extends ContentProvider {
         * Overriden in tests.
         */
        protected void onEmptyDbCreated() {
            // Database was just created, so wipe any previous widgets
            if (mWidgetHostResetHandler != null) {
                newLauncherWidgetHost().deleteHost();
                mWidgetHostResetHandler.sendEmptyMessage(
                        ChangeListenerWrapper.MSG_APP_WIDGET_HOST_RESET);
            }

            // Set the flag for empty DB
            Utilities.getPrefs(mContext).edit().putBoolean(EMPTY_DATABASE_CREATED, true).commit();
        }
@@ -1027,23 +1000,4 @@ public class LauncherProvider extends ContentProvider {
            }
        }
    }

    private static class ChangeListenerWrapper implements Handler.Callback {

        private static final int MSG_APP_WIDGET_HOST_RESET = 2;

        private LauncherProviderChangeListener mListener;

        @Override
        public boolean handleMessage(Message msg) {
            if (mListener != null) {
                switch (msg.what) {
                    case MSG_APP_WIDGET_HOST_RESET:
                        mListener.onAppWidgetHostReset();
                        break;
                }
            }
            return true;
        }
    }
}
Loading