Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "content/browser/frame_host/navigation_parameters.h" | |
| 6 | |
| 7 #include "content/browser/frame_host/navigation_before_commit_info.h" | |
| 8 #include "content/browser/frame_host/navigation_controller_impl.h" | |
| 9 #include "content/browser/frame_host/navigation_entry_impl.h" | |
| 10 #include "content/common/frame_messages.h" | |
| 11 #include "net/base/load_flags.h" | |
| 12 | |
| 13 namespace content { | |
| 14 | |
| 15 namespace { | |
| 16 | |
| 17 // Returns the net load flags to use based on the navigation type. | |
| 18 int LoadFlagFromNavigationType(FrameMsg_Navigate_Type::Value navigation_type) { | |
| 19 int load_flags = net::LOAD_NORMAL; | |
| 20 switch (navigation_type) { | |
| 21 case FrameMsg_Navigate_Type::RELOAD: | |
| 22 case FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL: | |
| 23 load_flags |= net::LOAD_VALIDATE_CACHE; | |
| 24 break; | |
| 25 case FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE: | |
| 26 load_flags |= net::LOAD_BYPASS_CACHE; | |
| 27 break; | |
| 28 case FrameMsg_Navigate_Type::RESTORE: | |
| 29 load_flags |= net::LOAD_PREFERRING_CACHE; | |
| 30 break; | |
| 31 case FrameMsg_Navigate_Type::RESTORE_WITH_POST: | |
| 32 load_flags |= net::LOAD_ONLY_FROM_CACHE; | |
| 33 break; | |
| 34 case FrameMsg_Navigate_Type::NORMAL: | |
| 35 default : | |
| 36 break; | |
| 37 } | |
| 38 return load_flags; | |
| 39 } | |
| 40 | |
| 41 } | |
| 42 | |
| 43 NavigationParameters::NavigationParameters( | |
| 44 const NavigationEntryImpl& entry, | |
| 45 NavigationControllerImpl* controller, | |
| 46 base::TimeTicks navigation_start, | |
| 47 FrameMsg_Navigate_Type::Value navigation_type) | |
| 48 : url_(entry.GetURL()), | |
| 49 is_post_(entry.GetHasPostData()), | |
| 50 page_id_(entry.GetPageID()), | |
| 51 should_clear_history_list_(entry.should_clear_history_list()), | |
| 52 referrer_(entry.GetReferrer()), | |
| 53 transition_(entry.GetTransitionType()), | |
| 54 page_state_(entry.GetPageState()), | |
| 55 navigation_type_(navigation_type), | |
| 56 is_overriding_user_agent_(entry.GetIsOverridingUserAgent()), | |
| 57 should_replace_current_entry_(entry.should_replace_entry()), | |
| 58 allow_download_(!entry.IsViewSourceMode()), | |
| 59 browser_navigation_start_(navigation_start) { | |
| 60 controller->FillHistoryParametersForNavigationEntry( | |
| 61 entry, | |
| 62 &pending_history_list_offset_, | |
| 63 ¤t_history_list_offset_, | |
| 64 ¤t_history_list_length_); | |
| 65 } | |
| 66 | |
| 67 NavigationParameters::~NavigationParameters() { | |
| 68 } | |
| 69 | |
| 70 void NavigationParameters::UpdateFromBeginNavigationParams( | |
| 71 const FrameHostMsg_BeginNavigation_Params& begin_navigation_params) { | |
| 72 referrer_ = begin_navigation_params.referrer; | |
| 73 transition_ = begin_navigation_params.transition_type; | |
| 74 } | |
| 75 | |
| 76 void NavigationParameters::UpdateFromCommitInfo( | |
| 77 const NavigationBeforeCommitInfo& commit_info) { | |
| 78 url_ = commit_info.navigation_url; | |
| 79 stream_url_ = commit_info.stream_url; | |
| 80 } | |
| 81 | |
| 82 FrameHostMsg_BeginNavigation_Params | |
| 83 NavigationParameters::SimulateRendererResponse() const { | |
| 84 FrameHostMsg_BeginNavigation_Params begin_navigation_params; | |
| 85 begin_navigation_params.method = is_post_ ? "POST" : "GET"; | |
| 86 begin_navigation_params.url = url_; | |
| 87 begin_navigation_params.referrer = referrer_; | |
| 88 begin_navigation_params.load_flags = | |
| 89 LoadFlagFromNavigationType(navigation_type_); | |
| 90 | |
| 91 // TODO(clamy): Post data from the browser should be put in the request body. | |
| 92 | |
| 93 begin_navigation_params.has_user_gesture = false; | |
| 94 begin_navigation_params.transition_type = transition_; | |
| 95 return begin_navigation_params; | |
| 96 } | |
| 97 | |
| 98 FrameMsg_CommitNavigation_Params | |
| 99 NavigationParameters::MakeCommitNavigationParams() const { | |
| 100 FrameMsg_CommitNavigation_Params params; | |
| 101 params.url = url_; | |
| 102 params.stream_url = stream_url_; | |
| 103 params.page_id = page_id_; | |
| 104 params.pending_history_list_offset = pending_history_list_offset_; | |
| 105 params.current_history_list_offset = current_history_list_offset_; | |
| 106 params.current_history_list_length = current_history_list_length_; | |
| 107 params.should_clear_history_list = should_clear_history_list_; | |
| 108 params.referrer = referrer_; | |
| 109 params.transition = transition_; | |
| 110 params.page_state = page_state_; | |
| 111 params.navigation_type = navigation_type_; | |
| 112 params.is_overriding_user_agent = is_overriding_user_agent_; | |
| 113 params.browser_navigation_start = browser_navigation_start_; | |
| 114 return params; | |
| 115 } | |
|
(Do not use) nasko
2014/09/05 17:04:48
nit: extra empty line needed
| |
| 116 } // namespace content | |
| OLD | NEW |