Commit Graph

4938 Commits

Author SHA1 Message Date
Adam Powell
50d7bfd822 DO NOT MERGE Refactoring of fitSystemWindows to applyWindowInsets for views
Applying insets is now handled by:

* WindowInsets class - Encapsulate system insets and local decor
  insets into a single object, written specifically so that new inset
  categories may be added later. Apps cannot construct their own
  WindowInsets, only clone with optional modifications. This is to
  prevent losing data in the event of new insets added in the future.

* onApplyWindowInsets - Actually perform the application of insets.

* OnApplyWindowInsetsListener - Allow an app to use a separate
  Listener object to apply insets to a View. This allows for things
  like support lib integration in custom views written for older
  versions where the verifier would otherwise complain about the use
  of the new WindowInsets class as a method parameter. It also allows
  for applying insets in a custom way without writing a custom view.

* dispatchApplyWindowInsets - Dispatch the call to self and children
  in turn, if applicable. An OnApplyWindowInsetsListener will override
  the behavior of the view's default onApplyWindowInsets method; a
  listener wishing to call down to the 'superclass' implementation as
  part of its own operation should call view.onApplyWindowInsets. App
  code should generally not override this method and instead override
  onApplyWindowInsets or provide a listener.

Compatibility support with the existing fitSystemWindows method has
been provided in both directions: for code that previously called
fitSystemWindows on arbitrary views and also for code that overrode
the fitSystemWindows method in custom views. A view that supports the
newer onApplyWindowInsets mechanism should not mix that behavior with
other calls to fitSystemWindows or vice versa. Support lib-style code
should take care to consistently use one mechanism or the other at
runtime.

Change-Id: Ie88b96e0382beb5d3c3f6cd013f7043acbc0a105
2014-04-15 10:30:25 -07:00
Jeff Brown
d912e1f6a1 Use the display's actual state in the view hierarchy.
Previously, the view hierarchy would suppress drawing whenever the
PowerManager.isScreenOn() method returned false.  However, this method
really describes the interactive state of the device rather than the
actual display state.  This is especially a problem when there are
multiple displays but it also breaks drawing while in doze mode.

This change makes the view hierarchy consider the actual state of the
display instead on an individual basis.

Bug: 13133142
Change-Id: I69870b6b14a3504607a30562aa48c3452f777c1f
2014-04-11 18:46:22 -07:00
Jeff Brown
037c33eae7 Plumb display power state through display manager.
Declare a new method, Display.getState() to retrieve the actual
power state of a display.

Improved documentation for Intent.ACTION_SCREEN_ON and
Intent.ACTION_SCREEN_OFF to clarify what they really mean in
terms of the interactive state of the device.

Deprecated PowerManager.isScreenOn() and replaced it with
PowerManager.isInteractive() with a more suggestive name and
better documentation.

Redirect display power state changes to go through the display
manager first and only then head over to the power manager for
legacy compatibility.

Eliminated the bright here and woke here policy flags since they
were unused.  Simplified the input dispatch policy somewhat.

Ensure that screen wake locks are respected up until the point
when dozing really begins.

Fixed a regression in DreamService where onDreamingStarted
might be called before onWindowAttached.

Bug: 13133142
Bug: 13472578
Bug: 13929355
Bug: 13760290
Change-Id: Iabef96921dd554ce3768fb18619cefc3230b5fb0
2014-04-10 20:46:14 -07:00
Michael Wright
e9eb58c9a0 Merge "Add InputDevice#supportsSource(int)." into klp-modular-dev 2014-03-29 00:56:17 +00:00
Michael Wright
d08c864784 Add InputDevice#supportsSource(int).
This mirrors the InputEvent#isFromSource API.

Change-Id: Ie4869cc52d22d49a71d4d3e22f1ae38b16367395
2014-03-28 12:59:34 -07:00
Michael Wright
1b10869f39 Generate and respect ACTION_CANCEL for joystick fallbacks. DO NOT MERGE
Also change MotionEvent.PointerCoords bit packing and unpacking
methods to be consistent with BitSets which are now used on the
native PointerCoords object.

