History log of /frameworks/base/services/java/com/android/server/wm/DisplayContent.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
2c2549c5f44b712dbbf66a69d91f07d6f5336ee6 12-Nov-2013 Craig Mautner <cmautner@google.com> Add event logging for tasks and stacks.

Also remove crufty write-only DisplayContent.mStackHistory.

Change-Id: I62b2b53dc02377c5d0d3b79df70b1990eed87d23
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
77df2ee9deb5635fabb2280ada5b3f3d01dd8e1b 24-Oct-2013 Craig Mautner <cmautner@google.com> Track window position with task position.

Windows were previously ordered by TaskStack/ActivityStack order. This
change provides a data structure in DisplayContent that tracks task
movement. Previously Recents and Home activity windows were always
adjacent because they were on the same stack. With this change windows
from other activities can be placed between the two.

Fixes bug 11338594.

Change-Id: Ie34443ff22f330d015141d97db79370c54920d28
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
e2dd83a5b428df5a6ef21c11e71d021c640d843f 08-Oct-2013 Craig Mautner <cmautner@google.com> Yet more debugging for 10858941.

Change-Id: I258957044cb1a8331124f6abbe53428429c33355
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
5ee6d19fd726d1196297a0c549587cb2e18e9cfe 29-Sep-2013 Craig Mautner <cmautner@google.com> Ensure correct window ordering.

Make sure that moveStackWindowsLocked() is called every time that the
stack ordering changes. This will rebuild the window list. Previously
the call was being made after the moveStack() call which got forgotten
in the addAppToken() causing the home stack to obscure incoming phone
and video calls.

Fixes bug 10023223.
Fixes bug 10678010.
Maybe fixes bug 10858941.

Change-Id: I59922dc979a19210008eac1f528704984c63c886
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
2eb15342be5b075dda3df29b2b014a92ce13a5f8 07-Aug-2013 Craig Mautner <cmautner@google.com> Destroy surfaces when display is removed.

Fixes bug 10226153.

Change-Id: I4eb8b14258985768d36745260ad4e62ba6c78844
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
9d808b1f4823879ce8b52aefb90c55346017cdc7 07-Aug-2013 Craig Mautner <cmautner@google.com> Add home StackBox to all DisplayContent.

Each display needs a stack and a stack box to contain windows.

Fixes bug 10161525.

Change-Id: Ic617cdf5a082ae68f0589e826ecbb37d8fba52ac
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
46ac6fa614131d567bed93d1d2067d765ecef85d 01-Aug-2013 Craig Mautner <cmautner@google.com> Add force default orientation.

Devices can be configured to remain in their default landscape or
portrait orientation by setting config_forceDefaultOrientation true
in overlay/.../values/config.xml.

Activities that desire to run in the non-default orientation are
supported by creating a logical display within the physical display.
Transitions to and from the activity perform a crossfade rather than
the normal rotation animation.

Also, improve SurfaceTrace debug output.

Fixes bug 9695710.

Change-Id: I053e136cd2b9ae200028595f245b6ada5927cfe9
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
ac6f843c917b68ea8805711965b149a9338e3a0e 17-Jul-2013 Craig Mautner <cmautner@google.com> Fix home activity and user switch interactions.

- Make sure Home activity goes in the correct task and on the correct
stack.
- Do not allow different users to be in the same task.
- Do not set stacks aside for each user.

Fixes bug 9775492.

Change-Id: I0e7954e917aac8482a1015a36923e02914e2b692
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
a446bf0e8c7b5f5441aeb11b359ba6776b9b3061 22-Jun-2013 keunyoung <keunyoung@google.com> add TYPE_PRIVATE_PRESENTATION window type

- This window type can be used for Presentation created on top of virtual
private display.
- There can be PRIVATE_PRESENTATION specific policy / behavior, but for now,
there is nothing special.

Change-Id: I9fde0f0376e57fcc60000d3a3f8657a21ef58993
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
a506a6ec94863a35acca9feb165db76ddac3892c 04-Jun-2013 Jeff Brown <jeffbrown@google.com> Add an API to allow for creating private virtual displays.

