diff options
Diffstat (limited to 'Source/WebKit/chromium/tests')
-rw-r--r-- | Source/WebKit/chromium/tests/CCThreadTaskTest.cpp | 62 | ||||
-rw-r--r-- | Source/WebKit/chromium/tests/CCThreadTest.cpp | 90 | ||||
-rw-r--r-- | Source/WebKit/chromium/tests/IDBBindingUtilitiesTest.cpp | 1 | ||||
-rw-r--r-- | Source/WebKit/chromium/tests/PopupMenuTest.cpp | 1 | ||||
-rw-r--r-- | Source/WebKit/chromium/tests/RunAllTests.cpp | 3 | ||||
-rwxr-xr-x | Source/WebKit/chromium/tests/TilingDataTest.cpp | 59 | ||||
-rw-r--r-- | Source/WebKit/chromium/tests/TransparencyWinTest.cpp | 19 | ||||
-rw-r--r-- | Source/WebKit/chromium/tests/UniscribeHelperTest.cpp | 4 | ||||
-rw-r--r-- | Source/WebKit/chromium/tests/WebFrameTest.cpp | 84 |
9 files changed, 282 insertions, 41 deletions
diff --git a/Source/WebKit/chromium/tests/CCThreadTaskTest.cpp b/Source/WebKit/chromium/tests/CCThreadTaskTest.cpp new file mode 100644 index 0000000..1c5f877 --- /dev/null +++ b/Source/WebKit/chromium/tests/CCThreadTaskTest.cpp @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2011 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 INC. 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 INC. 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. + */ + +#include "config.h" + +#include "cc/CCThreadTask.h" + +#include <gmock/gmock.h> +#include <gtest/gtest.h> + +using namespace WTF; +using namespace WebCore; + +namespace { + +class Mock { +public: + MOCK_METHOD0(method0, void()); + MOCK_METHOD1(method1, void(int a1)); + MOCK_METHOD2(method2, void(int a1, int a2)); + MOCK_METHOD3(method3, void(int a1, int a2, int a3)); + MOCK_METHOD4(method4, void(int a1, int a2, int a3, int a4)); +}; + +TEST(CCThreadTaskTest, runnableMethods) +{ + Mock mock; + EXPECT_CALL(mock, method0()).Times(1); + EXPECT_CALL(mock, method1(9)).Times(1); + EXPECT_CALL(mock, method2(9, 8)).Times(1); + EXPECT_CALL(mock, method3(9, 8, 7)).Times(1); + EXPECT_CALL(mock, method4(9, 8, 7, 6)).Times(1); + + createCCThreadTask(&mock, &Mock::method0)->performTask(); + createCCThreadTask(&mock, &Mock::method1, 9)->performTask(); + createCCThreadTask(&mock, &Mock::method2, 9, 8)->performTask(); + createCCThreadTask(&mock, &Mock::method3, 9, 8, 7)->performTask(); + createCCThreadTask(&mock, &Mock::method4, 9, 8, 7, 6)->performTask(); +} + +} // namespace diff --git a/Source/WebKit/chromium/tests/CCThreadTest.cpp b/Source/WebKit/chromium/tests/CCThreadTest.cpp new file mode 100644 index 0000000..04fba46 --- /dev/null +++ b/Source/WebKit/chromium/tests/CCThreadTest.cpp @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2011 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 INC. 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 INC. 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. + */ + +#include "config.h" + +#include "cc/CCThread.h" + +#include "cc/CCCompletionEvent.h" +#include "cc/CCMainThreadTask.h" +#include "cc/CCThreadTask.h" +#include <gtest/gtest.h> +#include <webkit/support/webkit_support.h> + +using namespace WebCore; + +namespace { + +class PingPongUsingCondition { +public: + void ping(CCCompletionEvent* completion) + { + hitThreadID = currentThread(); + completion->signal(); + } + + ThreadIdentifier hitThreadID; +}; + + +TEST(CCThreadTest, pingPongUsingCondition) +{ + OwnPtr<CCThread> thread = CCThread::create(); + PingPongUsingCondition target; + CCCompletionEvent completion; + thread->postTask(createCCThreadTask(&target, &PingPongUsingCondition::ping, &completion)); + completion.wait(); + + EXPECT_EQ(thread->threadID(), target.hitThreadID); +} + +class PingPongTestUsingTasks { +public: + void ping() + { + CCMainThread::postTask(createMainThreadTask(this, &PingPongTestUsingTasks::pong)); + hit = true; + } + + void pong() + { + EXPECT_TRUE(isMainThread()); + webkit_support::QuitMessageLoop(); + } + + bool hit; +}; + +TEST(CCThreadTest, startPostAndWaitOnCondition) +{ + OwnPtr<CCThread> thread = CCThread::create(); + + PingPongTestUsingTasks target; + thread->postTask(createCCThreadTask(&target, &PingPongTestUsingTasks::ping)); + webkit_support::RunMessageLoop(); + + EXPECT_TRUE(target.hit); +} + +} // namespace diff --git a/Source/WebKit/chromium/tests/IDBBindingUtilitiesTest.cpp b/Source/WebKit/chromium/tests/IDBBindingUtilitiesTest.cpp index 0454ea9..ac4282b 100644 --- a/Source/WebKit/chromium/tests/IDBBindingUtilitiesTest.cpp +++ b/Source/WebKit/chromium/tests/IDBBindingUtilitiesTest.cpp @@ -53,7 +53,6 @@ public: } private: - v8::Locker m_locker; v8::HandleScope m_scope; v8::Persistent<v8::Context> m_context; }; diff --git a/Source/WebKit/chromium/tests/PopupMenuTest.cpp b/Source/WebKit/chromium/tests/PopupMenuTest.cpp index 8c53ffc..5a18708 100644 --- a/Source/WebKit/chromium/tests/PopupMenuTest.cpp +++ b/Source/WebKit/chromium/tests/PopupMenuTest.cpp @@ -142,6 +142,7 @@ public: virtual bool confirmComposition(const WebString& text) { return true; } virtual WebTextInputType textInputType() { return WebKit::WebTextInputTypeNone; } virtual WebRect caretOrSelectionBounds() { return WebRect(); } + virtual bool selectionRange(WebPoint& start, WebPoint& end) const { return false; } virtual void setTextDirection(WebTextDirection) { } }; diff --git a/Source/WebKit/chromium/tests/RunAllTests.cpp b/Source/WebKit/chromium/tests/RunAllTests.cpp index b213de7..500c3dc 100644 --- a/Source/WebKit/chromium/tests/RunAllTests.cpp +++ b/Source/WebKit/chromium/tests/RunAllTests.cpp @@ -39,8 +39,11 @@ #include "WebUnitTests.h" #endif +#include <gmock/gmock.h> + int main(int argc, char** argv) { + ::testing::InitGoogleMock(&argc, argv); TestSuite testSuite(argc, argv); // TestSuite must be created before SetUpTestEnvironment so it performs // initializations needed by WebKit support. diff --git a/Source/WebKit/chromium/tests/TilingDataTest.cpp b/Source/WebKit/chromium/tests/TilingDataTest.cpp index a41f7fe..7573dc7 100755 --- a/Source/WebKit/chromium/tests/TilingDataTest.cpp +++ b/Source/WebKit/chromium/tests/TilingDataTest.cpp @@ -49,6 +49,24 @@ TEST(TilingDataTest, numTiles_NoTiling) TEST(TilingDataTest, numTiles_TilingNoBorders) { + EXPECT_EQ(0, TilingData(0, 0, 0, false).numTiles()); + EXPECT_EQ(0, TilingData(0, 4, 0, false).numTiles()); + EXPECT_EQ(0, TilingData(0, 0, 4, false).numTiles()); + EXPECT_EQ(0, TilingData(4, 4, 0, false).numTiles()); + EXPECT_EQ(0, TilingData(4, 0, 4, false).numTiles()); + EXPECT_EQ(0, TilingData(-8, 1, 1, false).numTiles()); + EXPECT_EQ(0, TilingData(-1, 1, 1, false).numTiles()); + EXPECT_EQ(0, TilingData(0, 1, 1, false).numTiles()); + + EXPECT_EQ(1, TilingData(1, 1, 1, false).numTiles()); + EXPECT_EQ(2, TilingData(1, 1, 2, false).numTiles()); + EXPECT_EQ(2, TilingData(1, 2, 1, false).numTiles()); + EXPECT_EQ(1, TilingData(2, 1, 1, false).numTiles()); + EXPECT_EQ(1, TilingData(2, 1, 2, false).numTiles()); + EXPECT_EQ(1, TilingData(2, 2, 1, false).numTiles()); + EXPECT_EQ(1, TilingData(2, 2, 2, false).numTiles()); + EXPECT_EQ(1, TilingData(3, 3, 3, false).numTiles()); + EXPECT_EQ(1, TilingData(4, 1, 4, false).numTiles()); EXPECT_EQ(1, TilingData(4, 2, 4, false).numTiles()); EXPECT_EQ(1, TilingData(4, 3, 4, false).numTiles()); @@ -82,6 +100,23 @@ TEST(TilingDataTest, numTiles_TilingNoBorders) TEST(TilingDataTest, numTiles_TilingWithBorders) { + EXPECT_EQ(0, TilingData(0, 0, 0, true).numTiles()); + EXPECT_EQ(0, TilingData(0, 4, 0, true).numTiles()); + EXPECT_EQ(0, TilingData(0, 0, 4, true).numTiles()); + EXPECT_EQ(0, TilingData(4, 4, 0, true).numTiles()); + EXPECT_EQ(0, TilingData(4, 0, 4, true).numTiles()); + EXPECT_EQ(0, TilingData(-8, 1, 1, true).numTiles()); + EXPECT_EQ(0, TilingData(-1, 1, 1, true).numTiles()); + EXPECT_EQ(0, TilingData(0, 1, 1, true).numTiles()); + + EXPECT_EQ(1, TilingData(1, 1, 1, true).numTiles()); + EXPECT_EQ(0, TilingData(1, 1, 2, true).numTiles()); + EXPECT_EQ(0, TilingData(1, 2, 1, true).numTiles()); + EXPECT_EQ(1, TilingData(2, 1, 1, true).numTiles()); + EXPECT_EQ(1, TilingData(2, 1, 2, true).numTiles()); + EXPECT_EQ(1, TilingData(2, 2, 1, true).numTiles()); + EXPECT_EQ(1, TilingData(2, 2, 2, true).numTiles()); + EXPECT_EQ(1, TilingData(3, 1, 3, true).numTiles()); EXPECT_EQ(1, TilingData(3, 2, 3, true).numTiles()); EXPECT_EQ(1, TilingData(3, 3, 3, true).numTiles()); @@ -361,7 +396,7 @@ TEST(TilingDataTest, setTotalSize) EXPECT_EQ(2, data.tileSizeY(2)); } -TEST(TilingDataTest, setMaxTextureSize) +TEST(TilingDataTest, setMaxTextureSizeNoBorders) { TilingData data(8, 16, 32, false); EXPECT_EQ(2, data.numTilesX()); @@ -383,4 +418,26 @@ TEST(TilingDataTest, setMaxTextureSize) EXPECT_EQ(7, data.numTilesY()); } +TEST(TilingDataTest, setMaxTextureSizeBorders) +{ + TilingData data(8, 16, 32, true); + EXPECT_EQ(3, data.numTilesX()); + EXPECT_EQ(5, data.numTilesY()); + + data.setMaxTextureSize(32); + EXPECT_EQ(32, data.maxTextureSize()); + EXPECT_EQ(1, data.numTilesX()); + EXPECT_EQ(1, data.numTilesY()); + + data.setMaxTextureSize(2); + EXPECT_EQ(2, data.maxTextureSize()); + EXPECT_EQ(0, data.numTilesX()); + EXPECT_EQ(0, data.numTilesY()); + + data.setMaxTextureSize(5); + EXPECT_EQ(5, data.maxTextureSize()); + EXPECT_EQ(5, data.numTilesX()); + EXPECT_EQ(10, data.numTilesY()); +} + } // namespace diff --git a/Source/WebKit/chromium/tests/TransparencyWinTest.cpp b/Source/WebKit/chromium/tests/TransparencyWinTest.cpp index ee3307f..191bf9e 100644 --- a/Source/WebKit/chromium/tests/TransparencyWinTest.cpp +++ b/Source/WebKit/chromium/tests/TransparencyWinTest.cpp @@ -50,8 +50,8 @@ static FloatRect RECTToFloatRect(const RECT* rect) static void drawNativeRect(GraphicsContext* context, int x, int y, int w, int h) { - skia::PlatformCanvas* canvas = context->platformContext()->canvas(); - HDC dc = canvas->beginPlatformPaint(); + SkCanvas* canvas = context->platformContext()->canvas(); + HDC dc = skia::BeginPlatformPaint(canvas); RECT innerRc; innerRc.left = x; @@ -61,13 +61,12 @@ static void drawNativeRect(GraphicsContext* context, FillRect(dc, &innerRc, reinterpret_cast<HBRUSH>(GetStockObject(BLACK_BRUSH))); - canvas->endPlatformPaint(); + skia::EndPlatformPaint(canvas); } static Color getPixelAt(GraphicsContext* context, int x, int y) { - const SkBitmap& bitmap = context->platformContext()->canvas()-> - getTopPlatformDevice().accessBitmap(false); + const SkBitmap& bitmap = context->platformContext()->canvas()->getTopDevice()->accessBitmap(false); return Color(*reinterpret_cast<const RGBA32*>(bitmap.getAddr32(x, y))); } @@ -75,8 +74,7 @@ static Color getPixelAt(GraphicsContext* context, int x, int y) // Windows messing it up. static void clearTopLayerAlphaChannel(GraphicsContext* context) { - SkBitmap& bitmap = const_cast<SkBitmap&>(context->platformContext()-> - canvas()->getTopPlatformDevice().accessBitmap(false)); + SkBitmap& bitmap = const_cast<SkBitmap&>(context->platformContext()->canvas()->getTopDevice()->accessBitmap(false)); for (int y = 0; y < bitmap.height(); y++) { uint32_t* row = bitmap.getAddr32(0, y); for (int x = 0; x < bitmap.width(); x++) @@ -87,8 +85,7 @@ static void clearTopLayerAlphaChannel(GraphicsContext* context) // Clears the alpha channel on the specified pixel. static void clearTopLayerAlphaPixel(GraphicsContext* context, int x, int y) { - SkBitmap& bitmap = const_cast<SkBitmap&>(context->platformContext()-> - canvas()->getTopPlatformDevice().accessBitmap(false)); + SkBitmap& bitmap = const_cast<SkBitmap&>(context->platformContext()->canvas()->getTopDevice()->accessBitmap(false)); *bitmap.getAddr32(x, y) &= 0x00FFFFFF; } @@ -559,9 +556,7 @@ TEST(TransparencyWin, Scale) // the helper goes out of scope. We don't want to call // clearTopLayerAlphaChannel because that will actually clear the whole // canvas (since we have no extra layer!). - SkBitmap& bitmap = const_cast<SkBitmap&>(helper.context()-> - platformContext()->canvas()->getTopPlatformDevice(). - accessBitmap(false)); + SkBitmap& bitmap = const_cast<SkBitmap&>(helper.context()->platformContext()->canvas()->getTopDevice()->accessBitmap(false)); *bitmap.getAddr32(2, 2) &= 0x00FFFFFF; helper.composite(); } diff --git a/Source/WebKit/chromium/tests/UniscribeHelperTest.cpp b/Source/WebKit/chromium/tests/UniscribeHelperTest.cpp index 8aaed11..ec88f43 100644 --- a/Source/WebKit/chromium/tests/UniscribeHelperTest.cpp +++ b/Source/WebKit/chromium/tests/UniscribeHelperTest.cpp @@ -115,7 +115,7 @@ TEST_F(UniscribeTest, TooBig) { UniscribeHelper uniscribe( input.characters(), static_cast<int>(input.length()), - false, hfont, scriptCache, &properties); + false, hfont, scriptCache, &properties, 0); uniscribe.initWithOptionalLengthProtection(false); // There should be one shaping entry, with nothing in it. @@ -148,7 +148,7 @@ TEST_F(UniscribeTest, TooBig) { UniscribeHelper uniscribe( input.characters(), static_cast<int>(input.length()), - false, hfont, scriptCache, &properties); + false, hfont, scriptCache, &properties, 0); uniscribe.initWithOptionalLengthProtection(true); // There should be 0 runs and shapes. diff --git a/Source/WebKit/chromium/tests/WebFrameTest.cpp b/Source/WebKit/chromium/tests/WebFrameTest.cpp index 891fa83..b38d544 100644 --- a/Source/WebKit/chromium/tests/WebFrameTest.cpp +++ b/Source/WebKit/chromium/tests/WebFrameTest.cpp @@ -35,11 +35,13 @@ #include <webkit/support/webkit_support.h> #include "WebFrame.h" #include "WebFrameClient.h" +#include "WebSettings.h" #include "WebString.h" #include "WebURL.h" #include "WebURLRequest.h" #include "WebURLResponse.h" #include "WebView.h" +#include "v8.h" using namespace WebKit; @@ -47,25 +49,44 @@ namespace { class WebFrameTest : public testing::Test { public: - WebFrameTest() {} + WebFrameTest() + : baseURL("http://www.test.com/") + { + } virtual void TearDown() { webkit_support::UnregisterAllMockedURLs(); } - void registerMockedURLLoad(const WebURL& url, const WebURLResponse& response, const WebString& fileName) + void registerMockedURLLoad(const std::string& fileName) { + WebURLResponse response; + response.initialize(); + response.setMIMEType("text/html"); + std::string filePath = webkit_support::GetWebKitRootDir().utf8(); - filePath.append("/Source/WebKit/chromium/tests/data/"); - filePath.append(fileName.utf8()); - webkit_support::RegisterMockedURL(url, response, WebString::fromUTF8(filePath)); + filePath += "/Source/WebKit/chromium/tests/data/"; + filePath += fileName; + + webkit_support::RegisterMockedURL(WebURL(GURL(baseURL + fileName)), response, WebString::fromUTF8(filePath)); } void serveRequests() { webkit_support::ServeAsynchronousMockedRequests(); } + + void loadFrame(WebFrame* frame, const std::string& fileName) + { + WebURLRequest urlRequest; + urlRequest.initialize(); + urlRequest.setURL(WebURL(GURL(baseURL + fileName))); + frame->loadRequest(urlRequest); + } + +protected: + std::string baseURL; }; class TestWebFrameClient : public WebFrameClient { @@ -73,31 +94,17 @@ 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])); - } + registerMockedURLLoad("iframes_test.html"); + registerMockedURLLoad("visible_iframe.html"); + registerMockedURLLoad("invisible_iframe.html"); + registerMockedURLLoad("zero_sized_iframe.html"); - // Create and initialize the WebView. + // Create and initialize the WebView. TestWebFrameClient webFrameClient; WebView* webView = WebView::create(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. + loadFrame(webView->mainFrame(), "iframes_test.html"); serveRequests(); // Now retrieve the frames text and test it only includes visible elements. @@ -111,4 +118,31 @@ TEST_F(WebFrameTest, ContentText) webView->close(); } +TEST_F(WebFrameTest, FrameForEnteredContext) +{ + registerMockedURLLoad("iframes_test.html"); + registerMockedURLLoad("visible_iframe.html"); + registerMockedURLLoad("invisible_iframe.html"); + registerMockedURLLoad("zero_sized_iframe.html"); + + // Create and initialize the WebView. + TestWebFrameClient webFrameClient; + WebView* webView = WebView::create(0); + webView->settings()->setJavaScriptEnabled(true); + webView->initializeMainFrame(&webFrameClient); + + loadFrame(webView->mainFrame(), "iframes_test.html"); + serveRequests(); + + v8::HandleScope scope; + EXPECT_EQ(webView->mainFrame(), + WebFrame::frameForContext( + webView->mainFrame()->mainWorldScriptContext())); + EXPECT_EQ(webView->mainFrame()->firstChild(), + WebFrame::frameForContext( + webView->mainFrame()->firstChild()->mainWorldScriptContext())); + + webView->close(); +} + } |