Commit Graph

9859 Commits

Author SHA1 Message Date
Rob Carr
6f87503ed8 Merge "ViewRootImpl: More null checks for performTraversals." into oc-dev 2017-06-16 19:55:12 +00:00
Robert Carr
32f37ab023 ViewRootImpl: More null checks for performTraversals.
Let's first understand how mView could become null. Notice
at the beginning of performTraversals, there is a check that
mView != null, and so it is nulled while we are in the function.
mView is package private and there are only two places which assign
to it, ViewRootImpl#setView and ViewRootImpl#doDie. setView is guarded
by mView == null. But mView was not null (per the check at the beginning
of performTraversals) and so mView is being nulled by doDie().

doDie() only has 3 callpoints:
        1. ViewRootImpl#die(). Here though, calling it is guarded by
        !mIsInTraversal. !mIsInTraversal is unconditionally set at the
        beginning of performTraversals, and so this isn't our caller.
        2. ViewRootHandler, handling MSG_DIE. This runs on the same thread
        as performTraversal, and so it can't be our nuller.
        3. WindowManagerGlobal#addView. This must be our nuller.

We see WindowManagerGlobal#addView will call doDie in the case that
we attempt to add a view which we had previously set to be removed
but deferred removal of. Now we can construct a reasonable sequence
for getting here:
    1. requestLayout(). Perform traversals ends up on handler.
    2. removeView(). MSG_DIE ends up on handler, View ends up in mDyingViews
    3. performTraversals is executed by the handler
    4. From a callback initiated by performTraversals (e.g. measure)
       the client calls WindowManagerGlobal#addView on the view which
       was just removed.
    5. We are still in performTraversals so MSG_DIE hasn't been processed
       yet. This means that WindowManagerGlobal will perform the doDie
       immediately nulling mView.
    6. We return to performTraversals and crash.

We can see shortly after the offending call to doDie, a new ViewRoot will be
constructed and so whatever traversal we are doing on the old one doesn't
seem particularly important. It doesn't seem that we can do any better
than letting it fall through without crashing.

Bug: 38421184
Test: go/wm-smoke. Feed to the monkeys.
Change-Id: I55f310a3533175c9df4a82878be5a60fd01b80c1
2017-06-15 12:52:53 -07:00
John Reck
a896306c38 Add a workaround for simulate secondary display
To workaround a deadlock caused by bufferqueue locks
we force RenderThread over to use async mode which
we enable via eglSwapInterval(0)

Bug: 38372997
Test: steps in the bug
Change-Id: Ia305f73abbdd64ab0c25d1f7d32792cc6295a0ce
2017-06-14 10:50:14 -07:00
TreeHugger Robot
42b3610adc Merge "SurfaceView: Fix missing override for SurfaceControl proxy" into oc-dev 2017-06-12 23:38:19 +00:00
Robert Carr
552da0e0cd SurfaceView: Fix missing override for SurfaceControl proxy
I will not pretend classes are interfaces...I will not pretend
classes are interfaces...

Bug: 62444724
Test: cts-tradefed run singleCommand cts -d -o --module CtsViewTestCases --test android.view.cts.SurfaceViewSyncTest#testSurfaceViewBigScale
      go/wm-smoke

Change-Id: Iccca46edcd669430c32f31e9c7d8aba1db254f2d
2017-06-12 11:43:51 -07:00
Felipe Leme
211e760408 Merge "Minor fix on autofill() javadoc." into oc-dev 2017-06-09 22:02:51 +00:00
Siyamed Sinir
bc626c6358 Merge "Force Autofill in FloatingToolbar overflow menu" into oc-dev 2017-06-09 20:58:36 +00:00
Felipe Leme
8db148093c Merge "Closes Autofill UIs when back button is pressed." into oc-dev 2017-06-09 19:48:00 +00:00
Felipe Leme
e4835a2af4 Merge "Ignore dispatchProvideStructureForAutofill() when layout is being updated." into oc-dev 2017-06-09 19:42:24 +00:00
Felipe Leme
fad3a83a93 Minor fix on autofill() javadoc.
Bug: 62465574
Test: N/A

