Commit Graph

292 Commits

Author SHA1 Message Date
Tadashi G. Takaoka
38a58371a0 Remove SHOW_INPUT_METHOD_PICKER receiver
Although there is a security check for IMM#showInputMethodPicker() [1],
any background application can virtually call the method via explicit
broadcast intent to Settings app.

Since showing IME picker from the notification has implemented in
InputMethodManagerService using protected-broadcast [2], the receiver in
Settings app isn't necessary and should be removed to close the security
bypass.

Note that this broadcast receiver stops working from Android-O due to
background check [3].

 [1]: I4f0fc21268200c64d12b31ca54416acfbf62f37b
 [2]: Id36c8c34159bea8b72557b40bcf024d401f580b6
 [3]: https://developer.android.com/preview/features/background.html#broadcasts

Test: The following broadcast intent will not show IME picker.
  $ adb shell am broadcast \
        -a android.settings.SHOW_INPUT_METHOD_PICKER \
        com.android.settings
Fixes: 64008672
Bug: 63644555
Change-Id: Id990c66516c9b3ed7ada6891746ec0e0eecbe545
2017-07-25 19:17:57 +09:00
Fan Zhang
6539c9a1d0 Load only unique dictionary words
- Move UserDictionarySettings to sub package
- Convert cursor to loader

Fix: 22058788
Test: robotests

Change-Id: I1e8828abee58362b815abc210c044b678bf9d578
2017-07-13 16:05:35 -07:00
TreeHugger Robot
afeb5e2d45 Merge "Settings app changes spell checker settings directly without TSM APIs" 2017-06-30 15:19:35 +00:00
Guliz Tuncay
04ac51b23c Settings app changes spell checker settings directly without TSM APIs
Previously, Settings application was using TextServicesManager APIs to
update any of the spell checker settings (i.e., enabled/disabled, spell
checker, subtype). Since these APIs are used only by the Settings
application, there is no need to expose it to other services and the
Settings application can directly write them to secure settings since it
has the WRITE_SECURE_SETTINGS permission.

Bug: 62950392
Test: Manually as follows.
      1. Build and flash an OS image.
      2. Complete the setup wizard (if any).
      3. Make sure AOSP Keyboard (com.android.inputmethod.latin) is installed
      4. Install SampleSpellCheckerService
       4.1 tapas SampleSpellCheckerService
       4.2. make -j
       4.3. adb install -r out/target/product/generic/system/app/SampleSpellCheckerService/SampleSpellCheckerService.apk
      5. Go to spell checker settings in the system settings
      6. Select 'SampleSpellCheckerService' through Settings app
      7. Run
           adb shell settings get secure selected_spell_checker
         and make sure it returns the following value
           com.example.android.samplespellcheckerservice/.SampleSpellCheckerService
      8. Run
           adb shell settings get secure selected_spell_checker_subtype
         and make sure it returns '0'
      9. Select 'Android Spell Checker (AOSP)' through Settings app
     10. Run
           adb shell settings get secure selected_spell_checker
         and make sure it returns the following value
           com.android.inputmethod.latin/.spellcheck.AndroidSpellCheckerService
     11. Run
           adb shell settings get secure selected_spell_checker_subtype
         and make sure it returns '0'
     12. Tap 'Languages' on the spell checker settings to select 'French'
     13. Run
           adb shell settings get secure selected_spell_checker_subtype
         and make sure it returns '102517'
     14. Select 'SampleSpellCheckerService' again through Settings app
     15. Run
           adb shell settings get secure selected_spell_checker
         and make sure it returns the following value
           com.example.android.samplespellcheckerservice/.SampleSpellCheckerService
     16. Run
           adb shell settings get secure selected_spell_checker_subtype
         and make sure it returns '0'
Test: Manually as follows.
      1. Build and flash an OS image.
      2. Complete the setup wizard (if any).
      3. Make sure AOSP Keyboard (com.android.inputmethod.latin) is installed
      4. Install SampleSpellCheckerService
       4.1 tapas SampleSpellCheckerService
       4.2. make -j
       4.3. adb install -r out/target/product/generic/system/app/SampleSpellCheckerService/SampleSpellCheckerService.apk
      5. Set the current spell checker service to be AOSP SCS by
       adb shell settings put secure selected_spell_checker com.android.inputmethod.latin/.spellcheck.AndroidSpellCheckerService
      6. Run a test program that has TextView and tap on one of the
       TextViews and type some text.
      7. Observe that there is a connection to AOSP SCS by
       adb shell dumpsys textservices
      8. Set the current spell checker service to be
      SampleSpellCheckerService SCS by
