From 4b171361ca4ef2d88cd9493c6d92bb390df45289 Mon Sep 17 00:00:00 2001 From: Chris Wren Date: Mon, 13 Jan 2014 17:39:02 -0500 Subject: hide launcher restore behind a flag. enable with 'adb shell settings put secure launcher_restore_enabled 1' before signing into wiped device Bug: 12532845 Change-Id: I1471c39dac2e6e1412f7720b1ba8edf46273c593 --- .../launcher3/LauncherBackupAgentHelper.java | 15 +++++++-- .../android/launcher3/LauncherBackupHelper.java | 5 ++- .../launcher3/LauncherPreferencesBackupHelper.java | 39 ++++++++++++++++++++++ 3 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 src/com/android/launcher3/LauncherPreferencesBackupHelper.java diff --git a/src/com/android/launcher3/LauncherBackupAgentHelper.java b/src/com/android/launcher3/LauncherBackupAgentHelper.java index 83e4a60d4..876cf0887 100644 --- a/src/com/android/launcher3/LauncherBackupAgentHelper.java +++ b/src/com/android/launcher3/LauncherBackupAgentHelper.java @@ -21,6 +21,7 @@ import android.app.backup.BackupManager; import android.app.backup.SharedPreferencesBackupHelper; import android.content.Context; import android.content.SharedPreferences; +import android.provider.Settings; public class LauncherBackupAgentHelper extends BackupAgentHelper { @@ -28,6 +29,8 @@ public class LauncherBackupAgentHelper extends BackupAgentHelper { private static BackupManager sBackupManager; + protected static final String SETTING_RESTORE_ENABLED = "launcher_restore_enabled"; + /** * Notify the backup manager that out database is dirty. * @@ -54,9 +57,15 @@ public class LauncherBackupAgentHelper extends BackupAgentHelper { @Override public void onCreate() { + + boolean restoreEnabled = 0 != Settings.Secure.getInt( + getContentResolver(), SETTING_RESTORE_ENABLED, 0); + addHelper(LauncherBackupHelper.LAUNCHER_PREFS_PREFIX, - new SharedPreferencesBackupHelper(this, - LauncherAppState.getSharedPreferencesKey())); - addHelper(LauncherBackupHelper.LAUNCHER_PREFIX, new LauncherBackupHelper(this)); + new LauncherPreferencesBackupHelper(this, + LauncherAppState.getSharedPreferencesKey(), + restoreEnabled)); + addHelper(LauncherBackupHelper.LAUNCHER_PREFIX, + new LauncherBackupHelper(this, restoreEnabled)); } } diff --git a/src/com/android/launcher3/LauncherBackupHelper.java b/src/com/android/launcher3/LauncherBackupHelper.java index a081c2191..704d790da 100644 --- a/src/com/android/launcher3/LauncherBackupHelper.java +++ b/src/com/android/launcher3/LauncherBackupHelper.java @@ -137,12 +137,15 @@ public class LauncherBackupHelper implements BackupHelper { private final Context mContext; + private final boolean mRestoreEnabled; + private HashMap mWidgetMap; private ArrayList mKeys; - public LauncherBackupHelper(Context context) { + public LauncherBackupHelper(Context context, boolean restoreEnabled) { mContext = context; + mRestoreEnabled = restoreEnabled; } private void dataChanged() { diff --git a/src/com/android/launcher3/LauncherPreferencesBackupHelper.java b/src/com/android/launcher3/LauncherPreferencesBackupHelper.java new file mode 100644 index 000000000..1ac6ff962 --- /dev/null +++ b/src/com/android/launcher3/LauncherPreferencesBackupHelper.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.launcher3; + +import android.app.backup.BackupDataInputStream; +import android.app.backup.SharedPreferencesBackupHelper; +import android.content.Context; + +public class LauncherPreferencesBackupHelper extends SharedPreferencesBackupHelper { + + private final boolean mRestoreEnabled; + + public LauncherPreferencesBackupHelper(Context context, String sharedPreferencesKey, + boolean restoreEnabled) { + super(context, sharedPreferencesKey); + mRestoreEnabled = restoreEnabled; + } + + @Override + public void restoreEntity(BackupDataInputStream data) { + if (mRestoreEnabled) { + super.restoreEntity(data); + } + } +} -- cgit v1.2.3