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 |