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

Side by Side Diff: content/browser/android/content_view_core_impl.cc

Issue 10823207: Consolidate ContentViewCore::Load* functions (Closed) Base URL: http://git.chromium.org/chromium/src.git@cleanup_load
Patch Set: Fix #include. Fix #ifndef guard. Add java doc. Created 8 years, 4 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
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 "content/browser/android/content_view_core_impl.h" 5 #include "content/browser/android/content_view_core_impl.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_array.h" 8 #include "base/android/jni_array.h"
9 #include "base/android/jni_string.h" 9 #include "base/android/jni_string.h"
10 #include "base/android/scoped_java_ref.h" 10 #include "base/android/scoped_java_ref.h"
11 #include "base/json/json_writer.h" 11 #include "base/json/json_writer.h"
12 #include "content/browser/android/content_view_client.h" 12 #include "content/browser/android/content_view_client.h"
13 #include "content/browser/android/load_url_params.h"
13 #include "content/browser/android/touch_point.h" 14 #include "content/browser/android/touch_point.h"
14 #include "content/browser/renderer_host/java/java_bound_object.h" 15 #include "content/browser/renderer_host/java/java_bound_object.h"
15 #include "content/browser/renderer_host/java/java_bridge_dispatcher_host_manager .h" 16 #include "content/browser/renderer_host/java/java_bridge_dispatcher_host_manager .h"
16 #include "content/browser/renderer_host/render_view_host_impl.h" 17 #include "content/browser/renderer_host/render_view_host_impl.h"
17 #include "content/browser/renderer_host/render_widget_host_impl.h" 18 #include "content/browser/renderer_host/render_widget_host_impl.h"
18 #include "content/browser/renderer_host/render_widget_host_view_android.h" 19 #include "content/browser/renderer_host/render_widget_host_view_android.h"
19 #include "content/browser/web_contents/navigation_controller_impl.h" 20 #include "content/browser/web_contents/navigation_controller_impl.h"
20 #include "content/public/browser/browser_context.h" 21 #include "content/public/browser/browser_context.h"
21 #include "content/public/browser/interstitial_page.h" 22 #include "content/public/browser/interstitial_page.h"
22 #include "content/public/browser/notification_details.h" 23 #include "content/public/browser/notification_details.h"
23 #include "content/public/browser/notification_service.h" 24 #include "content/public/browser/notification_service.h"
24 #include "content/public/browser/notification_source.h" 25 #include "content/public/browser/notification_source.h"
25 #include "content/public/browser/notification_types.h" 26 #include "content/public/browser/notification_types.h"
26 #include "content/public/browser/web_contents.h" 27 #include "content/public/browser/web_contents.h"
28 #include "content/public/common/page_transition_types.h"
27 #include "jni/ContentViewCore_jni.h" 29 #include "jni/ContentViewCore_jni.h"
28 #include "third_party/WebKit/Source/WebKit/chromium/public/WebBindings.h" 30 #include "third_party/WebKit/Source/WebKit/chromium/public/WebBindings.h"
29 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" 31 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h"
30 #include "third_party/WebKit/Source/WebKit/chromium/public/android/WebInputEvent Factory.h" 32 #include "third_party/WebKit/Source/WebKit/chromium/public/android/WebInputEvent Factory.h"
31 #include "webkit/glue/webmenuitem.h" 33 #include "webkit/glue/webmenuitem.h"
32 34
33 using base::android::AttachCurrentThread; 35 using base::android::AttachCurrentThread;
34 using base::android::ConvertJavaStringToUTF16; 36 using base::android::ConvertJavaStringToUTF16;
37 using base::android::ConvertJavaStringToUTF8;
35 using base::android::ConvertUTF16ToJavaString; 38 using base::android::ConvertUTF16ToJavaString;
36 using base::android::ConvertUTF8ToJavaString; 39 using base::android::ConvertUTF8ToJavaString;
37 using base::android::GetClass; 40 using base::android::GetClass;
38 using base::android::HasField; 41 using base::android::HasField;
42 using base::android::JavaByteArrayToByteVector;
39 using base::android::ScopedJavaGlobalRef; 43 using base::android::ScopedJavaGlobalRef;
40 using base::android::ScopedJavaLocalRef; 44 using base::android::ScopedJavaLocalRef;
41 using WebKit::WebInputEvent; 45 using WebKit::WebInputEvent;
42 using WebKit::WebInputEventFactory; 46 using WebKit::WebInputEventFactory;
43 47
44 // Describes the type and enabled state of a select popup item. 48 // Describes the type and enabled state of a select popup item.
45 // Keep in sync with the value defined in SelectPopupDialog.java 49 // Keep in sync with the value defined in SelectPopupDialog.java
46 enum PopupItemType { 50 enum PopupItemType {
47 POPUP_ITEM_TYPE_GROUP = 0, 51 POPUP_ITEM_TYPE_GROUP = 0,
48 POPUP_ITEM_TYPE_DISABLED, 52 POPUP_ITEM_TYPE_DISABLED,
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 173
170 jint ContentViewCoreImpl::EvaluateJavaScript(JNIEnv* env, jobject obj, 174 jint ContentViewCoreImpl::EvaluateJavaScript(JNIEnv* env, jobject obj,
171 jstring script) { 175 jstring script) {
172 RenderViewHost* host = web_contents_->GetRenderViewHost(); 176 RenderViewHost* host = web_contents_->GetRenderViewHost();
173 177
174 string16 script_utf16 = ConvertJavaStringToUTF16(env, script); 178 string16 script_utf16 = ConvertJavaStringToUTF16(env, script);
175 return host->ExecuteJavascriptInWebFrameNotifyResult(string16(), 179 return host->ExecuteJavascriptInWebFrameNotifyResult(string16(),
176 script_utf16); 180 script_utf16);
177 } 181 }
178 182
179 void ContentViewCoreImpl::LoadUrlWithoutUrlSanitization(JNIEnv* env, 183 void ContentViewCoreImpl::LoadUrl(
180 jobject, 184 JNIEnv* env, jobject obj,
181 jstring jurl, 185 jstring url,
182 int page_transition) { 186 jint load_url_type,
183 GURL url(base::android::ConvertJavaStringToUTF8(env, jurl)); 187 jint transition_type,
188 jint ua_override_option,
189 jbyteArray post_data,
190 jstring base_url_for_data_url,
191 jstring virtual_url_for_data_url) {
192 DCHECK(url);
193 NavigationController::LoadURLParams params(
194 GURL(ConvertJavaStringToUTF8(env, url)));
184 195
185 LoadUrl(url, page_transition); 196 params.load_type = static_cast<NavigationController::LoadURLType>(
186 } 197 load_url_type);
198 params.transition_type = PageTransitionFromInt(transition_type);
199 params.override_user_agent =
200 static_cast<NavigationController::UserAgentOverrideOption>(
201 ua_override_option);
187 202
188 void ContentViewCoreImpl::LoadUrlWithoutUrlSanitizationWithUserAgentOverride( 203 if (post_data) {
189 JNIEnv* env, 204 std::vector<uint8> http_body_vector;
190 jobject, 205 JavaByteArrayToByteVector(env, post_data, &http_body_vector);
191 jstring jurl, 206 params.browser_initiated_post_data =
192 int page_transition, 207 base::RefCountedBytes::TakeVector(&http_body_vector);
193 jstring user_agent_override) { 208 }
194 GURL url(base::android::ConvertJavaStringToUTF8(env, jurl));
195 209
196 LoadUrlWithUserAgentOverride( 210 if (base_url_for_data_url)
197 url, 211 params.base_url_for_data_url =
198 page_transition, 212 GURL(ConvertJavaStringToUTF8(env, base_url_for_data_url));
199 base::android::ConvertJavaStringToUTF8(env, user_agent_override)); 213
214 if (virtual_url_for_data_url)
215 params.virtual_url_for_data_url =
216 GURL(ConvertJavaStringToUTF8(env, virtual_url_for_data_url));
217
218 LoadUrl(params);
200 } 219 }
201 220
202 ScopedJavaLocalRef<jstring> ContentViewCoreImpl::GetURL( 221 ScopedJavaLocalRef<jstring> ContentViewCoreImpl::GetURL(
203 JNIEnv* env, jobject) const { 222 JNIEnv* env, jobject) const {
204 return ConvertUTF8ToJavaString(env, web_contents()->GetURL().spec()); 223 return ConvertUTF8ToJavaString(env, web_contents()->GetURL().spec());
205 } 224 }
206 225
207 ScopedJavaLocalRef<jstring> ContentViewCoreImpl::GetTitle( 226 ScopedJavaLocalRef<jstring> ContentViewCoreImpl::GetTitle(
208 JNIEnv* env, jobject obj) const { 227 JNIEnv* env, jobject obj) const {
209 return ConvertUTF16ToJavaString(env, web_contents()->GetTitle()); 228 return ConvertUTF16ToJavaString(env, web_contents()->GetTitle());
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 jobject /* obj */, 412 jobject /* obj */,
394 jstring name) { 413 jstring name) {
395 web_contents_->java_bridge_dispatcher_host_manager()->RemoveNamedObject( 414 web_contents_->java_bridge_dispatcher_host_manager()->RemoveNamedObject(
396 ConvertJavaStringToUTF16(env, name)); 415 ConvertJavaStringToUTF16(env, name));
397 } 416 }
398 417
399 // -------------------------------------------------------------------------- 418 // --------------------------------------------------------------------------
400 // Methods called from native code 419 // Methods called from native code
401 // -------------------------------------------------------------------------- 420 // --------------------------------------------------------------------------
402 421
403 void ContentViewCoreImpl::LoadUrl(const GURL& url, int page_transition) { 422 void ContentViewCoreImpl::LoadUrl(
404 content::Referrer referer; 423 NavigationController::LoadURLParams& params) {
405 424 web_contents()->GetController().LoadURLWithParams(params);
406 web_contents()->GetController().LoadURL( 425 PostLoadUrl(params.url);
407 url, referer, content::PageTransitionFromInt(page_transition),
408 std::string());
409 PostLoadUrl(url);
410 }
411
412 void ContentViewCoreImpl::LoadUrlWithUserAgentOverride(
413 const GURL& url,
414 int page_transition,
415 const std::string& user_agent_override) {
416 web_contents()->SetUserAgentOverride(user_agent_override);
417 bool is_overriding_user_agent(!user_agent_override.empty());
418
419 content::NavigationController::LoadURLParams load_url_params(url);
420 load_url_params.transition_type =
421 content::PageTransitionFromInt(page_transition);
422 load_url_params.override_user_agent = is_overriding_user_agent ?
423 content::NavigationController::UA_OVERRIDE_TRUE :
424 content::NavigationController::UA_OVERRIDE_FALSE;
425
426 web_contents()->GetController().LoadURLWithParams(load_url_params);
427
428 PostLoadUrl(url);
429 } 426 }
430 427
431 void ContentViewCoreImpl::PostLoadUrl(const GURL& url) { 428 void ContentViewCoreImpl::PostLoadUrl(const GURL& url) {
432 tab_crashed_ = false; 429 tab_crashed_ = false;
433 // TODO(tedchoc): Update the content view client of the page load request. 430 // TODO(tedchoc): Update the content view client of the page load request.
434 } 431 }
435 432
436 // ---------------------------------------------------------------------------- 433 // ----------------------------------------------------------------------------
437 // Native JNI methods 434 // Native JNI methods
438 // ---------------------------------------------------------------------------- 435 // ----------------------------------------------------------------------------
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 if (!HasField(env, clazz, "mNativeContentViewCore", "I")) { 589 if (!HasField(env, clazz, "mNativeContentViewCore", "I")) {
593 DLOG(ERROR) << "Unable to find ContentView.mNativeContentViewCore!"; 590 DLOG(ERROR) << "Unable to find ContentView.mNativeContentViewCore!";
594 return false; 591 return false;
595 } 592 }
596 g_native_content_view = GetFieldID(env, clazz, "mNativeContentViewCore", "I"); 593 g_native_content_view = GetFieldID(env, clazz, "mNativeContentViewCore", "I");
597 594
598 return RegisterNativesImpl(env) >= 0; 595 return RegisterNativesImpl(env) >= 0;
599 } 596 }
600 597
601 } // namespace content 598 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698