Commit Graph

351 Commits

Author SHA1 Message Date
Edgar Wang
329b20a445 Add metrics log for special cases in Lanugages & About page
Bug: 137559984
Test: robotest

Change-Id: I007282d8c4d5f9c6168dd84f6feee7e237ec7c42
2020-04-30 17:19:52 +08:00
Edgar Wang
0934babbfc Make the fragment title can’t searchable
we shouldn't take users so deep into the settings IA because it's easy
to feel lost in settings after clicking on a result without additional
context.

Bug: 143055215
Test: robotest & manual
Change-Id: I337cb5ead31e1e4e7bf9be78132e90630f83ee43
2020-02-06 19:07:11 +08:00
Edgar Wang
e19ee9a01f Revert "Settings search - Navigate user to exact page"
This reverts commit 08f2a58459.

Reason for revert: design changed, we decide to take the user to
the entry after clicking on a search result.
It's opposite with what we did, so we revert related CL first.

Test: robotest

Change-Id: Iadb9a94a7ef7838be34a54499e2d934d6396c336
2020-01-16 14:07:38 +08:00
Edgar Wang
08f2a58459 Settings search - Navigate user to exact page
- remove duplicate index preference
- default set searchable = false when the preference has fragment
- make some fragments indexable

Bug: 143057584
Test: robotest & manual

Change-Id: I4d64f6106d2f92f0a45e8c7e26388677f593f412
2019-12-24 21:04:11 +08:00
Raff Tsai
f71db73025 Implement work-profile infra in BasePreferenceController
- Add settings:forWork in xml
- Set mIsForWork based on xml attribute
- Delete WorkProfilePreferenceController and move its function to
BasePreferenceController

Fixes: 123376083
Test: Add work profile, go to Settings->System->Language&input,
UI should show work profile related items
Change-Id: Id2dcbb0e158c117cdfd363466a275f4e133c345e
2019-12-10 09:32:37 +08:00
Raff Tsai
966fa01423 Use SettingsLib Indexable
- Use SettingsLib Indexable
- Directly use resource id in getPreferenceScreenResId

Bug: 135053028
Test: roboletric
Change-Id: I05f493b55e8b6e2091301e9231ba5615215618e6
2019-09-25 18:24:56 +08:00
Raff Tsai
ac3e0d0988 Directly use BaseIndexableProvider
- Add function getXmlResourceId, Fragments don't need to write
xml resource id twice.
- Remove getPreferenceControllers from Indexable.java. Because it will
move to SettingsLib later for other apps which don't need this function

Bug: 135053028
Test: robolectric
Change-Id: I1e74519aecdea3dde64a5aea79f08d766dbc0003
2019-09-24 00:35:52 +08:00
Tarandeep Singh
54c2af9213 Remove usage of PER_PROFILE_IME_ENABLED property in settings
PER_PROFILE_IME_ENABLED is default enabled in Q. We no longer need to
have this property.

Bug: 135775619
Test: atest CtsInputMethodTestCases CtsInputMethodServiceHostTestCases
Change-Id: I1ba4fab361b77b1ec23b1773a66dccb76667e95c
2019-07-09 14:59:18 -07:00
Raff Tsai
74942cee5e Migrate VirtualKeyboardFragment to DashboardFragment
Fixes: 134451794
Test: robolectric
Change-Id: I2a40090178b3daea894bdad570549c7bfa34e4e6
2019-06-13 15:17:00 +08:00
Amin Shaikh
3f1de20c7e Fix themed settings icons.
- Added android prefix for homeAsUpIndicator attribute
- Override ic_arrow_down_24dp from androidx
- Remove ic_lock drawable overlay
- Update date and time icon
- Dedupe ic_menu_add and ic_add_24dp

Bug: 131346125
Test: mp settings;
Change-Id: I7223249f2adccc5569a37e8b68cae5499e7c7620
2019-05-03 17:02:46 +00:00
Yohei Yukawa
8cb387adae Let Settings app use InputMethodInfo#loadIcon()
This is a follow up CL to my previous CL [1], which attempted to show
the most appropriate IME icon even when multiple IMEs are implemented
in a single APK.

