Commit Graph

156 Commits

Author SHA1 Message Date
Roy Chou
2f1a7d6155 chore(onefingerpan): update onefingerpan preference summary and magnification settings page footer description
Based on b/338409557#comment5, we update the onefingerpan toggle's
summary, and make the magnification settings page's footer HTML
description be dynamic based on one finger panning preference state.

Bug: 338409557
Flag: com.android.server.accessibility.enable_magnification_one_finger_panning_gesture
Test: manually
      atest MagnificationOneFingerPanningPreferenceControllerTest
      atest ToggleScreenMagnificationPreferenceFragmentTest
      atest ToggleFeaturePreferenceFragmentTest
Change-Id: I817cad4fb0c034bcd2db0485ca27c30ea88a0280
2024-06-25 14:22:27 +00:00
Chun-Ku Lin
88414d4e4b Replace Magnification preview
Bug: 326229430
Bug: 324312956
Test: manual (View the image on the Magnification page in DT/LT)
Flag: EXEMPT low risk
Change-Id: I991104a2aaf2768ded9fb57d88a93ae725d60303
2024-05-29 01:44:48 +00:00
Chun-Ku Lin
3c822399ae Merge "Pass user preferred shortcut types when launching the AccessibilityShortcutsTutorial." into main 2024-05-22 23:17:50 +00:00
Chun-Ku Lin
09efbe453c Pass user preferred shortcut types when launching the
AccessibilityShortcutsTutorial.

**Root cause**
When toggle the shortcut, it asks the AccessibilityManager to turn on
the shortcut and update the Settings data. Internally, the
AccessibilityManager delegate the work to AccessibilityManagerService
via a oneway binder call.

In the past, when launching the AccessibilityShortcutsTutorial, we
assume the shortcut selection are saved in the Settings before launching
the AccessibilityShortcutsTutorial. So we pass whatever are in the
Settings as what the user has selected to the tutorial.
This is not true anymore since we use the oneway AIDL call to do the
updates. The data in Settings may not yet be  updated before we use it to
launch the tutorial.

Since the user preferred shortcuts are always set before we attempt to
launch the AccessibilityShortcutsTutorial, we can rely on it instead of
the Settings value to launch the AccessibilityShortcutsTutorial for the
selected shortcut options.

**Changes in this cl**
- Mechanical refactor to extract the lines to get the user preferred
  shortcut into a method.

- Use the new method to grab the shortcut options to pass to the
  AccessibilityShortcutsTutorial to prevent the crash.

Bug: 341176890
Test: manual
    - Modify the AccessibilityManagerService locally to delay processing
      the request to update the shortcut options in Settings data
    - Turn on the shortcut toggle, and verify the app won't crash

Test: atest com.android.settings.accessibility
Flag: EXEMPT bugfix (low risk + mechanical refactor)
Change-Id: Id3cc4cc5f6667061545955881632544472aedd95
2024-05-21 23:33:55 +00:00
Roy Chou
a511ddb75a chore(magnification suw): hide joystick toggle in setup wizard
Although we haven't implemented joystick feature, but the joystick
preference controller is already in the codebase, so we also add hiding
logic for joystick toggle when in setup wizard.

Bug: 340721852
Flag: NONE
Test: manually
      atest MagnificationJoystickPreferenceControllerTest
Change-Id: Ife93548583c3e82eac030e6e3aa55b9f643b055a
2024-05-21 03:37:37 +00:00
Roy Chou
f094c19d0a chore(magnification suw): hide one finger pan toggle in setup wizard
Bug: 340721852
Flag: NONE
Test: manually
      atest MagnificationOneFingerPanningPreferenceControllerTest
Change-Id: Ic9b44d73f75b47e6b97c5f4994b2e0b23bfb623b
2024-05-21 03:37:12 +00:00
Roy Chou
c9d3b39a62 refactor(magnification suw): hide follow typing toggle in setup wizard
Originally we cache mFollowingTypingSwitchPreference in fragment so in
ToggleScreenMagnificationPreferenceFragmentForSetupWizard we can set the
preference visible to false to hide it. After creating MagnificationFeaturePreferenceController,
the MagnificationFollowTypingPreferenceController can extend it and
check isInSetupWizard internally then dicide whether to hide. Therefore,
we don't need to cache mFollowingTypingSwitchPreference in fragment
and let the fragment control the preference visibility anymore.

