blob: 395a328e8f31c87bba7d151b74baee9f97adfe45 [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/views/extensions/extension_permissions_view.h"
#include "chrome/browser/ui/views/chrome_layout_provider.h"
#include "chrome/browser/ui/views/chrome_typography.h"
#include "chrome/browser/ui/views/extensions/expandable_container_view.h"
#include "extensions/browser/install_prompt_permissions.h"
#include "ui/base/metadata/metadata_impl_macros.h"
#include "ui/views/controls/label.h"
#include "ui/views/layout/box_layout.h"
ExtensionPermissionsView::ExtensionPermissionsView(
const extensions::InstallPromptPermissions& permissions) {
SetLayoutManager(std::make_unique<views::BoxLayout>(
views::BoxLayout::Orientation::kVertical, gfx::Insets(),
ChromeLayoutProvider::Get()->GetDistanceMetric(
views::DISTANCE_RELATED_CONTROL_VERTICAL)));
for (size_t i = 0; i < permissions.permissions.size(); ++i) {
AddItem(permissions.permissions.at(i), permissions.details.at(i));
}
}
void ExtensionPermissionsView::AddItem(
const std::u16string& permission_text,
const std::u16string& permission_details) {
auto permission_label =
views::Builder<views::Label>()
.SetText(permission_text)
.SetTextContext(views::style::CONTEXT_DIALOG_BODY_TEXT)
.SetTextStyle(views::style::STYLE_SECONDARY)
.SetMultiLine(true)
.SetHorizontalAlignment(gfx::ALIGN_LEFT)
.Build();
AddChildView(std::move(permission_label));
if (!permission_details.empty()) {
// If we have more details to provide, show them in collapsed form.
AddChildView(std::make_unique<ExpandableContainerView>(permission_details));
}
}
BEGIN_METADATA(ExtensionPermissionsView)
END_METADATA