Bug: 11480300
Change-Id: Ib18c99b94ac555104c69eac526860aa501e89e03
2014-03-26 14:56:07 -07:00
Michael Wright
1e3c93975e Adds API for determining confirm and cancel keys.
Bug: 13624048
Change-Id: I9f42eeb9c3a6bdae35eb0d7213fb4ac0fd8dc0d9
2014-03-26 14:40:42 -07:00
Jeff Brown
96abebd025 am 80af5316: am f260ed09: Merge "Fix inverted conditional in View.setFilterTouchesWhenObscured." into klp-dev
* commit '80af53162477385f20956a55305d0c048ef5c1df':
  Fix inverted conditional in View.setFilterTouchesWhenObscured.
2014-03-19 20:11:12 +00:00
Jeff Brown
80af531624 am f260ed09: Merge "Fix inverted conditional in View.setFilterTouchesWhenObscured." into klp-dev
* commit 'f260ed09263d60ff941225e31e22d344afd90c0f':
  Fix inverted conditional in View.setFilterTouchesWhenObscured.
2014-03-19 20:05:40 +00:00
Jeff Brown
aba566589e Fix inverted conditional in View.setFilterTouchesWhenObscured.
Bug: 13530806
Change-Id: Icdaf909c355f5b22635e1060f2190502916b144f
2014-03-18 17:59:21 -07:00
Adam Powell
41685ce983 am 898d6d96: am 7f2c9e94: Merge "Add a config override for ViewConfiguration#hasPermanentMenuKey" into klp-dev
* commit '898d6d964cb3b650b5c9bed2276310547e5455e0':
  Add a config override for ViewConfiguration#hasPermanentMenuKey
2014-03-13 23:53:38 +00:00
RoboErik
ca9eef6203 b/12068020 Make kb layouts only unique to vendor/product. Do not merge
This is a cherry-pick of https://googleplex-android-review.git.corp.google.com/#/c/399886/

Instead of storing a kb layout per device descriptor (which is expected
to be unique), store it for each vendor/product. This way we can keep
a consistent layout between identical but physically different keyboards.

There are some corner cases this is expected to fail on, namely devices
that incorrectly have the same vendor/product id. Devices that don't
define a vendor/product id will continue to use the descriptor to store
layout files.

Change-Id: I1f2508561992080459310d5a644dad65a9c24f1a
2014-03-12 13:21:08 -07:00
Adam Powell
898d6d964c am 7f2c9e94: Merge "Add a config override for ViewConfiguration#hasPermanentMenuKey" into klp-dev
* commit '7f2c9e9420252a493b7399639f794c8a963444e5':
  Add a config override for ViewConfiguration#hasPermanentMenuKey
2014-03-11 23:26:38 +00:00
Adam Powell
15b13a792c Add a config override for ViewConfiguration#hasPermanentMenuKey
Allow device overlays to override the behavior of the
hasPermanentMenuKey method at build time. This is useful for devices
that do not behave as the usual autodetection mechanism expects.

Device overlays should set config_overrideHasPermanentMenuKey to 1 if
the device DOES have a permanent menu key or 2 if the device DOES NOT
have a permanent menu key.

Bug 11698700

Change-Id: I467b68528cf681b08adcaebc2402d8bdd84f6b5c
2014-03-11 21:20:13 +00:00
Adam Powell
fd6b99750b Prevent overflow from MeasureSpec.adjust; measure cache fix
Extract the size from the MeasureSpec value before adding the
delta. The opposite order could result in a negative delta causing
overflow into size from the EXACTLY mode, creating a very large size
value in the resulting MeasureSpec.

Don't reapply optical bounds insets after pulling a value from the
measurement cache. (The insets will have already been applied before
insertion into the cache.)

Change-Id: Ib0154f4d6c3a7c31e7fee24fd7d5d10cc5dc71a1
2014-03-10 14:09:18 -07:00
Jeff Brown
6212a49a94 Declare KEYCODE_SLEEP and KEYCODE_WAKEUP.
These new keys behave in similarly to KEYCODE_POWER but do not
simply toggle between awake and asleep states.

Sleep puts the device to sleep if it is awake.
Wakeup wakes up the device if it is asleep.

Bug: 12938999
Change-Id: I260fb918cc858882fe06fa880910df5763a76c5d
2014-03-07 14:02:55 -08:00
Michael Wright
9aa7c6e583 am e4a71792: am 4448f9d7: am c5dea68e: Merge "Revert Japanese special case fallback keys." into klp-dev
* commit 'e4a7179278375f48171746ffe93ca4529a927ecb':
  Revert Japanese special case fallback keys.
