Commit Graph

102 Commits

Author SHA1 Message Date
Charles Chen
9dc35d21b4 Revert^2 Disable Settings large-screen optimization
Disable the optimization that is automatically enabled when
including Window Extensions through Activity Embedding.
The optimization causes to launch an additional trampoline
activity for deep links, even when the screen size is smaller
than required by Activity Embedding rules.

Bug: 267725145
Bug: 279461170
fixes: 280606740

Test: Build, perf metrics
Test: atest LauncherIronwoodIntegrationTests:android.platform.test.scenario.launcher.integration_tests.HomescreenCustomizationTests
Test: atest SettingsMultiPaneDeepLinkTest.java
Test: run v2/aep-ironwood/suite/test-mapping-ironwood-p0-cujs via ABTD
  on cheetah/oriole/panther/raven in udc-dev/master branch


Change-Id: I74c9608fce92fc77c0f1ef2d61aba3af85afba02
2023-05-05 07:46:06 +00:00
Priyanka Advani
77f76267d2 Revert "Disable Settings large-screen optimization"
Revert submission 22926596-disable_large_screen_opt

Reason for revert: b/280606740

Reverted changes: /q/submissionid:22926596-disable_large_screen_opt

Change-Id: Ib918705206dc6b8bcbce21f83494d1108c6b8393
2023-05-03 16:05:25 +00:00
Charles Chen
1815ba7828 Disable Settings large-screen optimization
Disable the optimization that is automatically enabled when
including Window Extensions through Activity Embedding.
The optimization causes to launch an additional trampoline
activity for deep links, even when the screen size is smaller
than required by Activity Embedding rules.

This CL also rename isActivityEmbeddingEnabled to
shouldEnableLargeScreenOptimization because the method
may report false even if the device supports the feature
but Settings app doesn't for performance concern.

Bug: 267725145
Bug: 279461170

Test: Build, perf metrics
Test: atest LauncherIronwoodIntegrationTests:android.platform.test.scenario.launcher.integration_tests.HomescreenCustomizationTests
Test: atest SettingsMultiPaneDeepLinkTest.java
Change-Id: I38e8c62a61a344eb7a5cbfd1cd2c2137357d1a87
2023-05-02 14:16:22 +08:00
Jason Chiu
5310c40640 Refine permission check process of 2-pane deep link
- Check the deep link activity instance before rediercting to the
  internal activity for the managed profile invocation so the caller
  can't bypass the permission check.
- Get the referrer as the caller so that onNewIntent can recognize the
  new caller and check if it has a permission to open the target page.

Test: robotest & manual
Bug: 268193384
Bug: 272437506
Change-Id: Ie69742983fb74ee2316b7aad16461db95ed927c2
2023-03-27 11:59:07 +08:00
Nikhil Kumar
71214f0457 Merge "SettingsHomepageActivity: Get profile parent using UM.getProfileParent" 2023-02-13 09:58:44 +00:00
Nikhil Kumar
69bc7b0438 SettingsHomepageActivity: Get profile parent using UM.getProfileParent
In the headless system user mode(hsum) non-primary users can also have a profile.
The existing implementation in SettingsHomepageActivity always gets the primary user as the profile parent, refactored the implementation to get profile parent using UserManager.getProfileParent.

Get parent user id instead of primary user as profile parent

Bug: 267299459
Test: croot && make RunSettingsRoboTests -j40
ROBOTEST_FILTER=SettingsHomepageActivityTest

Change-Id: I36845eb5b1a09b0ff3d87c7d08b120c95f59783b
2023-02-10 09:15:03 +00:00
Jiaming Liu
e65283de6a Fix build for jetpack update
Fix build for jetpack update

Bug: 265818545
Test: build

Change-Id: If48e7338ee560d995cb8bff7b5348ab36c457836
2023-02-03 02:37:42 +00:00
Diego Vela
a9394d1796 Update ActivityEmbedding usage.
Update ActivityEmbedding usage.

Bug: 259592300
Test: build.
Change-Id: I8e4aa8daf51cb9c669d06b152cc5a2fc69a06571
2023-02-03 02:34:20 +00:00
Calvin Pan
f03d4106fa Force Settings to align locales of embedded activities
Android 13 introduces the feature of per-app language that allows
users to set a preferred language for each app. However, Settings
embeds many activities from different apps, which may cause
multiple languages to be displayed on one Settings page.

