Commit Graph

8394 Commits

Author SHA1 Message Date
Yohei Yukawa
359acdee5f Merge \"Revert \"Remove InputContentInfo#requestPermission()\"\" into nyc-mr1-dev
am: 8acb1a7570

Change-Id: If7fab0527a3d4f671985a663fc6aaf808d527ace
2016-06-30 19:37:35 +00:00
Yohei Yukawa
79d1c75a3f Revert "Remove InputContentInfo#requestPermission()"
This reverts commit c4b8f36de5.

Having InputContentInfo#requestPermission() should not hurt developers,
but we can polish the behavior in a subsequent CL without changing
the API.

Bug: 29450031
Bug: 29892936
Change-Id: I1b43c19417b643d0c269af860db2d309b73a90d5
2016-06-30 19:24:43 +00:00
Yohei Yukawa
854e6f8501 Merge \"Remove InputContentInfo#requestPermission()\" into nyc-mr1-dev
am: c80c64a97b

Change-Id: Iaaf2b610852510e604c482568c0ef1dc6495e179
2016-06-30 18:35:39 +00:00
Yohei Yukawa
c4b8f36de5 Remove InputContentInfo#requestPermission()
It turns out that requiring editor authors to call
InputContentInfo#requestPermission() as needed is just confusing and can
cause compatibility issues, because if an editor author forgot to call
that method then there would be no way for IME developers to prevent
permission denial except for relaxing the default permission of the
ContentProvider just because of such an application. This is not what we
want to see.

My conclusion is that the system should automatically call
InputContentInfo#requestPermission() (or do any equivalent operation)
when InputConnection#INPUT_CONTENT_GRANT_READ_URI_PERMISSION is
specified, like we have done in Context#startActivity().

With this CL, the system automatically grants a temporary URI permission
to the target application when the IME calls
InputConnection#commitContent() with
InputConnection#INPUT_CONTENT_GRANT_READ_URI_PERMISSION, and the
temporary permission will be revoked by any of the following events:
 - InputContentInfo#releasePermission() is explicitly called by the
   target application.
 - The target application returned false in
   InputConnection#commitContent().
 - All the InputContentInfo instances copied from the original one are
   GC-ed.

Bug: 29450031
Bug: 29892936
Change-Id: I37fb744e4d3d1c59177fb0a9be4ef5c325c9a39f
2016-06-30 09:32:54 -07:00
Yohei Yukawa
badcecb2aa Merge \"Use a flag to grant a temporary URI permission.\" into nyc-mr1-dev
am: cb56978912

Change-Id: I20e1481c6f68a5af4f33e699f5bc505b3a4c1457
2016-06-27 20:30:49 +00:00
Yohei Yukawa
cb56978912 Merge "Use a flag to grant a temporary URI permission." into nyc-mr1-dev 2016-06-27 20:18:51 +00:00
John Reck
bffa989d28 Merge \\"Add missing null checks\\" into nyc-dev am: 02e391585d
am: 0fc8707e2d

Change-Id: I9b8122c0a67be36b00cae06ce543a9de7aca8d40
2016-06-27 17:12:05 +00:00
John Reck
0fc8707e2d Merge \"Add missing null checks\" into nyc-dev
am: 02e391585d

Change-Id: Idcba5c8393609034b70382844d499b45759b5e6d
2016-06-27 17:06:24 +00:00
John Reck
474659ccc4 Add missing null checks
Bug: 29743482
Change-Id: Ic4bc5b9d5718eabd41e09a108a765b01aef4e3c8
2016-06-27 07:56:37 -07:00
TreeHugger Robot
34ccbe035a Merge "Update DisplayMetrics when resizing" into nyc-dev 2016-06-24 23:35:13 +00:00
Adam Powell
9a327642df Merge \\"Fix layout issue after insets changed\\" into nyc-dev am: 119f1715b3
am: 242a44395e

Change-Id: Iab3e11ed6346ed538f3206faa32d15e6e227efef
2016-06-24 23:33:11 +00:00
Adam Powell
c43c9e052e Merge \"Fix layout issue after insets changed\" into nyc-dev
am: 119f1715b3

Change-Id: I343dc8ad193ad83a8c0628c104836bd392cd07d5
2016-06-24 23:28:57 +00:00
Adam Powell
242a44395e Merge \"Fix layout issue after insets changed\" into nyc-dev
am: 119f1715b3

