[chromium] Enable more of webkit_unit_tests in component builds
https://bugs.webkit.org/show_bug.cgi?id=109369

Reviewed by Darin Fisher.

Add a set of testing APIs to a WebUnitTestSupport interface available off of Platform for unit tests to access
in component builds.

* chromium/public/Platform.h:
(WebKit):
(Platform):
(WebKit::Platform::unitTestSupport):
* chromium/public/WebUnitTestSupport.h: Added.
(WebKit):
(WebUnitTestSupport):
(WebKit::WebUnitTestSupport::registerMockedURL):
(WebKit::WebUnitTestSupport::registerMockedErrorURL):
(WebKit::WebUnitTestSupport::unregisterMockedURL):
(WebKit::WebUnitTestSupport::unregisterAllMockedURLs):
(WebKit::WebUnitTestSupport::serveAsynchronousMockedRequests):
(WebKit::WebUnitTestSupport::webKitRootDir):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk/Source/Platform/chromium/public@142388 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Platform.h b/Platform.h
index 09366ee..a7de3bc 100644
--- a/Platform.h
+++ b/Platform.h
@@ -67,13 +67,14 @@
 class WebSandboxSupport;
 class WebSocketStreamHandle;
 class WebStorageNamespace;
+class WebUnitTestSupport;
 class WebThemeEngine;
 class WebThread;
 class WebURL;
 class WebURLLoader;
 class WebWorkerRunLoop;
-struct WebLocalizedString;
 struct WebFloatPoint;
+struct WebLocalizedString;
 struct WebSize;
 
 class Platform {
@@ -360,6 +361,13 @@
     virtual void callOnMainThread(void (*func)(void*), void* context) { }
 
 
+    // Testing -------------------------------------------------------------
+
+#define HAVE_WEBUNITTESTSUPPORT 1
+    // Get a pointer to testing support interfaces. Will not be available in production builds.
+    virtual WebUnitTestSupport* unitTestSupport() { return 0; }
+
+
     // Tracing -------------------------------------------------------------
 
     // Get a pointer to the enabled state of the given trace category. The
diff --git a/WebUnitTestSupport.h b/WebUnitTestSupport.h
new file mode 100644
index 0000000..9a9e3ec
--- /dev/null
+++ b/WebUnitTestSupport.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WebUnitTestSupport_h
+#define WebUnitTestSupport_h
+
+#include "WebCommon.h"
+#include "WebString.h"
+
+namespace WebKit {
+
+class WebURL;
+class WebURLResponse;
+struct WebURLError;
+
+class WebUnitTestSupport {
+public:
+    virtual void registerMockedURL(const WebURL&, const WebURLResponse&, const WebString& filePath) { }
+
+    // Registers the error to be returned when |url| is requested.
+    virtual void registerMockedErrorURL(const WebURL&, const WebURLResponse&, const WebURLError&) { }
+
+    // Unregisters URLs so they are no longer mocked.
+    virtual void unregisterMockedURL(const WebURL&) { }
+    virtual void unregisterAllMockedURLs() { }
+
+    // Causes all pending asynchronous requests to be served. When this method
+    // returns all the pending requests have been processed.
+    virtual void serveAsynchronousMockedRequests() { }
+
+    // Returns the root directory of the WebKit code.
+    virtual WebString webKitRootDir() { return WebString(); }
+};
+
+}
+
+#endif // WebUnitTestSupport_h