Commit Graph

416 Commits

Author SHA1 Message Date
TreeHugger Robot
04eb5a802d Merge "Log search latency in event log" 2017-12-20 19:44:40 +00:00
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
7fddfebf6c Add Slices Data object and DB Contract
Add in a Data object used to represent one row
in a new SQLite database used for building Slices.

The database has the following schema:
- Key
- Title
- Subtitle
- Screentitle
- Icon
- Fragment
- Controller

The key is the preference key.
Title, subtitle and Icon are for UI info.
Screentitle and fragment are for the intent.
Controller is used to get dynamic ui info (like summary),
and to take actions on the slice (like a toggle).

The actual indexing and a Slice will be handled in a subsquent CL,
but a prototype can be found here: ag/3324435

Test: robotests
Bug: 67996923
Change-Id: Id91deb58a3ab89ce1dab5a3f34cdb9ade6263aa8
2017-12-13 10:59:47 -08:00
Matthew Fritze
7d2b4f5fc7 Add PrefController in XML support
Add the ability to define a Preference Controller
in xml using the 'controller' tag.

This is useful for two reasons:
- It allows the controllers to be instantiated via
reflection for Slices and Dashboard fragment
- Removes the requirement that controllers be defined manually
in Fragments

In order to be instantiable, they must have a unified construction
following either:

  ClassName(Context)
  ClassName(Context, String)

Also added a robotest that verifies that all controllers defined
in XML follow the constructor schema, and extend
BasePreferenceController.

Test: robotests
Bug: 67996923
Change-Id: I304b35dc666daebecf0c9e286696f3f2a510704a
2017-12-12 14:21:12 -08:00
Jaekyun Seok
47f6e54895 Move codes generating html file from xml files to SettingsLib (1/2)
LicenseHtmlGeneratorFromXml, LicenseHtmlLoader and indirecly AsyncLoader
shoud be commonly used by Settings and TvSettings.

So this CL will move them to SettingsLib.

Test: building succeeded and tested on sailfish.
  make ROBOTEST_FILTER=SettingsLicenseActivityTest RunSettingsRoboTests

Change-Id: I12e9169b1d3d313a6c5da0d575a6526327268381
2017-12-07 06:41:30 +09:00
jackqdyulei
d3f314077b Add(copy) AdvancedConnectedDeviceDashboardFragment
AdvancedConnectedDeviceDashboardFragment is the same as
ConnectedDeviceDashboardFagment except for:
1. Bt preference is not MasterSwitchPreference anymore.
2. New Bluetooth file preference.

This cl copies following files:
1. connected_devices_advanced(from *_old)
2. Advanced*Fragment(from *Old)
3. Advanced*Test(from old test)

Future cl will work on differences.

Bug: 69333961
Test: RunSettingsRoboTests
Change-Id: I4a7cb7225482fb8919af95bc5586e3bf0a80b1cb
2017-12-04 12:56:20 -08:00
TreeHugger Robot
61691b5a4f Merge changes I8ce427ea,If33c3d3a,I579be569,I755c04da
* changes:
  move search test package to sdk 26
  Update accessibilityserviceresult test to sdk 26
  Update IntentSearchViewHolderTest to sdk 26
  fix DatabaseIndexingManagerTest hanging in tests
2017-12-02 01:32:49 +00:00
jeffreyhuang
f28803ec83 Update IntentSearchViewHolderTest to sdk 26
Test: make RunSettingsRoboTests -j40
Change-Id: I579be569a9a56175e45abc329b61cb1b9daf3ac7
2017-12-01 12:32:52 -08:00
jeffreyhuang
387bffcd46 fix DatabaseIndexingManagerTest hanging in tests
Test: make RunSettingsRoboTests -j40
Change-Id: I755c04daadcb8804d97f72521d84573d80b4ff19
2017-12-01 10:20:18 -08:00
TreeHugger Robot
06747ef9e8 Merge "Add search menu to all pages" 2017-11-30 20:10:27 +00:00
Fan Zhang
681a4cdd47 Add search menu to all pages
Change-Id: I0910df3d26fe583deb70d7052bde28b64e7844a7
Fixes: 68814716
Test: robotests
2017-11-30 10:43:18 -08:00
Matthew Fritze
c448863577 Index Nightdisplay Settings into search
Adds a SearchIndexProvider into NightDisplaySettings
to index night_display_settings.xml. It will show
up in search as long as ColorDisplayController
is available.