This change enables applications to create a private virtual
display that renders its content to a surface of its own creation.
The display is private in the sense that only the application
that owns the display is allowed to place windows upon it.
Mirroring and blanking is also disabled for these displays.

Bug: 9192512
Change-Id: I852ea07f0c7df1d244e354e3daca3a6960285ca0
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
037aa8d434984840691378f3cc7d99d63dcc4076 07-Jun-2013 Craig Mautner <cmautner@google.com> Centralize all system InputEventReceiver monitors.

Implement all system level InputEvent monitors as new
InputEventListeners. Only one InputChannel required and monitoring
can be enabled or disabled by registering with WindowManagerService.

Change-Id: I64714ab858342ed183c62b421098478ffb6637bc
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
d76dcdcd98f1010b9439746314629cf7cba4df89 06-Jun-2013 Craig Mautner <cmautner@google.com> Make WindowState mUnderStatusBar reflect position.

The mUnderStatusBar variable was always true but now it changes
when the StackBox is no longer directly under the Status Bar.

Change-Id: I0c9db5790bfa9b0e4bb35e389d539fd941d56730
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
5a449154d1795abe8e44b7bfe821d640b145e2c6 25-May-2013 Craig Mautner <cmautner@google.com> Convert API refs to StackBox from ActivityStack.

- Removed IActivityManager.getStacks() since getStackBoxes() is better.
- Made createStacks operate relative to StackBox instead of TaskStack.
- Made resizeStack into resizeStackBox.

Change-Id: I7a0e1f4e34f399b4fd1180c60cc3989f9c2433f3
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
5ff12101722874f5e7b0cadf06f4c53f4ec4b917 24-May-2013 Craig Mautner <cmautner@google.com> Add retrieval of StackBox info for more flexibility

First step in permitting StackBoxes to be manipulated by user.
Necessary for Configuration changes coming down.

Change-Id: I4029926a35e4fdc59a5759fd9e4bae10bb308413
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
b3b36ba13895d779159799341d432f6380a0ba8a 20-May-2013 Craig Mautner <cmautner@google.com> Resize all changed windows and fix moveTaskToStack

- Add all changing windows to mResizingWindows when an ActivityStack
is resized.

- Stop calling TaskStack.setBounds if the bounds haven't changed.

- Make moving a task from one stack to another work properly.

- Eliminate unused methods and redundant variables in WindowState and
WindowStateAnimator.

Change-Id: I3a950c777bcc50cdeced150d44423d4d0b38af4a
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
05d290365f0b9ed781ffcb30b38a0c7c6e450e9d 03-May-2013 Craig Mautner <cmautner@google.com> Fix layering and launching issues.

- Replace calls to ActivityStack.resumeTopActivity() with calls to
ActivityStackSupervisor.resumeTopActivities().

- Move dim layers from display scope to stack scope. This applies to
both the animation background dim layer and the FLAG_DIM_BEHIND dim
layer.

- Move windows on stacks that are not targeting wallpaper above the
wallpaper. Otherwise wallpaper placement hides the non-focused stacks.

Change-Id: Ic6b97ac6b094672bb1ddac17ce46ea58c738f073
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
6601b7bdeb46756fd83ad4c1966ef966c52b46e4 29-Apr-2013 Craig Mautner <cmautner@google.com> Exclude regions from the tap detector.

Fix typing on the keyboard causing focus to shift stacks.

Change-Id: I4ec9ccdbe35e27f4860a5bdf0e2818f58e53b873
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
858d8a6583b0c91c66960167b84c67b6c4e2d3c6 24-Apr-2013 Craig Mautner <cmautner@google.com> Fix user switching.

- Save and restore WindowManager stack states.
- Maintain ActivityManager activity states based on the stack
the activity is in.

Fixes bug 8646641.

