Merge "Add system insets to windows." into jb-dev
diff --git a/api/current.txt b/api/current.txt
index 4a9b3bb..cb523cf 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -11283,10 +11283,11 @@
public final class MediaRecorder.AudioEncoder {
field public static final int AAC = 3; // 0x3
- field public static final int AAC_ELD = 6; // 0x6
+ field public static final int AAC_ELD = 5; // 0x5
field public static final int AMR_NB = 1; // 0x1
field public static final int AMR_WB = 2; // 0x2
field public static final int DEFAULT = 0; // 0x0
+ field public static final int HE_AAC = 4; // 0x4
}
public final class MediaRecorder.AudioSource {
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 588bb06..092bcbd 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -4668,6 +4668,24 @@
info.addAction(AccessibilityNodeInfo.ACTION_FOCUS);
}
}
+
+ info.addAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS);
+ info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS);
+
+ if (isClickable()) {
+ info.addAction(AccessibilityNodeInfo.ACTION_CLICK);
+ }
+
+ if (isLongClickable()) {
+ info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK);
+ }
+
+ if (getContentDescription() != null) {
+ info.addAction(AccessibilityNodeInfo.ACTION_NEXT_AT_GRANULARITY);
+ info.addAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_GRANULARITY);
+ info.setGranularities(AccessibilityNodeInfo.GRANULARITY_CHARACTER
+ | AccessibilityNodeInfo.GRANULARITY_WORD);
+ }
}
/**
@@ -5942,7 +5960,8 @@
* @hide
*/
public boolean requestAccessibilityFocus() {
- if (!AccessibilityManager.getInstance(mContext).isEnabled()) {
+ AccessibilityManager manager = AccessibilityManager.getInstance(mContext);
+ if (!manager.isEnabled() || !manager.isTouchExplorationEnabled()) {
return false;
}
if ((mViewFlags & VISIBILITY_MASK) != VISIBLE) {
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 467e285..bb7b3f8 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -2438,7 +2438,6 @@
if ((child.mViewFlags & VISIBILITY_MASK) == VISIBLE) {
handled = child.dispatchPopulateAccessibilityEvent(event);
if (handled) {
- children.recycle();
return handled;
}
}
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 46bff84..9565547 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -636,6 +636,8 @@
if (view.getImportantForAccessibility() == View.IMPORTANT_FOR_ACCESSIBILITY_AUTO) {
view.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
}
+
+ setAccessibilityFocusedHost(null);
}
}
}
@@ -2317,7 +2319,8 @@
* @param canvas The canvas on which to draw.
*/
private void drawAccessibilityFocusedDrawableIfNeeded(Canvas canvas) {
- if (!AccessibilityManager.getInstance(mView.mContext).isEnabled()) {
+ AccessibilityManager manager = AccessibilityManager.getInstance(mView.mContext);
+ if (!manager.isEnabled() || !manager.isTouchExplorationEnabled()) {
return;
}
if (mAccessibilityFocusedHost == null || mAccessibilityFocusedHost.mAttachInfo == null) {
@@ -2340,6 +2343,9 @@
if (mAccessibilityFocusedVirtualView == null) {
mAccessibilityFocusedVirtualView = provider.findAccessibilitiyFocus(View.NO_ID);
}
+ if (mAccessibilityFocusedVirtualView == null) {
+ return;
+ }
mAccessibilityFocusedVirtualView.getBoundsInScreen(bounds);
bounds.offset(-mAttachInfo.mWindowLeft, -mAttachInfo.mWindowTop);
}
@@ -2866,6 +2872,8 @@
mHasHadWindowFocus = true;
}
+ setAccessibilityFocusedHost(null);
+
if (mView != null && mAccessibilityManager.isEnabled()) {
if (hasWindowFocus) {
mView.sendAccessibilityEvent(
@@ -2884,9 +2892,6 @@
if (mAccessibilityFocusedHost == null) {
mView.requestAccessibilityFocus();
}
- } else {
- // Clear accessibility focus when the window loses input focus.
- setAccessibilityFocusedHost(null);
}
}
}
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java
index b6fe6d8..a9b32b8 100644
--- a/core/java/android/webkit/WebViewClassic.java
+++ b/core/java/android/webkit/WebViewClassic.java
@@ -7890,7 +7890,9 @@
ViewRootImpl viewRoot = mWebView.getViewRootImpl();
if (mWebView.isHardwareAccelerated() && viewRoot != null) {
functor = nativeGetDrawGLFunction(mNativeClass);
- viewRoot.attachFunctor(functor);
+ if (functor != 0) {
+ viewRoot.attachFunctor(functor);
+ }
}
if (functor == 0
diff --git a/core/java/android/widget/CheckedTextView.java b/core/java/android/widget/CheckedTextView.java
index 233d892..02bb4f3 100644
--- a/core/java/android/widget/CheckedTextView.java
+++ b/core/java/android/widget/CheckedTextView.java
@@ -230,6 +230,7 @@
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info);
info.setClassName(CheckedTextView.class.getName());
+ info.setCheckable(true);
info.setChecked(mChecked);
}
}
diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java
index e0b33cd..9af201d 100644
--- a/media/java/android/media/MediaRecorder.java
+++ b/media/java/android/media/MediaRecorder.java
@@ -251,14 +251,12 @@
public static final int AMR_NB = 1;
/** AMR (Wideband) audio codec */
public static final int AMR_WB = 2;
- /** AAC audio codec */
+ /** AAC Low Complexity (AAC-LC) audio codec */
public static final int AAC = 3;
- /** @hide enhanced AAC audio codec */
- public static final int AAC_PLUS = 4;
- /** @hide enhanced AAC plus audio codec */
- public static final int EAAC_PLUS = 5;
- /** AAC-ELD audio codec */
- public static final int AAC_ELD = 6;
+ /** High Efficiency AAC (HE-AAC) audio codec */
+ public static final int HE_AAC = 4;
+ /** Enhanced Low Delay AAC (AAC-ELD) audio codec */
+ public static final int AAC_ELD = 5;
}
/**
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaProfileReader.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaProfileReader.java
index b1d049e..abe8b8c 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaProfileReader.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaProfileReader.java
@@ -88,8 +88,7 @@
if (audioEncoder != MediaRecorder.AudioEncoder.AMR_NB &&
audioEncoder != MediaRecorder.AudioEncoder.AMR_WB &&
audioEncoder != MediaRecorder.AudioEncoder.AAC &&
- audioEncoder != MediaRecorder.AudioEncoder.AAC_PLUS &&
- audioEncoder != MediaRecorder.AudioEncoder.EAAC_PLUS) {
+ audioEncoder != MediaRecorder.AudioEncoder.HE_AAC) {
throw new IllegalArgumentException("Unsupported audio encodeer " + audioEncoder);
}
return audioEncoderMap.get(audioEncoder);
@@ -128,7 +127,6 @@
audioEncoderMap.put(MediaRecorder.AudioEncoder.AMR_NB, "amrnb");
audioEncoderMap.put(MediaRecorder.AudioEncoder.AMR_WB, "amrwb");
audioEncoderMap.put(MediaRecorder.AudioEncoder.AAC, "aac");
- audioEncoderMap.put(MediaRecorder.AudioEncoder.AAC_PLUS, "aacplus");
- audioEncoderMap.put(MediaRecorder.AudioEncoder.EAAC_PLUS, "eaacplus");
+ audioEncoderMap.put(MediaRecorder.AudioEncoder.HE_AAC, "heaac");
}
}
diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java
index 01ddf1f..885389f 100644
--- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -1765,8 +1765,7 @@
Bundle arguments) {
return canRetrieveWindowContent(service)
&& isRetrievalAllowingWindow(windowId)
- && isActionPermitted(action)
- && isActionArgumentsValid(action, arguments);
+ && isActionPermitted(action);
}
public boolean canRetrieveWindowContent(Service service) {
@@ -1790,29 +1789,6 @@
return (VALID_ACTIONS & action) != 0;
}
- private boolean isActionArgumentsValid(int action, Bundle arguments) {
- switch (action) {
- case AccessibilityNodeInfo.ACTION_NEXT_AT_GRANULARITY:
- case AccessibilityNodeInfo.ACTION_PREVIOUS_AT_GRANULARITY: {
- if (arguments.size() == 1) {
- final int granularity = arguments.getInt(
- AccessibilityNodeInfo.ACTION_ARGUMENT_GRANULARITY_INT);
- return (granularity & VALID_GRANULARITIES) != 0
- && Integer.bitCount(granularity) == 1;
- }
- } break;
- case AccessibilityNodeInfo.ACTION_NEXT_HTML_ELEMENT:
- case AccessibilityNodeInfo.ACTION_PREVIOUS_HTML_ELEMENT: {
- if (arguments.size() == 1) {
- String element = arguments.getString(
- AccessibilityNodeInfo.ACTION_ARGUMENT_HTML_ELEMENT_STRING);
- return !TextUtils.isEmpty(element);
- }
- } break;
- }
- return false;
- }
-
private void enforceCallingPermission(String permission, String function) {
if (OWN_PROCESS_ID == Binder.getCallingPid()) {
return;
diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
index 55f2ca3..97a8755 100644
--- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
@@ -1139,6 +1139,14 @@
mUserDataEnabled = enabled;
Settings.Secure.putInt(mPhone.getContext().getContentResolver(),
Settings.Secure.MOBILE_DATA, enabled ? 1 : 0);
+ if (getDataOnRoamingEnabled() == false &&
+ mPhone.getServiceState().getRoaming() == true) {
+ if (enabled) {
+ notifyOffApnsOfAvailability(Phone.REASON_ROAMING_ON);
+ } else {
+ notifyOffApnsOfAvailability(Phone.REASON_DATA_DISABLED);
+ }
+ }
if (prevEnabled != getAnyDataEnabled()) {
if (!prevEnabled) {
resetAllRetryCounts();
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
index 7e5e707..a691eae 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
@@ -629,6 +629,8 @@
*/
@Override
protected void onRoamingOff() {
+ if (mUserDataEnabled == false) return;
+
if (getDataOnRoamingEnabled() == false) {
notifyOffApnsOfAvailability(Phone.REASON_ROAMING_OFF);
trySetupData(Phone.REASON_ROAMING_OFF);
@@ -642,6 +644,8 @@
*/
@Override
protected void onRoamingOn() {
+ if (mUserDataEnabled == false) return;
+
if (getDataOnRoamingEnabled()) {
trySetupData(Phone.REASON_ROAMING_ON);
notifyDataConnection(Phone.REASON_ROAMING_ON);
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
index 56dbfb8..bfdb706 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
@@ -1863,6 +1863,8 @@
protected void onRoamingOff() {
if (DBG) log("onRoamingOff");
+ if (mUserDataEnabled == false) return;
+
if (getDataOnRoamingEnabled() == false) {
notifyOffApnsOfAvailability(Phone.REASON_ROAMING_OFF);
setupDataOnReadyApns(Phone.REASON_ROAMING_OFF);
@@ -1873,6 +1875,8 @@
@Override
protected void onRoamingOn() {
+ if (mUserDataEnabled == false) return;
+
if (getDataOnRoamingEnabled()) {
if (DBG) log("onRoamingOn: setup data on roaming");
setupDataOnReadyApns(Phone.REASON_ROAMING_ON);