Commit Graph

29 Commits

Author SHA1 Message Date
Fan Zhang
aaced043ae Log search latency in event log
The latency number (10) is fake and doesn't matter, because the page
is going away soon.

Bug: 68017528
Test: rerun robotest
Change-Id: I0a9aba1f0a101bcd7aa4134c7b72aee6708663a4
2017-12-20 09:53:04 -08:00
Matthew Fritze
fb772248b1 Move search querying into a single API
Settings now collects search results from a single
loader which fetches from an aggregator. This is to
facilitate the separation of search functionalitiy,
where "query" becomes a single synchronous call.
In this case, the aggregator will move to the
unbundled app and would be called on the
other end of the Query call. i.e. the new search
result loader will just call query, and unbundled
search will handle everything else.

An important implication is that the results will
be returned in a ranked order. Thus the ranking and
merging logic has been moved out of the RecyclerView
adapter (which is a good clean-up, anyway).

The SearchResultAggregator starts a Future for each
of the data sources:
- Static Results
- Installed Apps
- Input Devices
- Accessibility Services

We allow up to 500ms to collect the static results,
and then an additional 150ms for each subsequent
loader. In my quick tests, the static results take
about 20-30ms to load. The longest loader is installed
apps which takes roughly 50-60ms seconds (note that
this will be improved with dynamic result caching).

To handle the ranking in DatabaseResultLoader,
we start a Future to collect the dynamic ranking before
we start the SQL queries. When the SQL is done, we
wait the same timeout as before. Then we merge the
results, as before.

For now we have not changed how the Dynamic results
are collected, but eventually they will be a cache
of dynamic results.

Bug: 33577327
Bug: 67360547
Test: robotests
Change-Id: I91fb03f9fd059672a970f48bea21c8d655007fa3
2017-10-30 14:20:49 -07:00
Fan Zhang
5c4780f799 Misc logging improvements
- Log ACTION_SEARCH_RESULTS whenever a search query is performed.
  eg, type "qu" will result 2 such logging events.
- Remove historam logging to search result click count (already logged
  as ACTION_CLICK_SETTINGS_SEARCH_RESULT)

Change-Id: Ia207b34702e0f24a7885e47d093f6cce1314ebc4
Fixes: 67743512
Fixes: 64939544
Test: robotests
2017-10-18 15:44:38 -07:00
Matthew Fritze
21aed344fc Prevent race condition between SavedQuery and Query Loader
SearchFragment and SavedQueryLoader share a loader manager
and had been using the same loader id for different
loaders.

Occaisionally (in monkey tests) two loaders with the same
IDs would be started and crash when they finished.

The loaders now have different IDs.

Change-Id: I11e9b7365605fbcef44cf7d2323183415422f5c8
Fixes: 64756515
Test: robotests
2017-08-29 08:20:51 -07:00
Fan Zhang
e3535d9998 Delete DynamicindexableContentMonitor & all refs to it
Convert input device search into a search query loader

And remove old logic from DynamicIndexableContentMonitor

Change-Id: If652b1ea7c8add9185bbd025055e14925d3a8eec
Bug: 64310452
Bug: 63831980
Test: robotests
2017-08-09 17:27:02 -07:00
Fan Zhang
5035f8c559 Move a11y indexing from DynamicContentMonitor to loader
This is necessary to kill DynamicContentMonitor later

- Removed all logic related to indexing accesiblitysetting from the
  monitor class and AccessibilitySetting page itself
- Created a loader to search against A11yServices at runtime

I noticed adding a loader in SearchResultsAdapter is rather manual. It's
something we should consider refactor in the future.

Bug: 64310452
Test: robotests
Change-Id: Iff31aff65ce000991229433f294e2ec69af99da2
2017-08-03 10:10:59 -07:00
Fan Zhang
e651ddf9e6 Add shadow to searchbar when user scrolls vertically
Bug: 63528057
Test: robotests

