#include "content/public/renderer/render_view_observer.h"
#include "content/public/renderer/render_view_observer_tracker.h"
#include "content/shell/common/shell_test_configuration.h"
-#include "third_party/WebKit/public/testing/WebPreferences.h"
-#include "third_party/WebKit/public/testing/WebTestDelegate.h"
+#include "content/shell/common/test_runner/test_preferences.h"
+#include "content/shell/renderer/test_runner/web_test_delegate.h"
+#include "third_party/WebKit/public/platform/WebScreenOrientationType.h"
#include "v8/include/v8.h"
+class SkBitmap;
class SkCanvas;
-namespace WebKit {
+namespace blink {
+class WebBatteryStatus;
class WebDeviceMotionData;
class WebDeviceOrientationData;
struct WebRect;
}
-namespace WebTestRunner {
-class WebTestProxyBase;
-}
-
namespace content {
+class LeakDetector;
+class WebTestProxyBase;
+struct LeakDetectionResult;
+
// This is the renderer side of the webkit test runner.
class WebKitTestRunner : public RenderViewObserver,
public RenderViewObserverTracker<WebKitTestRunner>,
- public WebTestRunner::WebTestDelegate {
+ public WebTestDelegate {
public:
explicit WebKitTestRunner(RenderView* render_view);
virtual ~WebKitTestRunner();
// RenderViewObserver implementation.
virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
- virtual void DidClearWindowObject(WebKit::WebFrame* frame) OVERRIDE;
+ virtual void DidClearWindowObject(blink::WebLocalFrame* frame) OVERRIDE;
virtual void Navigate(const GURL& url) OVERRIDE;
- virtual void DidCommitProvisionalLoad(WebKit::WebFrame* frame,
+ virtual void DidCommitProvisionalLoad(blink::WebLocalFrame* frame,
bool is_new_navigation) OVERRIDE;
- virtual void DidFailProvisionalLoad(
- WebKit::WebFrame* frame, const WebKit::WebURLError& error) OVERRIDE;
+ virtual void DidFailProvisionalLoad(blink::WebLocalFrame* frame,
+ const blink::WebURLError& error) OVERRIDE;
// WebTestDelegate implementation.
- virtual void clearEditCommand();
- virtual void setEditCommand(const std::string& name,
- const std::string& value);
- virtual void setGamepadData(const WebKit::WebGamepads& gamepads);
- virtual void setDeviceMotionData(const WebKit::WebDeviceMotionData& data);
- virtual void setDeviceOrientationData(
- const WebKit::WebDeviceOrientationData& data);
- virtual void printMessage(const std::string& message);
- virtual void postTask(::WebTestRunner::WebTask* task);
- virtual void postDelayedTask(::WebTestRunner::WebTask* task,
- long long ms);
- virtual WebKit::WebString registerIsolatedFileSystem(
- const WebKit::WebVector<WebKit::WebString>& absolute_filenames);
- virtual long long getCurrentTimeInMillisecond();
- virtual WebKit::WebString getAbsoluteWebStringFromUTF8Path(
- const std::string& utf8_path);
- virtual WebKit::WebURL localFileToDataURL(const WebKit::WebURL& file_url);
- virtual WebKit::WebURL rewriteLayoutTestsURL(const std::string& utf8_url);
- virtual ::WebTestRunner::WebPreferences* preferences();
- virtual void applyPreferences();
- virtual std::string makeURLErrorDescription(const WebKit::WebURLError& error);
- virtual void useUnfortunateSynchronousResizeMode(bool enable);
- virtual void enableAutoResizeMode(const WebKit::WebSize& min_size,
- const WebKit::WebSize& max_size);
- virtual void disableAutoResizeMode(const WebKit::WebSize& new_size);
- virtual void showDevTools();
- virtual void closeDevTools();
- virtual void evaluateInWebInspector(long call_id, const std::string& script);
- virtual void clearAllDatabases();
- virtual void setDatabaseQuota(int quota);
- virtual void setDeviceScaleFactor(float factor);
- virtual void setFocus(WebTestRunner::WebTestProxyBase* proxy, bool focus);
- virtual void setAcceptAllCookies(bool accept);
- virtual std::string pathToLocalResource(const std::string& resource);
- virtual void setLocale(const std::string& locale);
- virtual void testFinished();
- virtual void closeRemainingWindows();
- virtual void deleteAllCookies();
- virtual int navigationEntryCount();
- virtual void goToOffset(int offset);
- virtual void reload();
- virtual void loadURLForFrame(const WebKit::WebURL& url,
- const std::string& frame_name);
- virtual bool allowExternalPages();
- virtual void captureHistoryForWindow(
- WebTestRunner::WebTestProxyBase* proxy,
- WebKit::WebVector<WebKit::WebHistoryItem>* history,
- size_t* currentEntryIndex);
+ virtual void ClearEditCommand() OVERRIDE;
+ virtual void SetEditCommand(const std::string& name,
+ const std::string& value) OVERRIDE;
+ virtual void SetGamepadProvider(scoped_ptr<RendererGamepadProvider>) OVERRIDE;
+ virtual void SetDeviceLightData(const double data) OVERRIDE;
+ virtual void SetDeviceMotionData(
+ const blink::WebDeviceMotionData& data) OVERRIDE;
+ virtual void SetDeviceOrientationData(
+ const blink::WebDeviceOrientationData& data) OVERRIDE;
+ virtual void SetScreenOrientation(
+ const blink::WebScreenOrientationType& orientation) OVERRIDE;
+ virtual void ResetScreenOrientation() OVERRIDE;
+ virtual void DidChangeBatteryStatus(
+ const blink::WebBatteryStatus& status) OVERRIDE;
+ virtual void PrintMessage(const std::string& message) OVERRIDE;
+ virtual void PostTask(WebTask* task) OVERRIDE;
+ virtual void PostDelayedTask(WebTask* task, long long ms) OVERRIDE;
+ virtual blink::WebString RegisterIsolatedFileSystem(
+ const blink::WebVector<blink::WebString>& absolute_filenames) OVERRIDE;
+ virtual long long GetCurrentTimeInMillisecond() OVERRIDE;
+ virtual blink::WebString GetAbsoluteWebStringFromUTF8Path(
+ const std::string& utf8_path) OVERRIDE;
+ virtual blink::WebURL LocalFileToDataURL(
+ const blink::WebURL& file_url) OVERRIDE;
+ virtual blink::WebURL RewriteLayoutTestsURL(
+ const std::string& utf8_url) OVERRIDE;
+ virtual TestPreferences* Preferences() OVERRIDE;
+ virtual void ApplyPreferences() OVERRIDE;
+ virtual std::string makeURLErrorDescription(const blink::WebURLError& error);
+ virtual void UseUnfortunateSynchronousResizeMode(bool enable) OVERRIDE;
+ virtual void EnableAutoResizeMode(const blink::WebSize& min_size,
+ const blink::WebSize& max_size) OVERRIDE;
+ virtual void DisableAutoResizeMode(const blink::WebSize& new_size) OVERRIDE;
+ virtual void ClearDevToolsLocalStorage() OVERRIDE;
+ virtual void ShowDevTools(const std::string& settings,
+ const std::string& frontend_url) OVERRIDE;
+ virtual void CloseDevTools() OVERRIDE;
+ virtual void EvaluateInWebInspector(long call_id,
+ const std::string& script) OVERRIDE;
+ virtual void ClearAllDatabases() OVERRIDE;
+ virtual void SetDatabaseQuota(int quota) OVERRIDE;
+ virtual blink::WebNotificationPresenter::Permission
+ CheckWebNotificationPermission(const GURL& origin) OVERRIDE;
+ virtual void GrantWebNotificationPermission(const GURL& origin,
+ bool permission_granted) OVERRIDE;
+ virtual void ClearWebNotificationPermissions() OVERRIDE;
+ virtual void SetDeviceScaleFactor(float factor) OVERRIDE;
+ virtual void SetDeviceColorProfile(const std::string& name) OVERRIDE;
+ virtual void SetFocus(WebTestProxyBase* proxy, bool focus) OVERRIDE;
+ virtual void SetAcceptAllCookies(bool accept) OVERRIDE;
+ virtual std::string PathToLocalResource(const std::string& resource) OVERRIDE;
+ virtual void SetLocale(const std::string& locale) OVERRIDE;
+ virtual void TestFinished() OVERRIDE;
+ virtual void CloseRemainingWindows() OVERRIDE;
+ virtual void DeleteAllCookies() OVERRIDE;
+ virtual int NavigationEntryCount() OVERRIDE;
+ virtual void GoToOffset(int offset) OVERRIDE;
+ virtual void Reload() OVERRIDE;
+ virtual void LoadURLForFrame(const blink::WebURL& url,
+ const std::string& frame_name) OVERRIDE;
+ virtual bool AllowExternalPages() OVERRIDE;
+ virtual std::string DumpHistoryForWindow(WebTestProxyBase* proxy) OVERRIDE;
void Reset();
- void set_proxy(::WebTestRunner::WebTestProxyBase* proxy) { proxy_ = proxy; }
- ::WebTestRunner::WebTestProxyBase* proxy() const { return proxy_; }
+ void set_proxy(WebTestProxyBase* proxy) { proxy_ = proxy; }
+ WebTestProxyBase* proxy() const { return proxy_; }
+
+ void ReportLeakDetectionResult(const LeakDetectionResult& result);
private:
// Message handlers.
const std::vector<unsigned>& current_entry_indexes);
void OnReset();
void OnNotifyDone();
+ void OnTryLeakDetection();
// After finishing the test, retrieves the audio, text, and pixel dumps from
// the TestRunner library and sends them to the browser process.
void CaptureDump();
+ void CaptureDumpPixels(const SkBitmap& snapshot);
+ void CaptureDumpComplete();
- ::WebTestRunner::WebTestProxyBase* proxy_;
+ WebTestProxyBase* proxy_;
RenderView* focused_view_;
- ::WebTestRunner::WebPreferences prefs_;
+ TestPreferences prefs_;
ShellTestConfiguration test_config_;
bool focus_on_next_commit_;
+ scoped_ptr<LeakDetector> leak_detector_;
+ bool needs_leak_detector_;
+
DISALLOW_COPY_AND_ASSIGN(WebKitTestRunner);
};