adb shell settings put secure selected_spell_checker com.example.android.samplespellcheckerservice/.SampleSpellCheckerService
      9. Tap on the same TextView as in Step 6
      10. Observe that there is a connection to SampleSpellCheckerService
      SCS (for this TextView) by
       adb shell dumpsys textservices
Change-Id: I2f3d5282a342bcb42abf995d6e7834241e11cd4f
2017-06-29 18:28:29 +00:00
Tony Mantler
1d583e125f Make PreferenceController a mixin
Bug: 62912136
Test: Existing tests in BaseSearchIndexProviderTest
Change-Id: Ieda359806c09a019840b2005446c7ec8b61fdb00
2017-06-26 10:58:36 -07:00
Juan Lang
777ed2535a Depend on SettingsLib's version of lifecycle and FooterMixin.
The implementations have been imported into SettingsLib. Setting's copy
can now be removed, which this change also does.

Test: Manually check battery status, which uses FooterMixin, looks OK.
make RunSettingsLibRobotTests && make RunSettingsRoboTests
     && make RunSettingsGoogleRoboTests
Change-Id: I6539605fdad80d156ff5ff249e68df4a1c412067
2017-05-12 11:10:46 -07:00
Fan Zhang
b1bdf90c35 Bidi wrap keyboard names before displaying them.
This is needed because keyboard names can contain characters from mixed
locale. Without Bidi wrapping the labels will be garbled and not
readable.

Change-Id: I47668a65d7bef8828ad0424097834929ec12700d
Fix: 37353900
Test: make RunSettingsRoboTests
2017-04-20 11:23:14 -07:00
Tony Mantler
d9db7dfc28 Add AvailableVirtualKeyboardFragment to TV
Allows enabling/disabling IMEs on TV.
Moves InputMethodPreference to SettingsLib.
Also minor code tidying

Bug: 36079941
Test: Keyboard settings still work on Fugu and Ryu
Change-Id: Idf42cf5c46d5bb32db59924819d64f73d533d105
(cherry picked from commit 2ec69563cd)
2017-04-04 15:49:47 +00:00
Fan Zhang
2a9255b33c Misc fixes for items under system setting
- Show summary under virtual keyboard: list all avaiable keyboards
- Set about phone subtext to device model string.
- Update DND Suggestion text

Change-Id: I20acffcf691d1354c7636f5851b376099844700f
Fix: 35959817
Fix: 36395109
Test: robotests
2017-03-25 02:43:23 +00:00
Fan Zhang
fe292515d8 Refactor the layout for MasterSwitch to a 2 target pref
And move the layout to settingslib.

The new TwoTargetPreference is a preference object that has a vertical
divider between main panel and widget (if it exists).

Converted master switch, restricted preference, gear preference to use
the new style

Change-Id: Ia3848cebb06b8edc4e60abf9b0caf13cdb29c22c
Fix: 36511169
Test: make RunSettingsRoboTests
2017-03-22 16:03:40 -07:00
Doris Ling
d299b03f28 Remove old code relating to SystemSettings not used in new IA.
- remove activity alias: DevelopmentSettingsDashboardAlias,
DateTimeDashboardAlias, AboutDeviceDashboardAlias,
BackupResetDashboardAlias, EnterprisePrivacyDashboardAlias, and
AccessibilityDashboardAlias and updated the corresponding target
activities with the alias metadata.

- remove InputMethodAndLanguageSettingsActivity and
GestureSettingsActivity and the associated xml.

Bug: 35764802
Test: make RunSettingsRoboTests
Change-Id: I7d4922f8dfaac40e8ad077a68008185cd9fe3304
2017-02-28 17:46:24 -08:00
Tony Mantler
4d27b2ce5b Move InputMethodAndSubtypeEnabler to SettingsLib and port to TV
Bug: 35315463
Test: adb shell am start -a android.settings.INPUT_METHOD_SUBTYPE_SETTINGS
Change-Id: I17e6e64ff2c01577d4036bccafe7d0b4ad1d5ca5
2017-02-17 14:04:40 -08:00
Doris Ling
34cfd2e24f Combine Language & region and Input & gestures in System settings.
Merge preferences into one page, and update test.

Bug: 34976047
Test: make RunSettingsRoboTests
Change-Id: I5f15192e42f6054c02d4c8ffa9f25db3075da409
2017-02-06 11:46:48 -08:00
Fan Zhang
7e6df837ee Remove getCategoryKey() from DashboardFragment children.
Use the centralized registry to look up category key instead.

