Commit Graph

14852 Commits

Author SHA1 Message Date
Ming-Shin Lu
57a7cd005c RESTRICT AUTOMERGE Reland "Fix showing keyboard without editor focused.." am: 44ecc735ec
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12716109

Change-Id: I798957b11099d3425c9219be3690b0f107ea3733
2020-09-28 15:36:12 +00:00
Ming-Shin Lu
44ecc735ec RESTRICT AUTOMERGE Reland "Fix showing keyboard without editor focused.."
Resolve SearchViewTest and InputMethodServiceTest failure when
landing CL[1] in QPR branch.

Also, CL[1] mentioned window focus behavior changes from R,
ignoring STATE_VISIBLE or STATE_ALWAYS_VISIBLE request doesn't enough
to fix unexpected keyboard visible issue when same window focused with
the above softInput flag without editor focus, since there is no
additional unspecified window focus to hide the current soft-input
as prior to R's behavior.

To fix that, we introduced new SoftInputShowHideReason to hide
soft-input when the same window focused without valid editor focus
after screen unlock, in order to align with the behavior prior to R.

[1]: I37ae6e30d1de581ba15131c2a90396b3a522a4d6

Bug: 161506356
Test: atest CtsInputMethodTestCases
Change-Id: Id51863a5b67d5d79d903adf43f19b52bd139e03f
2020-09-28 05:13:09 +00:00
Andrew Solovay
97b367c2d7 [RESTRICT AUTOMERGE] docs: Removing obsolee TODO am: b86df213a3 am: 9441161e17
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12663552

Change-Id: Ia6a1b39ffc137939621fcb29f50854f89d926106
2020-09-25 05:46:23 +00:00
Andrew Solovay
8d390df771 [RESTRICT AUTOMERGE] docs: Removing obsolee TODO am: b86df213a3 am: 9da05e017e am: 7015c95720
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12663552

Change-Id: Iec5085085733739a8b8e038130ac501d3608ccd7
2020-09-25 05:36:47 +00:00
TreeHugger Robot
33d7e9308e Merge "Make process level rotated config and display metrics consistent" into rvc-qpr-dev am: d6af5b5d1e
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12670488

Change-Id: I1ca8add8df59a72e35ced7d0f888c662e01d7dc2
2020-09-25 05:28:24 +00:00
Andrew Solovay
7015c95720 [RESTRICT AUTOMERGE] docs: Removing obsolee TODO am: b86df213a3 am: 9da05e017e
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12663552

Change-Id: I6079309dc6dc8f27463f29370a79cb97e7dfff4e
2020-09-25 05:27:36 +00:00
Andrew Solovay
9da05e017e [RESTRICT AUTOMERGE] docs: Removing obsolee TODO am: b86df213a3
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12663552

Change-Id: Idf8ba9c921fc02310da6906103fd8ba39c43d5be
2020-09-25 05:24:45 +00:00
Andrew Solovay
9441161e17 [RESTRICT AUTOMERGE] docs: Removing obsolee TODO am: b86df213a3
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12663552

Change-Id: I3009f35dd371aad17c6787e98000c43dc4cee7d3
2020-09-25 05:24:25 +00:00
TreeHugger Robot
d6af5b5d1e Merge "Make process level rotated config and display metrics consistent" into rvc-qpr-dev 2020-09-25 03:54:37 +00:00
Andrew Solovay
b86df213a3 [RESTRICT AUTOMERGE] docs: Removing obsolee TODO
The TODO was in a Javadoc comment so it was exposed in public docs.
It looks like the TODO was removed from master, and per SME, it's
okay to remove it from RVC too.

Test: make ds-docs-java
Exempt-from-owner-approval: Docs-only change
Bug: 169103613
Change-Id: I7694bbc8fde0e7366db57770ff1792a1d2f3e6c1
Merged-In: I129f96f6ed716e25c476bacbdb38799675919b9a
2020-09-24 18:13:06 +00:00
Youngjun Kwak
dcfa722f4c Merge "Map bar type to new ITYPE_{SIDE}_MANDATORY_GESTURES_INSETs" into rvc-qpr-dev am: 4d714cb8e9
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12641033

