Index: android_webview/native/aw_contents.cc |
diff --git a/android_webview/native/aw_contents.cc b/android_webview/native/aw_contents.cc |
index ee0e87b96e8245ebd563e08c3103a4fb595fcc38..15296933e6a039374d424f67bbd957fef22c1d4d 100644 |
--- a/android_webview/native/aw_contents.cc |
+++ b/android_webview/native/aw_contents.cc |
@@ -24,6 +24,8 @@ |
#include "android_webview/native/aw_picture.h" |
#include "android_webview/native/aw_web_contents_delegate.h" |
#include "android_webview/native/java_browser_view_renderer_helper.h" |
+#include "android_webview/native/permission/aw_permission_request.h" |
+#include "android_webview/native/permission/permission_request_handler.h" |
#include "android_webview/native/state_serializer.h" |
#include "android_webview/public/browser/draw_gl.h" |
#include "base/android/jni_android.h" |
@@ -169,6 +171,8 @@ AwContents::AwContents(scoped_ptr<WebContents> web_contents) |
render_view_host_ext_.reset( |
new AwRenderViewHostExt(this, web_contents_.get())); |
+ permission_request_handler_.reset(new PermissionRequestHandler(this)); |
+ |
AwAutofillManagerDelegate* autofill_manager_delegate = |
AwAutofillManagerDelegate::FromWebContents(web_contents_.get()); |
if (autofill_manager_delegate) |
@@ -518,6 +522,30 @@ void AwContents::HideGeolocationPrompt(const GURL& origin) { |
} |
} |
+void AwContents::OnPermissionRequest(AwPermissionRequest* request) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> j_request = request->CreateJavaPeer(); |
+ ScopedJavaLocalRef<jobject> j_ref = java_ref_.get(env); |
+ if (j_request.is_null() || j_ref.is_null()) { |
+ permission_request_handler_->CancelRequest( |
+ request->GetOrigin(), request->GetResources()); |
+ return; |
+ } |
+ |
+ Java_AwContents_onPermissionRequest(env, j_ref.obj(), j_request.obj()); |
+} |
+ |
+void AwContents::OnPermissionRequestCanceled(AwPermissionRequest* request) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> j_request = request->GetJavaObject(); |
+ if (j_request.is_null()) |
+ return; |
+ |
+ ScopedJavaLocalRef<jobject> j_ref = java_ref_.get(env); |
+ Java_AwContents_onPermissionRequestCanceled( |
+ env, j_ref.obj(), j_request.obj()); |
+} |
+ |
void AwContents::FindAllAsync(JNIEnv* env, jobject obj, jstring search_string) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
GetFindHelper()->FindAllAsync(ConvertJavaStringToUTF16(env, search_string)); |