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