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

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

Issue 2863233002: [WebView] Move files from native to browser (Closed)
Patch Set: Created 3 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 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/aw_permission_request.h"
6
7 #include <utility>
8
9 #include "android_webview/native/permission/aw_permission_request_delegate.h"
10 #include "base/android/jni_string.h"
11 #include "jni/AwPermissionRequest_jni.h"
12
13 using base::android::AttachCurrentThread;
14 using base::android::ConvertUTF8ToJavaString;
15 using base::android::JavaParamRef;
16 using base::android::ScopedJavaLocalRef;
17
18 namespace android_webview {
19
20 // static
21 base::android::ScopedJavaLocalRef<jobject> AwPermissionRequest::Create(
22 std::unique_ptr<AwPermissionRequestDelegate> delegate,
23 base::WeakPtr<AwPermissionRequest>* weak_ptr) {
24 base::android::ScopedJavaLocalRef<jobject> java_peer;
25 AwPermissionRequest* permission_request =
26 new AwPermissionRequest(std::move(delegate), &java_peer);
27 *weak_ptr = permission_request->weak_factory_.GetWeakPtr();
28 return java_peer;
29 }
30
31 AwPermissionRequest::AwPermissionRequest(
32 std::unique_ptr<AwPermissionRequestDelegate> delegate,
33 ScopedJavaLocalRef<jobject>* java_peer)
34 : delegate_(std::move(delegate)), processed_(false), weak_factory_(this) {
35 DCHECK(delegate_.get());
36 DCHECK(java_peer);
37
38 JNIEnv* env = AttachCurrentThread();
39 *java_peer = Java_AwPermissionRequest_create(
40 env, reinterpret_cast<jlong>(this),
41 ConvertUTF8ToJavaString(env, GetOrigin().spec()), GetResources());
42 java_ref_ = JavaObjectWeakGlobalRef(env, java_peer->obj());
43 }
44
45 AwPermissionRequest::~AwPermissionRequest() {
46 OnAcceptInternal(false);
47 }
48
49 void AwPermissionRequest::OnAccept(JNIEnv* env,
50 const JavaParamRef<jobject>& jcaller,
51 jboolean accept) {
52 OnAcceptInternal(accept);
53 }
54
55 void AwPermissionRequest::OnAcceptInternal(bool accept) {
56 if (!processed_) {
57 delegate_->NotifyRequestResult(accept);
58 processed_ = true;
59 }
60 }
61
62 void AwPermissionRequest::DeleteThis() {
63 ScopedJavaLocalRef<jobject> j_request = GetJavaObject();
64 if (j_request.is_null())
65 return;
66 Java_AwPermissionRequest_destroyNative(AttachCurrentThread(), j_request);
67 }
68
69 void AwPermissionRequest::Destroy(JNIEnv* env,
70 const JavaParamRef<jobject>& obj) {
71 delete this;
72 }
73
74 ScopedJavaLocalRef<jobject> AwPermissionRequest::GetJavaObject() {
75 return java_ref_.get(AttachCurrentThread());
76 }
77
78 const GURL& AwPermissionRequest::GetOrigin() {
79 return delegate_->GetOrigin();
80 }
81
82 int64_t AwPermissionRequest::GetResources() {
83 return delegate_->GetResources();
84 }
85
86 void AwPermissionRequest::CancelAndDelete() {
87 processed_ = true;
88 DeleteThis();
89 }
90
91 bool RegisterAwPermissionRequest(JNIEnv* env) {
92 return RegisterNativesImpl(env);
93 }
94
95 } // namespace android_webivew
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698