summaryrefslogtreecommitdiffstats
path: root/Source/WebKit/chromium/tests
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/chromium/tests')
-rw-r--r--Source/WebKit/chromium/tests/CCThreadTaskTest.cpp62
-rw-r--r--Source/WebKit/chromium/tests/CCThreadTest.cpp90
-rw-r--r--Source/WebKit/chromium/tests/IDBBindingUtilitiesTest.cpp1
-rw-r--r--Source/WebKit/chromium/tests/PopupMenuTest.cpp1
-rw-r--r--Source/WebKit/chromium/tests/RunAllTests.cpp3
-rwxr-xr-xSource/WebKit/chromium/tests/TilingDataTest.cpp59
-rw-r--r--Source/WebKit/chromium/tests/TransparencyWinTest.cpp19
-rw-r--r--Source/WebKit/chromium/tests/UniscribeHelperTest.cpp4
-rw-r--r--Source/WebKit/chromium/tests/WebFrameTest.cpp84
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();
+}
+
}