Change-Id: I16c76c7708ab49121c3884a7e5bf219898b92d3f
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
cf910b0c714b2ca90ea0013e5695850506a1d36f 23-Apr-2013 Craig Mautner <cmautner@google.com> Add tap detector for switching stack focus.

- New InputEventReceiver for detecting taps outside of focused stack
boundaries.
- Fixed bug that wasn't pausing the non-focused window when returning
home.

Change-Id: Ia51d312a7c029abc01eb5df1102814cc29d33b47
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
4cd0c13f8f765118a24e31548c058b5029481bea 17-Apr-2013 Craig Mautner <cmautner@google.com> Incremental repairs to side by side stacks.

- Add taskId parameter to createStack() so stacks are pre-populated
with a task.
- Keep track of stack access order in DisplayContent so getTasks
returns in MRU order.
- Set touchableRegion in InputMonitor so modal touching does not
extend beyond stack boundary.
- Fix stack merging so that deleting a stack results in a new
stack the size of the two children.

Change-Id: I62a6ba0a34f34dd7ec866b440bf04595379e19e8
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
967212cb542e6eeb308678367b53381bff984c31 14-Apr-2013 Craig Mautner <cmautner@google.com> Implement stack splitting and task movement.

Split stacks and move tasks between them. Layout the windows
according to the new stack split.

After layout content rectangles are known split the available area
between all stack boxes. Then use those values for future layout.

Provide stack contents to ActivityManager.

Change-Id: I9746e6185445633810d506be514d0b7b540a7f99
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
de4ef020ec5c3acdc90c4ba43011dda20d98d4dd 08-Apr-2013 Craig Mautner <cmautner@google.com> Implement separate stacks.

One for home activity(s), one for other activities. Coordination
between the stacks is handled by the ActivityStackSupervisor.

Change-Id: I11395edea501d2f84a18a6a8bced1ce3d0797dad
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
d5d5d0f4b8c75c9ed4fea320b4f31740b88dd37e 04-Apr-2013 Craig Mautner <cmautner@google.com> Prepare WindowManager for multiple stacks.

Create concept of home stack. When moving a new task to the top
move the home stack back.

Change-Id: I2e352722da0c4785b19227713bc30c0850d187b1
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
9e4f28cfa157fff89e42859edc9cce546508491f 03-Apr-2013 Craig Mautner <cmautner@google.com> Separate stacks into Home and others.

Change-Id: I9434ee6cd9e8a8baf24d4e4ee5a15e99cf11f227
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
00af9fe6ae0da5b716212fa754163d90b60c1ee6 25-Mar-2013 Craig Mautner <cmautner@google.com> Modify StackBox and TaskStack methods.

Also add dump() throughout.

Change-Id: I5369d2e71262645d9b1015bd4e72fad395cc7547
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
d9a22881fda77e208f54f893a804d0001d27a27e 16-Mar-2013 Craig Mautner <cmautner@google.com> Complete removal of Task from DisplayContent.

Moved Tasks into TaskStacks.

Change-Id: I3478dab4eab3a68d4d71a7a5bb2e65ba2394f2d7
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
c00204b4d14d49a0417b44ca21aee4f0d4c466e0 06-Mar-2013 Craig Mautner <cmautner@google.com> Start moving Tasks from DisplayContent to TaskStack

- Create new classes for Stacks on WindowManager.
- Stop using DisplayContent methods and members:
addAppToken(),
removeAppToken(),
setAppTaskId(),
removeTask(),
mTaskIdToDisplayContents,
mTaskIdToTask.
- Start using WindowManagerService.createTask().
- Establish hierarchy of references: AppWindowToken=>Task=>
TaskStack=>StackBox=>DisplayContent.
- Clean up StackBox, TaskStack, and Task.

Change-Id: I798990aa7966784d22f4a43822087d8bb0404dd6
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
f81b908752365fda62a6158bfe7d1559b0d52cdd 26-Feb-2013 Craig Mautner <cmautner@google.com> Remove AppTokenIterator from DisplayContent.

