| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 // Copyright (c) 2011 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 | 
|  | 5 #include "chrome/browser/extensions/extension_global_error.h" | 
|  | 6 | 
|  | 7 #include "base/logging.h" | 
|  | 8 #include "base/string16.h" | 
|  | 9 #include "base/utf_string_conversions.h" | 
|  | 10 #include "chrome/browser/extensions/extension_service.h" | 
|  | 11 #include "chrome/browser/ui/global_error.h" | 
|  | 12 #include "grit/generated_resources.h" | 
|  | 13 #include "ui/base/l10n/l10n_util.h" | 
|  | 14 | 
|  | 15 ExtensionGlobalError::ExtensionGlobalError( | 
|  | 16       base::WeakPtr<ExtensionService> extension_service) | 
|  | 17     : extension_service_(extension_service), | 
|  | 18       external_extension_ids_(new ExtensionIdSet), | 
|  | 19       blacklisted_extension_ids_(new ExtensionIdSet), | 
|  | 20       orphaned_extension_ids_(new ExtensionIdSet) { | 
|  | 21 } | 
|  | 22 | 
|  | 23 ExtensionGlobalError::~ExtensionGlobalError() { | 
|  | 24 } | 
|  | 25 | 
|  | 26 void ExtensionGlobalError::AddExternalExtension(const std::string& id) { | 
|  | 27   external_extension_ids_->insert(id); | 
|  | 28 } | 
|  | 29 | 
|  | 30 void ExtensionGlobalError::AddBlacklistedExtension(const std::string& id) { | 
|  | 31   blacklisted_extension_ids_->insert(id); | 
|  | 32 } | 
|  | 33 | 
|  | 34 void ExtensionGlobalError::AddOrphanedExtension(const std::string& id) { | 
|  | 35   orphaned_extension_ids_->insert(id); | 
|  | 36 } | 
|  | 37 | 
|  | 38 void ExtensionGlobalError::set_accept_callback( | 
|  | 39     ExtensionGlobalErrorCallback callback) { | 
|  | 40   accept_callback_ = callback; | 
|  | 41 } | 
|  | 42 | 
|  | 43 void ExtensionGlobalError::set_cancel_callback( | 
|  | 44     ExtensionGlobalErrorCallback callback) { | 
|  | 45   cancel_callback_ = callback; | 
|  | 46 } | 
|  | 47 | 
|  | 48 void ExtensionGlobalError::set_closed_callback( | 
|  | 49     ExtensionGlobalErrorCallback callback) { | 
|  | 50   cancel_callback_ = callback; | 
|  | 51 } | 
|  | 52 | 
|  | 53 bool ExtensionGlobalError::HasBadge() { | 
|  | 54   return false; | 
|  | 55 } | 
|  | 56 | 
|  | 57 bool ExtensionGlobalError::HasMenuItem() { | 
|  | 58   return false; | 
|  | 59 } | 
|  | 60 | 
|  | 61 int ExtensionGlobalError::MenuItemCommandID() { | 
|  | 62   NOTREACHED(); | 
|  | 63   return 0; | 
|  | 64 } | 
|  | 65 | 
|  | 66 string16 ExtensionGlobalError::MenuItemLabel() { | 
|  | 67   NOTREACHED(); | 
|  | 68   return NULL; | 
|  | 69 } | 
|  | 70 | 
|  | 71 void ExtensionGlobalError::ExecuteMenuItem(Browser* browser) { | 
|  | 72   NOTREACHED(); | 
|  | 73 } | 
|  | 74 | 
|  | 75 bool ExtensionGlobalError::HasBubbleView() { | 
|  | 76   return true; | 
|  | 77 } | 
|  | 78 | 
|  | 79 string16 ExtensionGlobalError::GetBubbleViewTitle() { | 
|  | 80   return l10n_util::GetStringUTF16(IDS_EXTENSION_NOTIFICATION_TITLE); | 
|  | 81 } | 
|  | 82 | 
|  | 83 string16 ExtensionGlobalError::GenerateMessageSection( | 
|  | 84     const ExtensionIdSet* extensions, | 
|  | 85     int template_message_id) { | 
|  | 86   CHECK(extensions); | 
|  | 87   CHECK(template_message_id); | 
|  | 88   string16 message; | 
|  | 89 | 
|  | 90   for (ExtensionIdSet::const_iterator iter = extensions->begin(); | 
|  | 91        iter != extensions->end(); ++iter) { | 
|  | 92     const Extension* e = extension_service_->GetExtensionById(*iter, true); | 
|  | 93     message += l10n_util::GetStringFUTF16(template_message_id, | 
|  | 94                                           string16(ASCIIToUTF16(e->name()))); | 
|  | 95   } | 
|  | 96   return message; | 
|  | 97 } | 
|  | 98 | 
|  | 99 string16 ExtensionGlobalError::GenerateMessage() { | 
|  | 100   if (extension_service_.get()) { | 
|  | 101     return l10n_util::GetStringFUTF16( | 
|  | 102         IDS_EXTENSION_NOTIFICATION_BODY_TEMPLATE, | 
|  | 103         GenerateMessageSection(external_extension_ids_.get(), | 
|  | 104                                IDS_EXTENSION_NOTIFICATION_ITEM_EXTERNAL) + | 
|  | 105         GenerateMessageSection(blacklisted_extension_ids_.get(), | 
|  | 106                                IDS_EXTENSION_NOTIFICATION_ITEM_EXTERNAL) + | 
|  | 107         GenerateMessageSection(orphaned_extension_ids_.get(), | 
|  | 108                                IDS_EXTENSION_NOTIFICATION_ITEM_EXTERNAL)); | 
|  | 109   } else { | 
|  | 110     return string16(); | 
|  | 111   } | 
|  | 112 } | 
|  | 113 | 
|  | 114 string16 ExtensionGlobalError::GetBubbleViewMessage() { | 
|  | 115   if (message_.empty()) { | 
|  | 116     message_ = GenerateMessage(); | 
|  | 117   } | 
|  | 118   return message_; | 
|  | 119 } | 
|  | 120 | 
|  | 121 string16 ExtensionGlobalError::GetBubbleViewAcceptButtonLabel() { | 
|  | 122   return l10n_util::GetStringUTF16(IDS_EXTENSION_NOTIFICATION_ITEM_OK); | 
|  | 123 } | 
|  | 124 | 
|  | 125 string16 ExtensionGlobalError::GetBubbleViewCancelButtonLabel() { | 
|  | 126   return l10n_util::GetStringUTF16(IDS_EXTENSION_NOTIFICATION_ITEM_DETAILS); | 
|  | 127 } | 
|  | 128 | 
|  | 129 void ExtensionGlobalError::BubbleViewDidClose() { | 
|  | 130   if (!closed_callback_.is_null()) { | 
|  | 131     closed_callback_.Run(*this); | 
|  | 132   } | 
|  | 133 } | 
|  | 134 | 
|  | 135 void ExtensionGlobalError::BubbleViewAcceptButtonPressed() { | 
|  | 136   if (!accept_callback_.is_null()) { | 
|  | 137     accept_callback_.Run(*this); | 
|  | 138   } | 
|  | 139 } | 
|  | 140 | 
|  | 141 void ExtensionGlobalError::BubbleViewCancelButtonPressed() { | 
|  | 142   if (!cancel_callback_.is_null()) { | 
|  | 143     cancel_callback_.Run(*this); | 
|  | 144   } | 
|  | 145 } | 
| OLD | NEW | 
|---|