Index: Source/WebKit/chromium/tests/PageSerializerTest.cpp |
diff --git a/Source/WebKit/chromium/tests/PageSerializerTest.cpp b/Source/WebKit/chromium/tests/PageSerializerTest.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..302a65375cab3315197b07ba6daba5a583c3e55e |
--- /dev/null |
+++ b/Source/WebKit/chromium/tests/PageSerializerTest.cpp |
@@ -0,0 +1,173 @@ |
+/* |
+ * All original work by Opera Softare ASA contained in this source |
+ * code distribution is licensed as follows: |
+ * |
+ * Copyright (c) 2013, Opera Software ASA. 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. |
+ * 3. Neither the name of Opera Software ASA nor the names of its |
+ * contributors may be used to endorse or promote products derived |
+ * from this software without specific prior written permission. |
+ * |
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE |
+ * COPYRIGHT HOLDER OR 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. |
+ */ |
+ |
+#include "config.h" |
+ |
+#include "core/page/PageSerializer.h" |
+ |
+#include "FrameTestHelpers.h" |
+#include "URLTestHelpers.h" |
+#include "WebFrameClient.h" |
+#include "WebFrameImpl.h" |
+#include "WebSettings.h" |
+#include "WebViewImpl.h" |
+ |
abarth-chromium
2013/06/18 09:42:20
There's no need for all these blank lines. You ca
|
+#include "core/page/Page.h" |
+#include "core/platform/SerializedResource.h" |
+ |
+#include "public/platform/Platform.h" |
+#include "public/platform/WebString.h" |
+#include "public/platform/WebThread.h" |
+#include "public/platform/WebURL.h" |
+#include "public/platform/WebURLRequest.h" |
+#include "public/platform/WebURLResponse.h" |
+#include "public/platform/WebUnitTestSupport.h" |
+ |
+#include "wtf/Vector.h" |
+ |
+#include <gtest/gtest.h> |
+ |
+using namespace WebCore; |
+using namespace WebKit; |
+using WebKit::FrameTestHelpers::runPendingTasks; |
+using WebKit::URLTestHelpers::toKURL; |
+using WebKit::URLTestHelpers::registerMockedURLLoad; |
+ |
+namespace { |
+ |
+class TestWebFrameClient : public WebFrameClient { |
+public: |
+ virtual ~TestWebFrameClient() { } |
+}; |
+ |
+class PageSerializeTest : public testing::Test { |
abarth-chromium
2013/06/18 09:42:20
PageSerializeTest -> PageSerializerTest
|
+public: |
+ PageSerializeTest() : m_folder(WebString::fromUTF8("pageserializer/")), |
abarth-chromium
2013/06/18 09:42:20
Please add a line break between the () and the :
|
+ m_baseUrl(toKURL("http://www.test.com")) |
+ { |
+ } |
+ |
+protected: |
+ virtual void SetUp() |
+ { |
+ // Create and initialize the WebView. |
+ m_webViewImpl = static_cast<WebViewImpl*>(WebView::create(0)); |
+ |
+ // We want the images to load and JavaScript to be on. |
+ WebSettings* settings = m_webViewImpl->settings(); |
+ settings->setImagesEnabled(true); |
+ settings->setLoadsImagesAutomatically(true); |
+ settings->setJavaScriptEnabled(true); |
+ |
+ m_webViewImpl->initializeMainFrame(&m_webFrameClient); |
+ } |
+ |
+ virtual void TearDown() |
+ { |
+ Platform::current()->unitTestSupport()->unregisterAllMockedURLs(); |
+ m_webViewImpl->close(); |
abarth-chromium
2013/06/18 09:42:20
Please set m_webViewImpl to 0 after closing it.
|
+ } |
+ |
+ void setBaseUrl(const char* url) |
+ { |
+ m_baseUrl = toKURL(url); |
+ } |
+ |
+ void setBaseFolder(const char* folder) |
+ { |
+ m_folder = WebString::fromUTF8(folder); |
+ } |
+ |
+ void registerURL(const char* file, const char* mimeType) |
+ { |
+ registerMockedURLLoad(KURL(m_baseUrl, file), WebString::fromUTF8(file), m_folder, WebString::fromUTF8(mimeType)); |
+ } |
+ |
+ void serialize(const char* url) |
+ { |
+ WebURLRequest urlRequest; |
+ urlRequest.initialize(); |
+ urlRequest.setURL(KURL(m_baseUrl, url)); |
+ m_webViewImpl->mainFrame()->loadRequest(urlRequest); |
+ // Make sure any pending request get served. |
+ Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); |
+ // Some requests get delayed, run the timer. |
+ runPendingTasks(); |
+ // Server the delayed resources. |
+ Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); |
+ |
+ PageSerializer serializer(&m_resources); |
+ serializer.serialize(m_webViewImpl->mainFrameImpl()->frame()->page()); |
+ } |
+ |
+ Vector<SerializedResource>& getResources() |
+ { |
+ return m_resources; |
+ } |
+ |
+ bool isSerialized(const char* url, const char* mimeType) |
+ { |
+ KURL kURL = KURL(m_baseUrl, url); |
+ WTF::String mime(mimeType); |
+ for (size_t i = 0; i < m_resources.size(); ++i) { |
+ const SerializedResource& resource = m_resources[i]; |
+ if (resource.url == kURL && !resource.data->isEmpty() && equalIgnoringCase(resource.mimeType, mime)) |
+ return true; |
+ } |
+ return false; |
+ } |
+ |
+ WebViewImpl* m_webViewImpl; |
+ |
+private: |
+ TestWebFrameClient m_webFrameClient; |
+ WebString m_folder; |
+ KURL m_baseUrl; |
+ Vector<SerializedResource> m_resources; |
+}; |
+ |
+ |
+TEST_F(PageSerializeTest, InputImage) |
+{ |
+ setBaseFolder("pageserializer/input-image/"); |
+ |
+ registerURL("input-image.html", "text/html"); |
+ registerURL("button.png", "image/png"); |
+ |
+ serialize("input-image.html"); |
+ |
+ EXPECT_TRUE(isSerialized("button.png", "image/png")); |
+ EXPECT_FALSE(isSerialized("non-existing-button.png", "image/png")); |
+} |
+ |
+} |