summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/dev_mode_bubble_delegate.cc
diff options
context:
space:
mode:
authorrdevlin.cronin <rdevlin.cronin@chromium.org>2015-11-05 16:27:14 -0800
committerCommit bot <commit-bot@chromium.org>2015-11-06 00:28:16 +0000
commit690e44ff9085a679a77a3819063fb76a935de86d (patch)
tree963c4b54285a661222b5215350576d661a4c02f0 /chrome/browser/extensions/dev_mode_bubble_delegate.cc
parentacda9436fa5bdfb8d1670e3811dddf9fb3592c93 (diff)
downloadchromium_src-690e44ff9085a679a77a3819063fb76a935de86d.zip
chromium_src-690e44ff9085a679a77a3819063fb76a935de86d.tar.gz
chromium_src-690e44ff9085a679a77a3819063fb76a935de86d.tar.bz2
[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= TBR=sky@chromium.org Review URL: https://codereview.chromium.org/1424723004 Cr-Commit-Position: refs/heads/master@{#358198}
Diffstat (limited to 'chrome/browser/extensions/dev_mode_bubble_delegate.cc')
-rw-r--r--chrome/browser/extensions/dev_mode_bubble_delegate.cc117
1 files changed, 117 insertions, 0 deletions
diff --git a/chrome/browser/extensions/dev_mode_bubble_delegate.cc b/chrome/browser/extensions/dev_mode_bubble_delegate.cc
new file mode 100644
index 0000000..5f723de
--- /dev/null
+++ b/chrome/browser/extensions/dev_mode_bubble_delegate.cc
@@ -0,0 +1,117 @@
+// Copyright (c) 2013 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.
+
+#include "chrome/browser/extensions/dev_mode_bubble_delegate.h"
+
+#include "base/lazy_instance.h"
+#include "base/metrics/histogram.h"
+#include "chrome/browser/extensions/extension_action_manager.h"
+#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/common/url_constants.h"
+#include "chrome/grit/generated_resources.h"
+#include "extensions/browser/extension_prefs.h"
+#include "extensions/browser/extension_system.h"
+#include "grit/components_strings.h"
+#include "ui/base/l10n/l10n_util.h"
+
+namespace extensions {
+
+namespace {
+
+base::LazyInstance<std::set<Profile*> > g_shown_for_profiles =
+ LAZY_INSTANCE_INITIALIZER;
+
+} // namespace
+
+DevModeBubbleDelegate::DevModeBubbleDelegate(Profile* profile)
+ : ExtensionMessageBubbleController::Delegate(profile) {
+}
+
+DevModeBubbleDelegate::~DevModeBubbleDelegate() {
+}
+
+bool DevModeBubbleDelegate::ShouldIncludeExtension(const Extension* extension) {
+ return (extension->location() == Manifest::UNPACKED ||
+ extension->location() == Manifest::COMMAND_LINE);
+}
+
+void DevModeBubbleDelegate::AcknowledgeExtension(
+ const std::string& extension_id,
+ ExtensionMessageBubbleController::BubbleAction user_action) {
+}
+
+void DevModeBubbleDelegate::PerformAction(const ExtensionIdList& list) {
+ for (size_t i = 0; i < list.size(); ++i)
+ service()->DisableExtension(list[i], Extension::DISABLE_USER_ACTION);
+}
+
+base::string16 DevModeBubbleDelegate::GetTitle() const {
+ return l10n_util::GetStringUTF16(IDS_EXTENSIONS_DISABLE_DEVELOPER_MODE_TITLE);
+}
+
+base::string16 DevModeBubbleDelegate::GetMessageBody(
+ bool anchored_to_browser_action,
+ int extension_count) const {
+ return l10n_util::GetStringUTF16(IDS_EXTENSIONS_DISABLE_DEVELOPER_MODE_BODY);
+}
+
+base::string16 DevModeBubbleDelegate::GetOverflowText(
+ const base::string16& overflow_count) const {
+ return l10n_util::GetStringFUTF16(
+ IDS_EXTENSIONS_DISABLED_AND_N_MORE,
+ overflow_count);
+}
+
+GURL DevModeBubbleDelegate::GetLearnMoreUrl() const {
+ return GURL(chrome::kChromeUIExtensionsURL);
+}
+
+base::string16 DevModeBubbleDelegate::GetActionButtonLabel() const {
+ return l10n_util::GetStringUTF16(IDS_DISABLE);
+}
+
+base::string16 DevModeBubbleDelegate::GetDismissButtonLabel() const {
+ return l10n_util::GetStringUTF16(IDS_CANCEL);
+}
+
+bool DevModeBubbleDelegate::ShouldCloseOnDeactivate() const {
+ return false;
+}
+
+bool DevModeBubbleDelegate::ShouldShowExtensionList() const {
+ return false;
+}
+
+bool DevModeBubbleDelegate::ShouldHighlightExtensions() const {
+ return true;
+}
+
+bool DevModeBubbleDelegate::ShouldLimitToEnabledExtensions() const {
+ return true;
+}
+
+void DevModeBubbleDelegate::LogExtensionCount(size_t count) {
+ UMA_HISTOGRAM_COUNTS_100(
+ "ExtensionBubble.ExtensionsInDevModeCount", count);
+}
+
+void DevModeBubbleDelegate::LogAction(
+ ExtensionMessageBubbleController::BubbleAction action) {
+ UMA_HISTOGRAM_ENUMERATION(
+ "ExtensionBubble.DevModeUserSelection",
+ action, ExtensionMessageBubbleController::ACTION_BOUNDARY);
+}
+
+std::set<Profile*>* DevModeBubbleDelegate::GetProfileSet() {
+ return g_shown_for_profiles.Pointer();
+}
+
+// static
+void DevModeBubbleDelegate::ClearProfileListForTesting() {
+ g_shown_for_profiles.Get().clear();
+}
+
+} // namespace extensions