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

Side by Side Diff: chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_model.cc

Issue 2728773006: Settings reset prompt: do not show the prompt due to policy. (Closed)
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_model.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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.
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_model.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698