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..41b24494cc1cdba23e6f0be2cc01cdbc3e124074 |
--- /dev/null |
+++ b/android_webview/native/permission/aw_permission_request.cc |
@@ -0,0 +1,65 @@ |
+// 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( |
+ scoped_ptr<AwPermissionRequestDelegate> delegate) |
+ : delegate_(delegate.Pass()), |
+ weak_factory_(this) { |
+ DCHECK(delegate_.get()); |
+} |
+ |
+AwPermissionRequest::~AwPermissionRequest() { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> j_object = java_ref_.get(env); |
+ if (j_object.is_null()) |
+ return; |
+ Java_AwPermissionRequest_detachNativeInstance(env, j_object.obj()); |
+} |
+ |
+void AwPermissionRequest::OnAccept(JNIEnv* env, |
+ jobject jcaller, |
+ jboolean accept) { |
+ delegate_->NotifyRequestResult(accept); |
+ delete this; |
+} |
+ |
+ScopedJavaLocalRef<jobject> AwPermissionRequest::CreateJavaPeer() { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> j_object = Java_AwPermissionRequest_create( |
+ env, reinterpret_cast<jlong>(this), |
+ ConvertUTF8ToJavaString(env, GetOrigin().spec()).obj(), GetResources()); |
+ java_ref_ = JavaObjectWeakGlobalRef(env, j_object.obj()); |
+ return j_object; |
+} |
+ |
+ScopedJavaLocalRef<jobject> AwPermissionRequest::GetJavaObject() { |
+ return java_ref_.get(AttachCurrentThread()); |
+} |
+ |
+const GURL& AwPermissionRequest::GetOrigin() { |
+ return delegate_->GetOrigin(); |
+} |
+ |
+int64 AwPermissionRequest::GetResources() { |
+ return delegate_->GetResources(); |
+} |
+ |
+bool RegisterAwPermissionRequest(JNIEnv* env) { |
+ return RegisterNativesImpl(env); |
+} |
+ |
+} // namespace android_webivew |