Chromium Code Reviews| Index: content/browser/frame_host/navigation_handle_impl.h |
| diff --git a/content/browser/frame_host/navigation_handle_impl.h b/content/browser/frame_host/navigation_handle_impl.h |
| index 33e51ddab278cf281b89fe998d32159acc2210b0..a1d63cb59ebfba3180c280d708c9aa88f1348418 100644 |
| --- a/content/browser/frame_host/navigation_handle_impl.h |
| +++ b/content/browser/frame_host/navigation_handle_impl.h |
| @@ -9,7 +9,9 @@ |
| #include "base/macros.h" |
| #include "base/memory/scoped_ptr.h" |
| +#include "base/memory/scoped_vector.h" |
| #include "content/common/content_export.h" |
| +#include "content/public/browser/navigation_throttle.h" |
| #include "url/gurl.h" |
| namespace content { |
| @@ -52,18 +54,23 @@ struct NavigationRequestInfo; |
| // the RenderFrameHost still apply. |
| class CONTENT_EXPORT NavigationHandleImpl : public NavigationHandle { |
| public: |
| - static scoped_ptr<NavigationHandleImpl> Create(const GURL& url, |
| - const bool is_main_frame, |
| - NavigatorDelegate* delegate); |
| - |
| ~NavigationHandleImpl() override; |
| // NavigationHandle implementation: |
| const GURL& GetURL() const override; |
| - net::Error GetNetErrorCode() const override; |
| + const GURL& GetValidatedURL() const override; |
| + WebContents* GetWebContents() const override; |
| bool IsInMainFrame() const override; |
| + bool IsPost() const override; |
| + const Referrer& GetReferrer() const override; |
| + bool HasUserGesture() const override; |
| + ui::PageTransition GetPageTransition() const override; |
| + bool IsExternalProtocol() const override; |
| + net::Error GetNetErrorCode() const override; |
| bool HasCommittedDocument() const override; |
| bool HasCommittedErrorPage() const override; |
| + void RegisterThrottleForTesting( |
| + scoped_ptr<NavigationThrottle> navigation_throttle) override; |
| void set_net_error_code(net::Error net_error_code) { |
| net_error_code_ = net_error_code; |
| @@ -78,6 +85,26 @@ class CONTENT_EXPORT NavigationHandleImpl : public NavigationHandle { |
| is_transferring_ = is_transferring; |
| } |
| + void set_web_contents(WebContents* web_contents) { |
|
nasko
2015/09/14 22:00:04
Uh, this looks scary/weird. Why do we need it?
clamy
2015/09/14 22:12:10
Because I cannot static_cast the NavigatorDelegate
|
| + web_contents_ = web_contents; |
| + } |
| + |
| + // Called when the URLRequest will start in the network stack. |
| + NavigationThrottle::ThrottleCheckResult WillStartRequest( |
| + bool is_post, |
| + const Referrer& sanitized_referrer, |
| + bool has_user_gesture, |
| + ui::PageTransition transition, |
| + bool is_external_protocol); |
| + |
| + // Called when the URLRequest will be redirected in the network stack. |
| + NavigationThrottle::ThrottleCheckResult WillRedirectRequest( |
| + const GURL& new_url, |
| + const GURL& new_validated_url, |
| + bool new_method_is_post, |
| + const GURL& new_referrer_url, |
| + bool new_is_external_protocol); |
| + |
| // Called when the navigation was redirected. This will update the |url_| and |
| // inform the delegate. |
| void DidRedirectNavigation(const GURL& new_url); |
| @@ -87,22 +114,35 @@ class CONTENT_EXPORT NavigationHandleImpl : public NavigationHandle { |
| void DidCommitNavigation(); |
| private: |
| + friend class NavigationHandleFactory; |
| + friend class TestNavigationHandle; |
| + |
| // Used to track the state the navigation is currently in. |
| enum State { |
| DID_START = 0, |
| + WILL_SEND_REQUEST, |
| DID_COMMIT, |
| DID_COMMIT_ERROR_PAGE, |
| }; |
| NavigationHandleImpl(const GURL& url, |
| + const GURL& validated_url, |
| const bool is_main_frame, |
| NavigatorDelegate* delegate); |
| // See NavigationHandle for a description of those member variables. |
| GURL url_; |
| + GURL validated_url_; |
| + const bool is_main_frame_; |
| + bool is_post_; |
| + Referrer sanitized_referrer_; |
| + bool has_user_gesture_; |
| + ui::PageTransition transition_; |
| + bool is_external_protocol_; |
| net::Error net_error_code_; |
| + |
| + // The state the navigation is in. |
| State state_; |
| - const bool is_main_frame_; |
| // Whether the navigation is in the middle of a transfer. Set to false when |
| // the DidStartProvisionalLoad is received from the new renderer. |
| @@ -112,6 +152,12 @@ class CONTENT_EXPORT NavigationHandleImpl : public NavigationHandle { |
| // navigation. |
| NavigatorDelegate* delegate_; |
| + // A pointer to the WebContents the navigation is taking place in. |
|
nasko
2015/09/14 22:00:04
nit: Add to the comment to explain why it is ok to
Charlie Reis
2015/09/16 00:09:24
It's probably also worth explaining (here or elsew
clamy
2015/09/16 01:03:21
Done.
|
| + WebContents* web_contents_; |
| + |
| + // A list of Throttles registered for this navigation. |
| + ScopedVector<NavigationThrottle> throttles_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(NavigationHandleImpl); |
| }; |