blob: 7db780e63f7a77b8638e1c01ede2e0bb541a15d4 [file] [log] [blame]
Danan S5f430882020-01-14 04:52:551// Copyright 2019 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 <vector>
6
7#include "base/strings/string16.h"
8#include "base/strings/string_util.h"
9#include "base/strings/utf_string_conversions.h"
10#include "chrome/browser/extensions/install_prompt_permissions.h"
11#include "extensions/common/manifest.h"
12#include "extensions/common/permissions/permission_message_provider.h"
13#include "extensions/common/permissions/permission_set.h"
14#include "extensions/common/permissions/permissions_data.h"
15
16namespace extensions {
17
18InstallPromptPermissions::InstallPromptPermissions() = default;
19
20InstallPromptPermissions::~InstallPromptPermissions() = default;
21
22void InstallPromptPermissions::LoadFromPermissionSet(
23 const extensions::PermissionSet* permissions_set,
24 const extensions::Manifest::Type type) {
25 const extensions::PermissionMessageProvider* message_provider =
26 extensions::PermissionMessageProvider::Get();
27
28 const extensions::PermissionMessages& permissions_messages =
29 message_provider->GetPermissionMessages(
30 message_provider->GetAllPermissionIDs(*permissions_set, type));
31
32 AddPermissionMessages(permissions_messages);
33}
34
35void InstallPromptPermissions::AddPermissionMessages(
36 const extensions::PermissionMessages& permissions_messages) {
37 for (const extensions::PermissionMessage& msg : permissions_messages) {
38 permissions.push_back(msg.message());
39 // Add a dash to the front of each permission detail.
40 base::string16 details_str;
41 if (!msg.submessages().empty()) {
42 std::vector<base::string16> detail_lines_with_bullets;
43 for (const auto& detail_line : msg.submessages()) {
44 detail_lines_with_bullets.push_back(base::ASCIIToUTF16("- ") +
45 detail_line);
46 }
47
48 details_str =
49 base::JoinString(detail_lines_with_bullets, base::ASCIIToUTF16("\n"));
50 }
51 details.push_back(details_str);
52 is_showing_details.push_back(false);
53 }
54}
55
56} // namespace extensions