Bug: 340721852
Flag: NONE
Test: manually
      atest MagnificationFollowTypingPreferenceControllerTest
      atest ToggleScreenMagnificationPreferenceFragmentForSetupWizardTest
      atest ToggleScreenMagnificationPreferenceFragmentTest
Change-Id: I44f7f0589b2df3d83a27139323fc68a0561f1cfa
2024-05-21 03:36:51 +00:00
Roy Chou
3761f61c7e chore(magnification suw): hide always on toggle in setup wizard
Bug: 340721852
Flag: NONE
Test: manually
      atest MagnificationAlwaysOnPreferenceControllerTest
Change-Id: I39868ac1d4423584e43473683db20a2259311049
2024-05-21 03:36:38 +00:00
Roy Chou
9780020f6b chore(magnification suw): create MagnificationFeaturePreferenceController
Add a new abstract class MagnificationFeaturePreferenceController
that extends TogglePreferenceController, to wrap inSetupWizard
setter/getter. Then for magnification feature preference controllers
like alwaysOn or followTyping, they can just check isInSetupWizard to
decide whether hiding in setup wizard.

Besides, in ToggleScreenMagnificationPreferenceFragment we cache a flag
mInSetupWizard when fragment created, so we can pass the info to the
preferece controllers when creating them.

Bug: 340721852
Flag: NONE
Test: build pass
Change-Id: I05c59a766219862117d2a6ede775d68a4c3dedac
2024-05-21 03:36:06 +00:00
Roy Chou
7288884b6e Merge "fix(magnification suw): followTyping preference should be hidden in magnification suw page" into main 2024-05-02 05:44:58 +00:00
Roy Chou
e4fb6b93a4 fix(magnification suw): followTyping preference should be hidden in magnification suw page
In ag/26349366 we wrapped the follow typing prefernce creation into new
method, but in the new method we didn't assign the created preference to
mFollowingTypingSwitchPreference. So
ToggleScreenMagnificationPreferenceFragmentForSetupWizard can not access
the preference object to hide it. Therefore, as a short-term solution we
assign the created preference to mFollowingTypingSwitchPreference. For a
long-term plan we should not create a preference and hide it in suw,
instead we don't need to create that preference. (tracked in b/335788167)

Bug: 335788769
Flag: NONE
Test: manually
Change-Id: Ideef93127343b7d1105a63006d343cd5ef66de08
2024-04-19 09:04:58 +00:00
Roy Chou
acf98a6a4a feat(onefingerpan): hide the one finger pan settings when window mode only
Like MagnificationAlwaysOn toggle behavior, when the magnification
capability is window-mode only we'll hide the OneFingerPan toggle too.

Also do a small refactoring in MagnificationOneFingerPanningPreferenceControllerTest

Bug: 333821725
Flag: ACONFIG com.android.server.accessibility.enable_magnification_one_finger_panning_gesture TEAMFOOD
Test: manually
      atest MagnificationOneFingerPanningPreferenceControllerTest
      atest ToggleScreenMagnificationPreferenceFragmentTest
Change-Id: I8684b5bae5cbfc5b75fc4c14d2e9173b17d0fb02
2024-04-15 07:16:57 +00:00
Daniel Norman
27607a47a5 Merge "fix(magnification): make always on toggle unavailable when capabilities is window only" into main 2024-03-29 19:09:35 +00:00
Roy Chou
1c898252cb fix(magnification): make always on toggle unavailable when capabilities is window only
As b/328787031, we make the MagnificationAlwaysOnPreferenceController observe the magnification capabilities then update the preference enabled state. Therefore, when changing the capabilities to window mode only, the preference will become unavailable.

We use the bug-fix flag to verify the fix with rollout process.