Change-Id: I4a55b4064a8af835e962a77c6ad55a29c1954efd
2017-06-08 18:50:27 -07:00
Felipe Leme
5013f9feb2 Ignore dispatchProvideStructureForAutofill() when layout is being updated.
View already checks if its layout is being updated when calling
notifyEnterOrExitForAutoFillIfNeeded(), but that doesn't prevent apps crashing
when the autofill process was triggered by another view.

Test: existing CtsAutoFillServiceTestCases pass
Fixes: 38198484

change-Id: I8e9435ddc4cf21fb648d39aace93f3af0e1fdf4f
2017-06-08 18:45:11 -07:00
Jorim Jaggi
34a0cdb98e Properly run window animations at vsync-sf (1/2)
- Add new Choreographer instance that runs on vsync-sf
- Use this new Choreographer for WindowAnimator, and remove all
the hacks around it

Test: Open apps and close apps, notice no stutter
Test: Screen zoom animations
Test: go/wm-smoke
Bug: 36631902
Change-Id: I988ae25645effc3ac20efa7cb9b68f23444da0d0
2017-06-08 17:22:43 -07:00
Siyamed Sinir
484c2e2fbe Force Autofill in FloatingToolbar overflow menu
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
bit CtsWidgetTestCases:android.widget.cts.EditTextTest

Bug: 62271937
Change-Id: Ib3447281f3bd1abc811a25fc55ad55e34e155bbb
2017-06-08 17:16:26 -07:00
Felipe Leme
5f97880714 Closes Autofill UIs when back button is pressed.
Test: existing CtsAutoFillServiceTestCases pass
Test: LoginActivityTest#testSaveGoesAwayWhenTappingBackButton pass

Fixes: 62272098

Change-Id: Id34767ca32836f040e04790f0f2935ae49d88d71
2017-06-08 13:10:32 -07:00
Felipe Leme
9be8c96918 Merge "Overall improvement on Autofill javadocs for autofillable APIs." into oc-dev 2017-06-08 05:21:08 +00:00
Bryce Lee
f867733d4f Merge "Revert "Coordinate configuration changes and window frame size."" into oc-dev 2017-06-07 23:23:30 +00:00
Bryce Lee
46b01655b3 Revert "Coordinate configuration changes and window frame size."
This reverts commit afb45bba83.

Bug: 32839232
Fixes: 62424393
Change-Id: Ifaa0176e18100ec85b8c81268a26fb16ffe9b5f3
2017-06-07 23:03:09 +00:00
Evan Rosky
8d4b72c68a Merge "Don't report focusableViewAvailable on add" into oc-dev 2017-06-07 01:02:21 +00:00
Felipe Leme
2f6fc72efc Overall improvement on Autofill javadocs for autofillable APIs.
Bug: 37567048
Test: ran 'm -j doc-comment-check-docs' and checked resulting HTML

Change-Id: I7eaf0a521c3777baf0dc0002ae814990fd96a14c
2017-06-06 14:33:56 -07:00
Robert Carr
851e7e4394 SurfaceView: Correct inverted alpha detection condition.
Careless mistake on my part :). Sorry about that.

Test: Try an app with two SV like Netflix verify top SurfaceView doesn't occlude bottom one.
Bug: 62375611
Bug: 62113351
Change-Id: Ia33aabf8b8e276f70365d62b82f113ecd3bee2fa
2017-06-06 14:04:50 -07:00
Evan Rosky
b23e4f4987 Don't report focusableViewAvailable on add
This reverts a part of 2ae1bf568b

RecyclerView relies on the old behavior. Will un-revert this (with
targetSdk check) once we have a solution for RecyclerView