Change-Id: Ib85676d78b43be38aab1eacd0820d0755a601f60
2017-07-20 20:32:09 +00:00
Fan Zhang
465d79776f Improve search indexing time.
- Some import clean up.
- Add timing log to track indexing time breakdown.
- Remove isAvailable() from UserDictionaryPreferenceController.

Bug: 36391685
Test: rebuild
Change-Id: If154c5dafba5d21cb1020497c44fbf67f03ad820
2017-07-18 14:53:49 -07:00
Fan Zhang
4e7bd693b2 Misc search fix
- Remove incorrect summary from set date/time
- Remove some unused resources
- Remove ability to clear individual search history
- Add remove all query history menu item

Change-Id: I4383d075310297163fd2206d1a5b9c8f4ed94078
Fix: 62741488
Fix: 31589605
Test: robotests
2017-07-14 15:29:57 -07:00
Soroosh Mariooryad
892d65fd1e Adding warmup call API for Settings search ranking.
- This allows the ranking implementations to prepare for predictions and
avoids latency on the first prediction call.

Bug: 38197948
Bug: 37312700

Test: RunSettingsRoboTests

Change-Id: I1878b14765ad7cede5648fa1c7f29c419c2e5535
2017-07-07 17:53:58 -07:00
Andrew Sapperstein
1bc4a459fb Merge "Search bar polish" into oc-dr1-dev am: d10a1af258
am: e0c01c6605

Change-Id: I39bae9af6032e392bfcb96eaab1af281bc705273
2017-07-07 18:04:37 +00:00
Andrew Sapperstein
a22768cc1e Search bar polish
Updated main page text color, text size, and search bar height.
Also updated results page text size.

Change-Id: Ic4a390136b854741a73e99431b8dd9452871dd2c
Fixes: 63397599
Fixes: 63394285
Test: robotests and manual
2017-07-06 16:37:00 -07:00
Soroosh Mariooryad
55bb0c258d Log async ranking state in Settings search ranking
Bug: 62072727
Test: RunSettingsRoboTests

Change-Id: I2140c41d01f18a1e4b9e3f505e0afa4a8757d049
2017-07-05 13:04:22 -07:00
Andrew Sapperstein
b2c69878d1 Merge "Fix robotests." into oc-dr1-dev am: db72caf3ea
am: 8e1c3b9b1b

Change-Id: I2990a108691e8123df1eeefc50f650d0b8d318a6
2017-06-29 23:42:57 +00:00
Andrew Sapperstein
51e4a66446 Fix robotests.
Change-Id: Ia0615bfdd303a19b145ead44979a03ccdd29bf41
Fixes: 63141368
Test: robotest
2017-06-29 16:24:32 -07:00
Matthew Fritze
f050ab93d1 Merge "Add synchronous indexing api to SearchFeatureProvider" into oc-dr1-dev am: e2e54e17c7
am: d4075ea983

Change-Id: Ie93718a9af3b3bb4e53dfbf7f43da31c1ee9404a
2017-06-28 20:53:12 +00:00
Matthew Fritze
98a9e42c93 Add synchronous indexing api to SearchFeatureProvider
- Opens the database indexing to be synchronous for the
external settings api.
- Adds logging to track synchronous and async indexing
times.

Bug: 62826872
Test: make RunSettingsRoboTests
Change-Id: I28b69f3952946c0ae5dd7ea7da66f7a5fd485637
2017-06-28 11:31:27 -07:00
Andrew Sapperstein
dd1dc22dcc Merge "Search results page polish" into oc-dr1-dev am: 692a4b5514
am: a35b49a17d

Change-Id: I74370bad4f49ad1e9464e377057b5aebc74696aa
2017-06-27 18:59:35 +00:00
Andrew Sapperstein
ab0c049bc2 Search results page polish
Changes made:
- up button added and in correct place
- text color correct when entering query
- query text aligned with results
- grey background around searchbar