Enable TaskLocaleOverride to align the locales of activities
launched in the same task.

Bug: 199277729
Test: Verified on Cuttlefish
Change-Id: I9ee2b8c481f9c0cb5f17eb1cea037317df35e9d9
2023-01-17 04:27:39 +00:00
Arc Wang
86afd10ada Merge "Check Uri permission for FLAG_GRANT_READ/WRITE_URI_PERMISSION" 2022-12-14 05:52:29 +00:00
Arc Wang
aef9355579 Merge "Allow 2-pane deep link to access unexported Activity" 2022-12-14 05:52:15 +00:00
Jason Chiu
79d282bbfb Merge "Revert "Remove FLAG_ACTIVITY_FORWARD_RESULT in 2-pane flow"" 2022-12-14 02:49:17 +00:00
Arc Wang
0c18e8990c Check Uri permission for FLAG_GRANT_READ/WRITE_URI_PERMISSION
To improve security, calling app must be granted Uri permission
if it sets FLAG_GRANT_READ/WRITE_URI_PERMISSION in the Intent of
ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY.

Bug: 250589026
Test: manual
Change-Id: I48f88c662b843212b1066369badff84cf98935a8
2022-12-13 21:21:42 +08:00
Arc Wang
1a49146508 Allow 2-pane deep link to access unexported Activity
If an Activity is not exported, the Activity still can be
launched by components of the same application, applications
with the same user ID, or privileged system components.

Bug: 261678674
Bug: 250589026
Test: manual visual
      Launcher -> context menu -> Wallpaper & style
Change-Id: I662df6cb287361b135e2c596abe946ddeb03bda4
2022-12-13 20:06:23 +08:00
Jason Chiu
8b1e5d9d7d Revert "Remove FLAG_ACTIVITY_FORWARD_RESULT in 2-pane flow"
This reverts commit ea1580f92b.

Reason for revert:
1. Search result trampoline should have that result sent back to the
reply target of the original activity.
2. To leverage the behavior of handheld's deep link case, large
screen's deep link should forward the result.

Change-Id: I55303070e35fc9430063655e0a9a0fd72e0823ac
2022-12-13 08:05:49 +00:00
Arc Wang
c3141fa911 Settings 2-pane deep link vulnerabilities
Settings app must not start an deep link Activity if
1. The deep link Activity is not exported.
or
2. Calling package does not have the permission to
   start the deep link Activity.

Bug: 250589026
Test: make RunSettingsRoboTests ROBOTEST_FILTER=SettingsHomepageActivityTest
Change-Id: I9a3bddfa5d9d1d2e924dd6f3e5e07dca6c11664f
2022-11-29 00:10:36 +08:00
TreeHugger Robot
7ced3c187d Merge "Use correct menu key highlights for safety center" into tm-qpr-dev am: b0f38d29d2 am: dada288047
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/20209766

Change-Id: Ie4bec451717442032411cad912810cbfd7a69baa
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-10-31 11:24:47 +00:00
Arc Wang
31eec49217 [Activity embedding] Fix unexpected finished 2nd layer problem
If Settings is started on an existing task, the existing SplitPairRule
may cause an unexpected app finish while navigating back from the
2nd layer page.

This change resets SplitPairRule in onCreate().

Bug: 247080168
Test: make RunSettingsRoboTests ROBOTEST_FILTER=SettingsHomepageActivityTest
      manual
      1. Settings app -> 'Connexted device'.
      2. Launch Settings app again from Settings icon in quick Settings.
      3. Start a 3rd layer from 'Network & internet'
      4. Click back and see if the 2nd lay shows.
Change-Id: I262327cc49c3a4434a183eb00ac57f47fa598f70
2022-10-31 05:48:45 +00:00
Simon Wingrove
ea8a4adc91 Use correct menu key highlights for safety center
Adds a menu key for the security deeplink, and adds a remapping to
ensure the correct key is used depending on if safety center is
available or not.

