Index: content/browser/frame_host/navigation_parameters.cc |
diff --git a/content/browser/frame_host/navigation_parameters.cc b/content/browser/frame_host/navigation_parameters.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..71f80ca1cea6be4a124b4ae83cb2f8c996041387 |
--- /dev/null |
+++ b/content/browser/frame_host/navigation_parameters.cc |
@@ -0,0 +1,116 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "content/browser/frame_host/navigation_parameters.h" |
+ |
+#include "content/browser/frame_host/navigation_before_commit_info.h" |
+#include "content/browser/frame_host/navigation_controller_impl.h" |
+#include "content/browser/frame_host/navigation_entry_impl.h" |
+#include "content/common/frame_messages.h" |
+#include "net/base/load_flags.h" |
+ |
+namespace content { |
+ |
+namespace { |
+ |
+// Returns the net load flags to use based on the navigation type. |
+int LoadFlagFromNavigationType(FrameMsg_Navigate_Type::Value navigation_type) { |
+ int load_flags = net::LOAD_NORMAL; |
+ switch (navigation_type) { |
+ case FrameMsg_Navigate_Type::RELOAD: |
+ case FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL: |
+ load_flags |= net::LOAD_VALIDATE_CACHE; |
+ break; |
+ case FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE: |
+ load_flags |= net::LOAD_BYPASS_CACHE; |
+ break; |
+ case FrameMsg_Navigate_Type::RESTORE: |
+ load_flags |= net::LOAD_PREFERRING_CACHE; |
+ break; |
+ case FrameMsg_Navigate_Type::RESTORE_WITH_POST: |
+ load_flags |= net::LOAD_ONLY_FROM_CACHE; |
+ break; |
+ case FrameMsg_Navigate_Type::NORMAL: |
+ default : |
+ break; |
+ } |
+ return load_flags; |
+} |
+ |
+} |
+ |
+NavigationParameters::NavigationParameters( |
+ const NavigationEntryImpl& entry, |
+ NavigationControllerImpl* controller, |
+ base::TimeTicks navigation_start, |
+ FrameMsg_Navigate_Type::Value navigation_type) |
+ : url_(entry.GetURL()), |
+ is_post_(entry.GetHasPostData()), |
+ page_id_(entry.GetPageID()), |
+ should_clear_history_list_(entry.should_clear_history_list()), |
+ referrer_(entry.GetReferrer()), |
+ transition_(entry.GetTransitionType()), |
+ page_state_(entry.GetPageState()), |
+ navigation_type_(navigation_type), |
+ is_overriding_user_agent_(entry.GetIsOverridingUserAgent()), |
+ should_replace_current_entry_(entry.should_replace_entry()), |
+ allow_download_(!entry.IsViewSourceMode()), |
+ browser_navigation_start_(navigation_start) { |
+ controller->FillHistoryParametersForNavigationEntry( |
+ entry, |
+ &pending_history_list_offset_, |
+ ¤t_history_list_offset_, |
+ ¤t_history_list_length_); |
+} |
+ |
+NavigationParameters::~NavigationParameters() { |
+} |
+ |
+void NavigationParameters::UpdateFromBeginNavigationParams( |
+ const FrameHostMsg_BeginNavigation_Params& begin_navigation_params) { |
+ referrer_ = begin_navigation_params.referrer; |
+ transition_ = begin_navigation_params.transition_type; |
+} |
+ |
+void NavigationParameters::UpdateFromCommitInfo( |
+ const NavigationBeforeCommitInfo& commit_info) { |
+ url_ = commit_info.navigation_url; |
+ stream_url_ = commit_info.stream_url; |
+} |
+ |
+FrameHostMsg_BeginNavigation_Params |
+NavigationParameters::SimulateRendererResponse() const { |
+ FrameHostMsg_BeginNavigation_Params begin_navigation_params; |
+ begin_navigation_params.method = is_post_ ? "POST" : "GET"; |
+ begin_navigation_params.url = url_; |
+ begin_navigation_params.referrer = referrer_; |
+ begin_navigation_params.load_flags = |
+ LoadFlagFromNavigationType(navigation_type_); |
+ |
+ // TODO(clamy): Post data from the browser should be put in the request body. |
+ |
+ begin_navigation_params.has_user_gesture = false; |
+ begin_navigation_params.transition_type = transition_; |
+ return begin_navigation_params; |
+} |
+ |
+FrameMsg_CommitNavigation_Params |
+NavigationParameters::MakeCommitNavigationParams() const { |
+ FrameMsg_CommitNavigation_Params params; |
+ params.url = url_; |
+ params.stream_url = stream_url_; |
+ params.page_id = page_id_; |
+ params.pending_history_list_offset = pending_history_list_offset_; |
+ params.current_history_list_offset = current_history_list_offset_; |
+ params.current_history_list_length = current_history_list_length_; |
+ params.should_clear_history_list = should_clear_history_list_; |
+ params.referrer = referrer_; |
+ params.transition = transition_; |
+ params.page_state = page_state_; |
+ params.navigation_type = navigation_type_; |
+ params.is_overriding_user_agent = is_overriding_user_agent_; |
+ params.browser_navigation_start = browser_navigation_start_; |
+ return params; |
+} |
(Do not use) nasko
2014/09/05 17:04:48
nit: extra empty line needed
|
+} // namespace content |