diff options
author | Jeff Brown <jeffbrown@google.com> | 2010-09-01 17:01:00 -0700 |
---|---|---|
committer | Jeff Brown <jeffbrown@google.com> | 2010-09-08 11:50:55 -0700 |
commit | 85a3176704b5bfbeece9bd928369fbb76eec7dc6 (patch) | |
tree | 1a84f21c037b514c5b6717b106f5a9a2c4fd6c99 /include | |
parent | c0b4f6d30d962d75125628317b5f5ea622531dfe (diff) | |
download | frameworks_base-85a3176704b5bfbeece9bd928369fbb76eec7dc6.zip frameworks_base-85a3176704b5bfbeece9bd928369fbb76eec7dc6.tar.gz frameworks_base-85a3176704b5bfbeece9bd928369fbb76eec7dc6.tar.bz2 |
Add support for secure views.
Added the MotionEvent.FLAG_WINDOW_IS_OBSCURED flag which is set by the
input manager whenever another visible window is partly or wholly obscured
the target of a touch event so that applications can filter touches
accordingly.
Added a "filterTouchesWhenObscured" attribute to View which can be used to
enable filtering of touches when the view's window is obscured.
Change-Id: I936d9c85013fd2d77fb296a600528d30a29027d2
Diffstat (limited to 'include')
-rw-r--r-- | include/ui/Input.h | 9 | ||||
-rw-r--r-- | include/ui/InputDispatcher.h | 28 | ||||
-rw-r--r-- | include/ui/InputTransport.h | 2 |
3 files changed, 31 insertions, 8 deletions
diff --git a/include/ui/Input.h b/include/ui/Input.h index 3fa825f..b587e94 100644 --- a/include/ui/Input.h +++ b/include/ui/Input.h @@ -78,6 +78,11 @@ enum { POLICY_FLAG_RAW_MASK = 0x0000ffff, + /* These flags are set by the input dispatcher. */ + + // Indicates that the input event was injected. + POLICY_FLAG_INJECTED = 0x01000000, + /* These flags are set by the input reader policy as it intercepts each event. */ // Indicates that the screen was off when the event was received and the event @@ -225,6 +230,8 @@ public: inline int32_t getAction() const { return mAction; } + inline int32_t getFlags() const { return mFlags; } + inline int32_t getEdgeFlags() const { return mEdgeFlags; } inline int32_t getMetaState() const { return mMetaState; } @@ -343,6 +350,7 @@ public: int32_t deviceId, int32_t source, int32_t action, + int32_t flags, int32_t edgeFlags, int32_t metaState, float xOffset, @@ -370,6 +378,7 @@ public: private: int32_t mAction; + int32_t mFlags; int32_t mEdgeFlags; int32_t mMetaState; float mXOffset; diff --git a/include/ui/InputDispatcher.h b/include/ui/InputDispatcher.h index aed4fa1..711a658 100644 --- a/include/ui/InputDispatcher.h +++ b/include/ui/InputDispatcher.h @@ -84,14 +84,22 @@ struct InputTarget { * current event is delivered to this target or a timeout occurs. */ FLAG_SYNC = 0x01, - /* This flag indicates that a MotionEvent with ACTION_DOWN falls outside of the area of - * this target and so should instead be delivered as an ACTION_OUTSIDE to this target. */ + /* This flag indicates that a MotionEvent with AMOTION_EVENT_ACTION_DOWN falls outside + * of the area of this target and so should instead be delivered as an + * AMOTION_EVENT_ACTION_OUTSIDE to this target. */ FLAG_OUTSIDE = 0x02, /* This flag indicates that a KeyEvent or MotionEvent is being canceled. - * In the case of a key event, it should be delivered with KeyEvent.FLAG_CANCELED set. - * In the case of a motion event, it should be delivered as MotionEvent.ACTION_CANCEL. */ - FLAG_CANCEL = 0x04 + * In the case of a key event, it should be delivered with flag + * AKEY_EVENT_FLAG_CANCELED set. + * In the case of a motion event, it should be delivered with action + * AMOTION_EVENT_ACTION_CANCEL instead. */ + FLAG_CANCEL = 0x04, + + /* This flag indicates that the target of a MotionEvent is partly or wholly + * obscured by another visible window above it. The motion event should be + * delivered with flag AMOTION_EVENT_FLAG_WINDOW_IS_OBSCURED. */ + FLAG_WINDOW_IS_OBSCURED = 0x08, }; // The input channel to be targeted. @@ -193,7 +201,8 @@ public: uint32_t policyFlags, int32_t action, int32_t flags, int32_t keyCode, int32_t scanCode, int32_t metaState, nsecs_t downTime) = 0; virtual void notifyMotion(nsecs_t eventTime, int32_t deviceId, int32_t source, - uint32_t policyFlags, int32_t action, int32_t metaState, int32_t edgeFlags, + uint32_t policyFlags, int32_t action, int32_t flags, + int32_t metaState, int32_t edgeFlags, uint32_t pointerCount, const int32_t* pointerIds, const PointerCoords* pointerCoords, float xPrecision, float yPrecision, nsecs_t downTime) = 0; @@ -257,7 +266,8 @@ public: uint32_t policyFlags, int32_t action, int32_t flags, int32_t keyCode, int32_t scanCode, int32_t metaState, nsecs_t downTime); virtual void notifyMotion(nsecs_t eventTime, int32_t deviceId, int32_t source, - uint32_t policyFlags, int32_t action, int32_t metaState, int32_t edgeFlags, + uint32_t policyFlags, int32_t action, int32_t flags, + int32_t metaState, int32_t edgeFlags, uint32_t pointerCount, const int32_t* pointerIds, const PointerCoords* pointerCoords, float xPrecision, float yPrecision, nsecs_t downTime); @@ -327,6 +337,7 @@ private: int32_t source; uint32_t policyFlags; int32_t action; + int32_t flags; int32_t metaState; int32_t edgeFlags; float xPrecision; @@ -458,7 +469,8 @@ private: int32_t repeatCount, nsecs_t downTime); MotionEntry* obtainMotionEntry(nsecs_t eventTime, int32_t deviceId, int32_t source, uint32_t policyFlags, int32_t action, - int32_t metaState, int32_t edgeFlags, float xPrecision, float yPrecision, + int32_t flags, int32_t metaState, int32_t edgeFlags, + float xPrecision, float yPrecision, nsecs_t downTime, uint32_t pointerCount, const int32_t* pointerIds, const PointerCoords* pointerCoords); DispatchEntry* obtainDispatchEntry(EventEntry* eventEntry); diff --git a/include/ui/InputTransport.h b/include/ui/InputTransport.h index 31ec701..82831e2 100644 --- a/include/ui/InputTransport.h +++ b/include/ui/InputTransport.h @@ -135,6 +135,7 @@ struct InputMessage { struct { int32_t action; + int32_t flags; int32_t metaState; int32_t edgeFlags; nsecs_t downTime; @@ -218,6 +219,7 @@ public: int32_t deviceId, int32_t source, int32_t action, + int32_t flags, int32_t edgeFlags, int32_t metaState, float xOffset, |