Bug: 253553761
Test: manually
Change-Id: I8ed9efd084e1fdfa298be1826a215218c84b1f4a
2022-10-24 10:08:52 +01:00
Jason Chiu
2118ea589b Support target intent data relay in SearchResultTrampoline
Bug: 240391954
Test: manual & robotest
Change-Id: I2798839dd03f3f2fd165c8cba86b748aa6257804
2022-08-22 18:16:11 +08:00
Arc Wang
95401fbade Merge "Remove FLAG_ACTIVITY_FORWARD_RESULT in 2-pane flow" 2022-08-11 01:17:03 +00:00
Arc Wang
ea1580f92b Remove FLAG_ACTIVITY_FORWARD_RESULT in 2-pane flow
Settings$CreateShortcutActivity does not necessary to be
displayed in 2-pane and it seems no scenario needs the flag
Intent.FLAG_ACTIVITY_FORWARD_RESULT.

Bug: 241346847
Test: build pass
Change-Id: I7a8fca61b453db70233b151711df516649424e3a
2022-08-10 16:14:11 +08:00
Chaohui Wang
0441f990f9 Merge "Remove the redundant constructor of SuggestionFeatureProviderImpl" 2022-08-08 06:47:18 +00:00
Arc Wang
be2ea9eb39 Avoid 2-pane deep link before gone through Setup Wizard
To improve security.

Fix: 238391432
Test: manual
      Flash ROM and check 2-pane bebavior
Change-Id: If96c645319d9df45930644fd438cf479462685b0
2022-07-27 11:27:33 +08:00
Chaohui Wang
80a11a251e Remove the redundant constructor of SuggestionFeatureProviderImpl
Fix: 175167313
Test: robotest
Change-Id: I7ebbaf92398a8300971d592e2ee7a6e0d82c1d2f
2022-07-13 03:44:26 +00:00
Jason Chiu
27c6b55ac5 Remove FLAG_ACTIVITY_NEW_DOCUMENT when starting the deep link
If an app starts a Settings deep link with FLAG_ACTIVITY_NEW_DOCUMENT,
FLAG_ACIVITY_NEW_TASK is auto-appended by frameworks which causes a
SecurityException on the 2-pane design because starting a new task on
the right pane is not allowed.

Deep links in the 2-pane design will clear the top activities, which has
the same UX behavior of setting FLAG_ACTIVITY_NEW_DOCUMENT, so we remove
the flag in this case.

Fix: 233917580
Test: start account page via Assistant
Change-Id: Idcbeb96e441592d48686f18f3433864f2c14832a
2022-06-14 02:45:49 +00:00
Jason Chiu
26588fc2e5 Fix the work profile's deep link problem
- Settings shows the work Homepage while starting the work profile's
  icon, which is not allowed.
- Clicking work apps' App info plays an unsmooth window transition
  animation.

Fix: 233296965
Test: manual, robotest
Change-Id: I3d12f6c59692c4a4cc718ea7022b60be50235abb
2022-05-20 12:05:32 +08:00
Jason Chiu
44aab7c55f Merge "Refine the homepage app bar layout" into tm-dev 2022-05-16 02:01:20 +00:00
Jason Chiu
8847c3186a Refine the homepage app bar layout
- Polish the app bar mask on homepage
- Move the Suggestion card to the position below the search box

Fix: 224435133
Fix: 230284145
Test: robotest, visual

Change-Id: I0a4fd86230fb773a28ca1d9799f3c631a81a11cb
2022-05-13 09:37:00 +00:00
Jason Chiu
1b1c07afc4 Support the managed profile deep links for large screen
Homepage is not allowed to be started as a non-primary user.

In the managed profile deep link case, we create a bridge to start the
homepage as the primary user, and then start the target page as the
given managed user.

Bug: 222447112
Test: manual, robotest
Change-Id: I07dbec3b7eaff983f9860480a0a2f7b0e6f1fb43
2022-05-13 17:00:45 +08:00
Tsung-Mao Fang
f4514b9fbf Fine tune background color for dual pane in homepage
Follow the spec and change the background color.

Test: See the screen
Bug: 223329504
Change-Id: Ibcbf0e898ae949e1354f5af810a2347eba42b508
2022-04-01 13:35:17 +08:00
Jason Chiu
680fce3acd Refine layouts for large screen
- Support dynamic paddings depending on app's screen width
- Add round corners to homepage ripple effect to improve the transition
  of being highlighted
