Commit c7b67724 authored by Sky Malice's avatar Sky Malice Committed by Commit Bot

Migrate AcquireFileAccessPermissionCallback to OnceCallback.

Bug: 714018
Change-Id: I73cf48ba17dd96f6f4571bad941b6669509ba6b2
Reviewed-on: https://chromium-review.googlesource.com/1117575
Commit-Queue: Sky Malice <skym@chromium.org>
Reviewed-by: default avatarCarlos Knippschild <carlosk@chromium.org>
Reviewed-by: default avatarTommy Nyquist <nyquist@chromium.org>
Cr-Commit-Position: refs/heads/master@{#571927}
parent 4db6f39b
......@@ -5,7 +5,7 @@
#include "chrome/browser/android/download/download_controller.h"
#include <memory>
#include <utility>
#include <vector>
#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
......@@ -157,7 +157,7 @@ void RemoveDownloadItem(std::unique_ptr<DownloadManagerGetter> getter,
void OnRequestFileAccessResult(
const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
const DownloadControllerBase::AcquireFileAccessPermissionCallback& cb,
DownloadControllerBase::AcquireFileAccessPermissionCallback cb,
bool granted,
const std::string& permission_to_update) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
......@@ -169,7 +169,7 @@ void OnRequestFileAccessResult(
PermissionUpdateInfoBarDelegate::Create(
web_contents, permissions,
IDS_MISSING_STORAGE_PERMISSION_DOWNLOAD_EDUCATION_TEXT, cb);
IDS_MISSING_STORAGE_PERMISSION_DOWNLOAD_EDUCATION_TEXT, std::move(cb));
return;
}
......@@ -177,11 +177,11 @@ void OnRequestFileAccessResult(
DownloadController::RecordDownloadCancelReason(
DownloadController::CANCEL_REASON_NO_STORAGE_PERMISSION);
}
cb.Run(granted);
std::move(cb).Run(granted);
}
void OnStoragePermissionDecided(
const DownloadControllerBase::AcquireFileAccessPermissionCallback& cb,
DownloadControllerBase::AcquireFileAccessPermissionCallback cb,
bool granted) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
......@@ -193,7 +193,7 @@ void OnStoragePermissionDecided(
DownloadController::StoragePermissionType::STORAGE_PERMISSION_DENIED);
}
cb.Run(granted);
std::move(cb).Run(granted);
}
} // namespace
......@@ -216,7 +216,7 @@ static void JNI_DownloadController_OnAcquirePermissionResult(
std::unique_ptr<DownloadController::AcquirePermissionCallback> cb(
reinterpret_cast<DownloadController::AcquirePermissionCallback*>(
callback_id));
cb->Run(granted, permission_to_update);
std::move(*cb).Run(granted, permission_to_update);
}
// static
......@@ -258,7 +258,7 @@ DownloadController::~DownloadController() = default;
void DownloadController::AcquireFileAccessPermission(
const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
const DownloadControllerBase::AcquireFileAccessPermissionCallback& cb) {
DownloadControllerBase::AcquireFileAccessPermissionCallback cb) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
WebContents* web_contents = web_contents_getter.Run();
......@@ -269,23 +269,23 @@ void DownloadController::AcquireFileAccessPermission(
RecordStoragePermission(
StoragePermissionType::STORAGE_PERMISSION_NO_ACTION_NEEDED);
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
base::BindOnce(cb, true));
base::BindOnce(std::move(cb), true));
return;
} else if (vr::VrTabHelper::IsUiSuppressedInVr(
web_contents,
vr::UiSuppressedElement::kFileAccessPermission)) {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
base::BindOnce(cb, false));
base::BindOnce(std::move(cb), false));
return;
}
RecordStoragePermission(StoragePermissionType::STORAGE_PERMISSION_REQUESTED);
AcquirePermissionCallback callback(
base::Bind(&OnRequestFileAccessResult, web_contents_getter,
base::Bind(&OnStoragePermissionDecided, cb)));
AcquirePermissionCallback callback(base::BindOnce(
&OnRequestFileAccessResult, web_contents_getter,
base::BindOnce(&OnStoragePermissionDecided, base::Passed(&cb))));
// Make copy on the heap so we can pass the pointer through JNI.
intptr_t callback_id =
reinterpret_cast<intptr_t>(new AcquirePermissionCallback(callback));
intptr_t callback_id = reinterpret_cast<intptr_t>(
new AcquirePermissionCallback(std::move(callback)));
JNIEnv* env = base::android::AttachCurrentThread();
Java_DownloadController_requestFileAccess(env, callback_id);
}
......
......@@ -20,6 +20,7 @@
#define CHROME_BROWSER_ANDROID_DOWNLOAD_DOWNLOAD_CONTROLLER_H_
#include <map>
#include <string>
#include <utility>
#include "base/android/scoped_java_ref.h"
......@@ -37,7 +38,7 @@ class DownloadController : public DownloadControllerBase {
// DownloadControllerBase implementation.
void AcquireFileAccessPermission(
const content::ResourceRequestInfo::WebContentsGetter& wc_getter,
const AcquireFileAccessPermissionCallback& callback) override;
AcquireFileAccessPermissionCallback callback) override;
void CreateAndroidDownload(
const content::ResourceRequestInfo::WebContentsGetter& wc_getter,
const DownloadInfo& info) override;
......@@ -76,8 +77,8 @@ class DownloadController : public DownloadControllerBase {
// Callback when user permission prompt finishes. Args: whether file access
// permission is acquired, which permission to update.
typedef base::Callback<void(bool, const std::string&)>
AcquirePermissionCallback;
using AcquirePermissionCallback =
base::OnceCallback<void(bool, const std::string&)>;
private:
friend struct base::DefaultSingletonTraits<DownloadController>;
......
......@@ -77,13 +77,13 @@ class DownloadControllerBase : public download::DownloadItem::Observer,
// Callback when user permission prompt finishes. Args: whether file access
// permission is acquired.
typedef base::Callback<void(bool)> AcquireFileAccessPermissionCallback;
using AcquireFileAccessPermissionCallback = base::OnceCallback<void(bool)>;
// Called to prompt the user for file access permission. When finished,
// |callback| will be executed.
virtual void AcquireFileAccessPermission(
const content::ResourceRequestInfo::WebContentsGetter& wc_getter,
const AcquireFileAccessPermissionCallback& callback) = 0;
AcquireFileAccessPermissionCallback callback) = 0;
// Called by unit test to approve or disapprove file access request.
virtual void SetApproveFileAccessRequestForTesting(bool approve) {}
......
......@@ -4,6 +4,8 @@
#include "chrome/browser/android/download/mock_download_controller.h"
#include <utility>
#include "base/bind.h"
#include "base/location.h"
#include "base/threading/thread_task_runner_handle.h"
......@@ -28,9 +30,9 @@ void MockDownloadController::StartContextMenuDownload(
void MockDownloadController::AcquireFileAccessPermission(
const content::ResourceRequestInfo::WebContentsGetter& wc_getter,
const DownloadControllerBase::AcquireFileAccessPermissionCallback& cb) {
DownloadControllerBase::AcquireFileAccessPermissionCallback cb) {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::Bind(cb, approve_file_access_request_));
FROM_HERE, base::BindOnce(std::move(cb), approve_file_access_request_));
}
void MockDownloadController::SetApproveFileAccessRequestForTesting(
......
......@@ -5,6 +5,8 @@
#ifndef CHROME_BROWSER_ANDROID_DOWNLOAD_MOCK_DOWNLOAD_CONTROLLER_H_
#define CHROME_BROWSER_ANDROID_DOWNLOAD_MOCK_DOWNLOAD_CONTROLLER_H_
#include <string>
#include "base/callback.h"
#include "base/macros.h"
#include "base/memory/singleton.h"
......@@ -35,7 +37,7 @@ class MockDownloadController : public DownloadControllerBase {
bool is_link, const std::string& extra_headers) override;
void AcquireFileAccessPermission(
const content::ResourceRequestInfo::WebContentsGetter& wc_getter,
const AcquireFileAccessPermissionCallback& callback) override;
AcquireFileAccessPermissionCallback callback) override;
void SetApproveFileAccessRequestForTesting(bool approve) override;
void CreateAndroidDownload(
const content::ResourceRequestInfo::WebContentsGetter& wc_getter,
......
......@@ -230,9 +230,9 @@ ScopedJavaLocalRef<jobjectArray> JNI_SavePageRequest_CreateJavaSavePageRequests(
ConvertUTF8ToJavaString(env, request.request_origin());
ScopedJavaLocalRef<jobject> j_save_page_request =
Java_SavePageRequest_create(env, (int)request.request_state(),
request.request_id(), url, name_space, id,
origin);
Java_SavePageRequest_create(
env, static_cast<int>(request.request_state()),
request.request_id(), url, name_space, id, origin);
env->SetObjectArrayElement(joa, i, j_save_page_request.obj());
}
......@@ -1039,7 +1039,7 @@ void OfflinePageBridge::AcquireFileAccessPermission(
}
OfflinePageUtils::AcquireFileAccessPermission(
web_contents,
base::Bind(&AcquireFileAccessPermissionCallback, j_callback_ref));
base::BindOnce(&AcquireFileAccessPermissionCallback, j_callback_ref));
}
void OfflinePageBridge::NotifyIfDoneLoading() const {
......
......@@ -4,6 +4,10 @@
#include "chrome/browser/offline_pages/offline_page_utils.h"
#include <algorithm>
#include <memory>
#include <utility>
#include "base/bind.h"
#include "base/location.h"
#include "base/metrics/histogram_macros.h"
......@@ -411,15 +415,15 @@ bool OfflinePageUtils::IsShowingTrustedOfflinePage(
// static
void OfflinePageUtils::AcquireFileAccessPermission(
content::WebContents* web_contents,
const base::Callback<void(bool)>& callback) {
base::OnceCallback<void(bool)> callback) {
#if defined(OS_ANDROID)
content::ResourceRequestInfo::WebContentsGetter web_contents_getter =
GetWebContentsGetter(web_contents);
DownloadControllerBase::Get()->AcquireFileAccessPermission(
web_contents_getter, callback);
web_contents_getter, std::move(callback));
#else
// Not needed in other platforms.
callback.Run(true /*granted*/);
std::move(callback).Run(true /*granted*/);
#endif // defined(OS_ANDROID)
}
......
......@@ -6,6 +6,8 @@
#define CHROME_BROWSER_OFFLINE_PAGES_OFFLINE_PAGE_UTILS_H_
#include <stdint.h>
#include <string>
#include <vector>
#include "base/callback.h"
#include "base/files/file_util.h"
......@@ -169,7 +171,7 @@ class OfflinePageUtils {
// to inform if the file access permission is granted.
static void AcquireFileAccessPermission(
content::WebContents* web_contents,
const base::Callback<void(bool)>& callback);
base::OnceCallback<void(bool)> callback);
};
} // namespace offline_pages
......
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