Bug: 32936784
Test: make RunSettingsRoboTests -j40
Change-Id: I0b8c72d70f93e4b5c58871ac90de41f69ad15653
2017-01-24 14:51:15 -08:00
Fan Zhang
f10a5a22d0 Index input & gesture settings page.
Test: make RunSettingsRoboTests -j40
Change-Id: Ifbd68d596838b05e47d228396f266316b90a0f27
2017-01-20 11:10:07 -08:00
Tadashi G. Takaoka
0166269dda Merge "Move IME related seach landing pages to its fragments" 2017-01-12 03:51:56 +00:00
Tadashi G. Takaoka
73038da358 Merge "Move physical keyboard search landing page to its Fragment" 2017-01-12 03:51:31 +00:00
Tadashi G. Takaoka
e776821a8d Move IME related seach landing pages to its fragments
This CL moves the code building index of IMEs from
InputMethodAndLanguageSettings to VirtualKeyboardFragment and
AvailableVirtualKeyboardFragment, so that a search landing page of IME
becomes one of the fragment correctly depending on the IME state.

Bug: 32643633
Test: Manually installing/uninstalling AOSP LatinIME.apk while
      Settings app is/isn't running, then search AOSP and verify the
      landing page is correctly determined by the IME's enable state.
Test: Update robolectric DynamicIndexableContentMonitorTest
Change-Id: Ie44f358c2d3919fc864f4f88e6229293113823dd
2017-01-10 17:07:50 +09:00
Tadashi G. Takaoka
7bbc632bfb Move physical keyboard search landing page to its Fragment
This CL moves the code building index of physical keyboards from
InputMethodAndLanguageSettings to PhysicalKeyboardFragment, so that a
search landing page becomes PhysicalKeyboardFragment as expected.

Bug: 32643633
Test: Connecting/Disconnecting Anker bluetooth keyboard while Settings
      app is/isn't running, the search Anker and verify landing page
      is PhysicalKeyboardFragment.
Test: Update robolectric DynamicIndexableContentMonitorTest.

Change-Id: I51f308ada74966a96c258f8ef50a9b4fc7bc6635
2017-01-10 15:56:45 +09:00
Fan Zhang
ffd328b071 Misc fixes for IA and pattern.
Disable NFC fragments when feature is not avaiable
Link to spell checker screen with the pref is clicked
Tint "add"/"delete" button in UserDictionary actionbar to proper color.

Change-Id: I8a8e219ce3dbbafc6c4d5a0f34f835ffd0abad4f
Fix: 34155679
Fix: 34161006
Fix: 34154795
Test: RunSettingsRoboTests
2017-01-09 10:58:44 -08:00
Tadashi G. Takaoka
a034fa5407 Refactor DynamicIndexableContentMonitor
Refactor content monitoring code into a few singletons to keep alive
while Settings app is running.

Bug: 32995210
Test: Manually installing/uninstalling AOSP LatinIME.apk while
      Settings app is/isn't running, then search AOSP.
Test: Connecting/Disconnecting Anker bluetooth keyboard while Settings
      app is/isn't running, then search Anker.
Test: Added Robolectric test for DynamicIndexableContentMonitor.
Change-Id: I588e33be169fc9677d41c3daa59ab400f04f6419
2016-12-22 17:53:07 +09:00
Fan Zhang
8f057ca3d4 Use MetricsEvent to log page views for new IA pages.
Bug: 33812754
Test: RunSettingsRoboTests
Change-Id: Ib49daa1078df44f50ecfa351c061d36849708fd7
2016-12-21 12:12:32 -08:00
Fan Zhang
9b6f181340 Remove no-op handlePerferenceTreeClick from PrefControllers
Bug: 33429853
Test: RunSettingsRoboTests
Change-Id: I5633953e3d7b07f9006e541b96a24a2a769e2686
2016-12-07 15:34:31 -08:00
Fan Zhang
2d0b344736 Add InstrumentFragment for non-PreferenceFragment types.
This allows app fragment use a less heavyweight fragment as super class
if they don't need PreferenceFragment. Using this class as base is
generally easier to set up robolectric tests too.