Bug: 328787031
Flag: ACONFIG com.android.settings.accessibility.hide_magnification_always_on_toggle_when_window_mode_only DEVELOPMENT
Test: manually flip the flag
      atest MagnificationCapabilitiesTest
      atest ToggleScreenMagnificationPreferenceFragmentTest
      atest MagnificationAlwaysOnPreferenceControllerTest
Change-Id: I1a25f80131d84ecdd927030e40a18ebb32b7862f
2024-03-26 05:11:06 +00:00
Chun-Ku Lin
4c9d268fdf Rename AccessibilityGestureNavigationTutorial to AccessibilityShortcutsTutorial
AccessibilityGestureNavigationTutorial is not only for displaying
tutorial for accessibility gesture shortcut. It's used for display the
tutorials for all the selected accessibility shortcuts. Renamed the
class to match it's responsibility.

Bug: N/A
Flag: EXEMPT Strict mechanical refactors
Test: build succeed locally

Change-Id: I1dd212abc660454e77f18f770c2ecc17be320eaa
2024-03-26 01:13:28 +00:00
Chun-Ku Lin
3aee92e2e8 Update a11y edit shortcut screen's text and tutorial text
Bug: 323792194

Test: manual
Test: atest com.android.settings.accessibility
Test: atest com.android.settings.accessibility.shortcuts

Flag: N/A simple string changes

NO_IFTTT=Introduce new IfThisThenThat lint

Change-Id: I7ba4096d669453c33257880407e85ffe76d358f8
2024-03-25 22:19:10 +00:00
Chun-Ku Lin
8b67c17a7b Show QS shortcut option if the a11y feature provides a tile.
Bug: 314852953
Test: atest com.android.settings.accessibility
Test: atest com.android.settings.accessibility.shortcuts
Test: manual
Flag: ACONFIG android.view.accessibility.a11y_qs_shortcut STAGING
Change-Id: Id7a6b3adfd4c4f3cb2b9f7fe15269b57a3d00543
2024-03-06 20:26:28 +00:00
Isaac Chai
46369353ed Adding Settings preference for single finger panning feature
Test: Locally tested on device +
MagnificationOneFingerPanningPreferenceControllerTest
Bug: 282039824

Change-Id: I1d1a649060cba862c8f333e6e76184fade2dcdce
2024-03-05 19:10:59 +00:00
Roy Chou
654e43b2e8 chore(magnification): remove onResume overrides for controllers in ToggleScreenMagnificationPreferenceFragment
As b/186731461, so far MagnificationModePreferenceController and other
magnification preference controllers are only used in
ToggleScreenMagnificationPreferenceFragment, which is DashboardFragment.
Since DashboardFragment already updates preference state in its
onResume, so we can remove the onResume overrides in those controllers.
Besides, we can also remove the LifeCycle dependency for the controllers
since it's not used anymore.

Bug: 186731461
Flag: NA
Test: manually
      atest ToggleScreenMagnificationPreferenceFragmentTest
      atest MagnificationAlwaysOnPreferenceControllerTest
      atest MagnificationFollowTypingPreferenceControllerTest
      atest MagnificationJoystickPreferenceControllerTest
      atest MagnificationModePreferenceControllerTest
Change-Id: I379a6a3a985c9d8b7a37bbb878b84cee1bd6adfb
2024-03-04 03:44:59 +00:00
Chun-Ku Lin
1d1b9e451f Move the default shortcut types in a separate utility method.
Bug: 322701168
Test: atest
Flag: N/A (Strict mechanical refactors, no behavior change)
Change-Id: I1beb36e5aeeec0f303228b57baf034a000a72b75
2024-01-29 02:17:49 +00:00
Chun-Ku Lin
64e946c7fa Convert a11y shortcut edit screen to a full screen.
Bug: 300302098

Flag: adb shell device_config put accessibility com.android.settings.accessibility.edit_shortcuts_in_full_screen true

Test: manual
Test: atest com.android.settings.accessibility.shortcuts

