// Copyright 2013 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_TEST_TEST_RENDER_FRAME_HOST_H_
#define CONTENT_TEST_TEST_RENDER_FRAME_HOST_H_
#include <vector>
#include "base/basictypes.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/test/test_renderer_host.h"
#include "content/test/test_render_view_host.h"
#include "ui/base/page_transition_types.h"
struct FrameHostMsg_DidCommitProvisionalLoad_Params;
namespace content {
class TestRenderFrameHostCreationObserver : public WebContentsObserver {
public:
explicit TestRenderFrameHostCreationObserver(WebContents* web_contents);
virtual ~TestRenderFrameHostCreationObserver();
// WebContentsObserver implementation.
virtual void RenderFrameCreated(RenderFrameHost* render_frame_host) OVERRIDE;
RenderFrameHost* last_created_frame() const { return last_created_frame_; }
private:
RenderFrameHost* last_created_frame_;
};
class TestRenderFrameHost : public RenderFrameHostImpl,
public RenderFrameHostTester {
public:
TestRenderFrameHost(RenderViewHostImpl* render_view_host,
RenderFrameHostDelegate* delegate,
FrameTree* frame_tree,
FrameTreeNode* frame_tree_node,
int routing_id,
bool is_swapped_out);
virtual ~TestRenderFrameHost();
// RenderFrameHostImpl overrides (same values, but in Test* types)
virtual TestRenderViewHost* GetRenderViewHost() OVERRIDE;
// RenderFrameHostTester implementation.
virtual TestRenderFrameHost* AppendChild(
const std::string& frame_name) OVERRIDE;
virtual void SendNavigateWithTransition(
int page_id,
const GURL& url,
ui::PageTransition transition) OVERRIDE;
void SendNavigate(int page_id, const GURL& url);
void SendFailedNavigate(int page_id, const GURL& url);
void SendNavigateWithTransitionAndResponseCode(
int page_id,
const GURL& url, ui::PageTransition transition,
int response_code);
void SendNavigateWithOriginalRequestURL(
int page_id,
const GURL& url,
const GURL& original_request_url);
void SendNavigateWithFile(
int page_id,
const GURL& url,
const base::FilePath& file_path);
void SendNavigateWithParams(
FrameHostMsg_DidCommitProvisionalLoad_Params* params);
void SendNavigateWithRedirects(
int page_id,
const GURL& url,
const std::vector<GURL>& redirects);
void SendNavigateWithParameters(
int page_id,
const GURL& url,
ui::PageTransition transition,
const GURL& original_request_url,
int response_code,
const base::FilePath* file_path_for_history_item,
const std::vector<GURL>& redirects);
void SendBeginNavigationWithURL(const GURL& url);
void DidDisownOpener();
void set_contents_mime_type(const std::string& mime_type) {
contents_mime_type_ = mime_type;
}
// If set, navigations will appear to have cleared the history list in the
// RenderFrame
// (FrameHostMsg_DidCommitProvisionalLoad_Params::history_list_was_cleared).
// False by default.
void set_simulate_history_list_was_cleared(bool cleared) {
simulate_history_list_was_cleared_ = cleared;
}
// TODO(nick): As necessary for testing, override behavior of RenderFrameHost
// here.
private:
TestRenderFrameHostCreationObserver child_creation_observer_;
std::string contents_mime_type_;
// See set_simulate_history_list_was_cleared() above.
bool simulate_history_list_was_cleared_;
DISALLOW_COPY_AND_ASSIGN(TestRenderFrameHost);
};
} // namespace content
#endif // CONTENT_TEST_TEST_RENDER_FRAME_HOST_H_