Fixes: 37477506
Test: robotests
Change-Id: Ieb135f81f684032f3d5e4102304e617088c88117
2017-06-26 17:19:53 -07:00
Fan Zhang
9861c95577 Fix typo in metrics constants
Change-Id: If73ca178c6f3f5544ae2f5a0cc030e307d7df8c5
Fix: 62955794
Test: robotests
2017-06-26 12:13:55 -07:00
Soroosh Mariooryad
9aad1cd48b Increase visibilities in SearchFragment and SearchResutlsAdapter for testing
Test: RunSettingsRoboTests
Bug: 36867802

Change-Id: I9102d02a5500330ce53e742ecd2084f0e714b830
2017-06-08 12:46:36 -07:00
Fan Zhang
0ca782ab18 Add logging to track search no-result case
Change-Id: Iea95468c33e6663c0dad374954468947575bb3df
Fix: 37211659
Test: make RunSettingsRoboTests
2017-06-06 13:24:38 -07:00
Fan Zhang
9011a67431 Add a suggestion: showing new device features
- New suggestion activity
- Removed useless api SuggestionFeatureProvider.isPresent().

- Also updated support activity search indexing icon and summary

Change-Id: Ib52cf26a985f57bf0aac918606b10f75bd024639
Fix: 62034077
Fix: 62196070
Test: make RunSettingsRoboTests
2017-06-03 14:51:09 -07:00
Soroosh Mariooryad
733bbf7c34 Updating the search ranking API and some improvements:
- Ranking API is modified to run the ranking asynchronous to the main thread.
Therefore, it can now run in parallel to loading the results from DB
which decreases the overall latency.
- Ranking API now supports reporting failure from the ranker
implementation side.
- Settings that are not ranked by the ranker algorithm are now ranked at
the end of the list. This is added for dynamic settings (e.g., apps).
- Failure handling mechanism is added for cases that ranker catches an
exception or it takes a long time to respond.

Bug: 37312700
Fixes: 36866337
Fixes: 36867476
Fixes: 36866736
Fixes: 36866838

Test: RunSettingsRoboTests

Change-Id: I3a2a97e3a07a8d4afbb090061d92172a27588ee7
2017-06-02 12:09:20 -07:00
Andrew Sapperstein
893cb0987a Add search bar to SearchActivity.
Styling doesn't look exactly right yet but there's a bar.
Creates an ItemDecoration to add a spacer above the first view.

Removes the action bar and replaces it with a SearchView
inside of a CardView.

Remaining work: pixel pushing

Bug: 37477506
Test: make RunSettingsRoboTests
Change-Id: I4a0f0c91c51ff5820b61a596520d80a3337c3466
2017-06-01 11:01:00 -07:00
TreeHugger Robot
ee991f4956 Merge "Misc logging changes" 2017-05-26 21:11:34 +00:00
Fan Zhang
012028e3a3 Misc logging changes
- log search result count, rank when clicking search result.
- log app package when default app is changed

Change-Id: Idd11bd67caba2beaa59c65839c40db8c71787388
Fix: 62072727
Test: make RunSettingsRoboTests
2017-05-26 12:28:13 -07:00
Soroosh Mariooryad
683ccdf97b Move static search ranking from DatabaseResultLoader to Search Adapter.
This will avoid unnecessary static ranking if smart ranking is used.

Since loader does not need to provided sorted collection of results,
the loading data type has changed from List<> to Set<>. This will also
faster lookup in the Adapter.

Fixes: 38447799
Test: make RunSettingsRoboTests

Change-Id: I448b29bd4e8700c8ec4b5766cbeab4b3087ae39a
2017-05-26 09:28:06 -07:00
Matthew Fritze
2078bc2358 Remove search2 package and put everything into search
Change-Id: Ie8651c79ef023f154cd7120a88a20f3481abce2b
Fixes: 38502743
Test: make RunSettingsRoboTests
2017-05-23 13:57:28 -07:00