Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2529)

Unified Diff: android_webview/browser/aw_permission_manager.cc

Issue 2480293004: Mandate unique_ptr for base::IDMap in IDMapOwnPointer mode. (Closed)
Patch Set: Make changes requested by danakj, fix a few more headers Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | android_webview/native/aw_contents_client_bridge.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: android_webview/browser/aw_permission_manager.cc
diff --git a/android_webview/browser/aw_permission_manager.cc b/android_webview/browser/aw_permission_manager.cc
index 12a6cdd1a840377462fddf9adcff9e1515145945..88dd1f15104cb2251c6d87a50fe9950ef712f78d 100644
--- a/android_webview/browser/aw_permission_manager.cc
+++ b/android_webview/browser/aw_permission_manager.cc
@@ -4,7 +4,9 @@
#include "android_webview/browser/aw_permission_manager.h"
+#include <memory>
#include <string>
+#include <utility>
#include "android_webview/browser/aw_browser_permission_request_delegate.h"
#include "base/callback.h"
@@ -253,10 +255,10 @@ int AwPermissionManager::RequestPermissions(
const GURL& embedding_origin = LastCommittedOrigin(render_frame_host);
- PendingRequest* pending_request =
- new PendingRequest(permissions, requesting_origin, embedding_origin,
- GetRenderProcessID(render_frame_host),
- GetRenderFrameID(render_frame_host), callback);
+ auto pending_request = base::MakeUnique<PendingRequest>(
+ permissions, requesting_origin, embedding_origin,
+ GetRenderProcessID(render_frame_host),
+ GetRenderFrameID(render_frame_host), callback);
std::vector<bool> should_delegate_requests =
std::vector<bool>(permissions.size(), true);
for (size_t i = 0; i < permissions.size(); ++i) {
@@ -275,10 +277,14 @@ int AwPermissionManager::RequestPermissions(
}
}
- int request_id = pending_requests_.Add(pending_request);
+ // Keep copy of pointer for performing further operations after ownership is
+ // transferred to pending_requests_
+ PendingRequest* pending_request_raw = pending_request.get();
+ int request_id = pending_requests_.Add(std::move(pending_request));
- AwBrowserPermissionRequestDelegate* delegate = GetDelegate(
- pending_request->render_process_id, pending_request->render_frame_id);
+ AwBrowserPermissionRequestDelegate* delegate =
+ GetDelegate(pending_request_raw->render_process_id,
+ pending_request_raw->render_frame_id);
for (size_t i = 0; i < permissions.size(); ++i) {
if (!should_delegate_requests[i])
@@ -287,27 +293,27 @@ int AwPermissionManager::RequestPermissions(
if (!delegate) {
DVLOG(0) << "Dropping permissions request for "
<< static_cast<int>(permissions[i]);
- pending_request->SetPermissionStatus(permissions[i],
- PermissionStatus::DENIED);
+ pending_request_raw->SetPermissionStatus(permissions[i],
+ PermissionStatus::DENIED);
continue;
}
switch (permissions[i]) {
case PermissionType::GEOLOCATION:
delegate->RequestGeolocationPermission(
- pending_request->requesting_origin,
+ pending_request_raw->requesting_origin,
base::Bind(&OnRequestResponse, weak_ptr_factory_.GetWeakPtr(),
request_id, permissions[i]));
break;
case PermissionType::PROTECTED_MEDIA_IDENTIFIER:
delegate->RequestProtectedMediaIdentifierPermission(
- pending_request->requesting_origin,
+ pending_request_raw->requesting_origin,
base::Bind(&OnRequestResponse, weak_ptr_factory_.GetWeakPtr(),
request_id, permissions[i]));
break;
case PermissionType::MIDI_SYSEX:
delegate->RequestMIDISysexPermission(
- pending_request->requesting_origin,
+ pending_request_raw->requesting_origin,
base::Bind(&OnRequestResponse, weak_ptr_factory_.GetWeakPtr(),
request_id, permissions[i]));
break;
@@ -320,17 +326,17 @@ int AwPermissionManager::RequestPermissions(
case PermissionType::FLASH:
NOTIMPLEMENTED() << "RequestPermissions is not implemented for "
<< static_cast<int>(permissions[i]);
- pending_request->SetPermissionStatus(permissions[i],
- PermissionStatus::DENIED);
+ pending_request_raw->SetPermissionStatus(permissions[i],
+ PermissionStatus::DENIED);
break;
case PermissionType::MIDI:
- pending_request->SetPermissionStatus(permissions[i],
- PermissionStatus::GRANTED);
+ pending_request_raw->SetPermissionStatus(permissions[i],
+ PermissionStatus::GRANTED);
break;
case PermissionType::NUM:
NOTREACHED() << "PermissionType::NUM was not expected here.";
- pending_request->SetPermissionStatus(permissions[i],
- PermissionStatus::DENIED);
+ pending_request_raw->SetPermissionStatus(permissions[i],
+ PermissionStatus::DENIED);
break;
}
}
@@ -344,8 +350,8 @@ int AwPermissionManager::RequestPermissions(
// PermissionType::MIDI is permitted within the previous for-loop, all
// requests could be already resolved, but still in the |pending_requests_|
// without invoking the callback.
- if (pending_request->IsCompleted()) {
- std::vector<PermissionStatus> results = pending_request->results;
+ if (pending_request_raw->IsCompleted()) {
+ std::vector<PermissionStatus> results = pending_request_raw->results;
pending_requests_.Remove(request_id);
callback.Run(results);
return kNoPendingOperation;
« no previous file with comments | « no previous file | android_webview/native/aw_contents_client_bridge.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698