Index: android_webview/native/permission/aw_permission_request.cc |
diff --git a/android_webview/native/permission/aw_permission_request.cc b/android_webview/native/permission/aw_permission_request.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1ec27c9c4bf12aaa62a3fe59fcb2b630d19bcf6d |
--- /dev/null |
+++ b/android_webview/native/permission/aw_permission_request.cc |
@@ -0,0 +1,74 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "android_webview/native/permission/aw_permission_request.h" |
+ |
+#include "android_webview/native/permission/aw_permission_request_delegate.h" |
+#include "base/android/jni_string.h" |
+#include "jni/AwPermissionRequest_jni.h" |
+ |
+using base::android::AttachCurrentThread; |
+using base::android::ConvertUTF8ToJavaString; |
+using base::android::ScopedJavaGlobalRef; |
+using base::android::ScopedJavaLocalRef; |
+ |
+namespace android_webview { |
+ |
+AwPermissionRequest::AwPermissionRequest( |
+ AwPermissionRequestDelegate* delegate) { |
+ DCHECK(delegate); |
+ delegate_.reset(delegate); |
+} |
+ |
+AwPermissionRequest::~AwPermissionRequest() { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> j_object = java_ref_.get(env); |
+ if (j_object.is_null()) |
+ return; |
+ Java_AwPermissionRequest_destory(env, j_object.obj()); |
+} |
+ |
+void AwPermissionRequest::OnAccept(JNIEnv* env, |
+ jobject jcaller, |
+ jboolean accept) { |
+ delegate_->OnRequestResult(accept); |
+ callback_.Run(scoped_refptr<AwPermissionRequest>(this)); |
+} |
+ |
+ScopedJavaLocalRef<jobject> AwPermissionRequest::CreateJavaPeer( |
+ base::Callback<void(scoped_refptr<AwPermissionRequest>)> callback) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ callback_ = callback; |
+ ScopedJavaLocalRef<jobject> j_object = |
+ Java_AwPermissionRequest_create(env, reinterpret_cast<jlong>(this)); |
+ java_ref_ = JavaObjectWeakGlobalRef(env, j_object.obj()); |
+ return j_object; |
+} |
+ |
+ScopedJavaLocalRef<jobject> AwPermissionRequest::GetJavaObject() { |
+ return java_ref_.get(AttachCurrentThread()); |
+} |
+ |
+ScopedJavaLocalRef<jstring> AwPermissionRequest::GetOrigin(JNIEnv* env, |
+ jobject jcaller) { |
+ return ConvertUTF8ToJavaString(env, GetOrigin().spec()); |
+} |
+ |
+jlong AwPermissionRequest::GetResources(JNIEnv* env, jobject jcaller) { |
+ return GetResources(); |
+} |
+ |
+const GURL& AwPermissionRequest::GetOrigin() { |
+ return delegate_->GetOrigin(); |
+} |
+ |
+int64 AwPermissionRequest::GetResources() { |
+ return delegate_->GetResources(); |
+} |
+ |
+bool RegisterAwPermissionRequest(JNIEnv* env) { |
+ return RegisterNativesImpl(env) >= 0; |
benm (inactive)
2014/04/16 14:51:10
please don't do the comparison, just return the fu
michaelbai
2014/04/22 20:53:51
Done.
|
+} |
+ |
+} // namespace android_webivew |