Index: chrome/android/java/src/org/chromium/chrome/browser/EnhancedBookmarksBridge.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/EnhancedBookmarksBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/EnhancedBookmarksBridge.java |
index 20b930a6a5da660478b1ee618c7efe7bdb5e3c68..50d601c9002f88c72581af242266cda3d54fb2a2 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/EnhancedBookmarksBridge.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/EnhancedBookmarksBridge.java |
@@ -20,20 +20,32 @@ import java.util.List; |
@JNINamespace("enhanced_bookmarks::android") |
public final class EnhancedBookmarksBridge { |
private long mNativeEnhancedBookmarksBridge; |
- private final ObserverList<FiltersObserver> mObservers = |
+ private final ObserverList<FiltersObserver> mFilterObservers = |
new ObserverList<FiltersObserver>(); |
+ private final ObserverList<SearchServiceObserver> mSearchObservers = |
+ new ObserverList<SearchServiceObserver>(); |
/** |
* Interface to provide consumers notifications to changes in clusters |
*/ |
public interface FiltersObserver { |
/** |
- * Invoked when client detects that filters have been |
- * added / removed from the server. |
+ * Invoked when client detects that filters have been added/removed from the server. |
*/ |
void onFiltersChanged(); |
} |
+ /** |
+ * Interface to provide consumers notifications to changes in search service results. |
+ */ |
+ public interface SearchServiceObserver { |
+ /** |
+ * Invoked when client detects that search results have been updated. This callback is |
+ * guaranteed to be called only once and only for the most recent query. |
+ */ |
+ void onSearchResultsReturned(); |
+ } |
+ |
public EnhancedBookmarksBridge(Profile profile) { |
mNativeEnhancedBookmarksBridge = nativeInit(profile); |
} |
@@ -59,7 +71,7 @@ public final class EnhancedBookmarksBridge { |
* @param observer Observer to add |
*/ |
public void addFiltersObserver(FiltersObserver observer) { |
- mObservers.addObserver(observer); |
+ mFilterObservers.addObserver(observer); |
} |
/** |
@@ -67,7 +79,7 @@ public final class EnhancedBookmarksBridge { |
* @param observer Observer to remove |
*/ |
public void removeFiltersObserver(FiltersObserver observer) { |
- mObservers.removeObserver(observer); |
+ mFilterObservers.removeObserver(observer); |
} |
/** |
@@ -82,6 +94,42 @@ public final class EnhancedBookmarksBridge { |
} |
/** |
+ * Sends request to search server for querying related bookmarks. |
+ * @param query Keyword used to find related bookmarks. |
+ */ |
+ public void sendSearchRequest(String query) { |
+ nativeSendSearchRequest(mNativeEnhancedBookmarksBridge, query); |
+ } |
+ |
+ /** |
+ * Get list of bookmarks as result of a search request that was sent before in |
+ * {@link EnhancedBookmarksBridge#sendSearchRequest(String)}. Normally this function should be |
+ * called after {@link SearchServiceObserver#onSearchResultsReturned()} |
+ * @param query Keyword used to find related bookmarks. |
+ * @return List of BookmarkIds that are related to query. It will be null if the request is |
+ * still on the fly, or empty list if there are no results for the query. |
+ */ |
+ public List<BookmarkId> getSearchResultsForQuery(String query) { |
+ return nativeGetSearchResults(mNativeEnhancedBookmarksBridge, query); |
+ } |
+ |
+ /** |
+ * Registers a SearchObserver that listens to search request updates. |
+ * @param observer Observer to add |
+ */ |
+ public void addSearchObserver(SearchServiceObserver observer) { |
+ mSearchObservers.addObserver(observer); |
+ } |
+ |
+ /** |
+ * Unregisters a SearchObserver that listens to search request updates. |
+ * @param observer Observer to remove |
+ */ |
+ public void removeSearchObserver(SearchServiceObserver observer) { |
+ mSearchObservers.removeObserver(observer); |
+ } |
+ |
+ /** |
* @return Current set of known auto-filters for bookmarks. |
*/ |
public List<String> getFilters() { |
@@ -92,12 +140,24 @@ public final class EnhancedBookmarksBridge { |
@CalledByNative |
private void onFiltersChanged() { |
- for (FiltersObserver observer : mObservers) { |
+ for (FiltersObserver observer : mFilterObservers) { |
observer.onFiltersChanged(); |
} |
} |
@CalledByNative |
+ private void onSearchResultReturned() { |
+ for (SearchServiceObserver observer : mSearchObservers) { |
+ observer.onSearchResultsReturned(); |
+ } |
+ } |
+ |
+ @CalledByNative |
+ private static List<BookmarkId> createBookmarkIdList() { |
+ return new ArrayList<BookmarkId>(); |
+ } |
+ |
+ @CalledByNative |
private static void addToBookmarkIdList(List<BookmarkId> bookmarkIdList, long id, int type) { |
bookmarkIdList.add(new BookmarkId(id, type)); |
} |
@@ -110,5 +170,8 @@ public final class EnhancedBookmarksBridge { |
int type, String description); |
private native void nativeGetBookmarksForFilter(long nativeEnhancedBookmarksBridge, |
String filter, List<BookmarkId> list); |
+ private native List<BookmarkId> nativeGetSearchResults(long nativeEnhancedBookmarksBridge, |
+ String query); |
private native String[] nativeGetFilters(long nativeEnhancedBookmarksBridge); |
+ private native void nativeSendSearchRequest(long nativeEnhancedBookmarksBridge, String query); |
} |