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

Commit affe0b5f authored by Winson Chung's avatar Winson Chung Committed by Android (Google) Code Review
Browse files

Merge "Tightening migration conditions. (Bug 11973614)" into jb-ub-now-kermit

parents 12f583b4 e43a1e78
Loading
Loading
Loading
Loading
+26 −3
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
@@ -478,12 +479,19 @@ public class Launcher extends Activity
        // On large interfaces, we want the screen to auto-rotate based on the current orientation
        unlockScreenOrientation(true);

        // The two first run cling paths are mutually exclusive, if the launcher is preinstalled
        // on the device, then we always show the first run cling experience (or if there is no
        // launcher2). Otherwise, we prompt the user upon started for migration
        showFirstRunActivity();
        if (mModel.canMigrateFromOldLauncherDb()) {
        if (mLauncherClings.shouldShowFirstRunOrMigrationClings()) {
            if (mModel.canMigrateFromOldLauncherDb(this)) {
                mLauncherClings.showMigrationCling();
            } else {
                mLauncherClings.showFirstRunCling();
            }
        } else {
            mLauncherClings.removeFirstRunAndMigrationClings();
        }
    }

    protected void onUserLeaveHint() {
@@ -4280,6 +4288,21 @@ public class Launcher extends Activity
        mLauncherClings.updateSearchBarHint(hint);
    }

    protected boolean isLauncherPreinstalled() {
        PackageManager pm = getPackageManager();
        try {
            ApplicationInfo ai = pm.getApplicationInfo(getComponentName().getPackageName(), 0);
            if ((ai.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
                return true;
            } else {
                return false;
            }
        } catch (NameNotFoundException e) {
            e.printStackTrace();
            return false;
        }
    }

    protected String getFirstRunClingSearchBarHint() {
        return "";
    }
+29 −17
Original line number Diff line number Diff line
@@ -200,14 +200,27 @@ class LauncherClings {
        }
    }

    /** Shows the first run cling */
    public void showFirstRunCling() {
    public boolean shouldShowFirstRunOrMigrationClings() {
        SharedPreferences sharedPrefs = mLauncher.getSharedPrefs();
        if (isClingsEnabled() &&
        return isClingsEnabled() &&
            !sharedPrefs.getBoolean(FIRST_RUN_CLING_DISMISSED_KEY, false) &&
                !skipCustomClingIfNoAccounts() ) {
            !sharedPrefs.getBoolean(MIGRATION_CLING_DISMISSED_KEY, false);
    }

    public void removeFirstRunAndMigrationClings() {
        removeCling(R.id.first_run_cling);
        removeCling(R.id.migration_cling);
    }

    /**
     * Shows the first run cling.
     *
     * This flow is mutually exclusive with showMigrationCling, and only runs if this Launcher
     * package was preinstalled or there is no db to migrate from.
     */
    public void showFirstRunCling() {
        if (!skipCustomClingIfNoAccounts()) {
            SharedPreferences sharedPrefs = mLauncher.getSharedPrefs();
            // If we're not using the default workspace layout, replace workspace cling
            // with a custom workspace cling (usually specified in an overlay)
            // For now, only do this on tablets
@@ -238,22 +251,22 @@ class LauncherClings {
            }
            initCling(R.id.first_run_cling, 0, false, true);
        } else {
            removeCling(R.id.first_run_cling);
            removeFirstRunAndMigrationClings();
        }
    }

    /**
     * Shows the migration cling.
     *
     * This flow is mutually exclusive with showFirstRunCling, and only runs if this Launcher
     * package was not preinstalled and there exists a db to migrate from.
     */
    public void showMigrationCling() {
        // Enable the clings only if they have not been dismissed before
        if (isClingsEnabled() && !mLauncher.getSharedPrefs().getBoolean(
                MIGRATION_CLING_DISMISSED_KEY, false)) {
        mLauncher.hideWorkspaceSearchAndHotseat();

        Cling c = initCling(R.id.migration_cling, 0, false, true);
        c.bringScrimToFront();
        c.bringToFront();
        } else {
            removeCling(R.id.migration_cling);
        }
    }

    public void showMigrationWorkspaceCling() {
@@ -300,7 +313,6 @@ class LauncherClings {
        }
    }


    /** Removes the cling outright from the DragLayer */
    private void removeCling(int id) {
        final View cling = mLauncher.findViewById(id);
+2 −2
Original line number Diff line number Diff line
@@ -227,8 +227,8 @@ public class LauncherModel extends BroadcastReceiver {
        }
    }

    boolean canMigrateFromOldLauncherDb() {
        return mOldContentProviderExists;
    boolean canMigrateFromOldLauncherDb(Launcher launcher) {
        return mOldContentProviderExists && !launcher.isLauncherPreinstalled() ;
    }

    static boolean findNextAvailableIconSpaceInScreen(ArrayList<ItemInfo> items, int[] xy,