This CL simplifies the way how IME icon is obtained in the Settings
app, by simply using InputMethodInfo#loadIcon(), which already does
what we want.

Notable user-visible behavior changes are:
 - Like before my previous CL was submitted, android:logo will not be
   used in the IME settings (again).
 - Icons shown in IME settings start having (user) badges like other
   settings pages.
 - If no icon is available in IME,
   PackageManager#getDefaultActivityIcon() will be used. This is
   actually consistent with other settings pages.

 [1]: I406ccc0d53e6ec69793c2fc8be8c6c1c90b34811
      2cae5b8952

Bug: 28204635
Fix: 131432102
Test: Manually verified as follows.
  1. Build aosp_taimen-userdebug and flash it
  2. Install TestDPC.
  3. Set up a work profile
  4. Open Settings App -> System -> Languages & input
     -> Advanced -> Virtual keyboard for work
  5. Make sure the icon of "Android Keyboard (AOSP)" has a small badge.
  6. Tap "Manage keyboards"
  7. Make sure the icon of "Android Keyboard (AOSP)" has the same icon
     as the step 5.
  8. Open Settings App -> System -> Languages & input
     -> Virtual keyboard
  9. Make sure the icon of "Android Keyboard (AOSP)" does not have a
     small badge on it.
 10. Tap "Manage keyboards"
 11. Make sure the icon of "Android Keyboard (AOSP)" has the same icon
     as the step 9.
Change-Id: Ie9be1eb3071abcc2df7723ceb10d76fe458c4808
2019-04-29 18:11:33 -07:00
Tarandeep Singh
69eb991092 Fix dupicate preference in personal dict
Duplicate preference is added on the
UserDictionaryListPreferenceController. With this change, we check
before adding.

Fix: 129079798
Test: Manually using steps mentioned in bug
Change-Id: If73880f3be460f377b8985a44fc9f9fbe6370c06
2019-03-26 11:45:40 -07:00
Fan Zhang
9859b8b0b0 Fix failing robotest
Fixes: 124531152
Test: robotests
Change-Id: I4442ae543b062ef17b4bfd828134ede879d2b22d
2019-02-15 16:15:39 -08:00
Amin Shaikh
e2815e033d Remove duplicate ic_menu_add_white.
Bug: 123829919
Test: mp settingsg
Change-Id: I88e0dde22762eb6bc019361222ffe783b1c15133
2019-02-04 17:59:29 -05:00
Yohei Yukawa
bcb87f7492 Add "Work profile" section to Languages and input settings
This CL adds "Work profile" section to Languages and input settings.

The new section is visible when and only when work profile is enabled.
Hence there should be no user-visible behavior difference when work
profile is not enabled.

If per-profile IME [1] is also enabled, the following 3 preferences
will be shown in the new section.

 * Virtual keyboard for work
 * Spell checker for work
 * Personal dictionary for work

 [1]: Ied99664d3dc61b97c919b220c601f90b29761b96
      a878b9500e6b89dce9738179edc27bcd0d736b7e

Fix: 120748696
Test: Manually verified as follows.
  1. Build and flash an AOSP build
  2. adb root
  3. adb shell setprop persist.debug.per_profile_ime 1
  4. adb reboot
  5. Install Test DPC
  6. Enable managed profile with Test DPC
  7. tapas SoftKeyboard && make -j
  8. adb install -r --user 0 $OUT/system/app/SoftKeyboard/SoftKeyboard.apk
  9. tapas SampleSpellCheckerService && make -j
 10. adb install -r --user 0 \
     $OUT/system/app/SampleSpellCheckerService/SampleSpellCheckerService.apk
 11. Open Settings -> System -> Languages & input
 12. Virtual Keyboard -> Manage keyboards:
     Make sure both "Android Keyboard" and "Sample Soft Keyboard" are shown.
 13. Spell checker -> Default spell checker
     Make sure "Android Spell Checker" and "Sample correction" are shown.
 14. Advanced -> Virtual Keyboard for Work -> Manage keyboards
     Make sure that only "Android Keyboard" is shown.
 15. Advanced -> Spell checker -> Default spell checker
     Make sure that only "Android Spell Checker" is shown.
