blob: e7a7f2dd8f004677b6ba608d0c49fcd62fdbee99 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/webui/media_app_ui/media_app_page_handler.h"
#include <utility>
#include "ash/webui/media_app_ui/file_system_access_helpers.h"
#include "ash/webui/media_app_ui/media_app_ui.h"
#include "ash/webui/media_app_ui/media_app_ui_delegate.h"
#include "base/files/file_util.h"
#include "base/functional/bind.h"
#include "base/task/task_traits.h"
#include "base/task/thread_pool.h"
#include "content/public/browser/web_contents.h"
namespace ash {
namespace {
void IsFileURLBrowserWritable(
MediaAppPageHandler::IsFileBrowserWritableCallback callback,
std::optional<storage::FileSystemURL> url) {
if (!url.has_value()) {
std::move(callback).Run(false);
return;
};
base::ThreadPool::PostTaskAndReplyWithResult(
FROM_HERE, {base::MayBlock()},
base::BindOnce(&base::PathIsWritable, url->path()), std::move(callback));
}
} // namespace
MediaAppPageHandler::MediaAppPageHandler(
MediaAppUI* media_app_ui,
mojo::PendingReceiver<media_app_ui::mojom::PageHandler> receiver)
: receiver_(this, std::move(receiver)), media_app_ui_(media_app_ui) {}
MediaAppPageHandler::~MediaAppPageHandler() = default;
void MediaAppPageHandler::OpenFeedbackDialog(
OpenFeedbackDialogCallback callback) {
auto error_message = media_app_ui_->delegate()->OpenFeedbackDialog();
std::move(callback).Run(std::move(error_message));
}
void MediaAppPageHandler::ToggleBrowserFullscreenMode(
ToggleBrowserFullscreenModeCallback callback) {
media_app_ui_->delegate()->ToggleBrowserFullscreenMode();
std::move(callback).Run();
}
void MediaAppPageHandler::MaybeTriggerPdfHats(
MaybeTriggerPdfHatsCallback callback) {
media_app_ui_->delegate()->MaybeTriggerPdfHats();
std::move(callback).Run();
}
void MediaAppPageHandler::IsFileArcWritable(
mojo::PendingRemote<blink::mojom::FileSystemAccessTransferToken> token,
IsFileArcWritableCallback callback) {
media_app_ui_->delegate()->IsFileArcWritable(std::move(token),
std::move(callback));
}
void MediaAppPageHandler::IsFileBrowserWritable(
mojo::PendingRemote<blink::mojom::FileSystemAccessTransferToken> token,
IsFileBrowserWritableCallback callback) {
ash::ResolveTransferToken(
std::move(token), media_app_ui_->web_ui()->GetWebContents(),
base::BindOnce(&IsFileURLBrowserWritable, std::move(callback)));
}
void MediaAppPageHandler::EditInPhotos(
mojo::PendingRemote<blink::mojom::FileSystemAccessTransferToken> token,
const std::string& mime_type,
EditInPhotosCallback callback) {
media_app_ui_->delegate()->EditInPhotos(std::move(token), mime_type,
std::move(callback));
}
} // namespace ash