Commit Graph

46 Commits

Author SHA1 Message Date
TreeHugger Robot
5985ff098d Merge "Log search result click and its rank." 2017-02-18 00:09:01 +00:00
Matthew Fritze
04615bc1b6 Blocks resources from adding headers that match settings
Certain Xml resources have a single setting for the page
which often means the header and setting have the same
title. This CL stops the header from being indexed in
that case.

Bug: 33701673
Test: make RunSettingsRoboTests
Change-Id: Ie617414010e654c41fd014aa2fe297e6d2088ca5
2017-02-17 09:39:21 -08:00
TreeHugger Robot
3e0ae4ed90 Merge "Add settings for the assist gesture." 2017-02-17 02:13:00 +00:00
Fan Zhang
8fc4e819a2 Log search result click and its rank.
Bug: 34975477
Test: RunSettingsRoboTests
Change-Id: I86e72dbd27ac5daeafa4fb35ad55662de7b3eca9
2017-02-16 14:53:49 -08:00
Doris Ling
015a50bef9 Modify text in Apps & notifications settings.
- in Settings->Apps & notifications->Apps->[select app], update the
  header summary to installation status, and move the version text to
  the bottom of the page.
- updatd preference title from Apps to App info
- update preference title from Notifications to App notifications

Bug: 34977561
Test: make RunSettingsRoboTests
Change-Id: I97e9b81c739fb99eaca2cf45fb11f208ad6cd9ca
2017-02-15 19:02:33 -08:00
Philip Quinn
a9831d40d0 Add settings for the assist gesture.
Availability of the gesture is gated by a new FeatureProvider.

Test: make -j RunSettingsRoboTests; manual test on
      supported/unsupported configurations.

Change-Id: I3529367a73e33370d5112b91d5144293ffa7fa22
2017-02-14 16:45:23 -08:00
Matthew Fritze
46173a5265 Remove extra IndexProviders that provided bad data.
Gesture Settings and Wireless settings were indexing
duplicate results that only added complexity to Search.
PowerUsageDetail was never supposed to be indexed.

Bug:33701673
Test: make RunSettingsRoboTests
Change-Id: I45d1fa4bd412c3418acec24f8c98eb4736f220ab
2017-02-15 00:36:25 +00:00
Matthew Fritze
40ce0fab75 Sync search result loaders
The loaders should be syncronized so the results can be
properly ranked without sudden insertions.

This means InstalledAppsLoader needs to finish faster,
which is accomplished by delaying icon loading to bind time
rather than as the apps are queried.

Bug: 34772522
Test: make RunSettingsRoboTests
Change-Id: I7f5244c574d37c6cfd8bbd0d3d40488f38211be3
2017-02-10 10:10:55 -08:00
TreeHugger Robot
b692056232 Merge "Add Adaptive brightness as an inline result in Search" 2017-02-07 20:12:37 +00:00
Tadashi G. Takaoka
4246ac6f96 Merge "Fix BroadcastReceiver leakage" 2017-02-07 06:21:32 +00:00
Matthew Fritze
516b0f1b83 Add Adaptive brightness as an inline result in Search
Bug: 34740449
Test: make RunSettingsRoboTests
Change-Id: I71acdcc04780a76263171a9d312d88a1eb61624a
2017-02-06 17:49:34 -08:00
Maurice Lam
f04ff76af0 Suppress failing Settings Robolectric tests
- Assume API 24 for some settings robolectric tests since they are
broken by referencing API new in version 24. Those tests will be
ignored until Robolectric is updated to support SDK 24.

- Comment out failing DatabaseIndexingManagerTest.

Test: cd tests/robotests && mma
Change-Id: Id71211b7a6836d55f31524c4cfe9628c2de78097
2017-01-28 13:10:14 -08:00
Tadashi G. Takaoka
edbe4047f7 Fix BroadcastReceiver leakage
This CL ensures that a shared PackageMonitor is unregistered when a
settings activity pauses.

Bug: 34541282
Test: Manually installing/uninstalling AOSP LatinIME.apk while
      Settings app is/isn't running, then search AOSP. Verified that
      intent receiver isn't leaked from Settings app.
Test: Add assertion to Robolectric test to ensure intent receiver
      isn't leaked. Build RunSettingsRoboTests and verify all passed.
Change-Id: I5bacdfe478eaa750c61341c14e79eb2cd3fdef3a
2017-01-27 10:35:54 +09:00
TreeHugger Robot
f75b651874 Merge "Implements queryNonIndexableKeys for Settings" 2017-01-26 01:10:16 +00:00
Matthew Fritze
2108f91fe6 Implements queryNonIndexableKeys for Settings
queryNonIndexableKeys returns a list of all of the
non-indexable keys for all providers in Settings

