Commit Graph

110 Commits

Author SHA1 Message Date
John Spurlock
4fde81f7e7 DreamManagerService: Handle missing db value
Should not happen (except for early dogfooders with a specific build),
but handle gracefully as we do elsewhere in dream manager.

To test:
  adb shell sqlite3 \
  /data/data/com.android.providers.settings/databases/settings.db \
  "delete from secure where name = 'screensaver_components'"

Pre-fix workaround:
  adb shell sqlite3 \
  /data/data/com.android.providers.settings/databases/settings.db \
  "insert into secure(name, value) values ('screensaver_components', \
  'com.google.android.deskclock/com.android.deskclock.Screensaver')"

Change-Id: I2cf39608c8dd5011f6a00deece95eb6554da5173
2012-08-25 09:51:40 -04:00
John Spurlock
1a868b7981 Add framework support for multiple dreams.
Bug:7028665
Change-Id: I4fba6b8e39dc07af4490c621ac3bc7b3867371b2
2012-08-22 16:49:20 -04:00
Jeff Brown
98365d7663 Refactor for multi-display support.
Split WindowManagerImpl into two parts, the WindowManager
interface implementation remains where it is but the global
communications with the window manager are now handled by
the WindowManagerGlobal class.  This change greatly simplifies
the challenge of having separate WindowManager instances
for each Context.

Removed WindowManagerImpl.getDefault().  This represents the
bulk of this change.  Most of the usages of this method were
either to perform global functions (now handled by WindowManagerGlobal)
or to obtain the default display (now handled by DisplayManager).

Explicitly associate each new window with a display and make
the Display object available to the View hierarchy.

Add stubs for some new display manager API features.

Start to split apart the concepts of display id and layer stack.
since they operate at different layers of abstraction.
While it's true that each logical display uniquely corresponds to a
surface flinger layer stack, it is not necessarily the case that
they must use the same ids.  Added Display.getLayerStack()
and started using it in places where it was relatively easy to do.

Change-Id: I29ed909114dec86807c4d3a5059c3fa0358bea61
2012-08-19 22:42:08 -07:00
Jeff Brown
9630704ed3 Power manager rewrite.
The major goal of this rewrite is to make it easier to implement
power management policies correctly.  According, the new
implementation primarily uses state-based rather than event-based
triggers for applying changes to the current power state.

For example, when an application requests that the proximity
sensor be used to manage the screen state (by way of a wake lock),
the power manager makes note of the fact that the set of
wake locks changed.  Then it executes a common update function
that recalculates the entire state, first looking at wake locks,
then considering user activity, and eventually determining whether
the screen should be turned on or off.  At this point it may
make a request to a component called the DisplayPowerController
to asynchronously update the display's powe state.  Likewise,
DisplayPowerController makes note of the updated power request
and schedules its own update function to figure out what needs
to be changed.

The big benefit of this approach is that it's easy to mutate
multiple properties of the power state simultaneously then
apply their joint effects together all at once.  Transitions
between states are detected and resolved by the update in
a consistent manner.

The new power manager service has is implemented as a set of
loosely coupled components.  For the most part, information
only flows one way through these components (by issuing a
request to that component) although some components support
sending a message back to indicate when the work has been
completed.  For example, the DisplayPowerController posts
a callback runnable asynchronously to tell the PowerManagerService
when the display is ready.  An important feature of this
approach is that each component neatly encapsulates its
state and maintains its own invariants.  Moreover, we do
not need to worry about deadlocks or awkward mutual exclusion
semantics because most of the requests are asynchronous.

The benefits of this design are especially apparent in
the implementation of the screen on / off and brightness
control animations which are able to take advantage of
framework features like properties, ObjectAnimator
and Choreographer.

The screen on / off animation is now the responsibility
of the power manager (instead of surface flinger).  This change
makes it much easier to ensure that the animation is properly
coordinated with other power state changes and eliminates
the cause of race conditions in the older implementation.

The because of the userActivity() function has been changed
so that it never wakes the device from sleep.  This change
removes ambiguity around forcing or disabling user activity
for various purposes.  To wake the device, use wakeUp().
To put it to sleep, use goToSleep().  Simple.

The power manager service interface and API has been significantly
simplified and consolidated.  Also fixed some inconsistencies
related to how the minimum and maximum screen brightness setting
was presented in brightness control widgets and enforced behind
the scenes.

At present the following features are implemented:

