Home | History | Annotate | Download | only in permissions
      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