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

Unified Diff: chrome/browser/protector/protector_service.cc

Issue 11493003: Remove the protector service. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix implicit ExtensionSystem -> TemplateURLService dependency Created 8 years 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/protector/protector_service.cc
diff --git a/chrome/browser/protector/protector_service.cc b/chrome/browser/protector/protector_service.cc
deleted file mode 100644
index 2a442305e9045b10154f27a659c47bc4041b1b02..0000000000000000000000000000000000000000
--- a/chrome/browser/protector/protector_service.cc
+++ /dev/null
@@ -1,236 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/protector/protector_service.h"
-
-#include "base/logging.h"
-#include "chrome/browser/google/google_util.h"
-#include "chrome/browser/prefs/pref_service.h"
-#include "chrome/browser/protector/composite_settings_change.h"
-#include "chrome/browser/protector/keys.h"
-#include "chrome/browser/protector/protected_prefs_watcher.h"
-#include "chrome/browser/protector/protector_utils.h"
-#include "chrome/browser/protector/settings_change_global_error.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/host_desktop.h"
-#include "chrome/browser/ui/singleton_tabs.h"
-#include "chrome/common/chrome_notification_types.h"
-#include "chrome/common/pref_names.h"
-#include "content/public/browser/notification_source.h"
-#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
-
-namespace protector {
-
-namespace {
-
-// Returns true if changes with URLs |url1| and |url2| can be merged.
-bool CanMerge(const GURL& url1, const GURL& url2) {
- VLOG(1) << "Checking if can merge " << url1.spec() << " with " << url2.spec();
- // All Google URLs are considered the same one.
- if (google_util::IsGoogleHostname(url1.host(),
- google_util::DISALLOW_SUBDOMAIN)) {
- return google_util::IsGoogleHostname(url2.host(),
- google_util::DISALLOW_SUBDOMAIN);
- }
- // Otherwise URLs must have the same domain.
- return net::RegistryControlledDomainService::SameDomainOrHost(url1, url2);
-}
-
-} // namespace
-
-ProtectorService::ProtectorService(Profile* profile)
- : profile_(profile),
- has_active_change_(false) {
- // Start observing pref changes.
- prefs_watcher_.reset(new ProtectedPrefsWatcher(profile));
-}
-
-ProtectorService::~ProtectorService() {
- DCHECK(!IsShowingChange()); // Should have been dismissed by Shutdown.
-}
-
-void ProtectorService::ShowChange(BaseSettingChange* change) {
- DCHECK(change);
- // Change instance will either be owned by |this| or deleted after this call.
- scoped_ptr<BaseSettingChange> change_ptr(change);
-
- DVLOG(1) << "Init change";
- if (!protector::IsEnabled()) {
- change_ptr->InitWhenDisabled(profile_);
- return;
- } else if (!change_ptr->Init(profile_)) {
- LOG(WARNING) << "Error while initializing, dismissing change";
- return;
- }
-
- Item* item_to_merge_with = FindItemToMergeWith(change_ptr.get());
- if (item_to_merge_with) {
- // CompositeSettingsChange takes ownership of merged changes.
- BaseSettingChange* existing_change = item_to_merge_with->change.release();
- CompositeSettingsChange* merged_change =
- existing_change->MergeWith(change_ptr.release());
- item_to_merge_with->change.reset(merged_change);
- item_to_merge_with->was_merged = true;
- if (item_to_merge_with->error->GetBubbleView())
- item_to_merge_with->show_when_merged = true;
- // Remove old GlobalError instance. Later in OnRemovedFromProfile() a new
- // GlobalError instance will be created for the composite change.
- item_to_merge_with->error->RemoveFromProfile();
- } else if (change->IsUserVisible()) {
- Item new_item;
- SettingsChangeGlobalError* error =
- new SettingsChangeGlobalError(change_ptr.get(), this);
- new_item.error.reset(error);
- new_item.change.reset(change_ptr.release());
- items_.push_back(new_item);
- // Do not show the bubble immediately if another one is active.
- // TODO(robertshield): Add desktop context to protector, crbug.com/153771
- error->AddToProfile(profile_, !has_active_change_,
- chrome::HOST_DESKTOP_TYPE_NATIVE);
- has_active_change_ = true;
- } else {
- VLOG(1) << "Not showing a change because it's not user-visible.";
- }
-}
-
-bool ProtectorService::IsShowingChange() const {
- return !items_.empty();
-}
-
-void ProtectorService::ApplyChange(BaseSettingChange* change,
- Browser* browser) {
- change->Apply(browser);
- DismissChange(change);
-}
-
-void ProtectorService::DiscardChange(BaseSettingChange* change,
- Browser* browser) {
- change->Discard(browser);
- DismissChange(change);
-}
-
-void ProtectorService::DismissChange(BaseSettingChange* change) {
- Items::iterator item = std::find_if(items_.begin(), items_.end(),
- MatchItemByChange(change));
- DCHECK(item != items_.end());
- item->error->RemoveFromProfile();
-}
-
-void ProtectorService::OpenTab(const GURL& url, Browser* browser) {
- DCHECK(browser);
- chrome::ShowSingletonTab(browser, url);
-}
-
-ProtectedPrefsWatcher* ProtectorService::GetPrefsWatcher() {
- return prefs_watcher_.get();
-}
-
-void ProtectorService::StopWatchingPrefsForTesting() {
- prefs_watcher_.reset();
-}
-
-ProtectorService::Item* ProtectorService::FindItemToMergeWith(
- const BaseSettingChange* change) {
- if (!change->CanBeMerged())
- return NULL;
- GURL url = change->GetNewSettingURL();
- for (Items::iterator item = items_.begin(); item != items_.end(); item++) {
- if (item->change->CanBeMerged() &&
- CanMerge(url, item->change->GetNewSettingURL()))
- return &*item;
- }
- return NULL;
-}
-
-void ProtectorService::Shutdown() {
- while (IsShowingChange())
- items_[0].error->RemoveFromProfile();
-}
-
-void ProtectorService::OnApplyChange(SettingsChangeGlobalError* error,
- Browser* browser) {
- DVLOG(1) << "Apply change";
- error->change()->Apply(browser);
- has_active_change_ = false;
-}
-
-void ProtectorService::OnDiscardChange(SettingsChangeGlobalError* error,
- Browser* browser) {
- DVLOG(1) << "Discard change";
- error->change()->Discard(browser);
- has_active_change_ = false;
-}
-
-void ProtectorService::OnDecisionTimeout(SettingsChangeGlobalError* error) {
- DVLOG(1) << "Timeout";
- error->change()->Timeout();
-}
-
-void ProtectorService::OnRemovedFromProfile(SettingsChangeGlobalError* error) {
- Items::iterator item = std::find_if(items_.begin(), items_.end(),
- MatchItemByError(error));
- DCHECK(item != items_.end());
-
- if (item->was_merged) {
- bool show_new_error = !has_active_change_ || item->show_when_merged;
- item->was_merged = false;
- item->show_when_merged = false;
- // Item was merged with another change instance and error has been removed,
- // create a new one for the composite change.
- item->error.reset(new SettingsChangeGlobalError(item->change.get(), this));
- // TODO(robertshield): Add desktop context to protector, crbug.com/153771
- item->error->AddToProfile(profile_, show_new_error,
- chrome::HOST_DESKTOP_TYPE_NATIVE);
- has_active_change_ = true;
- return;
- }
-
- items_.erase(item);
-
- // If no other change is shown and there are changes that haven't been shown
- // yet, show the first one.
- if (!has_active_change_) {
- for (item = items_.begin(); item != items_.end(); ++item) {
- if (!item->error->HasShownBubbleView()) {
- // TODO(robertshield): Add desktop context to protector,
- // crbug.com/153771
- item->error->ShowBubble(chrome::HOST_DESKTOP_TYPE_NATIVE);
- has_active_change_ = true;
- return;
- }
- }
- }
-}
-
-BaseSettingChange* ProtectorService::GetLastChange() {
- return items_.empty() ? NULL : items_.back().change.get();
-}
-
-ProtectorService::Item::Item()
- : was_merged(false),
- show_when_merged(false) {
-}
-
-ProtectorService::Item::~Item() {
-}
-
-ProtectorService::MatchItemByChange::MatchItemByChange(
- const BaseSettingChange* other) : other_(other) {
-}
-
-bool ProtectorService::MatchItemByChange::operator()(
- const ProtectorService::Item& item) {
- return item.change->Contains(other_);
-}
-
-ProtectorService::MatchItemByError::MatchItemByError(
- const SettingsChangeGlobalError* other) : other_(other) {
-}
-
-bool ProtectorService::MatchItemByError::operator()(
- const ProtectorService::Item& item) {
- return other_ == item.error.get();
-}
-
-} // namespace protector
« no previous file with comments | « chrome/browser/protector/protector_service.h ('k') | chrome/browser/protector/protector_service_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698