Change-Id: I0b5e367fed962ff01036122ce7ff32a8ae47fbc3
2023-12-14 20:50:33 +00:00
Jean Chen
097d8a891b feat(MultiFingerMultiTap): Update shortcut string to double tap from triple tap
Bug: 315264770
Test: manual
Change-Id: I1130271d06bac71f23a137c83149ee3363a1cc0e
2023-12-08 10:12:43 +08:00
Daniel Norman
01e624c76b Adds a summary to the (screen) Magnification preference for the main A11y Settings page.
This helps differentiate this from other magnification tools.

Reuses (and slightly modifies) the `magnification_feature_summary`
string which was not used by any existing code. This helps ensure
the existing localizations should be close enough, until L10n
translators have time to update based on the new shorter version.

Bug: 303499185
Test: ToggleScreenMagnificationPreferenceFragmentTest
Test: Open Settings > Accessibility, observe summary
Change-Id: If5ee4f937bbd655b425d4767ad8bbcef08dbe345
2023-12-06 01:10:52 +00:00
Jean Chen
48d73aa3f3 feat(MultiFingerMultiTap): Add two-finger triple-tap shortcut on magnification dialog
The shortcut is separate from single-finger triple-tap. It’s under hardware shortcut and above/outside of Advanced section.

Bug: 297805269
Test: manual
Test: atest ToggleScreenMagnificationPreferenceFragmentTest
Change-Id: Id74cf3e457c04e167f3100d977b6c70c5d601026
2023-10-25 13:30:27 +00:00
Chaohui Wang
cfdb3b1f1b Migrate new() to SwitchPreferenceCompat
Bug: 306658427
Test: manual - on Settings pages
Change-Id: I258a8c63d5c46403c6d333a9d2f34c33cb35e27f
2023-10-24 14:05:34 +08:00
Chun-Ku Lin
b65108ba1b Split the string resource id for non-generic accessibility preference.
- Keep the accessibility settings strings the same as in U.

Bug: 289425138
Test: manual
Test: atest
Change-Id: Iddbbfe627c93529d2421e153094a30628229c4bc
2023-08-08 19:17:54 +00:00
Jean
137cc9af68 Set the shortcut size to large when user enabled Magnification
Set the settings shortcut size to large when the Magnification shortcut it enabled. Provide users with the large size as the default, which is easy to see.

Bug: 283844702
Test: manually - attach videos in the bug
Test: atest ToggleScreenMagnificationPreferenceFragmentTest
Test: make RunSettingsRoboTests ROBOTEST_FILTER=ToggleScreenMagnificationPreferenceFragmentTest
Change-Id: I8fac5780b8388b1b4f124cffbdd305235f035e72
2023-07-11 02:21:09 +00:00
Chun-Ku Lin
b8084ecfcd Unified service and shortcut state summary on a11y settings page.
Bug: 210026562
Test: manual
Test: atest

Change-Id: I4d5ff6b10d6bfd2fe6b3de1849d00a9d084bf269
2023-05-23 22:19:55 +00:00
Roy Chou
3b963fee25 Merge "chore(#AlwaysOnMagnification): hardcode the feature flag default true" into udc-dev am: 412c248c10 am: 32a2e30074
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/23199816

