diff --git a/chrome/browser/apps/app_preload_service/app_preload_service.cc b/chrome/browser/apps/app_preload_service/app_preload_service.cc index b2cc23223ccd84..2fb5571806375f 100644 --- a/chrome/browser/apps/app_preload_service/app_preload_service.cc +++ b/chrome/browser/apps/app_preload_service/app_preload_service.cc @@ -6,8 +6,10 @@ #include +#include "base/bind.h" #include "base/logging.h" #include "chrome/browser/apps/app_preload_service/app_preload_service_factory.h" +#include "chrome/browser/apps/app_preload_service/device_info_manager.h" #include "chrome/browser/profiles/profile.h" #include "components/pref_registry/pref_registry_syncable.h" #include "components/prefs/pref_service.h" @@ -62,6 +64,13 @@ void AppPreloadService::RegisterProfilePrefs( } void AppPreloadService::StartAppInstallationForFirstLogin() { + server_connector_->GetAppsForFirstLogin( + DeviceInfoManager(profile_), + base::BindOnce(&AppPreloadService::OnGetAppsForFirstLoginCompleted, + weak_ptr_factory_.GetWeakPtr())); +} + +void AppPreloadService::OnGetAppsForFirstLoginCompleted() { DictionaryPrefUpdate(profile_->GetPrefs(), prefs::kApsStateManager) ->GetDict() .Set(kFirstLoginFlowCompletedKey, true); diff --git a/chrome/browser/apps/app_preload_service/app_preload_service.h b/chrome/browser/apps/app_preload_service/app_preload_service.h index 4ec32dd97c4d04..a9d29f46732f9a 100644 --- a/chrome/browser/apps/app_preload_service/app_preload_service.h +++ b/chrome/browser/apps/app_preload_service/app_preload_service.h @@ -9,6 +9,7 @@ #include "base/gtest_prod_util.h" #include "base/memory/raw_ptr.h" +#include "base/memory/weak_ptr.h" #include "base/values.h" #include "chrome/browser/apps/app_preload_service/app_preload_server_connector.h" #include "components/keyed_service/core/keyed_service.h" @@ -43,10 +44,16 @@ class AppPreloadService : public KeyedService { friend class AppPreloadServiceTest; FRIEND_TEST_ALL_PREFIXES(AppPreloadServiceTest, FirstLoginPrefSet); + // Processes the list of apps retrieved by the server connector. + void OnGetAppsForFirstLoginCompleted(); + const base::Value::Dict& GetStateManager() const; raw_ptr profile_; std::unique_ptr server_connector_; + + // |weak_ptr_factory_| must be the last member of this class. + base::WeakPtrFactory weak_ptr_factory_{this}; }; } // namespace apps