Commit Graph

16 Commits

Author SHA1 Message Date
Matthew Fritze
6bbc459f24 Simplify IndexData builder
This is a small refactor in the large game of refactoring
DatabeseIndexingManager, and the general indexing pipeline
for Settings search.

This change is centered around hiding the normalization of
data (title, summary, keywords) from the data collector,
and putting that responsibility into the IndexData object.

In a future CL, we may move this again to the controller
that actually indexes the data.

Note, the conversion from PreIndexData to IndexData is
still messy, but until I can write a CL that just
rearranges the code, we must stay patient and vigilant.

Bug: 33577327
Test: make RunSettingsRoboTests
Change-Id: I53543d3d9c74a61380601297c55b6e4fea13031a
2017-09-14 14:49:57 -07:00
Matthew Fritze
80d3ea2a73 Move search indexing into a separate class
Step 2 in refactoring DatabaseIndexingManager.

This step moves the insertion of data into the database
into a new class. This removes the remaining bulk of the
code outside of DIM, but it does not fix the actual issue
with the indexing code.

The indexing code still chains functions together to
insert data into the database at the end of the functions.

It is exceedingly hard to read, and hard to track down bugs.

I would like the converter to eventually return a list of
IndexData objects, which lets us dissociate the database
from the data collection. I.e. we can store the database
in the Search app, and just pass IndexData objects via
IPC.Fixing this requires more of a refactor, and will be
done in a subsquent CL.

Bug: 33577327
Test: make RunSettingsRoboTests
Test: Took a database dump before and after change,
      and they were the same. Cool.
Change-Id: Ia9bb815657b76f6cb9163014e746ec5eb6db8c5e
2017-09-12 15:40:54 -07:00
Matthew Fritze
bdc8fe6da9 Separate collection of indexable data from indexing
The first step in refactoring the god class,
DatabaseIndexingManager.

The class has one major entry point: indexDatabase
which begins a chain of calls that first collects all the
data from the fragments, and then massages that data into
the SQLite database. Unfortunately, most of the methods
do not return data, and just pass along some mutated
form of the data until it can be insterted.

Reading and testing this class is very difficult.

This first step moves the collection of the indexable data
into a new class which has a few benefits:
- The data can be easily mocked in tests
- Reduces complexity of D.I.M.
- Separates data collection from indexing, which allows the
indexable data to be piped into a new API that unbundled
search can consume.

Bug:33577327
Test: make RunSettingsRoboTests
Test: Grabbed a DB dump before change, compared to DB dump after change
to make sure everything is still indexed.
Change-Id: Ibc91e3d75ff5dcf5274b93b29bf3544f90b2194d
2017-09-07 08:53:41 -07:00
Fan Zhang
f8d95fa35d Reindex db when package w/ searchIndexProvider changes
We do this by tracking a list of package/version that provides search
indexing data. When they change, we do a full reindex.

Change-Id: I906a1524f5b1292932f63727d605283ddb7d6ee2
Bug: 63903835
Test: robotests
2017-07-21 12:38:24 -07: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
Matthew Fritze
636e18c659 Merge "Add public intent filters to indexing" into oc-dr1-dev am: 50535da16d
am: 01ee9b3cc7

Change-Id: I2a5063324b21e2a77ba10d9e4be9dcbc4aadd2c9
2017-07-07 22:48:42 +00:00
TreeHugger Robot
50535da16d Merge "Add public intent filters to indexing" into oc-dr1-dev 2017-07-07 22:39:20 +00:00
Matthew Fritze
473b6b45de Add public intent filters to indexing
Adds a public intent action to the index so that intents
can be created for callers outside of settings.

Change-Id: I9f87263f213b6de40542e8735c931ee1f0d82094
Fixes: 63136008
Test: make RunSettingsRoboTests
2017-07-06 23:12:21 +00:00
Matthew Fritze
aadd26e335 Merge "Check non-indexable keys for raw data" into oc-dr1-dev am: 24ba2fbdb9
am: dc2005eb6a

Change-Id: Ibcefe758e9524ae810234212ac83d385bd03d09e
2017-07-06 17:39:25 +00:00
Matthew Fritze
bdd57aad3e Check non-indexable keys for raw data
Change-Id: I182f6757cae0ccdd07c2c38ea0f02bd4998f79be
Fixes: 63360455
Test: make RunSettingsRoboTests
2017-07-06 08:15:42 -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
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
Matthew Fritze
2b1a88da3d Simplify InlineSwitchPayloads and generalize get/set method
InlineSwitchPayload now assumes that all switches will be
stored as 1 or 0, which simplifies the code.

Moves Availability into ResultPayload, so that custom
payloads can be created to set/get values which are more
complicated than stotring ints (like bluetooth or DnD),
and give more expressive reasons when unavailable.

Bug: 62022517
Test: make RunSettingsRoboTests
Change-Id: I87e6fc041bfd398e7daf6e6e479d502930d36f0f
2017-06-02 08:23:45 -07:00
Matthew Fritze
6efea1e624 Update Settings search result unique ids
- SearchResult stableIds are now DocIds from the database
- DocIds are data reference key's hash, when the key is not
empty or null
- Otherwise, DocIds are a hashcode from a set of fields.

Change-Id: Id36f7bf4ceaaa3a2bd326ecafbfe97fd0b247df2
Fixes: 37327194
Test: make RunSettingsRoboTest
2017-05-23 15:38:29 -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