Change-Id: I3dc13e068c258a74acee79e6ab6a75b569c891e8
2016-06-24 23:28:37 +00:00
TreeHugger Robot
119f1715b3 Merge "Fix layout issue after insets changed" into nyc-dev 2016-06-24 23:21:29 +00:00
Yorke Lee
33b289ae3f Merge \\"Update documentation for View.startDragAndDrop\\" into nyc-dev am: c63710ea48
am: c9bbca5682

Change-Id: I064b85f0a567978a67ed72a963aea63be9200457
2016-06-24 22:22:02 +00:00
Yorke Lee
d1d3950d94 Merge \"Update documentation for View.startDragAndDrop\" into nyc-dev
am: c63710ea48

Change-Id: Iebdb99f1032fbda52686df9dc02e740b61b7e7eb
2016-06-24 22:21:19 +00:00
Yorke Lee
c9bbca5682 Merge \"Update documentation for View.startDragAndDrop\" into nyc-dev
am: c63710ea48

Change-Id: I47ee9fa89edc5495616393a1c352677c8b990030
2016-06-24 22:18:22 +00:00
Adam Lesinski
ac3e0e590a Update DisplayMetrics when resizing
Previously the DisplayMetrics passed to a new ResourcesImpl
object would be generated from the default DisplayAdjustments.
We now use the correct DisplayAdjustments for the ResourcesImpl
and make sure to update them for things like rotation changes.

Bug:29619314
Change-Id: If2ba0d7670a4554dcd3fde9766e2337f20a191fd
(cherry picked from commit 8e8d23214a)
2016-06-24 22:11:27 +00:00
Adam Lesinski
89aea239cd Merge \"Update DisplayMetrics when resizing\" into nyc-mr1-dev
am: 038084e61c

Change-Id: I82318bbd8dbf03ab4bc01533b8c5650306cff0aa
2016-06-24 22:11:14 +00:00
Yorke Lee
c63710ea48 Merge "Update documentation for View.startDragAndDrop" into nyc-dev 2016-06-24 22:10:47 +00:00
TreeHugger Robot
038084e61c Merge "Update DisplayMetrics when resizing" into nyc-mr1-dev 2016-06-24 22:04:15 +00:00
Adam Powell
76fdbb72c9 Fix layout issue after insets changed
Fix a regression where a change in insets would forceLayout on the
view hierarchy but not run the measure/layout as a result. This would
cause layout requests to become stalled until a window-level relayout
event.

Bug 29634368

Change-Id: Ia3f32f5891c8b32c06c13f95ebd0572233572b04
2016-06-24 14:47:06 -07:00
Adam Lesinski
8e8d23214a Update DisplayMetrics when resizing
Previously the DisplayMetrics passed to a new ResourcesImpl
object would be generated from the default DisplayAdjustments.
We now use the correct DisplayAdjustments for the ResourcesImpl
and make sure to update them for things like rotation changes.

Bug:29619314
Change-Id: If2ba0d7670a4554dcd3fde9766e2337f20a191fd
2016-06-24 13:13:19 -07:00
Yohei Yukawa
45700fa135 Use a flag to grant a temporary URI permission.
It turns out that we can let the system to call
InputMethodService#exposeContent(InputContentInfo, EditorInfo), which
added in my previous CL [1], during the IME is calling
InputConnection#commitContent() as follows.

  [IME]
  InputContentInfo contentInfo = new InputContentInfo(
          contentUri,
          new ClipDescription(description, new String[]{mimeType}),
          linkUrl);
  getCurrentInputConnection().commitContent(
          inputContentInfo,
          InputConnection.INPUT_CONTENT_GRANT_READ_URI_PERMISSION,
          null);

  [App]
  try {
      contentInfo.requestPermission();
      // Load inputContentInfo.getContentUri() here.
  } finally {
      contentInfo.releasePermission();
  }

This gives us flexibility to let InputConnection#commitContent() do all
the magic for IME developers like other APIs such as
Context#startActivity(), rather than asking them to call one more API to
grant a temporary URI permission like a scenario where
Context#grantUriPermission() is used.

 [1]: I2772889ca01f2ecb2cdeed4e04a9319bdf7bc5a6
      25e0813e6e

Bug: 29450031
Change-Id: I99536cd58c9984af30b0bafb4a1dd25a26634a2d
2016-06-23 17:12:59 -07:00
Yorke Lee
d092e3a414 Update documentation for View.startDragAndDrop
Bug: 29606395
Change-Id: Ibbe1a20c998986c7afffac6f5f4b25769f56a8f2
2016-06-23 12:23:22 -07:00
John Reck
bcc1353019 Merge \\"Remove FD from the right Looper\\" into nyc-dev am: db13dd41a9
am: c86a2e325e

