1 // Copyright (c) 2012 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/common/extensions/permissions/permission_message.h" 6 7 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/utf_string_conversions.h" 9 #include "grit/generated_resources.h" 10 #include "ui/base/l10n/l10n_util.h" 11 12 namespace extensions { 13 // 14 // PermissionMessage 15 // 16 17 // static 18 PermissionMessage PermissionMessage::CreateFromHostList( 19 const std::set<std::string>& hosts) { 20 std::vector<std::string> host_list(hosts.begin(), hosts.end()); 21 DCHECK_GT(host_list.size(), 0UL); 22 ID message_id; 23 string16 message; 24 string16 details; 25 26 switch (host_list.size()) { 27 case 1: 28 message_id = kHosts1; 29 message = l10n_util::GetStringFUTF16(IDS_EXTENSION_PROMPT_WARNING_1_HOST, 30 UTF8ToUTF16(host_list[0])); 31 break; 32 case 2: 33 message_id = kHosts2; 34 message = l10n_util::GetStringFUTF16(IDS_EXTENSION_PROMPT_WARNING_2_HOSTS, 35 UTF8ToUTF16(host_list[0]), 36 UTF8ToUTF16(host_list[1])); 37 break; 38 case 3: 39 message_id = kHosts3; 40 message = l10n_util::GetStringFUTF16(IDS_EXTENSION_PROMPT_WARNING_3_HOSTS, 41 UTF8ToUTF16(host_list[0]), 42 UTF8ToUTF16(host_list[1]), 43 UTF8ToUTF16(host_list[2])); 44 break; 45 default: 46 message_id = kHosts4OrMore; 47 48 #if defined(TOOLKIT_VIEWS) 49 message = l10n_util::GetStringFUTF16( 50 IDS_EXTENSION_PROMPT_WARNING_HOSTS, 51 base::IntToString16(host_list.size())); 52 53 for (size_t i = 0; i < host_list.size(); ++i) { 54 if (i > 0) 55 details += ASCIIToUTF16("\n"); 56 details += l10n_util::GetStringFUTF16( 57 IDS_EXTENSION_PROMPT_WARNING_HOST_LIST_ENTRY, 58 UTF8ToUTF16(host_list[i])); 59 } 60 #else 61 // TODO(finnur): Remove once all platforms support expandible sections. 62 message = l10n_util::GetStringFUTF16( 63 IDS_EXTENSION_PROMPT_WARNING_4_OR_MORE_HOSTS, 64 UTF8ToUTF16(host_list[0]), 65 UTF8ToUTF16(host_list[1]), 66 base::IntToString16(hosts.size() - 2)); 67 break; 68 #endif 69 } 70 71 return PermissionMessage(message_id, message, details); 72 } 73 74 PermissionMessage::PermissionMessage( 75 PermissionMessage::ID id, const string16& message) 76 : id_(id), 77 message_(message) { 78 } 79 80 PermissionMessage::PermissionMessage( 81 PermissionMessage::ID id, const string16& message, const string16& details) 82 : id_(id), 83 message_(message), 84 details_(details) { 85 } 86 87 PermissionMessage::~PermissionMessage() {} 88 89 } // namespace extensions 90