- Wake locks.
- User activity.
- Wake up / go to sleep.
- Power state broadcasts.
- Battery stats and event log notifications.
- Dreams.
- Proximity screen off.
- Animated screen on / off transitions.
- Auto-dimming.
- Auto-brightness control for the screen backlight with
  different timeouts for ramping up versus ramping down.
- Auto-on when plugged or unplugged.
- Stay on when plugged.
- Device administration maximum user activity timeout.
- Application controlled brightness via window manager.

The following features are not yet implemented:

- Reduced user activity timeout for the key guard.
- Reduced user activity timeout for the phone application.
- Coordinating screen on barriers with the window manager.
- Preventing auto-rotation during power state changes.
- Auto-brightness adjustment setting (feature was disabled
  in previous version of the power manager service pending
  an improved UI design so leaving it out for now).
- Interpolated brightness control (a proposed new scheme
  for more compactly specifying auto-brightness levels
  in config.xml).
- Button / keyboard backlight control.
- Change window manager to associated WorkSource with
  KEEP_SCREEN_ON_FLAG wake lock instead of talking
  directly to the battery stats service.
- Optionally support animating screen brightness when
  turning on/off instead of playing electron beam animation
  (config_animateScreenLights).

Change-Id: I1d7a52e98f0449f76d70bf421f6a7f245957d1d7
2012-08-15 03:06:24 -07:00
Daniel Sandler
f7178d3cad Allow the secure keyguard to engage behind Dreams.
TYPE_DREAM windows are now considered for relevant window
flags alongside application windows.

Bug: 6961616
Change-Id: Idee3303276a8b69c7f07de1d6acdce64c6e1b863
2012-08-11 00:55:14 -04:00
Daniel Sandler
9252dbd314 Add fullscreen to Dream.lightsOut().
Also don't go into lightsOut() by default in
onAttachedToWindow(), in case some dream doesn't want to do
that.

We should probably make this even more flexible, but
this is a start.

Change-Id: I606b42a288259902e89d59595ad60548a89866da
2012-08-10 13:57:32 -04:00
Daniel Sandler
a2fbe53f1e More termination conditions for Dreams.
Default implementation of Dreams will finish() on KEYCODE_BACK.

PhoneStatusBar will awaken() from any Dream when the Home key is pressed.

Change-Id: I55e2a5d533a7fb93debc4c54514dba3b9098f009
2012-08-10 01:19:03 -04:00
Daniel Sandler
5927d957ea Merge "Migrate Dreams default settings to DatabaseHelper." into jb-mr1-dev 2012-08-08 08:47:40 -07:00
Daniel Sandler
fdb7c36a10 Migrate Dreams default settings to DatabaseHelper.
Also switch Dreams on for all charging devices by default.

Change-Id: Iccbcc2906d55214320b2f467e88ba9cb188f4886
2012-08-08 08:38:48 -04:00
Svetoslav Ganov
758143ecfe Window position not reported if the window is not moved.
1.If a window is shown but never moved the window window
  is never notified for its current location. Therefore,
  accessibility nodes do not contain correct bounds in
  screen coordinates.

bug:6926295

Change-Id: I7df18b095d33ecafffced75aba9e4f4693b0c393
2012-08-06 23:49:38 -07:00
John Spurlock
bc632a28e4 Re-enable dreams: frameworks/base
Enable feature in config. Expose Dream in public api for unbundled apps.
Unhide package.  Add isDreaming() method to service.

Re-arrange the Dream api a bit.  (use onStart as hook for subclasses).
Coordinate properly with power manager.

