Commit af048839 authored by David Black's avatar David Black Committed by Commit Bot

Add HoldingSpaceClient::OpenDownloads().

The new API attempts to open the Downloads folder in the Files app.
This API will be invoked in response to a button press in Holding Space.

Bug: 1131260
Change-Id: I3d90b3f3f71c692618df756bae6cd46105b1f29e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2425193Reviewed-by: default avatarAhmed Mehfooz <amehfooz@chromium.org>
Commit-Queue: David Black <dmblack@google.com>
Cr-Commit-Position: refs/heads/master@{#809908}
parent 027a0451
...@@ -31,6 +31,10 @@ class ASH_PUBLIC_EXPORT HoldingSpaceClient { ...@@ -31,6 +31,10 @@ class ASH_PUBLIC_EXPORT HoldingSpaceClient {
virtual void CopyImageToClipboard(const HoldingSpaceItem& item, virtual void CopyImageToClipboard(const HoldingSpaceItem& item,
SuccessCallback callback) = 0; SuccessCallback callback) = 0;
// Attempts to open the Downloads folder.
// Success is returned via the supplied `callback`.
virtual void OpenDownloads(SuccessCallback callback) = 0;
// Attempts to open the specified holding space `item`. // Attempts to open the specified holding space `item`.
// Success is returned via the supplied `callback`. // Success is returned via the supplied `callback`.
virtual void OpenItem(const HoldingSpaceItem& item, virtual void OpenItem(const HoldingSpaceItem& item,
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "chrome/browser/chromeos/file_manager/app_id.h" #include "chrome/browser/chromeos/file_manager/app_id.h"
#include "chrome/browser/chromeos/file_manager/fileapi_util.h" #include "chrome/browser/chromeos/file_manager/fileapi_util.h"
#include "chrome/browser/chromeos/file_manager/open_util.h" #include "chrome/browser/chromeos/file_manager/open_util.h"
#include "chrome/browser/chromeos/file_manager/path_util.h"
#include "chrome/browser/ui/ash/clipboard_util.h" #include "chrome/browser/ui/ash/clipboard_util.h"
#include "chrome/browser/ui/ash/holding_space/holding_space_keyed_service.h" #include "chrome/browser/ui/ash/holding_space/holding_space_keyed_service.h"
#include "chrome/browser/ui/ash/holding_space/holding_space_keyed_service_factory.h" #include "chrome/browser/ui/ash/holding_space/holding_space_keyed_service_factory.h"
...@@ -69,6 +70,23 @@ void HoldingSpaceClientImpl::CopyImageToClipboard(const HoldingSpaceItem& item, ...@@ -69,6 +70,23 @@ void HoldingSpaceClientImpl::CopyImageToClipboard(const HoldingSpaceItem& item,
std::move(callback))); std::move(callback)));
} }
void HoldingSpaceClientImpl::OpenDownloads(SuccessCallback callback) {
auto file_path = file_manager::util::GetDownloadsFolderForProfile(profile_);
if (file_path.empty()) {
std::move(callback).Run(/*success=*/false);
return;
}
file_manager::util::OpenItem(
profile_, file_path, platform_util::OPEN_FOLDER,
base::BindOnce(
[](SuccessCallback callback,
platform_util::OpenOperationResult result) {
const bool success = result == platform_util::OPEN_SUCCEEDED;
std::move(callback).Run(success);
},
std::move(callback)));
}
void HoldingSpaceClientImpl::OpenItem(const HoldingSpaceItem& item, void HoldingSpaceClientImpl::OpenItem(const HoldingSpaceItem& item,
SuccessCallback callback) { SuccessCallback callback) {
if (item.file_path().empty()) { if (item.file_path().empty()) {
......
...@@ -24,6 +24,7 @@ class HoldingSpaceClientImpl : public HoldingSpaceClient { ...@@ -24,6 +24,7 @@ class HoldingSpaceClientImpl : public HoldingSpaceClient {
// HoldingSpaceClient: // HoldingSpaceClient:
void AddScreenshot(const base::FilePath& file_path) override; void AddScreenshot(const base::FilePath& file_path) override;
void CopyImageToClipboard(const HoldingSpaceItem&, SuccessCallback) override; void CopyImageToClipboard(const HoldingSpaceItem&, SuccessCallback) override;
void OpenDownloads(SuccessCallback callback) override;
void OpenItem(const HoldingSpaceItem&, SuccessCallback) override; void OpenItem(const HoldingSpaceItem&, SuccessCallback) override;
void ShowItemInFolder(const HoldingSpaceItem&, SuccessCallback) override; void ShowItemInFolder(const HoldingSpaceItem&, SuccessCallback) override;
void PinItem(const HoldingSpaceItem& item) override; void PinItem(const HoldingSpaceItem& item) override;
......
...@@ -100,6 +100,23 @@ IN_PROC_BROWSER_TEST_F(HoldingSpaceClientImplTest, CopyImageToClipboard) { ...@@ -100,6 +100,23 @@ IN_PROC_BROWSER_TEST_F(HoldingSpaceClientImplTest, CopyImageToClipboard) {
} }
} }
// Verifies that `HoldingSpaceClient::OpenDownloads()` works as intended.
IN_PROC_BROWSER_TEST_F(HoldingSpaceClientImplTest, OpenDownloads) {
ASSERT_TRUE(HoldingSpaceController::Get());
auto* holding_space_client = HoldingSpaceController::Get()->client();
ASSERT_TRUE(holding_space_client);
// We expect `HoldingSpaceClient::OpenDownloads()` to succeed.
base::RunLoop run_loop;
holding_space_client->OpenDownloads(
base::BindLambdaForTesting([&run_loop](bool success) {
EXPECT_TRUE(success);
run_loop.Quit();
}));
run_loop.Run();
}
// Verifies that `HoldingSpaceClient::OpenItem()` works as intended when // Verifies that `HoldingSpaceClient::OpenItem()` works as intended when
// attempting to open holding space items backed by both non-existing and // attempting to open holding space items backed by both non-existing and
// existing files. // existing files.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment