Chromium Code Reviews| 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 |