| 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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 return WebContentsDelegate::OpenURLFromTab(source, params); | 83 return WebContentsDelegate::OpenURLFromTab(source, params); |
| 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<jobject> post_data; |
| 94 if (params.uses_post && | 94 if (params.uses_post && params.post_data) |
| 95 params.browser_initiated_post_data.get() && | 95 post_data = params.post_data->ToJavaObject(env); |
| 96 params.browser_initiated_post_data.get()->size()) { | |
| 97 post_data = base::android::ToJavaByteArray( | |
| 98 env, params.browser_initiated_post_data.get()->front_as<uint8_t>(), | |
| 99 params.browser_initiated_post_data.get()->size()); | |
| 100 } | |
| 101 Java_WebContentsDelegateAndroid_openNewTab(env, | 96 Java_WebContentsDelegateAndroid_openNewTab(env, |
| 102 obj.obj(), | 97 obj.obj(), |
| 103 java_url.obj(), | 98 java_url.obj(), |
| 104 extra_headers.obj(), | 99 extra_headers.obj(), |
| 105 post_data.obj(), | 100 post_data.obj(), |
| 106 disposition, | 101 disposition, |
| 107 params.is_renderer_initiated); | 102 params.is_renderer_initiated); |
| 108 return NULL; | 103 return NULL; |
| 109 } | 104 } |
| 110 | 105 |
| 111 // content::OpenURLParams -> content::NavigationController::LoadURLParams | 106 // content::OpenURLParams -> content::NavigationController::LoadURLParams |
| 112 content::NavigationController::LoadURLParams load_params(url); | 107 content::NavigationController::LoadURLParams load_params(url); |
| 113 load_params.referrer = params.referrer; | 108 load_params.referrer = params.referrer; |
| 114 load_params.frame_tree_node_id = params.frame_tree_node_id; | 109 load_params.frame_tree_node_id = params.frame_tree_node_id; |
| 115 load_params.redirect_chain = params.redirect_chain; | 110 load_params.redirect_chain = params.redirect_chain; |
| 116 load_params.transition_type = params.transition; | 111 load_params.transition_type = params.transition; |
| 117 load_params.extra_headers = params.extra_headers; | 112 load_params.extra_headers = params.extra_headers; |
| 118 load_params.should_replace_current_entry = | 113 load_params.should_replace_current_entry = |
| 119 params.should_replace_current_entry; | 114 params.should_replace_current_entry; |
| 120 load_params.is_renderer_initiated = params.is_renderer_initiated; | 115 load_params.is_renderer_initiated = params.is_renderer_initiated; |
| 121 | 116 |
| 122 // Only allows the browser-initiated navigation to use POST. | 117 if (params.uses_post) { |
| 123 if (params.uses_post && !params.is_renderer_initiated) { | 118 load_params.load_type = content::NavigationController::LOAD_TYPE_HTTP_POST; |
| 124 load_params.load_type = | 119 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 } | 120 } |
| 129 | 121 |
| 130 source->GetController().LoadURLWithParams(load_params); | 122 source->GetController().LoadURLWithParams(load_params); |
| 131 | 123 |
| 132 return source; | 124 return source; |
| 133 } | 125 } |
| 134 | 126 |
| 135 void WebContentsDelegateAndroid::NavigationStateChanged( | 127 void WebContentsDelegateAndroid::NavigationStateChanged( |
| 136 WebContents* source, content::InvalidateTypes changed_flags) { | 128 WebContents* source, content::InvalidateTypes changed_flags) { |
| 137 JNIEnv* env = AttachCurrentThread(); | 129 JNIEnv* env = AttachCurrentThread(); |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 // Native JNI methods | 429 // Native JNI methods |
| 438 // ---------------------------------------------------------------------------- | 430 // ---------------------------------------------------------------------------- |
| 439 | 431 |
| 440 // Register native methods | 432 // Register native methods |
| 441 | 433 |
| 442 bool RegisterWebContentsDelegateAndroid(JNIEnv* env) { | 434 bool RegisterWebContentsDelegateAndroid(JNIEnv* env) { |
| 443 return RegisterNativesImpl(env); | 435 return RegisterNativesImpl(env); |
| 444 } | 436 } |
| 445 | 437 |
| 446 } // namespace web_contents_delegate_android | 438 } // namespace web_contents_delegate_android |
| OLD | NEW |