- Add an interface to support dynamic split layout for suggestion cards

Bug: 223300824
Test: robotest, manual
Change-Id: Iaca6b4fd3f7369179416ef084a800d7eb2ee4640
2022-03-30 04:54:30 +00:00
Jason Chiu
177573c892 Enhance Settings deep link transition
Since the deep link mechanism uses a trampoline activity to redirect the
target activity, and the targeting activity is launched in a separate
task, there will be two transitions played, where one is the splash
screen with the trampoline acitvity and another one is the task
transition. This makes the UX weird.

To avoid this, this CL tries to make the targeting activity launch in
the same task as the trampoline acitivity by removing the taskAffinity,
so there won't be a task transition.

Fix: 215275940
Test: Create a settings shortcut on the home screen and launch it.
Change-Id: I7621ab9f1132acbf619495801a3b985c5c3b1b5d
2022-03-24 12:42:01 +08:00
Jason Chiu
764e7fbc44 Prevent scrolling after the homepage recreating
- Only apply the layout transition when contextual home is enabled
- Do not scroll for highlighting when the homepage is recreated and
  never scrolled

Fix: 222238012
Bug: 222473415
Test: robotest, manual
Change-Id: I490c3f8dbca63a5250bae01555592b7795c90af2
2022-03-14 15:13:08 +08:00
Tsung-Mao Fang
32c1fc76d8 Fix unable to scroll to the bottom page
We should set padding for root view instead of margin.

Test: Verify the behavior is correct in single pane
and two panes mode.
Fix: 221422906

Change-Id: I17a63be6e536ffcf39744b2e98dc1ea2723ebf1d
2022-03-01 11:51:03 +00:00
Tsung-Mao Fang
39c8905f4c Fix incorrect colored bar when task bar is hidden
Set backgorund color on content id view instead of homepage view.
Also setup edge to edge for the homepage.

Fix: 215440529
Test: See correct ui on the two pane mode and regular phone.
Change-Id: I2d5988a489410e9620137bd6cf9607768787d4fc
2022-02-23 10:41:14 +00:00
Tsung-Mao Fang
13a76eb84e Update new API for checking the embedding status
Test: Make sure behavior is correct as it was in
search flow, higlight flow, regular settings flow, split screen flow.
Bug: 204399167

Change-Id: I7fc29c8cdbfc6682963591f4ff805070bea4ca22
2022-01-12 15:00:07 +08:00
Jason Chiu
11d3b19c51 Fix the highlight error after unfolding the device
Unfolding a device generates mutiple lifecycle events and resets the
highlight key.

Check if there's only one activity in the task and then perform the
reset.

Fix: 209016927
Test: manual
Change-Id: I49988fa913270d35a04436777433b7669afb72df
2021-12-10 22:37:22 +08:00
Jason Chiu
8c559c2788 Fix the highlight error and remove the empty card
Fix: 209918251
Test: manual
Change-Id: I2a5afceea18cd4e1009114091433a2da22ac105e
2021-12-09 15:09:09 +08:00
Jason Chiu
627fd3928c Improve the cold start performance
The performance regressed since the previous change that hide the
homepage view from using View.GONE to View.INVISIBLE

This change only initializes the list views in the invisible homepage
view to prevent a scroll flicker when scrolling is needed.

Test: manual
Bug: 206555277
Bug: 205823792
Change-Id: I8f173b135cfa1d27a1362d5fa8e3f338e2428ad2
2021-12-03 17:12:08 +08:00
Jason Chiu
a305c23f5e Revise homepage highlight mechanism
- Create TopLevelHighlightMixin to handle highlight actions and simplify
  TopLevelSettings
- Fix the error highlight and the flicker after screen rotation
- Postpone creating the fragment until it's needed to accelerate the
  initialization and to fix the search highlight function breakage after
  toggling light/dark mode
- Register activity embedding rules only once for injection and
  wallpaper
- Do not highlight Tips & support since it's full screen
- Refactor ActivityEmbeddingRulesController

