// 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_TAB_CONTENTS_TEST_TAB_CONTENTS_H_ #define CHROME_BROWSER_TAB_CONTENTS_TEST_TAB_CONTENTS_H_ #include "chrome/browser/profile.h" #include "chrome/browser/tab_contents/tab_contents.h" #include "chrome/common/notification_registrar.h" class RenderViewHostFactory; class TestRenderViewHost; // Subclass TabContents to ensure it creates TestRenderViewHosts and does // not do anything involving views. class TestTabContents : public TabContents { public: // The render view host factory will be passed on to the TestTabContents(Profile* profile, SiteInstance* instance); TestRenderViewHost* pending_rvh(); // State accessor. bool cross_navigation_pending() { return render_manager_.cross_navigation_pending_; } // Overrides TabContents::ShouldTransitionCrossSite so that we can test both // alternatives without using command-line switches. bool ShouldTransitionCrossSite() { return transition_cross_site; } // Overrides TabContents::Observe. We are listening to infobar related // notifications so we can call InfoBarClosed() on the infobar delegates to // prevent them from leaking. virtual void Observe(NotificationType type, const NotificationSource& source, const NotificationDetails& details); // Promote DidNavigate to public. void TestDidNavigate(RenderViewHost* render_view_host, const ViewHostMsg_FrameNavigate_Params& params) { DidNavigate(render_view_host, params); } // Promote GetWebkitPrefs to public. WebPreferences TestGetWebkitPrefs() { return GetWebkitPrefs(); } // Prevent interaction with views. bool CreateRenderViewForRenderManager(RenderViewHost* render_view_host); void UpdateRenderViewSizeForRenderManager() {} // Returns a clone of this TestTabContents. The returned object is also a // TestTabContents. The caller owns the returned object. virtual TabContents* Clone(); // Set by individual tests. bool transition_cross_site; NotificationRegistrar registrar_; }; #endif // CHROME_BROWSER_TAB_CONTENTS_TEST_TAB_CONTENTS_H_