Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(720)

Unified Diff: components/suggestions/suggestions_service_impl.cc

Issue 2568133005: [SuggestionsService] Split SuggestionsService interface from impl (Closed)
Patch Set: Moved impl to dedicated file. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/suggestions/suggestions_service_impl.cc
diff --git a/components/suggestions/suggestions_service.cc b/components/suggestions/suggestions_service_impl.cc
similarity index 84%
rename from components/suggestions/suggestions_service.cc
rename to components/suggestions/suggestions_service_impl.cc
index 47072e811b4356c16219bc1bccad12bbd57368ba..32d057289caf2c038af617fdd00f08c600b82a1e 100644
--- a/components/suggestions/suggestions_service.cc
+++ b/components/suggestions/suggestions_service_impl.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "components/suggestions/suggestions_service.h"
+#include "components/suggestions/suggestions_service_impl.h"
#include <memory>
#include <utility>
@@ -111,8 +111,7 @@ GURL GetGoogleBaseURL() {
// Format strings for the various suggestions URLs. They all have two string
// params: The Google base URL and the device type.
// TODO(mathp): Put this in TemplateURL.
-const char kSuggestionsURLFormat[] =
- "%schromesuggestions?t=%s";
+const char kSuggestionsURLFormat[] = "%schromesuggestions?t=%s";
const char kSuggestionsBlacklistURLPrefixFormat[] =
"%schromesuggestions/blacklist?t=%s&url=";
const char kSuggestionsBlacklistClearURLFormat[] =
@@ -140,7 +139,7 @@ const int64_t kDefaultExpiryUsec = 168 * base::Time::kMicrosecondsPerHour;
// Helper class for fetching OAuth2 access tokens.
// To get a token, call |GetAccessToken|. Does not support multiple concurrent
// token requests, i.e. check |HasPendingRequest| first.
-class SuggestionsService::AccessTokenFetcher
+class SuggestionsServiceImpl::AccessTokenFetcher
: public OAuth2TokenService::Consumer {
public:
using TokenCallback = base::Callback<void(const std::string&)>;
@@ -162,9 +161,7 @@ class SuggestionsService::AccessTokenFetcher
token_request_ = token_service_->StartRequest(account_id, scopes, this);
}
- bool HasPendingRequest() const {
- return !!token_request_.get();
- }
+ bool HasPendingRequest() const { return !!token_request_.get(); }
private:
void OnGetTokenSuccess(const OAuth2TokenService::Request* request,
@@ -190,7 +187,7 @@ class SuggestionsService::AccessTokenFetcher
std::unique_ptr<OAuth2TokenService::Request> token_request_;
};
-SuggestionsService::SuggestionsService(
+SuggestionsServiceImpl::SuggestionsServiceImpl(
const SigninManagerBase* signin_manager,
OAuth2TokenService* token_service,
syncer::SyncService* sync_service,
@@ -215,9 +212,9 @@ SuggestionsService::SuggestionsService(
OnStateChanged();
}
-SuggestionsService::~SuggestionsService() {}
+SuggestionsServiceImpl::~SuggestionsServiceImpl() {}
-bool SuggestionsService::FetchSuggestionsData() {
+bool SuggestionsServiceImpl::FetchSuggestionsData() {
DCHECK(thread_checker_.CalledOnValidThread());
// If sync state allows, issue a network request to refresh the suggestions.
if (GetSyncState(sync_service_) != INITIALIZED_ENABLED_HISTORY)
@@ -226,26 +223,29 @@ bool SuggestionsService::FetchSuggestionsData() {
return true;
}
-SuggestionsProfile SuggestionsService::GetSuggestionsDataFromCache() const {
+base::Optional<SuggestionsProfile>
+SuggestionsServiceImpl::GetSuggestionsDataFromCache() const {
SuggestionsProfile suggestions;
- // In case of empty cache or error, |suggestions| stays empty.
- suggestions_store_->LoadSuggestions(&suggestions);
+ // In case of empty cache or error, return empty.
+ if (!suggestions_store_->LoadSuggestions(&suggestions)) {
+ return base::Optional<SuggestionsProfile>();
+ }
thumbnail_manager_->Initialize(suggestions);
blacklist_store_->FilterSuggestions(&suggestions);
- return suggestions;
+ return base::Optional<SuggestionsProfile>(suggestions);
}
-std::unique_ptr<SuggestionsService::ResponseCallbackList::Subscription>
-SuggestionsService::AddCallback(const ResponseCallback& callback) {
+std::unique_ptr<SuggestionsServiceImpl::ResponseCallbackList::Subscription>
+SuggestionsServiceImpl::AddCallback(const ResponseCallback& callback) {
return callback_list_.Add(callback);
}
-void SuggestionsService::GetPageThumbnail(const GURL& url,
- const BitmapCallback& callback) {
+void SuggestionsServiceImpl::GetPageThumbnail(const GURL& url,
+ const BitmapCallback& callback) {
thumbnail_manager_->GetImageForURL(url, callback);
}
-void SuggestionsService::GetPageThumbnailWithURL(
+void SuggestionsServiceImpl::GetPageThumbnailWithURL(
const GURL& url,
const GURL& thumbnail_url,
const BitmapCallback& callback) {
@@ -253,13 +253,14 @@ void SuggestionsService::GetPageThumbnailWithURL(
GetPageThumbnail(url, callback);
}
-bool SuggestionsService::BlacklistURL(const GURL& candidate_url) {
+bool SuggestionsServiceImpl::BlacklistURL(const GURL& candidate_url) {
DCHECK(thread_checker_.CalledOnValidThread());
if (!blacklist_store_->BlacklistUrl(candidate_url))
return false;
- callback_list_.Notify(GetSuggestionsDataFromCache());
+ callback_list_.Notify(
+ GetSuggestionsDataFromCache().value_or(SuggestionsProfile()));
// Blacklist uploads are scheduled on any request completion, so only schedule
// an upload if there is no ongoing request.
@@ -269,7 +270,7 @@ bool SuggestionsService::BlacklistURL(const GURL& candidate_url) {
return true;
}
-bool SuggestionsService::UndoBlacklistURL(const GURL& url) {
+bool SuggestionsServiceImpl::UndoBlacklistURL(const GURL& url) {
DCHECK(thread_checker_.CalledOnValidThread());
TimeDelta time_delta;
if (blacklist_store_->GetTimeUntilURLReadyForUpload(url, &time_delta) &&
@@ -277,33 +278,35 @@ bool SuggestionsService::UndoBlacklistURL(const GURL& url) {
blacklist_store_->RemoveUrl(url)) {
// The URL was not yet candidate for upload to the server and could be
// removed from the blacklist.
- callback_list_.Notify(GetSuggestionsDataFromCache());
+ callback_list_.Notify(
+ GetSuggestionsDataFromCache().value_or(SuggestionsProfile()));
return true;
}
return false;
}
-void SuggestionsService::ClearBlacklist() {
+void SuggestionsServiceImpl::ClearBlacklist() {
DCHECK(thread_checker_.CalledOnValidThread());
blacklist_store_->ClearBlacklist();
- callback_list_.Notify(GetSuggestionsDataFromCache());
+ callback_list_.Notify(
+ GetSuggestionsDataFromCache().value_or(SuggestionsProfile()));
IssueRequestIfNoneOngoing(BuildSuggestionsBlacklistClearURL());
}
// static
-bool SuggestionsService::GetBlacklistedUrl(const net::URLFetcher& request,
- GURL* url) {
+bool SuggestionsServiceImpl::GetBlacklistedUrl(const net::URLFetcher& request,
+ GURL* url) {
bool is_blacklist_request = base::StartsWith(
request.GetOriginalURL().spec(), BuildSuggestionsBlacklistURLPrefix(),
base::CompareCase::SENSITIVE);
- if (!is_blacklist_request) return false;
+ if (!is_blacklist_request)
+ return false;
// Extract the blacklisted URL from the blacklist request.
std::string blacklisted;
- if (!net::GetValueForKeyInQuery(
- request.GetOriginalURL(),
- kSuggestionsBlacklistURLParam,
- &blacklisted)) {
+ if (!net::GetValueForKeyInQuery(request.GetOriginalURL(),
+ kSuggestionsBlacklistURLParam,
+ &blacklisted)) {
return false;
}
@@ -313,40 +316,39 @@ bool SuggestionsService::GetBlacklistedUrl(const net::URLFetcher& request,
}
// static
-void SuggestionsService::RegisterProfilePrefs(
+void SuggestionsServiceImpl::RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {
SuggestionsStore::RegisterProfilePrefs(registry);
BlacklistStore::RegisterProfilePrefs(registry);
}
// static
-GURL SuggestionsService::BuildSuggestionsURL() {
- return GURL(base::StringPrintf(kSuggestionsURLFormat,
- GetGoogleBaseURL().spec().c_str(),
- kDeviceType));
+GURL SuggestionsServiceImpl::BuildSuggestionsURL() {
+ return GURL(base::StringPrintf(
+ kSuggestionsURLFormat, GetGoogleBaseURL().spec().c_str(), kDeviceType));
}
// static
-std::string SuggestionsService::BuildSuggestionsBlacklistURLPrefix() {
+std::string SuggestionsServiceImpl::BuildSuggestionsBlacklistURLPrefix() {
return base::StringPrintf(kSuggestionsBlacklistURLPrefixFormat,
GetGoogleBaseURL().spec().c_str(), kDeviceType);
}
// static
-GURL SuggestionsService::BuildSuggestionsBlacklistURL(
+GURL SuggestionsServiceImpl::BuildSuggestionsBlacklistURL(
const GURL& candidate_url) {
return GURL(BuildSuggestionsBlacklistURLPrefix() +
net::EscapeQueryParamValue(candidate_url.spec(), true));
}
// static
-GURL SuggestionsService::BuildSuggestionsBlacklistClearURL() {
+GURL SuggestionsServiceImpl::BuildSuggestionsBlacklistClearURL() {
return GURL(base::StringPrintf(kSuggestionsBlacklistClearURLFormat,
GetGoogleBaseURL().spec().c_str(),
kDeviceType));
}
-void SuggestionsService::OnStateChanged() {
+void SuggestionsServiceImpl::OnStateChanged() {
switch (GetSyncState(sync_service_)) {
case SYNC_OR_HISTORY_SYNC_DISABLED:
// Cancel any ongoing request, to stop interacting with the server.
@@ -366,7 +368,7 @@ void SuggestionsService::OnStateChanged() {
}
}
-void SuggestionsService::SetDefaultExpiryTimestamp(
+void SuggestionsServiceImpl::SetDefaultExpiryTimestamp(
SuggestionsProfile* suggestions,
int64_t default_timestamp_usec) {
for (int i = 0; i < suggestions->suggestions_size(); ++i) {
@@ -379,7 +381,7 @@ void SuggestionsService::SetDefaultExpiryTimestamp(
}
}
-void SuggestionsService::IssueRequestIfNoneOngoing(const GURL& url) {
+void SuggestionsServiceImpl::IssueRequestIfNoneOngoing(const GURL& url) {
// If there is an ongoing request, let it complete.
if (pending_request_.get()) {
return;
@@ -389,11 +391,11 @@ void SuggestionsService::IssueRequestIfNoneOngoing(const GURL& url) {
return;
}
token_fetcher_->GetAccessToken(
- base::Bind(&SuggestionsService::IssueSuggestionsRequest,
+ base::Bind(&SuggestionsServiceImpl::IssueSuggestionsRequest,
base::Unretained(this), url));
}
-void SuggestionsService::IssueSuggestionsRequest(
+void SuggestionsServiceImpl::IssueSuggestionsRequest(
const GURL& url,
const std::string& access_token) {
if (access_token.empty()) {
@@ -406,7 +408,8 @@ void SuggestionsService::IssueSuggestionsRequest(
last_request_started_time_ = TimeTicks::Now();
}
-std::unique_ptr<net::URLFetcher> SuggestionsService::CreateSuggestionsRequest(
+std::unique_ptr<net::URLFetcher>
+SuggestionsServiceImpl::CreateSuggestionsRequest(
const GURL& url,
const std::string& access_token) {
std::unique_ptr<net::URLFetcher> request =
@@ -430,7 +433,7 @@ std::unique_ptr<net::URLFetcher> SuggestionsService::CreateSuggestionsRequest(
return request;
}
-void SuggestionsService::OnURLFetchComplete(const net::URLFetcher* source) {
+void SuggestionsServiceImpl::OnURLFetchComplete(const net::URLFetcher* source) {
DCHECK(thread_checker_.CalledOnValidThread());
DCHECK_EQ(pending_request_.get(), source);
@@ -493,13 +496,15 @@ void SuggestionsService::OnURLFetchComplete(const net::URLFetcher* source) {
LogResponseState(RESPONSE_INVALID);
}
- callback_list_.Notify(GetSuggestionsDataFromCache());
+ callback_list_.Notify(
+ GetSuggestionsDataFromCache().value_or(SuggestionsProfile()));
UpdateBlacklistDelay(true);
ScheduleBlacklistUpload();
}
-void SuggestionsService::PopulateExtraData(SuggestionsProfile* suggestions) {
+void SuggestionsServiceImpl::PopulateExtraData(
+ SuggestionsProfile* suggestions) {
for (int i = 0; i < suggestions->suggestions_size(); ++i) {
suggestions::ChromeSuggestion* s = suggestions->mutable_suggestions(i);
if (!s->has_favicon_url() || s->favicon_url().empty()) {
@@ -508,25 +513,25 @@ void SuggestionsService::PopulateExtraData(SuggestionsProfile* suggestions) {
}
}
-void SuggestionsService::Shutdown() {
+void SuggestionsServiceImpl::Shutdown() {
// Cancel pending request.
pending_request_.reset(nullptr);
}
-void SuggestionsService::ScheduleBlacklistUpload() {
+void SuggestionsServiceImpl::ScheduleBlacklistUpload() {
DCHECK(thread_checker_.CalledOnValidThread());
TimeDelta time_delta;
if (blacklist_store_->GetTimeUntilReadyForUpload(&time_delta)) {
// Blacklist cache is not empty: schedule.
base::Closure blacklist_cb =
- base::Bind(&SuggestionsService::UploadOneFromBlacklist,
+ base::Bind(&SuggestionsServiceImpl::UploadOneFromBlacklist,
weak_ptr_factory_.GetWeakPtr());
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
FROM_HERE, blacklist_cb, time_delta + scheduling_delay_);
}
}
-void SuggestionsService::UploadOneFromBlacklist() {
+void SuggestionsServiceImpl::UploadOneFromBlacklist() {
DCHECK(thread_checker_.CalledOnValidThread());
GURL blacklisted_url;
@@ -542,7 +547,8 @@ void SuggestionsService::UploadOneFromBlacklist() {
ScheduleBlacklistUpload();
}
-void SuggestionsService::UpdateBlacklistDelay(bool last_request_successful) {
+void SuggestionsServiceImpl::UpdateBlacklistDelay(
+ bool last_request_successful) {
DCHECK(thread_checker_.CalledOnValidThread());
if (last_request_successful) {
« no previous file with comments | « components/suggestions/suggestions_service_impl.h ('k') | components/suggestions/suggestions_service_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698