| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef COMPONENTS_SUGGESTIONS_SUGGESTIONS_SERVICE_H_ | 5 #ifndef COMPONENTS_SUGGESTIONS_SUGGESTIONS_SERVICE_H_ |
| 6 #define COMPONENTS_SUGGESTIONS_SUGGESTIONS_SERVICE_H_ | 6 #define COMPONENTS_SUGGESTIONS_SUGGESTIONS_SERVICE_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
| 12 #include "base/callback.h" | 12 #include "base/callback.h" |
| 13 #include "base/cancelable_callback.h" | 13 #include "base/cancelable_callback.h" |
| 14 #include "base/gtest_prod_util.h" | 14 #include "base/gtest_prod_util.h" |
| 15 #include "base/memory/scoped_ptr.h" | 15 #include "base/memory/scoped_ptr.h" |
| 16 #include "base/memory/weak_ptr.h" | 16 #include "base/memory/weak_ptr.h" |
| 17 #include "base/threading/thread_checker.h" | 17 #include "base/threading/thread_checker.h" |
| 18 #include "base/time/time.h" | 18 #include "base/time/time.h" |
| 19 #include "components/keyed_service/core/keyed_service.h" | 19 #include "components/keyed_service/core/keyed_service.h" |
| 20 #include "components/suggestions/image_manager.h" | 20 #include "components/suggestions/image_manager.h" |
| 21 #include "components/suggestions/proto/suggestions.pb.h" | 21 #include "components/suggestions/proto/suggestions.pb.h" |
| 22 #include "components/suggestions/suggestions_utils.h" |
| 22 #include "net/url_request/url_fetcher_delegate.h" | 23 #include "net/url_request/url_fetcher_delegate.h" |
| 23 #include "ui/gfx/image/image_skia.h" | 24 #include "ui/gfx/image/image_skia.h" |
| 24 #include "url/gurl.h" | 25 #include "url/gurl.h" |
| 25 | 26 |
| 26 namespace net { | 27 namespace net { |
| 27 class URLRequestContextGetter; | 28 class URLRequestContextGetter; |
| 28 } // namespace net | 29 } // namespace net |
| 29 | 30 |
| 30 namespace user_prefs { | 31 namespace user_prefs { |
| 31 class PrefRegistrySyncable; | 32 class PrefRegistrySyncable; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 57 scoped_ptr<ImageManager> thumbnail_manager, | 58 scoped_ptr<ImageManager> thumbnail_manager, |
| 58 scoped_ptr<BlacklistStore> blacklist_store); | 59 scoped_ptr<BlacklistStore> blacklist_store); |
| 59 virtual ~SuggestionsService(); | 60 virtual ~SuggestionsService(); |
| 60 | 61 |
| 61 // Whether this service is enabled. | 62 // Whether this service is enabled. |
| 62 static bool IsEnabled(); | 63 static bool IsEnabled(); |
| 63 | 64 |
| 64 // Whether the user is part of a control group. | 65 // Whether the user is part of a control group. |
| 65 static bool IsControlGroup(); | 66 static bool IsControlGroup(); |
| 66 | 67 |
| 67 // Request suggestions data, which will be passed to |callback|. Initiates a | 68 // Request suggestions data, which will be passed to |callback|. |sync_state| |
| 68 // fetch request unless a pending one exists. To prevent multiple requests, | 69 // will influence the behavior of this function (see SyncState definition). |
| 69 // we place all |callback|s in a queue and update them simultaneously when | 70 // |
| 70 // fetch request completes. Also posts a task to execute OnRequestTimeout | 71 // |sync_state| must be specified based on the current state of the system |
| 71 // if the request hasn't completed in a given amount of time. | 72 // (see suggestions::GetSyncState). Callers should call this function again if |
| 72 void FetchSuggestionsData(ResponseCallback callback); | 73 // sync state changes. |
| 73 | 74 // |
| 74 // Similar to FetchSuggestionsData but doesn't post a task to execute | 75 // If state allows for a network request, it is initiated unless a pending one |
| 75 // OnDelaySinceFetch. | 76 // exists. To prevent multiple requests, all |callback|s are placed in a queue |
| 76 void FetchSuggestionsDataNoTimeout(ResponseCallback callback); | 77 // and are updated simultaneously when the fetch completes. Also posts a task |
| 78 // to execute OnRequestTimeout if the request hasn't completed in a given |
| 79 // amount of time. |
| 80 void FetchSuggestionsData(SyncState sync_state, |
| 81 ResponseCallback callback); |
| 77 | 82 |
| 78 // Retrieves stored thumbnail for website |url| asynchronously. Calls | 83 // Retrieves stored thumbnail for website |url| asynchronously. Calls |
| 79 // |callback| with Bitmap pointer if found, and NULL otherwise. | 84 // |callback| with Bitmap pointer if found, and NULL otherwise. |
| 80 void GetPageThumbnail( | 85 void GetPageThumbnail( |
| 81 const GURL& url, | 86 const GURL& url, |
| 82 base::Callback<void(const GURL&, const SkBitmap*)> callback); | 87 base::Callback<void(const GURL&, const SkBitmap*)> callback); |
| 83 | 88 |
| 84 // Issue a blacklist request. If there is already a blacklist request | 89 // Issue a blacklist request. If there is already a blacklist request |
| 85 // in flight, the new blacklist request is ignored. | 90 // in flight, the new blacklist request is ignored. |
| 86 void BlacklistURL(const GURL& candidate_url, | 91 void BlacklistURL(const GURL& candidate_url, |
| 87 const ResponseCallback& callback); | 92 const ResponseCallback& callback); |
| 88 | 93 |
| 89 // Determines which URL a blacklist request was for, irrespective of the | 94 // Determines which URL a blacklist request was for, irrespective of the |
| 90 // request's status. Returns false if |request| is not a blacklist request. | 95 // request's status. Returns false if |request| is not a blacklist request. |
| 91 static bool GetBlacklistedUrl(const net::URLFetcher& request, GURL* url); | 96 static bool GetBlacklistedUrl(const net::URLFetcher& request, GURL* url); |
| 92 | 97 |
| 93 // Register SuggestionsService related prefs in the Profile prefs. | 98 // Register SuggestionsService related prefs in the Profile prefs. |
| 94 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); | 99 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); |
| 95 | 100 |
| 96 // Sets default timestamp for suggestions which do not have expiry timestamp. | 101 // Sets default timestamp for suggestions which do not have expiry timestamp. |
| 97 void SetDefaultExpiryTimestamp(SuggestionsProfile* suggestions, | 102 void SetDefaultExpiryTimestamp(SuggestionsProfile* suggestions, |
| 98 int64 timestamp_usec); | 103 int64 timestamp_usec); |
| 99 private: | 104 private: |
| 105 friend class SuggestionsServiceTest; |
| 100 FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest, BlacklistURLFails); | 106 FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest, BlacklistURLFails); |
| 101 FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest, FetchSuggestionsData); | 107 FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest, FetchSuggestionsData); |
| 102 FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest, UpdateBlacklistDelay); | 108 FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest, UpdateBlacklistDelay); |
| 103 | 109 |
| 110 // Similar to FetchSuggestionsData but doesn't post a task to execute |
| 111 // OnDelaySinceFetch. |
| 112 void FetchSuggestionsDataNoTimeout(ResponseCallback callback); |
| 113 |
| 104 // Issue a request. | 114 // Issue a request. |
| 105 void IssueRequest(const GURL& url); | 115 void IssueRequest(const GURL& url); |
| 106 | 116 |
| 107 // Creates a request to the suggestions service, properly setting headers. | 117 // Creates a request to the suggestions service, properly setting headers. |
| 108 net::URLFetcher* CreateSuggestionsRequest(const GURL& url); | 118 net::URLFetcher* CreateSuggestionsRequest(const GURL& url); |
| 109 | 119 |
| 110 // Called to service the requestors if the issued suggestions request has | 120 // Called to service the requestors if the issued suggestions request has |
| 111 // not completed in a given amount of time. | 121 // not completed in a given amount of time. |
| 112 virtual void OnRequestTimeout(); | 122 virtual void OnRequestTimeout(); |
| 113 | 123 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 // Timeout (in ms) before serving requestors after a fetch suggestions request | 194 // Timeout (in ms) before serving requestors after a fetch suggestions request |
| 185 // has been issued. | 195 // has been issued. |
| 186 int request_timeout_ms_; | 196 int request_timeout_ms_; |
| 187 | 197 |
| 188 DISALLOW_COPY_AND_ASSIGN(SuggestionsService); | 198 DISALLOW_COPY_AND_ASSIGN(SuggestionsService); |
| 189 }; | 199 }; |
| 190 | 200 |
| 191 } // namespace suggestions | 201 } // namespace suggestions |
| 192 | 202 |
| 193 #endif // COMPONENTS_SUGGESTIONS_SUGGESTIONS_SERVICE_H_ | 203 #endif // COMPONENTS_SUGGESTIONS_SUGGESTIONS_SERVICE_H_ |
| OLD | NEW |