Change-Id: Id88928318ab1cd92963d652ae39ca772222ea4ac
2019-01-25 10:14:45 -08:00
Fan Zhang
31b210017b Migrate all MetricsProto enums to SettingsEnums
Bug: 122855168
Test: rebuild
Change-Id: I962d9a71179f86b7cae9dc5e9a00e0aa1557dc76
2019-01-17 14:55:42 -08:00
tmfang
a75eea1b01 Fix crash on KeyboardLayoutDialogFragment
Since view id changed after fragment migration,
we correct view id.

Change-Id: If81ca06423ac62fd9f6a118be0b5fe3c93356142
Fixes: 117559309
Test: robotest
2018-10-12 01:27:46 +08:00
Fan Zhang
23f8d59d02 Sort imports
Having consistent import order will reduce chance of merge
conflict between internal and external master

Test: rebuild
Change-Id: I0b1a170967ddcce7f388603fd521f6ed1eeba30b
2018-08-28 22:13:15 +00:00
Fan Zhang
9ce4a1fcde Use searchable="false" to suppress nonIndexables.
When possible, remove or simplify getNonIndexable() logic in fragments,
and use searchable="false" in xml to suppress index.

Change-Id: I5bdf5bc7d5494a64cdd9e230a51321a4b210af69
Fixes: 112608186
Test: robotest and manual search
2018-08-17 09:21:05 -07:00
tmfang
41ab6b4bf8 Migrate all AlertDialogs to AndroidX version
This CL only changed AlertDialog imports.
So, reviewer can review it easily.

Change-Id: I097bc44394195b14287f4f920c570ac8653f356a
Fixes: 111413092
Test: This CL can't pass Robo test.
2018-07-20 11:32:13 +08:00
tmfang
27c84de325 Settings Fragment Migration (Build pass app)
This patch focused on fixing compile errors and some runtime errors.

Test: We can't test it now. But we will have an integration test later.
Bug: 110259478
Change-Id: I16c471ddcd0fa1460c665b7f74d86fcace5ee67b
2018-07-11 18:24:51 -07:00
tmfang
99cc23d0da Settings Fragment Migration (Change imports)
This commit *only* changes imports and optimize imports.
We don't do anything else.

This patch can't compile pass and run test case.
We will update other patches to fix these problem.

Change list.

1. import android.app.Fragment; ->
   import androidx.fragment.app.Fragment;
2. import android.app.DialogFragment; ->
   import androidx.fragment.app.DialogFragment;
3. import android.app.ListFragment; ->
   import androidx.fragment.app.ListFragment;
4. import android.app.LoaderManager; ->
   import androidx.loader.app.LoaderManager;
5. import android.content.AsyncTaskLoader; ->
   import androidx.loader.content.AsyncTaskLoader;
6. import android.content.Loader; ->
   import androidx.loader.content.Loader;
7. import android.app.FragmentTransaction; ->
   import androidx.fragment.app.FragmentTransaction;
8. import android.app.FragmentManager; ->
   import androidx.fragment.app.FragmentManager;
9. import android.app.LoaderManager.LoaderCallbacks; ->
    import androidx.loader.app.LoaderManager.LoaderCallbacks;

Bug: 110259478
Test: Can't test it.
Change-Id: I0a3f98fff34a3494a839c3c42aeabcec3df2c8b3
2018-07-11 18:23:51 -07:00
Fan Zhang
af1552251f Add some pages to search index.
* Notification access page
* VR Listener page
* Feature flags in dev options
* QS Tile developer options
* User dictionary
* Billing cycle
* Some accessibilty pages

