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

Unified Diff: chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_model.cc

Issue 2850103002: Settings reset prompt: Add a test for the default settings fetcher. (Closed)
Patch Set: Nits Created 3 years, 8 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: chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_model.cc
diff --git a/chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_model.cc b/chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_model.cc
index f93e81e6cb54a1115ffcfbc35e4faaf84fc7f79e..3a8daef07834f75311e18af04b71ade972648b58 100644
--- a/chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_model.cc
+++ b/chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_model.cc
@@ -10,12 +10,11 @@
#include "base/callback.h"
#include "base/metrics/histogram_macros.h"
#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/google/google_brand.h"
#include "chrome/browser/prefs/session_startup_pref.h"
-#include "chrome/browser/profile_resetter/brandcode_config_fetcher.h"
#include "chrome/browser/profile_resetter/brandcoded_default_settings.h"
#include "chrome/browser/profile_resetter/resettable_settings_snapshot.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/safe_browsing/settings_reset_prompt/default_settings_fetcher.h"
#include "chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_config.h"
#include "chrome/browser/search_engines/template_url_service_factory.h"
#include "chrome/common/extensions/manifest_handlers/settings_overrides_handler.h"
@@ -34,10 +33,6 @@ namespace safe_browsing {
namespace {
-#if defined(GOOGLE_CHROME_BUILD)
-constexpr char kOmahaUrl[] = "https://tools.google.com/service/update2";
-#endif // defined(GOOGLE_CHROME_BUILD)
-
// These values are used for UMA metrics reporting. New enum values can be
// added, but existing enums must never be renumbered or deleted and reused.
enum SettingsReset {
@@ -57,103 +52,6 @@ enum SettingsType : uint32_t {
SETTINGS_TYPE_STARTUP_URLS,
};
-// A helper class that fetches default settings to be used for the settings
-// reset prompt. The static |FetchDefaultSettings()| function will create and
-// manage the lifetime of |DefaultSettingsFetcher| instances.
-class DefaultSettingsFetcher {
- public:
- using SettingsCallback =
- base::Callback<void(std::unique_ptr<BrandcodedDefaultSettings>)>;
-
- // Fetches default settings and passes the corresponding
- // |BrandcodedDefaultSettings| object to |callback| on the UI thread. The
- // function should be called on the UI thread as well.
- static void FetchDefaultSettings(SettingsCallback callback);
-
- private:
- // Instances of |DefaultSettingsFetcher| own themselves and will delete
- // themselves once default settings have been fetched and |callback| has been
- // posted on the UI thread.
- //
- // The main reason for this design is that |BrandcodeConfigFetcher| takes a
- // callback and initiates the fetching process in its constructor, and we need
- // to hold on to the instance of the fetcher until settings have been
- // fetched. This design saves us from having to explicitly manage global
- // |BrandcodeConfigFetcher| instances.
- explicit DefaultSettingsFetcher(SettingsCallback callback);
- ~DefaultSettingsFetcher();
-
- // Starts the process of fetching default settings and will ensure that
- // |PostCallbackAndDeleteSelf| is called once settings have been fetched.
- void Start();
- void OnSettingsFetched();
- // Posts a call to |callback_| on the UI thread, passing to it
- // |default_settings|, and deletes |this|.
- void PostCallbackAndDeleteSelf(
- std::unique_ptr<BrandcodedDefaultSettings> default_settings);
-
- std::unique_ptr<BrandcodeConfigFetcher> config_fetcher_;
- SettingsCallback callback_;
-};
-
-// static
-void DefaultSettingsFetcher::FetchDefaultSettings(SettingsCallback callback) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-
- // |settings_fetcher| will delete itself when default settings have been
- // fetched after the call to |Start()|.
- DefaultSettingsFetcher* settings_fetcher =
- new DefaultSettingsFetcher(std::move(callback));
- settings_fetcher->Start();
-}
-
-DefaultSettingsFetcher::DefaultSettingsFetcher(SettingsCallback callback)
- : callback_(std::move(callback)) {}
-
-DefaultSettingsFetcher::~DefaultSettingsFetcher() {}
-
-void DefaultSettingsFetcher::Start() {
- DCHECK(!config_fetcher_);
-
-#if defined(GOOGLE_CHROME_BUILD)
- std::string brandcode;
- if (google_brand::GetBrand(&brandcode) && !brandcode.empty()) {
- config_fetcher_.reset(new BrandcodeConfigFetcher(
- base::Bind(&DefaultSettingsFetcher::OnSettingsFetched,
- base::Unretained(this)),
- GURL(kOmahaUrl), brandcode));
- return;
- }
-#endif // defined(GOOGLE_CHROME_BUILD)
-
- // For non Google Chrome builds and cases with an empty |brandcode|, we create
- // a default-constructed |BrandcodedDefaultSettings| object and post the
- // callback immediately.
- PostCallbackAndDeleteSelf(base::MakeUnique<BrandcodedDefaultSettings>());
-}
-
-void DefaultSettingsFetcher::OnSettingsFetched() {
- DCHECK(config_fetcher_);
- DCHECK(!config_fetcher_->IsActive());
-
- std::unique_ptr<BrandcodedDefaultSettings> settings(
- config_fetcher_->GetSettings());
- // Use default settings if fetching of BrandcodedDefaultSettings fails.
- if (!settings)
- settings.reset(new BrandcodedDefaultSettings());
-
- PostCallbackAndDeleteSelf(std::move(settings));
-}
-
-void DefaultSettingsFetcher::PostCallbackAndDeleteSelf(
- std::unique_ptr<BrandcodedDefaultSettings> default_settings) {
- DCHECK(default_settings);
- content::BrowserThread::PostTask(
- content::BrowserThread::UI, FROM_HERE,
- base::BindOnce(std::move(callback_), base::Passed(&default_settings)));
- delete this;
-}
-
const extensions::Extension* GetExtension(
Profile* profile,
const extensions::ExtensionId& extension_id) {
« no previous file with comments | « chrome/browser/safe_browsing/settings_reset_prompt/default_settings_fetcher_browsertest.cc ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698