| Index: chrome/browser/signin/signin_global_error.cc | 
| =================================================================== | 
| --- chrome/browser/signin/signin_global_error.cc	(revision 177205) | 
| +++ chrome/browser/signin/signin_global_error.cc	(working copy) | 
| @@ -1,202 +0,0 @@ | 
| -// Copyright (c) 2013 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/signin/signin_global_error.h" | 
| - | 
| -#include "base/logging.h" | 
| -#include "chrome/app/chrome_command_ids.h" | 
| -#include "chrome/browser/signin/signin_manager.h" | 
| -#include "chrome/browser/signin/signin_manager_factory.h" | 
| -#include "chrome/browser/ui/browser_commands.h" | 
| -#include "chrome/browser/ui/chrome_pages.h" | 
| -#include "chrome/browser/ui/global_error/global_error_service.h" | 
| -#include "chrome/browser/ui/global_error/global_error_service_factory.h" | 
| -#include "chrome/browser/ui/webui/signin/login_ui_service.h" | 
| -#include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" | 
| -#include "chrome/common/url_constants.h" | 
| -#include "grit/chromium_strings.h" | 
| -#include "grit/generated_resources.h" | 
| -#include "ui/base/l10n/l10n_util.h" | 
| - | 
| -SigninGlobalError::SigninGlobalError(Profile* profile) | 
| -    : auth_error_(GoogleServiceAuthError::None()), | 
| -      profile_(profile) { | 
| -} | 
| - | 
| -SigninGlobalError::~SigninGlobalError() { | 
| -  DCHECK(provider_set_.empty()) | 
| -      << "All AuthStatusProviders should be unregistered before" | 
| -      << " SigninManager::Shutdown() is called"; | 
| -} | 
| - | 
| -void SigninGlobalError::AddProvider(const AuthStatusProvider* provider) { | 
| -  DCHECK(provider_set_.find(provider) == provider_set_.end()) | 
| -      << "Adding same AuthStatusProvider multiple times"; | 
| -  provider_set_.insert(provider); | 
| -  AuthStatusChanged(); | 
| -} | 
| - | 
| -void SigninGlobalError::RemoveProvider(const AuthStatusProvider* provider) { | 
| -  std::set<const AuthStatusProvider*>::iterator iter = | 
| -      provider_set_.find(provider); | 
| -  DCHECK(iter != provider_set_.end()) | 
| -      << "Removing provider that was never added"; | 
| -  provider_set_.erase(iter); | 
| -  AuthStatusChanged(); | 
| -} | 
| - | 
| -SigninGlobalError::AuthStatusProvider::AuthStatusProvider() { | 
| -} | 
| - | 
| -SigninGlobalError::AuthStatusProvider::~AuthStatusProvider() { | 
| -} | 
| - | 
| -void SigninGlobalError::AuthStatusChanged() { | 
| -  // Walk all of the status providers and collect any error. | 
| -  GoogleServiceAuthError current_error(GoogleServiceAuthError::None()); | 
| -  for (std::set<const AuthStatusProvider*>::const_iterator it = | 
| -           provider_set_.begin(); it != provider_set_.end(); ++it) { | 
| -    current_error = (*it)->GetAuthStatus(); | 
| -    // Break out if any provider reports an error (ignoring ordinary network | 
| -    // errors, which are not surfaced to the user). This logic may eventually | 
| -    // need to be extended to prioritize different auth errors, but for now | 
| -    // all auth errors are treated the same. | 
| -    if (current_error.state() != GoogleServiceAuthError::NONE && | 
| -        current_error.state() != GoogleServiceAuthError::CONNECTION_FAILED) { | 
| -      break; | 
| -    } | 
| -  } | 
| -  if (current_error.state() != auth_error_.state()) { | 
| -    auth_error_ = current_error; | 
| -    GlobalErrorServiceFactory::GetForProfile(profile_)->NotifyErrorsChanged( | 
| -        this); | 
| -  } | 
| -} | 
| - | 
| -bool SigninGlobalError::HasBadge() { | 
| -  // Badge the wrench menu any time there is a menu item reflecting an auth | 
| -  // error. | 
| -  return !MenuItemLabel().empty(); | 
| -} | 
| - | 
| -bool SigninGlobalError::HasMenuItem() { | 
| -  // Auth errors are only reported via a separate menu item on chromeos - on | 
| -  // other platforms, WrenchMenuModel overlays the errors on top of the | 
| -  // "Signed in as xxxxx" menu item. | 
| -#if defined(OS_CHROMEOS) | 
| -  return HasBadge(); | 
| -#else | 
| -  return false; | 
| -#endif | 
| -} | 
| - | 
| -int SigninGlobalError::MenuItemCommandID() { | 
| -  return IDC_SHOW_SIGNIN_ERROR; | 
| -} | 
| - | 
| -string16 SigninGlobalError::MenuItemLabel() { | 
| -  if (SigninManagerFactory::GetForProfile(profile_)-> | 
| -          GetAuthenticatedUsername().empty() || | 
| -      auth_error_.state() == GoogleServiceAuthError::NONE || | 
| -      auth_error_.state() == GoogleServiceAuthError::CONNECTION_FAILED) { | 
| -    // If the user isn't signed in, or there's no auth error worth elevating to | 
| -    // the user, don't display any menu item. | 
| -    return string16(); | 
| -  } else { | 
| -    // There's an auth error the user should know about - notify the user. | 
| -    return l10n_util::GetStringUTF16(IDS_SYNC_SIGN_IN_ERROR_WRENCH_MENU_ITEM); | 
| -  } | 
| -} | 
| - | 
| -void SigninGlobalError::ExecuteMenuItem(Browser* browser) { | 
| -#if defined(OS_CHROMEOS) | 
| -  if (auth_error_.state() != GoogleServiceAuthError::NONE) { | 
| -    DLOG(INFO) << "Signing out the user to fix a sync error."; | 
| -    // TODO(beng): seems like this could just call browser::AttemptUserExit(). | 
| -    chrome::ExecuteCommand(browser, IDC_EXIT); | 
| -    return; | 
| -  } | 
| -#endif | 
| - | 
| -  // Global errors don't show up in the wrench menu on android. | 
| -#if !defined(OS_ANDROID) | 
| -  LoginUIService* login_ui = LoginUIServiceFactory::GetForProfile(profile_); | 
| -  if (login_ui->current_login_ui()) { | 
| -    login_ui->current_login_ui()->FocusUI(); | 
| -    return; | 
| -  } | 
| -  // Need to navigate to the settings page and display the UI. | 
| -  chrome::ShowSettingsSubPage(browser, chrome::kSyncSetupSubPage); | 
| -#endif | 
| -} | 
| - | 
| -bool SigninGlobalError::HasBubbleView() { | 
| -  return !GetBubbleViewMessage().empty(); | 
| -} | 
| - | 
| -string16 SigninGlobalError::GetBubbleViewTitle() { | 
| -  return l10n_util::GetStringUTF16(IDS_SIGNIN_ERROR_BUBBLE_VIEW_TITLE); | 
| -} | 
| - | 
| -string16 SigninGlobalError::GetBubbleViewMessage() { | 
| -  // If the user isn't signed in, no need to display an error bubble. | 
| -  if (SigninManagerFactory::GetForProfile(profile_)-> | 
| -          GetAuthenticatedUsername().empty()) { | 
| -    return string16(); | 
| -  } | 
| - | 
| -  switch (auth_error_.state()) { | 
| -    // In the case of no error, or a simple network error, don't bother | 
| -    // displaying a popup bubble. | 
| -    case GoogleServiceAuthError::CONNECTION_FAILED: | 
| -    case GoogleServiceAuthError::NONE: | 
| -      return string16(); | 
| - | 
| -    // User credentials are invalid (bad acct, etc). | 
| -    case GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS: | 
| -    case GoogleServiceAuthError::ACCOUNT_DELETED: | 
| -    case GoogleServiceAuthError::ACCOUNT_DISABLED: | 
| -      return l10n_util::GetStringFUTF16( | 
| -          IDS_SYNC_SIGN_IN_ERROR_BUBBLE_VIEW_MESSAGE, | 
| -          l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)); | 
| - | 
| -    // Sync service is not available for this account's domain. | 
| -    case GoogleServiceAuthError::SERVICE_UNAVAILABLE: | 
| -      return l10n_util::GetStringFUTF16( | 
| -          IDS_SYNC_UNAVAILABLE_ERROR_BUBBLE_VIEW_MESSAGE, | 
| -          l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)); | 
| - | 
| -    // Generic message for "other" errors. | 
| -    default: | 
| -      return l10n_util::GetStringFUTF16( | 
| -          IDS_SYNC_OTHER_SIGN_IN_ERROR_BUBBLE_VIEW_MESSAGE, | 
| -          l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)); | 
| -  } | 
| -} | 
| - | 
| -string16 SigninGlobalError::GetBubbleViewAcceptButtonLabel() { | 
| -  // If the service is unavailable, don't give the user the option to try | 
| -  // signing in again. | 
| -  if (auth_error_.state() == GoogleServiceAuthError::SERVICE_UNAVAILABLE) { | 
| -    return l10n_util::GetStringUTF16( | 
| -        IDS_SYNC_UNAVAILABLE_ERROR_BUBBLE_VIEW_ACCEPT); | 
| -  } else { | 
| -    return l10n_util::GetStringUTF16(IDS_SYNC_SIGN_IN_ERROR_BUBBLE_VIEW_ACCEPT); | 
| -  } | 
| -} | 
| - | 
| -string16 SigninGlobalError::GetBubbleViewCancelButtonLabel() { | 
| -  return string16(); | 
| -} | 
| - | 
| -void SigninGlobalError::OnBubbleViewDidClose(Browser* browser) { | 
| -} | 
| - | 
| -void SigninGlobalError::BubbleViewAcceptButtonPressed(Browser* browser) { | 
| -  ExecuteMenuItem(browser); | 
| -} | 
| - | 
| -void SigninGlobalError::BubbleViewCancelButtonPressed(Browser* browser) { | 
| -  NOTREACHED(); | 
| -} | 
|  |