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

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: Fix compile error 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
deleted file mode 100644
index 421ef84ce98c22d619124d8f3375b518521dbde3..0000000000000000000000000000000000000000
--- a/chrome/browser/extensions/suspicious_extension_bubble_controller.cc
+++ /dev/null
@@ -1,212 +0,0 @@
-// 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/suspicious_extension_bubble_controller.h"
-
-#include "base/bind.h"
-#include "base/metrics/histogram.h"
-#include "base/strings/utf_string_conversions.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"
-#include "content/public/browser/user_metrics.h"
-#include "grit/chromium_strings.h"
-#include "grit/generated_resources.h"
-#include "ui/base/l10n/l10n_util.h"
-
-namespace {
-
-// UMA histogram constants.
-enum UmaWipeoutHistogramOptions {
- ACTION_LEARN_MORE = 0,
- ACTION_DISMISS,
- ACTION_BOUNDARY, // Must be the last value.
-};
-
-static base::LazyInstance<extensions::ProfileKeyedAPIFactory<
- extensions::SuspiciousExtensionBubbleController> >
-g_factory = LAZY_INSTANCE_INITIALIZER;
-
-} // namespace
-
-namespace extensions {
-
-////////////////////////////////////////////////////////////////////////////////
-// SuspiciousExtensionBubbleController
-
-SuspiciousExtensionBubbleController::SuspiciousExtensionBubbleController(
- Profile* profile)
- : service_(extensions::ExtensionSystem::Get(profile)->extension_service()),
- profile_(profile),
- has_notified_(false) {
-}
-
-SuspiciousExtensionBubbleController::~SuspiciousExtensionBubbleController() {
-}
-
-// static
-ProfileKeyedAPIFactory<SuspiciousExtensionBubbleController>*
-SuspiciousExtensionBubbleController::GetFactoryInstance() {
- return &g_factory.Get();
-}
-
-// static
-SuspiciousExtensionBubbleController* SuspiciousExtensionBubbleController::Get(
- Profile* profile) {
- return ProfileKeyedAPIFactory<
- SuspiciousExtensionBubbleController>::GetForProfile(profile);
-}
-
-bool SuspiciousExtensionBubbleController::HasSuspiciousExtensions() {
- if (has_notified_)
- return false;
- if (!service_)
- return false; // Can happen during tests.
-
- suspicious_extensions_.clear();
-
- ExtensionPrefs* prefs = service_->extension_prefs();
-
- 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) {
- base::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;
-}
-
-void SuspiciousExtensionBubbleController::OnBubbleDismiss() {
- content::RecordAction(
- content::UserMetricsAction("SuspiciousExtensionBubbleDismissed"));
- UMA_HISTOGRAM_ENUMERATION("SuspiciousExtensionBubble.UserSelection",
- ACTION_DISMISS, ACTION_BOUNDARY);
- AcknowledgeWipeout();
-}
-
-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::AcknowledgeWipeout() {
- ExtensionPrefs* prefs = service_->extension_prefs();
- for (ExtensionIdList::const_iterator it = suspicious_extensions_.begin();
- it != suspicious_extensions_.end(); ++it) {
- prefs->SetWipeoutAcknowledged(*it, true);
- }
-}
-
-template <>
-void ProfileKeyedAPIFactory<
- SuspiciousExtensionBubbleController>::DeclareFactoryDependencies() {
- DependsOn(extensions::ExtensionSystemFactory::GetInstance());
-}
-
-} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698