Merge "Revert "Add new MotionEvent actions for button press and release."" into mnc-dev

This commit is contained in:
Michael Wright
2015-05-14 13:47:07 +00:00
committed by Android (Google) Code Review
8 changed files with 23 additions and 197 deletions

View File

@@ -35364,7 +35364,6 @@ package android.view {
method public static java.lang.String axisToString(int);
method public final int findPointerIndex(int);
method public final int getAction();
method public final int getActionButton();
method public final int getActionIndex();
method public final int getActionMasked();
method public final float getAxisValue(int);
@@ -35428,6 +35427,7 @@ package android.view {
method public final float getY(int);
method public final float getYPrecision();
method public final boolean isButtonPressed(int);
method public final boolean isStylusButtonPressed();
method public static android.view.MotionEvent obtain(long, long, int, int, android.view.MotionEvent.PointerProperties[], android.view.MotionEvent.PointerCoords[], int, int, float, float, int, int, int, int);
method public static deprecated android.view.MotionEvent obtain(long, long, int, int, int[], android.view.MotionEvent.PointerCoords[], int, float, float, int, int, int, int);
method public static android.view.MotionEvent obtain(long, long, int, float, float, float, float, int, float, float, int, int);
@@ -35443,8 +35443,6 @@ package android.view {
method public final void setSource(int);
method public final void transform(android.graphics.Matrix);
method public void writeToParcel(android.os.Parcel, int);
field public static final int ACTION_BUTTON_PRESS = 11; // 0xb
field public static final int ACTION_BUTTON_RELEASE = 12; // 0xc
field public static final int ACTION_CANCEL = 3; // 0x3
field public static final int ACTION_DOWN = 0; // 0x0
field public static final int ACTION_HOVER_ENTER = 9; // 0x9
@@ -35513,8 +35511,6 @@ package android.view {
field public static final int BUTTON_FORWARD = 16; // 0x10
field public static final int BUTTON_PRIMARY = 1; // 0x1
field public static final int BUTTON_SECONDARY = 2; // 0x2
field public static final int BUTTON_STYLUS_PRIMARY = 32; // 0x20
field public static final int BUTTON_STYLUS_SECONDARY = 64; // 0x40
field public static final int BUTTON_TERTIARY = 4; // 0x4
field public static final android.os.Parcelable.Creator<android.view.MotionEvent> CREATOR;
field public static final int EDGE_BOTTOM = 2; // 0x2

View File

@@ -37625,7 +37625,6 @@ package android.view {
method public static java.lang.String axisToString(int);
method public final int findPointerIndex(int);
method public final int getAction();
method public final int getActionButton();
method public final int getActionIndex();
method public final int getActionMasked();
method public final float getAxisValue(int);
@@ -37689,6 +37688,7 @@ package android.view {
method public final float getY(int);
method public final float getYPrecision();
method public final boolean isButtonPressed(int);
method public final boolean isStylusButtonPressed();
method public static android.view.MotionEvent obtain(long, long, int, int, android.view.MotionEvent.PointerProperties[], android.view.MotionEvent.PointerCoords[], int, int, float, float, int, int, int, int);
method public static deprecated android.view.MotionEvent obtain(long, long, int, int, int[], android.view.MotionEvent.PointerCoords[], int, float, float, int, int, int, int);
method public static android.view.MotionEvent obtain(long, long, int, float, float, float, float, int, float, float, int, int);
@@ -37704,8 +37704,6 @@ package android.view {
method public final void setSource(int);
method public final void transform(android.graphics.Matrix);
method public void writeToParcel(android.os.Parcel, int);
field public static final int ACTION_BUTTON_PRESS = 11; // 0xb
field public static final int ACTION_BUTTON_RELEASE = 12; // 0xc
field public static final int ACTION_CANCEL = 3; // 0x3
field public static final int ACTION_DOWN = 0; // 0x0
field public static final int ACTION_HOVER_ENTER = 9; // 0x9
@@ -37774,8 +37772,6 @@ package android.view {
field public static final int BUTTON_FORWARD = 16; // 0x10
field public static final int BUTTON_PRIMARY = 1; // 0x1
field public static final int BUTTON_SECONDARY = 2; // 0x2
field public static final int BUTTON_STYLUS_PRIMARY = 32; // 0x20
field public static final int BUTTON_STYLUS_SECONDARY = 64; // 0x40
field public static final int BUTTON_TERTIARY = 4; // 0x4
field public static final android.os.Parcelable.Creator<android.view.MotionEvent> CREATOR;
field public static final int EDGE_BOTTOM = 2; // 0x2

View File

@@ -97,9 +97,6 @@ public final class InputEventConsistencyVerifier {
// Set to true if we received hover enter.
private boolean mHoverEntered;
// The bitset of buttons which we've received ACTION_BUTTON_PRESS for.
private int mButtonsPressed;
// The current violation message.
private StringBuilder mViolationMessage;
@@ -151,7 +148,6 @@ public final class InputEventConsistencyVerifier {
mTouchEventStreamIsTainted = false;
mTouchEventStreamUnhandled = false;
mHoverEntered = false;
mButtonsPressed = 0;
while (mKeyStateList != null) {
final KeyState state = mKeyStateList;
@@ -470,8 +466,6 @@ public final class InputEventConsistencyVerifier {
final int action = event.getAction();
final int source = event.getSource();
final int buttonState = event.getButtonState();
final int actionButton = event.getActionButton();
if ((source & InputDevice.SOURCE_CLASS_POINTER) != 0) {
switch (action) {
case MotionEvent.ACTION_HOVER_ENTER:
@@ -492,62 +486,6 @@ public final class InputEventConsistencyVerifier {
ensureHistorySizeIsZeroForThisAction(event);
ensurePointerCountIsOneForThisAction(event);
break;
case MotionEvent.ACTION_BUTTON_PRESS:
ensureActionButtonIsNonZeroForThisAction(event);
if ((mButtonsPressed & actionButton) != 0) {
problem("Action button for ACTION_BUTTON_PRESS event is " +
actionButton + ", but it has already been pressed and " +
"has yet to be released.");
}
mButtonsPressed |= actionButton;
// The system will automatically mirror the stylus buttons onto the button
// state as the old set of generic buttons for apps targeting pre-M. If
// it looks this has happened, go ahead and set the generic buttons as
// pressed to prevent spurious errors.
if (actionButton == MotionEvent.BUTTON_STYLUS_PRIMARY &&
(buttonState & MotionEvent.BUTTON_SECONDARY) != 0) {
mButtonsPressed |= MotionEvent.BUTTON_SECONDARY;
} else if (actionButton == MotionEvent.BUTTON_STYLUS_SECONDARY &&
(buttonState & MotionEvent.BUTTON_TERTIARY) != 0) {
mButtonsPressed |= MotionEvent.BUTTON_TERTIARY;
}
if (mButtonsPressed != buttonState) {
problem(String.format("Reported button state differs from " +
"expected button state based on press and release events. " +
"Is 0x%08x but expected 0x%08x.",
buttonState, mButtonsPressed));
}
break;
case MotionEvent.ACTION_BUTTON_RELEASE:
ensureActionButtonIsNonZeroForThisAction(event);
if ((mButtonsPressed & actionButton) != actionButton) {
problem("Action button for ACTION_BUTTON_RELEASE event is " +
actionButton + ", but it was either never pressed or has " +
"already been released.");
}
mButtonsPressed &= ~actionButton;
// The system will automatically mirror the stylus buttons onto the button
// state as the old set of generic buttons for apps targeting pre-M. If
// it looks this has happened, go ahead and set the generic buttons as
// released to prevent spurious errors.
if (actionButton == MotionEvent.BUTTON_STYLUS_PRIMARY &&
(buttonState & MotionEvent.BUTTON_SECONDARY) == 0) {
mButtonsPressed &= ~MotionEvent.BUTTON_SECONDARY;
} else if (actionButton == MotionEvent.BUTTON_STYLUS_SECONDARY &&
(buttonState & MotionEvent.BUTTON_TERTIARY) == 0) {
mButtonsPressed &= ~MotionEvent.BUTTON_TERTIARY;
}
if (mButtonsPressed != buttonState) {
problem(String.format("Reported button state differs from " +
"expected button state based on press and release events. " +
"Is 0x%08x but expected 0x%08x.",
buttonState, mButtonsPressed));
}
break;
default:
problem("Invalid action for generic pointer event.");
break;
@@ -625,15 +563,6 @@ public final class InputEventConsistencyVerifier {
}
}
private void ensureActionButtonIsNonZeroForThisAction(MotionEvent event) {
final int actionButton = event.getActionButton();
if (actionButton == 0) {
problem("No action button set. Action button should always be non-zero for " +
MotionEvent.actionToString(event.getAction()));
}
}
private void ensureHistorySizeIsZeroForThisAction(MotionEvent event) {
final int historySize = event.getHistorySize();
if (historySize != 0) {

View File

@@ -302,32 +302,6 @@ public final class MotionEvent extends InputEvent implements Parcelable {
*/
public static final int ACTION_HOVER_EXIT = 10;
/**
* Constant for {@link #getActionMasked}: A button has been pressed.
*
* <p>
* Use {@link #getActionButton()} to get which button was pressed.
* </p><p>
* This action is not a touch event so it is delivered to
* {@link View#onGenericMotionEvent(MotionEvent)} rather than
* {@link View#onTouchEvent(MotionEvent)}.
* </p>
*/
public static final int ACTION_BUTTON_PRESS = 11;
/**
* Constant for {@link #getActionMasked}: A button has been released.
*
* <p>
* Use {@link #getActionButton()} to get which button was released.
* </p><p>
* This action is not a touch event so it is delivered to
* {@link View#onGenericMotionEvent(MotionEvent)} rather than
* {@link View#onTouchEvent(MotionEvent)}.
* </p>
*/
public static final int ACTION_BUTTON_RELEASE = 12;
/**
* Bits in the action code that represent a pointer index, used with
* {@link #ACTION_POINTER_DOWN} and {@link #ACTION_POINTER_UP}. Shifting
@@ -1200,14 +1174,14 @@ public final class MotionEvent extends InputEvent implements Parcelable {
public static final int BUTTON_PRIMARY = 1 << 0;
/**
* Button constant: Secondary button (right mouse button).
* Button constant: Secondary button (right mouse button, stylus first button).
*
* @see #getButtonState
*/
public static final int BUTTON_SECONDARY = 1 << 1;
/**
* Button constant: Tertiary button (middle mouse button).
* Button constant: Tertiary button (middle mouse button, stylus second button).
*
* @see #getButtonState
*/
@@ -1235,20 +1209,6 @@ public final class MotionEvent extends InputEvent implements Parcelable {
*/
public static final int BUTTON_FORWARD = 1 << 4;
/**
* Button constant: Primary stylus button pressed.
*
* @see #getButtonState
*/
public static final int BUTTON_STYLUS_PRIMARY = 1 << 5;
/**
* Button constant: Secondary stylus button pressed.
*
* @see #getButtonState
*/
public static final int BUTTON_STYLUS_SECONDARY = 1 << 6;
// NOTE: If you add a new axis here you must also add it to:
// native/include/android/input.h
@@ -1260,8 +1220,8 @@ public final class MotionEvent extends InputEvent implements Parcelable {
"BUTTON_TERTIARY",
"BUTTON_BACK",
"BUTTON_FORWARD",
"BUTTON_STYLUS_PRIMARY",
"BUTTON_STYLUS_SECONDARY",
"0x00000020",
"0x00000040",
"0x00000080",
"0x00000100",
"0x00000200",
@@ -1397,8 +1357,6 @@ public final class MotionEvent extends InputEvent implements Parcelable {
private static native void nativeSetEdgeFlags(long nativePtr, int action);
private static native int nativeGetMetaState(long nativePtr);
private static native int nativeGetButtonState(long nativePtr);
private static native void nativeSetButtonState(long nativePtr, int buttonState);
private static native int nativeGetActionButton(long nativePtr);
private static native void nativeOffsetLocation(long nativePtr, float deltaX, float deltaY);
private static native float nativeGetXOffset(long nativePtr);
private static native float nativeGetYOffset(long nativePtr);
@@ -2254,35 +2212,11 @@ public final class MotionEvent extends InputEvent implements Parcelable {
* @see #BUTTON_TERTIARY
* @see #BUTTON_FORWARD
* @see #BUTTON_BACK
* @see #BUTTON_STYLUS_PRIMARY
* @see #BUTTON_STYLUS_SECONDARY
*/
public final int getButtonState() {
return nativeGetButtonState(mNativePtr);
}
/**
* Sets the bitfield indicating which buttons are pressed.
*
* @see #getButtonState()
* @hide
*/
public final void setButtonState(int buttonState) {
nativeSetButtonState(mNativePtr, buttonState);
}
/**
* Gets which button has been modified during a press or release action.
*
* For actions other than {@link #ACTION_BUTTON_PRESS} and {@link #ACTION_BUTTON_RELEASE}
* the returned value is undefined.
*
* @see #getButtonState()
*/
public final int getActionButton() {
return nativeGetActionButton(mNativePtr);
}
/**
* Returns the original raw X coordinate of this event. For touch
* events on the screen, this is the original location of the event
@@ -3079,7 +3013,6 @@ public final class MotionEvent extends InputEvent implements Parcelable {
public String toString() {
StringBuilder msg = new StringBuilder();
msg.append("MotionEvent { action=").append(actionToString(getAction()));
msg.append(", actionButton=").append(buttonStateToString(getActionButton()));
final int pointerCount = getPointerCount();
for (int i = 0; i < pointerCount; i++) {
@@ -3133,10 +3066,6 @@ public final class MotionEvent extends InputEvent implements Parcelable {
return "ACTION_HOVER_ENTER";
case ACTION_HOVER_EXIT:
return "ACTION_HOVER_EXIT";
case ACTION_BUTTON_PRESS:
return "ACTION_BUTTON_PRESS";
case ACTION_BUTTON_RELEASE:
return "ACTION_BUTTON_RELEASE";
}
int index = (action & ACTION_POINTER_INDEX_MASK) >> ACTION_POINTER_INDEX_SHIFT;
switch (action & ACTION_MASK) {
@@ -3243,8 +3172,6 @@ public final class MotionEvent extends InputEvent implements Parcelable {
* @see #BUTTON_TERTIARY
* @see #BUTTON_FORWARD
* @see #BUTTON_BACK
* @see #BUTTON_STYLUS_PRIMARY
* @see #BUTTON_STYLUS_SECONDARY
*/
public final boolean isButtonPressed(int button) {
if (button == 0) {
@@ -3253,6 +3180,18 @@ public final class MotionEvent extends InputEvent implements Parcelable {
return (getButtonState() & button) == button;
}
/**
* Checks if a stylus is being used and if the first stylus button is
* pressed.
*
* @return True if the tool is a stylus and if the first stylus button is
* pressed.
* @see #BUTTON_SECONDARY
*/
public final boolean isStylusButtonPressed() {
return (isButtonPressed(BUTTON_SECONDARY) && getToolType(0) == TOOL_TYPE_STYLUS);
}
public static final Parcelable.Creator<MotionEvent> CREATOR
= new Parcelable.Creator<MotionEvent>() {
public MotionEvent createFromParcel(Parcel in) {

View File

@@ -5221,8 +5221,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* @return True if the event was consumed.
*/
private boolean performStylusActionOnButtonPress(MotionEvent event) {
if (isStylusButtonPressable() && !mInStylusButtonPress && !mHasPerformedLongPress
&& event.isButtonPressed(MotionEvent.BUTTON_STYLUS_SECONDARY)) {
if (isStylusButtonPressable() && !mInStylusButtonPress
&& !mHasPerformedLongPress && event.isStylusButtonPressed()) {
if (performStylusButtonPress()) {
mInStylusButtonPress = true;
setPressed(true, event.getX(), event.getY());

View File

@@ -40,7 +40,6 @@ import android.hardware.display.DisplayManager;
import android.hardware.display.DisplayManager.DisplayListener;
import android.media.AudioManager;
import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
import android.os.Debug;
import android.os.Handler;
@@ -5353,7 +5352,7 @@ public final class ViewRootImpl implements ViewParent,
//Log.d(TAG, ">>>>>> CALLING relayout");
if (params != null && mOrigWindowType != params.type) {
// For compatibility with old apps, don't crash here.
if (mTargetSdkVersion < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
if (mTargetSdkVersion < android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
Slog.w(TAG, "Window type can not be changed after "
+ "the window is added; ignoring change of " + mView);
params.type = mOrigWindowType;
@@ -5778,7 +5777,6 @@ public final class ViewRootImpl implements ViewParent,
void enqueueInputEvent(InputEvent event,
InputEventReceiver receiver, int flags, boolean processImmediately) {
adjustInputEventForCompatibility(event);
QueuedInputEvent q = obtainQueuedInputEvent(event, receiver, flags);
// Always enqueue the input event in order, regardless of its time stamp.
@@ -5884,19 +5882,6 @@ public final class ViewRootImpl implements ViewParent,
recycleQueuedInputEvent(q);
}
private void adjustInputEventForCompatibility(InputEvent e) {
if (mTargetSdkVersion < Build.VERSION_CODES.MNC && e instanceof MotionEvent) {
MotionEvent motion = (MotionEvent) e;
final int mask =
MotionEvent.BUTTON_STYLUS_PRIMARY | MotionEvent.BUTTON_STYLUS_SECONDARY;
final int buttonState = motion.getButtonState();
final int compatButtonState = (buttonState & mask) >> 4;
if (compatButtonState != 0) {
motion.setButtonState(buttonState | compatButtonState);
}
}
}
static boolean isTerminalInputEvent(InputEvent event) {
if (event instanceof KeyEvent) {
final KeyEvent keyEvent = (KeyEvent)event;

View File

@@ -135,8 +135,7 @@ status_t NativeInputEventSender::sendMotionEvent(uint32_t seq, const MotionEvent
for (size_t i = 0; i <= event->getHistorySize(); i++) {
publishedSeq = mNextPublishedSeq++;
status_t status = mInputPublisher.publishMotionEvent(publishedSeq,
event->getDeviceId(), event->getSource(),
event->getAction(), event->getActionButton(), event->getFlags(),
event->getDeviceId(), event->getSource(), event->getAction(), event->getFlags(),
event->getEdgeFlags(), event->getMetaState(), event->getButtonState(),
event->getXOffset(), event->getYOffset(),
event->getXPrecision(), event->getYPrecision(),

View File

@@ -370,7 +370,7 @@ static jlong android_view_MotionEvent_nativeInitialize(JNIEnv* env, jclass clazz
env->DeleteLocalRef(pointerCoordsObj);
}
event->initialize(deviceId, source, action, flags, edgeFlags, metaState, buttonState, 0,
event->initialize(deviceId, source, action, flags, edgeFlags, metaState, buttonState,
xOffset, yOffset, xPrecision, yPrecision,
downTimeNanos, eventTimeNanos, pointerCount, pointerProperties, rawPointerCoords);
@@ -456,12 +456,6 @@ static void android_view_MotionEvent_nativeSetAction(JNIEnv* env, jclass clazz,
event->setAction(action);
}
static int android_view_MotionEvent_nativeGetActionButton(JNIEnv* env, jclass clazz,
jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return event->getActionButton();
}
static jboolean android_view_MotionEvent_nativeIsTouchEvent(JNIEnv* env, jclass clazz,
jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
@@ -504,12 +498,6 @@ static jint android_view_MotionEvent_nativeGetButtonState(JNIEnv* env, jclass cl
return event->getButtonState();
}
static void android_view_MotionEvent_nativeSetButtonState(JNIEnv* env, jclass clazz,
jlong nativePtr, jint buttonState) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
event->setButtonState(buttonState);
}
static void android_view_MotionEvent_nativeOffsetLocation(JNIEnv* env, jclass clazz,
jlong nativePtr, jfloat deltaX, jfloat deltaY) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
@@ -776,9 +764,6 @@ static JNINativeMethod gMotionEventMethods[] = {
{ "nativeSetAction",
"(JI)V",
(void*)android_view_MotionEvent_nativeSetAction },
{ "nativeGetActionButton",
"(J)I",
(void*)android_view_MotionEvent_nativeGetActionButton},
{ "nativeIsTouchEvent",
"(J)Z",
(void*)android_view_MotionEvent_nativeIsTouchEvent },
@@ -800,9 +785,6 @@ static JNINativeMethod gMotionEventMethods[] = {
{ "nativeGetButtonState",
"(J)I",
(void*)android_view_MotionEvent_nativeGetButtonState },
{ "nativeSetButtonState",
"(JI)V",
(void*)android_view_MotionEvent_nativeSetButtonState },
{ "nativeOffsetLocation",
"(JFF)V",
(void*)android_view_MotionEvent_nativeOffsetLocation },