2014-03-06 01:00:43 +00:00
Michael Wright
e4a7179278 am 4448f9d7: am c5dea68e: Merge "Revert Japanese special case fallback keys." into klp-dev
* commit '4448f9d7ade3d08a29b1a191e182a403c5584388':
  Revert Japanese special case fallback keys.
2014-03-06 00:56:59 +00:00
Michael Wright
4448f9d7ad am c5dea68e: Merge "Revert Japanese special case fallback keys." into klp-dev
* commit 'c5dea68e9856698953dafca868eaee7207614641':
  Revert Japanese special case fallback keys.
2014-03-06 00:53:22 +00:00
Michael Wright
c5dea68e98 Merge "Revert Japanese special case fallback keys." into klp-dev 2014-03-06 00:50:15 +00:00
Filip Gruszczyński
c16ba8cda7 Passing and using defStyle in ViewGroup initFromAttributes.
Change-Id: I2104037d6f701aa3a27bf09226aca171ec77495d
2014-03-05 14:43:49 -08:00
Will Haldean Brown
bd79652a9a Merge "Add swipe-to-dismiss support to PhoneWindow." into klp-modular-dev 2014-03-04 21:22:30 +00:00
John Spurlock
3b86923854 am c6ecac77: am 38f81ccc: am fee6f69e: Merge "Volume panel should not clear system ui flags." into klp-dev
* commit 'c6ecac77cfa35bbc72a4b7e1e3374ad00f83b305':
  Volume panel should not clear system ui flags.
2014-03-04 19:19:14 +00:00
John Spurlock
c6ecac77cf am 38f81ccc: am fee6f69e: Merge "Volume panel should not clear system ui flags." into klp-dev
* commit '38f81ccc768958b1a9100cb2caa93ec3aedd9b5e':
  Volume panel should not clear system ui flags.
2014-03-04 19:15:56 +00:00
John Spurlock
38f81ccc76 am fee6f69e: Merge "Volume panel should not clear system ui flags." into klp-dev
* commit 'fee6f69e8321c3f94c2b341fe483f7b1f6534169':
  Volume panel should not clear system ui flags.
2014-03-04 19:12:40 +00:00
Will Haldean Brown
ca6234e084 Add swipe-to-dismiss support to PhoneWindow.
This adds a new window feature -- FEATURE_SWIPE_TO_DISMISS -- and a
theme attribute to activate that feature. When the feature is
activated, a SwipeDismissLayout is inflated as the DecorView layout.
SwipeDismissLayout intercepts touch events and steals ones that are
large swipes to the right if its children don't. PhoneWindow registers
handlers that listen for these swipe events, translate the window when
necessary, and finish the activity at the end of the gesture.

Change-Id: I512e758f3c3ffd3b353dba3b911c0e80a88d6f5f
2014-03-04 09:26:15 -08:00
John Spurlock
ca4d040342 Volume panel should not clear system ui flags.
Remove private WM flag (used only by the volume panel) to force
the clearable system UI flags clear.

Instead, always lay out the volume panel as if the bars are visible,
as we do for system dialogs - and don't clear the flags.

Reverts part of I25f29af5b6518aba695b64a75977ae240b742118

Bug:11986621
Change-Id: I842729d729d2a6eb2a687d0b930ddb160c6a1b57
2014-03-04 10:12:01 -05:00
Michael Wright
bdffc3ad05 Revert Japanese special case fallback keys.
Reverts commits 4567e40eb0 and
a977707d6e, which added special case fallbacks
for game controllers in the Japanese locale.

Bug: 12923922
Change-Id: I229126e589e11fb5de86772ef9c59d09723af941
2014-02-26 15:43:48 -08:00
Jeff Brown
2687550272 Add a new "doze mode" based on Dream components.
When a doze component has been specified in a config.xml resource
overlay, the power manager will try to start a preconfigured dream
whenever it would have otherwise gone to sleep and turned the
screen off.  The dream should render whatever it intends to show
then call startDozing() to tell the power manager to put the display
into a low power "doze" state and allow the application processor
to be suspended.  The dream may wake up periodically using the
alarm manager or other features to update the contents of the display.

Added several new config.xml resources related to dreams and dozing.
In particular for dozing there are two new resources that pertain to
decoupling auto-suspend mode and interactive mode from the display
state.  This is a requirement to enable the application processor
and other components to be suspended while dozing.  Most devices
do not support these features today.

Consolidated the power manager's NAPPING and DREAMING states into one
to simplify the logic.  The NAPPING state was mostly superfluous
and simply indicated that the power manager should attempt to start
a new dream.  This state is now tracked in the mSandmanSummoned field.