Change-Id: I85ed478cf265fbc1857b08b89f32fb2aa358e284
2016-06-23 18:45:16 +00:00
John Reck
50e952fe74 Merge \"Remove FD from the right Looper\" into nyc-dev
am: db13dd41a9

Change-Id: I590fa2c47bcc90ee5b269fde5cdac9557206ed88
2016-06-23 18:44:16 +00:00
John Reck
c86a2e325e Merge \"Remove FD from the right Looper\" into nyc-dev
am: db13dd41a9

Change-Id: I451ef3649426d9b8ea1bf15e388d0efa82dae442
2016-06-23 18:39:44 +00:00
John Reck
ac04f4e69a Remove FD from the right Looper
Bug: 29586513

Also gives BackdropFrameRenderer a direct-destroy
of Choreographer since it's hammering on new Threads
and we don't want to wait for the GC to release
FDs.

Change-Id: Id2ec0af2ee4d5304961c4ab87a104ccb92f35fc2
2016-06-23 11:00:00 -07:00
Yohei Yukawa
d02470f5a8 Merge \"Add InputMethodService#exposeContent()\" into nyc-mr1-dev
am: dc42d7dd13

Change-Id: Icf3ca0403c7dee26a3083ca98ca1239887d471bc
2016-06-23 01:29:58 +00:00
Yohei Yukawa
dc42d7dd13 Merge "Add InputMethodService#exposeContent()" into nyc-mr1-dev 2016-06-23 01:25:39 +00:00
Jim Miller
0a7efa1e47 Merge \"Enable fingerprint sensor navigation to invoke QuickSettings - rename \"FP_NAV\" to more generic \"SYSTEM_NAVIGATION\"\" into nyc-mr1-dev
am: 0520091641

Change-Id: I285f751bd449c89685a88ad30073cd011dfe5061
2016-06-23 00:20:57 +00:00
Jim Miller
0520091641 Merge "Enable fingerprint sensor navigation to invoke QuickSettings - rename "FP_NAV" to more generic "SYSTEM_NAVIGATION"" into nyc-mr1-dev 2016-06-23 00:13:42 +00:00
John Reck
c95bebfe39 Merge \\"Change approach for windowPositionLostRT\\" into nyc-dev am: 16038a0c5f
am: fdff97caf0

Change-Id: I1a2158abc35bd9da5e1e7b5cfc93867a938a5b70
2016-06-22 23:50:38 +00:00
John Reck
fdff97caf0 Merge \"Change approach for windowPositionLostRT\" into nyc-dev
am: 16038a0c5f

Change-Id: I80f6bf6d169c43a10106857627f5c127d94d00a4
2016-06-22 23:45:50 +00:00
John Reck
0a3a75e121 Merge \"Change approach for windowPositionLostRT\" into nyc-dev
am: 16038a0c5f

Change-Id: Ia6d1b8cfa2c5d126b702eb84895093fa3f893b00
2016-06-22 23:45:34 +00:00
John Reck
16038a0c5f Merge "Change approach for windowPositionLostRT" into nyc-dev 2016-06-22 23:38:24 +00:00
Yohei Yukawa
25e0813e6e Add InputMethodService#exposeContent()
This is a follow up CL to my previous CLs [1][2] that introduced
InputConnection#commitContent(InputContentInfo, Bundle) API to enable
IMEs to send a content to the target application.

With this CL, IME developers are able to temporarily expose
InputContentInfo object to the target package without permanently
granting URI permission.  Although calling IMS#exposeContent() is
allowed only for the IME that is currently selected, the client is able
to request a temporary read-only access even after the current IME is
switched to any other IME as long as the client keeps InputContentInfo
object.

Here is a sample code snippet about how to use this mechanism.

  [IME]
  InputContentInfo contentInfo = new InputContentInfo(
          contentUri,
          new ClipDescription(description, new String[]{mimeType}),
          linkUrl);
  exposeContent(contentInfo, getCurrentInputEditorInfo());
  getCurrentInputConnection().commitContent(inputContentInfo, null);

  [App]
  try {
      contentInfo.requestPermission();
      // Load inputContentInfo.getContentUri() here.
  } finally {
      contentInfo.releasePermission();
  }

 [1]: Iaadf934a997ffcd6000a516cc3c1873db56e60ad
      152944f490
 [2]: Ica1ba3154795c1bf44e140dfe639b299f83cd8af
      adebb52588

Bug: 29450031
Change-Id: I2772889ca01f2ecb2cdeed4e04a9319bdf7bc5a6
2016-06-22 16:31:41 -07:00
John Reck
f23a1b8e4c Change approach for windowPositionLostRT
Bug: 29547000

