Merge "IMS: change getMasterValue to getProvisionedValue." into lmp-mr1-dev
diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java
index 67f632f..9496b53 100644
--- a/core/java/android/service/wallpaper/WallpaperService.java
+++ b/core/java/android/service/wallpaper/WallpaperService.java
@@ -691,8 +691,8 @@
if (DEBUG) Log.v(TAG, "New surface: " + mSurfaceHolder.mSurface
+ ", frame=" + mWinFrame);
- int w = mWinFrame.width() + mOverscanInsets.left + mOverscanInsets.right;
- int h = mWinFrame.height() + mOverscanInsets.top + mOverscanInsets.bottom;
+ int w = mWinFrame.width();
+ int h = mWinFrame.height();
if (!fixedSize) {
final Rect padding = mIWallpaperEngine.mDisplayPadding;
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardPinBasedInputView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardPinBasedInputView.java
index bca0305..7c56e84 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardPinBasedInputView.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardPinBasedInputView.java
@@ -17,7 +17,11 @@
package com.android.keyguard;
import android.content.Context;
+import android.database.ContentObserver;
import android.graphics.Rect;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.provider.Settings;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.View;
@@ -28,19 +32,39 @@
public abstract class KeyguardPinBasedInputView extends KeyguardAbsKeyInputView
implements View.OnKeyListener {
+ private final android.database.ContentObserver mSpeakPasswordObserver
+ = new ContentObserver(new Handler()) {
+ @Override
+ public void onChange(boolean selfChange) {
+ super.onChange(selfChange);
+ // Ensure that it's not called too early
+ if (mButton0 != null) {
+ mButton0.updateContentDescription();
+ mButton1.updateContentDescription();
+ mButton2.updateContentDescription();
+ mButton3.updateContentDescription();
+ mButton4.updateContentDescription();
+ mButton5.updateContentDescription();
+ mButton6.updateContentDescription();
+ mButton7.updateContentDescription();
+ mButton8.updateContentDescription();
+ mButton9.updateContentDescription();
+ }
+ }
+ };
protected PasswordTextView mPasswordEntry;
private View mOkButton;
private View mDeleteButton;
- private View mButton0;
- private View mButton1;
- private View mButton2;
- private View mButton3;
- private View mButton4;
- private View mButton5;
- private View mButton6;
- private View mButton7;
- private View mButton8;
- private View mButton9;
+ private NumPadKey mButton0;
+ private NumPadKey mButton1;
+ private NumPadKey mButton2;
+ private NumPadKey mButton3;
+ private NumPadKey mButton4;
+ private NumPadKey mButton5;
+ private NumPadKey mButton6;
+ private NumPadKey mButton7;
+ private NumPadKey mButton8;
+ private NumPadKey mButton9;
public KeyguardPinBasedInputView(Context context) {
this(context, null);
@@ -48,6 +72,9 @@
public KeyguardPinBasedInputView(Context context, AttributeSet attrs) {
super(context, attrs);
+ context.getContentResolver().registerContentObserver(
+ Settings.Secure.getUriFor(Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD), true,
+ mSpeakPasswordObserver, UserHandle.USER_ALL);
}
@Override
@@ -188,16 +215,16 @@
}
});
- mButton0 = findViewById(R.id.key0);
- mButton1 = findViewById(R.id.key1);
- mButton2 = findViewById(R.id.key2);
- mButton3 = findViewById(R.id.key3);
- mButton4 = findViewById(R.id.key4);
- mButton5 = findViewById(R.id.key5);
- mButton6 = findViewById(R.id.key6);
- mButton7 = findViewById(R.id.key7);
- mButton8 = findViewById(R.id.key8);
- mButton9 = findViewById(R.id.key9);
+ mButton0 = (NumPadKey) findViewById(R.id.key0);
+ mButton1 = (NumPadKey) findViewById(R.id.key1);
+ mButton2 = (NumPadKey) findViewById(R.id.key2);
+ mButton3 = (NumPadKey) findViewById(R.id.key3);
+ mButton4 = (NumPadKey) findViewById(R.id.key4);
+ mButton5 = (NumPadKey) findViewById(R.id.key5);
+ mButton6 = (NumPadKey) findViewById(R.id.key6);
+ mButton7 = (NumPadKey) findViewById(R.id.key7);
+ mButton8 = (NumPadKey) findViewById(R.id.key8);
+ mButton9 = (NumPadKey) findViewById(R.id.key9);
mPasswordEntry.requestFocus();
super.onFinishInflate();
diff --git a/packages/Keyguard/src/com/android/keyguard/NumPadKey.java b/packages/Keyguard/src/com/android/keyguard/NumPadKey.java
index d539856..70a4108 100644
--- a/packages/Keyguard/src/com/android/keyguard/NumPadKey.java
+++ b/packages/Keyguard/src/com/android/keyguard/NumPadKey.java
@@ -22,6 +22,8 @@
import android.os.Debug;
import android.os.PowerManager;
import android.os.SystemClock;
+import android.os.UserHandle;
+import android.provider.Settings;
import android.util.AttributeSet;
import android.view.HapticFeedbackConstants;
import android.view.KeyEvent;
@@ -118,7 +120,17 @@
}
setBackground(mContext.getDrawable(R.drawable.ripple_drawable));
- setContentDescription(mDigitText.getText().toString() + mKlondikeText.getText().toString());
+ updateContentDescription();
+ }
+
+ public void updateContentDescription() {
+ if (shouldSpeakPasswordsForAccessibility()) {
+ setContentDescription(
+ mDigitText.getText().toString() + mKlondikeText.getText().toString());
+ } else {
+ setContentDescription(getContext().getString(
+ com.android.internal.R.string.keyboard_password_character_no_headset));
+ }
}
@Override
@@ -152,6 +164,15 @@
mKlondikeText.layout(left, top, left + mKlondikeText.getMeasuredWidth(), bottom);
}
+ /**
+ * @return true if the user has explicitly allowed accessibility services
+ * to speak passwords.
+ */
+ private boolean shouldSpeakPasswordsForAccessibility() {
+ return (Settings.Secure.getIntForUser(mContext.getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD, 0, UserHandle.USER_CURRENT) == 1);
+ }
+
@Override
public boolean hasOverlappingRendering() {
return false;
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index ba89f23..021a6e4 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -617,8 +617,8 @@
mOverscanInsets.set(Math.max(mOverscanFrame.left - mFrame.left, 0),
Math.max(mOverscanFrame.top - mFrame.top, 0),
- Math.min(mFrame.right - mOverscanFrame.right, 0),
- Math.min(mFrame.bottom - mOverscanFrame.bottom, 0));
+ Math.max(mFrame.right - mOverscanFrame.right, 0),
+ Math.max(mFrame.bottom - mOverscanFrame.bottom, 0));
mContentInsets.set(mContentFrame.left - mFrame.left,
mContentFrame.top - mFrame.top,