Merge "Fix 6028595: Fix reboot loop in AccountUnlock due to null callback"
This commit is contained in:
@@ -72,8 +72,9 @@ public abstract class KeyguardViewBase extends FrameLayout {
|
||||
}
|
||||
};
|
||||
|
||||
public KeyguardViewBase(Context context) {
|
||||
public KeyguardViewBase(Context context, KeyguardViewCallback callback) {
|
||||
super(context);
|
||||
mCallback = callback;
|
||||
resetBackground();
|
||||
}
|
||||
|
||||
@@ -81,11 +82,6 @@ public abstract class KeyguardViewBase extends FrameLayout {
|
||||
setBackgroundDrawable(mBackgroundDrawable);
|
||||
}
|
||||
|
||||
// used to inject callback
|
||||
void setCallback(KeyguardViewCallback callback) {
|
||||
mCallback = callback;
|
||||
}
|
||||
|
||||
public KeyguardViewCallback getCallback() {
|
||||
return mCallback;
|
||||
}
|
||||
|
||||
@@ -158,9 +158,9 @@ public class KeyguardViewManager implements KeyguardWindowController {
|
||||
|
||||
if (mKeyguardView == null) {
|
||||
if (DEBUG) Log.d(TAG, "keyguard view is null, creating it...");
|
||||
mKeyguardView = mKeyguardViewProperties.createKeyguardView(mContext, mUpdateMonitor, this);
|
||||
mKeyguardView = mKeyguardViewProperties.createKeyguardView(mContext, mCallback,
|
||||
mUpdateMonitor, this);
|
||||
mKeyguardView.setId(R.id.lock_screen);
|
||||
mKeyguardView.setCallback(mCallback);
|
||||
|
||||
final ViewGroup.LayoutParams lp = new FrameLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
|
||||
@@ -24,16 +24,17 @@ import android.content.Context;
|
||||
* of whether the keyguard instance is around or not.
|
||||
*/
|
||||
public interface KeyguardViewProperties {
|
||||
|
||||
|
||||
/**
|
||||
* Create a keyguard view.
|
||||
* @param context the context to use when creating the view.
|
||||
* @param callback keyguard callback object for pokewakelock(), etc.
|
||||
* @param updateMonitor configuration may be based on this.
|
||||
* @param controller for talking back with the containing window.
|
||||
* @return the view.
|
||||
*/
|
||||
KeyguardViewBase createKeyguardView(Context context,
|
||||
KeyguardUpdateMonitor updateMonitor,
|
||||
KeyguardViewCallback mCallback, KeyguardUpdateMonitor updateMonitor,
|
||||
KeyguardWindowController controller);
|
||||
|
||||
/**
|
||||
|
||||
@@ -291,17 +291,16 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
|
||||
|
||||
/**
|
||||
* @param context Used to inflate, and create views.
|
||||
* @param callback Keyguard callback object for pokewakelock(), etc.
|
||||
* @param updateMonitor Knows the state of the world, and passed along to each
|
||||
* screen so they can use the knowledge, and also register for callbacks
|
||||
* on dynamic information.
|
||||
* @param lockPatternUtils Used to look up state of lock pattern.
|
||||
*/
|
||||
public LockPatternKeyguardView(
|
||||
Context context,
|
||||
KeyguardUpdateMonitor updateMonitor,
|
||||
LockPatternUtils lockPatternUtils,
|
||||
KeyguardWindowController controller) {
|
||||
super(context);
|
||||
Context context, KeyguardViewCallback callback, KeyguardUpdateMonitor updateMonitor,
|
||||
LockPatternUtils lockPatternUtils, KeyguardWindowController controller) {
|
||||
super(context, callback);
|
||||
|
||||
mHandler = new Handler(this);
|
||||
mConfiguration = context.getResources().getConfiguration();
|
||||
|
||||
@@ -43,9 +43,10 @@ public class LockPatternKeyguardViewProperties implements KeyguardViewProperties
|
||||
}
|
||||
|
||||
public KeyguardViewBase createKeyguardView(Context context,
|
||||
KeyguardViewCallback callback,
|
||||
KeyguardUpdateMonitor updateMonitor,
|
||||
KeyguardWindowController controller) {
|
||||
return new LockPatternKeyguardView(context, updateMonitor,
|
||||
return new LockPatternKeyguardView(context, callback, updateMonitor,
|
||||
mLockPatternUtils, controller);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.android.internal.policy.impl;
|
||||
|
||||
import android.content.Context;
|
||||
import com.android.internal.policy.impl.KeyguardViewCallback;
|
||||
import com.android.internal.telephony.IccCard;
|
||||
import android.content.res.Configuration;
|
||||
import android.test.AndroidTestCase;
|
||||
@@ -133,9 +134,10 @@ public class LockPatternKeyguardViewTest extends AndroidTestCase {
|
||||
|
||||
|
||||
|
||||
private TestableLockPatternKeyguardView(Context context, KeyguardUpdateMonitor updateMonitor,
|
||||
private TestableLockPatternKeyguardView(Context context, KeyguardViewCallback callback,
|
||||
KeyguardUpdateMonitor updateMonitor,
|
||||
LockPatternUtils lockPatternUtils, KeyguardWindowController controller) {
|
||||
super(context, updateMonitor, lockPatternUtils, controller);
|
||||
super(context, callback, updateMonitor, lockPatternUtils, controller);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -198,14 +200,13 @@ public class LockPatternKeyguardViewTest extends AndroidTestCase {
|
||||
super.setUp();
|
||||
mUpdateMonitor = new MockUpdateMonitor(getContext());
|
||||
mLockPatternUtils = new MockLockPatternUtils(getContext());
|
||||
mKeyguardViewCallback = new MockKeyguardCallback();
|
||||
|
||||
mLPKV = new TestableLockPatternKeyguardView(getContext(), mUpdateMonitor,
|
||||
mLockPatternUtils, new KeyguardWindowController() {
|
||||
mLPKV = new TestableLockPatternKeyguardView(getContext(), mKeyguardViewCallback,
|
||||
mUpdateMonitor, mLockPatternUtils, new KeyguardWindowController() {
|
||||
public void setNeedsInput(boolean needsInput) {
|
||||
}
|
||||
});
|
||||
mKeyguardViewCallback = new MockKeyguardCallback();
|
||||
mLPKV.setCallback(mKeyguardViewCallback);
|
||||
}
|
||||
|
||||
public void testStateAfterCreatedWhileScreenOff() {
|
||||
|
||||
Reference in New Issue
Block a user