Change-Id: Ifcb580e3e5379a4e33ce753425582e74ca535925
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-05-12 17:38:43 +00:00
Roy Chou
0aa67ede68 chore(#AlwaysOnMagnification): hardcode the feature flag default true
Set the feature flag getter default return value to be true to rollout to public. We keep the checking code so that it's still remote controllable.

Bug: 281788002
Test: manually test with adb command
Change-Id: Ie7f32721cf99d8a97c11f0f9c6d0d466c083d668
2023-05-12 15:57:56 +00:00
Chun-Ku Lin
b7d513b84d Remove unused MagnificationPreferenceFragment and its related controllers
Bug: 277258376
Bug: 270481978
Test: manually on Pixel & AOSP
Change-Id: I1e0bbecf78290b85e464a4a5de658184eb91ca2c
2023-04-12 00:51:45 +00:00
Lifu Tang
caa1b51ef2 Revert "Remove duplicate strings."
Revert submission 19748582-settings_yesno

Reason for revert: Common strings in English could be translated into different strings in other languages.

Reverted changes: /q/submissionid:19748582-settings_yesno

Bug: 272603842
Test: build and open Settings app
Test: atest SettingsRoboTests
Change-Id: Iaad301c5513478fb95e40987ea3ccb4f923d71fa
2023-03-15 22:39:24 +00:00
Arc Wang
1596a2838d Allow Magnification Settings launch from outside of AccessibilitySettings
Before this CL, Magnification Settings can only be
launched from MagnificationPreferenceController.

This CL initializes FooterPreferenceController if the
parent class does not initialize it from Intent extras.

Bug: 268411305
Test: manual
      make RunSettingsRoboTests ROBOTEST_FILTER=MagnificationGesturesPreferenceControllerTest
      make RunSettingsRoboTests ROBOTEST_FILTER=ToggleScreenMagnificationPreferenceFragmentTest
Change-Id: I954739c39c823ce7fe0daa711743f729d182571b
2023-02-24 15:56:43 +08:00
menghanli
bea25c7513 Fix certain Accessibility Settings subpages use wrong resources
Root cause: Portrait mode does not always respect the sw600dp qualifier and instead uses the phone (default) resources.
Solution: Using the product to customize the tablet and phone cases is better way than using the configuration qualifier.

Bug: 269130587
Test: Manual testing
Change-Id: I90cc44f1e9bccf8950a4d89f70119ba5e3c0bfdc
2023-02-14 17:13:36 +08:00
Tyler Freeman
35def91fcc Merge "feat(#MagnificationJoystick): add preference for enabling Joystick to Settings" 2023-02-11 01:04:00 +00:00
Tyler Freeman
43d5042ff9 feat(#MagnificationJoystick): add preference for enabling Joystick to Settings
Hide behind feature flag so no one sees the preference unless its enabled.

Bug: b/265688847

Test: atest MagnificationJoystickPreferenceControllerTest

Change-Id: Id5cc9385f25395f53809a79ba70c84205f9758c2
2023-02-10 19:19:11 +00:00
Chaohui Wang
caa04b6303 Revert "Fix Java 8 un-compilable code."
This reverts commit c9fc8bca94.

Reason for revert: No longer need Java 8 compilable

Change-Id: I4ada6a74c7030899a8c5fb646440acee79149dce
2023-02-09 06:07:20 +00:00
Zaiyue Xue
c9fc8bca94 Fix Java 8 un-compilable code.
Test: manual
Change-Id: I84cabab4d2753202143175d838d635c69daf090e
2023-02-08 16:09:16 +08:00
Tyler Freeman
36557e9810 fix(#AlwaysOnMagnifier): update state when setting is changed outside the app
Refactor to keep track of all controllers and notify them all when a key
changes, similar to ColorAndMotionFragment.java

Bug: b/265086261
Fix: 267433655

Test: atest packages/apps/Settings/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java
Change-Id: Id44d1d4074318aff8c4c4bc6f07d65b3e0ffc561
2023-02-07 23:14:54 +00:00
Tyler Freeman
193b366ed6 feat(#AlwaysOnMagnifier): add preference for enabling Always On Magnification to Settings
Hide behind feature flag so no one sees the preference unless its enabled.

Defaults to enabled.

Bug: b/265086261

Test: manual

Change-Id: Ic32353f2b139772fe905137c9ec137925ef6ebb9
2023-01-31 21:48:49 +00:00
Kweku Adams
5949fccc7a Remove duplicate strings.
"Yes" and "no" were redefined many times with no clear benefit, so this
consolidates them into one definition.

Bug: 243843096
Test: Build, install, and open the Settings app
Test: atest SettingsRoboTests
Change-Id: I5f84d09f223efd478461ded93aeac82bf7b128d8
2022-08-26 00:07:08 +00:00
jasonwshsu
8145631ab8 Migrate to DashboardFragment in ToggleFeaturePreferenceFragment
Root Cause: ToggleFeaturePrefreferenceFragment becomes heavy when more and more features come in.

Solution: Mirgrate to DashboardFragment, a plugin-style preference controllers, can help us separate the preference and its logic into its own controller.

* This is the first step for the whole migration. Change to extend DashboardFragment and fill up the missing override functions.
* Reorder fields and functions to the recommended general approach.

Bug: 171272809
Test: make RunSettingsRoboTests
ROBOTEST_FILTER=com.android.settings.accessibility

Change-Id: I852091700a4b3b3c7bbdbc82f0b5dc47c087d61c
2022-07-13 00:40:55 +08:00
Edgar Wang
68d12953e7 Update learn more string of FooterPrefernce
Replace FooterPreference#SetLearnMoreContentDescription() with
FooterPreference#SetLearnMoreText().

This is a requirement: All links, controls, and buttons should
also have comprehensible text or tooltip text, so users can identify its
purpose, independent of context, such as when using the URL list from
TalkBack’s local context menu.

Bug: 215045903
Test: manual & robotest
Change-Id: Ib657ba336c5688c1434a58611dea3891001afe14
2022-05-13 08:13:36 +00:00
jasonwshsu
87e0b3c7e5 Correct Magnification shortcut title in edit shortcut dialog
Root Cause: Magnification has its own edit shortcut dialog, but we did not
update correct title with getShortcutTitle()

Solution: set dialog title to getShortcutTitle()

Bug: 231531313
Test: manual test
Change-Id: I0679be2807a4b1f8b8a733604e16a35b0a1258c3
2022-05-12 17:33:07 +08:00
jasonwshsu
e48ebb9755 Correct Magnification shortcut title
Root Cause: Magnification has its own ShortcutPreference, but we did not
update correct title with getShortcutTitle()

Solution: Call setTitle(getShortcutTitle()) in initShortcutPreference()

Bug: 228752572
Test: manual test
Change-Id: I85b09a22032bad0a0c840590a98be88538a0499b
2022-04-25 02:53:15 +08:00
menghanli
50520c2d3f Fix inconsistent shortcut strings on accessibility setting and edit dialog
Root cause: Base class provides an override function for accessibility settings shortcut preference. But, it cannot update to the edit dialog.
Solution: Refine the resilience function and base class apply into accessibility settings shortcut preference and edit dailog.

Bug: 228830417
Test: Manual testing on all accessibility page and edit dialog
Change-Id: I84bc63a39cd9cfa7e12944dff20ee6b92879008d
2022-04-15 00:31:03 +00:00
PETER LIANG
d4cd689c8f Merge "Fix that holding volume buttons to activate Extra dim feature doesn't do anything." into tm-dev 2022-03-25 14:06:00 +00:00
mincheli
57b35f9f35 Hides the settings entry in Magnification Settings if window magnification feature is not supported
If the device doesn't support window magnification featue, we
should hide the settings entry in mangification settings

Bug: 213414385
Test: atest ToggleScreenMagnificationPreferenceFragmentTest
Change-Id: I73f087da54cd2930c049dabb6b843c3b373e3c20
2022-03-21 22:48:34 +08:00
Peter_Liang
f94762176f Fix that holding volume buttons to activate Extra dim feature doesn't do anything.
Root cause:
Original framework design which has 3 seconds restriction to prevent users from easily triggering the accessibility volume shortcut when first time using it.

Solution:
The system would bypass the 3 seconds restriction if users manually set any feature as the volume key shortcut.

Bug: 202602908
Test: make RunSettingsRoboTests ROBOTEST_FILTER=ToggleFeaturePreferenceFragmentTest
Change-Id: I324321577263904b6ff8b66e411766d16a6430dc
2022-03-17 15:49:45 +08:00
menghanli
99a9171108 Customized accessibility framework features quick setting tooltips content
- Lowercase for one-handed mode, color correction, color inversion, extra dim in quick settings tooltips if these words are not first words.

Bug: 220655084
Test: make RunSettingsRoboTests ROBOTEST_FILTER=AccessibilityShortcutPreferenceFragmentTest ToggleFeaturePreferenceFragmentTest LaunchAccessibilityActivityPreferenceFragmentTest ToggleAccessibilityServicePreferenceFragmentTest
Change-Id: I309ca48cecb80942112c9d5adde5857c062706c8
2022-03-10 06:40:54 +08:00