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

Unified 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 side-by-side diff with in-line comments
Download patch
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_,
+ &current_history_list_offset_,
+ &current_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

Powered by Google App Engine
This is Rietveld 408576698