Merge "A11y changes for API council" into oc-dev

This commit is contained in:
TreeHugger Robot
2017-04-29 15:54:21 +00:00
committed by Android (Google) Code Review
18 changed files with 139 additions and 113 deletions

View File

@@ -357,12 +357,12 @@ package android {
field public static final int calendarTextColor = 16843931; // 0x101049b
field public static final int calendarViewShown = 16843596; // 0x101034c
field public static final int calendarViewStyle = 16843613; // 0x101035d
field public static final int canCaptureFingerprintGestures = 16844111; // 0x101054f
field public static final int canControlMagnification = 16844039; // 0x1010507
field public static final int canPerformGestures = 16844045; // 0x101050d
field public static final int canRecord = 16844060; // 0x101051c
field public static final deprecated int canRequestEnhancedWebAccessibility = 16843736; // 0x10103d8
field public static final int canRequestFilterKeyEvents = 16843737; // 0x10103d9
field public static final int canRequestFingerprintGestures = 16844111; // 0x101054f
field public static final int canRequestTouchExplorationMode = 16843735; // 0x10103d7
field public static final int canRetrieveWindowContent = 16843653; // 0x1010385
field public static final int candidatesTextStyleSpans = 16843312; // 0x1010230
@@ -2832,11 +2832,11 @@ package android.accessibilityservice {
method public java.lang.String loadDescription(android.content.pm.PackageManager);
method public java.lang.String loadSummary(android.content.pm.PackageManager);
method public void writeToParcel(android.os.Parcel, int);
field public static final int CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES = 64; // 0x40
field public static final int CAPABILITY_CAN_CONTROL_MAGNIFICATION = 16; // 0x10
field public static final int CAPABILITY_CAN_PERFORM_GESTURES = 32; // 0x20
field public static final deprecated int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 4; // 0x4
field public static final int CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS = 8; // 0x8
field public static final int CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES = 64; // 0x40
field public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 2; // 0x2
field public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 1; // 0x1
field public static final android.os.Parcelable.Creator<android.accessibilityservice.AccessibilityServiceInfo> CREATOR;
@@ -2848,13 +2848,13 @@ package android.accessibilityservice {
field public static final int FEEDBACK_HAPTIC = 2; // 0x2
field public static final int FEEDBACK_SPOKEN = 1; // 0x1
field public static final int FEEDBACK_VISUAL = 8; // 0x8
field public static final int FLAG_CAPTURE_FINGERPRINT_GESTURES = 512; // 0x200
field public static final int FLAG_ENABLE_ACCESSIBILITY_VOLUME = 128; // 0x80
field public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 2; // 0x2
field public static final int FLAG_REPORT_VIEW_IDS = 16; // 0x10
field public static final int FLAG_REQUEST_ACCESSIBILITY_BUTTON = 256; // 0x100
field public static final deprecated int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 8; // 0x8
field public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 32; // 0x20
field public static final int FLAG_REQUEST_FINGERPRINT_GESTURES = 512; // 0x200
field public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 4; // 0x4
field public static final int FLAG_RETRIEVE_INTERACTIVE_WINDOWS = 64; // 0x40
field public int eventTypes;
@@ -2876,7 +2876,6 @@ package android.accessibilityservice {
public static abstract class FingerprintGestureController.FingerprintGestureCallback {
ctor public FingerprintGestureController.FingerprintGestureCallback();
method public deprecated void onGesture(int);
method public void onGestureDetected(int);
method public void onGestureDetectionAvailabilityChanged(boolean);
}
@@ -2896,14 +2895,12 @@ package android.accessibilityservice {
public static class GestureDescription.StrokeDescription {
ctor public GestureDescription.StrokeDescription(android.graphics.Path, long, long);
ctor public GestureDescription.StrokeDescription(android.graphics.Path, long, long, int, boolean);
method public int getContinuedStrokeId();
ctor public GestureDescription.StrokeDescription(android.graphics.Path, long, long, boolean);
method public android.accessibilityservice.GestureDescription.StrokeDescription continueStroke(android.graphics.Path, long, long, boolean);
method public long getDuration();
method public int getId();
method public android.graphics.Path getPath();
method public long getStartTime();
method public boolean isContinued();
field public static final int INVALID_STROKE_ID = -1; // 0xffffffff
method public boolean willContinue();
}
}
@@ -47229,8 +47226,8 @@ package android.view.accessibility {
field public static final java.lang.String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN = "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
field public static final java.lang.String ACTION_ARGUMENT_HTML_ELEMENT_STRING = "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
field public static final java.lang.String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
field public static final java.lang.String ACTION_ARGUMENT_MOVE_WINDOW_X = "android.view.accessibility.action.ARGUMENT_MOVE_WINDOW_X";
field public static final java.lang.String ACTION_ARGUMENT_MOVE_WINDOW_Y = "android.view.accessibility.action.ARGUMENT_MOVE_WINDOW_Y";
field public static final java.lang.String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
field public static final java.lang.String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
field public static final java.lang.String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
field public static final java.lang.String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
field public static final java.lang.String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
@@ -47412,10 +47409,10 @@ package android.view.accessibility {
method public android.view.accessibility.AccessibilityNodeInfo getRoot();
method public java.lang.CharSequence getTitle();
method public int getType();
method public boolean inPictureInPicture();
method public boolean isAccessibilityFocused();
method public boolean isActive();
method public boolean isFocused();
method public boolean isInPictureInPictureMode();
method public static android.view.accessibility.AccessibilityWindowInfo obtain();
method public static android.view.accessibility.AccessibilityWindowInfo obtain(android.view.accessibility.AccessibilityWindowInfo);
method public void recycle();

View File

@@ -452,6 +452,14 @@ package android.view {
}
package android.view.accessibility {
public final class AccessibilityWindowInfo implements android.os.Parcelable {
method public boolean inPictureInPicture();
}
}
package android.webkit {
public class WebViewClient {

View File

@@ -477,12 +477,12 @@ package android {
field public static final int calendarTextColor = 16843931; // 0x101049b
field public static final int calendarViewShown = 16843596; // 0x101034c
field public static final int calendarViewStyle = 16843613; // 0x101035d
field public static final int canCaptureFingerprintGestures = 16844111; // 0x101054f
field public static final int canControlMagnification = 16844039; // 0x1010507
field public static final int canPerformGestures = 16844045; // 0x101050d
field public static final int canRecord = 16844060; // 0x101051c
field public static final deprecated int canRequestEnhancedWebAccessibility = 16843736; // 0x10103d8
field public static final int canRequestFilterKeyEvents = 16843737; // 0x10103d9
field public static final int canRequestFingerprintGestures = 16844111; // 0x101054f
field public static final int canRequestTouchExplorationMode = 16843735; // 0x10103d7
field public static final int canRetrieveWindowContent = 16843653; // 0x1010385
field public static final int candidatesTextStyleSpans = 16843312; // 0x1010230
@@ -2961,11 +2961,11 @@ package android.accessibilityservice {
method public java.lang.String loadDescription(android.content.pm.PackageManager);
method public java.lang.String loadSummary(android.content.pm.PackageManager);
method public void writeToParcel(android.os.Parcel, int);
field public static final int CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES = 64; // 0x40
field public static final int CAPABILITY_CAN_CONTROL_MAGNIFICATION = 16; // 0x10
field public static final int CAPABILITY_CAN_PERFORM_GESTURES = 32; // 0x20
field public static final deprecated int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 4; // 0x4
field public static final int CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS = 8; // 0x8
field public static final int CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES = 64; // 0x40
field public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 2; // 0x2
field public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 1; // 0x1
field public static final android.os.Parcelable.Creator<android.accessibilityservice.AccessibilityServiceInfo> CREATOR;
@@ -2977,13 +2977,13 @@ package android.accessibilityservice {
field public static final int FEEDBACK_HAPTIC = 2; // 0x2
field public static final int FEEDBACK_SPOKEN = 1; // 0x1
field public static final int FEEDBACK_VISUAL = 8; // 0x8
field public static final int FLAG_CAPTURE_FINGERPRINT_GESTURES = 512; // 0x200
field public static final int FLAG_ENABLE_ACCESSIBILITY_VOLUME = 128; // 0x80
field public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 2; // 0x2
field public static final int FLAG_REPORT_VIEW_IDS = 16; // 0x10
field public static final int FLAG_REQUEST_ACCESSIBILITY_BUTTON = 256; // 0x100
field public static final deprecated int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 8; // 0x8
field public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 32; // 0x20
field public static final int FLAG_REQUEST_FINGERPRINT_GESTURES = 512; // 0x200
field public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 4; // 0x4
field public static final int FLAG_RETRIEVE_INTERACTIVE_WINDOWS = 64; // 0x40
field public int eventTypes;
@@ -3005,7 +3005,6 @@ package android.accessibilityservice {
public static abstract class FingerprintGestureController.FingerprintGestureCallback {
ctor public FingerprintGestureController.FingerprintGestureCallback();
method public deprecated void onGesture(int);
method public void onGestureDetected(int);
method public void onGestureDetectionAvailabilityChanged(boolean);
}
@@ -3025,14 +3024,12 @@ package android.accessibilityservice {
public static class GestureDescription.StrokeDescription {
ctor public GestureDescription.StrokeDescription(android.graphics.Path, long, long);
ctor public GestureDescription.StrokeDescription(android.graphics.Path, long, long, int, boolean);
method public int getContinuedStrokeId();
ctor public GestureDescription.StrokeDescription(android.graphics.Path, long, long, boolean);
method public android.accessibilityservice.GestureDescription.StrokeDescription continueStroke(android.graphics.Path, long, long, boolean);
method public long getDuration();
method public int getId();
method public android.graphics.Path getPath();
method public long getStartTime();
method public boolean isContinued();
field public static final int INVALID_STROKE_ID = -1; // 0xffffffff
method public boolean willContinue();
}
}
@@ -50825,8 +50822,8 @@ package android.view.accessibility {
field public static final java.lang.String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN = "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
field public static final java.lang.String ACTION_ARGUMENT_HTML_ELEMENT_STRING = "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
field public static final java.lang.String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
field public static final java.lang.String ACTION_ARGUMENT_MOVE_WINDOW_X = "android.view.accessibility.action.ARGUMENT_MOVE_WINDOW_X";
field public static final java.lang.String ACTION_ARGUMENT_MOVE_WINDOW_Y = "android.view.accessibility.action.ARGUMENT_MOVE_WINDOW_Y";
field public static final java.lang.String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
field public static final java.lang.String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
field public static final java.lang.String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
field public static final java.lang.String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
field public static final java.lang.String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
@@ -51008,10 +51005,10 @@ package android.view.accessibility {
method public android.view.accessibility.AccessibilityNodeInfo getRoot();
method public java.lang.CharSequence getTitle();
method public int getType();
method public boolean inPictureInPicture();
method public boolean isAccessibilityFocused();
method public boolean isActive();
method public boolean isFocused();
method public boolean isInPictureInPictureMode();
method public static android.view.accessibility.AccessibilityWindowInfo obtain();
method public static android.view.accessibility.AccessibilityWindowInfo obtain(android.view.accessibility.AccessibilityWindowInfo);
method public void recycle();

View File

@@ -446,6 +446,14 @@ package android.view {
}
package android.view.accessibility {
public final class AccessibilityWindowInfo implements android.os.Parcelable {
method public boolean inPictureInPicture();
}
}
package android.webkit {
public class WebViewClient {

View File

@@ -357,12 +357,12 @@ package android {
field public static final int calendarTextColor = 16843931; // 0x101049b
field public static final int calendarViewShown = 16843596; // 0x101034c
field public static final int calendarViewStyle = 16843613; // 0x101035d
field public static final int canCaptureFingerprintGestures = 16844111; // 0x101054f
field public static final int canControlMagnification = 16844039; // 0x1010507
field public static final int canPerformGestures = 16844045; // 0x101050d
field public static final int canRecord = 16844060; // 0x101051c
field public static final deprecated int canRequestEnhancedWebAccessibility = 16843736; // 0x10103d8
field public static final int canRequestFilterKeyEvents = 16843737; // 0x10103d9
field public static final int canRequestFingerprintGestures = 16844111; // 0x101054f
field public static final int canRequestTouchExplorationMode = 16843735; // 0x10103d7
field public static final int canRetrieveWindowContent = 16843653; // 0x1010385
field public static final int candidatesTextStyleSpans = 16843312; // 0x1010230
@@ -2832,11 +2832,11 @@ package android.accessibilityservice {
method public java.lang.String loadDescription(android.content.pm.PackageManager);
method public java.lang.String loadSummary(android.content.pm.PackageManager);
method public void writeToParcel(android.os.Parcel, int);
field public static final int CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES = 64; // 0x40
field public static final int CAPABILITY_CAN_CONTROL_MAGNIFICATION = 16; // 0x10
field public static final int CAPABILITY_CAN_PERFORM_GESTURES = 32; // 0x20
field public static final deprecated int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 4; // 0x4
field public static final int CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS = 8; // 0x8
field public static final int CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES = 64; // 0x40
field public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 2; // 0x2
field public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 1; // 0x1
field public static final android.os.Parcelable.Creator<android.accessibilityservice.AccessibilityServiceInfo> CREATOR;
@@ -2848,13 +2848,13 @@ package android.accessibilityservice {
field public static final int FEEDBACK_HAPTIC = 2; // 0x2
field public static final int FEEDBACK_SPOKEN = 1; // 0x1
field public static final int FEEDBACK_VISUAL = 8; // 0x8
field public static final int FLAG_CAPTURE_FINGERPRINT_GESTURES = 512; // 0x200
field public static final int FLAG_ENABLE_ACCESSIBILITY_VOLUME = 128; // 0x80
field public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 2; // 0x2
field public static final int FLAG_REPORT_VIEW_IDS = 16; // 0x10
field public static final int FLAG_REQUEST_ACCESSIBILITY_BUTTON = 256; // 0x100
field public static final deprecated int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 8; // 0x8
field public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 32; // 0x20
field public static final int FLAG_REQUEST_FINGERPRINT_GESTURES = 512; // 0x200
field public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 4; // 0x4
field public static final int FLAG_RETRIEVE_INTERACTIVE_WINDOWS = 64; // 0x40
field public int eventTypes;
@@ -2876,7 +2876,6 @@ package android.accessibilityservice {
public static abstract class FingerprintGestureController.FingerprintGestureCallback {
ctor public FingerprintGestureController.FingerprintGestureCallback();
method public deprecated void onGesture(int);
method public void onGestureDetected(int);
method public void onGestureDetectionAvailabilityChanged(boolean);
}
@@ -2896,14 +2895,12 @@ package android.accessibilityservice {
public static class GestureDescription.StrokeDescription {
ctor public GestureDescription.StrokeDescription(android.graphics.Path, long, long);
ctor public GestureDescription.StrokeDescription(android.graphics.Path, long, long, int, boolean);
method public int getContinuedStrokeId();
ctor public GestureDescription.StrokeDescription(android.graphics.Path, long, long, boolean);
method public android.accessibilityservice.GestureDescription.StrokeDescription continueStroke(android.graphics.Path, long, long, boolean);
method public long getDuration();
method public int getId();
method public android.graphics.Path getPath();
method public long getStartTime();
method public boolean isContinued();
field public static final int INVALID_STROKE_ID = -1; // 0xffffffff
method public boolean willContinue();
}
}
@@ -47607,8 +47604,8 @@ package android.view.accessibility {
field public static final java.lang.String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN = "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
field public static final java.lang.String ACTION_ARGUMENT_HTML_ELEMENT_STRING = "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
field public static final java.lang.String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
field public static final java.lang.String ACTION_ARGUMENT_MOVE_WINDOW_X = "android.view.accessibility.action.ARGUMENT_MOVE_WINDOW_X";
field public static final java.lang.String ACTION_ARGUMENT_MOVE_WINDOW_Y = "android.view.accessibility.action.ARGUMENT_MOVE_WINDOW_Y";
field public static final java.lang.String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
field public static final java.lang.String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
field public static final java.lang.String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
field public static final java.lang.String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
field public static final java.lang.String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
@@ -47790,10 +47787,10 @@ package android.view.accessibility {
method public android.view.accessibility.AccessibilityNodeInfo getRoot();
method public java.lang.CharSequence getTitle();
method public int getType();
method public boolean inPictureInPicture();
method public boolean isAccessibilityFocused();
method public boolean isActive();
method public boolean isFocused();
method public boolean isInPictureInPictureMode();
method public static android.view.accessibility.AccessibilityWindowInfo obtain();
method public static android.view.accessibility.AccessibilityWindowInfo obtain(android.view.accessibility.AccessibilityWindowInfo);
method public void recycle();

View File

@@ -452,6 +452,14 @@ package android.view {
}
package android.view.accessibility {
public final class AccessibilityWindowInfo implements android.os.Parcelable {
method public boolean inPictureInPicture();
}
}
package android.webkit {
public class WebViewClient {

View File

@@ -619,20 +619,10 @@ public abstract class AccessibilityService extends Service {
* @return The controller for fingerprint gestures, or {@code null} if gestures are unavailable.
*/
@RequiresPermission(android.Manifest.permission.USE_FINGERPRINT)
public final @Nullable FingerprintGestureController getFingerprintGestureController() {
if ((mFingerprintGestureController == null)
&& getPackageManager().hasSystemFeature(FEATURE_FINGERPRINT)) {
FingerprintManager fingerprintManager = getSystemService(FingerprintManager.class);
if ((fingerprintManager != null) && fingerprintManager.isHardwareDetected()) {
AccessibilityServiceInfo info = getServiceInfo();
int fingerprintCapabilityMask =
AccessibilityServiceInfo.CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES;
if ((info.getCapabilities() & fingerprintCapabilityMask) != 0) {
mFingerprintGestureController = new FingerprintGestureController(
AccessibilityInteractionClient.getInstance()
.getConnection(mConnectionId));
}
}
public final @NonNull FingerprintGestureController getFingerprintGestureController() {
if (mFingerprintGestureController == null) {
mFingerprintGestureController = new FingerprintGestureController(
AccessibilityInteractionClient.getInstance().getConnection(mConnectionId));
}
return mFingerprintGestureController;
}

View File

@@ -119,9 +119,9 @@ public class AccessibilityServiceInfo implements Parcelable {
/**
* Capability: This accessibility service can capture gestures from the fingerprint sensor
* @see android.R.styleable#AccessibilityService_canCaptureFingerprintGestures
* @see android.R.styleable#AccessibilityService_canRequestFingerprintGestures
*/
public static final int CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES = 0x00000040;
public static final int CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES = 0x00000040;
private static SparseArray<CapabilityInfo> sAvailableCapabilityInfos;
@@ -301,7 +301,7 @@ public class AccessibilityServiceInfo implements Parcelable {
* This flag requests that all fingerprint gestures be sent to the accessibility service.
* It is handled in {@link FingerprintGestureController}
*/
public static final int FLAG_CAPTURE_FINGERPRINT_GESTURES = 0x00000200;
public static final int FLAG_REQUEST_FINGERPRINT_GESTURES = 0x00000200;
/** {@hide} */
public static final int FLAG_FORCE_DIRECT_BOOT_AWARE = 0x00010000;
@@ -521,8 +521,8 @@ public class AccessibilityServiceInfo implements Parcelable {
mCapabilities |= CAPABILITY_CAN_PERFORM_GESTURES;
}
if (asAttributes.getBoolean(com.android.internal.R.styleable
.AccessibilityService_canCaptureFingerprintGestures, false)) {
mCapabilities |= CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES;
.AccessibilityService_canRequestFingerprintGestures, false)) {
mCapabilities |= CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES;
}
TypedValue peekedValue = asAttributes.peekValue(
com.android.internal.R.styleable.AccessibilityService_description);
@@ -971,8 +971,8 @@ public class AccessibilityServiceInfo implements Parcelable {
return "FLAG_ENABLE_ACCESSIBILITY_VOLUME";
case FLAG_REQUEST_ACCESSIBILITY_BUTTON:
return "FLAG_REQUEST_ACCESSIBILITY_BUTTON";
case FLAG_CAPTURE_FINGERPRINT_GESTURES:
return "FLAG_CAPTURE_FINGERPRINT_GESTURES";
case FLAG_REQUEST_FINGERPRINT_GESTURES:
return "FLAG_REQUEST_FINGERPRINT_GESTURES";
default:
return null;
}
@@ -1000,8 +1000,8 @@ public class AccessibilityServiceInfo implements Parcelable {
return "CAPABILITY_CAN_CONTROL_MAGNIFICATION";
case CAPABILITY_CAN_PERFORM_GESTURES:
return "CAPABILITY_CAN_PERFORM_GESTURES";
case CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES:
return "CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES";
case CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES:
return "CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES";
default:
return "UNKNOWN";
}
@@ -1064,8 +1064,8 @@ public class AccessibilityServiceInfo implements Parcelable {
R.string.capability_title_canPerformGestures,
R.string.capability_desc_canPerformGestures));
if ((context == null) || fingerprintAvailable(context)) {
sAvailableCapabilityInfos.put(CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES,
new CapabilityInfo(CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES,
sAvailableCapabilityInfos.put(CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES,
new CapabilityInfo(CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES,
R.string.capability_title_canCaptureFingerprintGestures,
R.string.capability_desc_canCaptureFingerprintGestures));
}

View File

@@ -181,11 +181,5 @@ public final class FingerprintGestureController {
* {@link #FINGERPRINT_GESTURE_SWIPE_RIGHT}.
*/
public void onGestureDetected(int gesture) {}
/**
* @deprecated Never called. Use onGestureDetected.
*/
@Deprecated
public void onGesture(int gesture) {}
}
}

View File

@@ -24,6 +24,8 @@ import android.graphics.RectF;
import android.os.Parcel;
import android.os.Parcelable;
import com.android.internal.util.Preconditions;
import java.util.ArrayList;
import java.util.List;
@@ -130,7 +132,7 @@ public final class GestureDescription {
touchPoints[numPointsFound].mIsStartOfPath =
(strokeDescription.getContinuedStrokeId() < 0)
&& (time == strokeDescription.mStartTime);
touchPoints[numPointsFound].mIsEndOfPath = !strokeDescription.isContinued()
touchPoints[numPointsFound].mIsEndOfPath = !strokeDescription.willContinue()
&& (time == strokeDescription.mEndTime);
strokeDescription.getPosForTime(time, mTempPos);
touchPoints[numPointsFound].mX = Math.round(mTempPos[0]);
@@ -197,7 +199,7 @@ public final class GestureDescription {
* Immutable description of stroke that can be part of a gesture.
*/
public static class StrokeDescription {
public static final int INVALID_STROKE_ID = -1;
private static final int INVALID_STROKE_ID = -1;
static int sIdCounter;
@@ -210,7 +212,7 @@ public final class GestureDescription {
float[] mTapLocation;
int mId;
boolean mContinued;
int mContinuedStrokeId;
int mContinuedStrokeId = INVALID_STROKE_ID;
/**
* @param path The path to follow. Must have exactly one contour. The bounds of the path
@@ -219,12 +221,12 @@ public final class GestureDescription {
* @param startTime The time, in milliseconds, from the time the gesture starts to the
* time the stroke should start. Must not be negative.
* @param duration The duration, in milliseconds, the stroke takes to traverse the path.
* Must not be negative.
* Must be positive.
*/
public StrokeDescription(@NonNull Path path,
@IntRange(from = 0) long startTime,
@IntRange(from = 0) long duration) {
this(path, startTime, duration, INVALID_STROKE_ID, false);
this(path, startTime, duration, false);
}
/**
@@ -235,36 +237,23 @@ public final class GestureDescription {
* time the stroke should start. Must not be negative.
* @param duration The duration, in milliseconds, the stroke takes to traverse the path.
* Must be positive.
* @param continuedStrokeId The ID of the stroke that this stroke continues, or
* {@link #INVALID_STROKE_ID} if it continues no stroke. The stroke it
* continues must have its isContinued flag set to {@code true} and must be in the
* gesture dispatched immediately before the one containing this stroke.
* @param isContinued {@code true} if this stroke will be continued by one in the
* @param willContinue {@code true} if this stroke will be continued by one in the
* next gesture {@code false} otherwise. Continued strokes keep their pointers down when
* the gesture completes.
*/
public StrokeDescription(@NonNull Path path,
@IntRange(from = 0) long startTime,
@IntRange(from = 0) long duration,
@IntRange(from = 0) int continuedStrokeId,
boolean isContinued) {
mContinued = isContinued;
mContinuedStrokeId = continuedStrokeId;
if (duration <= 0) {
throw new IllegalArgumentException("Duration must be positive");
}
if (startTime < 0) {
throw new IllegalArgumentException("Start time must not be negative");
}
boolean willContinue) {
mContinued = willContinue;
Preconditions.checkArgument(duration > 0, "Duration must be positive");
Preconditions.checkArgument(startTime >= 0, "Start time must not be negative");
Preconditions.checkArgument(!path.isEmpty(), "Path is empty");
RectF bounds = new RectF();
path.computeBounds(bounds, false /* unused */);
if ((bounds.bottom < 0) || (bounds.top < 0) || (bounds.right < 0)
|| (bounds.left < 0)) {
throw new IllegalArgumentException("Path bounds must not be negative");
}
if (path.isEmpty()) {
throw new IllegalArgumentException("Path is empty");
}
Preconditions.checkArgument((bounds.bottom >= 0) && (bounds.top >= 0)
&& (bounds.right >= 0) && (bounds.left >= 0),
"Path bounds must not be negative");
mPath = new Path(path);
mPathMeasure = new PathMeasure(path, false);
if (mPathMeasure.getLength() == 0) {
@@ -321,17 +310,44 @@ public final class GestureDescription {
* stroke in a future gesture.
*
* @return the ID of this stroke
* @hide
*/
public int getId() {
return mId;
}
/**
* Create a new stroke that will continue this one. This is only possible if this stroke
* will continue.
*
* @param path The path for the stroke that continues this one. The starting point of
* this path must match the ending point of the stroke it continues.
* @param startTime The time, in milliseconds, from the time the gesture starts to the
* time this stroke should start. Must not be negative. This time is from
* the start of the new gesture, not the one being continued.
* @param duration The duration for the new stroke. Must not be negative.
* @param willContinue {@code true} if this stroke will be continued by one in the
* next gesture {@code false} otherwise.
* @return
*/
public StrokeDescription continueStroke(Path path, long startTime, long duration,
boolean willContinue) {
if (!mContinued) {
throw new IllegalStateException(
"Only strokes marked willContinue can be continued");
}
StrokeDescription strokeDescription =
new StrokeDescription(path, startTime, duration, willContinue);
strokeDescription.mContinuedStrokeId = mId;
return strokeDescription;
}
/**
* Check if this stroke is marked to continue in the next gesture.
*
* @return {@code true} if the stroke is to be continued.
*/
public boolean isContinued() {
public boolean willContinue() {
return mContinued;
}
@@ -339,6 +355,7 @@ public final class GestureDescription {
* Get the ID of the stroke that this one will continue.
*
* @return The ID of the stroke that this stroke continues, or 0 if no such stroke exists.
* @hide
*/
public int getContinuedStrokeId() {
return mContinuedStrokeId;

View File

@@ -487,7 +487,7 @@ public class AccessibilityNodeInfo implements Parcelable {
* @see AccessibilityAction#ACTION_MOVE_WINDOW
*/
public static final String ACTION_ARGUMENT_MOVE_WINDOW_X =
"android.view.accessibility.action.ARGUMENT_MOVE_WINDOW_X";
"ACTION_ARGUMENT_MOVE_WINDOW_X";
/**
* Argument for specifying the y coordinate to which to move a window.
@@ -501,7 +501,7 @@ public class AccessibilityNodeInfo implements Parcelable {
* @see AccessibilityAction#ACTION_MOVE_WINDOW
*/
public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y =
"android.view.accessibility.action.ARGUMENT_MOVE_WINDOW_Y";
"ACTION_ARGUMENT_MOVE_WINDOW_Y";
/**
* Argument to pass the {@link AccessibilityClickableSpan}.

View File

@@ -231,8 +231,18 @@ public final class AccessibilityWindowInfo implements Parcelable {
* Check if the window is in picture-in-picture mode.
*
* @return {@code true} if the window is in picture-in-picture mode, {@code false} otherwise.
* @removed
*/
public boolean inPictureInPicture() {
return isInPictureInPictureMode();
}
/**
* Check if the window is in picture-in-picture mode.
*
* @return {@code true} if the window is in picture-in-picture mode, {@code false} otherwise.
*/
public boolean isInPictureInPictureMode() {
return mInPictureInPicture;
}

View File

@@ -3451,8 +3451,8 @@
<flag name="flagEnableAccessibilityVolume" value="0x00000080" />
<!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_ACCESSIBILITY_BUTTON}. -->
<flag name="flagRequestAccessibilityButton" value="0x00000100" />
<!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_CAPTURE_FINGERPRINT_GESTURES}. -->
<flag name="flagCaptureFingerprintGestures" value="0x00000200" />
<!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_FINGERPRINT_GESTURES}. -->
<flag name="flagRequestFingerprintGestures" value="0x00000200" />
</attr>
<!-- Component name of an activity that allows the user to modify
the settings for this service. This setting cannot be changed at runtime. -->
@@ -3492,10 +3492,10 @@
the fingerprint sensor.
<p>
Required to allow setting the {@link android.accessibilityservice
#AccessibilityServiceInfo#FLAG_CAN_CAPTURE_FINGERPRINT_GESTURES} flag.
#AccessibilityServiceInfo#FLAG_REQUEST_FINGERPRINT_GESTURES} flag to have any effect.
</p>
-->
<attr name="canCaptureFingerprintGestures" format="boolean" />
<attr name="canRequestFingerprintGestures" format="boolean" />
<!-- Short description of the accessibility service purpose or behavior.-->
<attr name="description" />
<!-- Brief summary of the accessibility service purpose or behavior. -->

View File

@@ -2792,7 +2792,7 @@
<public name="colorMode" />
<public name="isolatedSplits" />
<public name="targetSandboxVersion" />
<public name="canCaptureFingerprintGestures" />
<public name="canRequestFingerprintGestures" />
<public name="alphabeticModifiers" />
<public name="numericModifiers" />
<public name="fontProviderAuthority" />

View File

@@ -2808,7 +2808,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
mRetrieveInteractiveWindows = (info.flags
& AccessibilityServiceInfo.FLAG_RETRIEVE_INTERACTIVE_WINDOWS) != 0;
mCaptureFingerprintGestures = (info.flags
& AccessibilityServiceInfo.FLAG_CAPTURE_FINGERPRINT_GESTURES) != 0;
& AccessibilityServiceInfo.FLAG_REQUEST_FINGERPRINT_GESTURES) != 0;
mRequestAccessibilityButton = (info.flags
& AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON) != 0;
}
@@ -4721,7 +4721,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
public boolean canCaptureFingerprintGestures(Service service) {
return (service.mAccessibilityServiceInfo.getCapabilities()
& AccessibilityServiceInfo.CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES) != 0;
& AccessibilityServiceInfo.CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES) != 0;
}
private int resolveProfileParentLocked(int userId) {

View File

@@ -16,7 +16,6 @@
package com.android.server.accessibility;
import static junit.framework.TestCase.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.when;

View File

@@ -131,7 +131,8 @@ public class FingerprintGestureControllerTest {
mFingerprintGestureController.registerFingerprintGestureCallback(
mMockFingerprintGestureCallback, null);
mFingerprintGestureController.onGesture(FINGERPRINT_GESTURE_SWIPE_DOWN);
verify(mMockFingerprintGestureCallback, times(1)).onGestureDetected(FINGERPRINT_GESTURE_SWIPE_DOWN);
verify(mMockFingerprintGestureCallback, times(1))
.onGestureDetected(FINGERPRINT_GESTURE_SWIPE_DOWN);
reset(mMockFingerprintGestureCallback);
mFingerprintGestureController.unregisterFingerprintGestureCallback(
@@ -150,9 +151,11 @@ public class FingerprintGestureControllerTest {
mFingerprintGestureController.registerFingerprintGestureCallback(
mMockFingerprintGestureCallback, messageCapturingHandler);
mFingerprintGestureController.onGesture(FINGERPRINT_GESTURE_SWIPE_DOWN);
verify(mMockFingerprintGestureCallback, times(0)).onGestureDetected(FINGERPRINT_GESTURE_SWIPE_DOWN);
verify(mMockFingerprintGestureCallback, times(0))
.onGestureDetected(FINGERPRINT_GESTURE_SWIPE_DOWN);
messageCapturingHandler.sendLastMessage();
verify(mMockFingerprintGestureCallback, times(1)).onGestureDetected(FINGERPRINT_GESTURE_SWIPE_DOWN);
verify(mMockFingerprintGestureCallback, times(1))
.onGestureDetected(FINGERPRINT_GESTURE_SWIPE_DOWN);
reset(mMockFingerprintGestureCallback);
mFingerprintGestureController.unregisterFingerprintGestureCallback(

View File

@@ -16,7 +16,6 @@
package com.android.server.accessibility;
import static android.accessibilityservice.GestureDescription.StrokeDescription.INVALID_STROKE_ID;
import static org.hamcrest.CoreMatchers.allOf;
import static org.hamcrest.CoreMatchers.everyItem;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -246,7 +245,7 @@ public class GestureDescriptionTest {
swipePath.moveTo(10, 20);
swipePath.lineTo(30, 40);
StrokeDescription stroke1 =
new StrokeDescription(swipePath, 0, 100, 0, true);
new StrokeDescription(swipePath, 0, 100, true);
GestureDescription gesture = new GestureDescription.Builder().addStroke(stroke1).build();
List<GestureStep> steps = MotionEventGenerator
.getGestureStepsFromGestureDescription(gesture, 10);
@@ -260,9 +259,8 @@ public class GestureDescriptionTest {
swipePath.moveTo(10, 20);
swipePath.lineTo(30, 40);
StrokeDescription stroke1 =
new StrokeDescription(swipePath, 0, 100, INVALID_STROKE_ID, true);
StrokeDescription stroke2 =
new StrokeDescription(swipePath, 0, 100, stroke1.getId(), false);
new StrokeDescription(swipePath, 0, 100, true);
StrokeDescription stroke2 = stroke1.continueStroke(swipePath, 0, 100, false);
GestureDescription gesture = new GestureDescription.Builder().addStroke(stroke2).build();
List<GestureStep> steps = MotionEventGenerator
.getGestureStepsFromGestureDescription(gesture, 10);