blob: db2a80362ec616fa6abf4a533292a27680f1de4d [file] [log] [blame]
// Copyright 2018 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_PUBLIC_TEST_MOCK_NAVIGATION_HANDLE_H_
#define CONTENT_PUBLIC_TEST_MOCK_NAVIGATION_HANDLE_H_
#include "base/memory/ref_counted.h"
#include "content/public/browser/global_request_id.h"
#include "content/public/browser/navigation_handle.h"
#include "content/public/browser/render_frame_host.h"
#include "net/base/ip_endpoint.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "url/gurl.h"
namespace content {
class MockNavigationHandle : public NavigationHandle {
public:
MockNavigationHandle();
explicit MockNavigationHandle(WebContents* web_contents);
MockNavigationHandle(const GURL& url, RenderFrameHost* render_frame_host);
~MockNavigationHandle() override;
// NavigationHandle implementation:
int64_t GetNavigationId() override { return navigation_id_; }
const GURL& GetURL() override { return url_; }
SiteInstance* GetStartingSiteInstance() override {
return starting_site_instance_;
}
bool IsInMainFrame() override {
return render_frame_host_ ? !render_frame_host_->GetParent() : true;
}
MOCK_METHOD0(IsParentMainFrame, bool());
bool IsRendererInitiated() override { return true; }
MOCK_METHOD0(GetFrameTreeNodeId, int());
RenderFrameHost* GetParentFrame() override {
return render_frame_host_ ? render_frame_host_->GetParent() : nullptr;
}
WebContents* GetWebContents() override { return web_contents_; }
MOCK_METHOD0(NavigationStart, base::TimeTicks());
MOCK_METHOD0(NavigationInputStart, base::TimeTicks());
MOCK_METHOD0(WasStartedFromContextMenu, bool());
MOCK_METHOD0(GetSearchableFormURL, const GURL&());
MOCK_METHOD0(GetSearchableFormEncoding, const std::string&());
ReloadType GetReloadType() override { return reload_type_; }
RestoreType GetRestoreType() override { return RestoreType::NONE; }
const GURL& GetBaseURLForDataURL() override { return base_url_for_data_url_; }
MOCK_METHOD0(IsPost, bool());
MOCK_METHOD0(GetResourceRequestBody,
const scoped_refptr<network::ResourceRequestBody>&());
const Referrer& GetReferrer() override { return referrer_; }
MOCK_METHOD0(HasUserGesture, bool());
ui::PageTransition GetPageTransition() override { return page_transition_; }
MOCK_METHOD0(GetNavigationUIData, NavigationUIData*());
MOCK_METHOD0(IsExternalProtocol, bool());
net::Error GetNetErrorCode() override { return net_error_code_; }
RenderFrameHost* GetRenderFrameHost() override { return render_frame_host_; }
bool IsSameDocument() override { return is_same_document_; }
MOCK_METHOD0(WasServerRedirect, bool());
const std::vector<GURL>& GetRedirectChain() override {
return redirect_chain_;
}
bool HasCommitted() override { return has_committed_; }
bool IsErrorPage() override { return is_error_page_; }
MOCK_METHOD0(HasSubframeNavigationEntryCommitted, bool());
MOCK_METHOD0(DidReplaceEntry, bool());
MOCK_METHOD0(ShouldUpdateHistory, bool());
MOCK_METHOD0(GetPreviousURL, const GURL&());
MOCK_METHOD0(GetSocketAddress, net::IPEndPoint());
const net::HttpRequestHeaders& GetRequestHeaders() override {
return request_headers_;
}
MOCK_METHOD1(RemoveRequestHeader, void(const std::string&));
MOCK_METHOD2(SetRequestHeader, void(const std::string&, const std::string&));
const net::HttpResponseHeaders* GetResponseHeaders() override {
return response_headers_.get();
}
MOCK_METHOD0(GetConnectionInfo, net::HttpResponseInfo::ConnectionInfo());
const base::Optional<net::SSLInfo>& GetSSLInfo() override {
return ssl_info_;
}
const base::Optional<net::AuthChallengeInfo>& GetAuthChallengeInfo()
override {
return auth_challenge_info_;
}
MOCK_METHOD0(GetGlobalRequestID, const GlobalRequestID&());
MOCK_METHOD0(IsDownload, bool());
bool IsFormSubmission() override { return is_form_submission_; }
MOCK_METHOD0(WasInitiatedByLinkClick, bool());
MOCK_METHOD0(IsSignedExchangeInnerResponse, bool());
MOCK_METHOD0(HasPrefetchedAlternativeSubresourceSignedExchange, bool());
bool WasResponseCached() override { return was_response_cached_; }
const net::ProxyServer& GetProxyServer() override { return proxy_server_; }
MOCK_METHOD0(GetHrefTranslate, const std::string&());
const base::Optional<url::Origin>& GetInitiatorOrigin() override {
return initiator_origin_;
}
MOCK_METHOD1(RegisterThrottleForTesting,
void(std::unique_ptr<NavigationThrottle>));
MOCK_METHOD0(IsDeferredForTesting, bool());
MOCK_METHOD1(RegisterSubresourceOverride,
void(mojom::TransferrableURLLoaderPtr));
MOCK_METHOD0(FromDownloadCrossOriginRedirect, bool());
MOCK_METHOD0(IsSameProcess, bool());
MOCK_METHOD0(GetNavigationEntryOffset, int());
void set_url(const GURL& url) { url_ = url; }
void set_starting_site_instance(SiteInstance* site_instance) {
starting_site_instance_ = site_instance;
}
void set_page_transition(ui::PageTransition page_transition) {
page_transition_ = page_transition;
}
void set_net_error_code(net::Error error_code) {
net_error_code_ = error_code;
}
void set_render_frame_host(RenderFrameHost* render_frame_host) {
render_frame_host_ = render_frame_host;
}
void set_is_same_document(bool is_same_document) {
is_same_document_ = is_same_document;
}
void set_redirect_chain(const std::vector<GURL>& redirect_chain) {
redirect_chain_ = redirect_chain;
}
void set_has_committed(bool has_committed) { has_committed_ = has_committed; }
void set_is_error_page(bool is_error_page) { is_error_page_ = is_error_page; }
void set_request_headers(const net::HttpRequestHeaders& request_headers) {
request_headers_ = request_headers;
}
void set_response_headers(
scoped_refptr<net::HttpResponseHeaders> response_headers) {
response_headers_ = response_headers;
}
void set_ssl_info(const net::SSLInfo& ssl_info) { ssl_info_ = ssl_info; }
void set_is_form_submission(bool is_form_submission) {
is_form_submission_ = is_form_submission;
}
void set_was_response_cached(bool was_response_cached) {
was_response_cached_ = was_response_cached;
}
void set_proxy_server(const net::ProxyServer& proxy_server) {
proxy_server_ = proxy_server;
}
void set_reload_type(ReloadType reload_type) { reload_type_ = reload_type; }
private:
int64_t navigation_id_;
GURL url_;
SiteInstance* starting_site_instance_ = nullptr;
WebContents* web_contents_ = nullptr;
GURL base_url_for_data_url_;
Referrer referrer_;
ui::PageTransition page_transition_ = ui::PAGE_TRANSITION_LINK;
net::Error net_error_code_ = net::OK;
RenderFrameHost* render_frame_host_ = nullptr;
bool is_same_document_ = false;
std::vector<GURL> redirect_chain_;
bool has_committed_ = false;
bool is_error_page_ = false;
net::HttpRequestHeaders request_headers_;
scoped_refptr<net::HttpResponseHeaders> response_headers_;
base::Optional<net::SSLInfo> ssl_info_;
base::Optional<net::AuthChallengeInfo> auth_challenge_info_;
bool is_form_submission_ = false;
bool was_response_cached_ = false;
net::ProxyServer proxy_server_;
base::Optional<url::Origin> initiator_origin_;
ReloadType reload_type_ = content::ReloadType::NONE;
};
} // namespace content
#endif // CONTENT_PUBLIC_TEST_MOCK_NAVIGATION_HANDLE_H_