Bug: 70720645
Test: robotests
Change-Id: I4f7d3d65b2803cebf178ac345a79721232df707c
2018-07-11 16:39:29 -07:00
Fan Zhang
78ea7da54c Misc tweaks to Indexable usage and tests.
- Make SettingsPreferenceFragment implement Indexable directly
- Add existing fragments that are SettingsPrefFragment but not Indexable
  to grandfather list.
- Fix "font size" fragment so it shows up in search properly.
- Remove duplicates for "lock screen display", "Screen saver".

Bug: 70720645
Test: robotests
Change-Id: I44ce0cac0fdf5e882b315861bb4bebc45dbe01e6
2018-07-02 16:46:23 -07:00
Fan Zhang
c7162cd24d Reorder and clean up imports.
Test: rebuild
Change-Id: I178485c84ae7146f991fd77b6d7504b029942a68
2018-06-18 15:45:09 -07:00
android-build-team Robot
02ec86a17b Merge "Establish permanently unavailable settings" 2018-05-09 18:14:32 +00:00
Matthew Fritze
f87a1f3f41 Establish permanently unavailable settings
Distinguish between settings which are permanently unavailable on
the device, and temporarily unavailable. This enables us to restrict
which setting slices are exposed in onSliceGetDescendants.

The primary changes in this CL are renaming:
"DISABLED_UNSUPPORTED" -> "UNSUPPORTED_ON_DEVICE"
to be more clear the the setting will cannot be accessed on the device, and,
adding a new enum to encapsulate settings which are currently unavailable, but
could be enabled in the future.

Also remove UNAVAILABLE_UNKNOWN. Devs should never need this enum.

Bug: 78910582
Bug: 79245656
Test: robotests
Change-Id: I58821a6cfd6134b3b351657b6edf5f74ead00643
2018-05-09 08:36:59 -07:00
hjchangliao
e86eec0c07 Rename SubSettingLauncher.setTitle, add java doc
For make this method usage more clear,
setTitle(charSequence) rename as setTitleText,
add java doc: it is only for user generated string
setTitle(int) rename as setTitleRes.

Change-Id: I972cb6a8ff90873dfdc25c23f6dc3d68103c8e4e
Fixes: 78347436
Test: make RunSettingsRoboTests
2018-05-09 10:00:05 +08:00
jyhshiangwang
4d015b17b3 Use ListFormatter to join strings
Currently in Settings we are using R.string.join_many_items_first, R.string.join_many_items_middle and R.string.join_many_items_last to manually join strings. The join code is messy and the joined string is incorrect in some languages, so we migrate all string join to just use ListFormatter.getInstance().format().

Bug: b/78248791
Test: robotests
Change-Id: I898339978e6e2027587e28994b0280fa46821fd6
2018-05-02 11:15:32 +08:00
rafftsai
9bd1ac38c5 InputMethodAndSubtypeEnabler use DashboardFragment
- Move preference log to InputMethodAndSubtypePreferenceController
- Add input_methods_subtype.xml

Test: manual
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.inputmethod
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.core
Test: atest UniquePreferenceTest

Change-Id: I45b6e8303d94ef07d17016eeed1d728432a70d98
2018-04-25 17:34:04 -07:00
TreeHugger Robot
a94f9175c0 Merge "Fix a incorrect class cast in GameControllerPreferenceCtrl" 2018-04-25 01:36:51 +00:00
Fan Zhang
7d7a9b1837 Fix a incorrect class cast in GameControllerPreferenceCtrl
Also convert the controller to TogglePrefCtrl, and register it in xml.

Change-Id: Ifbc95364b47690117b2875cba1cdc4761ad205be
Bug: 71972185
Test: make RunSettingsRoboTests
2018-04-25 00:33:22 +00:00
Fan Zhang
ee3b74a61f Create a new string for keyboard disconnected state
Change-Id: I454bbb3b8e0ee22c0f7a5a340b86dfd5607de86e
Fixes: 77957016
Test: robotests
2018-04-23 14:59:19 -07:00
Aurimas Liutikas
e0069d332d Migrate Settings to androidx.
Test: make Settings
Bug: 76692459
Change-Id: I941dea40562170649bf056e675cc32e5163c0e39
2018-04-20 12:52:29 -07:00
tmfang
f1191f6bf9 KeyboardLayoutPickerFragment uses DashboardFragment
- Build a controller to generate a list of preferences and add to screen.
- Move some logic to controller.
- Add some test cases for controller.

