Merge "Fix 6028595: Fix reboot loop in AccountUnlock due to null callback"

This commit is contained in:
Jim Miller
2012-03-01 19:02:19 -08:00
committed by Android (Google) Code Review
6 changed files with 20 additions and 22 deletions

View File

@@ -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;
}

View File

@@ -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,

View File

@@ -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);
/**

View File

@@ -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();

View File

@@ -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);
}

View File

@@ -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() {