Bug: 38352147
Test: RecyclerView Focus tests now pass
Change-Id: I7b0dfda295cd75e407bbd39a948b5585f8ed6e08
2017-06-06 10:41:26 -07:00
Bryce Lee
afb45bba83 Coordinate configuration changes and window frame size.
Previously, it was possible for the view hierarchy to be measured,
laid out, and drawn around a window frame size that did not match
the current configuration. This stems from new configurations not
always propagating back from WindowSession#relayout, which is
called from ViewRootImpl.

This changelist makes WindowManagerService#relayoutWindow always
return the latest configuration. It also adds rotation to the
configuration.

Fixes: 32839232
Test: go/wm-smoke
Test: Open Camera while rotating phone to landscape. Added
      temporary logs to detect inconsistencies between measurements
      and reported rotation on draw.
Change-Id: I39daca338b4f87eff1a509eb99493f01e710ced1
2017-06-05 20:55:46 -07:00
TreeHugger Robot
71044d6ba1 Merge "Reinstate SurfaceView Background from N" into oc-dev 2017-06-05 23:57:06 +00:00
Jeff Sharkey
d86b8fea43 Annotate @SystemApi with required permissions.
Most @SystemApi methods should be protected with system (or higher)
permissions, so annotate common methods with @RequiresPermission to
make automatic verification easier.

Verification is really only relevant when calling into system
services (where permissions checking can happen on the other side of
a Binder call), so annotate managers with the new @SystemService
annotation, which is now automatically documented.

This is purely a docs change; no logic changes are being made.

Test: make -j32 update-api && make -j32 offline-sdk-docs
Bug: 62263906
Change-Id: I2554227202d84465676aa4ab0dd336b5c45fc651
2017-06-05 13:27:11 -06:00
TreeHugger Robot
c3504d4f33 Merge "Workaround to ensure that PIP activities have a visible shadow." into oc-dev 2017-06-03 20:41:18 +00:00
TreeHugger Robot
a2f747c57c Merge "Workaround glitches from SOFT_INPUT_ADJUST_PAN" into oc-dev 2017-06-03 01:01:26 +00:00
Winson Chung
4d8681ff6a Workaround to ensure that PIP activities have a visible shadow.
- When the window for the activity enters PIP, update the outline provider
  to override the alpha of the shadow (to be opaque) to ensure that is is
  visible.  Only applies to the task root activity.

Bug: 36741700
Test: Launch YT, ensure that there is a shadow when after it enters PIP
Test: go/wm-smoke
Test: android.server.cts.ActivityManagerPinnedStackTests

Change-Id: If089dae84e4916d3d0e7bbeb316215b46e522e05
2017-06-02 16:02:50 -07:00
John Reck
3e04f09136 Workaround glitches from SOFT_INPUT_ADJUST_PAN
Change-Id: I1ee0c7d434eb03667bd5e838ea891db73651a994
Fixes: 62073166
Test: Repro app in bug
2017-06-02 16:01:14 -07:00
Robert Carr
5523555293 Reinstate SurfaceView Background from N
In N we used a Dim-Layer to add a background to SurfaceView, from
the WM side. In O we forgot to reimplment this with the new SurfaceView
and so we once again can have holes for apps which don't implement
surfaceRedrawNeeded.

Bug: 62113351
Test: Manual from bug. go/wm-smoke
Change-Id: If3dac51886b9a8083140da7b5bc1b349da57860f
2017-06-02 14:21:03 -07:00
Evan Rosky
12ee4bd7a8 Merge "Improve consistency in focusAfterDescendants behavior" into oc-dev 2017-06-02 17:56:33 +00:00
TreeHugger Robot
0b83588177 Merge "Annotate test method visibility in WindowManager" into oc-dev 2017-06-02 17:26:54 +00:00
Evan Rosky
2ae1bf568b Improve consistency in focusAfterDescendants behavior
- focusAfterDescendant ViewGroups that were also clusters would
  continue to be remembered for restoreFocusedInCluster after
  gaining focusable children. This caused undesired cluster-focus
  loops
