1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef COMPONENTS_ENHANCED_BOOKMARKS_BOOKMARK_SERVER_SEARCH_SERVICE_H_
6 #define COMPONENTS_ENHANCED_BOOKMARKS_BOOKMARK_SERVER_SEARCH_SERVICE_H_
11 #include "components/enhanced_bookmarks/bookmark_server_service.h"
12 #include "net/url_request/url_fetcher.h"
14 namespace enhanced_bookmarks
{
16 class EnhancedBookmarkModel
;
18 // Sends requests to the bookmark server to search for bookmarks relevant to a
19 // given query. Will handle one outgoing request at a time.
20 class BookmarkServerSearchService
: public BookmarkServerService
{
22 BookmarkServerSearchService(
23 scoped_refptr
<net::URLRequestContextGetter
> request_context_getter
,
24 ProfileOAuth2TokenService
* token_service
,
25 SigninManagerBase
* signin_manager
,
26 EnhancedBookmarkModel
* bookmark_model
);
27 virtual ~BookmarkServerSearchService();
29 // Triggers a search. The query must not be empty. A call to this method
30 // cancels any previous searches. OnChange() is garanteed to be called once
32 void Search(const std::string
& query
);
34 // Returns the search results. The results are only available after the
35 // OnChange() observer methods has been sent. This method will return an empty
36 // result otherwise. query should be a string passed to Search() previously.
37 std::vector
<const BookmarkNode
*> ResultForQuery(const std::string
& query
);
40 virtual scoped_ptr
<net::URLFetcher
> CreateFetcher() override
;
42 virtual bool ProcessResponse(const std::string
& response
,
43 bool* should_notify
) override
;
45 virtual void CleanAfterFailure() override
;
47 // EnhancedBookmarkModelObserver methods.
48 virtual void EnhancedBookmarkModelLoaded() override
{};
49 virtual void EnhancedBookmarkAdded(const BookmarkNode
* node
) override
;
50 virtual void EnhancedBookmarkRemoved(const BookmarkNode
* node
) override
{};
51 virtual void EnhancedBookmarkAllUserNodesRemoved() override
;
52 virtual void EnhancedBookmarkRemoteIdChanged(
53 const BookmarkNode
* node
,
54 const std::string
& old_remote_id
,
55 const std::string
& remote_id
) override
;
58 // The search data, a map from query to a vector of stars.id.
59 std::map
<std::string
, std::vector
<std::string
> > searches_
;
60 std::string current_query_
;
61 DISALLOW_COPY_AND_ASSIGN(BookmarkServerSearchService
);
63 } // namespace enhanced_bookmarks
65 #endif // COMPONENTS_ENHANCED_BOOKMARKS_BOOKMARK_SERVER_SEARCH_SERVICE_H_