diff options
author | Alexis Menard <alexis.menard@trolltech.com> | 2011-06-02 13:17:54 (GMT) |
---|---|---|
committer | Alexis Menard <alexis.menard@trolltech.com> | 2011-06-02 13:17:54 (GMT) |
commit | c3c0bb5fef8452b10bfaf38fe45fb29a606483b2 (patch) | |
tree | b742f080e263a376750b608d3c141ecde583a376 /src | |
parent | 00f54ea349fab3773331d2085335258f3aad11c6 (diff) | |
download | Qt-c3c0bb5fef8452b10bfaf38fe45fb29a606483b2.zip Qt-c3c0bb5fef8452b10bfaf38fe45fb29a606483b2.tar.gz Qt-c3c0bb5fef8452b10bfaf38fe45fb29a606483b2.tar.bz2 |
Updated WebKit to efbf910ad7c49e8cdf81411b4ac0abeea0efd8f8
Reviewed by: Andreas Kling
Diffstat (limited to 'src')
19 files changed, 324 insertions, 58 deletions
diff --git a/src/3rdparty/webkit/.tag b/src/3rdparty/webkit/.tag index 7993dd6..3103954 100644 --- a/src/3rdparty/webkit/.tag +++ b/src/3rdparty/webkit/.tag @@ -1 +1 @@ -9b4474ac44ee2f3311b435bd45630f5c2c357217 +efbf910ad7c49e8cdf81411b4ac0abeea0efd8f8 diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/ChangeLog b/src/3rdparty/webkit/Source/JavaScriptCore/ChangeLog index 0fba3dd..fc937e8 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/ChangeLog +++ b/src/3rdparty/webkit/Source/JavaScriptCore/ChangeLog @@ -1,3 +1,24 @@ +2011-05-31 Oliver Hunt <oliver@apple.com> + + Reviewed by Geoffrey Garen. + + Freezing a function and its prototype causes browser to crash. + https://bugs.webkit.org/show_bug.cgi?id=61758 + + Make JSObject::preventExtensions virtual so that we can override it + and instantiate all lazy + + * JavaScriptCore.exp: + * runtime/JSFunction.cpp: + (JSC::createPrototypeProperty): + (JSC::JSFunction::preventExtensions): + (JSC::JSFunction::getOwnPropertySlot): + * runtime/JSFunction.h: + * runtime/JSObject.h: + * runtime/JSObject.cpp: + (JSC::JSObject::seal): + (JSC::JSObject::seal): + 2011-05-12 Maciej Stachowiak <mjs@apple.com> Reviewed by Darin Adler. diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSFunction.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSFunction.cpp index 639cea8..407b3b1 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSFunction.cpp +++ b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSFunction.cpp @@ -174,6 +174,23 @@ JSValue JSFunction::lengthGetter(ExecState*, JSValue slotBase, const Identifier& return jsNumber(thisObj->jsExecutable()->parameterCount()); } +static inline WriteBarrierBase<Unknown>* createPrototypeProperty(JSGlobalData& globalData, JSGlobalObject* globalObject, JSFunction* function) +{ + ExecState* exec = globalObject->globalExec(); + if (WriteBarrierBase<Unknown>* location = function->getDirectLocation(globalData, exec->propertyNames().prototype)) + return location; + JSObject* prototype = constructEmptyObject(exec, globalObject->emptyObjectStructure()); + prototype->putDirect(globalData, exec->propertyNames().constructor, function, DontEnum); + function->putDirect(globalData, exec->propertyNames().prototype, prototype, DontDelete | DontEnum); + return function->getDirectLocation(exec->globalData(), exec->propertyNames().prototype); +} + +void JSFunction::preventExtensions(JSGlobalData& globalData) +{ + createPrototypeProperty(globalData, scope()->globalObject.get(), this); + JSObject::preventExtensions(globalData); +} + bool JSFunction::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot) { if (isHostFunction()) @@ -182,12 +199,8 @@ bool JSFunction::getOwnPropertySlot(ExecState* exec, const Identifier& propertyN if (propertyName == exec->propertyNames().prototype) { WriteBarrierBase<Unknown>* location = getDirectLocation(exec->globalData(), propertyName); - if (!location) { - JSObject* prototype = constructEmptyObject(exec, scope()->globalObject->emptyObjectStructure()); - prototype->putDirect(exec->globalData(), exec->propertyNames().constructor, this, DontEnum); - putDirect(exec->globalData(), exec->propertyNames().prototype, prototype, DontDelete | DontEnum); - location = getDirectLocation(exec->globalData(), propertyName); - } + if (!location) + location = createPrototypeProperty(exec->globalData(), scope()->globalObject.get(), this); slot.setValue(this, location->get(), offsetForLocation(location)); } diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSFunction.h b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSFunction.h index ba0a792..42fd62a 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSFunction.h +++ b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSFunction.h @@ -91,6 +91,7 @@ namespace JSC { bool isHostFunctionNonInline() const; + virtual void preventExtensions(JSGlobalData&); virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&); virtual bool getOwnPropertyDescriptor(ExecState*, const Identifier&, PropertyDescriptor&); virtual void getOwnPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode mode = ExcludeDontEnumProperties); diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.cpp index ae29a7b..ce21703 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.cpp +++ b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.cpp @@ -508,11 +508,17 @@ JSObject* JSObject::unwrappedObject() void JSObject::seal(JSGlobalData& globalData) { + if (isSealed(globalData)) + return; + preventExtensions(globalData); setStructure(globalData, Structure::sealTransition(globalData, m_structure.get())); } void JSObject::freeze(JSGlobalData& globalData) { + if (isFrozen(globalData)) + return; + preventExtensions(globalData); setStructure(globalData, Structure::freezeTransition(globalData, m_structure.get())); } diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.h b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.h index a6b78bd..768c457 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.h +++ b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.h @@ -211,7 +211,7 @@ namespace JSC { void seal(JSGlobalData&); void freeze(JSGlobalData&); - void preventExtensions(JSGlobalData&); + virtual void preventExtensions(JSGlobalData&); bool isSealed(JSGlobalData& globalData) { return m_structure->isSealed(globalData); } bool isFrozen(JSGlobalData& globalData) { return m_structure->isFrozen(globalData); } bool isExtensible() { return m_structure->isExtensible(); } diff --git a/src/3rdparty/webkit/Source/WebCore/ChangeLog b/src/3rdparty/webkit/Source/WebCore/ChangeLog index 91c8025..55f0c77 100644 --- a/src/3rdparty/webkit/Source/WebCore/ChangeLog +++ b/src/3rdparty/webkit/Source/WebCore/ChangeLog @@ -1,3 +1,32 @@ +2011-05-31 Rafael Brandao <rafael.lobo@openbossa.org> + + Reviewed by Andreas Kling. + + [Qt] tst_QWebFrame::render() failing + https://bugs.webkit.org/show_bug.cgi?id=60893 + + Due a problem on QPicture (http://bugreports.qt.nokia.com/browse/QTBUG-19496), + this test was calculating the final geometry incorrectly. As the order between + a translate and a draw operation could be relevant for it, but not for the + final rendered result, they were changed on ScrollbarThemeQt::paint. + + * platform/qt/ScrollbarThemeQt.cpp: + (WebCore::ScrollbarThemeQt::paint): + +2011-05-31 B.J. Wever <skylined@chromium.org> + + Reviewed by Adam Barth. + + requestFileSystem and resolveLocalFileSystemURI are not checking if + errorCallback is NULL before scheduling a callback on error. + https://bugs.webkit.org/show_bug.cgi?id=49539 + + Test: fast/filesystem/filesystem-no-callback-null-ptr-crash.html + + * fileapi/DOMFileSystem.cpp: + (WebCore::DOMFileSystem::scheduleCallback): Only call callback if + one is supplied. + 2011-05-31 Abhishek Arya <inferno@chromium.org> Reviewed by Dimitri Glazkov. diff --git a/src/3rdparty/webkit/Source/WebCore/fileapi/DOMFileSystem.h b/src/3rdparty/webkit/Source/WebCore/fileapi/DOMFileSystem.h index 1d820f1..38a054a 100644 --- a/src/3rdparty/webkit/Source/WebCore/fileapi/DOMFileSystem.h +++ b/src/3rdparty/webkit/Source/WebCore/fileapi/DOMFileSystem.h @@ -101,8 +101,8 @@ template <typename CB, typename CBArg> void DOMFileSystem::scheduleCallback(ScriptExecutionContext* scriptExecutionContext, PassRefPtr<CB> callback, PassRefPtr<CBArg> arg) { ASSERT(scriptExecutionContext->isContextThread()); - ASSERT(callback); - scriptExecutionContext->postTask(new DispatchCallbackTask<CB, CBArg>(callback, arg)); + if (callback) + scriptExecutionContext->postTask(new DispatchCallbackTask<CB, CBArg>(callback, arg)); } } // namespace diff --git a/src/3rdparty/webkit/Source/WebCore/platform/qt/ScrollbarThemeQt.cpp b/src/3rdparty/webkit/Source/WebCore/platform/qt/ScrollbarThemeQt.cpp index bc574f7..676dd8e 100644 --- a/src/3rdparty/webkit/Source/WebCore/platform/qt/ScrollbarThemeQt.cpp +++ b/src/3rdparty/webkit/Source/WebCore/platform/qt/ScrollbarThemeQt.cpp @@ -163,13 +163,12 @@ bool ScrollbarThemeQt::paint(Scrollbar* scrollbar, GraphicsContext* graphicsCont else #endif { - const QPoint topLeft = opt->rect.topLeft(); - p.painter->translate(topLeft); - opt->rect.moveTo(QPoint(0, 0)); - // The QStyle expects the background to be already filled. p.painter->fillRect(opt->rect, opt->palette.background()); + const QPoint topLeft = opt->rect.topLeft(); + p.painter->translate(topLeft); + opt->rect.moveTo(QPoint(0, 0)); p.drawComplexControl(QStyle::CC_ScrollBar, *opt); opt->rect.moveTo(topLeft); } diff --git a/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog b/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog index 0c38ef0..57f79be 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog +++ b/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog @@ -1,3 +1,144 @@ +2011-06-02 Andreas Kling <kling@webkit.org> + + Unreviewed build fix. + + To support building namespaced Qt, we require that forward-declarations + of Qt classes be wrapped in QT_BEGIN_NAMESPACE and QT_END_NAMESPACE. + + * WebCoreSupport/DumpRenderTreeSupportQt.h: + +2011-06-01 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt]Fix tst_QWebFrame::setUrlToInvalid() autotest after r84762 + https://bugs.webkit.org/show_bug.cgi?id=59345 + + KURL and QUrl disagree whether certain URLs are valid or not. The regression here + was caused by the fact that now KURL accepts "http:/example.com" (note only one + slash) and our test case used a strange edge case that's transformed into a + "one-slash" URL that now KURL can handle. + + QtWebKit approach in this case is to do a best effort and accept the QUrl if KURL + can understand it. So I've updated the test to use a more meaningful example and + show that an invalid URL gets converted to a valid URL if possible. + + * tests/qwebframe/tst_qwebframe.cpp: + (tst_QWebFrame::setUrlToInvalid): + +2011-06-01 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> + + Reviewed by Tor Arne Vestbø. + + [Qt] Rewrite tst_QDeclarativeWebView::multipleWindows() to not depend on Grid internals + https://bugs.webkit.org/show_bug.cgi?id=61739 + + The skipped test was imported from Qt source repository, and used private headers + to peek in the QML Grid element. This patch changes the QML used to expose the + information we want to test: number of pages opened and the first page opened. + + * tests/qdeclarativewebview/resources/newwindows.html: + Added <body> tags. We have no reason to not use them in the test. + + * tests/qdeclarativewebview/resources/newwindows.qml: + Moved the timer out of the page component, used anchors for setting webview size, + changed the way we count pages opened. Also changed coding style a bit. + + * tests/qdeclarativewebview/tst_qdeclarativewebview.cpp: + (tst_QDeclarativeWebView::multipleWindows): + We now look for properties with the information we want in the rootItem: pagesOpened and + firstPageOpened. + +2011-05-31 Rafael Brandao <rafael.lobo@openbossa.org> + + Reviewed by Andreas Kling. + + [Qt] tst_QWebFrame::render() failing + https://bugs.webkit.org/show_bug.cgi?id=60893 + + The test was expecting the frame contents to be already loaded + before rendering it into a QPicture. Renamed the test to fit + its real purpose more accordingly. + + * tests/qwebframe/tst_qwebframe.cpp: + (tst_QWebFrame::renderGeometry): + +2011-05-30 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> + + Reviewed by Andreas Kling. + + [Qt] Fix unnecessary wait in API autotest tst_QWebFrame::scrollbarsOff + https://bugs.webkit.org/show_bug.cgi?id=61711 + + The loadFinished() signal was emitted directly inside the call for setHtml, so + the test was waiting the loadFinished() signal with a big timeout. Change this by + a very small timeout and a verification with signal spy. + + In practice, setHtml() will either directly call loadFinished() or queue it to + the next event loop run, and test will work for both situations. + + * tests/qwebframe/tst_qwebframe.cpp: + (tst_QWebFrame::scrollbarsOff): + +2011-05-20 Csaba Osztrogonác <ossy@webkit.org> + + Reviewed by Benjamin Poulain. + + [Qt] tst_QWebElement::style() fails because QWebElement::InlineStyle doesn't work as expected + https://bugs.webkit.org/show_bug.cgi?id=60372 + + * tests/qwebelement/tst_qwebelement.cpp: Mark failing test case as expected fail. + (tst_QWebElement::style): + +2011-05-20 Csaba Osztrogonác <ossy@webkit.org> + + Reviewed by Benjamin Poulain. + + [Qt] Fix tst_QDeclarativeWebView::basicProperties() and historyNav() autotests + https://bugs.webkit.org/show_bug.cgi?id=61042 + + * tests/qdeclarativewebview/tst_qdeclarativewebview.cpp: Mark failing test cases as expected fails. + (tst_QDeclarativeWebView::basicProperties): + (tst_QDeclarativeWebView::historyNav): + +2011-05-20 Csaba Osztrogonác <ossy@webkit.org> + + Reviewed by Benjamin Poulain. + + [Qt] Fix tst_QWebPage::testOptionalJSObjects() autotest + https://bugs.webkit.org/show_bug.cgi?id=61045 + + * tests/qwebpage/tst_qwebpage.cpp: + (tst_QWebPage::testOptionalJSObjects): Mark failing test cases as expected fails. + +2011-05-20 Csaba Osztrogonác <ossy@webkit.org> + + Reviewed by Benjamin Poulain. + + [Qt]Fix tst_QWebFrame::setUrlToInvalid() autotest after r84762 + https://bugs.webkit.org/show_bug.cgi?id=59345 + + * tests/qwebframe/tst_qwebframe.cpp: + (tst_QWebFrame::setUrlToInvalid): Mark failing test cases as expected fails. + +2011-05-10 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org> + + Reviewed by Csaba Osztrogonác. + + [Qt] tst_QWebPage creates temporary files in the current working dir + https://bugs.webkit.org/show_bug.cgi?id=60497 + + tst_QWebPage was using QDir::currentPath when creating temporary dirs + and leaving them after the test was run. I basically borrowed the fix + from tst_QDeclarativeWebView. + + * tests/qwebpage/tst_qwebpage.cpp: + (removeRecursive): + (tst_QWebPage::tmpDirPath): + (tst_QWebPage::cleanupFiles): + (tst_QWebPage::database): + (tst_QWebPage::multiplePageGroupsAndLocalStorage): + 2011-05-27 Alexis Menard <alexis.menard@openbossa.org> Reviewed by Csaba Osztrogonác. diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h index d40e096..82e5539 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h +++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h @@ -46,12 +46,14 @@ class QtDRTNodeRuntime; } #endif +QT_BEGIN_NAMESPACE class QWebElement; class QWebFrame; class QWebPage; class QWebHistoryItem; class QWebScriptWorld; class QUrl; +QT_END_NAMESPACE extern QMap<int, QWebScriptWorld*> m_worldMap; diff --git a/src/3rdparty/webkit/Source/WebKit/qt/tests/qdeclarativewebview/resources/newwindows.html b/src/3rdparty/webkit/Source/WebKit/qt/tests/qdeclarativewebview/resources/newwindows.html index dd541f9..4252d9a 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/tests/qdeclarativewebview/resources/newwindows.html +++ b/src/3rdparty/webkit/Source/WebKit/qt/tests/qdeclarativewebview/resources/newwindows.html @@ -1,3 +1,4 @@ +<!DOCTYPE html> <html> <head> <script type="text/javascript"> @@ -11,6 +12,9 @@ function clickTheLink() // --> </script> </head> +<body> <h1>Multiple windows...</h1> <a id=thelink target="_blank" href="newwindows.html">Popup!</a> +</body> +</html> diff --git a/src/3rdparty/webkit/Source/WebKit/qt/tests/qdeclarativewebview/resources/newwindows.qml b/src/3rdparty/webkit/Source/WebKit/qt/tests/qdeclarativewebview/resources/newwindows.qml index e66631d..166722d 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/tests/qdeclarativewebview/resources/newwindows.qml +++ b/src/3rdparty/webkit/Source/WebKit/qt/tests/qdeclarativewebview/resources/newwindows.qml @@ -7,28 +7,45 @@ Grid { columns: 3 id: pages height: 300; width: 600 - property int total: 0 + property int pagesOpened: 0 + property Item firstPageOpened: null Component { id: webViewPage Rectangle { - width: webView.width - height: webView.height - border.color: "gray" + id: thisPage + width: 150 + height: 150 + property WebView webView: wv WebView { - id: webView - width: 150 // force predictable for test + id: wv + anchors.fill: parent newWindowComponent: webViewPage newWindowParent: pages url: "newwindows.html" - Timer { - interval: 10; running: total<4; repeat: false; - onTriggered: { if (webView.status==WebView.Ready) { total++; webView.evaluateJavaScript("clickTheLink()") } } + Component.onCompleted: { + if (pagesOpened == 1) { + pages.firstPageOpened = thisPage; + } } } } } - Loader { sourceComponent: webViewPage } + Loader { + id: originalPage + sourceComponent: webViewPage + property bool ready: status == Loader.Ready && item.webView.status == WebView.Ready + } + + Timer { + interval: 10 + running: originalPage.ready && pagesOpened < 4 + repeat: true + onTriggered: { + pagesOpened++; + originalPage.item.webView.evaluateJavaScript("clickTheLink()"); + } + } } diff --git a/src/3rdparty/webkit/Source/WebKit/qt/tests/qdeclarativewebview/tst_qdeclarativewebview.cpp b/src/3rdparty/webkit/Source/WebKit/qt/tests/qdeclarativewebview/tst_qdeclarativewebview.cpp index fff1f2d..5ce1eb1 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/tests/qdeclarativewebview/tst_qdeclarativewebview.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/tests/qdeclarativewebview/tst_qdeclarativewebview.cpp @@ -101,6 +101,7 @@ void tst_QDeclarativeWebView::basicProperties() QVERIFY(wv); QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); QCOMPARE(wv->property("title").toString(), QLatin1String("Basic")); + QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=61042", Continue); QTRY_COMPARE(qvariant_cast<QPixmap>(wv->property("icon")).width(), 48); QEXPECT_FAIL("", "'icon' property isn't working", Continue); QCOMPARE(qvariant_cast<QPixmap>(wv->property("icon")), QPixmap("qrc:///resources/basic.png")); @@ -178,6 +179,7 @@ void tst_QDeclarativeWebView::historyNav() for (int i = 1; i <= 2; ++i) { QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); QCOMPARE(wv->property("title").toString(), QLatin1String("Basic")); + QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=61042", Continue); QTRY_COMPARE(qvariant_cast<QPixmap>(wv->property("icon")).width(), 48); QEXPECT_FAIL("", "'icon' property isn't working", Continue); QCOMPARE(qvariant_cast<QPixmap>(wv->property("icon")), QPixmap("qrc:///data/basic.png")); @@ -197,6 +199,7 @@ void tst_QDeclarativeWebView::historyNav() wv->setProperty("url", QUrl("qrc:///resources/forward.html")); QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); QCOMPARE(wv->property("title").toString(), QLatin1String("Forward")); + QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=61042", Continue); QTRY_COMPARE(qvariant_cast<QPixmap>(wv->property("icon")).width(), 32); QEXPECT_FAIL("", "'icon' property isn't working", Continue); QCOMPARE(qvariant_cast<QPixmap>(wv->property("icon")), QPixmap("qrc:///resources/forward.png")); @@ -269,17 +272,21 @@ void tst_QDeclarativeWebView::loadError() void tst_QDeclarativeWebView::multipleWindows() { - QSKIP("Rework this test to not depend on QDeclarativeGrid", SkipAll); QDeclarativeEngine engine; QDeclarativeComponent component(&engine, QUrl("qrc:///resources/newwindows.qml")); checkNoErrors(component); -// QDeclarativeGrid *grid = qobject_cast<QDeclarativeGrid*>(component.create()); -// QVERIFY(grid != 0); -// QTRY_COMPARE(grid->children().count(), 2+4); // Component, Loader (with 1 WebView), 4 new-window WebViews -// QDeclarativeItem* popup = qobject_cast<QDeclarativeItem*>(grid->children().at(2)); // first popup after Component and Loader. -// QVERIFY(popup != 0); -// QTRY_COMPARE(popup->x(), 150.0); + QDeclarativeItem* rootItem = qobject_cast<QDeclarativeItem*>(component.create()); + QVERIFY(rootItem); + + QTRY_COMPARE(rootItem->property("pagesOpened").toInt(), 4); + + QDeclarativeProperty prop(rootItem, "firstPageOpened"); + QObject* firstPageOpened = qvariant_cast<QObject*>(prop.read()); + QVERIFY(firstPageOpened); + + QDeclarativeProperty xProp(firstPageOpened, "x"); + QTRY_COMPARE(xProp.read().toReal(), qreal(150.0)); } void tst_QDeclarativeWebView::newWindowComponent() diff --git a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp index 9e9948a..0f05b2b 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp @@ -483,6 +483,7 @@ void tst_QWebElement::style() QCOMPARE(p.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("green")); p.setStyleProperty("color", "blue"); + QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=60372", Continue); QCOMPARE(p.styleProperty("color", QWebElement::InlineStyle), QLatin1String("blue")); QCOMPARE(p.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("green")); diff --git a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp index a982119..b567784 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp @@ -637,7 +637,7 @@ private slots: void baseUrl_data(); void baseUrl(); void hasSetFocus(); - void render(); + void renderGeometry(); void renderHints(); void scrollPosition(); void scrollToAnchor(); @@ -2881,7 +2881,7 @@ void tst_QWebFrame::hasSetFocus() QTRY_VERIFY(m_page->mainFrame()->hasFocus()); } -void tst_QWebFrame::render() +void tst_QWebFrame::renderGeometry() { QString html("<html>" \ "<head><style>" \ @@ -2897,6 +2897,7 @@ void tst_QWebFrame::render() QWebFrame *frame = frames.at(0); QString innerHtml("<body style='margin: 0px;'><img src='qrc:/image.png'/></body>"); frame->setHtml(innerHtml); + waitForSignal(frame, SIGNAL(loadFinished(bool)), 200); QPicture picture; @@ -3134,8 +3135,10 @@ void tst_QWebFrame::scrollbarsOff() "</body>"); + QSignalSpy loadSpy(&view, SIGNAL(loadFinished(bool))); view.setHtml(html); - ::waitForSignal(&view, SIGNAL(loadFinished(bool))); + ::waitForSignal(&view, SIGNAL(loadFinished(bool)), 200); + QCOMPARE(loadSpy.count(), 1); mainFrame->evaluateJavaScript("checkScrollbar();"); QCOMPARE(mainFrame->documentElement().findAll("span").at(0).toPlainText(), QString("SUCCESS")); @@ -3453,15 +3456,17 @@ void tst_QWebFrame::setUrlToInvalid() QWebPage page; QWebFrame* frame = page.mainFrame(); - const QUrl invalidUrl("http://strange;hostname/here"); + const QUrl invalidUrl("http:/example.com"); QVERIFY(!invalidUrl.isEmpty()); QVERIFY(!invalidUrl.isValid()); QVERIFY(invalidUrl != QUrl()); + // QWebFrame will do its best to accept the URL, possible converting it to a valid equivalent URL. + const QUrl validUrl("http://example.com/"); frame->setUrl(invalidUrl); - QCOMPARE(frame->url(), invalidUrl); - QCOMPARE(frame->requestedUrl(), invalidUrl); - QCOMPARE(frame->baseUrl(), invalidUrl); + QCOMPARE(frame->url(), validUrl); + QCOMPARE(frame->requestedUrl(), validUrl); + QCOMPARE(frame->baseUrl(), validUrl); // QUrls equivalent to QUrl() will be treated as such. const QUrl aboutBlank("about:blank"); diff --git a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp index 8b30dc2..81e1454 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp @@ -45,6 +45,18 @@ #include <qwebview.h> #include <qimagewriter.h> +static void removeRecursive(const QString& dirname) +{ + QDir dir(dirname); + QFileInfoList entries(dir.entryInfoList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot)); + for (int i = 0; i < entries.count(); ++i) + if (entries[i].isDir()) + removeRecursive(entries[i].filePath()); + else + dir.remove(entries[i].fileName()); + QDir().rmdir(dirname); +} + class EventSpy : public QObject, public QList<QEvent::Type> { Q_OBJECT @@ -145,10 +157,16 @@ private slots: #ifdef Q_OS_MAC void macCopyUnicodeToClipboard(); #endif - + private: QWebView* m_view; QWebPage* m_page; + QString tmpDirPath() const + { + static QString tmpd = QDir::tempPath() + "/tst_qwebpage-" + + QDateTime::currentDateTime().toString(QLatin1String("yyyyMMddhhmmss")); + return tmpd; + } }; tst_QWebPage::tst_QWebPage() @@ -172,9 +190,7 @@ void tst_QWebPage::cleanup() void tst_QWebPage::cleanupFiles() { - QFile::remove("Databases.db"); - QDir::current().rmdir("http_www.myexample.com_0"); - QFile::remove("http_www.myexample.com_0.localstorage"); + removeRecursive(tmpDirPath()); } void tst_QWebPage::initTestCase() @@ -553,7 +569,7 @@ void tst_QWebPage::contextMenuCrash() void tst_QWebPage::database() { - QString path = QDir::currentPath(); + QString path = tmpDirPath(); m_page->settings()->setOfflineStoragePath(path); QVERIFY(m_page->settings()->offlineStoragePath() == path); @@ -907,7 +923,7 @@ void tst_QWebPage::createViewlessPlugin() void tst_QWebPage::multiplePageGroupsAndLocalStorage() { - QDir dir(QDir::currentPath()); + QDir dir(tmpDirPath()); dir.mkdir("path1"); dir.mkdir("path2"); @@ -915,10 +931,10 @@ void tst_QWebPage::multiplePageGroupsAndLocalStorage() QWebView view2; view1.page()->settings()->setAttribute(QWebSettings::LocalStorageEnabled, true); - view1.page()->settings()->setLocalStoragePath(QDir::toNativeSeparators(QDir::currentPath() + "/path1")); + view1.page()->settings()->setLocalStoragePath(QDir::toNativeSeparators(tmpDirPath() + "/path1")); DumpRenderTreeSupportQt::webPageSetGroupName(view1.page(), "group1"); view2.page()->settings()->setAttribute(QWebSettings::LocalStorageEnabled, true); - view2.page()->settings()->setLocalStoragePath(QDir::toNativeSeparators(QDir::currentPath() + "/path2")); + view2.page()->settings()->setLocalStoragePath(QDir::toNativeSeparators(tmpDirPath() + "/path2")); DumpRenderTreeSupportQt::webPageSetGroupName(view2.page(), "group2"); QCOMPARE(DumpRenderTreeSupportQt::webPageGroupName(view1.page()), QString("group1")); QCOMPARE(DumpRenderTreeSupportQt::webPageGroupName(view2.page()), QString("group2")); @@ -941,8 +957,8 @@ void tst_QWebPage::multiplePageGroupsAndLocalStorage() QTest::qWait(1000); - QFile::remove(QDir::toNativeSeparators(QDir::currentPath() + "/path1/http_www.myexample.com_0.localstorage")); - QFile::remove(QDir::toNativeSeparators(QDir::currentPath() + "/path2/http_www.myexample.com_0.localstorage")); + QFile::remove(QDir::toNativeSeparators(tmpDirPath() + "/path1/http_www.myexample.com_0.localstorage")); + QFile::remove(QDir::toNativeSeparators(tmpDirPath() + "/path2/http_www.myexample.com_0.localstorage")); dir.rmdir(QDir::toNativeSeparators("./path1")); dir.rmdir(QDir::toNativeSeparators("./path2")); } @@ -2323,8 +2339,10 @@ void tst_QWebPage::testOptionalJSObjects() QCOMPARE(testFlag(webPage2, QWebSettings::OfflineWebApplicationCacheEnabled, "applicationCache", false), true); QCOMPARE(testFlag(webPage1, QWebSettings::LocalStorageEnabled, "localStorage", false), false); + QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=61045", Continue); QCOMPARE(testFlag(webPage2, QWebSettings::LocalStorageEnabled, "localStorage", true), true); QCOMPARE(testFlag(webPage1, QWebSettings::LocalStorageEnabled, "localStorage", false), false); + QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=61045", Continue); QCOMPARE(testFlag(webPage2, QWebSettings::LocalStorageEnabled, "localStorage", false), true); } diff --git a/src/3rdparty/webkit/Tools/QtTestBrowser/useragentlist.txt b/src/3rdparty/webkit/Tools/QtTestBrowser/useragentlist.txt index 0b29d40..decf104 100644 --- a/src/3rdparty/webkit/Tools/QtTestBrowser/useragentlist.txt +++ b/src/3rdparty/webkit/Tools/QtTestBrowser/useragentlist.txt @@ -1,11 +1,13 @@ -Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/533.3 (KHTML, like Gecko) QtTestBrowser/0.1 Safari/533.3 -Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0; en-GB) AppleWebKit/533.3 (KHTML, like Gecko) QtTestBrowser/0.1 Mobile Safari/533.3 -Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8 -Mozilla/5.0 (Linux; U; Android 1.1; en-gb; dream) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2 -Mozilla/5.0 (Unknown; like Android 2.2; U; Intel Mac OS X 10_6; en-gb) AppleWebKit/533.3 (KHTML, like Gecko) Version/4.0.3 Mobile Safari/533.3 -Mozilla/5.0 (iPhone; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10 +Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) QtTestBrowser/0.1 Safari/535.1 +Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0) AppleWebKit/535.1 (KHTML, like Gecko) QtTestBrowser/0.1 Mobile Safari/535.1 +Mozilla/5.0 (Macintosh; PPC Mac OS X) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8 +Mozilla/5.0 (Unknown; like Android 2.2; Intel Mac OS X 10_6) AppleWebKit/533.3 (KHTML, like Gecko) Version/4.0.3 Mobile Safari/533.3 +Mozilla/5.0 (iPhone; CPU OS 3_2 like Mac OS X) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10 Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7 -Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10 -Opera/9.25 (Windows NT 6.0; U; en) -Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5800d-1b/20.2.014; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413 +Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10 +Opera/9.80 (Windows NT 6.0; U; en) Presto/2.8.99 Version/11.10 +Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5800d-1b/20.2.014; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/413 (KHTML, like Gecko) Safari/413 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0) +Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) +Mozilla/5.0 (Windows; Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24 +Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION index 88f6f3e..4f4c155 100644 --- a/src/3rdparty/webkit/VERSION +++ b/src/3rdparty/webkit/VERSION @@ -4,4 +4,4 @@ This is a snapshot of the Qt port of WebKit from and has the sha1 checksum - 9b4474ac44ee2f3311b435bd45630f5c2c357217 + efbf910ad7c49e8cdf81411b4ac0abeea0efd8f8 |