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

Unified Diff: ios/chrome/browser/ntp_snippets/ios_chrome_content_suggestions_service_factory.cc

Issue 2774663002: [Remote suggestions] Refactor the scheduler (Closed)
Patch Set: Marc's nits #2 Created 3 years, 9 months 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: ios/chrome/browser/ntp_snippets/ios_chrome_content_suggestions_service_factory.cc
diff --git a/ios/chrome/browser/ntp_snippets/ios_chrome_content_suggestions_service_factory.cc b/ios/chrome/browser/ntp_snippets/ios_chrome_content_suggestions_service_factory.cc
index 61a95b404db7175fb5c31878ee8d9f35416670da..924c698e0a4f147f7fd0b5e5f40d4b3e1f79da3b 100644
--- a/ios/chrome/browser/ntp_snippets/ios_chrome_content_suggestions_service_factory.cc
+++ b/ios/chrome/browser/ntp_snippets/ios_chrome_content_suggestions_service_factory.cc
@@ -31,8 +31,9 @@
#include "components/ntp_snippets/remote/remote_suggestions_database.h"
#include "components/ntp_snippets/remote/remote_suggestions_fetcher.h"
#include "components/ntp_snippets/remote/remote_suggestions_provider_impl.h"
+#include "components/ntp_snippets/remote/remote_suggestions_scheduler_impl.h"
#include "components/ntp_snippets/remote/remote_suggestions_status_service.h"
-#include "components/ntp_snippets/remote/scheduling_remote_suggestions_provider.h"
+#include "components/ntp_snippets/user_classifier.h"
#include "components/signin/core/browser/signin_manager.h"
#include "components/version_info/version_info.h"
#include "google_apis/google_api_keys.h"
@@ -59,8 +60,9 @@ using ntp_snippets::PersistentScheduler;
using ntp_snippets::RemoteSuggestionsDatabase;
using ntp_snippets::RemoteSuggestionsFetcher;
using ntp_snippets::RemoteSuggestionsProviderImpl;
+using ntp_snippets::RemoteSuggestionsSchedulerImpl;
using ntp_snippets::RemoteSuggestionsStatusService;
-using ntp_snippets::SchedulingRemoteSuggestionsProvider;
+using ntp_snippets::UserClassifier;
namespace {
@@ -118,6 +120,16 @@ IOSChromeContentSuggestionsServiceFactory::BuildServiceInstanceFor(
DCHECK(!browser_state->IsOffTheRecord());
PrefService* prefs = chrome_browser_state->GetPrefs();
+ auto user_classifier = base::MakeUnique<UserClassifier>(
+ prefs, base::MakeUnique<base::DefaultClock>());
+ auto* user_classifier_raw = user_classifier.get();
+
+ // TODO(jkrcal): Implement a persistent scheduler for iOS. crbug.com/676249
+ auto scheduler = base::MakeUnique<RemoteSuggestionsSchedulerImpl>(
+ /*persistent_scheduler=*/nullptr, user_classifier_raw, prefs,
+ GetApplicationContext()->GetLocalState(),
+ base::MakeUnique<base::DefaultClock>());
+
// Create the ContentSuggestionsService.
SigninManager* signin_manager =
ios::SigninManagerFactory::GetForBrowserState(chrome_browser_state);
@@ -130,7 +142,8 @@ IOSChromeContentSuggestionsServiceFactory::BuildServiceInstanceFor(
std::unique_ptr<ContentSuggestionsService> service =
base::MakeUnique<ContentSuggestionsService>(
State::ENABLED, signin_manager, history_service, prefs,
- std::move(category_ranker));
+ std::move(category_ranker), std::move(user_classifier),
+ std::move(scheduler));
// Create the BookmarkSuggestionsProvider.
if (base::FeatureList::IsEnabled(ntp_snippets::kBookmarkSuggestionsFeature)) {
@@ -167,11 +180,12 @@ IOSChromeContentSuggestionsServiceFactory::BuildServiceInstanceFor(
auto suggestions_fetcher = base::MakeUnique<RemoteSuggestionsFetcher>(
signin_manager, token_service, request_context, prefs, nullptr,
base::Bind(&ParseJson), GetFetchEndpoint(GetChannel()), api_key,
- service->user_classifier());
+ user_classifier_raw);
auto provider = base::MakeUnique<RemoteSuggestionsProviderImpl>(
service.get(), prefs, GetApplicationContext()->GetApplicationLocale(),
- service->category_ranker(), std::move(suggestions_fetcher),
+ service->category_ranker(), service->remote_suggestions_scheduler(),
+ std::move(suggestions_fetcher),
base::MakeUnique<ImageFetcherImpl>(
CreateIOSImageDecoder(web::WebThread::GetBlockingPool()),
request_context.get()),
@@ -179,18 +193,9 @@ IOSChromeContentSuggestionsServiceFactory::BuildServiceInstanceFor(
base::MakeUnique<RemoteSuggestionsStatusService>(signin_manager,
prefs));
- // TODO(jkrcal): Implement a persistent scheduler for iOS. crbug.com/676249
- RemoteSuggestionsProviderImpl* provider_raw = provider.get();
- auto scheduling_provider =
- base::MakeUnique<SchedulingRemoteSuggestionsProvider>(
- service.get(), std::move(provider),
- /*persistent_scheduler=*/nullptr, service->user_classifier(), prefs,
- GetApplicationContext()->GetLocalState(),
- base::MakeUnique<base::DefaultClock>());
- provider_raw->SetRemoteSuggestionsScheduler(scheduling_provider.get());
- service->set_remote_suggestions_provider(scheduling_provider.get());
- service->set_remote_suggestions_scheduler(scheduling_provider.get());
- service->RegisterProvider(std::move(scheduling_provider));
+ service->remote_suggestions_scheduler()->SetProvider(provider.get());
+ service->set_remote_suggestions_provider(provider.get());
+ service->RegisterProvider(std::move(provider));
}
// TODO(crbug.com/703565): remove std::move() once Xcode 9.0+ is required.

Powered by Google App Engine
This is Rietveld 408576698