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

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

Issue 8202011: Notify users about certain changes in installed extensions. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Change #if false to #if 0 for win compiler. Created 9 years, 2 months 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
« no previous file with comments | « chrome/browser/extensions/extension_global_error.h ('k') | chrome/browser/extensions/extension_prefs.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/extension_global_error.cc
diff --git a/chrome/browser/extensions/extension_global_error.cc b/chrome/browser/extensions/extension_global_error.cc
new file mode 100644
index 0000000000000000000000000000000000000000..fb610c77eb1445ee3205bba3a46589ff746b349b
--- /dev/null
+++ b/chrome/browser/extensions/extension_global_error.cc
@@ -0,0 +1,145 @@
+// Copyright (c) 2011 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/extension_global_error.h"
+
+#include "base/logging.h"
+#include "base/string16.h"
+#include "base/utf_string_conversions.h"
+#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/ui/global_error.h"
+#include "grit/generated_resources.h"
+#include "ui/base/l10n/l10n_util.h"
+
+ExtensionGlobalError::ExtensionGlobalError(
+ base::WeakPtr<ExtensionService> extension_service)
+ : extension_service_(extension_service),
+ external_extension_ids_(new ExtensionIdSet),
+ blacklisted_extension_ids_(new ExtensionIdSet),
+ orphaned_extension_ids_(new ExtensionIdSet) {
+}
+
+ExtensionGlobalError::~ExtensionGlobalError() {
+}
+
+void ExtensionGlobalError::AddExternalExtension(const std::string& id) {
+ external_extension_ids_->insert(id);
+}
+
+void ExtensionGlobalError::AddBlacklistedExtension(const std::string& id) {
+ blacklisted_extension_ids_->insert(id);
+}
+
+void ExtensionGlobalError::AddOrphanedExtension(const std::string& id) {
+ orphaned_extension_ids_->insert(id);
+}
+
+void ExtensionGlobalError::set_accept_callback(
+ ExtensionGlobalErrorCallback callback) {
+ accept_callback_ = callback;
+}
+
+void ExtensionGlobalError::set_cancel_callback(
+ ExtensionGlobalErrorCallback callback) {
+ cancel_callback_ = callback;
+}
+
+void ExtensionGlobalError::set_closed_callback(
+ ExtensionGlobalErrorCallback callback) {
+ cancel_callback_ = callback;
+}
+
+bool ExtensionGlobalError::HasBadge() {
+ return false;
+}
+
+bool ExtensionGlobalError::HasMenuItem() {
+ return false;
+}
+
+int ExtensionGlobalError::MenuItemCommandID() {
+ NOTREACHED();
+ return 0;
+}
+
+string16 ExtensionGlobalError::MenuItemLabel() {
+ NOTREACHED();
+ return NULL;
+}
+
+void ExtensionGlobalError::ExecuteMenuItem(Browser* browser) {
+ NOTREACHED();
+}
+
+bool ExtensionGlobalError::HasBubbleView() {
+ return true;
+}
+
+string16 ExtensionGlobalError::GetBubbleViewTitle() {
+ return l10n_util::GetStringUTF16(IDS_EXTENSION_NOTIFICATION_TITLE);
+}
+
+string16 ExtensionGlobalError::GenerateMessageSection(
+ const ExtensionIdSet* extensions,
+ int template_message_id) {
+ CHECK(extensions);
+ CHECK(template_message_id);
+ string16 message;
+
+ for (ExtensionIdSet::const_iterator iter = extensions->begin();
+ iter != extensions->end(); ++iter) {
+ const Extension* e = extension_service_->GetExtensionById(*iter, true);
+ message += l10n_util::GetStringFUTF16(template_message_id,
+ string16(ASCIIToUTF16(e->name())));
+ }
+ return message;
+}
+
+string16 ExtensionGlobalError::GenerateMessage() {
+ if (extension_service_.get()) {
+ return l10n_util::GetStringFUTF16(
+ IDS_EXTENSION_NOTIFICATION_BODY_TEMPLATE,
+ GenerateMessageSection(external_extension_ids_.get(),
+ IDS_EXTENSION_NOTIFICATION_ITEM_EXTERNAL) +
+ GenerateMessageSection(blacklisted_extension_ids_.get(),
+ IDS_EXTENSION_NOTIFICATION_ITEM_EXTERNAL) +
+ GenerateMessageSection(orphaned_extension_ids_.get(),
+ IDS_EXTENSION_NOTIFICATION_ITEM_EXTERNAL));
+ } else {
+ return string16();
+ }
+}
+
+string16 ExtensionGlobalError::GetBubbleViewMessage() {
+ if (message_.empty()) {
+ message_ = GenerateMessage();
+ }
+ return message_;
+}
+
+string16 ExtensionGlobalError::GetBubbleViewAcceptButtonLabel() {
+ return l10n_util::GetStringUTF16(IDS_EXTENSION_NOTIFICATION_ITEM_OK);
+}
+
+string16 ExtensionGlobalError::GetBubbleViewCancelButtonLabel() {
+ return l10n_util::GetStringUTF16(IDS_EXTENSION_NOTIFICATION_ITEM_DETAILS);
+}
+
+void ExtensionGlobalError::BubbleViewDidClose() {
+ if (!closed_callback_.is_null()) {
+ closed_callback_.Run(*this);
+ }
+}
+
+void ExtensionGlobalError::BubbleViewAcceptButtonPressed() {
+ if (!accept_callback_.is_null()) {
+ accept_callback_.Run(*this);
+ }
+}
+
+void ExtensionGlobalError::BubbleViewCancelButtonPressed() {
+ if (!cancel_callback_.is_null()) {
+ cancel_callback_.Run(*this);
+ }
+}
« no previous file with comments | « chrome/browser/extensions/extension_global_error.h ('k') | chrome/browser/extensions/extension_prefs.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698