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

Side by Side Diff: chrome/browser/android/tab_android.cc

Issue 2038233002: Using ResourceRequestBody as the type of HTTP body outside of //content. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@make-resource-request-body-public
Patch Set: Rebasing... Created 4 years, 6 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
« no previous file with comments | « chrome/browser/android/tab_android.h ('k') | chrome/browser/prerender/prerender_browsertest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 "chrome/browser/android/tab_android.h" 5 #include "chrome/browser/android/tab_android.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/android/jni_android.h" 9 #include "base/android/jni_android.h"
10 #include "base/android/jni_array.h"
11 #include "base/android/jni_string.h" 10 #include "base/android/jni_string.h"
12 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
13 #include "base/metrics/histogram.h" 12 #include "base/metrics/histogram.h"
14 #include "base/trace_event/trace_event.h" 13 #include "base/trace_event/trace_event.h"
15 #include "cc/layers/layer.h" 14 #include "cc/layers/layer.h"
16 #include "chrome/browser/android/compositor/tab_content_manager.h" 15 #include "chrome/browser/android/compositor/tab_content_manager.h"
17 #include "chrome/browser/android/metrics/uma_utils.h" 16 #include "chrome/browser/android/metrics/uma_utils.h"
18 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h" 17 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h"
19 #include "chrome/browser/android/offline_pages/offline_page_utils.h" 18 #include "chrome/browser/android/offline_pages/offline_page_utils.h"
20 #include "chrome/browser/android/tab_web_contents_delegate_android.h" 19 #include "chrome/browser/android/tab_web_contents_delegate_android.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 #include "content/public/browser/android/content_view_core.h" 68 #include "content/public/browser/android/content_view_core.h"
70 #include "content/public/browser/browser_thread.h" 69 #include "content/public/browser/browser_thread.h"
71 #include "content/public/browser/interstitial_page.h" 70 #include "content/public/browser/interstitial_page.h"
72 #include "content/public/browser/navigation_entry.h" 71 #include "content/public/browser/navigation_entry.h"
73 #include "content/public/browser/notification_service.h" 72 #include "content/public/browser/notification_service.h"
74 #include "content/public/browser/render_frame_host.h" 73 #include "content/public/browser/render_frame_host.h"
75 #include "content/public/browser/render_process_host.h" 74 #include "content/public/browser/render_process_host.h"
76 #include "content/public/browser/render_view_host.h" 75 #include "content/public/browser/render_view_host.h"
77 #include "content/public/browser/user_metrics.h" 76 #include "content/public/browser/user_metrics.h"
78 #include "content/public/browser/web_contents.h" 77 #include "content/public/browser/web_contents.h"
78 #include "content/public/common/resource_request_body.h"
79 #include "content/public/common/top_controls_state.h" 79 #include "content/public/common/top_controls_state.h"
80 #include "jni/Tab_jni.h" 80 #include "jni/Tab_jni.h"
81 #include "net/base/escape.h" 81 #include "net/base/escape.h"
82 #include "skia/ext/image_operations.h" 82 #include "skia/ext/image_operations.h"
83 #include "third_party/WebKit/public/platform/WebReferrerPolicy.h" 83 #include "third_party/WebKit/public/platform/WebReferrerPolicy.h"
84 #include "ui/base/resource/resource_bundle.h" 84 #include "ui/base/resource/resource_bundle.h"
85 #include "ui/base/window_open_disposition.h" 85 #include "ui/base/window_open_disposition.h"
86 #include "ui/gfx/android/device_display_info.h" 86 #include "ui/gfx/android/device_display_info.h"
87 #include "ui/gfx/android/java_bitmap.h" 87 #include "ui/gfx/android/java_bitmap.h"
88 #include "ui/gfx/favicon_size.h" 88 #include "ui/gfx/favicon_size.h"
89 #include "ui/gfx/image/image_skia.h" 89 #include "ui/gfx/image/image_skia.h"
90 90
91 using base::android::AttachCurrentThread; 91 using base::android::AttachCurrentThread;
92 using base::android::ConvertUTF8ToJavaString; 92 using base::android::ConvertUTF8ToJavaString;
93 using base::android::ToJavaByteArray;
94 using content::BrowserThread; 93 using content::BrowserThread;
95 using content::GlobalRequestID; 94 using content::GlobalRequestID;
96 using content::NavigationController; 95 using content::NavigationController;
97 using content::WebContents; 96 using content::WebContents;
98 using navigation_interception::InterceptNavigationDelegate; 97 using navigation_interception::InterceptNavigationDelegate;
99 using navigation_interception::NavigationParams; 98 using navigation_interception::NavigationParams;
100 99
101 TabAndroid* TabAndroid::FromWebContents(content::WebContents* web_contents) { 100 TabAndroid* TabAndroid::FromWebContents(content::WebContents* web_contents) {
102 CoreTabHelper* core_tab_helper = CoreTabHelper::FromWebContents(web_contents); 101 CoreTabHelper* core_tab_helper = CoreTabHelper::FromWebContents(web_contents);
103 if (!core_tab_helper) 102 if (!core_tab_helper)
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 if (disposition == NEW_POPUP || 214 if (disposition == NEW_POPUP ||
216 disposition == NEW_FOREGROUND_TAB || 215 disposition == NEW_FOREGROUND_TAB ||
217 disposition == NEW_BACKGROUND_TAB || 216 disposition == NEW_BACKGROUND_TAB ||
218 disposition == NEW_WINDOW || 217 disposition == NEW_WINDOW ||
219 disposition == OFF_THE_RECORD) { 218 disposition == OFF_THE_RECORD) {
220 JNIEnv* env = AttachCurrentThread(); 219 JNIEnv* env = AttachCurrentThread();
221 ScopedJavaLocalRef<jobject> jobj = weak_java_tab_.get(env); 220 ScopedJavaLocalRef<jobject> jobj = weak_java_tab_.get(env);
222 ScopedJavaLocalRef<jstring> jurl(ConvertUTF8ToJavaString(env, url.spec())); 221 ScopedJavaLocalRef<jstring> jurl(ConvertUTF8ToJavaString(env, url.spec()));
223 ScopedJavaLocalRef<jstring> jheaders( 222 ScopedJavaLocalRef<jstring> jheaders(
224 ConvertUTF8ToJavaString(env, params->extra_headers)); 223 ConvertUTF8ToJavaString(env, params->extra_headers));
225 ScopedJavaLocalRef<jbyteArray> jpost_data; 224 ScopedJavaLocalRef<jobject> jpost_data;
226 if (params->uses_post && 225 if (params->uses_post && params->post_data)
227 params->browser_initiated_post_data.get() && 226 jpost_data = params->post_data->ToJavaObject(env);
228 params->browser_initiated_post_data.get()->size()) {
229 jpost_data = ToJavaByteArray(
230 env, reinterpret_cast<const uint8_t*>(
231 params->browser_initiated_post_data.get()->front()),
232 params->browser_initiated_post_data.get()->size());
233 }
234 Java_Tab_openNewTab(env, 227 Java_Tab_openNewTab(env,
235 jobj.obj(), 228 jobj.obj(),
236 jurl.obj(), 229 jurl.obj(),
237 jheaders.obj(), 230 jheaders.obj(),
238 jpost_data.obj(), 231 jpost_data.obj(),
239 disposition, 232 disposition,
240 params->created_with_opener, 233 params->created_with_opener,
241 params->is_renderer_initiated); 234 params->is_renderer_initiated);
242 } else { 235 } else {
243 NOTIMPLEMENTED(); 236 NOTIMPLEMENTED();
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 return base::android::ScopedJavaLocalRef<jobject>(); 505 return base::android::ScopedJavaLocalRef<jobject>();
513 506
514 return profile_android->GetJavaObject(); 507 return profile_android->GetJavaObject();
515 } 508 }
516 509
517 TabAndroid::TabLoadStatus TabAndroid::LoadUrl( 510 TabAndroid::TabLoadStatus TabAndroid::LoadUrl(
518 JNIEnv* env, 511 JNIEnv* env,
519 const JavaParamRef<jobject>& obj, 512 const JavaParamRef<jobject>& obj,
520 const JavaParamRef<jstring>& url, 513 const JavaParamRef<jstring>& url,
521 const JavaParamRef<jstring>& j_extra_headers, 514 const JavaParamRef<jstring>& j_extra_headers,
522 const JavaParamRef<jbyteArray>& j_post_data, 515 const JavaParamRef<jobject>& j_post_data,
523 jint page_transition, 516 jint page_transition,
524 const JavaParamRef<jstring>& j_referrer_url, 517 const JavaParamRef<jstring>& j_referrer_url,
525 jint referrer_policy, 518 jint referrer_policy,
526 jboolean is_renderer_initiated, 519 jboolean is_renderer_initiated,
527 jboolean should_replace_current_entry, 520 jboolean should_replace_current_entry,
528 jlong intent_received_timestamp, 521 jlong intent_received_timestamp,
529 jboolean has_user_gesture) { 522 jboolean has_user_gesture) {
530 if (!web_contents()) 523 if (!web_contents())
531 return PAGE_LOAD_FAILED; 524 return PAGE_LOAD_FAILED;
532 525
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
580 } 573 }
581 574
582 content::NavigationController::LoadURLParams load_params(fixed_url); 575 content::NavigationController::LoadURLParams load_params(fixed_url);
583 if (j_extra_headers) { 576 if (j_extra_headers) {
584 load_params.extra_headers = base::android::ConvertJavaStringToUTF8( 577 load_params.extra_headers = base::android::ConvertJavaStringToUTF8(
585 env, 578 env,
586 j_extra_headers); 579 j_extra_headers);
587 } 580 }
588 if (j_post_data) { 581 if (j_post_data) {
589 load_params.load_type = 582 load_params.load_type =
590 content::NavigationController::LOAD_TYPE_BROWSER_INITIATED_HTTP_POST; 583 content::NavigationController::LOAD_TYPE_HTTP_POST;
591 std::vector<uint8_t> post_data; 584 load_params.post_data =
592 base::android::JavaByteArrayToByteVector(env, j_post_data, &post_data); 585 content::ResourceRequestBody::FromJavaObject(env, j_post_data);
593 load_params.browser_initiated_post_data =
594 base::RefCountedBytes::TakeVector(&post_data);
595 } 586 }
596 load_params.transition_type = 587 load_params.transition_type =
597 ui::PageTransitionFromInt(page_transition); 588 ui::PageTransitionFromInt(page_transition);
598 if (j_referrer_url) { 589 if (j_referrer_url) {
599 load_params.referrer = content::Referrer( 590 load_params.referrer = content::Referrer(
600 GURL(base::android::ConvertJavaStringToUTF8(env, j_referrer_url)), 591 GURL(base::android::ConvertJavaStringToUTF8(env, j_referrer_url)),
601 static_cast<blink::WebReferrerPolicy>(referrer_policy)); 592 static_cast<blink::WebReferrerPolicy>(referrer_policy));
602 } 593 }
603 const base::string16 search_terms = 594 const base::string16 search_terms =
604 search::ExtractSearchTermsFromURL(GetProfile(), gurl); 595 search::ExtractSearchTermsFromURL(GetProfile(), gurl);
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 static void Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { 901 static void Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
911 TRACE_EVENT0("native", "TabAndroid::Init"); 902 TRACE_EVENT0("native", "TabAndroid::Init");
912 // This will automatically bind to the Java object and pass ownership there. 903 // This will automatically bind to the Java object and pass ownership there.
913 new TabAndroid(env, obj); 904 new TabAndroid(env, obj);
914 } 905 }
915 906
916 // static 907 // static
917 bool TabAndroid::RegisterTabAndroid(JNIEnv* env) { 908 bool TabAndroid::RegisterTabAndroid(JNIEnv* env) {
918 return RegisterNativesImpl(env); 909 return RegisterNativesImpl(env);
919 } 910 }
OLDNEW
« no previous file with comments | « chrome/browser/android/tab_android.h ('k') | chrome/browser/prerender/prerender_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698