Change-Id: Icdd22f81cc8d75e565073ee322b2bf3c6ec0064c
2020-09-24 15:53:19 +00:00
Youngjun Kwak
4d714cb8e9 Merge "Map bar type to new ITYPE_{SIDE}_MANDATORY_GESTURES_INSETs" into rvc-qpr-dev 2020-09-24 15:19:11 +00:00
Tiger Huang
2920a61a6b Clear low profile mode while forcing client to show system bars am: 3b6bdffa44
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12683363

Change-Id: Iefd90b4aebc1c683fb99a482f5c897d7ea6b7ac4
2020-09-24 13:31:42 +00:00
Tiger Huang
3b6bdffa44 Clear low profile mode while forcing client to show system bars
Forcing client to show system bars would clear system UI flags at the
client side. SYSTEM_UI_FLAG_LOW_PROFILE would be cleared as well in
previous Android versions. This CL makes the behavior compatible.

Fix: 167892531
Test: Steps in the bug
Change-Id: I466a05120a08ac95b619eadd8291fc546d3bb450
2020-09-24 17:35:48 +08:00
Riddle Hsu
6bb2b9c716 Make process level rotated config and display metrics consistent
The application may get Resources instance from Resources.getSystem()
and context.getApplicationContext().getResources(). Since fixed
rotation is introduced that allows an activity to start in a different
rotation than the current display, when using getConfiguration() and
getDisplayMetrics() of these Resources instances, the orientation
and metrics need to be the same as current display is rotated.
Otherwise the app may show unexpected UI layout.

Although it is not recommended to use global resources/config for
activity. One of the goal of fixed rotation transform is to simulate
the app is started in a rotated environment, so this CL makes the
configuration and display metrics of system resources are consistent
with application and activity for compatibility.

About WindowProcessController and ActivityStackSupervisor:
 The process configuration passed to LaunchActivityItem may be
 associated from activity. if the sequence number of configuration
 is overridden by activity, the configuration may be ignored when
 launching the activity because the sequence number isn't larger
 than the previous process configuration. Although there will be a
 ConfigurationChangeItem later to update correct state, the app may
 get the intermediate state with old configuration and metrics.

About ResourcesManager and DisplayAdjustments:
 There are 2 new fields appWidth and appHeight added to
 DisplayAdjustments#FixedRotationAdjustments because the display
 metrics from Resources.getSystem() is independent from activity
 configuration. Only window manager knows the rotated size, so
 the values need to send to client and then ResourcesManager takes
 the adjustment to change the global display metrics.

About WindowToken:
 When fixed rotation is applied on the token, send the
 FixedRotationAdjustmentsItem first so the later configuration
 change can pick the adjustment at ActivityThread. And because the
 registration of activity configuration only occurs on add/remove
 activity, if it is only switching to another existing activity in
 different orientation, the process configuration still needs to
 be updated.

About ActivityThread:
 The code flow for a rotated activity (DA = display adjustments):
 - Launch new activity
    handleLaunchActivity: override app DA
     handleConfigurationChanged: adjust global display metrics by DA
     performLaunchActivity
      createBaseContextForActivity: override activity DA
 - Resume existing activity
    handleFixedRotationAdjustments: override app and activity DA
    handleConfigurationChanged: adjust global display metrics by DA
    handleResumeActivity

Also some minor corrections:
- Fix wrong display metrics adjustment that xdpi and ydpi should
  not be swapped because they are physical attributes.

Bug: 167564038
Test: atest DisplayAdjustmentsTests
      AppConfigurationTests#testRotatedInfoWithFixedRotationTransform
      WindowProcessControllerTests#testProcessLevelConfiguration
      DisplayContentTests#testApplyTopFixedRotationTransform

Change-Id: I60bedc7e09f54683d5e857ccc51402d5d144cd9e
Merged-In: I60bedc7e09f54683d5e857ccc51402d5d144cd9e
2020-09-24 15:09:51 +08:00
Alison Cichowlas
13edc9d085 Merge "Set the default screenshot delay to 0ms" into rvc-qpr-dev am: 96c7d2368f
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12557348