Change-Id: Id53cb2f55662e85c66f1c3f0c0e7d933b19fedaf
Fixes: 34623460
Test: RunSettingsRoboTests
2017-01-25 14:33:45 -08:00
Matthew Fritze
314b09eb4b Search only matches prefixes rather than any substring
Test: make RunSettingsRoboTests
Change-Id: I4da7e4c75c461fad96dedf5277ddba02e067928d
Bug: 34688403
2017-01-25 18:07:29 +00:00
Matthew Fritze
3f3b547e4a Index everything into the database and disable invalid ones
Change-Id: I7eb931009b722c10487f6212113a8993463b7bce
Fixes: 34142852
Test: make RunSettingsRoboTests
2017-01-24 11:15:29 -08:00
Fan Zhang
a96b11f65d Build a sitemap manager to keep track of breadcrumbs
- Have a new db to track parent-child page relation at index time.
- Make a registry class to track (in IA) which page host what type of
  sub pages.
- Make a manager class that queries the db as well as IA to compute
  breadcrumbs

Fix: 32936784
Test: RunSettingsRoboTest

Change-Id: I5f1583fae772c3d477d2ad186e111b79cc3e41aa
2017-01-23 20:41:39 -08:00
Fan Zhang
248d95c618 Add basic breadcrumb on search result.
- Some line formatting
- Some UI tweak to make it more polished
- Updated the way we generate docid
- Use screen title as leaf level breadcrumb and display on UI (TBD how
  to get parent level titles)
- Hardcode breadcrumb for installed app results

Bug: 32936784
Test: make RunSettingsRoboTests
Change-Id: I18e0780f91b1123bbf25cd99adf2e2a5f684a83c
2017-01-21 14:02:09 -08:00
Fan Zhang
a8b089db8a Showing recents in search
A list of recent queries will display when search first launches, or
when text query is empty.

Fix: 32452066
Test: make RunSettingsRoboTests
Change-Id: Ic697f8c0795f2315a01406537c7ce1bbf9a813be
2017-01-20 14:50:15 -08:00
TreeHugger Robot
9b5cd25a34 Merge "Add logging to search fragment." 2017-01-13 00:51:23 +00:00
Tadashi G. Takaoka
7b7a16b90e Merge "Watch for changing enabled IMEs" 2017-01-12 03:52:11 +00: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
Fan Zhang
39f4f6ee60 Add logging to search fragment.
- User leaves screen without any query
- Number of results clicked before leaving screen
- Event of each result click

Bug: 34204146
Test: RunSettingsRoboTests

Change-Id: I357fbb4cdfd4d02370791b4a2ddeb2127fdddf97
2017-01-11 16:37:36 -08:00
Matthew Fritze
7fda314980 Update DatabaseLoader querying.
Change the way the queries are built and sorted for the
database loader. It now constructs 3 queries that match
different columns. Each query returns their results
and gets sorted, then merged into the master list of
results.

Change-Id: Id643422ddfe26bfec89e04ee9f5832b99148e22a
Test: make RunSettingsRoboTests
Bug: 32904057, 32903623
2017-01-10 14:27:31 -08:00
Tadashi G. Takaoka
fd7b98c5ca Watch for changing enabled IMEs
This CL watches a change to Settings.Secure.ENABLED_INPUT_METHODS and
updates search index of IMEs.

Bug: 32643633
Test: After installing AOSP LatinIME.apk, enabling/disabling the IME
      and searching "AOSP", then verify the search landing page is
      correct depending on the IME's enabling state.
Test: Update robolectric test.

Change-Id: I85fa845238b89375e56b207a014af6432f9db647
2017-01-10 18:37:04 +09: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
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
Matthew Fritze
65fb01b520 Add first inline switch result.
Adds gestures as Inline switch results to Settings Search.

Change-Id: Ie9b69ac2a54756d5b756401e348cae0a02c907c9
Fixes: 33669037
Test: make RunSettingsRoboTests
2016-12-21 10:52:59 -08:00
Matthew Fritze
9955db6360 SearchFeatureProvider's context field is removed
SearchFeatureProvider was holding on to a context and
outlived the SettingsActivity, thus leaking the activity.
The context was passed into most methods, and thus it
makes more sense to pass it in to every method.

Bug: 33677967
Test: Run MakeSettingsRoboTests
Change-Id: Ia82f30e7e0b83587b4baeef28e81da6b8e4303fe
2016-12-20 11:39:10 -08:00
TreeHugger Robot
08951ab12f Merge "Update the Settings database to enable Payloads" 2016-12-15 22:51:32 +00:00
Matthew Fritze
1dec073528 Update the Settings database to enable Payloads
Add Payload and Payload type columns to the settings
database. This includes extending preference controllers
to map their settings to UI components so that the
payload results can be consumed by a front end.