Bug: 207316936
Test: manual, robotest build pass
Change-Id: If322ec180b03ee123987c70779a25c6a570d9faf
2021-12-03 12:04:48 +08:00
Tsung-Mao Fang
395ea90b83 Update background color for two-pane mode
Update background color for status bar and
homepage background programically.
Also, we update the backgroud color for highlight items.

Test: Rebuilt apk and see the screen.
Bug: 195293058
Change-Id: Id100f8c9c7fc02c43420afcca07a703a14ec2312
2021-12-01 16:39:09 +08:00
Charles Chen
a8c97980a6 Fix different behaviors of deeplink in one/two pane
Test: manual - Reproducible steps mentioned in bug
fixes: 207740082
Change-Id: I1163e38c177307ccac8798eb649271d0466ab1c8
2021-11-26 07:54:42 +00:00
Tsung-Mao Fang
251e326d21 Redesign homepage layout for two-pane mode.
In a high level, I created two versions of app bar layout.
One for single pane design, another for two-pane design.

Then, app initilizes two different layouts in the beginning,
we simply show/hide one version while app is receiving the
configuration changes update.

Test: Rebuilt apk and observed the screen.
Bug: 195293058
Change-Id: Icd19ea02ab1be4e964701b22ae9e20c9e00d3c0d
2021-11-18 21:07:26 +08:00
Jason Chiu
a3b21cf017 Start deep link page synchronously in SettingsActivity
- Use a synchronous API to make SettingsActivity start deep link intent
  in onCreate
- Change SettingsHomepageActivity from an alias to a real activity
- Clean up redundant codes

Fix: 206585572
Test: Manual, robotest build pass
Change-Id: Idf42c026f593bb5801a13cae250d1523030b7092
2021-11-18 12:20:08 +08:00
Jason Chiu
3af73364ba Support highlighting the menu entry for Search results
1. Add a receiver to monitor the search state
2. Shoe/hide the menu highlight in the listener
3. Highlight the menu entry in SearchResultTrampoline
4. Enable/disable the receiver in SettingsInitialize

Bug: 205781792
Test: manual, robotest
Change-Id: Ia04901f504172f4f0c7b4b2ea7eda5f3713f676d
2021-11-11 14:33:26 +08:00
TreeHugger Robot
244df10d90 Merge "Fine tune the homepage scrolling behavior" into sc-v2-dev 2021-11-05 11:22:49 +00:00
Jason Chiu
ae5327d4bb Fine tune the homepage scrolling behavior
Scroll to the highlight position before showing homepage.

Bug: 199017944
Bug: 204946469
Test: visual
Change-Id: I11708f42180a3af22855ac7b5f53460f737ed208
2021-11-05 18:21:59 +08:00
Arc Wang
488f79cab5 [Large screen] SplitListener may not provide correct information
SettingsActivity may send Settings 2-pane deep link Intent to
SettingsHomepageActivity if split callback tells that there is no
SplitInfo.

Wallpaper app sends deep link Intent to SettingsHomepageActivity,
and then SettingsHomepageActivity starts Wallpaper app page.
The flow should be 2-pane organized but the split callback tells
that splitInfos is empty.

This change checks if the Intent is from SettingsHomepageActivity
to prevent the Intent loop by the bug.

Bug: 205206004
Test: manual
      Long click Launcher -> Wallpaper & style
Change-Id: I6b9d76c136238e556384e891ae1700ae7c1bb41f
2021-11-05 11:07:33 +08:00
Arc Wang
e80b74de3a [Large screen] Check if it's in 2-pane before 2-pane deep link flow
The callback of SplitStateObserver.SplitStateListener can have one
or more active splits when there is already 2-pane in Activity stack.

This change prevent unnecessary 2-pane deep link flow if the Activity
is already in 2-pane activity stack.

This solution does not work if the Activity was started in a new task.
(e.g., Intent.FLAG_ACTIVITY_NEW_TASK, launchMode singleTask).

Bug: 201379454
Bug: 201620626
Bug: 204398432
Bug: 204397936
Bug: 197609195
Bug: 197609197
Bug: 204501179
Bug: 204959335
Bug: 204845334
Test: manual
      1. Settings -> Apps > Default apps > Opening links.
      2. Click back button should back to Default apps page.
Change-Id: I04aaceed47a8f2754a4e17c53b49252f61e0a1d1
2021-11-04 17:20:17 +08:00