| Index: chrome/browser/renderer_host/test/test_render_view_host.h
|
| ===================================================================
|
| --- chrome/browser/renderer_host/test/test_render_view_host.h (revision 75800)
|
| +++ chrome/browser/renderer_host/test/test_render_view_host.h (working copy)
|
| @@ -1,301 +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_TEST_RENDER_VIEW_HOST_H_
|
| -#define CHROME_BROWSER_RENDERER_HOST_TEST_TEST_RENDER_VIEW_HOST_H_
|
| -#pragma once
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/gtest_prod_util.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/common/page_transition_types.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace gfx {
|
| -class Rect;
|
| -}
|
| -
|
| -class NavigationController;
|
| -class SiteInstance;
|
| -class TestingProfile;
|
| -class TestTabContents;
|
| -struct WebMenuItem;
|
| -struct ViewHostMsg_FrameNavigate_Params;
|
| -
|
| -// Utility function to initialize ViewHostMsg_NavigateParams_Params
|
| -// with given |page_id|, |url| and |transition_type|.
|
| -void InitNavigateParams(ViewHostMsg_FrameNavigate_Params* params,
|
| - int page_id,
|
| - const GURL& url,
|
| - PageTransition::Type transition_type);
|
| -
|
| -// 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 ~TestRenderWidgetHostView();
|
| -
|
| - virtual void InitAsPopup(RenderWidgetHostView* parent_host_view,
|
| - const gfx::Rect& pos) {}
|
| - virtual void InitAsFullscreen() {}
|
| - virtual RenderWidgetHost* GetRenderWidgetHost() const;
|
| - virtual void DidBecomeSelected() {}
|
| - virtual void WasHidden() {}
|
| - virtual void SetSize(const gfx::Size& size) {}
|
| - virtual gfx::NativeView GetNativeView();
|
| - virtual void MovePluginWindows(
|
| - const std::vector<webkit::npapi::WebPluginGeometry>& moves) {}
|
| -#if defined(OS_WIN)
|
| - virtual void ForwardMouseEventToRenderer(UINT message,
|
| - WPARAM wparam,
|
| - LPARAM lparam) {}
|
| -#endif
|
| - virtual void Focus() {}
|
| - virtual void Blur() {}
|
| - virtual bool HasFocus();
|
| - virtual void AdvanceFocus(bool reverse) {}
|
| - virtual void Show();
|
| - virtual void Hide();
|
| - virtual bool IsShowing();
|
| - virtual gfx::Rect GetViewBounds() const;
|
| - virtual void SetIsLoading(bool is_loading) {}
|
| - virtual void UpdateCursor(const WebCursor& cursor) {}
|
| - virtual void UpdateCursorIfOverSelf() {}
|
| - virtual void ImeUpdateTextInputState(WebKit::WebTextInputType state,
|
| - const gfx::Rect& caret_rect) {}
|
| - virtual void ImeCancelComposition() {}
|
| - virtual void DidUpdateBackingStore(
|
| - const gfx::Rect& scroll_rect, int scroll_dx, int scroll_dy,
|
| - const std::vector<gfx::Rect>& rects) {}
|
| - virtual void RenderViewGone(base::TerminationStatus status,
|
| - int error_code);
|
| - virtual void WillDestroyRenderWidget(RenderWidgetHost* rwh) { }
|
| - 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 SetTakesFocusOnlyOnMouseDown(bool flag) {}
|
| - virtual void ShowPopupWithItems(gfx::Rect bounds,
|
| - int item_height,
|
| - double item_font_size,
|
| - int selected_item,
|
| - const std::vector<WebMenuItem>& items,
|
| - bool right_aligned);
|
| - virtual gfx::Rect GetViewCocoaBounds() const;
|
| - virtual gfx::Rect GetRootWindowRect();
|
| - virtual void SetActive(bool active);
|
| - virtual void SetWindowVisibility(bool visible) {}
|
| - virtual void WindowFrameChanged() {}
|
| - virtual void PluginFocusChanged(bool focused, int plugin_id);
|
| - virtual void StartPluginIme();
|
| - virtual bool PostProcessEventForPluginIme(
|
| - const NativeWebKeyboardEvent& event);
|
| - virtual gfx::PluginWindowHandle AllocateFakePluginWindowHandle(
|
| - bool opaque,
|
| - bool root);
|
| - virtual void DestroyFakePluginWindowHandle(gfx::PluginWindowHandle window);
|
| - virtual void AcceleratedSurfaceSetIOSurface(gfx::PluginWindowHandle window,
|
| - int32 width,
|
| - int32 height,
|
| - uint64 surface_id);
|
| - virtual void AcceleratedSurfaceSetTransportDIB(
|
| - gfx::PluginWindowHandle window,
|
| - int32 width,
|
| - int32 height,
|
| - TransportDIB::Handle transport_dib);
|
| - virtual void AcceleratedSurfaceBuffersSwapped(
|
| - gfx::PluginWindowHandle window,
|
| - uint64 surface_id,
|
| - int renderer_id,
|
| - int32 route_id,
|
| - int gpu_host_id,
|
| - uint64 swap_buffers_count);
|
| - virtual void GpuRenderingStateDidChange();
|
| -#elif defined(OS_WIN)
|
| - virtual void WillWmDestroy();
|
| - virtual void ShowCompositorHostWindow(bool show);
|
| -#endif
|
| - virtual void SetVisuallyDeemphasized(const SkColor* color, bool animate) { }
|
| -
|
| -#if defined(TOOLKIT_USES_GTK)
|
| - virtual void CreatePluginContainer(gfx::PluginWindowHandle id) { }
|
| - virtual void DestroyPluginContainer(gfx::PluginWindowHandle id) { }
|
| - virtual void AcceleratedCompositingActivated(bool activated) { }
|
| -#endif
|
| -
|
| - virtual gfx::PluginWindowHandle AcquireCompositingSurface();
|
| - virtual void ReleaseCompositingSurface(gfx::PluginWindowHandle surface) { }
|
| -
|
| - virtual bool ContainsNativeView(gfx::NativeView native_view) const;
|
| -
|
| - 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);
|
| - virtual ~TestRenderViewHost();
|
| -
|
| - // Testing functions ---------------------------------------------------------
|
| -
|
| - // Calls the RenderViewHosts' private OnMessageReceived function with the
|
| - // given message.
|
| - bool 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);
|
| -
|
| - // Calls OnMsgNavigate on the RenderViewHost with the given information,
|
| - // including a custom PageTransition::Type. Sets 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 SendNavigateWithTransition(int page_id, const GURL& url,
|
| - PageTransition::Type transition);
|
| -
|
| - // 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;
|
| - }
|
| -
|
| - // Returns whether the RenderViewHost is currently waiting to hear the result
|
| - // of a before unload handler from the renderer.
|
| - bool is_waiting_for_beforeunload_ack() const {
|
| - return is_waiting_for_beforeunload_ack_;
|
| - }
|
| -
|
| - // RenderViewHost overrides --------------------------------------------------
|
| -
|
| - virtual bool CreateRenderView(const string16& frame_name);
|
| - virtual bool IsRenderViewLive() const;
|
| -
|
| - private:
|
| - FRIEND_TEST_ALL_PREFIXES(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:
|
| - explicit TestRenderViewHostFactory(RenderProcessHostFactory* rph_factory);
|
| - virtual ~TestRenderViewHostFactory();
|
| -
|
| - virtual void set_render_process_host_factory(
|
| - RenderProcessHostFactory* rph_factory);
|
| - virtual RenderViewHost* CreateRenderViewHost(
|
| - SiteInstance* instance,
|
| - RenderViewHostDelegate* delegate,
|
| - int routing_id,
|
| - SessionStorageNamespace* session_storage);
|
| -
|
| - 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();
|
| - virtual ~RenderViewHostTestHarness();
|
| -
|
| - NavigationController& controller();
|
| - TestTabContents* contents();
|
| - TestRenderViewHost* rvh();
|
| - TestRenderViewHost* pending_rvh();
|
| - TestRenderViewHost* active_rvh();
|
| - TestingProfile* profile();
|
| - MockRenderProcessHost* process();
|
| -
|
| - // Frees the current tab contents for tests that want to test destruction.
|
| - void DeleteContents();
|
| -
|
| - // Creates a new TestTabContents. Ownership passes to the caller.
|
| - TestTabContents* CreateTestTabContents();
|
| -
|
| - // Cover for |contents()->NavigateAndCommit(url)|. See
|
| - // TestTabContents::NavigateAndCommit for details.
|
| - void NavigateAndCommit(const GURL& url);
|
| -
|
| - // Simulates a reload of the current page.
|
| - void Reload();
|
| -
|
| - 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_TEST_RENDER_VIEW_HOST_H_
|
|
|