1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_PUBLIC_TEST_LAYOUTTEST_SUPPORT_H_ 6 #define CONTENT_PUBLIC_TEST_LAYOUTTEST_SUPPORT_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "base/callback_forward.h" 12 #include "cc/layers/texture_layer.h" 13 #include "third_party/WebKit/public/platform/WebScreenOrientationType.h" 14 15 class GURL; 16 17 namespace blink { 18 class WebBatteryStatus; 19 class WebDeviceMotionData; 20 class WebDeviceOrientationData; 21 class WebGamepad; 22 class WebGamepads; 23 class WebLayer; 24 struct WebSize; 25 class WebView; 26 class WebURLResponse; 27 } 28 29 namespace content { 30 31 class PageState; 32 class RenderFrame; 33 class RendererGamepadProvider; 34 class RenderView; 35 class WebTestProxyBase; 36 37 // Turn the browser process into layout test mode. 38 void EnableBrowserLayoutTestMode(); 39 40 /////////////////////////////////////////////////////////////////////////////// 41 // The following methods are meant to be used from a renderer. 42 43 // Turn a renderer into layout test mode. 44 void EnableRendererLayoutTestMode(); 45 46 // Enable injecting of a WebTestProxy between WebViews and RenderViews. 47 // |callback| is invoked with a pointer to WebTestProxyBase for each created 48 // WebTestProxy. 49 void EnableWebTestProxyCreation( 50 const base::Callback<void(RenderView*, WebTestProxyBase*)>& callback); 51 52 typedef base::Callback<void(const blink::WebURLResponse& response, 53 const std::string& data)> FetchManifestCallback; 54 void FetchManifest(blink::WebView* view, const GURL& url, 55 const FetchManifestCallback&); 56 57 // Sets gamepad provider to be used for layout tests. 58 void SetMockGamepadProvider(scoped_ptr<RendererGamepadProvider> provider); 59 60 // Sets a double that should be used when registering 61 // a listener through WebKitPlatformSupport::setDeviceLightListener(). 62 void SetMockDeviceLightData(const double data); 63 64 // Sets WebDeviceMotionData that should be used when registering 65 // a listener through WebKitPlatformSupport::setDeviceMotionListener(). 66 void SetMockDeviceMotionData(const blink::WebDeviceMotionData& data); 67 68 // Sets WebDeviceOrientationData that should be used when registering 69 // a listener through WebKitPlatformSupport::setDeviceOrientationListener(). 70 void SetMockDeviceOrientationData(const blink::WebDeviceOrientationData& data); 71 72 // Notifies blink that battery status has changed. 73 void MockBatteryStatusChanged(const blink::WebBatteryStatus& status); 74 75 // Returns the length of the local session history of a render view. 76 int GetLocalSessionHistoryLength(RenderView* render_view); 77 78 // Sync the current session history to the browser process. 79 void SyncNavigationState(RenderView* render_view); 80 81 // Sets the focus of the render view depending on |enable|. This only overrides 82 // the state of the renderer, and does not sync the focus to the browser 83 // process. 84 void SetFocusAndActivate(RenderView* render_view, bool enable); 85 86 // Changes the window rect of the given render view. 87 void ForceResizeRenderView(RenderView* render_view, 88 const blink::WebSize& new_size); 89 90 // Set the device scale factor and force the compositor to resize. 91 void SetDeviceScaleFactor(RenderView* render_view, float factor); 92 93 // Set the device color profile associated with the profile |name|. 94 void SetDeviceColorProfile(RenderView* render_view, const std::string& name); 95 96 // Enables or disables synchronous resize mode. When enabled, all window-sizing 97 // machinery is short-circuited inside the renderer. This mode is necessary for 98 // some tests that were written before browsers had multi-process architecture 99 // and rely on window resizes to happen synchronously. 100 // See http://crbug.com/309760 for details. 101 void UseSynchronousResizeMode(RenderView* render_view, bool enable); 102 103 // Control auto resize mode. 104 void EnableAutoResizeMode(RenderView* render_view, 105 const blink::WebSize& min_size, 106 const blink::WebSize& max_size); 107 void DisableAutoResizeMode(RenderView* render_view, 108 const blink::WebSize& new_size); 109 110 // Provides a text dump of the contents of the given page state. 111 std::string DumpBackForwardList(std::vector<PageState>& page_state, 112 size_t current_index); 113 114 // Instantiates WebLayerImpl for TestPlugin. 115 blink::WebLayer* InstantiateWebLayer(scoped_refptr<cc::TextureLayer> layer); 116 117 } // namespace content 118 119 #endif // CONTENT_PUBLIC_TEST_LAYOUTTEST_SUPPORT_H_ 120