Index: chrome/browser/ui/browser_navigator.cc |
=================================================================== |
--- chrome/browser/ui/browser_navigator.cc (revision 214769) |
+++ chrome/browser/ui/browser_navigator.cc (working copy) |
@@ -7,6 +7,7 @@ |
#include <algorithm> |
#include "base/command_line.h" |
+#include "base/memory/ref_counted_memory.h" |
#include "base/prefs/pref_service.h" |
#include "base/strings/stringprintf.h" |
#include "base/strings/utf_string_conversions.h" |
@@ -45,6 +46,7 @@ |
#endif |
using content::GlobalRequestID; |
+using content::NavigationController; |
using content::WebContents; |
class BrowserNavigatorWebContentsAdoption { |
@@ -243,7 +245,7 @@ |
void LoadURLInContents(WebContents* target_contents, |
const GURL& url, |
chrome::NavigateParams* params) { |
- content::NavigationController::LoadURLParams load_url_params(url); |
+ NavigationController::LoadURLParams load_url_params(url); |
load_url_params.referrer = params->referrer; |
load_url_params.transition_type = params->transition; |
load_url_params.extra_headers = params->extra_headers; |
@@ -257,6 +259,14 @@ |
} else if (params->is_renderer_initiated) { |
load_url_params.is_renderer_initiated = true; |
} |
+ |
+ if (params->uses_post) { |
+ // Only allows the user-initiated navigation to use POST? |
+ load_url_params.load_type = |
+ NavigationController::LOAD_TYPE_BROWSER_INITIATED_HTTP_POST; |
+ load_url_params.browser_initiated_post_data = |
+ base::RefCountedString::TakeString(¶ms->post_data); |
+ } |
target_contents->GetController().LoadURLWithParams(load_url_params); |
} |
@@ -393,7 +403,8 @@ |
browser(a_browser), |
initiating_profile(NULL), |
host_desktop_type(GetHostDesktop(a_browser)), |
- should_replace_current_entry(false) { |
+ should_replace_current_entry(false), |
+ uses_post(false) { |
} |
NavigateParams::NavigateParams(Browser* a_browser, |
@@ -412,7 +423,8 @@ |
browser(a_browser), |
initiating_profile(NULL), |
host_desktop_type(GetHostDesktop(a_browser)), |
- should_replace_current_entry(false) { |
+ should_replace_current_entry(false), |
+ uses_post(false) { |
} |
NavigateParams::NavigateParams(Profile* a_profile, |
@@ -433,7 +445,8 @@ |
browser(NULL), |
initiating_profile(a_profile), |
host_desktop_type(chrome::GetActiveDesktop()), |
- should_replace_current_entry(false) { |
+ should_replace_current_entry(false), |
+ uses_post(false) { |
} |
NavigateParams::~NavigateParams() {} |
@@ -449,6 +462,8 @@ |
params.transferred_global_request_id; |
nav_params->should_replace_current_entry = |
params.should_replace_current_entry; |
+ nav_params->uses_post = params.uses_post; |
+ nav_params->post_data = params.post_data; |
} |
void Navigate(NavigateParams* params) { |