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 |