summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/search
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2015-02-11 11:31:32 +0100
committerAdnan Begovic <adnan@cyngn.com>2015-10-29 17:36:29 -0700
commitcf72f6d3554bcf937b0fe05d3728fad34a34b877 (patch)
treeec2ab3722582935cdc50953056674c83e3084b54 /src/com/android/settings/search
parent853513841512a0fbf15dc22c7164a98d0a2de80b (diff)
downloadpackages_apps_Settings-cf72f6d3554bcf937b0fe05d3728fad34a34b877.zip
packages_apps_Settings-cf72f6d3554bcf937b0fe05d3728fad34a34b877.tar.gz
packages_apps_Settings-cf72f6d3554bcf937b0fe05d3728fad34a34b877.tar.bz2
Only access CMHW from main thread.
Some CMHW classes might expect that they're created in the main thread, e.g. if they want to use Handlers. Change-Id: I319709a423547368b3c4f047c2efbfab4c191953
Diffstat (limited to 'src/com/android/settings/search')
-rw-r--r--src/com/android/settings/search/BaseSearchIndexProvider.java4
-rw-r--r--src/com/android/settings/search/Index.java12
-rw-r--r--src/com/android/settings/search/Indexable.java5
3 files changed, 21 insertions, 0 deletions
diff --git a/src/com/android/settings/search/BaseSearchIndexProvider.java b/src/com/android/settings/search/BaseSearchIndexProvider.java
index 0fe1944..49e2803 100644
--- a/src/com/android/settings/search/BaseSearchIndexProvider.java
+++ b/src/com/android/settings/search/BaseSearchIndexProvider.java
@@ -33,6 +33,10 @@ public class BaseSearchIndexProvider implements Indexable.SearchIndexProvider {
}
@Override
+ public void prepare() {
+ }
+
+ @Override
public List<SearchIndexableResource> getXmlResourcesToIndex(Context context, boolean enabled) {
return null;
}
diff --git a/src/com/android/settings/search/Index.java b/src/com/android/settings/search/Index.java
index 267c6c0..c58923f 100644
--- a/src/com/android/settings/search/Index.java
+++ b/src/com/android/settings/search/Index.java
@@ -529,6 +529,18 @@ public class Index {
synchronized (mDataToProcess) {
final UpdateIndexTask task = new UpdateIndexTask();
UpdateData copy = mDataToProcess.copy();
+ for (SearchIndexableData data : copy.dataToUpdate) {
+ if (data instanceof SearchIndexableResource) {
+ SearchIndexableResource sir = (SearchIndexableResource) data;
+ final Class<?> clazz = sir.className != null
+ ? getIndexableClass(sir.className) : null;
+ final Indexable.SearchIndexProvider provider = clazz != null
+ ? getSearchIndexProvider(clazz) : null;
+ if (provider != null) {
+ provider.prepare();
+ }
+ }
+ }
task.execute(copy);
mDataToProcess.clear();
}
diff --git a/src/com/android/settings/search/Indexable.java b/src/com/android/settings/search/Indexable.java
index 19f88ae..c1c5b08 100644
--- a/src/com/android/settings/search/Indexable.java
+++ b/src/com/android/settings/search/Indexable.java
@@ -65,5 +65,10 @@ public interface Indexable {
* @return a list of {@link SearchIndexableRaw} references. Can be null.
*/
List<String> getNonIndexableKeys(Context context);
+
+ /**
+ * Prepare for indexing. Guaranteed to be called from the main thread.
+ */
+ void prepare();
}
}