[email protected] | c72ebfe | 2013-12-13 21:57:53 | [diff] [blame] | 1 | // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 | // Use of this source code is governed by a BSD-style license that can be | ||||
3 | // found in the LICENSE file. | ||||
4 | |||||
rdevlin.cronin | 690e44f | 2015-11-06 00:27:14 | [diff] [blame] | 5 | #include "chrome/browser/extensions/dev_mode_bubble_delegate.h" |
[email protected] | c72ebfe | 2013-12-13 21:57:53 | [diff] [blame] | 6 | |
[email protected] | 4f2f353d | 2014-01-14 11:21:09 | [diff] [blame] | 7 | #include "base/lazy_instance.h" |
asvitkine | aa06031 | 2016-09-01 22:44:13 | [diff] [blame] | 8 | #include "base/metrics/histogram_macros.h" |
[email protected] | c72ebfe | 2013-12-13 21:57:53 | [diff] [blame] | 9 | #include "chrome/browser/extensions/extension_action_manager.h" |
[email protected] | c72ebfe | 2013-12-13 21:57:53 | [diff] [blame] | 10 | #include "chrome/browser/extensions/extension_service.h" |
[email protected] | f845448465 | 2014-02-27 04:20:42 | [diff] [blame] | 11 | #include "chrome/browser/profiles/profile.h" |
[email protected] | c72ebfe | 2013-12-13 21:57:53 | [diff] [blame] | 12 | #include "chrome/browser/ui/browser.h" |
[email protected] | c72ebfe | 2013-12-13 21:57:53 | [diff] [blame] | 13 | #include "chrome/common/url_constants.h" |
[email protected] | af39f00 | 2014-08-22 10:18:18 | [diff] [blame] | 14 | #include "chrome/grit/generated_resources.h" |
thestig | 4a2e88e | 2016-08-27 23:23:51 | [diff] [blame] | 15 | #include "components/strings/grit/components_strings.h" |
[email protected] | 489db084 | 2014-01-22 18:20:03 | [diff] [blame] | 16 | #include "extensions/browser/extension_prefs.h" |
[email protected] | d46c050 | 2014-02-14 13:33:36 | [diff] [blame] | 17 | #include "extensions/browser/extension_system.h" |
[email protected] | c72ebfe | 2013-12-13 21:57:53 | [diff] [blame] | 18 | #include "ui/base/l10n/l10n_util.h" |
19 | |||||
[email protected] | a74569b | 2014-03-25 02:56:30 | [diff] [blame] | 20 | namespace extensions { |
21 | |||||
[email protected] | a74569b | 2014-03-25 02:56:30 | [diff] [blame] | 22 | DevModeBubbleDelegate::DevModeBubbleDelegate(Profile* profile) |
rdevlin.cronin | 0ba2a4c | 2015-08-06 18:40:19 | [diff] [blame] | 23 | : ExtensionMessageBubbleController::Delegate(profile) { |
merkulova | 9be182e | 2014-10-07 14:57:50 | [diff] [blame] | 24 | } |
[email protected] | 4f2f353d | 2014-01-14 11:21:09 | [diff] [blame] | 25 | |
26 | DevModeBubbleDelegate::~DevModeBubbleDelegate() { | ||||
27 | } | ||||
28 | |||||
rdevlin.cronin | cce78d0 | 2015-09-24 19:50:55 | [diff] [blame] | 29 | bool DevModeBubbleDelegate::ShouldIncludeExtension(const Extension* extension) { |
asargent | a772c58 | 2015-05-08 18:59:01 | [diff] [blame] | 30 | return (extension->location() == Manifest::UNPACKED || |
31 | extension->location() == Manifest::COMMAND_LINE); | ||||
[email protected] | 4f2f353d | 2014-01-14 11:21:09 | [diff] [blame] | 32 | } |
33 | |||||
34 | void DevModeBubbleDelegate::AcknowledgeExtension( | ||||
35 | const std::string& extension_id, | ||||
36 | ExtensionMessageBubbleController::BubbleAction user_action) { | ||||
37 | } | ||||
38 | |||||
[email protected] | a74569b | 2014-03-25 02:56:30 | [diff] [blame] | 39 | void DevModeBubbleDelegate::PerformAction(const ExtensionIdList& list) { |
40 | for (size_t i = 0; i < list.size(); ++i) | ||||
rdevlin.cronin | 0ba2a4c | 2015-08-06 18:40:19 | [diff] [blame] | 41 | service()->DisableExtension(list[i], Extension::DISABLE_USER_ACTION); |
[email protected] | a74569b | 2014-03-25 02:56:30 | [diff] [blame] | 42 | } |
43 | |||||
[email protected] | 4f2f353d | 2014-01-14 11:21:09 | [diff] [blame] | 44 | base::string16 DevModeBubbleDelegate::GetTitle() const { |
45 | return l10n_util::GetStringUTF16(IDS_EXTENSIONS_DISABLE_DEVELOPER_MODE_TITLE); | ||||
46 | } | ||||
47 | |||||
[email protected] | 8dc56d0 | 2014-06-07 00:44:23 | [diff] [blame] | 48 | base::string16 DevModeBubbleDelegate::GetMessageBody( |
rdevlin.cronin | 9cb8498 | 2015-05-15 16:57:49 | [diff] [blame] | 49 | bool anchored_to_browser_action, |
50 | int extension_count) const { | ||||
[email protected] | 4f2f353d | 2014-01-14 11:21:09 | [diff] [blame] | 51 | return l10n_util::GetStringUTF16(IDS_EXTENSIONS_DISABLE_DEVELOPER_MODE_BODY); |
52 | } | ||||
53 | |||||
54 | base::string16 DevModeBubbleDelegate::GetOverflowText( | ||||
55 | const base::string16& overflow_count) const { | ||||
56 | return l10n_util::GetStringFUTF16( | ||||
[email protected] | d246924 | 2014-05-09 11:56:58 | [diff] [blame] | 57 | IDS_EXTENSIONS_DISABLED_AND_N_MORE, |
[email protected] | 4f2f353d | 2014-01-14 11:21:09 | [diff] [blame] | 58 | overflow_count); |
59 | } | ||||
60 | |||||
[email protected] | 4f2f353d | 2014-01-14 11:21:09 | [diff] [blame] | 61 | GURL DevModeBubbleDelegate::GetLearnMoreUrl() const { |
62 | return GURL(chrome::kChromeUIExtensionsURL); | ||||
63 | } | ||||
64 | |||||
65 | base::string16 DevModeBubbleDelegate::GetActionButtonLabel() const { | ||||
66 | return l10n_util::GetStringUTF16(IDS_DISABLE); | ||||
67 | } | ||||
68 | |||||
69 | base::string16 DevModeBubbleDelegate::GetDismissButtonLabel() const { | ||||
70 | return l10n_util::GetStringUTF16(IDS_CANCEL); | ||||
71 | } | ||||
72 | |||||
rdevlin.cronin | 690e44f | 2015-11-06 00:27:14 | [diff] [blame] | 73 | bool DevModeBubbleDelegate::ShouldCloseOnDeactivate() const { |
74 | return false; | ||||
75 | } | ||||
76 | |||||
[email protected] | 4f2f353d | 2014-01-14 11:21:09 | [diff] [blame] | 77 | bool DevModeBubbleDelegate::ShouldShowExtensionList() const { |
78 | return false; | ||||
79 | } | ||||
80 | |||||
rdevlin.cronin | 70fc605 | 2015-04-15 17:49:06 | [diff] [blame] | 81 | bool DevModeBubbleDelegate::ShouldHighlightExtensions() const { |
82 | return true; | ||||
83 | } | ||||
84 | |||||
rdevlin.cronin | cce78d0 | 2015-09-24 19:50:55 | [diff] [blame] | 85 | bool DevModeBubbleDelegate::ShouldLimitToEnabledExtensions() const { |
86 | return true; | ||||
87 | } | ||||
88 | |||||
[email protected] | 4f2f353d | 2014-01-14 11:21:09 | [diff] [blame] | 89 | void DevModeBubbleDelegate::LogExtensionCount(size_t count) { |
90 | UMA_HISTOGRAM_COUNTS_100( | ||||
[email protected] | b61b05ce8d | 2014-05-14 15:33:01 | [diff] [blame] | 91 | "ExtensionBubble.ExtensionsInDevModeCount", count); |
[email protected] | 4f2f353d | 2014-01-14 11:21:09 | [diff] [blame] | 92 | } |
93 | |||||
94 | void DevModeBubbleDelegate::LogAction( | ||||
95 | ExtensionMessageBubbleController::BubbleAction action) { | ||||
96 | UMA_HISTOGRAM_ENUMERATION( | ||||
[email protected] | b61b05ce8d | 2014-05-14 15:33:01 | [diff] [blame] | 97 | "ExtensionBubble.DevModeUserSelection", |
[email protected] | 4f2f353d | 2014-01-14 11:21:09 | [diff] [blame] | 98 | action, ExtensionMessageBubbleController::ACTION_BOUNDARY); |
99 | } | ||||
[email protected] | c72ebfe | 2013-12-13 21:57:53 | [diff] [blame] | 100 | |
rdevlin.cronin | 486b20e | 2015-11-20 17:20:35 | [diff] [blame] | 101 | const char* DevModeBubbleDelegate::GetKey() { |
102 | return "DevModeBubbleDelegate"; | ||||
rdevlin.cronin | cce78d0 | 2015-09-24 19:50:55 | [diff] [blame] | 103 | } |
104 | |||||
rdevlin.cronin | 486b20e | 2015-11-20 17:20:35 | [diff] [blame] | 105 | bool DevModeBubbleDelegate::ClearProfileSetAfterAction() { |
106 | return false; | ||||
[email protected] | c72ebfe | 2013-12-13 21:57:53 | [diff] [blame] | 107 | } |
108 | |||||
catmullings | 22bc237 | 2016-11-02 19:59:35 | [diff] [blame^] | 109 | bool DevModeBubbleDelegate::SupportsPolicyIndicator() { |
110 | return false; | ||||
111 | } | ||||
112 | |||||
[email protected] | c72ebfe | 2013-12-13 21:57:53 | [diff] [blame] | 113 | } // namespace extensions |