Change-Id: I2540d2e1cfa574ee71f6beac4549942a16aa10d5
2020-09-23 15:48:00 +00:00
Alison Cichowlas
96c7d2368f Merge "Set the default screenshot delay to 0ms" into rvc-qpr-dev 2020-09-23 15:39:42 +00:00
Miranda Kephart
c632e0f8df Set the default screenshot delay to 0ms
Bug: 165267251
Test: manual -- ensured that the time needed to hold is 0ms if the
screenshot_keychord_delay debug value is not set, and that the
delay can still be changed using

adb shell device_config put systemui screenshot_keychord_delay <ms>

Change-Id: Iab989ecf14ef379658130adbced241e084554e63
Merged-In: Iab989ecf14ef379658130adbced241e084554e63
(cherry picked from commit bf82822698)
2020-09-23 13:58:41 +00:00
kwaky
9b2063caaf Map bar type to new ITYPE_{SIDE}_MANDATORY_GESTURES_INSETs
Bug: 167565741
Bug: 167288724
Test: atest WindowInsetsPolicy and atest SystemBarConfigs all passing

Change-Id: I767a423bc2437021af02c01a84fa3e1834413c1e
2020-09-22 11:05:56 -07:00
Heemin Seog
9779c9e133 DO NOT MERGE Ensure mapping between internal and public insets am: ae42535e1a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12547244

Change-Id: I518091fb946ce0492acbb65396f743f8ca96ae10
2020-09-21 16:00:33 +00:00
Heemin Seog
ae42535e1a DO NOT MERGE Ensure mapping between internal and public insets
Bug: 166149440
Test: manual (flash automotive device with all system bars and show/hide
insets using WindowInsetsController), atest InsetsStateTest
InsetsStateControllerTest

Change-Id: I500b2fb0129739c6fc609561377d90cca6e45f7e
2020-09-18 09:48:08 -07:00
Julia Reynolds
125d1725cd DO NOT MERGE Revert "Remove app ops indicators from notifications" am: 8ec5bcb3d0
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12615554

Change-Id: Ib5170725586b432972ab4b29129c1cadb53d50e1
2020-09-16 16:32:48 +00:00
Julia Reynolds
71f51c54cd Merge "DO NOT MERGE Revert "Remove app ops indicators from notifications"" into rvc-qpr-dev 2020-09-16 15:09:31 +00:00
Julia Reynolds
8ec5bcb3d0 DO NOT MERGE Revert "Remove app ops indicators from notifications"
This reverts commit 2778b62f1d.

Reason for revert: these icons are still needed

Change-Id: I219af393f3d4cd08e431f38a3b66408e12f258bb
Bug: 163076432
2020-09-16 15:09:03 +00:00
Jeff Sharkey
487d394296 Merge changes from topic "sep11" am: c0b288133a am: 69e6f07347 am: 741c0a78cc am: da7478b570
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1426195

Change-Id: I79488866c538bf9e76d0a6429e30262978f6fdab
2020-09-15 00:13:08 +00:00
Jeff Sharkey
da7478b570 Merge changes from topic "sep11" am: c0b288133a am: 69e6f07347 am: 741c0a78cc
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1426195

Change-Id: I9b79dbf3e9983523db11599d8ae289b05aabf80c
2020-09-14 23:42:34 +00:00
Jeff Sharkey
741c0a78cc Merge changes from topic "sep11" am: c0b288133a am: 69e6f07347
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1426195

Change-Id: I7da537200efe31e803234bd1a0236843064186c8
2020-09-14 23:10:42 +00:00
Jeff Sharkey
a8cec413b6 Update language to comply with Android's inclusive language guidance
See https://source.android.com/setup/contribute/respectful-code for reference

Test: none
Bug: 168334533
Exempt-From-Owner-Approval: docs updates
Change-Id: I245b8d9cac722da76ea67983738a3cbb9deb68df
2020-09-14 10:00:07 -06:00
Jeff Sharkey
6516a83886 Update language to comply with Android's inclusive language guidance
See https://source.android.com/setup/contribute/respectful-code for reference

Test: none
Bug: 168334533
Exempt-From-Owner-Approval: docs updates
Change-Id: Ifce5239991e3b78dd4757712e3b88093ad7161f0
2020-09-14 10:00:02 -06:00
Jeff Sharkey
705f6bec2d Update language to comply with Android's inclusive language guidance
See https://source.android.com/setup/contribute/respectful-code for reference

