| Index: components/suggestions/suggestions_service.h
|
| diff --git a/components/suggestions/suggestions_service.h b/components/suggestions/suggestions_service.h
|
| index 5b118e11d2a62c80503d63e46b964bf57d0ecd97..9773ee07418b8fedf6e0e03d9ff6050f01e81ac3 100644
|
| --- a/components/suggestions/suggestions_service.h
|
| +++ b/components/suggestions/suggestions_service.h
|
| @@ -5,54 +5,24 @@
|
| #ifndef COMPONENTS_SUGGESTIONS_SUGGESTIONS_SERVICE_H_
|
| #define COMPONENTS_SUGGESTIONS_SUGGESTIONS_SERVICE_H_
|
|
|
| -#include <stdint.h>
|
| -
|
| #include <memory>
|
| -#include <string>
|
|
|
| #include "base/callback.h"
|
| #include "base/callback_list.h"
|
| -#include "base/gtest_prod_util.h"
|
| #include "base/macros.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "base/scoped_observer.h"
|
| -#include "base/threading/thread_checker.h"
|
| -#include "base/time/time.h"
|
| +#include "base/optional.h"
|
| #include "components/keyed_service/core/keyed_service.h"
|
| #include "components/suggestions/proto/suggestions.pb.h"
|
| -#include "components/sync/driver/sync_service_observer.h"
|
| -#include "net/url_request/url_fetcher_delegate.h"
|
| #include "url/gurl.h"
|
|
|
| -class OAuth2TokenService;
|
| -class SigninManagerBase;
|
| -
|
| namespace gfx {
|
| class Image;
|
| } // namespce gfx
|
|
|
| -namespace net {
|
| -class URLRequestContextGetter;
|
| -} // namespace net
|
| -
|
| -namespace syncer {
|
| -class SyncService;
|
| -} // namespace syncer
|
| -
|
| -namespace user_prefs {
|
| -class PrefRegistrySyncable;
|
| -} // namespace user_prefs
|
| -
|
| namespace suggestions {
|
|
|
| -class BlacklistStore;
|
| -class ImageManager;
|
| -class SuggestionsStore;
|
| -
|
| // An interface to fetch server suggestions asynchronously.
|
| -class SuggestionsService : public KeyedService,
|
| - public net::URLFetcherDelegate,
|
| - public syncer::SyncServiceObserver {
|
| +class SuggestionsService : public KeyedService {
|
| public:
|
| using ResponseCallback = base::Callback<void(const SuggestionsProfile&)>;
|
| using BitmapCallback = base::Callback<void(const GURL&, const gfx::Image&)>;
|
| @@ -60,171 +30,41 @@ class SuggestionsService : public KeyedService,
|
| using ResponseCallbackList =
|
| base::CallbackList<void(const SuggestionsProfile&)>;
|
|
|
| - SuggestionsService(const SigninManagerBase* signin_manager,
|
| - OAuth2TokenService* token_service,
|
| - syncer::SyncService* sync_service,
|
| - net::URLRequestContextGetter* url_request_context,
|
| - std::unique_ptr<SuggestionsStore> suggestions_store,
|
| - std::unique_ptr<ImageManager> thumbnail_manager,
|
| - std::unique_ptr<BlacklistStore> blacklist_store);
|
| - ~SuggestionsService() override;
|
| -
|
| // Initiates a network request for suggestions if sync state allows and there
|
| // is no pending request. Returns true iff sync state allowed for a request,
|
| // whether a new request was actually sent or not.
|
| - bool FetchSuggestionsData();
|
| + virtual bool FetchSuggestionsData() = 0;
|
|
|
| // Returns the current set of suggestions from the cache.
|
| - SuggestionsProfile GetSuggestionsDataFromCache() const;
|
| + virtual base::Optional<SuggestionsProfile> GetSuggestionsDataFromCache()
|
| + const = 0;
|
|
|
| // Adds a callback that is called when the suggestions are updated.
|
| - std::unique_ptr<ResponseCallbackList::Subscription> AddCallback(
|
| - const ResponseCallback& callback) WARN_UNUSED_RESULT;
|
| + virtual std::unique_ptr<ResponseCallbackList::Subscription> AddCallback(
|
| + const ResponseCallback& callback) WARN_UNUSED_RESULT = 0;
|
|
|
| // Retrieves stored thumbnail for website |url| asynchronously. Calls
|
| // |callback| with Bitmap pointer if found, and NULL otherwise.
|
| - void GetPageThumbnail(const GURL& url, const BitmapCallback& callback);
|
| + virtual void GetPageThumbnail(const GURL& url,
|
| + const BitmapCallback& callback) = 0;
|
|
|
| // A version of |GetPageThumbnail| that explicitly supplies the download URL
|
| // for the thumbnail. Replaces any pre-existing thumbnail URL with the
|
| // supplied one.
|
| - void GetPageThumbnailWithURL(const GURL& url,
|
| - const GURL& thumbnail_url,
|
| - const BitmapCallback& callback);
|
| + virtual void GetPageThumbnailWithURL(const GURL& url,
|
| + const GURL& thumbnail_url,
|
| + const BitmapCallback& callback) = 0;
|
|
|
| // Adds a URL to the blacklist cache, returning true on success or false on
|
| // failure. The URL will eventually be uploaded to the server.
|
| - bool BlacklistURL(const GURL& candidate_url);
|
| + virtual bool BlacklistURL(const GURL& candidate_url) = 0;
|
|
|
| // Removes a URL from the local blacklist, returning true on success or false
|
| // on failure.
|
| - bool UndoBlacklistURL(const GURL& url);
|
| + virtual bool UndoBlacklistURL(const GURL& url) = 0;
|
|
|
| // Removes all URLs from the blacklist.
|
| - void ClearBlacklist();
|
| -
|
| - // Determines which URL a blacklist request was for, irrespective of the
|
| - // request's status. Returns false if |request| is not a blacklist request.
|
| - static bool GetBlacklistedUrl(const net::URLFetcher& request, GURL* url);
|
| -
|
| - // Register SuggestionsService related prefs in the Profile prefs.
|
| - static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
|
| -
|
| - private:
|
| - friend class SuggestionsServiceTest;
|
| - FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest, FetchSuggestionsData);
|
| - FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest,
|
| - FetchSuggestionsDataSyncDisabled);
|
| - FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest,
|
| - FetchSuggestionsDataNoAccessToken);
|
| - FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest,
|
| - IssueRequestIfNoneOngoingError);
|
| - FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest,
|
| - IssueRequestIfNoneOngoingResponseNotOK);
|
| - FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest, BlacklistURL);
|
| - FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest, BlacklistURLRequestFails);
|
| - FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest, ClearBlacklist);
|
| - FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest, UndoBlacklistURL);
|
| - FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest, GetBlacklistedUrl);
|
| - FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest, UpdateBlacklistDelay);
|
| - FRIEND_TEST_ALL_PREFIXES(SuggestionsServiceTest, CheckDefaultTimeStamps);
|
| -
|
| - // Helpers to build the various suggestions URLs. These are static members
|
| - // rather than local functions in the .cc file to make them accessible to
|
| - // tests.
|
| - static GURL BuildSuggestionsURL();
|
| - static std::string BuildSuggestionsBlacklistURLPrefix();
|
| - static GURL BuildSuggestionsBlacklistURL(const GURL& candidate_url);
|
| - static GURL BuildSuggestionsBlacklistClearURL();
|
| -
|
| - // syncer::SyncServiceObserver implementation.
|
| - void OnStateChanged() override;
|
| -
|
| - // Sets default timestamp for suggestions which do not have expiry timestamp.
|
| - void SetDefaultExpiryTimestamp(SuggestionsProfile* suggestions,
|
| - int64_t timestamp_usec);
|
| -
|
| - // Issues a network request if there isn't already one happening.
|
| - void IssueRequestIfNoneOngoing(const GURL& url);
|
| -
|
| - // Issues a network request for suggestions (fetch, blacklist, or clear
|
| - // blacklist, depending on |url|). |access_token| is used only if OAuth2
|
| - // authentication is enabled.
|
| - void IssueSuggestionsRequest(const GURL& url,
|
| - const std::string& access_token);
|
| -
|
| - // Creates a request to the suggestions service, properly setting headers.
|
| - // If OAuth2 authentication is enabled, |access_token| should be a valid
|
| - // OAuth2 access token, and will be written into an auth header.
|
| - std::unique_ptr<net::URLFetcher> CreateSuggestionsRequest(
|
| - const GURL& url,
|
| - const std::string& access_token);
|
| -
|
| - // net::URLFetcherDelegate implementation.
|
| - // Called when fetch request completes. Parses the received suggestions data,
|
| - // and dispatches them to callbacks stored in queue.
|
| - void OnURLFetchComplete(const net::URLFetcher* source) override;
|
| -
|
| - // KeyedService implementation.
|
| - void Shutdown() override;
|
| -
|
| - // Schedules a blacklisting request if the local blacklist isn't empty.
|
| - void ScheduleBlacklistUpload();
|
| -
|
| - // If the local blacklist isn't empty, picks a URL from it and issues a
|
| - // blacklist request for it.
|
| - void UploadOneFromBlacklist();
|
| -
|
| - // Updates |scheduling_delay_| based on the success of the last request.
|
| - void UpdateBlacklistDelay(bool last_request_successful);
|
| -
|
| - // Adds extra data to suggestions profile.
|
| - void PopulateExtraData(SuggestionsProfile* suggestions);
|
| -
|
| - // Test seams.
|
| - base::TimeDelta blacklist_delay() const { return scheduling_delay_; }
|
| - void set_blacklist_delay(base::TimeDelta delay) {
|
| - scheduling_delay_ = delay; }
|
| -
|
| - base::ThreadChecker thread_checker_;
|
| -
|
| - syncer::SyncService* sync_service_;
|
| - ScopedObserver<syncer::SyncService, syncer::SyncServiceObserver>
|
| - sync_service_observer_;
|
| -
|
| - net::URLRequestContextGetter* url_request_context_;
|
| -
|
| - // The cache for the suggestions.
|
| - std::unique_ptr<SuggestionsStore> suggestions_store_;
|
| -
|
| - // Used to obtain server thumbnails, if available.
|
| - std::unique_ptr<ImageManager> thumbnail_manager_;
|
| -
|
| - // The local cache for temporary blacklist, until uploaded to the server.
|
| - std::unique_ptr<BlacklistStore> blacklist_store_;
|
| -
|
| - // Delay used when scheduling a blacklisting task.
|
| - base::TimeDelta scheduling_delay_;
|
| -
|
| - // Helper for fetching OAuth2 access tokens.
|
| - class AccessTokenFetcher;
|
| - std::unique_ptr<AccessTokenFetcher> token_fetcher_;
|
| -
|
| - // Contains the current suggestions fetch request. Will only have a value
|
| - // while a request is pending, and will be reset by |OnURLFetchComplete| or
|
| - // if cancelled.
|
| - std::unique_ptr<net::URLFetcher> pending_request_;
|
| -
|
| - // The start time of the previous suggestions request. This is used to measure
|
| - // the latency of requests. Initially zero.
|
| - base::TimeTicks last_request_started_time_;
|
| -
|
| - ResponseCallbackList callback_list_;
|
| -
|
| - // For callbacks may be run after destruction.
|
| - base::WeakPtrFactory<SuggestionsService> weak_ptr_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(SuggestionsService);
|
| + virtual void ClearBlacklist() = 0;
|
| };
|
|
|
| } // namespace suggestions
|
|
|