Simplify accessing successive AppWindowTokens from different
TaskLists.

Change-Id: Icf6265dd6c7953c9c770c97e1342f0f81256c017
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
11bf9a52eb9fb02a8c553a1cb1d71725f9706dad 19-Feb-2013 Craig Mautner <cmautner@google.com> Switch topRunning* and moveTaskTo*

- More of the Activity to Task changeover.
- Fix bug in validateAppTokens().
- Improved validation of changeover.
- Eliminated iterator classes.

Change-Id: I934a208eabfc9a2668e5a6162452e1406f2c8d3a
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
5d9c7be84d9628c1cf199fcf9015942835c4671b 15-Feb-2013 Craig Mautner <cmautner@google.com> Begin switch over to task based history.

- Introduce the task history and add to and remove from it with
verification.

Change-Id: If97e74f5a13f85acdb1521fc6d0b066a7e8584ae
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
c652de8141f5b8e3c6bcf8916842b6e106413b1a 16-Feb-2013 Dianne Hackborn <hackbod@google.com> Implement display overscan support.

The window manager now keeps track of the overscan of
each display, with an API to set it. The overscan impacts
how it positions windows in the display. There is a new set
of APIs for windows to say they would like to go into the
overscan region. There is a call into the window manager to
set the overscan region for a display, and it now has a
concept of display settings that it stores presistently.

Also added a new "wm" command, moving the window manager
specific commands from the "am" command to there and adding
a new now to set the overscan region.

Change-Id: Id2c8092db64fd0a982274fedac7658d82f30f9ff
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
343ad71d7cb4934751a91006677266bd73ed224c 14-Feb-2013 Craig Mautner <cmautner@google.com> Reset and reuse Iterators and don't new() one.

Save time and memory by resuing permanent mTmpXxxIterator for
AllWindowsIterator and AppTokenIterator.

Change-Id: I2e5143364651d9471e9e70eee514d3f45d595468
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
496bdbba30a113baaec61d4d0c011461cf5ee36d 14-Feb-2013 Craig Mautner <cmautner@google.com> Remove AppWindowToken lists.

No longer necessary.

Change-Id: I0d2b96f69152fb93b6ba56f02ce9693ff1370cbc
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
b0c0b1fd70e3edeb724e2b2fb2c7063eb943f05e 14-Feb-2013 Craig Mautner <cmautner@google.com> Remove unused App methods.

Now that the Task methods have replaced the App methods remove
the App methods.

Change-Id: I0e7432f2c6f99708759ed8c871d20eb5bd38c3c2
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
926f3839d81e4b6b60238e38350bec7cb6d0269e 13-Feb-2013 Craig Mautner <cmautner@google.com> Stop using AppToken movement and start using Task.

Change-Id: I5fbd3b2b692e0e127386051f782b1015515ba384
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
30e2d72810e699d7a61277b7ba1b6cace26b84aa 12-Feb-2013 Craig Mautner <cmautner@google.com> Replace access to mAppTokens with AppTokenIterator

More switching from Activity-based to Task-based control.

Change-Id: Ida47d71a52b875a6a6bd77cb62911053f942da15
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
05d6272bad2d707b488a6f8784ce8aea5e25b110 11-Feb-2013 Craig Mautner <cmautner@google.com> Add AppWindowTokens to TaskList.

- Add/remove/move TaskLists from ActivityStack.
- Further isolate mHistory.
- Cleanup warnings by parameterizing ArrayList.
- Fix previous bugs.

Change-Id: Ife8c7b7347479c70f10467cc384283456149ac50
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
b1fd65c0ff5784b90d765edb7e3c3115d767dff0 05-Feb-2013 Craig Mautner <cmautner@google.com> Migrate AppWindowToken lists into DisplayContent.

In preparation for converting ActivityManager control to a task-based
interface the AppWindowTokens are being stored per-display.

Change-Id: Ie5e355219554523f5e56eaef138d382975cf1682
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
152e9bb81aa5b2ab4637f4b2dae04b3ce89fa891 13-Oct-2012 Svetoslav Ganov <svetoslavganov@google.com> Refactoring of the screen magnification feature.

