[Extensions] Clean up ExtensionMessageBubble architecture
It's confusing to have ExtensionMessageBubbleController have both a delegate
(with subclasses) and be subclassed itself. Remove the subclasses of
ExtensionMessageBubbleController (except tests), and have the delegates
determine the behavior.
BUG=
[email protected]
Review URL: https://codereview.chromium.org/1424723004
Cr-Commit-Position: refs/heads/master@{#358198}
diff --git a/chrome/browser/extensions/settings_api_bubble_delegate.h b/chrome/browser/extensions/settings_api_bubble_delegate.h
new file mode 100644
index 0000000..dde081d3
--- /dev/null
+++ b/chrome/browser/extensions/settings_api_bubble_delegate.h
@@ -0,0 +1,57 @@
+// Copyright 2014 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.
+
+#ifndef CHROME_BROWSER_EXTENSIONS_SETTINGS_API_BUBBLE_DELEGATE_H_
+#define CHROME_BROWSER_EXTENSIONS_SETTINGS_API_BUBBLE_DELEGATE_H_
+
+#include <string>
+
+#include "base/macros.h"
+#include "chrome/browser/extensions/extension_message_bubble_controller.h"
+#include "chrome/common/extensions/manifest_handlers/settings_overrides_handler.h"
+
+namespace extensions {
+
+class SettingsApiBubbleDelegate
+ : public ExtensionMessageBubbleController::Delegate {
+ public:
+ SettingsApiBubbleDelegate(Profile* profile, SettingsApiOverrideType type);
+ ~SettingsApiBubbleDelegate() override;
+
+ // ExtensionMessageBubbleController::Delegate methods.
+ bool ShouldIncludeExtension(const Extension* extension) override;
+ void AcknowledgeExtension(
+ const std::string& extension_id,
+ ExtensionMessageBubbleController::BubbleAction user_action) override;
+ void PerformAction(const ExtensionIdList& list) override;
+ base::string16 GetTitle() const override;
+ base::string16 GetMessageBody(bool anchored_to_browser_action,
+ int extension_count) const override;
+ base::string16 GetOverflowText(
+ const base::string16& overflow_count) const override;
+ GURL GetLearnMoreUrl() const override;
+ base::string16 GetActionButtonLabel() const override;
+ base::string16 GetDismissButtonLabel() const override;
+ bool ShouldCloseOnDeactivate() const override;
+ bool ShouldShowExtensionList() const override;
+ bool ShouldHighlightExtensions() const override;
+ bool ShouldLimitToEnabledExtensions() const override;
+ void LogExtensionCount(size_t count) override;
+ void LogAction(ExtensionMessageBubbleController::BubbleAction) override;
+
+ private:
+ // The type of settings override this bubble will report on. This can be, for
+ // example, a bubble to notify the user that the search engine has been
+ // changed by an extension (or homepage/startup pages/etc).
+ SettingsApiOverrideType type_;
+
+ // The ID of the extension we are showing the bubble for.
+ std::string extension_id_;
+
+ DISALLOW_COPY_AND_ASSIGN(SettingsApiBubbleDelegate);
+};
+
+} // namespace extensions
+
+#endif // CHROME_BROWSER_EXTENSIONS_SETTINGS_API_BUBBLE_DELEGATE_H_