diff options
author | engedy@chromium.org <engedy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-01 17:20:06 +0000 |
---|---|---|
committer | engedy@chromium.org <engedy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-01 17:20:06 +0000 |
commit | 4deac0de619aa03721e3cadd0622de98c693360e (patch) | |
tree | a400f23dd3e61d6a695f5a83df81e0d38b3b6069 /chrome/browser/ui/global_error | |
parent | 3ed84729d876d6bc22b2da8ffc8a2cd609a5004a (diff) | |
download | chromium_src-4deac0de619aa03721e3cadd0622de98c693360e.zip chromium_src-4deac0de619aa03721e3cadd0622de98c693360e.tar.gz chromium_src-4deac0de619aa03721e3cadd0622de98c693360e.tar.bz2 |
Refactored GlobalError to allow having custom bubble UI or no bubble at all.
BUG=298036
Review URL: https://codereview.chromium.org/27173002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@232419 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/global_error')
5 files changed, 49 insertions, 49 deletions
diff --git a/chrome/browser/ui/global_error/global_error.cc b/chrome/browser/ui/global_error/global_error.cc index d6fdd6d..db05206 100644 --- a/chrome/browser/ui/global_error/global_error.cc +++ b/chrome/browser/ui/global_error/global_error.cc @@ -10,17 +10,13 @@ #include "ui/base/resource/resource_bundle.h" #include "ui/gfx/image/image.h" -GlobalError::GlobalError() - : has_shown_bubble_view_(false), - bubble_view_(NULL) { -} +// GlobalError --------------------------------------------------------------- -GlobalError::~GlobalError() { -} +GlobalError::GlobalError() {} -GlobalError::Severity GlobalError::GetSeverity() { - return SEVERITY_MEDIUM; -} +GlobalError::~GlobalError() {} + +GlobalError::Severity GlobalError::GetSeverity() { return SEVERITY_MEDIUM; } int GlobalError::MenuItemIconResourceID() { // If you change this make sure to also change the bubble icon and the wrench @@ -28,33 +24,42 @@ int GlobalError::MenuItemIconResourceID() { return IDR_INPUT_ALERT_MENU; } -bool GlobalError::HasShownBubbleView() { +// GlobalErrorWithStandardBubble --------------------------------------------- + +GlobalErrorWithStandardBubble::GlobalErrorWithStandardBubble() + : has_shown_bubble_view_(false), bubble_view_(NULL) {} + +GlobalErrorWithStandardBubble::~GlobalErrorWithStandardBubble() {} + +bool GlobalErrorWithStandardBubble::HasBubbleView() { return true; } + +bool GlobalErrorWithStandardBubble::HasShownBubbleView() { return has_shown_bubble_view_; } -void GlobalError::ShowBubbleView(Browser* browser) { +void GlobalErrorWithStandardBubble::ShowBubbleView(Browser* browser) { has_shown_bubble_view_ = true; #if defined(OS_ANDROID) // http://crbug.com/136506 NOTIMPLEMENTED() << "Chrome for Android doesn't support global errors"; #else bubble_view_ = - GlobalErrorBubbleViewBase::ShowBubbleView(browser, AsWeakPtr()); + GlobalErrorBubbleViewBase::ShowStandardBubbleView(browser, AsWeakPtr()); #endif } -GlobalErrorBubbleViewBase* GlobalError::GetBubbleView() { +GlobalErrorBubbleViewBase* GlobalErrorWithStandardBubble::GetBubbleView() { return bubble_view_; } -gfx::Image GlobalError::GetBubbleViewIcon() { +gfx::Image GlobalErrorWithStandardBubble::GetBubbleViewIcon() { // If you change this make sure to also change the menu icon and the wrench // icon color. return ResourceBundle::GetSharedInstance().GetNativeImageNamed( IDR_INPUT_ALERT); } -void GlobalError::BubbleViewDidClose(Browser* browser) { +void GlobalErrorWithStandardBubble::BubbleViewDidClose(Browser* browser) { DCHECK(browser); bubble_view_ = NULL; OnBubbleViewDidClose(browser); diff --git a/chrome/browser/ui/global_error/global_error.h b/chrome/browser/ui/global_error/global_error.h index 199e1a1..cacd1ff 100644 --- a/chrome/browser/ui/global_error/global_error.h +++ b/chrome/browser/ui/global_error/global_error.h @@ -19,7 +19,7 @@ class Image; } // This object describes a single global error. -class GlobalError : public base::SupportsWeakPtr<GlobalError> { +class GlobalError { public: enum Severity { SEVERITY_LOW, @@ -49,11 +49,23 @@ class GlobalError : public base::SupportsWeakPtr<GlobalError> { // Returns true if a bubble view should be shown. virtual bool HasBubbleView() = 0; // Returns true if the bubble view has been shown. - virtual bool HasShownBubbleView(); + virtual bool HasShownBubbleView() = 0; // Called to show the bubble view. - void ShowBubbleView(Browser* browser); + virtual void ShowBubbleView(Browser* browser) = 0; // Returns the bubble view. - virtual GlobalErrorBubbleViewBase* GetBubbleView(); + virtual GlobalErrorBubbleViewBase* GetBubbleView() = 0; +}; + +// This object describes a single global error that already comes with support +// for showing a standard Bubble UI. Derived classes just need to supply the +// content to be displayed in the bubble. +class GlobalErrorWithStandardBubble + : public GlobalError, + public base::SupportsWeakPtr<GlobalErrorWithStandardBubble> { + public: + GlobalErrorWithStandardBubble(); + virtual ~GlobalErrorWithStandardBubble(); + // Returns an icon to use for the bubble view. virtual gfx::Image GetBubbleViewIcon(); // Returns the title for the bubble view. @@ -80,12 +92,17 @@ class GlobalError : public base::SupportsWeakPtr<GlobalError> { // Browser that the bubble view was shown on. virtual void BubbleViewCancelButtonPressed(Browser* browser) = 0; + // GlobalError overrides: + virtual bool HasBubbleView() OVERRIDE; + virtual bool HasShownBubbleView() OVERRIDE; + virtual void ShowBubbleView(Browser* browser) OVERRIDE; + virtual GlobalErrorBubbleViewBase* GetBubbleView() OVERRIDE; private: bool has_shown_bubble_view_; GlobalErrorBubbleViewBase* bubble_view_; - DISALLOW_COPY_AND_ASSIGN(GlobalError); + DISALLOW_COPY_AND_ASSIGN(GlobalErrorWithStandardBubble); }; #endif // CHROME_BROWSER_UI_GLOBAL_ERROR_GLOBAL_ERROR_H_ diff --git a/chrome/browser/ui/global_error/global_error_bubble_view_base.h b/chrome/browser/ui/global_error/global_error_bubble_view_base.h index 0b0132c..224364d 100644 --- a/chrome/browser/ui/global_error/global_error_bubble_view_base.h +++ b/chrome/browser/ui/global_error/global_error_bubble_view_base.h @@ -9,13 +9,13 @@ #include "base/memory/weak_ptr.h" class Browser; -class GlobalError; +class GlobalErrorWithStandardBubble; class GlobalErrorBubbleViewBase { public: - static GlobalErrorBubbleViewBase* ShowBubbleView( + static GlobalErrorBubbleViewBase* ShowStandardBubbleView( Browser* browser, - const base::WeakPtr<GlobalError>& error); + const base::WeakPtr<GlobalErrorWithStandardBubble>& error); virtual ~GlobalErrorBubbleViewBase() {} diff --git a/chrome/browser/ui/global_error/global_error_service_browsertest.cc b/chrome/browser/ui/global_error/global_error_service_browsertest.cc index 49d2230..2da6440 100644 --- a/chrome/browser/ui/global_error/global_error_service_browsertest.cc +++ b/chrome/browser/ui/global_error/global_error_service_browsertest.cc @@ -15,7 +15,7 @@ namespace { // An error that has a bubble view. -class BubbleViewError : public GlobalError { +class BubbleViewError : public GlobalErrorWithStandardBubble { public: BubbleViewError() : bubble_view_close_count_(0) { } diff --git a/chrome/browser/ui/global_error/global_error_service_unittest.cc b/chrome/browser/ui/global_error/global_error_service_unittest.cc index 35ab8c8..9010229 100644 --- a/chrome/browser/ui/global_error/global_error_service_unittest.cc +++ b/chrome/browser/ui/global_error/global_error_service_unittest.cc @@ -31,31 +31,9 @@ class BaseError : public GlobalError { virtual void ExecuteMenuItem(Browser* browser) OVERRIDE { ADD_FAILURE(); } virtual bool HasBubbleView() OVERRIDE { return false; } - virtual string16 GetBubbleViewTitle() OVERRIDE { - ADD_FAILURE(); - return string16(); - } - virtual std::vector<string16> GetBubbleViewMessages() OVERRIDE { - ADD_FAILURE(); - return std::vector<string16>(); - } - virtual string16 GetBubbleViewAcceptButtonLabel() OVERRIDE { - ADD_FAILURE(); - return string16(); - } - virtual string16 GetBubbleViewCancelButtonLabel() OVERRIDE { - ADD_FAILURE(); - return string16(); - } - virtual void OnBubbleViewDidClose(Browser* browser) OVERRIDE { - ADD_FAILURE(); - } - virtual void BubbleViewAcceptButtonPressed(Browser* browser) OVERRIDE { - ADD_FAILURE(); - } - virtual void BubbleViewCancelButtonPressed(Browser* browser) OVERRIDE { - ADD_FAILURE(); - } + virtual bool HasShownBubbleView() OVERRIDE { return false; } + virtual void ShowBubbleView(Browser* browser) OVERRIDE { ADD_FAILURE(); } + virtual GlobalErrorBubbleViewBase* GetBubbleView() OVERRIDE { return NULL; } private: // This tracks the number BaseError objects that are currently instantiated. |