Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(143)

Side by Side Diff: content/browser/frame_host/navigation_parameters.cc

Issue 483773002: PlzNavigate: implement CommitNavigation on the browser side (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added a class to keep track of navigation parameters Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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 &current_history_list_offset_,
64 &current_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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698