OLD | NEW |
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 "components/web_contents_delegate_android/web_contents_delegate_android
.h" | 5 #include "components/web_contents_delegate_android/web_contents_delegate_android
.h" |
6 | 6 |
7 #include <android/keycodes.h> | 7 #include <android/keycodes.h> |
8 | 8 |
9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
10 #include "base/android/jni_array.h" | 10 #include "base/android/jni_array.h" |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 | 84 |
85 if (disposition == NEW_FOREGROUND_TAB || | 85 if (disposition == NEW_FOREGROUND_TAB || |
86 disposition == NEW_BACKGROUND_TAB || | 86 disposition == NEW_BACKGROUND_TAB || |
87 disposition == OFF_THE_RECORD) { | 87 disposition == OFF_THE_RECORD) { |
88 JNIEnv* env = AttachCurrentThread(); | 88 JNIEnv* env = AttachCurrentThread(); |
89 ScopedJavaLocalRef<jstring> java_url = | 89 ScopedJavaLocalRef<jstring> java_url = |
90 ConvertUTF8ToJavaString(env, url.spec()); | 90 ConvertUTF8ToJavaString(env, url.spec()); |
91 ScopedJavaLocalRef<jstring> extra_headers = | 91 ScopedJavaLocalRef<jstring> extra_headers = |
92 ConvertUTF8ToJavaString(env, params.extra_headers); | 92 ConvertUTF8ToJavaString(env, params.extra_headers); |
93 ScopedJavaLocalRef<jbyteArray> post_data; | 93 ScopedJavaLocalRef<jbyteArray> post_data; |
94 if (params.uses_post && | 94 LOG(ERROR) << "LUKASZA: WebContentsDelegateAndroid::OpenURLFromTab" |
95 params.browser_initiated_post_data.get() && | 95 << ": uses_post=" << static_cast<bool>(params.uses_post) |
96 params.browser_initiated_post_data.get()->size()) { | 96 << ": post_data=" << static_cast<bool>(params.post_data); |
97 post_data = base::android::ToJavaByteArray( | 97 if (params.uses_post && params.post_data) { |
98 env, params.browser_initiated_post_data.get()->front_as<uint8_t>(), | 98 CHECK(false); |
99 params.browser_initiated_post_data.get()->size()); | 99 post_data = params.post_data->ToJavaByteArray(env); |
100 } | 100 } |
101 Java_WebContentsDelegateAndroid_openNewTab(env, | 101 Java_WebContentsDelegateAndroid_openNewTab(env, |
102 obj.obj(), | 102 obj.obj(), |
103 java_url.obj(), | 103 java_url.obj(), |
104 extra_headers.obj(), | 104 extra_headers.obj(), |
105 post_data.obj(), | 105 post_data.obj(), |
106 disposition, | 106 disposition, |
107 params.is_renderer_initiated); | 107 params.is_renderer_initiated); |
108 return NULL; | 108 return NULL; |
109 } | 109 } |
110 | 110 |
111 // content::OpenURLParams -> content::NavigationController::LoadURLParams | 111 // content::OpenURLParams -> content::NavigationController::LoadURLParams |
112 content::NavigationController::LoadURLParams load_params(url); | 112 content::NavigationController::LoadURLParams load_params(url); |
113 load_params.referrer = params.referrer; | 113 load_params.referrer = params.referrer; |
114 load_params.frame_tree_node_id = params.frame_tree_node_id; | 114 load_params.frame_tree_node_id = params.frame_tree_node_id; |
115 load_params.redirect_chain = params.redirect_chain; | 115 load_params.redirect_chain = params.redirect_chain; |
116 load_params.transition_type = params.transition; | 116 load_params.transition_type = params.transition; |
117 load_params.extra_headers = params.extra_headers; | 117 load_params.extra_headers = params.extra_headers; |
118 load_params.should_replace_current_entry = | 118 load_params.should_replace_current_entry = |
119 params.should_replace_current_entry; | 119 params.should_replace_current_entry; |
120 load_params.is_renderer_initiated = params.is_renderer_initiated; | 120 load_params.is_renderer_initiated = params.is_renderer_initiated; |
121 | 121 |
122 // Only allows the browser-initiated navigation to use POST. | 122 if (params.uses_post) { |
123 if (params.uses_post && !params.is_renderer_initiated) { | 123 load_params.load_type = content::NavigationController::LOAD_TYPE_HTTP_POST; |
124 load_params.load_type = | 124 load_params.post_data = params.post_data; |
125 content::NavigationController::LOAD_TYPE_BROWSER_INITIATED_HTTP_POST; | |
126 load_params.browser_initiated_post_data = | |
127 params.browser_initiated_post_data; | |
128 } | 125 } |
129 | 126 |
130 source->GetController().LoadURLWithParams(load_params); | 127 source->GetController().LoadURLWithParams(load_params); |
131 | 128 |
132 return source; | 129 return source; |
133 } | 130 } |
134 | 131 |
135 void WebContentsDelegateAndroid::NavigationStateChanged( | 132 void WebContentsDelegateAndroid::NavigationStateChanged( |
136 WebContents* source, content::InvalidateTypes changed_flags) { | 133 WebContents* source, content::InvalidateTypes changed_flags) { |
137 JNIEnv* env = AttachCurrentThread(); | 134 JNIEnv* env = AttachCurrentThread(); |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
437 // Native JNI methods | 434 // Native JNI methods |
438 // ---------------------------------------------------------------------------- | 435 // ---------------------------------------------------------------------------- |
439 | 436 |
440 // Register native methods | 437 // Register native methods |
441 | 438 |
442 bool RegisterWebContentsDelegateAndroid(JNIEnv* env) { | 439 bool RegisterWebContentsDelegateAndroid(JNIEnv* env) { |
443 return RegisterNativesImpl(env); | 440 return RegisterNativesImpl(env); |
444 } | 441 } |
445 | 442 |
446 } // namespace web_contents_delegate_android | 443 } // namespace web_contents_delegate_android |
OLD | NEW |