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 16 class Profile; 17 18 // Shows auth errors on the wrench menu using a bubble view and a menu item. 19 class 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