Also, supress the search result for Night Display
under Display settings in favor of the actual toggle.

Test: robotests
Fixes: 69852201

Change-Id: Id014a5ab03e7a6b5fc99f79a1cb41a0c06323f9c
2017-11-30 08:56:20 -08:00
TreeHugger Robot
64f9275f4f Merge "Fix indexing in cast and zen mode settings" 2017-11-29 22:36:18 +00:00
Fan Zhang
1ae1e17199 Fix indexing in cast and zen mode settings
- Fragment should either not implement serach provider or return a valid
  xml. Search provider with 0 resource is invalid.

Change-Id: Ie87c739bf72c926cecf48d271c6c2d72459787c4
Fixes: 69864274
Test: robotests
2017-11-28 17:50:15 -08:00
Doris Ling
bcb76351b3 Fix ConcurrentModificationException in SummaryLoader.
When the dashboard summary is being initialized, it will rebuild the UI
while the summary loader tries to to go through the tiles to update the
summary. Both is being done on a separate backgroud thread, and it will
run into concurrent modification issue if the thread is being swapped
while one is looping through the list.

Instead of letting clients access the list of tiles directly, add a
getter method in DashboardCategory to get a copy of the list of tiles
for all read-only operations.

Change-Id: I479669abd8d1d0a8ee9a4113d8ad2244da56f4d8
Fixes: 69677575
Test: make RunSettingsRoboTests
2017-11-28 16:43:07 -08:00
TreeHugger Robot
96c1ecd50f Merge "Add SettingsPrefController for Slices" 2017-11-28 22:14:28 +00:00
TreeHugger Robot
6a68f306d7 Merge "Implement querySiteMapPairs for indexableProvider." 2017-11-28 19:38:32 +00:00
Matthew Fritze
3a4168360b Add SettingsPrefController for Slices
Adds a new abstraction layer between preference controllers
and the AbstractPreferenceController. The layer is used to
consolidate the logic for each the setting type for getting
and setting values. This will be extended to support UI
information for Slices.

For reference how this fits into Slices, look at the
like-named classes added in this prototype:
ag/3221891

The changes in Search are as a transition into deprecation.
The code for Search in Settings is out-of-date from the
unbundled counterpart, and this change is made so that the
current code behaves as normal.

Test: robotests
Bug: 67996707
Change-Id: Ib1faab706485039edad66119a27a3fd5cabe6009
2017-11-27 16:35:42 -08:00
Fan Zhang
518e648acf Implement querySiteMapPairs for indexableProvider.
Query sitemap will return a list of pairs [parent class name, child
class name]. It's up to consumer to figure out the display name later
so the provider doesn't have dependency on localizing any display names.

- Removed SiteMapManagerTest. We will perform the test in
  SettingsIntelligence instead.
