| OLD | NEW |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prom
pt_model.h" | 5 #include "chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prom
pt_model.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| 11 #include "chrome/browser/extensions/extension_service.h" | 11 #include "chrome/browser/extensions/extension_service.h" |
| 12 #include "chrome/browser/google/google_brand.h" | 12 #include "chrome/browser/google/google_brand.h" |
| 13 #include "chrome/browser/prefs/session_startup_pref.h" | 13 #include "chrome/browser/prefs/session_startup_pref.h" |
| 14 #include "chrome/browser/profile_resetter/brandcode_config_fetcher.h" | 14 #include "chrome/browser/profile_resetter/brandcode_config_fetcher.h" |
| 15 #include "chrome/browser/profile_resetter/brandcoded_default_settings.h" | 15 #include "chrome/browser/profile_resetter/brandcoded_default_settings.h" |
| 16 #include "chrome/browser/profile_resetter/resettable_settings_snapshot.h" | 16 #include "chrome/browser/profile_resetter/resettable_settings_snapshot.h" |
| 17 #include "chrome/browser/profiles/profile.h" | 17 #include "chrome/browser/profiles/profile.h" |
| 18 #include "chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prom
pt_config.h" | 18 #include "chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prom
pt_config.h" |
| 19 #include "chrome/browser/search_engines/template_url_service_factory.h" |
| 19 #include "chrome/common/extensions/manifest_handlers/settings_overrides_handler.
h" | 20 #include "chrome/common/extensions/manifest_handlers/settings_overrides_handler.
h" |
| 21 #include "chrome/common/pref_names.h" |
| 22 #include "components/prefs/pref_service.h" |
| 23 #include "components/search_engines/template_url_service.h" |
| 20 #include "components/url_formatter/url_fixer.h" | 24 #include "components/url_formatter/url_fixer.h" |
| 21 #include "content/public/browser/browser_thread.h" | 25 #include "content/public/browser/browser_thread.h" |
| 22 #include "extensions/browser/extension_registry.h" | 26 #include "extensions/browser/extension_registry.h" |
| 23 #include "extensions/browser/extension_system.h" | 27 #include "extensions/browser/extension_system.h" |
| 24 #include "extensions/common/extension.h" | 28 #include "extensions/common/extension.h" |
| 25 #include "extensions/common/extension_id.h" | 29 #include "extensions/common/extension_id.h" |
| 26 #include "extensions/common/extension_set.h" | 30 #include "extensions/common/extension_set.h" |
| 27 | 31 |
| 28 namespace safe_browsing { | 32 namespace safe_browsing { |
| 29 | 33 |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 DCHECK(default_settings_); | 319 DCHECK(default_settings_); |
| 316 DCHECK(profile_resetter_); | 320 DCHECK(profile_resetter_); |
| 317 | 321 |
| 318 InitDefaultSearchData(); | 322 InitDefaultSearchData(); |
| 319 InitStartupUrlsData(); | 323 InitStartupUrlsData(); |
| 320 InitHomepageData(); | 324 InitHomepageData(); |
| 321 DCHECK_EQ(settings_types_initialized_, SETTINGS_TYPE_ALL); | 325 DCHECK_EQ(settings_types_initialized_, SETTINGS_TYPE_ALL); |
| 322 | 326 |
| 323 InitExtensionData(); | 327 InitExtensionData(); |
| 324 | 328 |
| 325 // TODO(alito): Figure out cases where settings cannot be reset, for example | 329 if (!SomeSettingRequiresReset()) |
| 326 // due to policy or extensions that cannot be disabled. | 330 return; |
| 331 |
| 332 // For now, during the experimental phase, if policy controls any of the |
| 333 // settings that we consider for reset (search, startup pages, homepage) or if |
| 334 // an extension that needs to be disabled is managed by policy, then we do not |
| 335 // show the reset prompt. |
| 336 // |
| 337 // TODO(alito): Consider how clients with policies should be prompted for |
| 338 // reset. |
| 339 if (SomeSettingIsManaged() || SomeExtensionMustRemainEnabled()) { |
| 340 if (homepage_reset_state_ == RESET_REQUIRED) |
| 341 homepage_reset_state_ = NO_RESET_REQUIRED_DUE_TO_POLICY; |
| 342 if (default_search_reset_state_ == RESET_REQUIRED) |
| 343 default_search_reset_state_ = NO_RESET_REQUIRED_DUE_TO_POLICY; |
| 344 if (startup_urls_reset_state_ == RESET_REQUIRED) |
| 345 startup_urls_reset_state_ = NO_RESET_REQUIRED_DUE_TO_POLICY; |
| 346 } |
| 327 } | 347 } |
| 328 | 348 |
| 329 void SettingsResetPromptModel::InitDefaultSearchData() { | 349 void SettingsResetPromptModel::InitDefaultSearchData() { |
| 330 // Default search data must be the first setting type to be initialized. | 350 // Default search data must be the first setting type to be initialized. |
| 331 DCHECK_EQ(settings_types_initialized_, 0U); | 351 DCHECK_EQ(settings_types_initialized_, 0U); |
| 332 | 352 |
| 333 settings_types_initialized_ |= SETTINGS_TYPE_DEFAULT_SEARCH; | 353 settings_types_initialized_ |= SETTINGS_TYPE_DEFAULT_SEARCH; |
| 334 | 354 |
| 335 default_search_url_ = FixupUrl(settings_snapshot_->dse_url()); | 355 default_search_url_ = FixupUrl(settings_snapshot_->dse_url()); |
| 336 default_search_reset_domain_id_ = | 356 default_search_reset_domain_id_ = |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 451 | 471 |
| 452 return RESET_REQUIRED; | 472 return RESET_REQUIRED; |
| 453 } | 473 } |
| 454 | 474 |
| 455 bool SettingsResetPromptModel::SomeSettingRequiresReset() const { | 475 bool SettingsResetPromptModel::SomeSettingRequiresReset() const { |
| 456 return default_search_reset_state_ == RESET_REQUIRED || | 476 return default_search_reset_state_ == RESET_REQUIRED || |
| 457 startup_urls_reset_state_ == RESET_REQUIRED || | 477 startup_urls_reset_state_ == RESET_REQUIRED || |
| 458 homepage_reset_state_ == RESET_REQUIRED; | 478 homepage_reset_state_ == RESET_REQUIRED; |
| 459 } | 479 } |
| 460 | 480 |
| 481 bool SettingsResetPromptModel::SomeSettingIsManaged() const { |
| 482 PrefService* prefs = profile_->GetPrefs(); |
| 483 DCHECK(prefs); |
| 484 |
| 485 // Check if homepage is managed. |
| 486 const PrefService::Preference* homepage = |
| 487 prefs->FindPreference(prefs::kHomePage); |
| 488 if (homepage && (homepage->IsManaged() || homepage->IsManagedByCustodian())) |
| 489 return true; |
| 490 |
| 491 // Check if startup pages are managed. |
| 492 if (SessionStartupPref::TypeIsManaged(prefs) || |
| 493 SessionStartupPref::URLsAreManaged(prefs)) { |
| 494 return true; |
| 495 } |
| 496 |
| 497 // Check if default search is managed. |
| 498 TemplateURLService* service = |
| 499 TemplateURLServiceFactory::GetForProfile(profile_); |
| 500 if (service && service->is_default_search_managed()) |
| 501 return true; |
| 502 |
| 503 return false; |
| 504 } |
| 505 |
| 506 bool SettingsResetPromptModel::SomeExtensionMustRemainEnabled() const { |
| 507 extensions::ManagementPolicy* management_policy = |
| 508 extensions::ExtensionSystem::Get(profile_)->management_policy(); |
| 509 |
| 510 if (management_policy) { |
| 511 for (const auto& item : extensions_to_disable()) { |
| 512 const extensions::ExtensionId& extension_id = item.first; |
| 513 const extensions::Extension* extension = |
| 514 GetExtension(profile_, extension_id); |
| 515 if (extension && management_policy->MustRemainEnabled(extension, nullptr)) |
| 516 return true; |
| 517 } |
| 518 } |
| 519 |
| 520 return false; |
| 521 } |
| 522 |
| 461 } // namespace safe_browsing. | 523 } // namespace safe_browsing. |
| OLD | NEW |