Test: manual
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.inputmethod
      make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.core
      make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.dashboard
      atest UniquePreferenceTest
Change-Id: I4ebe486ade3439b9814b11866c402dcf881f21a7
2018-04-17 17:35:29 -07:00
Emily Chuang
5e3718d354 Migrate UserDictionaryList to DashboardFragment
- Build a controller to generate/manage a list of preferences.
- Move some logics to the controller and add tests.

Test: manual
Test: make RunSettingsRoboTests -j
      atest UniquePreferenceTest SettingsGatewayTest
Change-Id: Ia3d885cb8917c7d5498b87818e24b938f0d95dbb
2018-04-17 12:27:24 -07:00
Yohei Yukawa
9f172540b1 Remove the dependency on InputMethodSettings
InputMethodUtils.InputMethodSetting is a quite complicated inernal
class of InputMethodUtils and PhysicalKeyboardFragment's depending on
it just for getting/setting SHOW_IME_WITH_HARD_KEYBOARD is overkill.

With this CL, PhysicalKeyboardFragment just uses Secure Settings APIs
directly.

There should be no user-visible behavior change.

Bug: 77730201
Test: Manually verified as follows:
 1. Open system settings.
 2. Tap "System" -> "Languages & input" -> "Physical keyboard"
 3. Make sure "Show virtual keyboard" is unchecked
 4. Make sure the following command shows 0
      adb shell settings get secure show_ime_with_hard_keyboard
 5. Check "Show virtual keyboard"
 6. Make sure the following command shows 1
      adb shell settings get secure show_ime_with_hard_keyboard
 7. Run the following command
      adb shell settings put secure show_ime_with_hard_keyboard 0
 8. Make sure "Show virtual keyboard" is chenged to unchecked
Change-Id: I956da5dad27313d6edf141f2320bb0a7954fbbea
2018-04-13 18:13:09 -07:00
Tony Mantler
0fcd6cbaa8 Autogenerate SearchIndexableResources subclass
Bug: 77148954
Test: RunSettingsLibRoboTests RunSettingsRoboTests RunSettingsGoogleRoboTests RunArcSettingsRoboTests
Change-Id: I842c42c55014c3310070ef22bd4f0d9a70dfd804
2018-04-03 10:26:55 -07:00
TreeHugger Robot
cb601396d4 Merge "Logically revert "Directly show the layout selection screen."" into pi-dev 2018-03-21 15:01:11 +00:00
Yohei Yukawa
690f103ca5 Logically revert "Directly show the layout selection screen."
This is logical revert of a CL [1] that was recently re-introduced as
part of my recent CL [2].

Reason for revert:
Directly showing the layout selection screen when there is no hardware
keyboard is selected yet is not something people had been familiar
with.

That behavior had been enabled only in a short period during Android N
development cycle and was never enabled in most of production builds.
To avoid confusions, let's revert back to the true Android M behavior
by logically reverting that change.

 [1]: I4483dfc89afc8d148b2cfa7c6a5f66d2a02f712a
      17b6319884
 [2]: I7a2ed6dd39dcd8207d3d94e12cd01d5d67ba4bb5
      7129b374bb

Change-Id: If0529e20cbff432d38d9b2dd74eeb3af0da5baf1
Bug: 66498367
Fix: 75318417
Test: Manually verified
2018-03-19 19:20:29 -07:00
Fan Zhang
1a77cfc8fe Update switch bar summary for spell checker page
Change-Id: If48ad81e5ad5e4a7bd65ede5ed67d28250fbe8ed
Fixes: 75277295
Test: atest SpellCheckerSettingsUITest
2018-03-19 18:05:10 -07:00
Yohei Yukawa
7129b374bb Reenable pre-N style hard keyboard layout settings
This CL logically reverts Settings app changes for Bug 25752812, which
aimed to improve UX by tightly integrating physical keyboard layout
with input method subtype.

