| Index: chrome/browser/renderer_host/test_render_view_host.h
|
| ===================================================================
|
| --- chrome/browser/renderer_host/test_render_view_host.h (revision 19907)
|
| +++ chrome/browser/renderer_host/test_render_view_host.h (working copy)
|
| @@ -1,252 +0,0 @@
|
| -// Copyright (c) 2009 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 CHROME_BROWSER_RENDERER_HOST_TEST_RENDER_VIEW_HOST_H_
|
| -#define CHROME_BROWSER_RENDERER_HOST_TEST_RENDER_VIEW_HOST_H_
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/message_loop.h"
|
| -#include "build/build_config.h"
|
| -#include "chrome/browser/renderer_host/mock_render_process_host.h"
|
| -#include "chrome/browser/renderer_host/render_widget_host_view.h"
|
| -#include "chrome/browser/renderer_host/render_view_host.h"
|
| -#include "chrome/browser/renderer_host/render_view_host_factory.h"
|
| -#include "chrome/browser/renderer_host/site_instance.h"
|
| -#include "chrome/browser/tab_contents/test_web_contents.h"
|
| -#include "chrome/test/testing_profile.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -#if defined(OS_WIN)
|
| -#include "chrome/browser/tab_contents/navigation_controller.h"
|
| -#elif defined(OS_POSIX)
|
| -#include "chrome/common/temp_scaffolding_stubs.h"
|
| -#endif
|
| -
|
| -class TestTabContents;
|
| -
|
| -// This file provides a testing framework for mocking out the RenderProcessHost
|
| -// layer. It allows you to test RenderViewHost, TabContents,
|
| -// NavigationController, and other layers above that without running an actual
|
| -// renderer process.
|
| -//
|
| -// To use, derive your test base class from RenderViewHostTestHarness.
|
| -
|
| -// TestRenderViewHostView ------------------------------------------------------
|
| -
|
| -// Subclass the RenderViewHost's view so that we can call Show(), etc.,
|
| -// without having side-effects.
|
| -class TestRenderWidgetHostView : public RenderWidgetHostView {
|
| - public:
|
| - explicit TestRenderWidgetHostView(RenderWidgetHost* rwh);
|
| -
|
| - virtual void InitAsPopup(RenderWidgetHostView* parent_host_view,
|
| - const gfx::Rect& pos) {}
|
| - virtual RenderWidgetHost* GetRenderWidgetHost() const { return NULL; }
|
| - virtual void DidBecomeSelected() {}
|
| - virtual void WasHidden() {}
|
| - virtual void SetSize(const gfx::Size& size) {}
|
| - virtual gfx::NativeView GetNativeView() { return NULL; }
|
| - virtual void MovePluginWindows(
|
| - const std::vector<WebPluginGeometry>& plugin_window_moves) {}
|
| -#if defined(OS_WIN)
|
| - virtual void ForwardMouseEventToRenderer(UINT message,
|
| - WPARAM wparam,
|
| - LPARAM lparam) {}
|
| -#endif
|
| - virtual void Focus() {}
|
| - virtual void Blur() {}
|
| - virtual bool HasFocus() { return true; }
|
| - virtual void AdvanceFocus(bool reverse) {}
|
| - virtual void Show() { is_showing_ = true; }
|
| - virtual void Hide() { is_showing_ = false; }
|
| - virtual gfx::Rect GetViewBounds() const { return gfx::Rect(); }
|
| - virtual void SetIsLoading(bool is_loading) {}
|
| - virtual void UpdateCursor(const WebCursor& cursor) {}
|
| - virtual void UpdateCursorIfOverSelf() {}
|
| - virtual void IMEUpdateStatus(int control, const gfx::Rect& caret_rect) {}
|
| - virtual void DidPaintRect(const gfx::Rect& rect) {}
|
| - virtual void DidScrollRect(const gfx::Rect& rect, int dx, int dy) {}
|
| - virtual void RenderViewGone() { delete this; }
|
| - virtual void Destroy() {}
|
| - virtual void PrepareToDestroy() {}
|
| - virtual void SetTooltipText(const std::wstring& tooltip_text) {}
|
| - virtual BackingStore* AllocBackingStore(const gfx::Size& size);
|
| -#if defined(OS_MACOSX)
|
| - virtual void ShowPopupWithItems(gfx::Rect bounds,
|
| - int item_height,
|
| - int selected_item,
|
| - const std::vector<WebMenuItem>& items) {}
|
| -#endif
|
| -
|
| - bool is_showing() const { return is_showing_; }
|
| -
|
| - private:
|
| - RenderWidgetHost* rwh_;
|
| - bool is_showing_;
|
| -};
|
| -
|
| -// TestRenderViewHost ----------------------------------------------------------
|
| -
|
| -// TODO(brettw) this should use a TestTabContents which should be generalized
|
| -// from the TabContents test. We will probably also need that class' version of
|
| -// CreateRenderViewForRenderManager when more complicate tests start using this.
|
| -class TestRenderViewHost : public RenderViewHost {
|
| - public:
|
| - TestRenderViewHost(SiteInstance* instance,
|
| - RenderViewHostDelegate* delegate,
|
| - int routing_id,
|
| - base::WaitableEvent* modal_dialog_event);
|
| - virtual ~TestRenderViewHost();
|
| -
|
| - // Testing functions ---------------------------------------------------------
|
| -
|
| - // Calls the RenderViewHosts' private OnMessageReceived function with the
|
| - // given message.
|
| - void TestOnMessageReceived(const IPC::Message& msg);
|
| -
|
| - // Calls OnMsgNavigate on the RenderViewHost with the given information,
|
| - // setting the rest of the parameters in the message to the "typical" values.
|
| - // This is a helper function for simulating the most common types of loads.
|
| - void SendNavigate(int page_id, const GURL& url);
|
| -
|
| - // If set, *delete_counter is incremented when this object destructs.
|
| - void set_delete_counter(int* delete_counter) {
|
| - delete_counter_ = delete_counter;
|
| - }
|
| -
|
| - // Sets whether the RenderView currently exists or not. This controls the
|
| - // return value from IsRenderViewLive, which the rest of the system uses to
|
| - // check whether the RenderView has crashed or not.
|
| - void set_render_view_created(bool created) {
|
| - render_view_created_ = created;
|
| - }
|
| -
|
| - // RenderViewHost overrides --------------------------------------------------
|
| -
|
| - virtual bool CreateRenderView();
|
| - virtual bool IsRenderViewLive() const;
|
| -
|
| - private:
|
| - FRIEND_TEST(RenderViewHostTest, FilterNavigate);
|
| -
|
| - // Tracks if the caller thinks if it created the RenderView. This is so we can
|
| - // respond to IsRenderViewLive appropriately.
|
| - bool render_view_created_;
|
| -
|
| - // See set_delete_counter() above. May be NULL.
|
| - int* delete_counter_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestRenderViewHost);
|
| -};
|
| -
|
| -// TestRenderViewHostFactory ---------------------------------------------------
|
| -
|
| -// Manages creation of the RenderViewHosts using our special subclass. This
|
| -// automatically registers itself when it goes in scope, and unregisters itself
|
| -// when it goes out of scope. Since you can't have more than one factory
|
| -// registered at a time, you can only have one of these objects at a time.
|
| -class TestRenderViewHostFactory : public RenderViewHostFactory {
|
| - public:
|
| - TestRenderViewHostFactory(RenderProcessHostFactory* rph_factory)
|
| - : render_process_host_factory_(rph_factory) {
|
| - RenderViewHostFactory::RegisterFactory(this);
|
| - }
|
| - virtual ~TestRenderViewHostFactory() {
|
| - RenderViewHostFactory::UnregisterFactory();
|
| - }
|
| -
|
| - virtual RenderViewHost* CreateRenderViewHost(
|
| - SiteInstance* instance,
|
| - RenderViewHostDelegate* delegate,
|
| - int routing_id,
|
| - base::WaitableEvent* modal_dialog_event) {
|
| - // See declaration of render_process_host_factory_ below.
|
| - instance->set_render_process_host_factory(render_process_host_factory_);
|
| - return new TestRenderViewHost(instance, delegate, routing_id,
|
| - modal_dialog_event);
|
| - }
|
| -
|
| - private:
|
| - // This is a bit of a hack. With the current design of the site instances /
|
| - // browsing instances, it's difficult to pass a RenderProcessHostFactory
|
| - // around properly.
|
| - //
|
| - // Instead, we set it right before we create a new RenderViewHost, which
|
| - // happens before the RenderProcessHost is created. This way, the instance
|
| - // has the correct factory and creates our special RenderProcessHosts.
|
| - RenderProcessHostFactory* render_process_host_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestRenderViewHostFactory);
|
| -};
|
| -
|
| -// RenderViewHostTestHarness ---------------------------------------------------
|
| -
|
| -class RenderViewHostTestHarness : public testing::Test {
|
| - public:
|
| - RenderViewHostTestHarness()
|
| - : rph_factory_(),
|
| - rvh_factory_(&rph_factory_),
|
| - contents_(NULL) {}
|
| - virtual ~RenderViewHostTestHarness() {}
|
| -
|
| - NavigationController& controller() {
|
| - return contents_->controller();
|
| - }
|
| -
|
| - TestTabContents* contents() {
|
| - return contents_.get();
|
| - }
|
| -
|
| - TestRenderViewHost* rvh() {
|
| - return static_cast<TestRenderViewHost*>(contents_->render_view_host());
|
| - }
|
| -
|
| - TestRenderViewHost* pending_rvh() {
|
| - return static_cast<TestRenderViewHost*>(
|
| - contents_->render_manager()->pending_render_view_host());
|
| - }
|
| -
|
| - TestRenderViewHost* active_rvh() {
|
| - return pending_rvh() ? pending_rvh() : rvh();
|
| - }
|
| -
|
| - TestingProfile* profile() {
|
| - return profile_.get();
|
| - }
|
| -
|
| - MockRenderProcessHost* process() {
|
| - return static_cast<MockRenderProcessHost*>(rvh()->process());
|
| - }
|
| -
|
| - // Frees the current tab contents for tests that want to test destruction.
|
| - void DeleteContents() {
|
| - contents_.reset();
|
| - }
|
| -
|
| - // Creates a pending navigation to the given oURL with the default parameters
|
| - // and the commits the load with a page ID one larger than any seen. This
|
| - // emulates what happens on a new navigation.
|
| - void NavigateAndCommit(const GURL& url);
|
| -
|
| - protected:
|
| - // testing::Test
|
| - virtual void SetUp();
|
| - virtual void TearDown();
|
| -
|
| - // This profile will be created in SetUp if it has not already been created.
|
| - // This allows tests to override the profile if they so choose in their own
|
| - // SetUp function before calling the base class's (us) SetUp().
|
| - scoped_ptr<TestingProfile> profile_;
|
| -
|
| - MessageLoopForUI message_loop_;
|
| -
|
| - MockRenderProcessHostFactory rph_factory_;
|
| - TestRenderViewHostFactory rvh_factory_;
|
| -
|
| - scoped_ptr<TestTabContents> contents_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(RenderViewHostTestHarness);
|
| -};
|
| -
|
| -#endif // CHROME_BROWSER_RENDERER_HOST_TEST_RENDER_VIEW_HOST_H_
|
|
|