Bug: 33354536
Test: RunSettingsRoboTests
Change-Id: I91c4d242ea0333c76c8767c03c3f18dee6b6e104
2016-12-05 17:13:33 -08:00
Sudheer Shanka
acb1a61f3f Update usage of ActivityManagerNative.
Bug: 30977067
Test: N/A
Change-Id: I46e37a09cff059d2784a819bc2651d6973fbd268
2016-11-14 12:59:11 -08:00
Fan Zhang
33b0d91d74 Add video to each gesture preference screen.
- Refactor GesturePreference to a generic VideoPreference.
- The old video_preference.xml is only for magnification video, so
  renamed.
- And use VideoPreference in gesture setting pages.
- Refactor common logic into GesturePreferenceController.

Bug: 32637613
Test: RunSettingsRoboTests

Change-Id: I58580b01a32873cb32c5dc5bf2ec021d5b1400cc
2016-11-10 15:24:45 -08:00
TreeHugger Robot
2c61018618 Merge "Add more gesture setting pages." 2016-11-09 21:13:02 +00:00
Fan Zhang
b99ea90046 Add more gesture setting pages.
Bug: 32637613
Test: make -j40 RunSettingsRoboTests
Change-Id: I77f90b8b7e3348ed717ee78693860f48e13070f2
2016-11-09 11:31:10 -08:00
Tamas Berghammer
29147e5fbc Merge "Update package names to work with the proto3 compiler" 2016-11-09 13:38:53 +00:00
Fan Zhang
b52c50d01d Add setting page for swipe to notification.
In this change input & gesture page added 5 separate gesture
preferences, each should lead to a new page to set gesture setting. For
now only swipe to notification preference is wired up. Will implement
the rest in later changes.

Bug: 32637613
Test: make RunSettingsRoboTests -j40
Change-Id: I57ceea8fcd85f3a0ab59cbd12da50b7138f5ca0c
2016-11-08 13:29:35 -08:00
Tamas Berghammer
265d3c2a0c Update package names to work with the proto3 compiler
Bug: b/28974522
Change-Id: I5f3adf4946ee4ba1e09e4f40afe83c151405972a
2016-11-08 14:06:17 +00:00
Fan Zhang
a1d1d67ce3 Add Input & Gesture/Language & Region pages under System.
- Removed LanguageAndInputDashboardAlias because now the contents are
  moved to new pages.

Bug: 32637613
Bug: 32643833
Test: RunSettingsRoboTests
Change-Id: Ia66a942a449a07b9cbba53bdc97738148aafadb4
2016-11-07 17:05:22 -08:00
Fan Zhang
22d42d52cf Refactor IMEAndLanguageSettings to use PreferenceController
Bug: 32642706
Bug: 32637613
Bug: 32643833
Test: RunSettingsRoboTests

This change is necessary to test preference controlling logic, as well
as making preferences reusable in other Preference pages in the new
information architecture.

Change-Id: I9e2fd2f6800579f005a5c303ed03ae06477006a6
2016-11-07 15:29:04 -08:00
Fan Zhang
e185c5cc19 Merge "Remove logic of calling InputMethodAndSubtypeUtil." 2016-11-07 18:18:41 +00:00
Fan Zhang
25cd53f0a9 Remove logic of calling InputMethodAndSubtypeUtil.
InputMethodAndLanguageSettings calls InputMethodAndSubtypeUtil for no
good reason. The page does not display or provide ways to change IMEs.
The virtualKeyboardFragment does, and it already contains logic for
refreshing InputMethodAndSubtypeUtil.

Bug: 32642706
Test: Compiles
Change-Id: Icdbf9cd2fa95ba3037c1e47d62c7514376cf8037
2016-11-04 14:51:53 -07:00
Fan Zhang
aceee52a8b Remove dead code KeyboardLayoutPickerFragment.
Bug: 32642706
Test: compiles
Change-Id: I02b7abed470a813bff13fe9d71fcf870a47de6b3
2016-11-04 14:22:41 -07:00
Fan Zhang
cdaf4f7970 More cleanup in input & language settings.
- Removed unused preferences that are commented out in pref xml.
- Also removed code that references to them in Fragment.

Bug: 32637613
Test: compile/manual
Change-Id: I84be24f9c5df7531843f03b047a93f9aa912432e
2016-11-03 16:08:13 -07:00
Fan Zhang
46debf8256 Remove logic for select input method preference.
- The prefrence is not used in code according to comment, and it's not
  defined in xml. So this chunk of code is redundant and should be
  removed.

Bug: 32642706
Test: compiles, and manually navigate to fragment.
Change-Id: Iac38632d090c635f324bc4eed8e1c41300ddb08e
2016-11-03 15:38:57 -07:00
Fan Zhang
e0c253fccb Add summary provider for system tile.
Refactored getLocaleNames() into a FeatureProvider interface so it's
reusable and testable.

