diff options
author | rdevlin.cronin <rdevlin.cronin@chromium.org> | 2015-11-05 16:27:14 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-11-06 00:28:16 +0000 |
commit | 690e44ff9085a679a77a3819063fb76a935de86d (patch) | |
tree | 963c4b54285a661222b5215350576d661a4c02f0 /chrome/browser/extensions/dev_mode_bubble_delegate.cc | |
parent | acda9436fa5bdfb8d1670e3811dddf9fb3592c93 (diff) | |
download | chromium_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.cc | 117 |
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 |