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

Unified Diff: android_webview/native/permission/permission_request_handler.cc

Issue 274443002: Implement PreauthorizePermission (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed comments Created 6 years, 7 months 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
Index: android_webview/native/permission/permission_request_handler.cc
diff --git a/android_webview/native/permission/permission_request_handler.cc b/android_webview/native/permission/permission_request_handler.cc
index 08b7431b4934dc0664c59c0d71fb98703f9da635..20cc748236b11550924f3f00318caf787368387c 100644
--- a/android_webview/native/permission/permission_request_handler.cc
+++ b/android_webview/native/permission/permission_request_handler.cc
@@ -26,6 +26,11 @@ PermissionRequestHandler::~PermissionRequestHandler() {
void PermissionRequestHandler::SendRequest(
scoped_ptr<AwPermissionRequestDelegate> request) {
+ if (Preauthorized(request->GetOrigin(), request->GetResources())) {
+ request->NotifyRequestResult(true);
+ return;
+ }
+
AwPermissionRequest* aw_request = new AwPermissionRequest(request.Pass());
requests_.push_back(
base::WeakPtr<AwPermissionRequest>(aw_request->GetWeakPtr()));
@@ -45,6 +50,20 @@ void PermissionRequestHandler::CancelRequest(const GURL& origin,
}
}
+void PermissionRequestHandler::PreauthorizePermission(const GURL& origin,
+ int64 resources) {
+ if (!resources)
+ return;
+
+ std::string key = origin.GetOrigin().spec();
+ if (key.empty()) {
+ LOG(ERROR) << "The origin of preauthorization is empty, ignore it.";
+ return;
+ }
+
+ preauthorized_permission_[key] |= resources;
+}
+
PermissionRequestHandler::RequestIterator
PermissionRequestHandler::FindRequest(const GURL& origin,
int64 resources) {
@@ -77,4 +96,13 @@ void PermissionRequestHandler::PruneRequests() {
}
}
+bool PermissionRequestHandler::Preauthorized(const GURL& origin,
+ int64 resources) {
+ std::map<std::string, int64>::iterator i =
+ preauthorized_permission_.find(origin.GetOrigin().spec());
+
+ return i != preauthorized_permission_.end() &&
+ (resources & i->second) == resources;
+}
+
} // namespace android_webivew

Powered by Google App Engine
This is Rietveld 408576698