- Added test for the new provider in instrumentation test (robolectric
  doesn't recognize the new constants in framework yet)

Bug: 67359411
Bug: 64938328
Test: atest
Change-Id: Ia973115320e6b7c8cf84d4756db1763ae7010aed
2017-11-27 15:50:19 -08:00
jackqdyulei
76ba0f72e4 Add feature flag for connected device
Add feature flag to toggle connected device between new and old
feature.

ConnectedDeviceDashboardFragment will contain new feature will
ConnectedDeviceDashboardFragment2 will hold old feature.

Bug: 69333961
Test: Build
Change-Id: I0ea932c69dea5242129aab994d5142b1f87fbea0
2017-11-20 15:29:28 -08:00
Jeffrey Huang
07394c9931 Merge "Enable flag for about phone v2" 2017-11-20 18:10:14 +00:00
jeffreyhuang
b025f06a50 Enable flag for about phone v2
Bug: 36458278
Test: make RunSettingsRoboTests -j40
Change-Id: I0a41fdafadf71e20b76f999005dac66b6a52f570
2017-11-17 10:14:00 -08:00
TreeHugger Robot
268de492c8 Merge "Add test and fix null keys in search providers." 2017-11-16 23:21:51 +00:00
Fan Zhang
7d5c9ace64 Add test and fix null keys in search providers.
- Add keys to some screens.
- Remove dynamic saved network/turst agent from search provider.
- Remove dynamic print services from printsettings.

Bug: 69384409
Test: atest
Change-Id: I62dce27d52585badb2a8953a05084e35dbae2f7d
2017-11-16 12:57:45 -08:00
TreeHugger Robot
d76496dca1 Merge "Added zen settings messages and calls preferences." 2017-11-15 21:59:47 +00:00
Beverly
a58e52a0be Added zen settings messages and calls preferences.
- Made ZenModeSettings and ZenModeBehaviorSettings a DashboardFragment
- Switches in ZenModeBehaviorSettings all have their own preference controllers
- Instead of a dropdown, messages & calls have their own pages & preference controllers
- Added basic turn on/off DND button in settings (dialog not yet implemented)

Bug: 63077372
Fixes: 69057767
Test: make -j40 RunSettingsRoboTests
Change-Id: I1c70f77053713f66f873ee578477f23cfd7985bb
2017-11-14 14:16:26 -05:00
Fan Zhang
06b0d5b564 Send context object to FeatureFlagUtils.
Bug: 36222960
Test: robotests
Change-Id: I9ca2d8c679474e545988f518eaf32acf459abd2c
2017-11-14 09:24:31 -08:00
TreeHugger Robot
a40f6a2a45 Merge "Convert location settings to DashboardFragment." 2017-11-14 03:02:25 +00:00
Doris Ling
9ed29a2e57 Convert location settings to DashboardFragment.
- change LocationMode, LocationSettings, and ScanningSettings to be
DashboardFragment.
- remove LocationSettingsBase and moved base logics into base
controller.
- add controllers for the preferences under the 3 location settings
pages.

Fixes: 68719207
Test: make RunSettingsRoboTests
Change-Id: Icedf691c2a9f7989faebee39ea9da672209b7957
2017-11-13 17:05:14 -08:00
Fan Zhang
439921345a Allow SettingsIntelligence to access SearchResultTrampoline
Bug: 64938328
Test: robotests
Change-Id: I89b0b8adf1e034f0fc57a3991fb56452a7210219
2017-11-13 16:27:39 -08:00
Fan Zhang
6c0c789460 Revert "Get rid of SearchIndexableResources entirely."
Fixes: 69266642

This reverts commit ba0077977f.

Change-Id: I9de6914f194a65ba627b2e5e805884f894fc044f
2017-11-13 22:48:49 +00:00
Fan Zhang
ba0077977f Get rid of SearchIndexableResources entirely.
Bug: 37741509
Test: robotests
Change-Id: I7e6dba5e13378beae632c838b7dd13acfdc50b10
2017-11-10 15:10:55 -08:00
TreeHugger Robot
29b14a70d5 Merge changes I3ac6506a,I3fc80505
* changes:
  Add intent-filter to SearchResultTrampoline
  Create a feature flag for Search v2.
2017-11-10 02:31:35 +00:00
Fan Zhang
8068fda059 Add intent-filter to SearchResultTrampoline
Bug: 64938328
Test: atest
Change-Id: I3ac6506a6af3af9ff2bd60354ba23617b700ace8
2017-11-09 16:37:01 -08:00
Fan Zhang
ff4da23a65 Create a feature flag for Search v2.
Also moved all other flags in a common file so we can track them more
easily.

Bug: 68825426
Bug: 64938328
Test: rerun robotests
Change-Id: I3fc805054cb960bedd965b1b907be759df50b95d
2017-11-09 14:57:08 -08:00
Matthew Fritze
f6cf598d03 Prevent crash in Search from Stack overflow
NotificationSettingBase's getPreferenceController call
is recursive with no base case which crashes search.

Root cause here is that NotificationSettingsBase should
not be indexed for seacrh but was probably failing the
code inspection test. Added NotificationSettingsBase
child classes to grandfather list of classes that
should be ignored for search.

Change-Id: I04ed242db3a394b88e0d0ac420aaaff6f9301cb5
Fixes: 69096424
Test: robotests
2017-11-09 10:40:14 -08:00
Julia Reynolds
d0965a21e4 Merge "PreferenceControllers are the way of the future." 2017-11-08 13:33:40 +00:00
TreeHugger Robot
2260321fd8 Merge "Move Index provider conversion into Settings provider" 2017-11-07 20:52:51 +00:00
Matthew Fritze
55ce64dcd9 Move Index provider conversion into Settings provider
Pre-patch, settings search provider would push all of its
fragments into to search via SearchIndexableResources with
an implicit contract of if the resource's xml == 0, then
it was a settings fragment with an Index provider.

One, implicit contract is bad. Two, it was messy at indexing time.

So this patch moves htat conversion into the search index provider.
Such that all of the indexables are either real Resources or Raw.

Change-Id: I39f4351c03d123bb9b45edb4df7f924cfaff2b38
Fixes: 65376542
Fixes: 37741509
Test: robotests
2017-11-07 11:18:26 -08:00
Fan Zhang
a681094e8a Convert SecuritySubSetting into DashboardFragment
Bug: 32953042
Test: robotests
Change-Id: Iecdb0a42695644ff8aa095bcd49b5ccb16aa46d4
2017-11-06 17:26:25 -08:00
Julia Reynolds
ac3f7e80dc PreferenceControllers are the way of the future.
Migrates Notification settings (app level, group level, and channel
level) into PreferenceControllers (and most importantly:
PreferenceControllerTest)

Note: this removes the 'Advanced' preference group, but does
not yet use the standard system 'Advanced' grouping as it does
not currently support our use case (where we don't know how many
fields to show outside of 'Advanced' until onResume() and also
where we need fields to show below the 'Advanced' group).

Test: make RunSettingsRoboTests
Change-Id: Iddd1b4771922db322e5f73562e9d63ed077c5396
2017-11-06 13:50:26 -05:00
Fan Zhang
b916456984 Move security settings to security package
Bug: 32953042
Test: robotests
Change-Id: Ibd5a12bdd22825dde723e107050826cce9839926
2017-11-03 11:05:21 -07:00
TreeHugger Robot
baaea544a5 Merge "Convert EncryptionAndCredential into DashboardFragment" 2017-11-01 00:32:31 +00:00
Fan Zhang
9679dba668 Convert EncryptionAndCredential into DashboardFragment
The logic still lives in fragment for now. They will be moved into
PrefControllers in follow-up changes.

Bug: 32953042
Test: RoboTests
Change-Id: I2b03d26b5f4e6bbb37b42f9dc83a9464eb169868
2017-10-31 14:39:52 -07: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
Matthew Fritze
cb4b385794 Remove locale checking for indexing.
Remove the the indexing check for the
index data's locale to match the locale of
the device. We don't require locale for
indexables, and we reindex on locale change.

It had introduced a bug where when locale
changed, the default us-en results would
not be added to the db.

Change-Id: I43a4284f5c23bc51ee3efdfcabe511eac2d3317d
Fixes: 66916397
Fixes: 68380443
Test: robotests
2017-10-27 16:03:28 -07:00
TreeHugger Robot
244f4c5686 Merge "Misc clean up in search" 2017-10-27 15:41:29 +00:00
TreeHugger Robot
295a6b42f4 Merge "Moved zenMode visual effects + automatic rule page" 2017-10-27 15:23:19 +00:00
Beverly
4359d4b9c9 Moved zenMode visual effects + automatic rule page
- Automatic zen rules have their own page like in N
- Minor string changes to page and add rule dialog
- Zen mode visual effects was moved into behavior settings

Bug: 63077372
Test: $ make SettingsUnitTests -j40
$ adb install -r ${OUT}/data/app/SettingsUnitTests/SettingsUnitTests.apk
$ adb shell am instrument -w com.android.settings.tests.unit/android.support.test.runner.AndroidJUnitRunner

Change-Id: I9635f8f7969b76d036bc06ec44705815e540777a
2017-10-27 09:49:04 -04:00
Suzuki Yuka
75664c6e02 Search in Settings for Japanese
Normalize Hiragana and Katakana in Settings search.

Fixes: 28410478
Test: manual - set the device language to Japanese
               and search in Settings.
Test: manual

Change-Id: Iee76da6a895ea006959c23f4eb64f62af0917c34
2017-10-26 18:15:17 -07:00