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

Side by Side Diff: android_webview/native/aw_contents.cc

Issue 10907166: Upstream chromium side of modal dialogs for webview. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "android_webview/native/aw_contents.h" 5 #include "android_webview/native/aw_contents.h"
6 6
7 #include "android_webview/browser/renderer_host/aw_render_view_host_ext.h" 7 #include "android_webview/browser/renderer_host/aw_render_view_host_ext.h"
8 #include "android_webview/native/aw_browser_dependency_factory.h" 8 #include "android_webview/native/aw_browser_dependency_factory.h"
9 #include "android_webview/native/aw_contents_container.h" 9 #include "android_webview/native/aw_contents_container.h"
10 #include "android_webview/native/aw_web_contents_delegate.h" 10 #include "android_webview/native/aw_web_contents_delegate.h"
11 #include "android_webview/native/aw_contents_io_thread_client.h" 11 #include "android_webview/native/aw_contents_io_thread_client.h"
12 #include "base/android/jni_android.h" 12 #include "base/android/jni_android.h"
13 #include "base/android/jni_string.h" 13 #include "base/android/jni_string.h"
14 #include "base/bind.h" 14 #include "base/bind.h"
15 #include "base/callback.h" 15 #include "base/callback.h"
16 #include "base/supports_user_data.h" 16 #include "base/supports_user_data.h"
17 #include "content/public/browser/android/content_view_core.h" 17 #include "content/public/browser/android/content_view_core.h"
18 #include "content/public/browser/browser_thread.h" 18 #include "content/public/browser/browser_thread.h"
19 #include "content/public/browser/web_contents.h" 19 #include "content/public/browser/web_contents.h"
20 #include "jni/AwContents_jni.h" 20 #include "jni/AwContents_jni.h"
21 21
22 using base::android::AttachCurrentThread; 22 using base::android::AttachCurrentThread;
23 using base::android::ConvertUTF16ToJavaString;
23 using base::android::ConvertUTF8ToJavaString; 24 using base::android::ConvertUTF8ToJavaString;
24 using base::android::ConvertUTF16ToJavaString;
25 using base::android::ScopedJavaGlobalRef; 25 using base::android::ScopedJavaGlobalRef;
26 using base::android::ScopedJavaLocalRef; 26 using base::android::ScopedJavaLocalRef;
27 using content::BrowserThread; 27 using content::BrowserThread;
28 using content::ContentViewCore; 28 using content::ContentViewCore;
29 using content::WebContents; 29 using content::WebContents;
30 30
31 namespace android_webview { 31 namespace android_webview {
32 32
33 namespace { 33 namespace {
34 34
(...skipping 27 matching lines...) Expand all
62 : java_ref_(env, obj), 62 : java_ref_(env, obj),
63 web_contents_delegate_( 63 web_contents_delegate_(
64 new AwWebContentsDelegate(env, web_contents_delegate)) { 64 new AwWebContentsDelegate(env, web_contents_delegate)) {
65 android_webview::AwBrowserDependencyFactory* dependency_factory = 65 android_webview::AwBrowserDependencyFactory* dependency_factory =
66 android_webview::AwBrowserDependencyFactory::GetInstance(); 66 android_webview::AwBrowserDependencyFactory::GetInstance();
67 content::WebContents* web_contents = 67 content::WebContents* web_contents =
68 dependency_factory->CreateWebContents(private_browsing); 68 dependency_factory->CreateWebContents(private_browsing);
69 contents_container_.reset(dependency_factory->CreateContentsContainer( 69 contents_container_.reset(dependency_factory->CreateContentsContainer(
70 web_contents)); 70 web_contents));
71 web_contents->SetDelegate(web_contents_delegate_.get()); 71 web_contents->SetDelegate(web_contents_delegate_.get());
72 web_contents_delegate_->SetJavaScriptDialogCreator(
73 dependency_factory->GetJavaScriptDialogCreator());
74 web_contents->SetUserData(kAwContentsUserDataKey, 72 web_contents->SetUserData(kAwContentsUserDataKey,
75 new AwContentsUserData(this)); 73 new AwContentsUserData(this));
76 render_view_host_ext_.reset(new AwRenderViewHostExt(web_contents)); 74 render_view_host_ext_.reset(new AwRenderViewHostExt(web_contents));
77 } 75 }
78 76
79 AwContents::~AwContents() { 77 AwContents::~AwContents() {
80 content::WebContents* web_contents = contents_container_->GetWebContents(); 78 content::WebContents* web_contents = contents_container_->GetWebContents();
81 DCHECK(AwContents::FromWebContents(web_contents) == this); 79 DCHECK(AwContents::FromWebContents(web_contents) == this);
82 web_contents->RemoveUserData(kAwContentsUserDataKey); 80 web_contents->RemoveUserData(kAwContentsUserDataKey);
83 } 81 }
(...skipping 17 matching lines...) Expand all
101 } 99 }
102 } // namespace 100 } // namespace
103 101
104 void AwContents::DocumentHasImages(JNIEnv* env, jobject obj, jobject message) { 102 void AwContents::DocumentHasImages(JNIEnv* env, jobject obj, jobject message) {
105 render_view_host_ext_->DocumentHasImages( 103 render_view_host_ext_->DocumentHasImages(
106 base::Bind(&DocumentHasImagesCallback, 104 base::Bind(&DocumentHasImagesCallback,
107 base::Owned(new ScopedJavaGlobalRef<jobject>( 105 base::Owned(new ScopedJavaGlobalRef<jobject>(
108 ScopedJavaLocalRef<jobject>(env, message))))); 106 ScopedJavaLocalRef<jobject>(env, message)))));
109 } 107 }
110 108
109 void AwContents::RunJavaScriptDialog(
110 content::JavaScriptMessageType message_type,
111 const GURL& origin_url,
112 const string16& message_text,
113 const string16& default_prompt_text,
114 const base::android::ScopedJavaLocalRef<jobject>& js_result) {
115 JNIEnv* env = base::android::AttachCurrentThread();
116
117 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
118 if (obj.is_null())
119 return;
120
121 ScopedJavaLocalRef<jstring> jurl(ConvertUTF8ToJavaString(
122 env, origin_url.spec()));
123 ScopedJavaLocalRef<jstring> jmessage(ConvertUTF16ToJavaString(
124 env, message_text));
125 switch (message_type) {
126 case content::JAVASCRIPT_MESSAGE_TYPE_ALERT:
127 Java_AwContents_handleJsAlert(
128 env, obj.obj(), jurl.obj(), jmessage.obj(), js_result.obj());
129 break;
130 case content::JAVASCRIPT_MESSAGE_TYPE_CONFIRM:
131 Java_AwContents_handleJsConfirm(
132 env, obj.obj(), jurl.obj(), jmessage.obj(), js_result.obj());
133 break;
134 case content::JAVASCRIPT_MESSAGE_TYPE_PROMPT: {
135 ScopedJavaLocalRef<jstring> jdefault_value(
136 ConvertUTF16ToJavaString(env, default_prompt_text));
137 Java_AwContents_handleJsPrompt(
138 env, obj.obj(), jurl.obj(), jmessage.obj(),
139 jdefault_value.obj(), js_result.obj());
140 break;
141 }
142 default:
143 NOTREACHED();
144 }
145 }
146
147 void AwContents::RunBeforeUnloadDialog(
148 const GURL& origin_url,
149 const string16& message_text,
150 const base::android::ScopedJavaLocalRef<jobject>& js_result) {
151 JNIEnv* env = base::android::AttachCurrentThread();
152
153 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
154 if (obj.is_null())
155 return;
156
157 ScopedJavaLocalRef<jstring> jurl(ConvertUTF8ToJavaString(
158 env, origin_url.spec()));
159 ScopedJavaLocalRef<jstring> jmessage(ConvertUTF16ToJavaString(
160 env, message_text));
161 Java_AwContents_handleJsBeforeUnload(
162 env, obj.obj(), jurl.obj(), jmessage.obj(), js_result.obj());
163 }
164
111 void AwContents::onReceivedHttpAuthRequest( 165 void AwContents::onReceivedHttpAuthRequest(
112 const base::android::JavaRef<jobject>& handler, 166 const base::android::JavaRef<jobject>& handler,
113 const std::string& host, 167 const std::string& host,
114 const std::string& realm) { 168 const std::string& realm) {
115 JNIEnv* env = AttachCurrentThread(); 169 JNIEnv* env = AttachCurrentThread();
116 ScopedJavaLocalRef<jstring> jhost = ConvertUTF8ToJavaString(env, host); 170 ScopedJavaLocalRef<jstring> jhost = ConvertUTF8ToJavaString(env, host);
117 ScopedJavaLocalRef<jstring> jrealm = ConvertUTF8ToJavaString(env, realm); 171 ScopedJavaLocalRef<jstring> jrealm = ConvertUTF8ToJavaString(env, realm);
118 Java_AwContents_onReceivedHttpAuthRequest(env, java_ref_.get(env).obj(), 172 Java_AwContents_onReceivedHttpAuthRequest(env, java_ref_.get(env).obj(),
119 handler.obj(), jhost.obj(), 173 handler.obj(), jhost.obj(),
120 jrealm.obj()); 174 jrealm.obj());
(...skipping 14 matching lines...) Expand all
135 private_browsing); 189 private_browsing);
136 return reinterpret_cast<jint>(tab); 190 return reinterpret_cast<jint>(tab);
137 } 191 }
138 192
139 bool RegisterAwContents(JNIEnv* env) { 193 bool RegisterAwContents(JNIEnv* env) {
140 return RegisterNativesImpl(env) >= 0; 194 return RegisterNativesImpl(env) >= 0;
141 } 195 }
142 196
143 197
144 } // namespace android_webview 198 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/native/aw_contents.h ('k') | android_webview/native/aw_javascript_dialog_creator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698