1. The screen magnification feature was implemented entirely as a part of the accessibility
manager. To achieve that the window manager had to implement a bunch of hooks for an
external client to observe its internal state. This was problematic since it dilutes
the window manager interface and allows code that is deeply coupled with the window
manager to reside outside of it. Also the observer callbacks were IPCs which cannot
be called with the window manager's lock held. To avoid that the window manager had
to post messages requesting notification of interested parties which makes the code
consuming the callbacks to run asynchronously of the window manager. This causes timing
issues and adds unnecessary complexity.

Now the magnification logic is split in two halves. The first half that is responsible
to track the magnified portion of the screen and serve as a policy which windows can be
magnified and it is a part of the window manager. This part exposes higher level APIs
allowing interested parties with the right permissions to control the magnification
of a given display. The APIs also allow a client to be registered for callbacks on
interesting changes such as resize of the magnified region, etc. This part servers
as a mediator between magnification controllers and the window manager.

The second half is a controller that is responsible to drive the magnification
state based on touch interactions. It also presents a highlight when magnified to
suggest the magnified potion of the screen. The controller is responsible for auto
zooming out in case the user context changes - rotation, new actitivity. The controller
also auto pans if a dialog appears and it does not interesect the magnified frame.

bug:7410464

2. By design screen magnification and touch exploration work separately and together. If
magnification is enabled the user sees a larger version of the widgets and a sub section
of the screen content. Accessibility services use the introspection APIs to "see" what
is on the screen so they can speak it, navigate to the next item in response to a
gesture, etc. Hence, the information returned to accessibility services has to reflect
what a sighted user would see on the screen. Therefore, if the screen is magnified
we need to adjust the bounds and position of the infos describing views in a magnified
window such that the info bounds are equivalent to what the user sees.

To improve performance we keep accessibility node info caches in the client process.
However, when magnification state changes we have to clear these caches since the
bounds of the cached infos no longer reflect the screen content which just got smaller
or larger.

This patch propagates not only the window scale as before but also the X/Y pan and the
bounds of the magnified portion of the screen to the introspected app. This information
is used to adjust the bounds of the node infos coming from this window such that the
reported bounds are the same as the user sees not as the app thinks they are. Note that
if magnification is enabled we zoom the content and pan it along the X and Y axis. Also
recomputed is the isVisibleToUser property of the reported info since in a magnified
state the user sees a subset of the window content and the views not in the magnified
viewport should be reported as not visible to the user.

bug:7344059

Change-Id: I6f7832c7a6a65c5368b390eb1f1518d0c7afd7d2
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
2d5618c22101cfc4d6478cfe1d846798389540c1 18-Oct-2012 Craig Mautner <cmautner@google.com> Allow getDisplayContentLocked to return null...

... and check for null returns. This prevents DisplayContent objects
from containing null Display references.

Bug: 7368565 fixed.
Change-Id: I830fb4c1349204c366193657a95a92c48ccee66c
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
a91f9e2959ee905f97977a88fe45bde6ffb874b0 15-Sep-2012 Craig Mautner <cmautner@google.com> Make more items per-Display.

Moving DimSurfaces, DimBackgrounds and Rotation surfaces into
per-display class.

Fixes bug 7167028.

Change-Id: I7408b3a27b5a7a8d0d59e9d6109c002fc627e536
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
5b329e8501486037dd30a5068d96131185893db6 14-Sep-2012 Dianne Hackborn <hackbod@google.com> Fix debug log.

Change-Id: If65abf43ee7a455b12d49b5800657dbf4489e5b9
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
722285e199a9fc74b9b3343b7505c00666848c88 07-Sep-2012 Craig Mautner <cmautner@google.com> Make mirroring automatic based on Windows on display.

Tell the display manager whenever a given logical display
contains interesting windows. If so, then the display
manager arranges to show that content on a physical display,
otherwise it ignores the logical display and makes its
associated primary physical display mirror the default
display.