Test: none
Bug: 168334533
Exempt-From-Owner-Approval: docs updates
Change-Id: I53003332717baf57dc088b2f6b969cdb1863f65e
2020-09-14 09:59:01 -06:00
Treehugger Robot
8513ac2afc Merge "Update language to comply with Android's inclusive language guidance" am: 558a921d81 am: 927f0f7453 am: 1ff037880a am: 6671acef6e
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1382388

Change-Id: Icb0ab4bed8a74674fcfbdd7c8e0885a2994ec0cb
2020-09-11 18:17:49 +00:00
Treehugger Robot
6671acef6e Merge "Update language to comply with Android's inclusive language guidance" am: 558a921d81 am: 927f0f7453 am: 1ff037880a
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1382388

Change-Id: I4ec82de3182802b71ebe8c5a9ac2b9bdaaa58cdf
2020-09-11 17:29:36 +00:00
Treehugger Robot
1ff037880a Merge "Update language to comply with Android's inclusive language guidance" am: 558a921d81 am: 927f0f7453
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1382388

Change-Id: I03a1373dcc1cdcf0d73536d98d5205317183cdef
2020-09-11 16:48:39 +00:00
Lais Andrade
e5c953b7ec Update language to comply with Android's inclusive language guidance
See https://source.android.com/setup/contribute/respectful-code for reference

BUG: 162536543
Test: N/A
Change-Id: Ied240c486df4072ca6301511aa3419f746404afa
2020-09-11 14:31:20 +00:00
Tiger Huang
d541d1d4fd Update requested state after applying pending frames am: dfc8abb1ff
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12526908

Change-Id: I40156abe8952ae5b9ed36b3bc6ae5b854380e14e
2020-09-09 19:30:32 +00:00
Tiger Huang
dfc8abb1ff Update requested state after applying pending frames
When there is an insets animation, we will stop updating insets source
frames until the animation is done. The previous logic didn't update the
frames within the requested state while the animation is done. And the
frames was relied by InsetsPolicy while playing transient bar animation.
If the frames don't match the display, the insets would be wrong, and
the animation wouldn't be played correctly.

Fix: 161134197
Test: atest InsetsControllerTest
Merged-In: Id8f3c1956fbfe3ad16f167ff76297dde6c634e81
Change-Id: Id8f3c1956fbfe3ad16f167ff76297dde6c634e81
(cherry picked from commit 23c75281ef)
2020-09-07 16:09:08 +08:00
Xin Li
c8c8e8e8be Merge RP1A.200720.011
Bug: 167588565
Merged-In: Iec7a26ecd68aca9c7a38cc8f441197a8237b0c8c
Change-Id: Ia8f5f008bc1f77115b644ab996aedc892fab68e7
2020-09-02 12:34:37 -07:00
Tiger Huang
63b0b6e6bb Make display frame compatible am: 677078e872
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12500988

Change-Id: Ie735f38e26cd6fa5c71aef0dbf70e87072b1ae4c
2020-09-02 12:19:24 +00:00
Tiger Huang
b95d91a1ba Merge "Compare with oldSoftInputMode after restoring softInputMode" into rvc-qpr-dev am: 6a1829d14a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12500989

Change-Id: I603f8ba6efa2b4536da8a039c06aefac63f57501
2020-09-02 12:18:58 +00:00
Tiger Huang
677078e872 Make display frame compatible
The display frame is used to limit the windows boundary. The frame is
the same as the parent frame in most cases if the window is not
attched. However, if a window doesn't have any layout related
window/sysui flags and the soft input mode is not ADJUST_RESIZE, the
display frame doesn't need to be inset by IME (but the parent frame
does).

Fix: 163435784
Test: atest ViewRootImplTest DisplayPolicyLayoutTests
Merged-In: Ia61933120027642d1f0e0a490546071ca2b6c853
Change-Id: Ia61933120027642d1f0e0a490546071ca2b6c853
2020-09-02 11:38:21 +00:00
Tiger Huang
e80e94182c Compare with oldSoftInputMode after restoring softInputMode
... of mWindowAttributes. Apps might update LayoutParams with
softInputMode unspecified on applying insets, and this can cause
infinite loop in the previous logic, because we would auto-compute
softInputMode for the unspecified one, which makes app's softInputMode
never be the same as the one in ViewRootImpl.mWindowAttributes.