Replace old dock mode (don't fire old intent).

Change-Id: I1318d20cc1613e5d862f2913f2fcdc9719302cf7
Bug: 6921930
2012-08-03 08:51:17 -04:00
Craig Mautner
6881a10557 Small step towards supporting multiple displays
Change-Id: I353449c2b464394988c7e0203656b5851a0c9127
2012-07-27 13:04:51 -07:00
Fabrice Di Meglio
aac0d4ed02 Replace left/right with start/end for Gravity / LayoutParams / Padding
- see bug #5429822 UI should be mirrored for RTL locales (Arabic, Hebrew, farsi)

Change-Id: Id9af5375fb9b0edeae5232c77e52ecd497bd2e67
2012-07-19 19:21:26 -07:00
Craig Mautner
5702d4dfb5 Notify client side of window movement.
Add a one way method to notify Views that the window has moved
on the screen. Fixes issues arising from the IME popping up and
translating the window that uses it. Accessibility was left unaware
of these movements and was drawing the box around the wrong widgets.
Similarly PopupWindow used getLocationOnScreen to determine how
much screen real estate was above and below the anchor point to
determine where to put an anchored window.

Fixes bug 6623031.

Change-Id: I4731a94d5424c1ec77bf1729fba8fc9ea34cae46
2012-06-30 14:10:16 -07:00
Dianne Hackborn
85afd1b6f8 Implement new window cropping.
The window manager now performs the crop internally, evaluating
it every animation from, to be able to update it along with
the surface position.

Change-Id: I960a2161b9defb6fba4840fa35aee4e411c39b32
2012-05-13 13:31:06 -07:00
satok
c33208fe72 Spell check the first word of the sentence
Change-Id: I7803d92de8f4ea399cef5c2d1ddf5396d59ef2cf
2012-05-07 20:19:18 +09:00
Dianne Hackborn
5c58de3a52 Add system insets to windows.
This will be used to determine which parts of a window a completely
hidden by system UI elements (status bar, nav bar, system bar) so
that they can be clipped out from rendering.

Change-Id: I2c6c6ac67dbdfeed82d2c089ef806fb483165bd9
2012-04-30 12:11:43 -07:00
Jeff Sharkey
eb4cc492c9 Protect system services with DUMP permission.
Change-Id: I5e53859f8b8e5473e54eca43ebd7de841f1a05ff
2012-04-26 18:17:29 -07:00
Jeff Sharkey
35be756030 Move SystemUI out of system UID.
Add permissions for various things it pokes.  Create new permission
to control launching non-exported activities from recents.  Hidden
API to relax WallpaperService checks.

Change-Id: I547fdcd7c213dd153ae101533ce7c56cd8f86a0d
2012-04-19 11:54:34 -07:00
satok
c7ee1b9369 Get rid of "isSentenceLevelSpellCheckSupported"
Bug: 6320351
Change-Id: I0e931b7248f8c65268b60af599c07432d58d2f1f
2012-04-16 20:02:37 +09:00
Daniel Sandler
7d276c377c New Android Dreams architecture, disabled for now.
Rather than normal Activities (which have a host of problems
when used for this purpose), screen savers are now a
special kind of Service that can add views to its own
special window (TYPE_DREAM, in the SCREENSAVER layer).

Dreams are now launched by the power manager; whenever it is
about to turn the screen off, it asks the window manager if
it wants to run a screen saver instead. (http://b/5677408)

Also, the new config_enableDreams bool allows the entire
feature to be switched on or off in one place. It is
currently switched off (and the APIs are all @hidden).

Change-Id: Idfe9d430568471d15f4b463cb70586a899a331f7
2012-04-09 15:33:26 -04:00
satok
431ea84e1f Add document to SpellCheckerService
Bug: 6136149

Change-Id: I93f0127878372006a240a9a34823f873bcc09927
2012-03-29 18:36:23 +09:00
satok
6183cd64a9 Take sentence-level spell checking APIs public
Bug: 6136149

Change-Id: I772164d9c67e95876c228efcce2356a81a06be4f
2012-03-29 18:16:32 +09:00
satok
d404fe1105 Refactor sentence level spell checking APIs
Support sentence level spell checking APIs: Step 1

Change-Id: I31c0b88e7885f33a0694ab60b8f2dbceeffe42f1
2012-02-22 15:35:46 +09:00
Dianne Hackborn
b5052de757 resolved conflicts for merge of a80bab37 to master
Change-Id: Id71cc68a617e1ea0dd2f3932d454be6dba336eef
2011-12-13 16:31:43 -08:00
Dianne Hackborn
33b8ee509f Fix issue #5756204: Crespo IME briefly appears shortened when...
...rotating to landscape

When doing spell checking in the same process as the spell checker, we
need to make sure it is still done asynchronously.

Putting this in I noticed quite a few threading issues in this code, so
I also addressed those (which became very obviously a problem with the
async stuff here now).

Also tweaked the service side to run spell checking at background priority.

Change-Id: I01bafe3bec6bceeca911d6bf2f61a486a2fd4c48
2011-12-13 15:15:33 -08:00
Jeff Brown
32cbc3855c Refactor InputQueue as InputEventReceiver.
This change simplifies the code associated with receiving input
events from input channels and makes it more robust.  It also
does a better job of ensuring that input events are properly
recycled (sometimes we dropped them on the floor).

This change also adds a sequence number to all events, which is
handy for determining whether we are looking at the same event or a
new one, particularly when events are recycled.

Change-Id: I4ebd88f73b5f77f3e150778cd550e7f91956aac2
2011-12-01 21:04:47 -08:00
Jeff Brown
4952dfd16a Ensure input events are processed in-order in the application.
As it turns out, it used to be possible for there to be multiple
input events simultaneously in flight in an application.  Although
it worked, it made it hard to reason about what was going on.
The problem was somewhat exacerbated by the introduction of a
queue of "InputEventMessage" objects as part of an earlier latency
optimization.

This change restores order from chaos and greatly simplifies the
invariants related to input event dispatch within the application.

Change-Id: I6de5fe61c1fe2ac3dd33edf770d949044df8a019
2011-12-01 14:13:48 -08:00
Dianne Hackborn
c0b7f65ae0 am 496f6e2a: am b54980d1: Merge "Fix issue #5588689: Black camera preview after coming back from gmail" into ics-mr1
* commit '496f6e2ad656c5bb8a277e191554d16abd290b58':
  Fix issue #5588689: Black camera preview after coming back from gmail
2011-11-28 16:57:17 -08:00
Dianne Hackborn
6d05fd3c79 Fix issue #5588689: Black camera preview after coming back from gmail
Make surface management between SurfaceView and the window manager
much more controlled, to ensure that SurfaceView always gets to report
the current surface is destroyed before the window manager actually
destroys it.

Also a small tweak to allow windows that have a wallpaper background
to still have a preview window.  This makes launching home after it
has been killed feel much more responsive.

Change-Id: I0d22cf178a499601a770cb1dbadef7487e392d85
2011-11-28 14:45:50 -08:00
satok
0dc1f648a0 add sentence level spell checker hidden apis
Change-Id: If65c89044bed064fd01a554e33176f64f7c21c0f
2011-11-22 09:18:12 +09:00
satok
74061ff904 Fix a memory leak of a Binder in SpellCheckerService
Bug: 5499490

Change-Id: I167a3e9dfdd6edd06c6ad993fbff3a535c81b09c
2011-11-03 01:22:20 +09:00
Chet Haase
a8e5a2bcd6 Optimize handling of scrolled wallpapers
Swiping the home screen causes the WindowManagerService to do
a bunch of work to keep the wallpapers in sync. First, it lays out
and places all windows. Also, it notifies the SystemUI process that
the wallpaper position has changed.

The layout/place operation is too much work - we only need to set
the position values for the wallpaper, not relayout the whole system.

The notification mechanism must exist, but should be optional. Most
wallpapers don't care (especially static ImageWallpapers). So we'll
give them a new API (WallpaperService.Engine.setWantsOffsets()) to
allow wallpapers to opt out of this process and avoid the performance
overhead.

Change-Id: I66c38375438937f14f6f5550565b28eb204b1e06
2011-10-28 14:49:23 -07:00
satok
182e4ae2f4 Add a path to HelloSpellChecker sample application for SDK build
Change-Id: I77e334f8e2b50b8609b1729edb253254d6b7360b
2011-10-28 02:27:53 +09:00
satok
44619d3e08 Update links for SampleSpellCheckerService for I938ba499
Change-Id: I528fc5ee5f9971ecb3bf47ef1c8b999546724c1f
2011-10-19 23:52:03 +09:00
Scott Main
b22723c3f6 docs: add package summary for spell checker services
Change-Id: Iaac3293f941ec117ec28e031d5e24073e1269851
2011-10-18 11:19:44 -07:00
satok
44b7503093 Add documents for the spell checker framework and the input method subtype
Bug: 4973788

Change-Id: I7e650f336ba1bb8949899e8b2355e6d492a2e4b2
2011-10-18 20:28:23 +09:00
Dianne Hackborn
9a230e01a1 Fix issue #5371530: SYSTEMUI_FLAG_HIDE_NAVIGATION reasserts itself immediately
This cleans up how ui flags are managed between the client and window manager.
It still reports the global UI mode state to the callback, but we now only clear
certain flags when the system goes out of a state (currently this just means the
hide nav bar mode), and don't corrupt other flags in the application when the
global state changes.

Also introduces a sequence number between the app and window manager, to avoid
using bad old data coming from the app during these transitions.

Change-Id: I40bbd12d9b7b69fc0ff1c7dc0cb58a933d4dfb23
2011-10-06 14:57:37 -07:00
Dianne Hackborn
9fe6cb5cc2 Fix issue #5273986: The power usage of the mp3 background playback...
...increased from ~50mA to 260mA

Change-Id: I24d7188185f4ec5ff9e1f29c15472ae56c851e5e
2011-09-09 13:02:43 -07:00
satok
117999d1f4 Make the spell checker session static
Change-Id: I66d51f33e005f46465232d3fc460cda0609609ea
2011-09-02 17:55:43 +09:00
Dianne Hackborn
9e4e727b4a Fix issues #5233826 and #5209847 -- live wallpapers.
5233826	when a live wallpaper starts, it does so regardless of its visibility

The WallpaperService is now very forceful about telling a wallpaper it is
not visible when it first starts.

5209847	Make launcher turn off the wallpaper in all apps.

Fix a bug in the window manager that would not correctly handle the wallpaper
flag changing.

Change-Id: Ie3314043a84664be72a1304a1705408efd789a15
2011-08-30 14:56:31 -07:00
Dianne Hackborn
527de8e3de Debugging for issue #5180240: Wallpaper continues to consume CPU when screen off
Add debug dump to the wallpaper service.

Change-Id: I01502b10de93b6f9d2315fd66776f3f2210e6696
2011-08-22 16:21:12 -07:00
satok
5357806980 API cleanup for the spell checker framework
Bug: 5110151

- Add a bundle to an argment of newSpellCheckerSession
- Expose SpellCheckerSessionImpl in SpellCheckerService
- Fix function names
- etc

Change-Id: Ia8ec783b7b4d5fcd18389854b445fc10fc502297
2011-08-04 12:53:56 +09:00
satok
aafd955fa8 Move SpellCheckerSession
SpellCheckerSession should be in android.view.textservice because this class will be used directly by users.

Change-Id: I0df6d7958adda421312b5f641ac4459ca4739cc9
2011-08-02 16:04:39 +09:00
satok
6be6d7548f Handle the existing binds to spell checkers correctly.
Change-Id: I32efce9f8c09b5a829b0431e8c444fc54b03b440
2011-07-29 09:57:07 +09:00
satok
142d7575b5 [step4] Change service interface
Change-Id: Iaf86065a2a7f075c670ebdaa60a33a815dcb8113
2011-07-25 11:01:49 +09:00
satok
1bedd99761 Tweak APIs for SpellChecker
1. Move getSupellcheckerInfo to SpellCheckerSession
2. Change the interface of getSpellCheckerSession
3. Remove a flag in SuggestionsInfo

Change-Id: I3debe09e213fc0ab74618eb3504383f2a9447fd9
2011-07-23 14:56:04 +09:00
satok
988323c57b Create TextServiceManager and SpellCheckerService
Bug: 4176026

This CL inherits https://android-git.corp.google.com/g/112600

Spec of TextServiceManager
- Chooses the most applicable TextService(e.g. SpellCheckerService, WordBreakIteratorService..)
    for each locale

Spec of SpellCheckerService
- Returns whether the given string is a correct word or not
- Returns Suggestions for the given string

Change-Id: Iaa425c7915fe70767ad0b17bf6c6fbcd2a1200b2
2011-07-22 14:52:21 +09:00
Dianne Hackborn
6dd005b481 I. Can. Not. Stand. ViewAncestor.
It was done so we would have the name "ViewRoot" available for a
public API.  However, the name "ViewAncestor" just makes no sense.
So instead, change it to ViewRootImpl.

Change-Id: If9599ca67896f339f6fefa7d1dde121201171d97
2011-07-18 16:16:23 -07:00
Jeff Brown
2457237532 Optimize orientation changes.
Modified setRotation to allow it to restart a rotation in
progress as long as the rotation animation has not yet started.
This enables the system to recover more quickly from mispredicted
orientation changes.

Removed the call to System.gc() when freezing the display, which
added 60-80ms before we even started the orientation change.
We used to need this to make it less likely that an upcoming GC
would cause a pause during the window animation, but this is
not longer a concern with the concurrent GC in place.

Changed the wallpaper surface to be 32bit.  This accelerates
drawing and improves the overall appearance slightly.

Reduced code duplication in the WallpaperManager.

Change-Id: Ic6e5e8bdce4b970b11badddd0355baaed40df88a
2011-06-10 18:13:30 -07:00