// 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. #ifndef CONTENT_COMMON_NAVIGATION_PARAMS_H_ #define CONTENT_COMMON_NAVIGATION_PARAMS_H_ #include #include "base/basictypes.h" #include "base/time/time.h" #include "content/common/content_export.h" #include "content/common/frame_message_enums.h" #include "content/public/common/page_state.h" #include "content/public/common/referrer.h" #include "ui/base/page_transition_types.h" #include "url/gurl.h" namespace base { class RefCountedMemory; } namespace content { class NavigationEntry; // The following structures hold parameters used during a navigation. In // particular they are used by FrameMsg_Navigate, FrameMsg_CommitNavigation and // FrameHostMsg_BeginNavigation. // TODO(clamy): Depending on the avancement of the history refactoring move the // history parameters from FrameMsg_Navigate into one of the structs. // Used by all navigation IPCs. struct CONTENT_EXPORT CommonNavigationParams { CommonNavigationParams(); CommonNavigationParams(const GURL& url, const Referrer& referrer, ui::PageTransition transition, FrameMsg_Navigate_Type::Value navigation_type, bool allow_download); ~CommonNavigationParams(); // The URL to navigate to. // PlzNavigate: May be modified when the navigation is ready to commit. GURL url; // The URL to send in the "Referer" header field. Can be empty if there is // no referrer. Referrer referrer; // The type of transition. ui::PageTransition transition; // Type of navigation. FrameMsg_Navigate_Type::Value navigation_type; // Allows the URL to be downloaded (true by default). // Avoid downloading when in view-source mode. bool allow_download; }; // Used by FrameMsg_Navigate. // PlzNavigate: sent to the renderer when requesting a navigation. struct CONTENT_EXPORT RequestNavigationParams { RequestNavigationParams(); RequestNavigationParams(bool is_post, const std::string& extra_headers, const base::RefCountedMemory* post_data); ~RequestNavigationParams(); // Whether the navigation is a POST request (as opposed to a GET). bool is_post; // Extra headers (separated by \n) to send during the request. std::string extra_headers; // If is_post is true, holds the post_data information from browser. Empty // otherwise. std::vector browser_initiated_post_data; }; // Used by FrameMsg_Navigate. // PlzNavigate: sent to the renderer when the navigation is ready to commit. struct CONTENT_EXPORT CommitNavigationParams { CommitNavigationParams(); CommitNavigationParams(const PageState& page_state, bool is_overriding_user_agent, base::TimeTicks navigation_start); ~CommitNavigationParams(); // Opaque history state (received by ViewHostMsg_UpdateState). PageState page_state; // Whether or not the user agent override string should be used. bool is_overriding_user_agent; // The navigationStart time to expose through the Navigation Timing API to JS. base::TimeTicks browser_navigation_start; // TODO(clamy): Move the redirect chain here. }; } // namespace content #endif // CONTENT_COMMON_NAVIGATION_PARAMS_H_