summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/global_error
diff options
context:
space:
mode:
authorengedy@chromium.org <engedy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-01 17:20:06 +0000
committerengedy@chromium.org <engedy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-01 17:20:06 +0000
commit4deac0de619aa03721e3cadd0622de98c693360e (patch)
treea400f23dd3e61d6a695f5a83df81e0d38b3b6069 /chrome/browser/ui/global_error
parent3ed84729d876d6bc22b2da8ffc8a2cd609a5004a (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/ui/global_error/global_error.cc35
-rw-r--r--chrome/browser/ui/global_error/global_error.h27
-rw-r--r--chrome/browser/ui/global_error/global_error_bubble_view_base.h6
-rw-r--r--chrome/browser/ui/global_error/global_error_service_browsertest.cc2
-rw-r--r--chrome/browser/ui/global_error/global_error_service_unittest.cc28
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.