- focusableViewAvailable wasn't being called in all cases (specifically
  when views were added). This meant focusAfterDescendant views
  wouldn't transfer focus to children in some cases.
- 0-area views which became focusable weren't reporting
  focusableViewAvailable. Since views gaining area doesn't report
  focusableViewAvailable, this was another case of state change not
  being accounted for. Also, this restriction doesn't exist for
  gaining focus so these views are actually focusable despite having
  0 area.
- focusableViewAvailable was reporting focusable views even when
  ancestors (and therefore the new focusables) were not visible.
- restoreFocusNotInCluster tried to focus invisible views
- restoreFocusNotInCluster was sending focus to focusAfterDescendant
  viewgroups which had focusable children IN a cluster.

Bug: 38010274
Bug: 38009598
Bug: 38352147
Test: cycling works in situations reported in bugs.
      Added CTS tests around focusableViewAvailable and
      FOCUS_AFTER_DESCENDANTS

Change-Id: I77f214f5384dcf9092324e08fc1daa3f1155bbad
2017-06-01 20:50:01 +00:00
TreeHugger Robot
d8d9758363 Merge "Don't automatically autofill when manual request returned just 1 dataset." into oc-dev 2017-05-31 20:43:20 +00:00
Alan Viverette
39259dd33c Annotate test method visibility in WindowManager
Change-Id: I36714b4eb39c937cc3c42fac604fd0fa9900ae47
Fixes: 62066862
Test: n/a
2017-05-31 15:06:09 -04:00
TreeHugger Robot
21999d2895 Merge "Always post AutofillManager operations in the UI thread." into oc-dev 2017-05-31 18:49:38 +00:00
Winson Chung
4e73123c52 Merge changes from topic 'hw_bitmap' into oc-dev
* changes:
  DO NOT MERGE Updating AnimationSpec and related internal APIs to use GraphicBuffer.
  Update code to draw into hardware bitmaps.
2017-05-31 18:46:59 +00:00
Winson Chung
aa7fa01353 DO NOT MERGE Updating AnimationSpec and related internal APIs to use GraphicBuffer.
- This reduces the copy of the hardware bitmap when it is
  parceled/unparceled.

Bug: 38507414
Bug: 62021436
Test: Launch Overview to/from app, ensure that the header bar shows
Test: go/wm-smoke

Change-Id: I85a9a59a0a3699d1642158061d10fddef34393c3
Signed-off-by: Winson Chung <winsonc@google.com>
2017-05-31 16:23:24 +00:00
TreeHugger Robot
c6700cac67 Merge "Fix unnecessary relaunches when unlocking with fingerprint sensor." into oc-dev 2017-05-31 03:54:58 +00:00
Felipe Leme
9876a6fba9 Always post AutofillManager operations in the UI thread.
Test: existing CtsAutoFillServiceTestCases pass
Fixes: 62194407

Change-Id: If878b2befc03706c000b3f31b60904072b2225f4
2017-05-30 19:54:43 -07:00
Wale Ogunwale
bfa81adfbe Fix unnecessary relaunches when unlocking with fingerprint sensor.
When the device is unlocked using the fingerprint sensor in an
orientation opposite to the lockscreen orientation, the app that
will be visible is first relaunched in the current lockscreen
orientation and then later relaunched in the correct orientation.
If the keygaurd is going away then:
- Don't let keyguard affect device orientation. We want to use the
orientation of the app that will be visible.
- Allow the rotation sensor to be enabled even though draw isn't
complete so window manager can get the updated or last rotation
reading.
- Don't clear the previous proposed sensor reading to allow
window manager to use the information to update the orientation as
needed vs. falling back to the previous orientation.

