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

Side by Side Diff: android_webview/native/permission/permission_request_handler.cc

Issue 239793002: Handle media access permission request (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed comments, added unittests Created 6 years, 8 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "android_webview/native/permission/permission_request_handler.h"
6
7 #include "base/android/scoped_java_ref.h"
8 #include "base/bind.h"
9
10 using base::android::ScopedJavaLocalRef;
11
12 namespace android_webview {
13
14 PermissionRequestHandler::PermissionRequestHandler(
15 PermissionRequestHandlerClient* client)
16 : client_(client) {
17 }
18
19 PermissionRequestHandler::~PermissionRequestHandler() {
20 for (RequestIterator i = requests_.begin(); i != requests_.end(); ++i)
21 CancelRequest(i);
22 }
23
24 void PermissionRequestHandler::SendRequest(
25 const scoped_refptr<AwPermissionRequest>& request) {
26 ScopedJavaLocalRef<jobject> java_ref = request->CreateJavaPeer(
27 base::Bind(&PermissionRequestHandler::NotifyRequestProcessed,
28 base::Unretained(this)));
29 if (!java_ref.is_null()) {
30 requests_.push_back(request);
31 client_->OnPermissionRequest(request);
32 }
33 }
34
35 void PermissionRequestHandler::CancelRequest(const GURL& origin,
36 int64 resources) {
37 // The request list might have multiple requests with same origin and
38 // resources.
39 RequestIterator i = FindRequest(origin, resources);
40 while (i != requests_.end()) {
41 CancelRequest(i);
42 requests_.erase(i);
43 i = FindRequest(origin, resources);
44 }
45 }
46
47 void PermissionRequestHandler::NotifyRequestProcessed(
48 scoped_refptr<AwPermissionRequest> request) {
49 RequestIterator i =
50 FindRequest(request->GetOrigin(), request->GetResources());
51 if (i != requests_.end())
52 requests_.erase(i);
53 }
54
55 PermissionRequestHandler::RequestIterator
56 PermissionRequestHandler::FindRequest(const GURL& origin,
57 int64 resources) {
58 RequestIterator i;
59 for (i = requests_.begin(); i != requests_.end(); ++i) {
60 if (i->get()->GetOrigin() == origin &&
61 i->get()->GetResources() == resources) {
62 break;
63 }
64 }
65 return i;
66 }
67
68 void PermissionRequestHandler::CancelRequest(RequestIterator i) {
69 client_->OnPermissionRequestCanceled(*i);
70 }
71
72 } // namespace android_webivew
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698