Added a new DOZING state which is analoguous to DREAMING.  The normal
state transition is now: AWAKE -> DREAMING -> DOZING -> ASLEEP.
The PowerManager.goToSleep() method now enters the DOZING state instead
of immediately going to sleep.

While in the doze state, the screen remains on.  However, we actually
tell the rest of the system that the screen is off.  This is somewhat
unfortunate but much of the system makes inappropriate assumptions
about what it means for the screen to be on or off.  In particular,
screen on is usually taken to indicate an interactive state where
the user is present but that's not at all true for dozing (and is
only sometimes true while dreaming).  We will probably need to add
some more precise externally visible states at some point.

The DozeHardware interface encapsulates a generic microcontroller
interface to allow a doze dream for off-loading rendering or other
functions while dozing.  If the device possesses an MCU HAL for dozing
then it is exposed to the DreamService here.

Removed a number of catch blocks in DreamService that caught Throwable
and attempted to cause the dream to finish itself.  We actually just
want to let the process crash.  Cleanup will happen automatically if
needed.  Catching these exceptions results in mysterious undefined
behavior and broken dreams.

Bug: 12494706
Change-Id: Ie78336b37dde7250d1ce65b3d367879e3bfb2b8b
2014-02-20 13:39:13 -08:00
Andy McFadden
4f0a80d0b8 Allow "opaque" flag to be updated. DO NOT MERGE
Added a setOpaque() call and a bunch of comments.

Bug 12387406

Change-Id: Ic066cba926223f22f9bc56a7013987001d9cc795
2014-02-18 15:54:24 -08:00
Narayan Kamath
583b7b1671 am 39a789bf: am 7ae1726d: am aa9ba887: am 6e09eb4c: Merge "AArch64: Make graphics classes 64-bit compatible"
* commit '39a789bf6efd5c3478a442e60e896cae371fd04c':
  AArch64: Make graphics classes 64-bit compatible
2014-01-28 19:26:29 +00:00
Ashok Bhat
a0398430fc AArch64: Make graphics classes 64-bit compatible
Changes in this patch include

[x] Long is used to store native pointers as they can
    be 64-bit.

[x] Some minor changes have been done to conform with
    standard JNI practice (e.g. use of jint instead of int
    in JNI function prototypes)

[x] AssetAtlasManager is not completely 64-bit compatible
    yet. Specifically mAtlasMap member has to be converted
    to hold native pointer using long. Added a TODO to
    AssetAtlasManager.java to indicate the change required.

Change-Id: I940433f601c6db998c1a8ffff338f5361200d5ed
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Craig Barber <craig.barber@arm.com>
Signed-off-by: Kévin PETIT <kevin.petit@arm.com>
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
2014-01-28 17:40:38 +00:00
Jeff Brown
4ccb823a9f Refactor display manager service to new pattern.
Transform DisplayManagerService into a SystemService and start cleaning
up other local services that it uses from window manager and input manager.

Clean up service thread initialization.

Remove unnecessary static variables from ActivityManagerService.

It's starting to become clear that we really need a better way to manage
service dependencies.  Boot phases don't quite cut it.

Change-Id: If319dbd7cbfbd4812fe55ece969e818d4b20755b
2014-01-16 22:16:42 -08:00
Narayan Kamath
23b7e0a32b am d8facb67: am d569e21d: am 48de490c: am 486544f7: Merge "AArch64: Use long for pointers in view/input classes"
* commit 'd8facb6763638178bd12f1010466e426c0754f49':
  AArch64: Use long for pointers in view/input classes
2014-01-16 15:42:14 +00:00
Narayan Kamath
e18f0e2a46 am 19bd2c28: am ab220dee: am 947d88a0: am 138d67c8: Merge "AArch64: Use long for pointers in MotionEvent class"
* commit '19bd2c28f9c3e4db12cad93ed2a69c17c95e42fd':
  AArch64: Use long for pointers in MotionEvent class
2014-01-16 15:41:47 +00:00
Narayan Kamath
e413dae892 am 8e96d73a: am e488f2c1: am a0b25d41: am d85bba8e: Merge "AArch64: Use long for pointers in VelocityTracker class"
* commit '8e96d73a755348b25ceb80f907eae15be2da0d75':
  AArch64: Use long for pointers in VelocityTracker class