Change-Id: I8369723d6a77f2c602f1ef080371fa7cd9ee094e
Fixes: 38494778
Test: Launch an app that doesn't fix orientation like clock, hold
the device in landscape, press the power button, unlock the device
using the fingerprint sensor, and verify the the app isn't
relaunched.
2017-05-30 18:35:36 -07:00
TreeHugger Robot
9c1b222fc1 Merge "Fix issue with aspect ratio not applying correctly when PIP is expanded" into oc-dev 2017-05-31 00:01:00 +00:00
Felipe Leme
8697a31d3c Don't automatically autofill when manual request returned just 1 dataset.
When the user manually requested autofill and the service returned just 1
dataset, the app was automatically filled with it.

The motivation here was that since the user explicitly asked for autofill,
it'd ok - and better for the user - to release the data to the app without
the selecting a dataset.

This assumption was ok initially, but now the API to manually request autofill
is public, so a malicious app could use to get autofill data without user
interation.

Test: CtsAutoFillServiceTestCases pass
Fixes: 62164695

Change-Id: I47c3d8c557533526572aa67a4240c0a57f54268d
2017-05-30 14:34:27 -07:00
Winson Chung
a71febe2aa Fix issue with aspect ratio not applying correctly when PIP is expanded
- The current code always used the default min edge size to calculate the
  PIP bounds when the aspect ratio changes, so if a PIP app sets the aspect
  ratio in response to the an action, the bounds would be resized down
  incorrectly.
- This CL fixes the issue with current aspect ratio not being initialized
  correctly, and also ensures that SystemUI always updates the min edge
  size when expanding the PIP.

Bug: 38324839
Test: android.server.cts.ActivityManagerPinnedStackTests
Test: go/wm-smoke

Change-Id: Ida0f68b2f8f93f9bf1915dda8762a156704d4709
2017-05-30 16:36:48 +00:00
Robert Carr
49cd9f882c ViewRootImpl: More careful draw accounting.
The strategy of beginning the count at 1 isn't enough
and we need to explicitly debt each request to report
draw. Imagine the case where a ViewRootImpl reports draw
multiple times, while we are waiting for a SurfaceView draw
completion callback. Without the explicit draw debt, the ViewRoot
would be counted as drawing for the SurfaceView and we could
notify the WM too early.

Test: Open Chrome a few hundred times. go/wm-smoke.
Bug: 38324871
Change-Id: I5762a98d1cc808125033ba3d1db8a3ea39a9e071
2017-05-30 09:27:44 -07:00
Robert Carr
b53670aecf SurfaceView: Avoid over-reporting DRAW_FINISHED.
To some extent we rely on the app to call the draw callback
if they want the app to work properly, but this case is fairly easy
to detect, so why not prevent it and provide a helpful log.

Bug: 62051758
Test: Warm start camera a few times. go/wm-smoke.
Change-Id: I39f4e015bfa15a1e0c37dba70b4a700803a6a274
2017-05-30 09:27:44 -07:00
Rob Carr
5366cfbef3 Merge "Fix SurfaceView handler." into oc-dev 2017-05-30 16:17:32 +00:00
TreeHugger Robot
0b1b1c4346 Merge "Improved autofillHints documentation." into oc-dev 2017-05-27 02:25:08 +00:00
TreeHugger Robot
759669988b Merge changes from topic 'highlight_fixed' into oc-dev
* changes:
  Check default focus highlight for ImageView.
  Check state_focus in foreground.
2017-05-27 00:11:10 +00:00
John Reck
7992500d54 Fix SurfaceView handler.
The UI Thread is whatever we happen to be attached to, or the current thread if we are unattached.

Bug: 38180075
Test: Repro from bug. go/wm-smoke.
Change-Id: I3f75882aa13de2b781c71ebbc7b09888981521b3
2017-05-26 21:15:33 +00:00
TreeHugger Robot
bd8fb0e71d Merge "Resolve inflate attr against default package" into oc-dev 2017-05-26 20:54:57 +00:00