1// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_SIGNIN_SIGNIN_GLOBAL_ERROR_H_ 6#define CHROME_BROWSER_SIGNIN_SIGNIN_GLOBAL_ERROR_H_ 7 8#include <set> 9#include "base/basictypes.h" 10#include "base/compiler_specific.h" 11#include "base/gtest_prod_util.h" 12#include "chrome/browser/ui/global_error/global_error.h" 13#include "components/keyed_service/core/keyed_service.h" 14#include "components/signin/core/browser/signin_error_controller.h" 15 16class Profile; 17 18// Shows auth errors on the wrench menu using a bubble view and a menu item. 19class SigninGlobalError : public GlobalErrorWithStandardBubble, 20 public SigninErrorController::Observer, 21 public KeyedService { 22 public: 23 SigninGlobalError(SigninErrorController* error_controller, 24 Profile* profile); 25 virtual ~SigninGlobalError(); 26 27 // Returns true if there is an authentication error. 28 bool HasError(); 29 30 // Shows re-authentication UI to the user in an attempt to fix the error. 31 // The re-authentication UI will be shown in |browser|. 32 void AttemptToFixError(Browser* browser); 33 34 private: 35 FRIEND_TEST_ALL_PREFIXES(SigninGlobalErrorTest, NoErrorAuthStatusProviders); 36 FRIEND_TEST_ALL_PREFIXES(SigninGlobalErrorTest, ErrorAuthStatusProvider); 37 FRIEND_TEST_ALL_PREFIXES(SigninGlobalErrorTest, AuthStatusEnumerateAllErrors); 38 39 // KeyedService: 40 virtual void Shutdown() OVERRIDE; 41 42 // GlobalErrorWithStandardBubble: 43 virtual bool HasMenuItem() OVERRIDE; 44 virtual int MenuItemCommandID() OVERRIDE; 45 virtual base::string16 MenuItemLabel() OVERRIDE; 46 virtual void ExecuteMenuItem(Browser* browser) OVERRIDE; 47 virtual bool HasBubbleView() OVERRIDE; 48 virtual base::string16 GetBubbleViewTitle() OVERRIDE; 49 virtual std::vector<base::string16> GetBubbleViewMessages() OVERRIDE; 50 virtual base::string16 GetBubbleViewAcceptButtonLabel() OVERRIDE; 51 virtual base::string16 GetBubbleViewCancelButtonLabel() OVERRIDE; 52 virtual void OnBubbleViewDidClose(Browser* browser) OVERRIDE; 53 virtual void BubbleViewAcceptButtonPressed(Browser* browser) OVERRIDE; 54 virtual void BubbleViewCancelButtonPressed(Browser* browser) OVERRIDE; 55 56 // SigninErrorController::Observer: 57 virtual void OnErrorChanged() OVERRIDE; 58 59 // The Profile this service belongs to. 60 Profile* profile_; 61 62 // The SigninErrorController that provides auth status. 63 SigninErrorController* error_controller_; 64 65 // True if signin global error was added to the global error service. 66 bool is_added_to_global_error_service_; 67 68 DISALLOW_COPY_AND_ASSIGN(SigninGlobalError); 69}; 70 71#endif // CHROME_BROWSER_SIGNIN_SIGNIN_GLOBAL_ERROR_H_ 72