| 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
|
|
|