| 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 |