What went wrong is that the concept of input method subtype is not
widely accepted by the ecosystem actually.  Until we figoure out any
other better way here, let's revert back to the good old way that
enables users to specify multiple keyboard layouts per physical
keyboard device, not one layout per one input method subtype.

Note that we cannot simply revert the CL that originally introduced
the new flow [1] because it was indeed a huge CL that also touched IME
settings, which we want to continue using.  In that sense, this CL is
a kind of re-implementation of the previous style on top of the recent
language settings flow.

Note also that a fix [2] fox Bug 25062009 was also ported from
previous InputMethodAndLanguageSetting to
KeyboardLayoutPickerFragment.

 [1]: I728d7ee185827ed328c16cb7abce244557a26518
      976bb3f459
 [2]: I4483dfc89afc8d148b2cfa7c6a5f66d2a02f712a
      17b6319884

Fix: 66498367
Test: make -j RunSettingsRoboTests
Test: Manually done with two Bluetooth keyboards
Change-Id: I7a2ed6dd39dcd8207d3d94e12cd01d5d67ba4bb5
2018-03-09 01:54:55 +00:00
Fan Zhang
47854c2945 Migrate more places to subsetting launcher
Bug: 73250851
Test: robotests
Change-Id: Iaf29df45ddb42fd58f181cb01e10998a97cb7c34
2018-02-19 14:21:05 -08:00
Fan Zhang
7cf99f5f12 Migrate more settings to use SubSettingsLauncher
Bug: 73250851
Test: robotests
Change-Id: I08f6f380489646231d6d8ceb1488e2efb036bf69
2018-02-18 21:10:03 -08:00
Doris Ling
72489725c6 Change superclass to InstrumentedFragment.
- for fragments that do not implement the preference screen, change them
to inherit from InstrumentedFragment instead.

Change-Id: I791c2634024bd2c248efea955be5c680180d735c
Fixes: 68277111
Test: make RunSettingsRoboTests
2018-02-02 13:41:16 -08:00
Jin Dong
bdcd50328f Merge "Fix memory leak of page "Languages & input"" am: f94ff6ce6f am: 6d55e0633e
am: dd91556778

Change-Id: I5fb3f956aab62b5500bfa5d753061980371b41b5
2018-02-02 14:52:58 +00:00
Jin Dong
d39c52f99e Fix memory leak of page "Languages & input"
When enter/exit from "Languages & input" screen repeatedly, memory
leak happens since InputDeviceListener is not unregistered.

Listener registration is called in onPause() when exiting from the
screen, but new activity is created when enter the screen and the
listener registered by previous activity is not unregistered in
onResume().

Bug: 72675680
Test: Manual - Repeat enter and exit "Language & input" page for
several times and check if the count of activity doesn't increase.
Change-Id: I8e0be0ab4b1d13d53c3868b10f409d1e06387c2f
2018-01-30 10:54:00 +00:00
Leif Hendrik Wilden
28dee1f086 Migrate to use instrumentation classes from settingslib.
Test: Compiles. Manually tested.
Change-Id: I70a6e76cc8440547746ecc008c32bd06a7de8161
2018-01-24 12:30:39 -08:00
Leif Wilden
cab0ee611d Revert "Migrate to use instrumentation classes from settingslib."
This reverts commit 1546cca529.

Reason for revert: Broke fingerprint setup flow. b/72267201

Change-Id: I8321265ae64732c526325882ddea51080decddf5
2018-01-22 20:57:36 +00:00
Leif Hendrik Wilden
1546cca529 Migrate to use instrumentation classes from settingslib.
Test: Compiles. Manually tested.
Change-Id: Ie5515bb0fe3e621fc7723a9b04ba23e4bfa9c401
2018-01-18 11:13:24 -08:00