2014-01-16 15:41:41 +00:00
Narayan Kamath
a5a0d384fc am 425b08f1: am c1abb5e3: am 53321d99: am f19c50d6: Merge "AArch64: Use long for pointers in KeyCharacterMap class"
* commit '425b08f14419a1e67a3d9d2c9b97ea61ecd4f5cb':
  AArch64: Use long for pointers in KeyCharacterMap class
2014-01-16 15:41:30 +00:00
Narayan Kamath
486544f763 Merge "AArch64: Use long for pointers in view/input classes" 2014-01-16 12:12:31 +00:00
Narayan Kamath
138d67c847 Merge "AArch64: Use long for pointers in MotionEvent class" 2014-01-16 12:11:55 +00:00
Narayan Kamath
d85bba8ebd Merge "AArch64: Use long for pointers in VelocityTracker class" 2014-01-16 12:11:51 +00:00
Ashok Bhat
a931d5218c AArch64: Use long for pointers in view/input classes
For storing pointers, long is used in view/input classes,
as native pointers can be 64-bit.

In addition, some minor changes have been done
to conform with standard JNI practice (e.g. use
of jint instead of int in JNI function prototypes)

Change-Id: Iafda9f4653c023bcba95b873637d935d0b569f5d
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
Signed-off-by: Kévin PETIT <kevin.petit@arm.com>
2014-01-09 15:12:04 +00:00
Ashok Bhat
96804bc8fb AArch64: Use long for pointers in VelocityTracker class
For storing pointers, long is used in VelocityTracker class,
as native pointers can be 64-bit.

Change-Id: I8c454663a97745c7440bb6f99ef49d28e9026876
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
2014-01-08 18:48:19 +00:00
Ashok Bhat
99a1ef2b7f AArch64: Use long for pointers in MotionEvent class
For storing pointers, long is used in MotionEvent class,
as native pointers can be 64-bit.

Change-Id: I88ebfef26070b7f49c14945cad37aa3db209ec90
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Craig Barber <craig.barber@arm.com>
Signed-off-by: Kévin PETIT <kevin.petit@arm.com>
2014-01-08 18:31:59 +00:00
Ashok Bhat
0c3f921016 AArch64: Use long for pointers in KeyCharacterMap class
For storing pointers, long is used in KeyCharacterMap class,
as native pointers can be 64-bit.

Change-Id: Idc1b39874202e96b9231d7801e6707003787659b
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
Signed-off-by: Kévin PETIT <kevin.petit@arm.com>
2014-01-08 18:19:21 +00:00
Narayan Kamath
0d8c3c469e am 5f83ff6f: am e7d7908c: am 02baba25: am 67032754: Merge "AArch64: Use long for pointers in DisplayEventReceiver"
* commit '5f83ff6ffa82fb84df6feab4339054b302ac391e':
  AArch64: Use long for pointers in DisplayEventReceiver
2014-01-07 13:06:52 +00:00
Ashok Bhat
27285821b7 AArch64: Use long for pointers in DisplayEventReceiver
For storing pointers, long is used as
native pointers can be 64-bit.

In addition, some minor changes have been done
to conform with standard JNI practice (e.g. use
of jint instead of int in JNI function prototypes)

Change-Id: I3c0855373c0e4bedc172adb82b103586de9219dc
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
2014-01-07 12:48:43 +00:00
Amith Yamasani
9158825f9c Move some system services to separate directories
Refactored the directory structure so that services can be optionally
excluded. This is step 1. Will be followed by another change that makes
it possible to remove services from the build.

Change-Id: Ideacedfd34b5e213217ad3ff4ebb21c4a8e73f85
2013-12-19 15:25:37 -08:00
Kenny Root
e0b14ea70b am 31b9ec01: am 62d509d2: am 37c69fdd: Merge "Use java.util.Objects instead on internal API"
* commit '31b9ec01ff6087773cb35af6824a6422a0181afb':
  Use java.util.Objects instead on internal API
2013-12-13 22:23:33 +00:00
Kenny Root
e6585b32ea Use java.util.Objects instead on internal API
Not needed since java.util.Objects implements all the needed
functionality.

Change-Id: Icd31d49a9801d1705427f028e9ac927d58e7d34c
2013-12-13 13:40:30 -08:00
Mike Lockwood
e63f6f7c8d DO NOT MERGE: Remove obsolete "headless" support
Change-Id: I829fe48e6ebcb819e260646bb19ac6ddfcf07f83
2013-12-09 15:14:37 -08:00