chromium/chrome/browser/ui/views/file_system_access/file_system_access_usage_bubble_view.cc

// 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/file_system_access/file_system_access_usage_bubble_view.h"

#include <vector>

#include "base/containers/contains.h"
#include "base/i18n/message_formatter.h"
#include "base/i18n/unicodestring.h"
#include "base/memory/raw_ptr.h"
#include "base/metrics/user_metrics.h"
#include "chrome/app/vector_icons/vector_icons.h"
#include "chrome/browser/file_system_access/chrome_file_system_access_permission_context.h"
#include "chrome/browser/file_system_access/file_system_access_permission_context_factory.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/file_system_access/file_system_access_ui_helpers.h"
#include "chrome/browser/ui/views/chrome_layout_provider.h"
#include "chrome/browser/ui/views/chrome_typography.h"
#include "chrome/browser/ui/views/file_system_access/file_system_access_views_helpers.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/frame/toolbar_button_provider.h"
#include "chrome/browser/ui/views/page_action/page_action_icon_view.h"
#include "chrome/grit/generated_resources.h"
#include "components/strings/grit/components_strings.h"
#include "components/vector_icons/vector_icons.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/web_contents.h"
#include "third_party/icu/source/common/unicode/unistr.h"
#include "third_party/icu/source/common/unicode/utypes.h"
#include "third_party/icu/source/i18n/unicode/listformatter.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/metadata/metadata_header_macros.h"
#include "ui/base/metadata/metadata_impl_macros.h"
#include "ui/base/mojom/dialog_button.mojom.h"
#include "ui/color/color_id.h"
#include "ui/color/color_provider.h"
#include "ui/gfx/paint_vector_icon.h"
#include "ui/views/controls/button/image_button.h"
#include "ui/views/controls/button/image_button_factory.h"
#include "ui/views/controls/button/label_button.h"
#include "ui/views/controls/button/md_text_button.h"
#include "ui/views/controls/label.h"
#include "ui/views/controls/scroll_view.h"
#include "ui/views/controls/table/table_view.h"
#include "ui/views/layout/box_layout.h"

namespace {

// Returns the message Id to use as heading text, depending on what types of
// usage are present (i.e. just writable files, or also readable directories,
// etc).
// |need_lifetime_text_at_end| is set to false iff the returned message Id
// already includes an explanation for how long a website will have access to
// the listed paths. It is set to true iff a separate label is needed at the end
// of the dialog to explain lifetime.
int ComputeHeadingMessageFromUsage(
    const FileSystemAccessUsageBubbleView::Usage& usage,
    base::FilePath* embedded_path) {}

// Displays a (one-column) table model as a one-line summary showing the
// first few items, with a toggle button to expand a table below to contain the
// full list of items.
class CollapsibleListView : public views::View {};

BEGIN_METADATA()

}  // namespace

FileSystemAccessUsageBubbleView::Usage::Usage() = default;
FileSystemAccessUsageBubbleView::Usage::~Usage() = default;
FileSystemAccessUsageBubbleView::Usage::Usage(Usage&&) = default;
FileSystemAccessUsageBubbleView::Usage&
FileSystemAccessUsageBubbleView::Usage::operator=(Usage&&) = default;

FileSystemAccessUsageBubbleView::FilePathListModel::FilePathListModel(
    std::vector<base::FilePath> files,
    std::vector<base::FilePath> directories)
    :{}

FileSystemAccessUsageBubbleView::FilePathListModel::~FilePathListModel() =
    default;

size_t FileSystemAccessUsageBubbleView::FilePathListModel::RowCount() {}

std::u16string FileSystemAccessUsageBubbleView::FilePathListModel::GetText(
    size_t row,
    int column_id) {}

ui::ImageModel FileSystemAccessUsageBubbleView::FilePathListModel::GetIcon(
    size_t row) {}

std::u16string FileSystemAccessUsageBubbleView::FilePathListModel::GetTooltip(
    size_t row) {}

void FileSystemAccessUsageBubbleView::FilePathListModel::SetObserver(
    ui::TableModelObserver*) {}

// static
FileSystemAccessUsageBubbleView* FileSystemAccessUsageBubbleView::bubble_ =;

// static
void FileSystemAccessUsageBubbleView::ShowBubble(
    content::WebContents* web_contents,
    const url::Origin& origin,
    Usage usage) {}

// static
void FileSystemAccessUsageBubbleView::CloseCurrentBubble() {}

// static
FileSystemAccessUsageBubbleView* FileSystemAccessUsageBubbleView::GetBubble() {}

FileSystemAccessUsageBubbleView::FileSystemAccessUsageBubbleView(
    views::View* anchor_view,
    content::WebContents* web_contents,
    const url::Origin& origin,
    Usage usage)
    :{}

FileSystemAccessUsageBubbleView::~FileSystemAccessUsageBubbleView() {}

std::u16string FileSystemAccessUsageBubbleView::GetAccessibleWindowTitle()
    const {}

bool FileSystemAccessUsageBubbleView::ShouldShowCloseButton() const {}

void FileSystemAccessUsageBubbleView::Init() {}

void FileSystemAccessUsageBubbleView::OnDialogCancelled() {}

void FileSystemAccessUsageBubbleView::WindowClosing() {}

void FileSystemAccessUsageBubbleView::CloseBubble() {}

BEGIN_METADATA()