Fix: 163009478
Test: Print stack trace before calling requestFitSystemWindows() and
      follow the steps in the bug.
Test: Open Messages, go to attachments, reopen IME
Change-Id: I2341121b69209688c2f6fb033f51611b21422a04
2020-09-02 06:48:08 +00:00
Xin Li
628590d7ec Merge Android R (rvc-dev-plus-aosp-without-vendor@6692709)
Bug: 166295507
Merged-In: I3d92a6de21a938f6b352ec26dc23420c0fe02b27
Change-Id: Ifdb80563ef042738778ebb8a7581a97c4e3d96e2
2020-08-31 21:21:38 -07:00
Tiger Huang
606a45341b Merge "Refine system bar position restoring" into rvc-d1-dev am: 6383ac86ca
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12406774

Change-Id: I9b1e07559a3194b22d07d7b107d780abc4f1bcc9
2020-08-20 11:05:46 +00:00
Tiger Huang
444e8dc6ce Refine system bar position restoring
The previous logic restores the system bar as long as its insets source
is visible. There can be a timing issue that if the user swipes to show
transient bars while an immersive app just becomes the control target
but the hide-bar info haven't sent to WM yet, WM will re-show the bar
incorrectly.

This CL uses the requested visibility and the behavior to decide if we
should restore the postion and the visibility.

This CL also refines and caches the arguments of showTransient. In this
way, we don't have to create the array every time while invoking that
method.

Fix: 161247175
Test: atest InsetsPolicyTest
Merged-In: Idef314dfe6625399b88b3dacb4c74c7071453497
Change-Id: Idef314dfe6625399b88b3dacb4c74c7071453497
(cherry picked from commit 533682ebb3)
2020-08-19 16:13:25 +00:00
Tiger Huang
02b0205641 Update requested state after applying pending frames am: 23c75281ef
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12400337

Change-Id: I955a32723913c7cc238ce38e8c97328295dae27c
2020-08-19 15:58:11 +00:00
Tiger Huang
23c75281ef Update requested state after applying pending frames
When there is an insets animation, we will stop updating insets source
frames until the animation is done. The previous logic didn't update the
frames within the requested state while the animation is done. And the
frames was relied by InsetsPolicy while playing transient bar animation.
If the frames don't match the display, the insets would be wrong, and
the animation wouldn't be played correctly.

Fix: 161134197
Test: atest InsetsControllerTest
Merged-In: Id8f3c1956fbfe3ad16f167ff76297dde6c634e81
Change-Id: Id8f3c1956fbfe3ad16f167ff76297dde6c634e81
2020-08-19 20:42:39 +08:00
Tiger Huang
3b3ddb3574 Dispatch insets to client if mState is changed am: f8175d1a5b
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12406767

Change-Id: I28e6b34667d53eb49f8b167964625342f8c29520
2020-08-19 12:19:31 +00:00
Tiger Huang
efee1a6ba0 Merge "Refine system bar position restoring" into rvc-qpr-dev am: 1adfc8b85c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12293070

Change-Id: I23e07b7e45535df955ff56cf98e760e95023bd09
2020-08-19 12:07:08 +00:00
Tiger Huang
1adfc8b85c Merge "Refine system bar position restoring" into rvc-qpr-dev 2020-08-19 11:57:15 +00:00
Tiger Huang
f8175d1a5b Dispatch insets to client if mState is changed
Previous logic in onStateChanged notifies insetsChanged based on the
change of mLastDispatchedState, which can make us dispatch redundant
insets changes to the app.

In this CL, we only notifies insetsChanged if mState is really changed
in onStateChanged -- we use the final mState (after updateState and
applyLocalVisibilityOverride) to compare with the one before changing.

Fix: 161924448
Test: atest InsetsControllerTest WindowInsetsControllerTests
Test: Swipe up to home while IME open and see if there is any jank
Merged-In: Ia536cdf76805caa56ca1b6eaf2b3db83b6ecd94e
Change-Id: Ia536cdf76805caa56ca1b6eaf2b3db83b6ecd94e
2020-08-19 15:32:53 +08:00