Assign DisplayContents when Displays are added, remove them when
Displays are removed, and update the DisplayInfo when Displays
change.

Change-Id: I36e08ec538055acabe1e24cdd12c40de4e47a158
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
1cf70bbf96930662cab0e699d70b62865766ff52 06-Aug-2012 Svetoslav Ganov <svetoslavganov@google.com> Screen magnification - feature - framework.

This change is the initial check in of the screen magnification
feature. This feature enables magnification of the screen via
global gestures (assuming it has been enabled from settings)
to allow a low vision user to efficiently use an Android device.

Interaction model:

1. Triple tap toggles permanent screen magnification which is magnifying
the area around the location of the triple tap. One can think of the
location of the triple tap as the center of the magnified viewport.
For example, a triple tap when not magnified would magnify the screen
and leave it in a magnified state. A triple tapping when magnified would
clear magnification and leave the screen in a not magnified state.

2. Triple tap and hold would magnify the screen if not magnified and enable
viewport dragging mode until the finger goes up. One can think of this
mode as a way to move the magnified viewport since the area around the
moving finger will be magnified to fit the screen. For example, if the
screen was not magnified and the user triple taps and holds the screen
would magnify and the viewport will follow the user's finger. When the
finger goes up the screen will clear zoom out. If the same user interaction
is performed when the screen is magnified, the viewport movement will
be the same but when the finger goes up the screen will stay magnified.
In other words, the initial magnified state is sticky.

3. Pinching with any number of additional fingers when viewport dragging
is enabled, i.e. the user triple tapped and holds, would adjust the
magnification scale which will become the current default magnification
scale. The next time the user magnifies the same magnification scale
would be used.

4. When in a permanent magnified state the user can use two or more fingers
to pan the viewport. Note that in this mode the content is panned as
opposed to the viewport dragging mode in which the viewport is moved.

5. When in a permanent magnified state the user can use three or more
fingers to change the magnification scale which will become the current
default magnification scale. The next time the user magnifies the same
magnification scale would be used.

6. The magnification scale will be persisted in settings and in the cloud.

Note: Since two fingers are used to pan the content in a permanently magnified
state no other two finger gestures in touch exploration or applications
will work unless the uses zooms out to normal state where all gestures
works as expected. This is an intentional tradeoff to allow efficient
panning since in a permanently magnified state this would be the dominant
action to be performed.

Design:

1. The window manager exposes APIs for setting accessibility transformation
which is a scale and offsets for X and Y axis. The window manager queries
the window policy for which windows will not be magnified. For example,
the IME windows and the navigation bar are not magnified including windows
that are attached to them.

2. The accessibility features such a screen magnification and touch
exploration are now impemented as a sequence of transformations on the
event stream. The accessibility manager service may request each
of these features or both. The behavior of the features is not changed
based on the fact that another one is enabled.

3. The screen magnifier keeps a viewport of the content that is magnified
which is surrounded by a glow in a magnified state. Interactions outside
of the viewport are delegated directly to the application without
interpretation. For example, a triple tap on the letter 'a' of the IME
would type three letters instead of toggling magnified state. The viewport
is updated on screen rotation and on window transitions. For example,
when the IME pops up the viewport shrinks.

4. The glow around the viewport is implemented as a special type of window
that does not take input focus, cannot be touched, is laid out in the
screen coordiates with width and height matching these of the screen.
When the magnified region changes the root view of the window draws the
hightlight but the size of the window does not change - unless a rotation
happens. All changes in the viewport size or showing or hiding it are
animated.

5. The viewport is encapsulated in a class that knows how to show,
hide, and resize the viewport - potentially animating that.
This class uses the new animation framework for animations.

6. The magnification is handled by a magnification controller that
keeps track of the current trnasformation to be applied to the screen
content and the desired such. If these two are not the same it is
responsibility of the magnification controller to reconcile them by
potentially animating the transition from one to the other.

