Loading core/java/com/android/internal/widget/LockPatternUtils.java +30 −14 Original line number Diff line number Diff line Loading @@ -16,10 +16,6 @@ package com.android.internal.widget; import com.android.internal.R; import com.android.internal.telephony.ITelephony; import com.google.android.collect.Lists; import android.app.ActivityManagerNative; import android.app.admin.DevicePolicyManager; import android.content.ContentResolver; Loading @@ -42,12 +38,13 @@ import android.util.Log; import android.view.View; import android.widget.Button; import org.apache.harmony.kernel.vm.StringUtils; import com.android.internal.R; import com.android.internal.telephony.ITelephony; import com.google.android.collect.Lists; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.ArrayList; import java.util.List; /** Loading Loading @@ -127,6 +124,11 @@ public class LockPatternUtils { */ public static final int FLAG_BIOMETRIC_WEAK_LIVELINESS = 0x1; /** * Pseudo-appwidget id we use to represent the default clock status widget */ public static final int ID_DEFAULT_STATUS_WIDGET = -2; protected final static String LOCKOUT_PERMANENT_KEY = "lockscreen.lockedoutpermanently"; protected final static String LOCKOUT_ATTEMPT_DEADLINE = "lockscreen.lockoutattemptdeadline"; protected final static String PATTERN_EVER_CHOSEN_KEY = "lockscreen.patterneverchosen"; Loading Loading @@ -1052,7 +1054,7 @@ public class LockPatternUtils { mContentResolver, Settings.Secure.LOCK_SCREEN_APPWIDGET_IDS, UserHandle.USER_CURRENT); String delims = ","; if (appWidgetIdString != null) { if (appWidgetIdString != null && appWidgetIdString.length() > 0) { String[] appWidgetStringIds = appWidgetIdString.split(delims); int[] appWidgetIds = new int[appWidgetStringIds.length]; for (int i = 0; i < appWidgetStringIds.length; i++) { Loading @@ -1060,13 +1062,18 @@ public class LockPatternUtils { try { appWidgetIds[i] = Integer.decode(appWidget); } catch (NumberFormatException e) { Log.d(TAG, "Error when parsing widget id " + appWidget); return null; } } return appWidgetIds; } if (appWidgetIdString == null) { return new int[] { LockPatternUtils.ID_DEFAULT_STATUS_WIDGET }; } else { return new int[0]; } } private static String combineStrings(int[] list, String separator) { int listLength = list.length; Loading Loading @@ -1111,8 +1118,15 @@ public class LockPatternUtils { UserHandle.USER_CURRENT); } public void addAppWidget(int widgetId, int index) { // TODO: log an error if this returns false public boolean addAppWidget(int widgetId, int index) { int[] widgets = getAppWidgets(); if (widgets == null) { return false; } if (index < 0 || index >= widgets.length) { return false; } int[] newWidgets = new int[widgets.length + 1]; for (int i = 0, j = 0; i < newWidgets.length; i++) { if (index == i) { Loading @@ -1125,17 +1139,19 @@ public class LockPatternUtils { } } writeAppWidgets(newWidgets); return true; } public boolean removeAppWidget(int widgetId, int index) { public boolean removeAppWidget(int widgetId) { int[] widgets = getAppWidgets(); int[] newWidgets = new int[widgets.length - 1]; for (int i = 0, j = 0; i < widgets.length; i++) { if (index == i) { if (widgets[i] != widgetId) { return false; } if (widgets[i] == widgetId) { // continue... } else if (j >= newWidgets.length) { // we couldn't find the widget return false; } else { newWidgets[j] = widgets[i]; j++; Loading policy/src/com/android/internal/policy/impl/keyguard/EmergencyButton.java +0 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import android.os.SystemClock; import android.telephony.TelephonyManager; import android.util.AttributeSet; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import com.android.internal.telephony.IccCardConstants.State; Loading policy/src/com/android/internal/policy/impl/keyguard/KeyguardAbsKeyInputView.java +4 −23 Original line number Diff line number Diff line Loading @@ -17,41 +17,22 @@ package com.android.internal.policy.impl.keyguard; import android.content.Context; import android.util.AttributeSet; import android.view.HapticFeedbackConstants; import android.view.View; import android.view.ViewParent; import com.android.internal.widget.LockPatternUtils; import java.util.List; import android.app.admin.DevicePolicyManager; import android.content.res.Configuration; import android.graphics.Rect; import com.android.internal.widget.PasswordEntryKeyboardView; import android.os.CountDownTimer; import android.os.SystemClock; import android.text.Editable; import android.text.InputType; import android.text.SpannableStringBuilder; import android.text.TextWatcher; import android.text.method.DigitsKeyListener; import android.text.method.TextKeyListener; import android.text.style.TextAppearanceSpan; import android.util.AttributeSet; import android.view.HapticFeedbackConstants; import android.view.KeyEvent; import android.view.View; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodSubtype; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; import com.android.internal.R; import com.android.internal.widget.LockPatternUtils; /** * Base class for PIN and password unlock screens. Loading policy/src/com/android/internal/policy/impl/keyguard/KeyguardCircleFramedDrawable.java +0 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.util.Log; Loading policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java +29 −10 Original line number Diff line number Diff line Loading @@ -161,7 +161,7 @@ public class KeyguardHostView extends KeyguardViewBase { mAppWidgetContainer.setMinScale(0.5f); addDefaultWidgets(); maybePopulateWidgets(); addWidgetsFromSettings(); mViewStateManager = new KeyguardViewStateManager(); SlidingChallengeLayout slider = Loading @@ -170,6 +170,7 @@ public class KeyguardHostView extends KeyguardViewBase { slider.setOnChallengeScrolledListener(mViewStateManager); } mAppWidgetContainer.setViewStateManager(mViewStateManager); mAppWidgetContainer.setLockPatternUtils(mLockPatternUtils); mViewStateManager.setPagedView(mAppWidgetContainer); mViewStateManager.setChallengeLayout(slider != null ? slider : Loading Loading @@ -635,9 +636,11 @@ public class KeyguardHostView extends KeyguardViewBase { if (navigationText != null) { view.setSecurityMessageDisplay(new KeyguardNavigationManager(navigationText)); } else { if (mKeyguardStatusViewManager != null) { view.setSecurityMessageDisplay(mKeyguardStatusViewManager); } } } if (securityMode == SecurityMode.SimPin || securityMode == SecurityMode.SimPuk || securityMode == SecurityMode.Account) { Loading Loading @@ -826,7 +829,8 @@ public class KeyguardHostView extends KeyguardViewBase { AppWidgetHostView view = getAppWidgetHost().createView(mContext, appId, appWidgetInfo); addWidget(view, pageIndex); } else { Log.w(TAG, "AppWidgetInfo was null; not adding widget id " + appId); Log.w(TAG, "AppWidgetInfo for app widget id " + appId + " was null, deleting"); mLockPatternUtils.removeAppWidget(appId); } } Loading Loading @@ -876,8 +880,6 @@ public class KeyguardHostView extends KeyguardViewBase { View addWidget = inflater.inflate(R.layout.keyguard_add_widget, null, true); mAppWidgetContainer.addWidget(addWidget); View statusWidget = inflater.inflate(R.layout.keyguard_status_view, null, true); mAppWidgetContainer.addWidget(statusWidget); if (mContext.getResources().getBoolean(R.bool.kg_enable_camera_default_widget)) { View cameraWidget = CameraWidgetFrame.create(mContext, mCameraWidgetCallbacks, mActivityLauncher); Loading Loading @@ -950,12 +952,15 @@ public class KeyguardHostView extends KeyguardViewBase { }); } mKeyguardStatusViewManager = ((KeyguardStatusView) findViewById(R.id.keyguard_status_view_face_palm)).getManager(); KeyguardStatusView ksv = (KeyguardStatusView) findViewById(R.id.keyguard_status_view_face_palm); if (ksv != null) { mKeyguardStatusViewManager = ksv.getManager(); } } private void maybePopulateWidgets() { private void addWidgetsFromSettings() { DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE); if (dpm != null) { Loading @@ -980,7 +985,11 @@ public class KeyguardHostView extends KeyguardViewBase { Log.d(TAG, "Problem reading widgets"); } else { for (int i = widgets.length -1; i >= 0; i--) { if (widgets[i] != -1) { if (widgets[i] == LockPatternUtils.ID_DEFAULT_STATUS_WIDGET) { LayoutInflater inflater = LayoutInflater.from(mContext); View statusWidget = inflater.inflate(R.layout.keyguard_status_view, null, true); mAppWidgetContainer.addWidget(statusWidget, addPageIndex + 1); } else { // We add the widgets from left to right, starting after the first page after // the add page. We count down, since the order will be persisted from right // to left, starting after camera. Loading Loading @@ -1064,8 +1073,18 @@ public class KeyguardHostView extends KeyguardViewBase { pageToShow = multiUserPosition; } else { final View statusView = findViewById(R.id.keyguard_status_view); int statusViewIndex = mAppWidgetContainer.indexOfChild(statusView); if (statusViewIndex == -1) { // TEMP code for default page if (mAppWidgetContainer.getChildCount() > 2) { pageToShow = mAppWidgetContainer.getChildCount() - 2; } else { pageToShow = 0; } } else { pageToShow = mAppWidgetContainer.indexOfChild(statusView); } } if (mTransportState == TRANSPORT_VISIBLE) { mTransportState = TRANSPORT_INVISIBLE; } Loading Loading
core/java/com/android/internal/widget/LockPatternUtils.java +30 −14 Original line number Diff line number Diff line Loading @@ -16,10 +16,6 @@ package com.android.internal.widget; import com.android.internal.R; import com.android.internal.telephony.ITelephony; import com.google.android.collect.Lists; import android.app.ActivityManagerNative; import android.app.admin.DevicePolicyManager; import android.content.ContentResolver; Loading @@ -42,12 +38,13 @@ import android.util.Log; import android.view.View; import android.widget.Button; import org.apache.harmony.kernel.vm.StringUtils; import com.android.internal.R; import com.android.internal.telephony.ITelephony; import com.google.android.collect.Lists; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.ArrayList; import java.util.List; /** Loading Loading @@ -127,6 +124,11 @@ public class LockPatternUtils { */ public static final int FLAG_BIOMETRIC_WEAK_LIVELINESS = 0x1; /** * Pseudo-appwidget id we use to represent the default clock status widget */ public static final int ID_DEFAULT_STATUS_WIDGET = -2; protected final static String LOCKOUT_PERMANENT_KEY = "lockscreen.lockedoutpermanently"; protected final static String LOCKOUT_ATTEMPT_DEADLINE = "lockscreen.lockoutattemptdeadline"; protected final static String PATTERN_EVER_CHOSEN_KEY = "lockscreen.patterneverchosen"; Loading Loading @@ -1052,7 +1054,7 @@ public class LockPatternUtils { mContentResolver, Settings.Secure.LOCK_SCREEN_APPWIDGET_IDS, UserHandle.USER_CURRENT); String delims = ","; if (appWidgetIdString != null) { if (appWidgetIdString != null && appWidgetIdString.length() > 0) { String[] appWidgetStringIds = appWidgetIdString.split(delims); int[] appWidgetIds = new int[appWidgetStringIds.length]; for (int i = 0; i < appWidgetStringIds.length; i++) { Loading @@ -1060,13 +1062,18 @@ public class LockPatternUtils { try { appWidgetIds[i] = Integer.decode(appWidget); } catch (NumberFormatException e) { Log.d(TAG, "Error when parsing widget id " + appWidget); return null; } } return appWidgetIds; } if (appWidgetIdString == null) { return new int[] { LockPatternUtils.ID_DEFAULT_STATUS_WIDGET }; } else { return new int[0]; } } private static String combineStrings(int[] list, String separator) { int listLength = list.length; Loading Loading @@ -1111,8 +1118,15 @@ public class LockPatternUtils { UserHandle.USER_CURRENT); } public void addAppWidget(int widgetId, int index) { // TODO: log an error if this returns false public boolean addAppWidget(int widgetId, int index) { int[] widgets = getAppWidgets(); if (widgets == null) { return false; } if (index < 0 || index >= widgets.length) { return false; } int[] newWidgets = new int[widgets.length + 1]; for (int i = 0, j = 0; i < newWidgets.length; i++) { if (index == i) { Loading @@ -1125,17 +1139,19 @@ public class LockPatternUtils { } } writeAppWidgets(newWidgets); return true; } public boolean removeAppWidget(int widgetId, int index) { public boolean removeAppWidget(int widgetId) { int[] widgets = getAppWidgets(); int[] newWidgets = new int[widgets.length - 1]; for (int i = 0, j = 0; i < widgets.length; i++) { if (index == i) { if (widgets[i] != widgetId) { return false; } if (widgets[i] == widgetId) { // continue... } else if (j >= newWidgets.length) { // we couldn't find the widget return false; } else { newWidgets[j] = widgets[i]; j++; Loading
policy/src/com/android/internal/policy/impl/keyguard/EmergencyButton.java +0 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import android.os.SystemClock; import android.telephony.TelephonyManager; import android.util.AttributeSet; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import com.android.internal.telephony.IccCardConstants.State; Loading
policy/src/com/android/internal/policy/impl/keyguard/KeyguardAbsKeyInputView.java +4 −23 Original line number Diff line number Diff line Loading @@ -17,41 +17,22 @@ package com.android.internal.policy.impl.keyguard; import android.content.Context; import android.util.AttributeSet; import android.view.HapticFeedbackConstants; import android.view.View; import android.view.ViewParent; import com.android.internal.widget.LockPatternUtils; import java.util.List; import android.app.admin.DevicePolicyManager; import android.content.res.Configuration; import android.graphics.Rect; import com.android.internal.widget.PasswordEntryKeyboardView; import android.os.CountDownTimer; import android.os.SystemClock; import android.text.Editable; import android.text.InputType; import android.text.SpannableStringBuilder; import android.text.TextWatcher; import android.text.method.DigitsKeyListener; import android.text.method.TextKeyListener; import android.text.style.TextAppearanceSpan; import android.util.AttributeSet; import android.view.HapticFeedbackConstants; import android.view.KeyEvent; import android.view.View; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodSubtype; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; import com.android.internal.R; import com.android.internal.widget.LockPatternUtils; /** * Base class for PIN and password unlock screens. Loading
policy/src/com/android/internal/policy/impl/keyguard/KeyguardCircleFramedDrawable.java +0 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.util.Log; Loading
policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java +29 −10 Original line number Diff line number Diff line Loading @@ -161,7 +161,7 @@ public class KeyguardHostView extends KeyguardViewBase { mAppWidgetContainer.setMinScale(0.5f); addDefaultWidgets(); maybePopulateWidgets(); addWidgetsFromSettings(); mViewStateManager = new KeyguardViewStateManager(); SlidingChallengeLayout slider = Loading @@ -170,6 +170,7 @@ public class KeyguardHostView extends KeyguardViewBase { slider.setOnChallengeScrolledListener(mViewStateManager); } mAppWidgetContainer.setViewStateManager(mViewStateManager); mAppWidgetContainer.setLockPatternUtils(mLockPatternUtils); mViewStateManager.setPagedView(mAppWidgetContainer); mViewStateManager.setChallengeLayout(slider != null ? slider : Loading Loading @@ -635,9 +636,11 @@ public class KeyguardHostView extends KeyguardViewBase { if (navigationText != null) { view.setSecurityMessageDisplay(new KeyguardNavigationManager(navigationText)); } else { if (mKeyguardStatusViewManager != null) { view.setSecurityMessageDisplay(mKeyguardStatusViewManager); } } } if (securityMode == SecurityMode.SimPin || securityMode == SecurityMode.SimPuk || securityMode == SecurityMode.Account) { Loading Loading @@ -826,7 +829,8 @@ public class KeyguardHostView extends KeyguardViewBase { AppWidgetHostView view = getAppWidgetHost().createView(mContext, appId, appWidgetInfo); addWidget(view, pageIndex); } else { Log.w(TAG, "AppWidgetInfo was null; not adding widget id " + appId); Log.w(TAG, "AppWidgetInfo for app widget id " + appId + " was null, deleting"); mLockPatternUtils.removeAppWidget(appId); } } Loading Loading @@ -876,8 +880,6 @@ public class KeyguardHostView extends KeyguardViewBase { View addWidget = inflater.inflate(R.layout.keyguard_add_widget, null, true); mAppWidgetContainer.addWidget(addWidget); View statusWidget = inflater.inflate(R.layout.keyguard_status_view, null, true); mAppWidgetContainer.addWidget(statusWidget); if (mContext.getResources().getBoolean(R.bool.kg_enable_camera_default_widget)) { View cameraWidget = CameraWidgetFrame.create(mContext, mCameraWidgetCallbacks, mActivityLauncher); Loading Loading @@ -950,12 +952,15 @@ public class KeyguardHostView extends KeyguardViewBase { }); } mKeyguardStatusViewManager = ((KeyguardStatusView) findViewById(R.id.keyguard_status_view_face_palm)).getManager(); KeyguardStatusView ksv = (KeyguardStatusView) findViewById(R.id.keyguard_status_view_face_palm); if (ksv != null) { mKeyguardStatusViewManager = ksv.getManager(); } } private void maybePopulateWidgets() { private void addWidgetsFromSettings() { DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE); if (dpm != null) { Loading @@ -980,7 +985,11 @@ public class KeyguardHostView extends KeyguardViewBase { Log.d(TAG, "Problem reading widgets"); } else { for (int i = widgets.length -1; i >= 0; i--) { if (widgets[i] != -1) { if (widgets[i] == LockPatternUtils.ID_DEFAULT_STATUS_WIDGET) { LayoutInflater inflater = LayoutInflater.from(mContext); View statusWidget = inflater.inflate(R.layout.keyguard_status_view, null, true); mAppWidgetContainer.addWidget(statusWidget, addPageIndex + 1); } else { // We add the widgets from left to right, starting after the first page after // the add page. We count down, since the order will be persisted from right // to left, starting after camera. Loading Loading @@ -1064,8 +1073,18 @@ public class KeyguardHostView extends KeyguardViewBase { pageToShow = multiUserPosition; } else { final View statusView = findViewById(R.id.keyguard_status_view); int statusViewIndex = mAppWidgetContainer.indexOfChild(statusView); if (statusViewIndex == -1) { // TEMP code for default page if (mAppWidgetContainer.getChildCount() > 2) { pageToShow = mAppWidgetContainer.getChildCount() - 2; } else { pageToShow = 0; } } else { pageToShow = mAppWidgetContainer.indexOfChild(statusView); } } if (mTransportState == TRANSPORT_VISIBLE) { mTransportState = TRANSPORT_INVISIBLE; } Loading