First step of improving app screen size compatibility mode. When
running in compat mode, an application's windows are scaled up on
the screen rather than being small with 1:1 pixels.
Currently we scale the application to fill the entire screen, so
don't use an even pixel scaling. Though this may have some
negative impact on the appearance (it looks okay to me), it has a
big benefit of allowing us to now treat these apps as normal
full-screens apps and do the normal transition animations as you
move in and out and around in them.
This introduces fun stuff in the input system to take care of
modifying pointer coordinates to account for the app window
surface scaling. The input dispatcher is told about the scale
that is being applied to each window and, when there is one,
adjusts pointer events appropriately as they are being sent
to the transport.
Also modified is CompatibilityInfo, which has been greatly
simplified to not be so insane and incomprehendible. It is
now simple -- when constructed it determines if the given app
is compatible with the current screen size and density, and
that is that.
There are new APIs on ActivityManagerService to put applications
that we would traditionally consider compatible with larger screens
in compatibility mode. This is the start of a facility to have
a UI affordance for a user to switch apps in and out of
compatibility.
To test switching of modes, there is a new variation of the "am"
command to do this: am screen-compat [on|off] [package]
This mode switching has the fundamentals of restarting activities
when it is changed, though the state still needs to be persisted
and the overall mode switch cleaned up.
For the few small apps I have tested, things mostly seem to be
working well. I know of one problem with the text selection
handles being drawn at the wrong position because at some point
the window offset is being scaled incorrectly. There are
probably other similar issues around the interaction between
two windows because the different window coordinate spaces are
done in a hacky way instead of being formally integrated into
the window manager layout process.
Change-Id: Ie038e3746b448135117bd860859d74e360938557
* commit '44e39d608cfddcbf56123480123822f26f20f259':
DO NOT MERGE Handle GET_POWER failures
DO NOT MERGE: Don't send pause again when coming back from full screen
DO NOT MERGE MediaScanner: Add special casing of WMP album art files to isNoMediaPath()
DO NOT MERGE MediaScanner: Fix bug in "no media" handling logic
DO NOT MERGE MTP: Implement GetThumb command
DO NOT MERGE MTP: Fix file descriptor leak in file editing extensions
DO NOT MERGE MTP: Add extended operations to support in-place editing of files
DO NOT MERGE MediaScanner: reimplement the ".nomedia" feature for hiding files from the media provider
DO NOT MERGE Fix media scanner uri handling.
DO NOT MERGE Revert "Remove permission android.permission.WRITE_MEDIA_STORAGE"
DO NOT MERGE MTP and media provider support for multiple storage devices:
DO NOT MERGE MountService: Fix running media scanner at boot.
DO NOT MERGE Fix deadlock in MountService
DO NOT MERGE StorageManager: Add getVolumeList() and getVolumeState() methods
DO NOT MERGE MountService: Add support for multiple volumes
This column doesn't actually exist in the corresponding table, and
never has, so the presence of this definition is confusing.
Change-Id: I199f9a8effbdc9f45d51060830e3ad83675a0dff
Add a method on ViewGroup to determine whether it supports scrolling.
This allows us to show the pressed feedback immediately in many cases,
improving responsiveness of buttons, etc.
This patch also lengthens the timeout in order to reduce flashes
when the user is scrolling.
Change-Id: Ieb91ae7a1f8e8f7e87448f2a730381a53947996f
When we enter full screen, the inline video has been paused.
When we re-play in the inline mode, we don't need to paused the previous video,
which is the full screen one.
bug:4259109
Change-Id: I577edf43563116b0d1a9266d741e6a8aabbca779
Clicking on a node in hierarchyviewer1 and hierarchyviewer2 and then
clicking the new "Dump DisplayList" button will cause the display
list for the selected node (including its children) to be output into
logcat.
Change-Id: Iad05f5f6cca0f8b465dccd962b501dc18fe6e053
All public WebView methods should be called on the UI thread. This
change adds a check to all public non-inherited methods, other than
those that have always been hidden.
Bug: 4373919
Change-Id: I573fc704faa58287a7b14a971958fa5417855d70
Clicking on a node in hierarchyviewer1 and hierarchyviewer2 and then
clicking the new "Dump DisplayList" button will cause the display
list for the selected node (including its children) to be output into
logcat.
Change-Id: Id32f62569ad1ab4d533bc62987f3a7390c1bb4e6
Introduce NetworkStats which is a collection of network statistics,
which should match the structure communicated by kernel module through
netd. Will introduce tags and fg/bg stats later. Kept entirely in a
flat data structure to optimize parcel speed.
Initial pass at returning NetworkStats from NetworkManagementService,
both summary and details. Will eventually pull data from kernel module
over netd connection.
Change-Id: I92d9f61678ec8c22e2ce26775fb035a0cf32413f
SuggestionSpans should have a limited, well defined life-span.
Saving these in onSaveInstanceState is inappropriate since these can
be very large and will not necessarily be saved/loaded by the application.
Keeping them in the application when it is dismissed is not consistent
since they may be garbage collected while the application is not active.
Change-Id: Icebf6cb0218528f9d162a689ad33efeb770fbede