summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2015-05-07 14:21:38 -0700
committerDianne Hackborn <hackbod@google.com>2015-05-07 16:30:52 -0700
commit49b043f37d7231b1544cb72e1bfb616e5a00688d (patch)
treeb08f8d748f099c46346e0e5e997d217eea8c88ca
parentcfd6e9dfd063cba795497f251aa6f7fe2554f10b (diff)
downloadframeworks_base-49b043f37d7231b1544cb72e1bfb616e5a00688d.zip
frameworks_base-49b043f37d7231b1544cb72e1bfb616e5a00688d.tar.gz
frameworks_base-49b043f37d7231b1544cb72e1bfb616e5a00688d.tar.bz2
Fix issue #20655182: API Review: ViewAssistStructure
Fix the various view assist related APIs. Also remove the blockAssist view attribute, and instead use the window's FLAG_SECURE to drive blocking of the entire hierarchy (which is semantically correct, and will protect existing apps that have already indicated they need it). Change-Id: I6beebc86b202809cba0a356cae9607d8d0fb5e78
-rw-r--r--api/current.txt79
-rw-r--r--api/system-current.txt81
-rw-r--r--core/java/android/app/AssistStructure.java16
-rw-r--r--core/java/android/view/View.java52
-rw-r--r--core/java/android/view/ViewAssistStructure.java67
-rw-r--r--core/java/android/view/ViewGroup.java10
-rw-r--r--core/java/android/view/ViewRootImpl.java4
-rw-r--r--core/java/android/view/ViewStructure.java86
-rw-r--r--core/java/android/webkit/WebView.java4
-rw-r--r--core/java/android/webkit/WebViewProvider.java4
-rw-r--r--core/java/android/widget/Switch.java8
-rw-r--r--core/java/android/widget/TextView.java6
-rw-r--r--core/res/res/values/attrs.xml5
-rw-r--r--core/res/res/values/public.xml4
-rw-r--r--tests/VoiceInteraction/res/layout/main.xml6
-rw-r--r--tests/VoiceInteraction/src/com/android/test/voiceinteraction/AsyncStructure.java6
16 files changed, 236 insertions, 202 deletions
diff --git a/api/current.txt b/api/current.txt
index 0ef4766..209dd50 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -218,6 +218,7 @@ package android {
public static final class R.attr {
ctor public R.attr();
+ field public static final int __reserved0 = 16844020; // 0x10104f4
field public static final int absListViewStyle = 16842858; // 0x101006a
field public static final int accessibilityEventTypes = 16843648; // 0x1010380
field public static final int accessibilityFeedbackType = 16843650; // 0x1010382
@@ -301,7 +302,6 @@ package android {
field public static final int anyDensity = 16843372; // 0x101026c
field public static final int apduServiceBanner = 16843757; // 0x10103ed
field public static final int apiKey = 16843281; // 0x1010211
- field public static final int assistBlocked = 16844020; // 0x10104f4
field public static final int author = 16843444; // 0x10102b4
field public static final int authorities = 16842776; // 0x1010018
field public static final int autoAdvanceViewId = 16843535; // 0x101030f
@@ -36075,7 +36075,7 @@ package android.view {
method public boolean dispatchNestedPreScroll(int, int, int[], int[]);
method public boolean dispatchNestedScroll(int, int, int, int, int[]);
method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
- method public void dispatchProvideAssistStructure(android.view.ViewAssistStructure);
+ method public void dispatchProvideStructure(android.view.ViewStructure);
method protected void dispatchRestoreInstanceState(android.util.SparseArray<android.os.Parcelable>);
method protected void dispatchSaveInstanceState(android.util.SparseArray<android.os.Parcelable>);
method protected void dispatchSetActivated(boolean);
@@ -36255,7 +36255,6 @@ package android.view {
method public void invalidateOutline();
method public boolean isAccessibilityFocused();
method public boolean isActivated();
- method public boolean isAssistBlocked();
method public boolean isAttachedToWindow();
method public boolean isClickable();
method public boolean isDirty();
@@ -36337,8 +36336,8 @@ package android.view {
method protected void onMeasure(int, int);
method protected void onOverScrolled(int, int, boolean, boolean);
method public void onPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
- method public void onProvideAssistStructure(android.view.ViewAssistStructure);
- method public void onProvideVirtualAssistStructure(android.view.ViewAssistStructure);
+ method public void onProvideStructure(android.view.ViewStructure);
+ method public void onProvideVirtualStructure(android.view.ViewStructure);
method protected void onRestoreInstanceState(android.os.Parcelable);
method public void onRtlPropertiesChanged(int);
method protected android.os.Parcelable onSaveInstanceState();
@@ -36401,7 +36400,6 @@ package android.view {
method public void setActivated(boolean);
method public void setAlpha(float);
method public void setAnimation(android.view.animation.Animation);
- method public void setAssistBlocked(boolean);
method public void setBackground(android.graphics.drawable.Drawable);
method public void setBackgroundColor(int);
method public deprecated void setBackgroundDrawable(android.graphics.drawable.Drawable);
@@ -36764,40 +36762,8 @@ package android.view {
method public static android.animation.Animator createCircularReveal(android.view.View, int, int, float, float);
}
- public abstract class ViewAssistStructure {
+ public abstract deprecated class ViewAssistStructure extends android.view.ViewStructure {
ctor public ViewAssistStructure();
- method public abstract void asyncCommit();
- method public abstract android.view.ViewAssistStructure asyncNewChild(int);
- method public abstract void clearExtras();
- method public abstract android.os.Bundle editExtras();
- method public abstract int getChildCount();
- method public abstract java.lang.CharSequence getHint();
- method public abstract java.lang.CharSequence getText();
- method public abstract int getTextSelectionEnd();
- method public abstract int getTextSelectionStart();
- method public abstract android.view.ViewAssistStructure newChild(int);
- method public abstract void setAccessibilityFocused(boolean);
- method public abstract void setActivated(boolean);
- method public abstract void setAssistBlocked(boolean);
- method public abstract void setCheckable(boolean);
- method public abstract void setChecked(boolean);
- method public abstract void setChildCount(int);
- method public abstract void setClassName(java.lang.String);
- method public abstract void setClickable(boolean);
- method public abstract void setContentDescription(java.lang.CharSequence);
- method public abstract void setDimens(int, int, int, int, int, int);
- method public abstract void setEnabled(boolean);
- method public abstract void setFocusable(boolean);
- method public abstract void setFocused(boolean);
- method public abstract void setHint(java.lang.CharSequence);
- method public abstract void setId(int, java.lang.String, java.lang.String, java.lang.String);
- method public abstract void setLongClickable(boolean);
- method public abstract void setSelected(boolean);
- method public abstract void setStylusButtonPressable(boolean);
- method public abstract void setText(java.lang.CharSequence);
- method public abstract void setText(java.lang.CharSequence, int, int);
- method public abstract void setTextPaint(android.text.TextPaint);
- method public abstract void setVisibility(int);
}
public class ViewConfiguration {
@@ -37174,6 +37140,41 @@ package android.view {
method public android.view.ViewPropertyAnimator zBy(float);
}
+ public abstract class ViewStructure {
+ ctor public ViewStructure();
+ method public abstract void asyncCommit();
+ method public abstract android.view.ViewAssistStructure asyncNewChild(int);
+ method public abstract int getChildCount();
+ method public abstract android.os.Bundle getExtras();
+ method public abstract java.lang.CharSequence getHint();
+ method public abstract java.lang.CharSequence getText();
+ method public abstract int getTextSelectionEnd();
+ method public abstract int getTextSelectionStart();
+ method public abstract boolean hasExtras();
+ method public abstract android.view.ViewAssistStructure newChild(int);
+ method public abstract void setAccessibilityFocused(boolean);
+ method public abstract void setActivated(boolean);
+ method public abstract void setCheckable(boolean);
+ method public abstract void setChecked(boolean);
+ method public abstract void setChildCount(int);
+ method public abstract void setClassName(java.lang.String);
+ method public abstract void setClickable(boolean);
+ method public abstract void setContentDescription(java.lang.CharSequence);
+ method public abstract void setDimens(int, int, int, int, int, int);
+ method public abstract void setEnabled(boolean);
+ method public abstract void setFocusable(boolean);
+ method public abstract void setFocused(boolean);
+ method public abstract void setHint(java.lang.CharSequence);
+ method public abstract void setId(int, java.lang.String, java.lang.String, java.lang.String);
+ method public abstract void setLongClickable(boolean);
+ method public abstract void setSelected(boolean);
+ method public abstract void setStylusButtonPressable(boolean);
+ method public abstract void setText(java.lang.CharSequence);
+ method public abstract void setText(java.lang.CharSequence, int, int);
+ method public abstract void setTextPaint(android.text.TextPaint);
+ method public abstract void setVisibility(int);
+ }
+
public final class ViewStub extends android.view.View {
ctor public ViewStub(android.content.Context);
ctor public ViewStub(android.content.Context, int);
diff --git a/api/system-current.txt b/api/system-current.txt
index 3aa6ca0..11cbfc7 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -290,6 +290,7 @@ package android {
public static final class R.attr {
ctor public R.attr();
+ field public static final int __reserved0 = 16844020; // 0x10104f4
field public static final int absListViewStyle = 16842858; // 0x101006a
field public static final int accessibilityEventTypes = 16843648; // 0x1010380
field public static final int accessibilityFeedbackType = 16843650; // 0x1010382
@@ -373,7 +374,6 @@ package android {
field public static final int anyDensity = 16843372; // 0x101026c
field public static final int apduServiceBanner = 16843757; // 0x10103ed
field public static final int apiKey = 16843281; // 0x1010211
- field public static final int assistBlocked = 16844020; // 0x10104f4
field public static final int author = 16843444; // 0x10102b4
field public static final int authorities = 16842776; // 0x1010018
field public static final int autoAdvanceViewId = 16843535; // 0x101030f
@@ -38286,7 +38286,7 @@ package android.view {
method public boolean dispatchNestedPreScroll(int, int, int[], int[]);
method public boolean dispatchNestedScroll(int, int, int, int, int[]);
method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
- method public void dispatchProvideAssistStructure(android.view.ViewAssistStructure);
+ method public void dispatchProvideStructure(android.view.ViewStructure);
method protected void dispatchRestoreInstanceState(android.util.SparseArray<android.os.Parcelable>);
method protected void dispatchSaveInstanceState(android.util.SparseArray<android.os.Parcelable>);
method protected void dispatchSetActivated(boolean);
@@ -38466,7 +38466,6 @@ package android.view {
method public void invalidateOutline();
method public boolean isAccessibilityFocused();
method public boolean isActivated();
- method public boolean isAssistBlocked();
method public boolean isAttachedToWindow();
method public boolean isClickable();
method public boolean isDirty();
@@ -38548,8 +38547,8 @@ package android.view {
method protected void onMeasure(int, int);
method protected void onOverScrolled(int, int, boolean, boolean);
method public void onPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
- method public void onProvideAssistStructure(android.view.ViewAssistStructure);
- method public void onProvideVirtualAssistStructure(android.view.ViewAssistStructure);
+ method public void onProvideStructure(android.view.ViewStructure);
+ method public void onProvideVirtualStructure(android.view.ViewStructure);
method protected void onRestoreInstanceState(android.os.Parcelable);
method public void onRtlPropertiesChanged(int);
method protected android.os.Parcelable onSaveInstanceState();
@@ -38612,7 +38611,6 @@ package android.view {
method public void setActivated(boolean);
method public void setAlpha(float);
method public void setAnimation(android.view.animation.Animation);
- method public void setAssistBlocked(boolean);
method public void setBackground(android.graphics.drawable.Drawable);
method public void setBackgroundColor(int);
method public deprecated void setBackgroundDrawable(android.graphics.drawable.Drawable);
@@ -38975,40 +38973,8 @@ package android.view {
method public static android.animation.Animator createCircularReveal(android.view.View, int, int, float, float);
}
- public abstract class ViewAssistStructure {
+ public abstract deprecated class ViewAssistStructure extends android.view.ViewStructure {
ctor public ViewAssistStructure();
- method public abstract void asyncCommit();
- method public abstract android.view.ViewAssistStructure asyncNewChild(int);
- method public abstract void clearExtras();
- method public abstract android.os.Bundle editExtras();
- method public abstract int getChildCount();
- method public abstract java.lang.CharSequence getHint();
- method public abstract java.lang.CharSequence getText();
- method public abstract int getTextSelectionEnd();
- method public abstract int getTextSelectionStart();
- method public abstract android.view.ViewAssistStructure newChild(int);
- method public abstract void setAccessibilityFocused(boolean);
- method public abstract void setActivated(boolean);
- method public abstract void setAssistBlocked(boolean);
- method public abstract void setCheckable(boolean);
- method public abstract void setChecked(boolean);
- method public abstract void setChildCount(int);
- method public abstract void setClassName(java.lang.String);
- method public abstract void setClickable(boolean);
- method public abstract void setContentDescription(java.lang.CharSequence);
- method public abstract void setDimens(int, int, int, int, int, int);
- method public abstract void setEnabled(boolean);
- method public abstract void setFocusable(boolean);
- method public abstract void setFocused(boolean);
- method public abstract void setHint(java.lang.CharSequence);
- method public abstract void setId(int, java.lang.String, java.lang.String, java.lang.String);
- method public abstract void setLongClickable(boolean);
- method public abstract void setSelected(boolean);
- method public abstract void setStylusButtonPressable(boolean);
- method public abstract void setText(java.lang.CharSequence);
- method public abstract void setText(java.lang.CharSequence, int, int);
- method public abstract void setTextPaint(android.text.TextPaint);
- method public abstract void setVisibility(int);
}
public class ViewConfiguration {
@@ -39385,6 +39351,41 @@ package android.view {
method public android.view.ViewPropertyAnimator zBy(float);
}
+ public abstract class ViewStructure {
+ ctor public ViewStructure();
+ method public abstract void asyncCommit();
+ method public abstract android.view.ViewAssistStructure asyncNewChild(int);
+ method public abstract int getChildCount();
+ method public abstract android.os.Bundle getExtras();
+ method public abstract java.lang.CharSequence getHint();
+ method public abstract java.lang.CharSequence getText();
+ method public abstract int getTextSelectionEnd();
+ method public abstract int getTextSelectionStart();
+ method public abstract boolean hasExtras();
+ method public abstract android.view.ViewAssistStructure newChild(int);
+ method public abstract void setAccessibilityFocused(boolean);
+ method public abstract void setActivated(boolean);
+ method public abstract void setCheckable(boolean);
+ method public abstract void setChecked(boolean);
+ method public abstract void setChildCount(int);
+ method public abstract void setClassName(java.lang.String);
+ method public abstract void setClickable(boolean);
+ method public abstract void setContentDescription(java.lang.CharSequence);
+ method public abstract void setDimens(int, int, int, int, int, int);
+ method public abstract void setEnabled(boolean);
+ method public abstract void setFocusable(boolean);
+ method public abstract void setFocused(boolean);
+ method public abstract void setHint(java.lang.CharSequence);
+ method public abstract void setId(int, java.lang.String, java.lang.String, java.lang.String);
+ method public abstract void setLongClickable(boolean);
+ method public abstract void setSelected(boolean);
+ method public abstract void setStylusButtonPressable(boolean);
+ method public abstract void setText(java.lang.CharSequence);
+ method public abstract void setText(java.lang.CharSequence, int, int);
+ method public abstract void setTextPaint(android.text.TextPaint);
+ method public abstract void setVisibility(int);
+ }
+
public final class ViewStub extends android.view.View {
ctor public ViewStub(android.content.Context);
ctor public ViewStub(android.content.Context, int);
@@ -41975,7 +41976,7 @@ package android.webkit {
method public abstract boolean onKeyUp(int, android.view.KeyEvent);
method public abstract void onMeasure(int, int);
method public abstract void onOverScrolled(int, int, boolean, boolean);
- method public abstract void onProvideVirtualAssistStructure(android.view.ViewAssistStructure);
+ method public abstract void onProvideVirtualAssistStructure(android.view.ViewStructure);
method public abstract void onScrollChanged(int, int, int, int);
method public abstract void onSizeChanged(int, int, int, int);
method public abstract void onStartTemporaryDetach();
diff --git a/core/java/android/app/AssistStructure.java b/core/java/android/app/AssistStructure.java
index 3abbb5b..a06bc31 100644
--- a/core/java/android/app/AssistStructure.java
+++ b/core/java/android/app/AssistStructure.java
@@ -35,6 +35,7 @@ import android.util.Log;
import android.view.View;
import android.view.ViewAssistStructure;
import android.view.ViewRootImpl;
+import android.view.WindowManager;
import android.view.WindowManagerGlobal;
import java.util.ArrayList;
@@ -140,7 +141,14 @@ final public class AssistStructure implements Parcelable {
mTitle = root.getTitle();
mRoot = new ViewNode();
ViewNodeBuilder builder = new ViewNodeBuilder(assist, mRoot, false);
- view.dispatchProvideAssistStructure(builder);
+ if ((root.getWindowFlags()&WindowManager.LayoutParams.FLAG_SECURE) != 0) {
+ // This is a secure window, so it doesn't want a screenshot, and that
+ // means we should also not copy out its view hierarchy.
+ view.onProvideStructure(builder);
+ builder.setAssistBlocked(true);
+ return;
+ }
+ view.dispatchProvideStructure(builder);
}
WindowNode(Parcel in, PooledStringReader preader) {
@@ -652,7 +660,7 @@ final public class AssistStructure implements Parcelable {
}
@Override
- public Bundle editExtras() {
+ public Bundle getExtras() {
if (mNode.mExtras != null) {
return mNode.mExtras;
}
@@ -661,8 +669,8 @@ final public class AssistStructure implements Parcelable {
}
@Override
- public void clearExtras() {
- mNode.mExtras = null;
+ public boolean hasExtras() {
+ return mNode.mExtras != null;
}
@Override
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index f62e6a2..ee6bbe1 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -633,7 +633,6 @@ import java.util.concurrent.atomic.AtomicInteger;
* </p>
*
* @attr ref android.R.styleable#View_alpha
- * @attr ref android.R.styleable#View_assistBlocked
* @attr ref android.R.styleable#View_background
* @attr ref android.R.styleable#View_clickable
* @attr ref android.R.styleable#View_contentDescription
@@ -2533,7 +2532,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
PFLAG3_SCROLL_INDICATOR_END >> SCROLL_INDICATORS_TO_PFLAGS3_LSHIFT;
/**
- * <p>Indicates that we are allowing {@link android.view.ViewAssistStructure} to traverse
+ * <p>Indicates that we are allowing {@link ViewStructure} to traverse
* into this view.<p>
*/
static final int PFLAG3_ASSIST_BLOCKED = 0x100;
@@ -4050,11 +4049,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
viewFlagMasks |= SAVE_DISABLED_MASK;
}
break;
- case com.android.internal.R.styleable.View_assistBlocked:
- if (a.getBoolean(attr, false)) {
- mPrivateFlags3 |= PFLAG3_ASSIST_BLOCKED;
- }
- break;
case com.android.internal.R.styleable.View_duplicateParentState:
if (a.getBoolean(attr, false)) {
viewFlagValues |= DUPLICATE_PARENT_STATE;
@@ -6163,7 +6157,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* @param structure Fill in with structured view data. The default implementation
* fills in all data that can be inferred from the view itself.
*/
- public void onProvideAssistStructure(ViewAssistStructure structure) {
+ public void onProvideStructure(ViewStructure structure) {
final int id = mID;
if (id > 0 && (id&0xff000000) != 0 && (id&0x00ff0000) != 0
&& (id&0x0000ffff) != 0) {
@@ -6217,6 +6211,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
structure.setContentDescription(getContentDescription());
}
+ /** @hide */
+ public void onProvideAssistStructure(ViewStructure structure) {
+ onProvideStructure(structure);
+ }
+
/**
* Called when assist structure is being retrieved from a view as part of
* {@link android.app.Activity#onProvideAssistData Activity.onProvideAssistData} to
@@ -6225,19 +6224,24 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* view's virtual accessibility nodes, if any. You can override this for a more
* optimal implementation providing this data.
*/
- public void onProvideVirtualAssistStructure(ViewAssistStructure structure) {
+ public void onProvideVirtualStructure(ViewStructure structure) {
AccessibilityNodeProvider provider = getAccessibilityNodeProvider();
if (provider != null) {
AccessibilityNodeInfo info = createAccessibilityNodeInfo();
Log.i("View", "Provider of " + this + ": children=" + info.getChildCount());
structure.setChildCount(1);
- ViewAssistStructure root = structure.newChild(0);
- populateVirtualAssistStructure(root, provider, info);
+ ViewStructure root = structure.newChild(0);
+ populateVirtualStructure(root, provider, info);
info.recycle();
}
}
- private void populateVirtualAssistStructure(ViewAssistStructure structure,
+ /** @hide */
+ public void onProvideVirtualAssistStructure(ViewStructure structure) {
+ onProvideVirtualStructure(structure);
+ }
+
+ private void populateVirtualStructure(ViewStructure structure,
AccessibilityNodeProvider provider, AccessibilityNodeInfo info) {
structure.setId(AccessibilityNodeInfo.getVirtualDescendantId(info.getSourceNodeId()),
null, null, null);
@@ -6288,19 +6292,19 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
for (int i=0; i<NCHILDREN; i++) {
AccessibilityNodeInfo cinfo = provider.createAccessibilityNodeInfo(
AccessibilityNodeInfo.getVirtualDescendantId(info.getChildId(i)));
- ViewAssistStructure child = structure.newChild(i);
- populateVirtualAssistStructure(child, provider, cinfo);
+ ViewStructure child = structure.newChild(i);
+ populateVirtualStructure(child, provider, cinfo);
cinfo.recycle();
}
}
}
/**
- * Dispatch creation of {@link ViewAssistStructure} down the hierarchy. The default
- * implementation calls {@link #onProvideAssistStructure} and
- * {@link #onProvideVirtualAssistStructure}.
+ * Dispatch creation of {@link ViewStructure} down the hierarchy. The default
+ * implementation calls {@link #onProvideStructure} and
+ * {@link #onProvideVirtualStructure}.
*/
- public void dispatchProvideAssistStructure(ViewAssistStructure structure) {
+ public void dispatchProvideStructure(ViewStructure structure) {
if (!isAssistBlocked()) {
onProvideAssistStructure(structure);
onProvideVirtualAssistStructure(structure);
@@ -7904,8 +7908,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
/**
+ * @hide
* Indicates whether this view will participate in data collection through
- * {@link android.view.ViewAssistStructure}. If true, it will not provide any data
+ * {@link ViewStructure}. If true, it will not provide any data
* for itself or its children. If false, the normal data collection will be allowed.
*
* @return Returns false if assist data collection is not blocked, else true.
@@ -7918,17 +7923,18 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
/**
+ * @hide
* Controls whether assist data collection from this view and its children is enabled
- * (that is, whether {@link #onProvideAssistStructure} and
- * {@link #onProvideVirtualAssistStructure} will be called). The default value is false,
+ * (that is, whether {@link #onProvideStructure} and
+ * {@link #onProvideVirtualStructure} will be called). The default value is false,
* allowing normal assist collection. Setting this to false will disable assist collection.
*
* @param enabled Set to true to <em>disable</em> assist data collection, or false
* (the default) to allow it.
*
* @see #isAssistBlocked()
- * @see #onProvideAssistStructure
- * @see #onProvideVirtualAssistStructure
+ * @see #onProvideStructure
+ * @see #onProvideVirtualStructure
* @attr ref android.R.styleable#View_assistBlocked
*/
public void setAssistBlocked(boolean enabled) {
diff --git a/core/java/android/view/ViewAssistStructure.java b/core/java/android/view/ViewAssistStructure.java
index fccfbb8..a66d93c 100644
--- a/core/java/android/view/ViewAssistStructure.java
+++ b/core/java/android/view/ViewAssistStructure.java
@@ -16,70 +16,9 @@
package android.view;
-import android.graphics.Rect;
-import android.os.Bundle;
-import android.text.TextPaint;
-
/**
- * Container for storing additional per-view data generated by {@link View#onProvideAssistStructure
- * View.onProvideAssistStructure}.
+ * @deprecated Temporary until old apps can move off this.
*/
-public abstract class ViewAssistStructure {
- public abstract void setId(int id, String packageName, String typeName, String entryName);
-
- public abstract void setDimens(int left, int top, int scrollX, int scrollY, int width,
- int height);
-
- public abstract void setVisibility(int visibility);
-
- public abstract void setAssistBlocked(boolean state);
-
- public abstract void setEnabled(boolean state);
-
- public abstract void setClickable(boolean state);
-
- public abstract void setLongClickable(boolean state);
-
- public abstract void setStylusButtonPressable(boolean state);
-
- public abstract void setFocusable(boolean state);
-
- public abstract void setFocused(boolean state);
-
- public abstract void setAccessibilityFocused(boolean state);
-
- public abstract void setCheckable(boolean state);
-
- public abstract void setChecked(boolean state);
-
- public abstract void setSelected(boolean state);
-
- public abstract void setActivated(boolean state);
-
- public abstract void setClassName(String className);
-
- public abstract void setContentDescription(CharSequence contentDescription);
-
- public abstract void setText(CharSequence text);
- public abstract void setText(CharSequence text, int selectionStart, int selectionEnd);
- public abstract void setTextPaint(TextPaint paint);
- public abstract void setHint(CharSequence hint);
-
- public abstract CharSequence getText();
- public abstract int getTextSelectionStart();
- public abstract int getTextSelectionEnd();
- public abstract CharSequence getHint();
-
- public abstract Bundle editExtras();
- public abstract void clearExtras();
-
- public abstract void setChildCount(int num);
- public abstract int getChildCount();
- public abstract ViewAssistStructure newChild(int index);
-
- public abstract ViewAssistStructure asyncNewChild(int index);
- public abstract void asyncCommit();
-
- /** @hide */
- public abstract Rect getTempRect();
+@Deprecated
+public abstract class ViewAssistStructure extends ViewStructure {
}
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index babb4e9..c25042a 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -2878,12 +2878,12 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
}
/**
- * Dispatch creation of {@link ViewAssistStructure} down the hierarchy. This implementation
+ * Dispatch creation of {@link ViewStructure} down the hierarchy. This implementation
* adds in all child views of the view group, in addition to calling the default View
* implementation.
*/
- public void dispatchProvideAssistStructure(ViewAssistStructure structure) {
- super.dispatchProvideAssistStructure(structure);
+ public void dispatchProvideStructure(ViewStructure structure) {
+ super.dispatchProvideStructure(structure);
if (!isAssistBlocked()) {
if (structure.getChildCount() == 0) {
final int childrenCount = getChildCount();
@@ -2898,8 +2898,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
? getChildDrawingOrder(childrenCount, i) : i;
final View child = (preorderedList == null)
? children[childIndex] : preorderedList.get(childIndex);
- ViewAssistStructure cstructure = structure.newChild(i);
- child.dispatchProvideAssistStructure(cstructure);
+ ViewStructure cstructure = structure.newChild(i);
+ child.dispatchProvideStructure(cstructure);
}
}
}
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index fda6e63..080498c 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -653,6 +653,10 @@ public final class ViewRootImpl implements ViewParent,
return (mWindowAttributes.flags & WindowManager.LayoutParams.FLAG_LOCAL_FOCUS_MODE) != 0;
}
+ public int getWindowFlags() {
+ return mWindowAttributes.flags;
+ }
+
public CharSequence getTitle() {
return mWindowAttributes.getTitle();
}
diff --git a/core/java/android/view/ViewStructure.java b/core/java/android/view/ViewStructure.java
new file mode 100644
index 0000000..8dc49ac
--- /dev/null
+++ b/core/java/android/view/ViewStructure.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.view;
+
+import android.graphics.Rect;
+import android.os.Bundle;
+import android.text.TextPaint;
+
+/**
+ * Container for storing additional per-view data generated by {@link View#onProvideStructure
+ * View.onProvideStructure}.
+ */
+public abstract class ViewStructure {
+ public abstract void setId(int id, String packageName, String typeName, String entryName);
+
+ public abstract void setDimens(int left, int top, int scrollX, int scrollY, int width,
+ int height);
+
+ public abstract void setVisibility(int visibility);
+
+ /** @hide */
+ public abstract void setAssistBlocked(boolean state);
+
+ public abstract void setEnabled(boolean state);
+
+ public abstract void setClickable(boolean state);
+
+ public abstract void setLongClickable(boolean state);
+
+ public abstract void setStylusButtonPressable(boolean state);
+
+ public abstract void setFocusable(boolean state);
+
+ public abstract void setFocused(boolean state);
+
+ public abstract void setAccessibilityFocused(boolean state);
+
+ public abstract void setCheckable(boolean state);
+
+ public abstract void setChecked(boolean state);
+
+ public abstract void setSelected(boolean state);
+
+ public abstract void setActivated(boolean state);
+
+ public abstract void setClassName(String className);
+
+ public abstract void setContentDescription(CharSequence contentDescription);
+
+ public abstract void setText(CharSequence text);
+ public abstract void setText(CharSequence text, int selectionStart, int selectionEnd);
+ public abstract void setTextPaint(TextPaint paint);
+ public abstract void setHint(CharSequence hint);
+
+ public abstract CharSequence getText();
+ public abstract int getTextSelectionStart();
+ public abstract int getTextSelectionEnd();
+ public abstract CharSequence getHint();
+
+ public abstract Bundle getExtras();
+ public abstract boolean hasExtras();
+
+ public abstract void setChildCount(int num);
+ public abstract int getChildCount();
+ public abstract ViewAssistStructure newChild(int index);
+
+ public abstract ViewAssistStructure asyncNewChild(int index);
+ public abstract void asyncCommit();
+
+ /** @hide */
+ public abstract Rect getTempRect();
+}
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 7ab5aaa..b8b3719 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -40,7 +40,7 @@ import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
-import android.view.ViewAssistStructure;
+import android.view.ViewStructure;
import android.view.ViewDebug;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
@@ -2426,7 +2426,7 @@ public class WebView extends AbsoluteLayout
}
@Override
- public void onProvideVirtualAssistStructure(ViewAssistStructure structure) {
+ public void onProvideVirtualStructure(ViewStructure structure) {
mProvider.getViewDelegate().onProvideVirtualAssistStructure(structure);
}
diff --git a/core/java/android/webkit/WebViewProvider.java b/core/java/android/webkit/WebViewProvider.java
index d5787de..e367192 100644
--- a/core/java/android/webkit/WebViewProvider.java
+++ b/core/java/android/webkit/WebViewProvider.java
@@ -32,7 +32,7 @@ import android.print.PrintDocumentAdapter;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
-import android.view.ViewAssistStructure;
+import android.view.ViewStructure;
import android.view.ViewGroup.LayoutParams;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
@@ -299,7 +299,7 @@ public interface WebViewProvider {
interface ViewDelegate {
public boolean shouldDelayChildPressedState();
- public void onProvideVirtualAssistStructure(ViewAssistStructure structure);
+ public void onProvideVirtualAssistStructure(ViewStructure structure);
public AccessibilityNodeProvider getAccessibilityNodeProvider();
diff --git a/core/java/android/widget/Switch.java b/core/java/android/widget/Switch.java
index f94f97c..ff587c2 100644
--- a/core/java/android/widget/Switch.java
+++ b/core/java/android/widget/Switch.java
@@ -26,13 +26,11 @@ import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Insets;
-import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.graphics.Region.Op;
import android.graphics.drawable.Drawable;
-import android.os.Bundle;
import android.text.Layout;
import android.text.StaticLayout;
import android.text.TextPaint;
@@ -46,7 +44,7 @@ import android.view.Gravity;
import android.view.MotionEvent;
import android.view.SoundEffectConstants;
import android.view.VelocityTracker;
-import android.view.ViewAssistStructure;
+import android.view.ViewStructure;
import android.view.ViewConfiguration;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
@@ -1363,8 +1361,8 @@ public class Switch extends CompoundButton {
}
@Override
- public void onProvideAssistStructure(ViewAssistStructure structure) {
- super.onProvideAssistStructure(structure);
+ public void onProvideStructure(ViewStructure structure) {
+ super.onProvideStructure(structure);
CharSequence switchText = isChecked() ? mTextOn : mTextOff;
if (!TextUtils.isEmpty(switchText)) {
CharSequence oldText = structure.getText();
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 449173f..d6fdee0 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -114,7 +114,7 @@ import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
-import android.view.ViewAssistStructure;
+import android.view.ViewStructure;
import android.view.ViewConfiguration;
import android.view.ViewDebug;
import android.view.ViewGroup.LayoutParams;
@@ -8713,8 +8713,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
@Override
- public void onProvideAssistStructure(ViewAssistStructure structure) {
- super.onProvideAssistStructure(structure);
+ public void onProvideStructure(ViewStructure structure) {
+ super.onProvideStructure(structure);
final boolean isPassword = hasPasswordTransformationMethod();
if (!isPassword) {
structure.setText(getText(), getSelectionStart(), getSelectionEnd());
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 1c4b5f7..bb3ec65 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -2347,11 +2347,6 @@
be saved. -->
<attr name="saveEnabled" format="boolean" />
- <!-- If true, no {@link android.view.ViewAssistStructure} data will be collected from
- this view or any of its children. The default is false, allowing assist structure
- to be reported by it. -->
- <attr name="assistBlocked" format="boolean" />
-
<!-- Specifies whether to filter touches when the view's window is obscured by
another visible window. When set to true, the view will not receive touches
whenever a toast, dialog or other window appears above the view's window.
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 297b302..e403a16 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -2682,7 +2682,9 @@
<!-- NFC CardEmulation: dynamically load service resources -->
<public type="attr" name="dynamicResources" />
- <public type="attr" name="assistBlocked" />
+ <attr name="__reserved0" format="boolean" />
+ <public type="attr" name="__reserved0" />
+
<public type="attr" name="stylusButtonPressable" />
<public type="attr" name="supportsLaunchVoiceAssistFromKeyguard" />
<public type="attr" name="scrollIndicators" />
diff --git a/tests/VoiceInteraction/res/layout/main.xml b/tests/VoiceInteraction/res/layout/main.xml
index 34a7563..092d37d 100644
--- a/tests/VoiceInteraction/res/layout/main.xml
+++ b/tests/VoiceInteraction/res/layout/main.xml
@@ -34,12 +34,6 @@
android:text="@string/asyncStructure"
/>
- <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
- android:assistBlocked="true"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="This won't be included in assist."
- />
-
</LinearLayout>
diff --git a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/AsyncStructure.java b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/AsyncStructure.java
index 73e04e5..ae8e9e4 100644
--- a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/AsyncStructure.java
+++ b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/AsyncStructure.java
@@ -20,7 +20,7 @@ import android.annotation.Nullable;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
-import android.view.ViewAssistStructure;
+import android.view.ViewStructure;
import android.widget.TextView;
/**
@@ -32,9 +32,9 @@ public class AsyncStructure extends TextView {
}
@Override
- public void onProvideVirtualAssistStructure(ViewAssistStructure structure) {
+ public void onProvideVirtualStructure(ViewStructure structure) {
structure.setChildCount(1);
- final ViewAssistStructure child = structure.asyncNewChild(0);
+ final ViewStructure child = structure.asyncNewChild(0);
final int width = getWidth();
final int height = getHeight();
(new Thread() {