summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Jurka <mikejurka@google.com>2012-11-28 16:51:00 -0800
committerMichael Jurka <mikejurka@google.com>2012-11-29 13:15:39 -0800
commitfff5614caecb0d2944b1bc206aaab0d3acb17670 (patch)
treea190902347a6bb0d02eaf15b20498af359c6b3b6
parent8f1371aff392debf345027874f5fad4354137eed (diff)
downloadframeworks_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
-rw-r--r--core/java/com/android/internal/widget/LockPatternUtils.java3
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java15
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitor.java28
3 files changed, 27 insertions, 19 deletions
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
index 5fa0b78..907b52a 100644
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
@@ -24,7 +24,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Binder;
-import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.ServiceManager;
@@ -54,8 +53,6 @@ import java.util.List;
*/
public class LockPatternUtils {
- private static final String OPTION_ENABLE_FACELOCK = "enable_facelock";
-
private static final String TAG = "LockPatternUtils";
/**
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;
}
}