Instead of shifting the window off screen fall
back to the UI-thread calculated values. This fixes
a race issue around tear-down where we stop
drawing long before our window is actually no longer
visible, as well as fixes a funky issue with
PRESERVE_GEOMETRY during first draw.

Change-Id: I792d1966f5aaee1e703295ae79166c723b97a1dc
2016-06-22 16:10:07 -07:00
Jim Miller
07e0384a4e Enable fingerprint sensor navigation to invoke QuickSettings
- rename "FP_NAV" to more generic "SYSTEM_NAVIGATION"

Fixes bug 28869612

Change-Id: I321240ee54506633d63a29e987b8d8638c652391
2016-06-22 15:18:13 -07:00
Adam Lesinski
ce71c120df Merge \\"ContextImpl: Keep DisplayAdjustments and Display in sync\\" into nyc-dev am: 0bf31c3fa6
am: a72a6aae37

Change-Id: I8c85a4bb67d470c5bba5bcf81915e4684019027b
2016-06-22 19:27:30 +00:00
Adam Lesinski
a72a6aae37 Merge \"ContextImpl: Keep DisplayAdjustments and Display in sync\" into nyc-dev
am: 0bf31c3fa6

Change-Id: If0da3136f1fcb17c43a5b8c22ca890b8abcfc25c
2016-06-22 19:17:43 +00:00
Adam Lesinski
e894efa9b6 Merge \"ContextImpl: Keep DisplayAdjustments and Display in sync\" into nyc-dev
am: 0bf31c3fa6

Change-Id: Id0d16d2f9d69b87d4b4c01370eeceafe329d1817
2016-06-22 19:16:44 +00:00
Adam Lesinski
0bf31c3fa6 Merge "ContextImpl: Keep DisplayAdjustments and Display in sync" into nyc-dev 2016-06-22 19:11:36 +00:00
Robert Carr
79116da979 Merge changes from topic \'seamless-rotation\' into nyc-mr1-dev
am: f8142e5bf3

Change-Id: I2facb8e9453e370219c61159a6738827baa9a7d9
2016-06-22 17:49:12 +00:00
TreeHugger Robot
f8142e5bf3 Merge changes from topic 'seamless-rotation' into nyc-mr1-dev
* changes:
  Enable resize during relayout fix for all stacks.
  SurfaceView: Careful with FLAG_PRESERVE_GEOMETRY.
  Implement seamless rotation mode.
2016-06-22 17:40:48 +00:00
Adam Lesinski
4ece3d6bb1 ContextImpl: Keep DisplayAdjustments and Display in sync
Make sure that when our Resources get updated, that DisplayAdjustment
and Display properly reflect the potentially new screen dimensions.

Bug:28388969
Change-Id: I340550ea094ece87abc8790dd46aaa60ab3cedd3
2016-06-21 17:55:58 -07:00
Robert Carr
15e0bb4264 SurfaceView: Careful with FLAG_PRESERVE_GEOMETRY.
We need to be careful about stripping FLAG_PRESERVE_GEOMETRY
as it breaks render thread sync. Notably we don't need
to strip it in the case of mUpdateWindowNeeded, this just signals
that Window#resized has been called, or something similar, but if there
has been no actual size change, then we can leave the geometry to
the render thread. This particularly manifests in rotation scenarios
where the SurfaceView will receive resize ahead of the app receiving
a configuration change.

Bug: 28823590
Change-Id: Ie2bbe7d9bd9f0a5ab64a08776bae7344eaecb605
2016-06-21 17:13:19 -07:00
Robert Carr
6da3cc0237 Implement seamless rotation mode.
Add a rotation mode which does not require freezing
the screen. For situations like Camera where only small
elements move on screen, this allows for seamless changes
of display orientation. This is achieved by transforming the
windows with their current buffer in the same transaction that
we rotate the display. We set things up so the windows are
frozen this way until they submit buffers in the new orientation.
There is a special case in the Camera window itself, and it's use
of NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY. In this case the buffer
contents are rotated by SurfaceFlinger and will never resize, for these
windows we just need to update the scaling matrix.

Bug: 28823590
Change-Id: I52dc6a86fcb3c08f736f0977ba3975a24fb8136c
2016-06-21 17:13:15 -07:00
Yorke Lee
bf18ee7b76 Merge \\"Tweaks to DragAndDropPermissions behavior\\" into nyc-dev am: 22faa5ddb1
am: 072ce0c29c

Change-Id: Iee2afec7bd3b6d6a81ce179df9e52a9e20bc1b72
2016-06-21 23:37:51 +00:00