Bug: 31801428
Test: RunSettingsRoboTests
Change-Id: I2d31a66a4b32cfa7a364a4cfef1f6eea87084577
2016-10-14 11:08:51 -07:00
Fan Zhang
1e516287bd Add visibility metrics to dialogs.
Bug: 30681529
Test: adb logcat -b events | egrep "(sysui_|notification_)"
Change-Id: I199d2e1b2cb8588a562b46bb8128d8ece24952f0
2016-09-19 17:34:12 -07:00
Salvador Martinez
0308649104 Can restore state on rotate personal dict screen am: 8f4eb4d74b am: 45cdbd2669
am: 6b41874231

Change-Id: I426e4bfea077b3494a8a5a8e3eea0659186b60f8
2016-08-31 01:19:32 +00:00
Salvador Martinez
8f4eb4d74b Can restore state on rotate personal dict screen
When adding/editing a word for your personal dictionary
rotating the screen could cause the language to change
back to the device default. This has been fixed.

Test: ag/1389633, robolectric not supported in this branch.
Bug: 30874931
Change-Id: I0c8ebec5f4d5e7b23112b656c482c3b2cda7791f
2016-08-30 18:34:15 +00:00
Fan Zhang
6507613ebc Log visibility change for all fragments.
Bug: 30681771
Test: SettingsUnitTests

Refactor visibility logging from InstrumentedFragment into a mixin. And
apply mixin in remaining fragments.

Change-Id: Ibbb59904336254a3e4bb9e8c7d0b36e5a6bc2622
2016-08-18 14:04:13 -07:00
Yohei Yukawa
a6699afd05 Check if InputMethodService is Direct Boot aware am: 4e44a5ec8e am: fc7672a010
am: f6bd4d7f32

Change-Id: I94afa4c2fbdc8b7915c15aa1a309914c608b69f1
2016-07-28 23:33:52 +00:00
Jeff Sharkey
68fc8b333c Warn users when selecting non-Direct Boot apps. am: 4a8136b51b am: f3449fb81e
am: e98675ce8c

Change-Id: I4a24f153e838ee14d62b095a7d615ab9f4ee01d2
2016-07-28 00:24:58 +00:00
Yohei Yukawa
4e44a5ec8e Check if InputMethodService is Direct Boot aware
This is a small follow up CL to the previous CL [1] that added
functionality to show a warning dialog when Direct Boot unaware apps and
IMEs are being selected.

In the previous CL, we checked whether the package to which the IME
belogs to is (fully or partially) Direct Boot aware.  If the package is
partially Direct Boot aware but the InputMethodService in question is
still Direct Boot unaware, the user will not see the warning dialog.

Luckily in InputMethodPreference we already have InputMethodInfo that
indirectly exposes ServiceInfo#directBootAware.  By directly checking
that bit we can simplify the logic and avoid such false negatives.

 [1]: I0498904d2f664fb41e8c1e6bb30d1cbf437cf4b9
      4a8136b51b

Bug: 27196876
Change-Id: I869a7bd87748f09f7032a60b34ac0dbdc4a00b72
2016-07-27 16:24:37 -07:00
Jeff Sharkey
4a8136b51b Warn users when selecting non-Direct Boot apps.
Certain apps like Phone, SMS, Emergency Info, and IME are critical
enough that they ideally need to be runnable before the device is
unlocked after a reboot.  Users can still pick non-Direct Boot aware
apps, but this change now warns users that the selected app won't be
runnable until after unlocking.

Bug: 27196876
Change-Id: I0498904d2f664fb41e8c1e6bb30d1cbf437cf4b9
2016-07-27 14:49:34 -06:00
Phil Weaver
8f3c8a56a2 Fix return when virtual keyboard setting changes. am: 3587914cef
am: fc3352e585

Change-Id: I5aa18d8695ad07b01f2f5a092ae4e98855579afe
2016-07-25 20:36:36 +00:00
Phil Weaver
fc3352e585 Fix return when virtual keyboard setting changes.
am: 3587914cef

Change-Id: I29b64c04eeb036f92ff937b70e247aaf0b2eb817
2016-07-25 20:34:41 +00:00
Phil Weaver
0bda6fb550 Merge "Fix return when virtual keyboard setting changes." into nyc-mr1-dev 2016-07-25 20:23:06 +00:00