Change-Id: I889dcc4ff7793306718d12e1e5993386b58f21cc
Fixes: 33451851, 33390556
Test: RunSettingsRoboTests
2016-12-15 21:00:52 +00:00
Fan Zhang
d5b48454a3 Build a new FooterPreference UI.
- Create a new layout for footer prefs.
- Create a new FooterPreference type to use the layout
- Create a Mixin to create and add the pref to screen
- Create a new lifecycle observer type to invoke mixin at right time
- Switch SettingsPreferenceFragment to use footer mixin.
- Switch FingerprintSettings to use the new footer pref.

Bug: 33579394
Test: RunSettingsRoboTests
Change-Id: I548ac39a0d120196a7ffed09b4f98bd9a80bae90
2016-12-14 16:41:49 -08:00
TreeHugger Robot
1a71c05c7c Merge "Handle tap on intent based search results." 2016-12-09 23:04:03 +00:00
Fan Zhang
12daf6830d Handle tap on intent based search results.
Also fix how icon is loaded. IconResId is specific to the package of the
indexed result. If result comes from external app, icon needs to be
decoded against the external app's package context.

Bug: 33432310
Test: RunSettingsRoboTests
Change-Id: Ia0c53e63be757405dfaeceb2d865e7d8de87c5ee
2016-12-09 13:27:00 -08:00
Matthew Fritze
18fcb08308 First step in refactoring Index.java
Handles the following refators:
 - Indexing code into: DatabaseIndexingManager
 - Indexing utility methods into: DatabaseIndexingUtil
 - XML Parsiing utility methods into XMLParserUtil

Bug: 33451851
Test: make RunSettingsRoboTests
Change-Id: I4264ad3806d1bd3a66d879c16ad6c8315ecb832b
2016-12-09 20:51:32 +00:00
Fan Zhang
36d0d143be Add search loader for installed apps.
- The loader filters out system apps.
- Loader performs case-insensitive match with app names.
- SearchResultAdapter combines results from multiple loaders into a
  single list.

Fixes: 33347966
Test: make RunSettingsRoboTests
Change-Id: I228ca6fb82f0ac5151b2346c079c2de41104a4df
2016-12-07 13:00:26 -08:00
Fan Zhang
413eaa4070 Clean up search fragment loader lifecycle.
- Programatically create SearchView to make it always expand across
  entire action bar.
- Store current query text during screen rotation
- Restart loader when query text changes

Bug: 33354491
Test: RunSettingsRoboTests
Change-Id: I63838a38514569aac60c5d67ac52ac06a7acd5a3
2016-12-06 14:43:01 -08:00
Fan Zhang
6e88635e97 Add search provider for dashboard fragments in new IA.
Bug: 33252252
Test: make RunSettingsRoboTests
Change-Id: I8ea3a144f2bee3d979b909aba29a3360e25fd04b
2016-12-05 15:27:18 -08:00
Fan Zhang
762b4969d9 Add search providers for Connected Devices in new IA
Also add code inspection tests to ensure search provider is added
properly.

Bug: 33252252
Test: make RunSettingsRoboTests
Change-Id: I192e1d9fe0498b76013c4d43b5624d1ef2beb6f9
2016-12-01 15:11:14 -08:00
Fan Zhang
89e669f5d8 Add code inspector to ensure fragments implements search.
Unless a fragment is grandfathered:
- If it's a SearchPreferenceFragment, it needs to implement Indexable.
- If it's a Indexable, it needs to contain SEARCH_INDEX_DATA_PROVIDER.

Bug: 33209410
Test: make RunSettingsRoboTests
Change-Id: I078c54374341ba2966145429fc1507a3d5763d3b
2016-11-30 15:09:09 -08:00
Tadashi G. Takaoka
5e8b93bc53 Merge "Add initialize helper method to improve readability" 2016-11-29 04:03:54 +00:00
Tadashi G. Takaoka
b51f6bf869 Add initialize helper method to improve readability
This CL also reduces SearchIndexableResources class about 1kB.

Test: Added Robolectric test. "make RunSettingsRoboTests" passed.
Change-Id: Id7f7676e175db4aba0be23c0c1a3fc12dd6acc2e
2016-11-25 16:21:22 +09:00
Matthew Fritze
0ed37c3513 Fork Search code to independantly develop and test search.
This is the start of the new search in Settings. It is a nearly complete
replacement of the old search code in a more modular and flexible
architecture. It is expanding the datasources that it queries, including
the same Settings database, which will now include more first party apps
and be extended to support inline results where the user can change
settings directly from the search view. Search will also fan out to
query new sources (local or remote), and is built in a way
such that adding additional sources is roughly the same amount of work
had they been added in the initial writing of this code.

Query interpretation will now be source-dependant, allowing for future
upgrades to fuzzy search where it is applicable.

Change-Id: Ib0bac1fe92bf8a662d33abf9a99bb6ee2090ec8f
Fixes: 32115225, 32378927
Test: make RunSettingsRoboTests
2016-11-17 14:34:29 -08:00