| 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
|
|
|