Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(753)

Unified Diff: chrome/browser/extensions/suspicious_extension_bubble_controller.cc

Issue 95133002: Add an extension bubble explaining which extensions are in dev mode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync'ed Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/suspicious_extension_bubble_controller.cc
diff --git a/chrome/browser/extensions/suspicious_extension_bubble_controller.cc b/chrome/browser/extensions/suspicious_extension_bubble_controller.cc
index ea364459e627e75b11358ad1ad4ee1ed2fb7b624..90d38f6c0ea7f3276629e694538647ee9d2d77b3 100644
--- a/chrome/browser/extensions/suspicious_extension_bubble_controller.cc
+++ b/chrome/browser/extensions/suspicious_extension_bubble_controller.cc
@@ -7,9 +7,9 @@
#include "base/bind.h"
#include "base/metrics/histogram.h"
#include "base/strings/utf_string_conversions.h"
+#include "chrome/browser/extensions/extension_message_bubble.h"
#include "chrome/browser/extensions/extension_prefs.h"
#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/extensions/suspicious_extension_bubble.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/common/url_constants.h"
@@ -40,9 +40,7 @@ namespace extensions {
SuspiciousExtensionBubbleController::SuspiciousExtensionBubbleController(
Profile* profile)
- : service_(extensions::ExtensionSystem::Get(profile)->extension_service()),
- profile_(profile),
- has_notified_(false) {
+ : ExtensionMessageBubbleController(SUSPICIOUS_EXTENSIONS, profile) {
}
SuspiciousExtensionBubbleController::~SuspiciousExtensionBubbleController() {
@@ -61,146 +59,28 @@ SuspiciousExtensionBubbleController* SuspiciousExtensionBubbleController::Get(
SuspiciousExtensionBubbleController>::GetForProfile(profile);
}
-bool SuspiciousExtensionBubbleController::HasSuspiciousExtensions() {
- if (has_notified_)
- return false;
- if (!service_)
- return false; // Can happen during tests.
-
- suspicious_extensions_.clear();
-
+bool SuspiciousExtensionBubbleController::ShouldIncludeExtension(
+ const std::string& extension_id) {
ExtensionPrefs* prefs = service_->extension_prefs();
+ if (!prefs->IsExtensionDisabled(extension_id))
+ return false;
- scoped_ptr<const ExtensionSet> extension_set(
- service_->GenerateInstalledExtensionsSet());
- for (ExtensionSet::const_iterator it = extension_set->begin();
- it != extension_set->end(); ++it) {
- std::string id = (*it)->id();
- if (!prefs->IsExtensionDisabled(id))
- continue;
- int disble_reasons = prefs->GetDisableReasons(id);
- if (disble_reasons & Extension::DISABLE_NOT_VERIFIED) {
- if (prefs->HasWipeoutBeenAcknowledged(id))
- continue;
-
- suspicious_extensions_.push_back(id);
- }
- }
-
- UMA_HISTOGRAM_COUNTS_100(
- "SuspiciousExtensionBubble.ExtensionWipeoutCount",
- suspicious_extensions_.size());
-
- has_notified_ = true;
- return !suspicious_extensions_.empty();
-}
-
-void SuspiciousExtensionBubbleController::Show(
- SuspiciousExtensionBubble* bubble) {
- // Wire up all the callbacks, to get notified what actions the user took.
- base::Closure button_callback =
- base::Bind(&SuspiciousExtensionBubbleController::OnBubbleDismiss,
- base::Unretained(this));
- base::Closure link_callback =
- base::Bind(&SuspiciousExtensionBubbleController::OnLinkClicked,
- base::Unretained(this));
- bubble->OnButtonClicked(button_callback);
- bubble->OnLinkClicked(link_callback);
-
- content::RecordAction(
- content::UserMetricsAction("ExtensionWipeoutNotificationShown"));
-
- bubble->Show();
-}
-
-string16 SuspiciousExtensionBubbleController::GetTitle() {
- return l10n_util::GetStringUTF16(IDS_EXTENSIONS_SUSPICIOUS_DISABLED_TITLE);
-}
-
-string16 SuspiciousExtensionBubbleController::GetMessageBody() {
- return l10n_util::GetStringFUTF16(IDS_EXTENSIONS_SUSPICIOUS_DISABLED_BODY,
- l10n_util::GetStringUTF16(IDS_EXTENSION_WEB_STORE_TITLE));
-}
-
-string16 SuspiciousExtensionBubbleController::GetOverflowText(
- const string16& overflow_count) {
- string16 overflow_string = l10n_util::GetStringUTF16(
- IDS_EXTENSIONS_SUSPICIOUS_DISABLED_AND_N_MORE);
- string16 new_string;
-
- // Just before string freeze, we checked in # as a substitution value for
- // this string, whereas we should have used $1. It was discovered too late,
- // so we do the substitution by hand in that case.
- if (overflow_string.find(ASCIIToUTF16("#")) != string16::npos) {
- ReplaceChars(overflow_string, ASCIIToUTF16("#").c_str(),
- overflow_count, &new_string);
- } else {
- new_string = l10n_util::GetStringFUTF16(
- IDS_EXTENSIONS_SUSPICIOUS_DISABLED_AND_N_MORE,
- overflow_count);
- }
-
- return new_string;
-}
-
-string16 SuspiciousExtensionBubbleController::GetLearnMoreLabel() {
- return l10n_util::GetStringUTF16(IDS_LEARN_MORE);
-}
-
-string16 SuspiciousExtensionBubbleController::GetDismissButtonLabel() {
- return l10n_util::GetStringUTF16(IDS_EXTENSIONS_SUSPICIOUS_DISABLED_BUTTON);
-}
-
-std::vector<string16>
-SuspiciousExtensionBubbleController::GetSuspiciousExtensionNames() {
- if (suspicious_extensions_.empty())
- return std::vector<string16>();
-
- std::vector<string16> return_value;
- for (ExtensionIdList::const_iterator it = suspicious_extensions_.begin();
- it != suspicious_extensions_.end(); ++it) {
- const Extension* extension = service_->GetInstalledExtension(*it);
- if (extension) {
- return_value.push_back(UTF8ToUTF16(extension->name()));
- } else {
- return_value.push_back(
- ASCIIToUTF16(std::string("(unknown name) ") + *it));
- // TODO(finnur): Add this as a string to the grd, for next milestone.
- }
- }
- return return_value;
-}
+ int disble_reasons = prefs->GetDisableReasons(extension_id);
+ if (disble_reasons & Extension::DISABLE_NOT_VERIFIED)
+ return !prefs->HasWipeoutBeenAcknowledged(extension_id);
-void SuspiciousExtensionBubbleController::OnBubbleDismiss() {
- content::RecordAction(
- content::UserMetricsAction("SuspiciousExtensionBubbleDismissed"));
- UMA_HISTOGRAM_ENUMERATION("SuspiciousExtensionBubble.UserSelection",
- ACTION_DISMISS, ACTION_BOUNDARY);
- AcknowledgeWipeout();
+ return false;
}
-void SuspiciousExtensionBubbleController::OnLinkClicked() {
- UMA_HISTOGRAM_ENUMERATION("SuspiciousExtensionBubble.UserSelection",
- ACTION_LEARN_MORE, ACTION_BOUNDARY);
- Browser* browser =
- chrome::FindBrowserWithProfile(profile_, chrome::GetActiveDesktop());
- if (browser) {
- browser->OpenURL(
- content::OpenURLParams(GURL(chrome::kChromeUIExtensionsURL),
- content::Referrer(),
- NEW_FOREGROUND_TAB,
- content::PAGE_TRANSITION_LINK,
- false));
- }
- AcknowledgeWipeout();
+void SuspiciousExtensionBubbleController::AcknowledgeExtension(
+ const std::string& extension_id) {
+ ExtensionPrefs* prefs = service_->extension_prefs();
+ prefs->SetWipeoutAcknowledged(extension_id, true);
}
-void SuspiciousExtensionBubbleController::AcknowledgeWipeout() {
- ExtensionPrefs* prefs = service_->extension_prefs();
- for (ExtensionIdList::const_iterator it = suspicious_extensions_.begin();
- it != suspicious_extensions_.end(); ++it) {
- prefs->SetWipeoutAcknowledged(*it, true);
- }
+void SuspiciousExtensionBubbleController::PerformAction() {
+ // This bubble solicits no action from the user. Or as Nimoy would have it:
+ // "Well, my work here is done".
}
template <>

Powered by Google App Engine
This is Rietveld 408576698