Chromium Code Reviews| 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 |