diff options
Diffstat (limited to 'WebKit/chromium/tests')
-rw-r--r-- | WebKit/chromium/tests/RunAllTests.cpp | 17 | ||||
-rwxr-xr-x | WebKit/chromium/tests/TilingDataTest.cpp | 113 | ||||
-rw-r--r-- | WebKit/chromium/tests/WebFrameTest.cpp | 112 | ||||
-rw-r--r-- | WebKit/chromium/tests/data/iframes_test.html | 9 | ||||
-rw-r--r-- | WebKit/chromium/tests/data/invisible_iframe.html | 5 | ||||
-rw-r--r-- | WebKit/chromium/tests/data/visible_iframe.html | 5 | ||||
-rw-r--r-- | WebKit/chromium/tests/data/zero_sized_iframe.html | 5 |
7 files changed, 255 insertions, 11 deletions
diff --git a/WebKit/chromium/tests/RunAllTests.cpp b/WebKit/chromium/tests/RunAllTests.cpp index 0f3f82f..cfcfbee 100644 --- a/WebKit/chromium/tests/RunAllTests.cpp +++ b/WebKit/chromium/tests/RunAllTests.cpp @@ -33,18 +33,15 @@ #include "WebKit.h" #include "WebKitClient.h" - -// WebKitClient has a protected destructor, so we need to subclass. -class DummyWebKitClient : public WebKit::WebKitClient { -}; +#include <webkit/support/webkit_support.h> int main(int argc, char** argv) { - DummyWebKitClient dummyClient; - WebKit::initialize(&dummyClient); - - int result = TestSuite(argc, argv).Run(); - - WebKit::shutdown(); + TestSuite testSuite(argc, argv); + // TestSuite must be created before SetUpTestEnvironment so it performs + // initializations needed by WebKit support. + webkit_support::SetUpTestEnvironmentForUnitTests(); + int result = testSuite.Run(); + webkit_support::TearDownTestEnvironment(); return result; } diff --git a/WebKit/chromium/tests/TilingDataTest.cpp b/WebKit/chromium/tests/TilingDataTest.cpp index 463542b..ec18f01 100755 --- a/WebKit/chromium/tests/TilingDataTest.cpp +++ b/WebKit/chromium/tests/TilingDataTest.cpp @@ -30,7 +30,8 @@ #include "config.h" -#include "GLES2Texture.h" +#include "TilingData.h" + #include <gtest/gtest.h> using namespace WebCore; @@ -220,4 +221,114 @@ TEST(TilingDataTest, tileSizeY) EXPECT_EQ(3, TilingData(5, 12, 12, true).tileSizeY(2)); } +TEST(TilingDataTest, tileSizeX_and_tilePositionX) +{ + // Single tile cases: + EXPECT_EQ(1, TilingData(3, 1, 1, false).tileSizeX(0)); + EXPECT_EQ(0, TilingData(3, 1, 1, false).tilePositionX(0)); + EXPECT_EQ(1, TilingData(3, 1, 100, false).tileSizeX(0)); + EXPECT_EQ(0, TilingData(3, 1, 100, false).tilePositionX(0)); + EXPECT_EQ(3, TilingData(3, 3, 1, false).tileSizeX(0)); + EXPECT_EQ(0, TilingData(3, 3, 1, false).tilePositionX(0)); + EXPECT_EQ(3, TilingData(3, 3, 100, false).tileSizeX(0)); + EXPECT_EQ(0, TilingData(3, 3, 100, false).tilePositionX(0)); + EXPECT_EQ(1, TilingData(3, 1, 1, true).tileSizeX(0)); + EXPECT_EQ(0, TilingData(3, 1, 1, true).tilePositionX(0)); + EXPECT_EQ(1, TilingData(3, 1, 100, true).tileSizeX(0)); + EXPECT_EQ(0, TilingData(3, 1, 100, true).tilePositionX(0)); + EXPECT_EQ(3, TilingData(3, 3, 1, true).tileSizeX(0)); + EXPECT_EQ(0, TilingData(3, 3, 1, true).tilePositionX(0)); + EXPECT_EQ(3, TilingData(3, 3, 100, true).tileSizeX(0)); + EXPECT_EQ(0, TilingData(3, 3, 100, true).tilePositionX(0)); + + // Multiple tiles: + // no border + // positions 0, 3 + EXPECT_EQ(2, TilingData(3, 6, 1, false).numTiles()); + EXPECT_EQ(3, TilingData(3, 6, 1, false).tileSizeX(0)); + EXPECT_EQ(3, TilingData(3, 6, 1, false).tileSizeX(1)); + EXPECT_EQ(0, TilingData(3, 6, 1, false).tilePositionX(0)); + EXPECT_EQ(3, TilingData(3, 6, 1, false).tilePositionX(1)); + EXPECT_EQ(3, TilingData(3, 6, 100, false).tileSizeX(0)); + EXPECT_EQ(3, TilingData(3, 6, 100, false).tileSizeX(1)); + EXPECT_EQ(0, TilingData(3, 6, 100, false).tilePositionX(0)); + EXPECT_EQ(3, TilingData(3, 6, 100, false).tilePositionX(1)); + + // Multiple tiles: + // with border + // positions 0, 2, 3, 4 + EXPECT_EQ(4, TilingData(3, 6, 1, true).numTiles()); + EXPECT_EQ(2, TilingData(3, 6, 1, true).tileSizeX(0)); + EXPECT_EQ(1, TilingData(3, 6, 1, true).tileSizeX(1)); + EXPECT_EQ(1, TilingData(3, 6, 1, true).tileSizeX(2)); + EXPECT_EQ(2, TilingData(3, 6, 1, true).tileSizeX(3)); + EXPECT_EQ(0, TilingData(3, 6, 1, true).tilePositionX(0)); + EXPECT_EQ(2, TilingData(3, 6, 1, true).tilePositionX(1)); + EXPECT_EQ(3, TilingData(3, 6, 1, true).tilePositionX(2)); + EXPECT_EQ(4, TilingData(3, 6, 1, true).tilePositionX(3)); + EXPECT_EQ(2, TilingData(3, 6, 100, true).tileSizeX(0)); + EXPECT_EQ(1, TilingData(3, 6, 100, true).tileSizeX(1)); + EXPECT_EQ(1, TilingData(3, 6, 100, true).tileSizeX(2)); + EXPECT_EQ(2, TilingData(3, 6, 100, true).tileSizeX(3)); + EXPECT_EQ(0, TilingData(3, 6, 100, true).tilePositionX(0)); + EXPECT_EQ(2, TilingData(3, 6, 100, true).tilePositionX(1)); + EXPECT_EQ(3, TilingData(3, 6, 100, true).tilePositionX(2)); + EXPECT_EQ(4, TilingData(3, 6, 100, true).tilePositionX(3)); +} + +TEST(TilingDataTest, tileSizeY_and_tilePositionY) +{ + // Single tile cases: + EXPECT_EQ(1, TilingData(3, 1, 1, false).tileSizeY(0)); + EXPECT_EQ(0, TilingData(3, 1, 1, false).tilePositionY(0)); + EXPECT_EQ(1, TilingData(3, 100, 1, false).tileSizeY(0)); + EXPECT_EQ(0, TilingData(3, 100, 1, false).tilePositionY(0)); + EXPECT_EQ(3, TilingData(3, 1, 3, false).tileSizeY(0)); + EXPECT_EQ(0, TilingData(3, 1, 3, false).tilePositionY(0)); + EXPECT_EQ(3, TilingData(3, 100, 3, false).tileSizeY(0)); + EXPECT_EQ(0, TilingData(3, 100, 3, false).tilePositionY(0)); + EXPECT_EQ(1, TilingData(3, 1, 1, true).tileSizeY(0)); + EXPECT_EQ(0, TilingData(3, 1, 1, true).tilePositionY(0)); + EXPECT_EQ(1, TilingData(3, 100, 1, true).tileSizeY(0)); + EXPECT_EQ(0, TilingData(3, 100, 1, true).tilePositionY(0)); + EXPECT_EQ(3, TilingData(3, 1, 3, true).tileSizeY(0)); + EXPECT_EQ(0, TilingData(3, 1, 3, true).tilePositionY(0)); + EXPECT_EQ(3, TilingData(3, 100, 3, true).tileSizeY(0)); + EXPECT_EQ(0, TilingData(3, 100, 3, true).tilePositionY(0)); + + // Multiple tiles: + // no border + // positions 0, 3 + EXPECT_EQ(2, TilingData(3, 1, 6, false).numTiles()); + EXPECT_EQ(3, TilingData(3, 1, 6, false).tileSizeY(0)); + EXPECT_EQ(3, TilingData(3, 1, 6, false).tileSizeY(1)); + EXPECT_EQ(0, TilingData(3, 1, 6, false).tilePositionY(0)); + EXPECT_EQ(3, TilingData(3, 1, 6, false).tilePositionY(1)); + EXPECT_EQ(3, TilingData(3, 100, 6, false).tileSizeY(0)); + EXPECT_EQ(3, TilingData(3, 100, 6, false).tileSizeY(1)); + EXPECT_EQ(0, TilingData(3, 100, 6, false).tilePositionY(0)); + EXPECT_EQ(3, TilingData(3, 100, 6, false).tilePositionY(1)); + + // Multiple tiles: + // with border + // positions 0, 2, 3, 4 + EXPECT_EQ(4, TilingData(3, 1, 6, true).numTiles()); + EXPECT_EQ(2, TilingData(3, 1, 6, true).tileSizeY(0)); + EXPECT_EQ(1, TilingData(3, 1, 6, true).tileSizeY(1)); + EXPECT_EQ(1, TilingData(3, 1, 6, true).tileSizeY(2)); + EXPECT_EQ(2, TilingData(3, 1, 6, true).tileSizeY(3)); + EXPECT_EQ(0, TilingData(3, 1, 6, true).tilePositionY(0)); + EXPECT_EQ(2, TilingData(3, 1, 6, true).tilePositionY(1)); + EXPECT_EQ(3, TilingData(3, 1, 6, true).tilePositionY(2)); + EXPECT_EQ(4, TilingData(3, 1, 6, true).tilePositionY(3)); + EXPECT_EQ(2, TilingData(3, 100, 6, true).tileSizeY(0)); + EXPECT_EQ(1, TilingData(3, 100, 6, true).tileSizeY(1)); + EXPECT_EQ(1, TilingData(3, 100, 6, true).tileSizeY(2)); + EXPECT_EQ(2, TilingData(3, 100, 6, true).tileSizeY(3)); + EXPECT_EQ(0, TilingData(3, 100, 6, true).tilePositionY(0)); + EXPECT_EQ(2, TilingData(3, 100, 6, true).tilePositionY(1)); + EXPECT_EQ(3, TilingData(3, 100, 6, true).tilePositionY(2)); + EXPECT_EQ(4, TilingData(3, 100, 6, true).tilePositionY(3)); +} + } // namespace diff --git a/WebKit/chromium/tests/WebFrameTest.cpp b/WebKit/chromium/tests/WebFrameTest.cpp new file mode 100644 index 0000000..cf91cb4 --- /dev/null +++ b/WebKit/chromium/tests/WebFrameTest.cpp @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2010 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: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of Google Inc. 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 + * OWNER 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 <googleurl/src/gurl.h> +#include <gtest/gtest.h> +#include <webkit/support/webkit_support.h> +#include "WebFrame.h" +#include "WebFrameClient.h" +#include "WebString.h" +#include "WebURL.h" +#include "WebURLRequest.h" +#include "WebURLResponse.h" +#include "WebView.h" + +using namespace WebKit; + +namespace { + +class WebFrameTest : public testing::Test { +public: + WebFrameTest() {} + + virtual void TearDown() + { + webkit_support::UnregisterAllMockedURLs(); + } + + void registerMockedURLLoad(const WebURL& url, const WebURLResponse& response, const WebString& fileName) + { + std::string filePath = webkit_support::GetWebKitRootDir().utf8(); + filePath.append("/WebKit/chromium/tests/data/"); + filePath.append(fileName.utf8()); + webkit_support::RegisterMockedURL(url, response, WebString::fromUTF8(filePath)); + } + + void serveRequests() + { + webkit_support::ServeAsynchronousMockedRequests(); + } +}; + +class TestWebFrameClient : public WebFrameClient { +}; + +TEST_F(WebFrameTest, ContentText) +{ + // Register our resources. + WebURLResponse response; + response.initialize(); + response.setMIMEType("text/html"); + std::string rootURL = "http://www.test.com/"; + const char* files[] = { "iframes_test.html", "visible_iframe.html", + "invisible_iframe.html", "zero_sized_iframe.html" }; + for (int i = 0; i < (sizeof(files) / sizeof(char*)); ++i) { + WebURL webURL = GURL(rootURL + files[i]); + registerMockedURLLoad(webURL, response, WebString::fromUTF8(files[i])); + } + + // Create and initialize the WebView. + TestWebFrameClient webFrameClient; + WebView* webView = WebView::create(0, 0); + webView->initializeMainFrame(&webFrameClient); + + // Load the main frame URL. + WebURL testURL(GURL(rootURL + files[0])); + WebURLRequest urlRequest; + urlRequest.initialize(); + urlRequest.setURL(testURL); + webView->mainFrame()->loadRequest(urlRequest); + + // Load all pending asynchronous requests. + serveRequests(); + + // Now retrieve the frames text and test it only includes visible elements. + std::string content = webView->mainFrame()->contentAsText(1024).utf8(); + EXPECT_NE(std::string::npos, content.find(" visible paragraph")); + EXPECT_NE(std::string::npos, content.find(" visible iframe")); + EXPECT_EQ(std::string::npos, content.find(" invisible pararaph")); + EXPECT_EQ(std::string::npos, content.find(" invisible iframe")); + EXPECT_EQ(std::string::npos, content.find("iframe with zero size")); + + webView->close(); +} + +} diff --git a/WebKit/chromium/tests/data/iframes_test.html b/WebKit/chromium/tests/data/iframes_test.html new file mode 100644 index 0000000..425709b --- /dev/null +++ b/WebKit/chromium/tests/data/iframes_test.html @@ -0,0 +1,9 @@ +<html> + <body> + <iframe src="visible_iframe.html"></iframe> + <iframe width=0 height=0 src="zero_sized_iframe.html"></iframe> + <iframe style="visibility:hidden;" src="invisible_iframe.html"></iframe> + <p>This is a visible paragraph.</p> + <p style="visibility:hidden;">This is an invisible paragraph.</p> + </body> +</html> diff --git a/WebKit/chromium/tests/data/invisible_iframe.html b/WebKit/chromium/tests/data/invisible_iframe.html new file mode 100644 index 0000000..e5686c7 --- /dev/null +++ b/WebKit/chromium/tests/data/invisible_iframe.html @@ -0,0 +1,5 @@ +<html> + <body> + This is an invisible frame. + </body> +</html> diff --git a/WebKit/chromium/tests/data/visible_iframe.html b/WebKit/chromium/tests/data/visible_iframe.html new file mode 100644 index 0000000..291af3d --- /dev/null +++ b/WebKit/chromium/tests/data/visible_iframe.html @@ -0,0 +1,5 @@ +<html> + <body> + This is a visible iframe. + </body> +</html> diff --git a/WebKit/chromium/tests/data/zero_sized_iframe.html b/WebKit/chromium/tests/data/zero_sized_iframe.html new file mode 100644 index 0000000..6728cab --- /dev/null +++ b/WebKit/chromium/tests/data/zero_sized_iframe.html @@ -0,0 +1,5 @@ +<html> + <body> + This is an iframe with zero size. + </body> +</html> |