7. A dipslay content observer wathces for winodw transitions, screen
rotations, and when a rectange on the screen has been reqeusted. This
class is responsible for handling interesting state changes such
as changing the viewport bounds on IME pop up or screen rotation,
panning the content to make a requested rectangle visible on the
screen, etc.

8. To implement viewport updates the window manger was updated with APIs
to watch for window transitions and when a rectangle has been requested
on the screen. These APIs are protected by a signature level permission.
Also a parcelable and poolable window info class has been added with
APIs for getting the window info given the window token. This enables
getting some useful information about a window. There APIs are also
signature protected.

bug:6795382

Change-Id: Iec93da8bf6376beebbd4f5167ab7723dc7d9bd00
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
69b0818179201fadc9d2a384d692d8ae4aecd85c 05-Sep-2012 Craig Mautner <cmautner@google.com> Limit certain actions to default Display.

Stop messing up PhoneWindowManager state when passing in windows
from non-default Display.

Change-Id: I472f7a13c5e2241fbf1f79ae1c8045fd92af016c
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
76a7165719dc3ccce902953f6244e2c2668aa753 04-Sep-2012 Craig Mautner <cmautner@google.com> Change layout inner loop order for multi display.

The inner loop that ran over each display had a few problems:
- The Surface transaction was starting and stopping between each
display.
- The layout change bits were being applied globally so all
displays were layed out when only individual displays needed to be.
- Wallpaper and input actions were being applied each time through
the display loop rather than once only for the default display.

Change-Id: I924252bab28c426222a4bb73693accc4b21cecbe
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
398341927f3dca68d71024483aa276d10af4c080 02-Sep-2012 Craig Mautner <cmautner@google.com> Minor refactors.

- Refactor DragState to take Display instead of DisplayContent.
- Rename xxxAnimationLw methods in WindowManagerPolicy to xxxPostLayout
to reflect animation refactoring.

Change-Id: I502f2aa45a699ad395a249a12abf9843294623f0
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
b47bbc3d80badb94229bc4ce7a2d5006faa9ef15 23-Aug-2012 Craig Mautner <cmautner@google.com> Clean up displayId and layerStack usage.

Make better use of Display object by saving it in DisplayContent.
Only use layerStack when referring to Surfaces. Get displayId from
default Display or default DisplayContent. Remove warnings.

Fixes bug 7038151.

Change-Id: Ie493f0f5e755dc9b91ee969ff561c2a098283ead
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
dde331cebd87982faded6818ad5f9927ff994c96 03-Aug-2012 Dianne Hackborn <hackbod@google.com> We can now (kind-of) change screen density on the fly.

Preloaded drawables now have a density associated with them, so we
can load the correct drawable if we are using a different density.

Window manager now formally keeps track of the density for each
screen, allowing it to be overridden like you can already do with
size, and relies on this density to drive itself internally and
the configurations it reports.

There are a new set of Bitmap constructors where you provide a
DisplayMetrics so they can be constructed with the correct density.
(This will be for when you can have different windows in the same
app running at different densities.)

ActivityThread now watches for density changes, and pushes them
to the DENSITY_DEVICE and Bitmap global density values for that
process.

A new am command allows you to change the density.
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
4f67ba6ba4e861b287a3ff0323c107aa77f66264 02-Aug-2012 Craig Mautner <cmautner@google.com> Refactor DisplayManagerService to be functional.

Change-Id: Ieac1eca172be5dc5db45302d3afa26188acd4d6d
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java
59c009776dae5ccbdfb93d7151ff2065ca049dc3 30-Jul-2012 Craig Mautner <cmautner@google.com> Introduce multiple displays with DisplayContent.

Fix a couple of bugs that turned up.
Remove touch/focus from display. Add iterators for access.
Respond to comments. Remove TODOs, and some deviceId parameters.

Change-Id: Idcdb4f1979aa7b14634d450fd0333d6eff26994d
/frameworks/base/services/java/com/android/server/wm/DisplayContent.java