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

Unified Diff: chrome/browser/protector/settings_change_global_error.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/settings_change_global_error.cc
diff --git a/chrome/browser/protector/settings_change_global_error.cc b/chrome/browser/protector/settings_change_global_error.cc
deleted file mode 100644
index 9ccf5582e9bfb9e5e653b90151704208eba48e03..0000000000000000000000000000000000000000
--- a/chrome/browser/protector/settings_change_global_error.cc
+++ /dev/null
@@ -1,238 +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/settings_change_global_error.h"
-
-#include <bitset>
-
-#include "base/bind.h"
-#include "base/compiler_specific.h"
-#include "base/lazy_instance.h"
-#include "base/logging.h"
-#include "base/stl_util.h"
-#include "chrome/browser/platform_util.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/protector/base_setting_change.h"
-#include "chrome/browser/protector/settings_change_global_error_delegate.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_finder.h"
-#include "chrome/browser/ui/browser_list.h"
-#include "chrome/browser/ui/browser_window.h"
-#include "chrome/browser/ui/global_error/global_error_service.h"
-#include "chrome/browser/ui/global_error/global_error_service_factory.h"
-#include "content/public/browser/browser_thread.h"
-
-using content::BrowserThread;
-
-namespace protector {
-
-namespace {
-
-// Timeout before the global error is removed (wrench menu item disappears).
-const int kMenuItemDisplayPeriodMs = 10*60*1000; // 10 min
-
-// Unset bits indicate available command IDs.
-static base::LazyInstance<
- std::bitset<IDC_SHOW_SETTINGS_CHANGE_LAST -
- IDC_SHOW_SETTINGS_CHANGE_FIRST + 1> > menu_ids =
- LAZY_INSTANCE_INITIALIZER;
-
-} // namespace
-
-SettingsChangeGlobalError::SettingsChangeGlobalError(
- BaseSettingChange* change,
- SettingsChangeGlobalErrorDelegate* delegate)
- : change_(change),
- delegate_(delegate),
- profile_(NULL),
- closed_by_button_(false),
- show_on_browser_activation_(false),
- ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)),
- menu_id_(-1) {
- DCHECK(delegate_);
- for (int i = IDC_SHOW_SETTINGS_CHANGE_FIRST;
- i <= IDC_SHOW_SETTINGS_CHANGE_LAST; i++) {
- if (!menu_ids.Get()[i - IDC_SHOW_SETTINGS_CHANGE_FIRST]) {
- menu_id_ = i;
- menu_ids.Get().set(i - IDC_SHOW_SETTINGS_CHANGE_FIRST);
- break;
- }
- }
- DCHECK(menu_id_ >= 0) << "Out of command IDs for SettingsChangeGlobalError";
-}
-
-SettingsChangeGlobalError::~SettingsChangeGlobalError() {
- if (profile_)
- RemoveFromProfile();
- if (menu_id_ >= 0)
- menu_ids.Get().reset(menu_id_ - IDC_SHOW_SETTINGS_CHANGE_FIRST);
-}
-
-void SettingsChangeGlobalError::AddToProfile(
- Profile* profile,
- bool show_bubble,
- chrome::HostDesktopType desktop_type) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- profile_ = profile;
- GlobalErrorServiceFactory::GetForProfile(profile_)->AddGlobalError(this);
- BrowserList::AddObserver(this);
- if (show_bubble) {
- ShowBubble(desktop_type);
- } else {
- // Start inactivity timer.
- BrowserThread::PostDelayedTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&SettingsChangeGlobalError::OnInactiveTimeout,
- weak_factory_.GetWeakPtr()),
- base::TimeDelta::FromMilliseconds(kMenuItemDisplayPeriodMs));
- }
-}
-
-void SettingsChangeGlobalError::RemoveFromProfile() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (profile_) {
- GlobalErrorServiceFactory::GetForProfile(profile_)->RemoveGlobalError(this);
- profile_ = NULL;
- }
- BrowserList::RemoveObserver(this);
- // This will delete |this|.
- delegate_->OnRemovedFromProfile(this);
-}
-
-void SettingsChangeGlobalError::ShowBubble(
- chrome::HostDesktopType desktop_type) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- DCHECK(profile_);
- Browser* browser = browser::FindTabbedBrowser(profile_, true, desktop_type);
- if (browser)
- ShowBubbleInBrowser(browser);
-}
-
-bool SettingsChangeGlobalError::HasBadge() {
- return true;
-}
-
-int SettingsChangeGlobalError::GetBadgeResourceID() {
- return change_->GetBadgeIconID();
-}
-
-bool SettingsChangeGlobalError::HasMenuItem() {
- return true;
-}
-
-int SettingsChangeGlobalError::MenuItemCommandID() {
- return menu_id_;
-}
-
-string16 SettingsChangeGlobalError::MenuItemLabel() {
- return change_->GetBubbleTitle();
-}
-
-int SettingsChangeGlobalError::MenuItemIconResourceID() {
- return change_->GetMenuItemIconID();
-}
-
-void SettingsChangeGlobalError::ExecuteMenuItem(Browser* browser) {
- ShowBubbleInBrowser(browser);
-}
-
-bool SettingsChangeGlobalError::HasBubbleView() {
- return true;
-}
-
-int SettingsChangeGlobalError::GetBubbleViewIconResourceID() {
- return change_->GetBubbleIconID();
-}
-
-string16 SettingsChangeGlobalError::GetBubbleViewTitle() {
- return change_->GetBubbleTitle();
-}
-
-string16 SettingsChangeGlobalError::GetBubbleViewMessage() {
- return change_->GetBubbleMessage();
-}
-
-// The Accept and Revert buttons are swapped like the 'server' and 'client'
-// concepts in X11. Accept button (the default one) discards changes
-// (keeps using previous setting) while cancel button applies changes
-// (switches to the new setting). This is sick and blows my mind. - ivankr
-
-string16 SettingsChangeGlobalError::GetBubbleViewAcceptButtonLabel() {
- return change_->GetDiscardButtonText();
-}
-
-string16 SettingsChangeGlobalError::GetBubbleViewCancelButtonLabel() {
- return change_->GetApplyButtonText();
-}
-
-void SettingsChangeGlobalError::OnBubbleViewDidClose(Browser* browser) {
- // The bubble may be closed as the result of RemoveFromProfile call when
- // merging this error with another one.
- if (!profile_)
- return;
- if (!closed_by_button_) {
- BrowserThread::PostDelayedTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&SettingsChangeGlobalError::OnInactiveTimeout,
- weak_factory_.GetWeakPtr()),
- base::TimeDelta::FromMilliseconds(kMenuItemDisplayPeriodMs));
-#if !defined(TOOLKIT_GTK)
- // TODO(ivankr): the logic for redisplaying bubble is disabled on Gtk, see
- // http://crbug.com/115719.
- if (browser->window() &&
- !platform_util::IsWindowActive(browser->window()->GetNativeWindow())) {
- // Bubble closed because the entire window lost activation, display
- // again when a window gets active.
- show_on_browser_activation_ = true;
- }
-#endif
- } else {
- RemoveFromProfile();
- }
-}
-
-void SettingsChangeGlobalError::BubbleViewAcceptButtonPressed(
- Browser* browser) {
- closed_by_button_ = true;
- delegate_->OnDiscardChange(this, browser);
-}
-
-void SettingsChangeGlobalError::BubbleViewCancelButtonPressed(
- Browser* browser) {
- closed_by_button_ = true;
- delegate_->OnApplyChange(this, browser);
-}
-
-void SettingsChangeGlobalError::OnBrowserSetLastActive(
- Browser* browser) {
- if (show_on_browser_activation_ && browser && browser->is_type_tabbed()) {
- // A tabbed browser window got activated, show the error bubble again.
- // Calling ShowBubble() immediately from here does not always work because
- // the old browser window may still have focus.
- // Multiple posted ShowBubble() calls are fine since the first successful
- // one will invalidate all the weak pointers.
- // Note that ShowBubble() will display the bubble in the last active browser
- // (which may not be |browser| at the moment ShowBubble() is executed).
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&SettingsChangeGlobalError::ShowBubble,
- weak_factory_.GetWeakPtr(),
- browser->host_desktop_type()));
- }
-}
-
-void SettingsChangeGlobalError::ShowBubbleInBrowser(Browser* browser) {
- show_on_browser_activation_ = false;
- // Cancel any previously posted tasks so that the global error
- // does not get removed on timeout while still showing the bubble.
- weak_factory_.InvalidateWeakPtrs();
- ShowBubbleView(browser);
-}
-
-void SettingsChangeGlobalError::OnInactiveTimeout() {
- delegate_->OnDecisionTimeout(this);
- RemoveFromProfile();
-}
-
-} // namespace protector

Powered by Google App Engine
This is Rietveld 408576698