diff options
author | Michael Jurka <mikejurka@google.com> | 2012-11-28 16:51:00 -0800 |
---|---|---|
committer | Michael Jurka <mikejurka@google.com> | 2012-11-29 13:15:39 -0800 |
commit | fff5614caecb0d2944b1bc206aaab0d3acb17670 (patch) | |
tree | a190902347a6bb0d02eaf15b20498af359c6b3b6 /policy/src | |
parent | 8f1371aff392debf345027874f5fad4354137eed (diff) | |
download | frameworks_base-fff5614caecb0d2944b1bc206aaab0d3acb17670.zip frameworks_base-fff5614caecb0d2944b1bc206aaab0d3acb17670.tar.gz frameworks_base-fff5614caecb0d2944b1bc206aaab0d3acb17670.tar.bz2 |
Disable adding keyguard widgets until setup is done
Bug: 7504154
Change-Id: I865f0139bb328e6b9b19493e0d8f9f086e2ebc38
Diffstat (limited to 'policy/src')
-rw-r--r-- | policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java | 15 | ||||
-rw-r--r-- | policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitor.java | 28 |
2 files changed, 27 insertions, 16 deletions
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java index 11ed5bc..1b7626e 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java @@ -40,6 +40,7 @@ import android.os.Parcelable; import android.os.SystemClock; import android.os.UserHandle; import android.os.UserManager; +import android.provider.Settings; import android.util.AttributeSet; import android.util.Log; import android.util.Slog; @@ -101,6 +102,8 @@ public class KeyguardHostView extends KeyguardViewBase { private boolean mSafeModeEnabled; + private boolean mUserSetupCompleted; + /*package*/ interface TransportCallback { void onListenerDetached(); void onListenerAttached(); @@ -143,6 +146,8 @@ public class KeyguardHostView extends KeyguardViewBase { } mSafeModeEnabled = LockPatternUtils.isSafeModeEnabled(); + mUserSetupCompleted = Settings.Secure.getIntForUser(mContext.getContentResolver(), + Settings.Secure.USER_SETUP_COMPLETE, 0, UserHandle.USER_CURRENT) != 0; if (mSafeModeEnabled) { Log.v(TAG, "Keyguard widgets disabled by safe mode"); @@ -270,7 +275,7 @@ public class KeyguardHostView extends KeyguardViewBase { addDefaultWidgets(); addWidgetsFromSettings(); - if (numWidgets() >= MAX_WIDGETS) { + if (!shouldEnableAddWidget()) { mAppWidgetContainer.setAddWidgetEnabled(false); } checkAppWidgetConsistency(); @@ -282,6 +287,10 @@ public class KeyguardHostView extends KeyguardViewBase { updateSecurityViews(); } + private boolean shouldEnableAddWidget() { + return numWidgets() < MAX_WIDGETS && mUserSetupCompleted; + } + private int getDisabledFeatures(DevicePolicyManager dpm) { int disabledFeatures = DevicePolicyManager.KEYGUARD_DISABLE_FEATURES_NONE; if (dpm != null) { @@ -364,7 +373,7 @@ public class KeyguardHostView extends KeyguardViewBase { @Override public void onAddView(View v) { - if (numWidgets() >= MAX_WIDGETS) { + if (!shouldEnableAddWidget()) { mAppWidgetContainer.setAddWidgetEnabled(false); } } @@ -382,7 +391,7 @@ public class KeyguardHostView extends KeyguardViewBase { @Override public void onRemoveViewAnimationCompleted() { - if (numWidgets() < MAX_WIDGETS) { + if (shouldEnableAddWidget()) { mAppWidgetContainer.setAddWidgetEnabled(true); } } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitor.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitor.java index 1968ecd..ad6f55c 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitor.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitor.java @@ -37,6 +37,7 @@ import android.os.Handler; import android.os.IRemoteCallback; import android.os.Message; import android.os.RemoteException; +import android.os.UserHandle; import android.provider.Settings; import com.android.internal.telephony.IccCardConstants; @@ -113,7 +114,7 @@ public class KeyguardUpdateMonitor { private final ArrayList<WeakReference<KeyguardUpdateMonitorCallback>> mCallbacks = Lists.newArrayList(); - private ContentObserver mContentObserver; + private ContentObserver mDeviceProvisionedObserver; private final Handler mHandler = new Handler() { @Override @@ -322,9 +323,7 @@ public class KeyguardUpdateMonitor { private KeyguardUpdateMonitor(Context context) { mContext = context; - mDeviceProvisioned = Settings.Global.getInt( - mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0) != 0; - + mDeviceProvisioned = isDeviceProvisionedInSettingsDb(); // Since device can't be un-provisioned, we only need to register a content observer // to update mDeviceProvisioned when we are... if (!mDeviceProvisioned) { @@ -373,13 +372,17 @@ public class KeyguardUpdateMonitor { } } + private boolean isDeviceProvisionedInSettingsDb() { + return Settings.Global.getInt(mContext.getContentResolver(), + Settings.Global.DEVICE_PROVISIONED, 0) != 0; + } + private void watchForDeviceProvisioning() { - mContentObserver = new ContentObserver(mHandler) { + mDeviceProvisionedObserver = new ContentObserver(mHandler) { @Override public void onChange(boolean selfChange) { super.onChange(selfChange); - mDeviceProvisioned = Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.DEVICE_PROVISIONED, 0) != 0; + mDeviceProvisioned = isDeviceProvisionedInSettingsDb(); if (mDeviceProvisioned) { mHandler.sendMessage(mHandler.obtainMessage(MSG_DEVICE_PROVISIONED)); } @@ -389,12 +392,11 @@ public class KeyguardUpdateMonitor { mContext.getContentResolver().registerContentObserver( Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED), - false, mContentObserver); + false, mDeviceProvisionedObserver); // prevent a race condition between where we check the flag and where we register the // observer by grabbing the value once again... - boolean provisioned = Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.DEVICE_PROVISIONED, 0) != 0; + boolean provisioned = isDeviceProvisionedInSettingsDb(); if (provisioned != mDeviceProvisioned) { mDeviceProvisioned = provisioned; if (mDeviceProvisioned) { @@ -475,10 +477,10 @@ public class KeyguardUpdateMonitor { cb.onDeviceProvisioned(); } } - if (mContentObserver != null) { + if (mDeviceProvisionedObserver != null) { // We don't need the observer anymore... - mContext.getContentResolver().unregisterContentObserver(mContentObserver); - mContentObserver = null; + mContext.getContentResolver().unregisterContentObserver(mDeviceProvisionedObserver); + mDeviceProvisionedObserver = null; } } |