summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconfigure4
-rw-r--r--dist/changes-4.7.4304
-rw-r--r--doc/src/classes/phonon-api.qdoc24
-rw-r--r--doc/src/declarative/declarativeui.qdoc2
-rw-r--r--doc/src/declarative/qtquick-intro.qdoc2
-rw-r--r--doc/src/deployment/deployment.qdoc14
-rw-r--r--doc/src/development/qmake-manual.qdoc17
-rw-r--r--doc/src/index.qdoc4
-rw-r--r--doc/src/platforms/platform-notes.qdoc27
-rw-r--r--doc/src/platforms/supported-platforms.qdoc12
-rw-r--r--doc/src/qt-features.qdoc204
-rw-r--r--doc/src/qt4-intro.qdoc3
-rw-r--r--doc/src/snippets/code/doc_src_qmake-manual.pro4
-rw-r--r--examples/xml/dombookmarks/dombookmarks.pro4
-rw-r--r--examples/xml/streambookmarks/streambookmarks.pro2
-rw-r--r--mkspecs/features/symbian/default_post.prf12
-rw-r--r--src/3rdparty/webkit/.tag2
-rw-r--r--src/3rdparty/webkit/ChangeLog36
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/ChangeLog207
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri2
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/jsc.cpp2
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/parser/JSParser.cpp63
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSONObject.cpp53
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.h4
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/wtf/ByteArray.h2
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/wtf/DateMath.cpp2
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/wtf/NullPtr.h2
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/wtf/PageAllocatorSymbian.h2
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h16
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/wtf/StackBounds.cpp6
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.h31
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.cpp6
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.h4
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringStatics.cpp31
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/WTFString.h2
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/wtf/wtf.pri10
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/yarr/YarrJIT.cpp3098
-rw-r--r--src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.cbproj274
-rw-r--r--src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.groupproj106
-rw-r--r--src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_all.cc76
-rw-r--r--src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_link.cc80
-rw-r--r--src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_main.cbproj164
-rw-r--r--src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_unittest.cbproj174
-rwxr-xr-xsrc/3rdparty/webkit/Source/ThirdParty/gyp/gyp.bat10
-rw-r--r--src/3rdparty/webkit/Source/ThirdParty/gyp/samples/samples.bat10
-rw-r--r--src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/gyptest-errors.py40
-rw-r--r--src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/src/subdir1/program.c24
-rw-r--r--src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/actions-out/README.txt8
-rw-r--r--src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/program.c24
-rw-r--r--src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir2/actions-out/README.txt8
-rw-r--r--src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/rules/subdir2/rules-out/README.txt8
-rw-r--r--src/3rdparty/webkit/Source/ThirdParty/gyp/tools/pretty_gyp.py284
-rw-r--r--src/3rdparty/webkit/Source/WebCore/ChangeLog1055
-rw-r--r--src/3rdparty/webkit/Source/WebCore/CodeGenerators.pri2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/WebCore.exp.in14
-rw-r--r--src/3rdparty/webkit/Source/WebCore/WebCore.gypi11
-rw-r--r--src/3rdparty/webkit/Source/WebCore/WebCore.pri19
-rw-r--r--src/3rdparty/webkit/Source/WebCore/WebCore.pro42
-rw-r--r--src/3rdparty/webkit/Source/WebCore/bindings/generic/ActiveDOMCallback.cpp46
-rw-r--r--src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.cpp7
-rw-r--r--src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.h8
-rw-r--r--src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h86
-rw-r--r--src/3rdparty/webkit/Source/WebCore/bindings/js/JSImageDataCustom.cpp6
-rw-r--r--src/3rdparty/webkit/Source/WebCore/config.h1
-rw-r--r--src/3rdparty/webkit/Source/WebCore/css/CSSStyleSelector.h2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/css/CSSStyleSheet.cpp4
-rw-r--r--src/3rdparty/webkit/Source/WebCore/dom/Document.h2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/dom/Element.cpp6
-rw-r--r--src/3rdparty/webkit/Source/WebCore/dom/ProcessingInstruction.cpp3
-rw-r--r--src/3rdparty/webkit/Source/WebCore/dom/Range.cpp37
-rw-r--r--src/3rdparty/webkit/Source/WebCore/dom/StyleElement.cpp9
-rw-r--r--src/3rdparty/webkit/Source/WebCore/dom/StyleElement.h1
-rw-r--r--src/3rdparty/webkit/Source/WebCore/editing/InsertIntoTextNodeCommand.cpp10
-rw-r--r--src/3rdparty/webkit/Source/WebCore/editing/ReplaceSelectionCommand.cpp10
-rw-r--r--src/3rdparty/webkit/Source/WebCore/editing/SelectionController.cpp4
-rw-r--r--src/3rdparty/webkit/Source/WebCore/editing/TextIterator.cpp117
-rw-r--r--src/3rdparty/webkit/Source/WebCore/editing/TextIterator.h4
-rw-r--r--src/3rdparty/webkit/Source/WebCore/editing/visible_units.cpp4
-rw-r--r--src/3rdparty/webkit/Source/WebCore/features.pri24
-rw-r--r--src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.cpp1413
-rw-r--r--src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.h14
-rw-r--r--src/3rdparty/webkit/Source/WebCore/generated/CSSPropertyNames.cpp2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/generated/CSSValueKeywords.cpp2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/generated/ColorData.cpp2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/generated/DocTypeStrings.cpp2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/generated/JSInternals.cpp134
-rw-r--r--src/3rdparty/webkit/Source/WebCore/generated/JSInternals.h79
-rw-r--r--src/3rdparty/webkit/Source/WebCore/generated/JSWebGLRenderingContext.cpp76
-rw-r--r--src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.cpp637
-rw-r--r--src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.h14
-rw-r--r--src/3rdparty/webkit/Source/WebCore/html/HTMLLinkElement.cpp3
-rw-r--r--src/3rdparty/webkit/Source/WebCore/html/HTMLSourceElement.cpp6
-rw-r--r--src/3rdparty/webkit/Source/WebCore/html/HTMLStyleElement.cpp3
-rw-r--r--src/3rdparty/webkit/Source/WebCore/html/HTMLTrackElement.cpp6
-rw-r--r--src/3rdparty/webkit/Source/WebCore/html/parser/HTMLTreeBuilder.cpp18
-rw-r--r--src/3rdparty/webkit/Source/WebCore/html/shadow/MediaControlElements.cpp2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/inspector/InspectorValues.cpp13
-rw-r--r--src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.cpp27
-rw-r--r--src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.h2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/loader/cache/CachedResource.cpp5
-rw-r--r--src/3rdparty/webkit/Source/WebCore/make-hash-tools.pl15
-rw-r--r--src/3rdparty/webkit/Source/WebCore/page/DOMWindow.cpp10
-rw-r--r--src/3rdparty/webkit/Source/WebCore/page/FocusController.cpp12
-rw-r--r--src/3rdparty/webkit/Source/WebCore/page/FrameView.cpp2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/page/Geolocation.cpp3
-rw-r--r--src/3rdparty/webkit/Source/WebCore/page/Geolocation.h2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/page/PrintContext.cpp7
-rw-r--r--src/3rdparty/webkit/Source/WebCore/page/PrintContext.h4
-rw-r--r--src/3rdparty/webkit/Source/WebCore/page/Settings.cpp2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/page/Settings.h8
-rw-r--r--src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowPrivate.h2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowQt.cpp4
-rw-r--r--src/3rdparty/webkit/Source/WebCore/platform/graphics/mac/FontCacheMac.mm15
-rw-r--r--src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.h20
-rw-r--r--src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.mm4
-rw-r--r--src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenController.h72
-rw-r--r--src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenController.mm617
-rw-r--r--src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.h66
-rw-r--r--src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm679
-rw-r--r--src/3rdparty/webkit/Source/WebCore/platform/mac/WebWindowAnimation.h59
-rw-r--r--src/3rdparty/webkit/Source/WebCore/platform/mac/WebWindowAnimation.mm234
-rw-r--r--src/3rdparty/webkit/Source/WebCore/platform/network/HTTPHeaderMap.cpp12
-rw-r--r--src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.h21
-rw-r--r--src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.mm4
-rw-r--r--src/3rdparty/webkit/Source/WebCore/plugins/PluginView.cpp5
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/CounterNode.cpp43
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/RenderBlock.cpp10
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/RenderBlockLineLayout.cpp2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.cpp2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.h2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/RenderFlexibleBox.cpp4
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/RenderIFrame.cpp5
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/RenderInline.cpp19
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/RenderLineBoxList.cpp15
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/RenderObject.h3
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.cpp8
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.h2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/RenderText.cpp76
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/RenderText.h4
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/RenderThemeWinCE.cpp2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/RenderWidget.cpp4
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/svg/RenderSVGInline.cpp3
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGInlineFlowBox.cpp5
-rw-r--r--src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.cpp8
-rw-r--r--src/3rdparty/webkit/Source/WebCore/storage/IDBRequest.cpp7
-rw-r--r--src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.cpp9
-rw-r--r--src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.h1
-rw-r--r--src/3rdparty/webkit/Source/WebCore/svg/SVGStyleElement.cpp3
-rw-r--r--src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.cpp12
-rw-r--r--src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.h1
-rw-r--r--src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.cpp38
-rw-r--r--src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.h1
-rw-r--r--src/3rdparty/webkit/Source/WebCore/svg/SVGUseElement.cpp1
-rw-r--r--src/3rdparty/webkit/Source/WebCore/testing/Internals.cpp97
-rw-r--r--src/3rdparty/webkit/Source/WebCore/testing/Internals.h60
-rw-r--r--src/3rdparty/webkit/Source/WebCore/testing/Internals.idl31
-rw-r--r--src/3rdparty/webkit/Source/WebCore/testing/js/WebCoreTestSupport.cpp62
-rw-r--r--src/3rdparty/webkit/Source/WebCore/testing/js/WebCoreTestSupport.h38
-rw-r--r--src/3rdparty/webkit/Source/WebCore/testing/v8/WebCoreTestSupport.cpp62
-rw-r--r--src/3rdparty/webkit/Source/WebCore/testing/v8/WebCoreTestSupport.h41
-rw-r--r--src/3rdparty/webkit/Source/WebCore/xml/XPathFunctions.cpp30
-rw-r--r--src/3rdparty/webkit/Source/WebCore/xml/XPathPredicate.cpp16
-rw-r--r--src/3rdparty/webkit/Source/WebCore/xml/XPathResult.cpp8
-rw-r--r--src/3rdparty/webkit/Source/WebKit.pri5
-rw-r--r--src/3rdparty/webkit/Source/WebKit/ChangeLog26
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/Api/qwebframe.cpp6
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/Api/qwebsettings.cpp5
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/Api/qwebview.cpp2
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/ChangeLog320
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro41
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp15
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.h5
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp42
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h1
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp130
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h10
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp25
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h6
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QTKitFullScreenVideoHandler.h44
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QTKitFullScreenVideoHandler.mm68
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/WebSystemInterface.mm4
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/declarative/qdeclarativewebview.cpp2
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/symbian/bwins/QtWebKitu.def178
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/symbian/eabi/QtWebKitu.def1727
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/symbian/platformplugin/qss/OverlayWidget.qss116
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/application_postscript272
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/text_xml38
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe.html104
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe2.html38
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp145
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp30
-rw-r--r--src/3rdparty/webkit/Source/WebKit2/ChangeLog27
-rw-r--r--src/3rdparty/webkit/Source/WebKit2/WebKit2.pri2
-rw-r--r--src/3rdparty/webkit/Source/WebKit2/WebProcess/Plugins/PluginView.cpp5
-rw-r--r--src/3rdparty/webkit/VERSION2
-rw-r--r--src/3rdparty/webkit/WebKitLibraries/libWebCoreSQLite3.abin0 -> 4157656 bytes
-rw-r--r--src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceLeopard.abin0 -> 1742208 bytes
-rw-r--r--src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceLion.abin0 -> 942816 bytes
-rw-r--r--src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.abin0 -> 1472252 bytes
-rw-r--r--src/3rdparty/webkit/include/JavaScriptCore/APICast.h1
-rw-r--r--src/3rdparty/webkit/include/JavaScriptCore/Error.h1
-rw-r--r--src/3rdparty/webkit/include/JavaScriptCore/FunctionPrototype.h1
-rw-r--r--src/3rdparty/webkit/include/JavaScriptCore/InternalFunction.h1
-rw-r--r--src/3rdparty/webkit/include/JavaScriptCore/JSBase.h1
-rw-r--r--src/3rdparty/webkit/include/JavaScriptCore/JSContextRef.h1
-rw-r--r--src/3rdparty/webkit/include/JavaScriptCore/JSGlobalObject.h1
-rw-r--r--src/3rdparty/webkit/include/JavaScriptCore/JSLock.h1
-rw-r--r--src/3rdparty/webkit/include/JavaScriptCore/JSObject.h1
-rw-r--r--src/3rdparty/webkit/include/JavaScriptCore/JSObjectWithGlobalObject.h1
-rw-r--r--src/3rdparty/webkit/include/JavaScriptCore/JSStringRef.h1
-rw-r--r--src/3rdparty/webkit/include/JavaScriptCore/JSValueRef.h1
-rw-r--r--src/3rdparty/webkit/include/JavaScriptCore/JavaScript.h1
-rw-r--r--src/3rdparty/webkit/include/JavaScriptCore/ObjectPrototype.h1
-rw-r--r--src/3rdparty/webkit/include/JavaScriptCore/SourceCode.h1
-rw-r--r--src/3rdparty/webkit/include/JavaScriptCore/Strong.h1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/QGraphicsWebView1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/QWebDatabase1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/QWebElement1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/QWebElementCollection1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/QWebFrame1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/QWebHistory1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/QWebHistoryInterface1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/QWebHistoryItem1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/QWebHitTestResult1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/QWebInspector1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/QWebPage1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/QWebPluginFactory1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/QWebSecurityOrigin1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/QWebSettings1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/QWebView1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/QtWebKit19
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/ViewportAttributes1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/classheaders.pri1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/qgraphicswebview.h1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/qwebdatabase.h1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/qwebelement.h1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/qwebframe.h1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/qwebhistory.h1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/qwebhistoryinterface.h1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/qwebinspector.h1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/qwebkitglobal.h1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/qwebkitplatformplugin.h1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/qwebkitversion.h1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/qwebpage.h1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/qwebpluginfactory.h1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/qwebsecurityorigin.h1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/qwebsettings.h1
-rw-r--r--src/3rdparty/webkit/include/QtWebKit/qwebview.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/AXObjectCache.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/AbstractDatabase.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/AnimationController.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ApplicationCache.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ApplicationCacheStorage.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ArchiveResource.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/AuthenticationClient.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/BackForwardController.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/BackForwardList.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/BitmapImage.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/CSSComputedStyleDeclaration.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Chrome.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ChromeClient.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Color.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ContextMenu.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ContextMenuClient.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ContextMenuController.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ContextMenuItem.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/CookieJar.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/CookieStorage.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/CookiesStrategy.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Credential.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/CrossOriginPreflightResultCache.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Cursor.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/DOMImplementation.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/DOMWrapperWorld.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/DatabaseDetails.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/DatabaseTracker.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/DatabaseTrackerClient.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Document.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/DocumentFragment.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/DocumentLoader.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/DocumentMarkerController.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/DragActions.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/DragClient.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/DragController.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/DragData.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/EditAction.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/EditCommand.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Editor.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/EditorClient.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/EditorInsertAction.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Element.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/EmptyProtocolDefinitions.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Event.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/EventHandler.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/FileChooser.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/FileSystem.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/FloatPoint.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/FloatRect.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/FloatSize.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/FocusController.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/FocusDirection.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Font.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/FontRenderingMode.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/FormState.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Frame.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/FrameLoadRequest.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/FrameLoader.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/FrameLoaderClient.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/FrameLoaderTypes.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/FrameNetworkingContext.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/FrameView.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/GCController.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Geolocation.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/GeolocationClient.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/GeolocationController.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/GeolocationError.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/GeolocationPosition.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Gradient.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/GraphicsContext.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/GraphicsContextCG.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/GraphicsLayer.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/GraphicsLayerCA.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/GraphicsLayerClient.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/HTMLAppletElement.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/HTMLFormElement.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/HTMLFrameElement.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/HTMLFrameOwnerElement.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/HTMLIFrameElement.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/HTMLInputElement.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/HTMLMediaElement.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/HTMLPlugInElement.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/HTMLPlugInImageElement.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/HTMLTableCellElement.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/HTMLTextAreaElement.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/HTTPHeaderMap.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/HistoryItem.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/HitTestRequest.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/HitTestResult.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/HostWindow.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Icon.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/IconDatabase.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/IconDatabaseBase.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/IconDatabaseClient.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/IdentifierRep.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Image.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/InspectorClient.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/InspectorController.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/InspectorFrontendClientLocal.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/IntPoint.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/IntRect.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/IntRectHash.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/IntSize.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/JSCSSStyleDeclaration.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/JSPluginElementFunctions.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/KURL.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/KeyboardEvent.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Language.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/LinkHash.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/LocalizedStrings.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Logging.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/MIMETypeRegistry.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/MediaCanStartListener.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/MemoryCache.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/MouseEvent.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/NavigationAction.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/NetscapePlugInStreamLoader.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/NetworkingContext.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Node.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/NotImplemented.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Page.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PageCache.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PageGroup.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Path.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PlatformCALayer.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PlatformContextCairo.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PlatformGestureEvent.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PlatformKeyboardEvent.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PlatformMouseEvent.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PlatformStrategies.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PlatformTouchEvent.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PlatformTouchPoint.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PlatformWheelEvent.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PluginData.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PluginStrategy.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PluginViewBase.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PolicyChecker.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PopupMenu.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PopupMenuClient.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PopupMenuStyle.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/PrintContext.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ProgressTracker.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ProtectionSpace.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ProxyServer.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Range.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/RenderEmbeddedObject.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/RenderLayer.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/RenderTheme.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/RenderTreeAsText.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/RenderView.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ReplaceSelectionCommand.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ResourceHandle.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ResourceLoadScheduler.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/RuntimeEnabledFeatures.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/SchemeRegistry.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ScriptController.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ScriptValue.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ScrollTypes.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ScrollView.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ScrollableArea.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Scrollbar.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ScrollbarTheme.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/SearchPopupMenu.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/SecurityOrigin.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/SecurityOriginHash.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/SerializedScriptValue.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Settings.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ShadowRoot.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/SharedBuffer.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/SimpleFontData.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/SoftLinking.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/SpellingCorrectionController.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/StorageTracker.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/SubstituteData.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/TextAffinity.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/TextCheckerClient.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/TextDirection.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/TextIterator.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/TextResourceDecoder.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/TextRun.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Timer.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/UIEventWithKeyState.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/UserContentTypes.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/UserContentURLPattern.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/UserGestureIndicator.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/UserScriptTypes.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/UserTypingGestureIndicator.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/ViewportArguments.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/VisiblePosition.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/VisitedLinkStrategy.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/WebCoreKeyboardUIMode.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/Widget.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/WindowFeatures.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/markup.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/npapi.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/npfunctions.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/npruntime.h1
-rw-r--r--src/3rdparty/webkit/include/WebCore/npruntime_internal.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/RunLoop.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKArray.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKBackForwardList.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKBackForwardListItem.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKBase.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKContext.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKContextMenuItemTypes.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKCookieManager.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKCredentialTypes.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKData.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKDictionary.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKError.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKEvent.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKFindOptions.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKFormSubmissionListener.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKFrame.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKFramePolicyListener.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKGeolocationManager.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKGeolocationPermissionRequest.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKGeolocationPosition.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKGeometry.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKGraphicsContext.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKImage.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKMutableArray.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKMutableDictionary.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKNativeEvent.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKNavigationData.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKNumber.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKOpenPanelParameters.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKOpenPanelResultListener.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKPage.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKPageGroup.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKPageLoadTypes.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKPreferences.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKProtectionSpaceTypes.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKRetainPtr.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKString.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKType.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKURL.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKURLRequest.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKURLResponse.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WKView.h1
-rw-r--r--src/3rdparty/webkit/include/WebKit2/WebProcess.h1
-rw-r--r--src/corelib/global/qnamespace.qdoc2
-rw-r--r--src/corelib/io/qdir.cpp10
-rw-r--r--src/corelib/io/qfileinfo.cpp6
-rw-r--r--src/corelib/io/qfilesystemengine_win.cpp7
-rw-r--r--src/corelib/io/qiodevice.cpp2
-rw-r--r--src/corelib/io/qtemporaryfile.cpp230
-rw-r--r--src/corelib/kernel/qmetaobject.cpp11
-rw-r--r--src/corelib/tools/qdatetime.cpp9
-rw-r--r--src/corelib/tools/qline.cpp5
-rw-r--r--src/corelib/tools/qlist.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativeborderimage.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativegridview.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativelistview.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativemousearea.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativepositioners.cpp6
-rw-r--r--src/declarative/graphicsitems/qdeclarativerepeater.cpp6
-rw-r--r--src/declarative/graphicsitems/qdeclarativetext.cpp8
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit.cpp21
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit_p_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput.cpp18
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput_p_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp2
-rw-r--r--src/declarative/util/qdeclarativelistmodel.cpp1
-rw-r--r--src/gui/accessible/qaccessible_unix.cpp2
-rw-r--r--src/gui/image/qpixmap_mac.cpp33
-rw-r--r--src/gui/inputmethod/qcoefepinputcontext_s60.cpp34
-rw-r--r--src/gui/kernel/qapplication_s60.cpp3
-rw-r--r--src/gui/kernel/qevent.cpp3
-rw-r--r--src/gui/kernel/qkeysequence.cpp4
-rw-r--r--src/gui/kernel/qsoftkeymanager.cpp14
-rw-r--r--src/gui/kernel/qt_s60_p.h26
-rw-r--r--src/gui/kernel/qwidget_s60.cpp13
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp4
-rw-r--r--src/gui/s60framework/s60framework.pri3
-rw-r--r--src/gui/styles/qs60style_s60.cpp14
-rw-r--r--src/gui/styles/qwindowsstyle.cpp7
-rw-r--r--src/gui/text/qfontdatabase_s60.cpp30
-rw-r--r--src/gui/text/qfontengine_coretext.mm12
-rw-r--r--src/gui/text/qfontengine_coretext_p.h6
-rw-r--r--src/gui/text/qtextcontrol.cpp34
-rw-r--r--src/gui/text/qtextengine.cpp3
-rw-r--r--src/gui/text/qtextlayout.cpp6
-rw-r--r--src/gui/text/text.pri9
-rw-r--r--src/gui/widgets/qcombobox.cpp2
-rw-r--r--src/gui/widgets/qlinecontrol.cpp6
-rw-r--r--src/gui/widgets/qtextedit.cpp2
-rwxr-xr-x[-rw-r--r--]src/imports/shaders/shadereffectitem.cpp110
-rw-r--r--src/imports/shaders/shadereffectitem.h4
-rw-r--r--src/imports/shaders/shadereffectsource.cpp43
-rw-r--r--src/imports/shaders/shadereffectsource.h3
-rw-r--r--src/opengl/qpaintengine_opengl.cpp35
-rw-r--r--src/plugins/platforms/uikit/README19
-rw-r--r--src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo-Info.plist8
-rwxr-xr-xsrc/plugins/platforms/uikit/examples/flickrdemo/flickrdemo.xcodeproj/project.pbxproj20
-rw-r--r--src/plugins/platforms/uikit/examples/qmltest/qmltest-Info.plist8
-rwxr-xr-xsrc/plugins/platforms/uikit/examples/qmltest/qmltest.xcodeproj/project.pbxproj22
-rw-r--r--src/plugins/platforms/uikit/platform.pro12
-rw-r--r--src/plugins/platforms/uikit/qcoretextfontdatabase.cpp156
-rw-r--r--src/plugins/platforms/uikit/qcoretextfontdatabase.h58
-rw-r--r--src/plugins/platforms/uikit/quikiteventloop.mm11
-rw-r--r--src/plugins/platforms/uikit/quikitintegration.mm14
-rw-r--r--src/plugins/platforms/uikit/quikitscreen.mm5
-rw-r--r--src/plugins/platforms/wayland/wayland.pro2
-rw-r--r--src/s60installs/bwins/QtCoreu.def2
-rw-r--r--src/s60installs/bwins/QtGuiu.def53
-rw-r--r--src/s60installs/bwins/QtSqlu.def1
-rw-r--r--src/s60installs/bwins/QtTestu.def1
-rw-r--r--src/s60installs/eabi/QtCoreu.def2
-rw-r--r--src/s60installs/eabi/QtGuiu.def41
-rw-r--r--src/s60installs/eabi/QtSqlu.def1
-rw-r--r--src/s60installs/eabi/QtTestu.def1
-rw-r--r--src/xmlpatterns/expr/qevaluationcache.cpp5
-rw-r--r--src/xmlpatterns/expr/qevaluationcache_p.h1
-rw-r--r--tests/auto/declarative/qdeclarativetextedit/data/horizontalAlignment_RightToLeft.qml1
-rw-r--r--tests/auto/declarative/qdeclarativetextedit/data/mouseselection_false_words.qml5
-rw-r--r--tests/auto/declarative/qdeclarativetextedit/data/mouseselection_true_words.qml5
-rw-r--r--tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp61
-rw-r--r--tests/auto/declarative/qdeclarativetextinput/data/horizontalAlignment_RightToLeft.qml1
-rw-r--r--tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp13
-rw-r--r--tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp79
-rw-r--r--tests/auto/qdir/tst_qdir.cpp6
-rw-r--r--tests/auto/qlineedit/tst_qlineedit.cpp7
-rw-r--r--tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp197
-rw-r--r--tools/qdoc3/cppcodemarker.cpp2
-rw-r--r--tools/qdoc3/cppcodeparser.cpp4
-rw-r--r--tools/qdoc3/ditaxmlgenerator.cpp64
-rw-r--r--tools/qdoc3/ditaxmlgenerator.h11
-rw-r--r--tools/qdoc3/doc.cpp2
-rw-r--r--tools/qdoc3/generator.cpp142
-rw-r--r--tools/qdoc3/generator.h6
-rw-r--r--tools/qdoc3/htmlgenerator.cpp84
-rw-r--r--tools/qdoc3/htmlgenerator.h11
-rw-r--r--tools/qdoc3/node.cpp13
-rw-r--r--tools/qdoc3/node.h2
-rw-r--r--tools/runonphone/main.cpp32
589 files changed, 12076 insertions, 5824 deletions
diff --git a/configure b/configure
index ec04414..a0e237e 100755
--- a/configure
+++ b/configure
@@ -3269,6 +3269,10 @@ if [ "$QT_CROSS_COMPILE" = "yes" ]; then
fi
fi
+if [ ! -n "$PKG_CONFIG" ]; then
+ QT_CONFIG="$QT_CONFIG no-pkg-config"
+fi
+
# process CFG_MAC_ARCHS
if [ "$PLATFORM_MAC" = "yes" ]; then
# check -arch arguments for validity.
diff --git a/dist/changes-4.7.4 b/dist/changes-4.7.4
index a37e66a..9a08d15 100644
--- a/dist/changes-4.7.4
+++ b/dist/changes-4.7.4
@@ -19,13 +19,317 @@ Merge Request: http://qt.gitorious.org
* Library *
****************************************************************************
+QtGui
+-----
+
+ - [QTBUG-20214] QRentBook: LSK and RSK of booking page will change
+ somethimes
+ - [QTBUG-19656] Spectrum: the Mode menu disappears after the device is
+ changed from portrait to landscape.
+ - [QTBUG-19260] Cursor cannot be placed between letters f and i - "fi"
+ is interpreted as one character
+ - [QTBUG-19157] Crash in QGLContextPrivate::bindTexture() when using
+ QPainter::fillRect() with a brush having a size > max_texture_size
+ - [QTBUG-19089] TextInput positionToRectangle doesn't return correct
+ coordinates for the cursor in pre-edit mode
+ - [QTBUG-19067] Font glyphs get clipped on the top
+ - [QTBUG-18500] QTextBlock crash
+ - [QTBUG-18303] Arabic multiline text is clipped on the right
+ - [QTBUG-18185] QStaticText: Wrong kerning and baselines when rotating a
+ QGraphicsView
+ - [QTBUG-17443] Feedreadercrash: when opening feed with unicode characters
+ - [QTBUG-17244] QGraphicsLayout Layouting should be done in one go. Ugly
+ layouting visible otherwise
+ - [QTBUG-17209] Bug-231 introduces an off-by-one error
+ - [QTBUG-17117] Arabic reordering problem when 2 fonts are used
+ - [QTBUG-11131] QAbstractScrollArea::setViewport() causes crash when used
+ from within event handler method
+ - [QTBUG-16422] Big coordinate values cause segfault on ARM when calling
+ QGraphicsEllipseItem::contains
+ - [QTBUG-18017] Regression: Text selection with shift-click stopped working
+ - [QTBUG-18192] Crash when invoking blockBoundingRect over a QTextDocument
+ documentLayout
+ - [QTBUG-17505] Inflexible focus handling in QGraphicsScene
+ - [QTBUG-17020] QPainter::drawText() fails to draw correct text in some
+ circumstances. Related to QTBUG-12950
+ - [QTBUG-16401] QGraphicsScene returns focus incorrectly when QGraphicsView
+ is focused
+ - [QTBUG-17812] regression: qsortfilterproxymodel::reset doesn't invalidate
+ the model (Windows)
+ - [QTBUG-17230] QPlainTextEdit corruption/crash after scrolling
+ - [QTBUG-17536] qguistatemachine::cloneEvent doesn't clone
+ GraphicsSceneWheel Events correctly
+ - [QTBUG-17254] XPM files crash QImage (write)
+ - [QTBUG-16292] QTreeView crash in indexRowSizeHint/itemHeight
+ - [QTBUG-17390] Child widgets don't inherit their parent's input contexts
+ - [QTBUG-15910] setstylesheet on a QComboBox causes a segmentation fault
+ - [QTBUG-16652] Compilation of "4.7" branch fails:
+ private/qdrawhelper_arm_simd_p.h: No such file or directory
+
+QtNetwork
+---------
+
+ - [QTBUG-17464] SIGBUS in fetchAndAddOrdered from
+ QlcdEngine::connectionStateSignalsSlot
+ - [QTBUG-16022] QHttpNetworkConnectionChannel::expand discards data if
+ gzip-stream has missing end-of-stream marker
+ - [QTBUG-17199] ICD Bearer management: Causes the main thread to hang
+ when ran on a different thread.
+
+QtCore
+------
+
+ - [QTBUG-15421] QDirIterator returns hidden directories when it should only
+ return files and returns hidden files when it should only return
+ directories
+
+QtScript
+--------
+
+ - [QTBUG-17815] Missing APIShims in obsoleted QScriptValue constructor
+ - [QTBUG-17788] Crash when calling collectGarbage() after requesting
+ arguments object of native context
+
+QtDBus
+------
+
+ - [QTBUG-14228] Ensure Qt 4.7 doesn't crash when a D-Bus message with file
+ descriptors is received
+
+QtSql
+-----
+
+ - [QTBUG-14831] Dynamic sorting of a QSortFilterProxyModel on a
+ QSqlTableModel with OnManualSubmit is broken (4.7 regression)
+
+Declarative
+-----------
+
+ - [QTBUG-20159] No effect of setting color on a QStaticText or a
+ QML element
+ - [QTBUG-18428] Colored and underlined styled text are not underlined or
+ completely coloured on device
+ - [QTBUG-18362] wigglytext.qml does not behave correctly in qmlscene
+ - [QTBUG-18266] More than one XmlListModel - Lists randomly show data from
+ wrong model
+ - [QTBUG-15983] Cannot pass enum value as signal parameter from C++ to QML
+ - [QTBUG-14974] ListView and GridView + contentY performance
+ - [QTBUG-18412] Crash in sendPostedEvents() - QObject::isWidgetType()
+ (issue with QDeclarativePixmapReply)
+ - [QTBUG-15356] PathView doesn't update if preferredHighlightBegin and
+ preferredHighlightEnd changed
+ - [QTBUG-17562] TextInput text in echo mode PasswordEchoOnEdit revealed
+ on refocus
+ - [QTBUG-17775] Crash when using FolderListModel with a repeater
+ - [QTBUG-17361] Nested pressDelays crashes application
+ - [QTBUG-15705] QDeclarativeTextInput::mousePressEvent() doesn't call
+ QInputContext::mouseHandler()
+ - [QTBUG-17501] Focus: Tap any of the Rounded-cornered rectangle, the
+ context menu doesn't disappear.
+ - [QTBUG-17008] ListView + XmlListModel freeze application when change
+ language key combination
+ - [QTBUG-17324] incorrect 'version is not installed' error when importing
+ QML module
+ - [QTBUG-16999] QML TextInput doesn't scroll if writing preedit at the end
+ of the line
+ - [QTBUG-13451] Support property versioning in QML
+ - [QTBUG-16959] Crash when using Grid.TopToBottom flow with Repeater
+ inside Grid
+ - [QTBUG-16522] QML ListView Should Support Dynamic Headers and Footers
+ - [QTBUG-17114] QtQuick 1.1 alignment regression
+ - [QTBUG-16283] TextEdit and TextInput need text selection modes
+ - [QTBUG-16284] Disable drag and drop in TextEdit and TextInput
+
+OpenVG
+------
+ - [QTBUG-18682] QImage convertToFormat does not work with certain image
+ formats when default (OpenVG) rendering engine used.
+
+OpenGL
+------
+ - [QTBUG-14217] Unresolved symbol QGLWindowSurface::staticMetaObject when
+ building for Windows Mobile 5.0 with OpenGL ES 1.1 support
+ - [QTBUG-18184] mingw gcc 4 static build failed in tools/qml because of the
+ symbol export in libQtOpenGL
+ - [QTBUG-17256] Change QGLPixmapData load functions to use the
+ 'convertInPlace' versions of QImage to save memory
+
+3rdParty
+--------
+
+ - Image formats
+ * [QTBUG-20425] Update bundled libpng to 1.5.4 (security)
+
****************************************************************************
* Platform Specific Changes *
****************************************************************************
+Qt for Linux/X11
+----------------
+
+ - Declarative
+ * [QTBUG-19914] Segfault in QDeclarativeBinding::createBinding triggered
+ by QMultimediaKit
+ - gui
+ * [QTBUG-16175] REG: Qt 4.7/Linux Qt Designer / Qt Creator show multiple
+ warnings: "Application asked to unregister timer 0x17000002 which is
+ not registered in this thread. Fix application."
+
+Qt for Windows
+--------------
+
+ - gui
+ * [QTBUG-19878] QImage constructor crash when opening some tiff images
+ - corelib
+ * [QTBUG-17014] Qt event delivery is unreliable on windows platforms
+ - declarative
+ * [QTBUG-19198] ListView lose items
+ * [QTBUG-18587] Roles are not removed in listmodel
+ - qmake
+ * [QTBUG-18537] Compiling Qt on Windows XP x64 using MinGW-w64 fails
+
+Qt for Mac OS X
+---------------
+
+ - gui
+ * [QTBUG-20496] Qt does not compile under OSX Lion or llvm-gcc
+ * [QTBUG-18547] Buffer overrun in QMacPixmapData::macCreatePixels
+ (QPixmap_mac.cpp)
+ * [QTBUG-15474] Mac: Qt:Sheet dialog permanently loses focus after
+ moving the parent window
+ * [QTBUG-15897] QMainWindow crash in destructor when having a
+ QDockWidget of type Qt::Drawer containing a QTreeWidget
+ - corelib
+ * [QTBUG-11481] Floating Dock Widget behavior on Mac [REGRESSION]
+ - network
+ * [QTBUG-14520] SSL Isn't working with osx 10.5
+ * [QTBUG-5645] SSL Memory leaks on Mac.
+
+Qt for Symbian
+--------------
+
+ - general
+ * [QTBUG-20216] Update QtOpenGL section in Symbian platform notes
+ - examples
+ * [QTBUG-15176] Default heap/stack size might not be enough for symbian
+ - qmake & mkspecs
+ * [QTBUG-20669] Symbian: DEBUGGABLE_UDEBONLY keyword needed in
+ generated mmp files
+ * [QTBUG-20192] Qt sis can't be created on symbian^1 5.0 and
+ symbian^3 PS2 environments
+ * [QTBUG-18207] QMAKE_CLEAN items with wildcards in symbian-abld
+ builds will halt the build without obvious reason.
+ * [QTBUG-17927] Simplified Chinese language is not supported
+ in Qt 4.7.2
+ - openvg
+ * [QTBUG-20339] when camera application is opened and closed, the qml
+ application in the background is getting closed
+ * [QTBUG-18027] Lazy conversion in fromSymbianCFbsBitmap for openVG
+ - opengl
+ * [QTBUG-19183] Enable multisampling if there's hw support for it
+ on Symbian
+ * [QTBUG-19180] Simplify texture pooling in GL graphics system
+ * [QTBUG-18850] Fix orientation change. Current behaviour results to
+ black screen
+ * [QTBUG-15254] Implement QPixmap::fromSymbianRSgImage() in the
+ OpenGL graphics system
+ * [QTBUG-18209] Native image handle provider support in QGLPixmapData
+ * [QTBUG-18270] Use destroyed swap behaviour in GL graphics system
+ on Symbian
+ * [QTBUG-15252] Implement CFbsBitmap backend for QPixmap in OpenGL
+ graphics system on Symbian
+ * [QTBUG-17850] Implement GL graphics system releaseCachedResources()
+ * [QTBUG-15253] Verify that applications using the OpenGL graphics
+ system on Symbian consume zero graphics memory when they are
+ not visible
+ * [QTBUG-16977] Symbian: Implement QPixmap::fromSymbianCFbsBitmap() in
+ the OpenGL graphics system
+ * [QTBUG-16949] Symbian: Recreate EGL surface on native window resize
+ - gui
+ * [QTBUG-20255] Regression: Some QMenus are shown completely transparent
+ in Symbian
+ * [QTBUG-20240] Regression: QS60Style - All standardIcons are drawn as
+ "small icons"
+ * [QTBUG-20813] Disabled splitscreen translation still moves screen
+ * [QTBUG-20034] Splitview - Auto-translation should translate as
+ little as possible to ensure visibility of the cursor
+ * [QTBUG-20007] Symbian: Do not add linked fonts to the QFontDatabase
+ * [QTBUG-19911] Orientation change causes unnecessary resizes to top
+ level window on Symbian
+ * [QTBUG-19880] Drawing a QPixmap to QImage causes a deep copy on
+ Symbian
+ * [QTBUG-19864] Predicted word is duplicated when doing an orientation
+ switch
+ * [QTBUG-19856] Doing an orientation change while in splitview mode
+ and closing VKB causes QGraphicsView to be incorrectly resized
+ * [QTBUG-19782] UI of the QWidget based applications those uses
+ QGroupBoxs are mess up in latest Symbian RND release
+ * [QTBUG-19734] KERN-EXEC 3 panic in
+ QCoeFepInputContext::translateInputWidget() method
+ * [QTBUG-19689] Textinput: last word inputted was duplicated after
+ press "Password" button
+ * [QTBUG-19578] Fix BCM2727 detection function on Symbian
+ * [QTBUG-19528] Opening symbol menu while typing with prediction on
+ causes issues
+ * [QTBUG-19471] Using QFileDialog crashes in Symbian
+ * [QTBUG-19104] while setting a softkey action in a qt application
+ on symbian, the icon specified only is shown partially
+ * [QTBUG-19043] Fullscreen main window with softkeys initially layouts
+ using full screen dimensions instead of client area dimensions
+ * [QTBUG-18863] QS60Style: compiling simulated style crashes due to
+ missing placeHolderTexture implementation
+ * [QTBUG-18493] Qt reserves graphics resources when launching application
+ directly to background
+ * [QTBUG-18486] Control pane (RSK Cancel) of the test note is covered by
+ "Options, Exit" when re-launching the application from Open applications
+ list
+ * [QTBUG-18409] If fullscreen application without softkeys opens a
+ fullscreen child dialog with softkeys, once the child dialog closes,
+ softkeys remain visible on applicaiton main screen.
+ * [QTBUG-17874] autotest failure between Qt 4.6.3 and Qt 4.7.2 in
+ QLinearGradient::setStops method on Symbian^3 platform
+ * [QTBUG-17844] Different point size for the font created using QFont
+ class and returned by QFontDialog
+ * [QTBUG-16857] Black corners around popup menu in Symbian^3
+ * [QTBUG-16785] QML app: After layout switch the focused text input field
+ is not visible on Split view
+ * [QTBUG-15031] Predictive text is not committed when writing in a QLineEdit
+ * [QTBUG-14058] Wrong availableGeometry detected in Symbian
+ * [QTBUG-17576] GraphicsViews: Focused widget is not visible after
+ orientation change
+ * [QTBUG-17930] Regression: Theme background in style is incorrect
+ * [QTBUG-18024] Don't use EGL surfaces for translucency with 32MB GPU chip
+ * [QTBUG-17984] QML application: focused text input field is not visible
+ when split view is opened
+ - declarative
+ * [QTBUG-20218] Symbian 5.3: QML text edit components are sending
+ software input panel requests
+ * [QTBUG-19821] Flickr: There is gridding on picture
+ * [QTBUG-19669] All events that QDeclarativeDebugTrace shows on
+ Symbian are of duration '0'
+ * [QTBUG-18869] Compilation breakage for Symbian (qmltooling)
+ * [QTBUG-18549] Animation timer seems to take too long time to expire
+ during scrolling a qml list in Symbian device.
+ * [QTBUG-17592] qml.pri causes havoc on Symbian 3.2 and 5.0
+ - network
+ * [QTBUG-18795] QNetworkConfigurationManager::allConfigurations
+ (QNetworkConfiguration::Active) not returning any active configuration
+ when instantiated and called from Secondary thread
+ * [QTBUG-18722] QDesktopServices::openUrl() doesn't handle URL encodings
+ correctly
+ * [QTBUG-18572] Crash with KERN-EXEC 0 when
+ QNetworkConfigurationManagerPrivate fails to connect
+ - corelib
+ * [QTBUG-17776] Qmlviewer: qmlviewer will crash after closing the
+ application "flickr demo"
+
****************************************************************************
* Tools *
****************************************************************************
+ - [QTBUG-18595] Enable remote debugging for qmlviewer
+ - [QTBUG-18063] qdoc3 depends on private header files from QML
+ - [QTBUG-16462] qdoc3 segfaults due to a uninitialized member variable
+ when using the WebXML output.
diff --git a/doc/src/classes/phonon-api.qdoc b/doc/src/classes/phonon-api.qdoc
index 95e20dd..d1b26f6 100644
--- a/doc/src/classes/phonon-api.qdoc
+++ b/doc/src/classes/phonon-api.qdoc
@@ -5131,6 +5131,30 @@
*/
/*!
+ \class Phonon::GlobalConfigPrivate
+ \inmodule Phonon
+ \internal
+*/
+
+/*!
+ \class Phonon::AudioDataOutputPrivate
+ \inmodule Phonon
+ \internal
+*/
+
+/*!
+ \class Phonon::AudioDataOutputInterface
+ \inmodule Phonon
+ \internal
+*/
+
+/*!
+ \class Phonon::SwiftSlider
+ \inmodule Phonon
+ \internal
+*/
+
+/*!
\fn Phonon::GlobalConfigPrivate::GlobalConfigPrivate()
\internal
*/
diff --git a/doc/src/declarative/declarativeui.qdoc b/doc/src/declarative/declarativeui.qdoc
index cecccf6..d89ca53 100644
--- a/doc/src/declarative/declarativeui.qdoc
+++ b/doc/src/declarative/declarativeui.qdoc
@@ -46,7 +46,7 @@ Qt applications.
\section1 Getting Started
\list
-\o \l{Introduction to Qt Quick}
+\o \l{Intro to Qt Quick}{Introduction to Qt Quick}
\o \l{QML for Qt Programmers}{QML Programming for Qt Programmers}
\o \l{Getting Started Programming with QML}
diff --git a/doc/src/declarative/qtquick-intro.qdoc b/doc/src/declarative/qtquick-intro.qdoc
index 4cd5db3..bdad2c3 100644
--- a/doc/src/declarative/qtquick-intro.qdoc
+++ b/doc/src/declarative/qtquick-intro.qdoc
@@ -27,7 +27,7 @@
/*!
\page qml-intro.html
-\title Introduction to Qt Quick
+\title Intro to Qt Quick
Qt Quick is a collection of technologies that are designed to help developers
create the kind of intuitive, modern, and fluid user interfaces that are
diff --git a/doc/src/deployment/deployment.qdoc b/doc/src/deployment/deployment.qdoc
index a13e2b8..ecb9ec6 100644
--- a/doc/src/deployment/deployment.qdoc
+++ b/doc/src/deployment/deployment.qdoc
@@ -102,15 +102,16 @@
of the libraries used by the application. Using static linking,
however, the Qt run-time is compiled into the executable.
- In general, you should deploy all plugins that your build of Qt uses,
- excluding only those that you have identified as being unnecessary
- for your application and its users.
+ In general, you should \l{Deploying Plugins}{deploy all plugins}
+ that your build of Qt uses, excluding only those that you have
+ identified as being unnecessary for your application and its users.
For instance, you may need to deploy plugins for JPEG support and
SQL drivers, but you should also deploy plugins that your users may
require, including those for accessibility.
- For more information about plugins, see the
- \l{plugins-howto.html}{How to Create Qt Plugins} documentation.
+ For more information about plugins, see
+ \l{plugins-howto.html}{How to Create Qt Plugins} and
+ \l{Deploying Plugins}.
When deploying an application using the shared library approach
you must ensure that the Qt libraries will use the correct path to
@@ -501,7 +502,8 @@
The \l{How to Create Qt Plugins} document outlines the issues you
need to pay attention to when building and deploying plugins for
- Qt applications.
+ Qt applications. More information about deployment can be found in
+ \l{Deploying Plugins}.
*/
/*!
diff --git a/doc/src/development/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc
index 3e52c03..cb9c1b9 100644
--- a/doc/src/development/qmake-manual.qdoc
+++ b/doc/src/development/qmake-manual.qdoc
@@ -3116,6 +3116,23 @@
platform application shell. In addition it will make the application to
be launched in background.
+ From S60 version 5.4 onwards, you can specify \c graphics_memory value using \c RSS_RULES
+ to specify the graphics memory quota for the application. The value is in kilobytes and
+ defaults to 24576 (i.e. 24MB) for applications that link against QtGui. The default for all
+ other applications is zero.
+
+ The graphics memory quota tells the operating system how much graphics memory the
+ application is likely to need so that it can free up enough graphics memory prior to
+ application launch. If the value is too small, it can cause random slowdowns later when
+ the memory is freed on on-demand basis. On the other hand, too large values can delay
+ the application launch unnecessarily.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.pro 159
+
+ This example sets the graphics memory quota to 12MB.
+
For detailed list of possible \c APP_REGISTRATION_INFO statements, please refer to the
Symbian platform help.
diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc
index af418e0..2490374 100644
--- a/doc/src/index.qdoc
+++ b/doc/src/index.qdoc
@@ -38,7 +38,9 @@
\list
\o \l{Qt Features Overview}
\o \l{How to Learn Qt}
- \o \l{Introduction to Qt Quick}
+ \o \l{Introduction to Qt Quick}{Qt Quick}
+ \o \l{Qt Whitepaper}{Qt C++ Framework}
+ \o \l{Intro to Qt Quick}{Qt Quick}
\o \l{external: Qt Mobility Manual}{Qt Mobility}
\o \l{Qt WebKit}
\endlist
diff --git a/doc/src/platforms/platform-notes.qdoc b/doc/src/platforms/platform-notes.qdoc
index 175cf1c..477f125 100644
--- a/doc/src/platforms/platform-notes.qdoc
+++ b/doc/src/platforms/platform-notes.qdoc
@@ -774,7 +774,7 @@
\row \o QtCore
\o \c PowerMgmt if QProcess::kill(...) or QProcess::terminate(...) is called.
\row \o QtCore
- \o \c AllFiles when \l{http://developer.symbian.org/wiki/index.php/Capabilities_%28Symbian_Signed%29/AllFiles_Capability}{accessing specific areas.}
+ \o \c AllFiles when \l{http://wiki.forum.nokia.com/index.php/Capabilities_%28Symbian_Signed%29/AllFiles_Capability}{accessing specific areas.}
\row \o QtDeclarative
\o \c NetworkServices is automatically added for this module if no capabilities are explicitly specified.
\row \o QtNetwork
@@ -798,22 +798,27 @@
\section1 Multimedia and Phonon Support
- Qt provides a backend for Qt's Phonon module, which supports
- video and sound playback through Symbian's Multimedia Framework, MMF.
+ Qt provides a high-level API for multimedia functionality with
+ (\l{http://doc.qt.nokia.com/qtmobility/multimedia.html}).
- In this release the support is experimental. Video playback may have
- flickering issues, and support for effects and playback queueing is
- incomplete.
+ Qt also provides a backend for Qt's Phonon module, which supports video and
+ sound playback through Symbian's Multimedia Framework, MMF. Note that Phonon
+ support is not being extended, and that Qt's multimedia module will
+ take over for Phonon at a later stage.
+
+ In this release the support is experimental. Video playback may show
+ artifacts when the video is moved or resized (for instance during
+ orientation flips). This problem is present on Symbian^1 and earlier
+ versions, and on Symbian^3 systems.
The audio and video formats that Phonon supports depends on what support
the platform provides for MMF. The emulator is known to have limited
codec support.
- In addition, there exists a backend for the Helix framework. However, due
- to it not shipping with Qt, its availability depends on the Symbian
- platform in use. If available, it is loaded in preference over the MMF
- plugin. If the Helix plugin fails to load, the MMF plugin, if present on
- the device, will be loaded instead.
+ In addition, there exists a backend for the Helix framework. However, since
+ it is not shipped with Qt, its availability depends on the Symbian platform
+ in use. If the MFF plugin fails to load, the Helix plugin, if present on the
+ device, will be loaded instead.
\section1 Hardware Accelerated Rendering
diff --git a/doc/src/platforms/supported-platforms.qdoc b/doc/src/platforms/supported-platforms.qdoc
index ba59c37..9d47695 100644
--- a/doc/src/platforms/supported-platforms.qdoc
+++ b/doc/src/platforms/supported-platforms.qdoc
@@ -334,8 +334,8 @@
\section2 Advanced Text Layout Engine
- Qt for Windows CE supports TrueType and raster fonts. Qt also has
- extended Unicode support and right-to-left languages. Qt's rich text
+ Qt for Windows CE supports TrueType® and raster fonts. Qt also has
+ extended Unicode support and right-to-left languages. Qt’s rich text
engine adds capabilities for complex text layouts including tables,
path tracing and text which flows around shapes.
@@ -373,7 +373,7 @@
by embedded Linux. You can use Qt to create highly memory efficient
devices and applications that have completely unique user experiences.
- Qt runs anywhere Linux runs. Qt's intuitive API means fewer lines of
+ Qt runs anywhere Linux runs. Qt’s intuitive API means fewer lines of
code and higher level functionality in less time. Use the code from
one single code-base and rebuild for all \l{Supported Platforms}
{supported platforms}.
@@ -410,7 +410,7 @@
frame buffer} that will match the physical device display, pixel for
pixel. This gives the developer a realistic testing infrastructure
testing on the desktop where the frame buffer simulates the physical
- device display's width, height and color depth.
+ device display’s width, height and color depth.
\section2 Inter-Process Communication (IPC)
@@ -421,7 +421,7 @@
\section2 Extended Font Format
Qt supports a wide range of font formats on embedded Linux including:
- TrueType, Postscript Type1 and Qt pre-rendered fonts. Qt has
+ TrueType®, Postscript® Type1 and Qt pre-rendered fonts. Qt has
extended Unicode support including automatic data extraction at build
time and automatic update at runtime.
@@ -681,7 +681,7 @@
\group platform-details
Qt is a cross-platform application and UI framework. Using Qt,
- you can write GUI applications once and deploy them
+ you can write web-enabled applications once and deploy them
across desktop, mobile and embedded operating systems without
rewriting the source code.
diff --git a/doc/src/qt-features.qdoc b/doc/src/qt-features.qdoc
deleted file mode 100644
index 0ae00b0..0000000
--- a/doc/src/qt-features.qdoc
+++ /dev/null
@@ -1,204 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** GNU Free Documentation License
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms
-** and conditions contained in a signed written agreement between you
-** and Nokia.
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-overview.html
- \title Qt Features Overview
-
- This document provides a summary of the most important features of Qt,
- providing links to other pages in the documentation that cover these
- features in more detail. It is not intended to be a comprehensive
- guide to Qt's features.
-
- \section1 Fundamental Technologies in Qt
-
- Qt is built upon a set of core technologies, provided by the \l QtCore
- and \l QtGui modules. These include the following:
-
- \list
- \o \l{The Tulip Container Classes}, a set of template container classes.
- \o \l{The Arthur Paint System}, the Qt 4 painting framework.
- \o \l{The Interview Framework}, a model/view architecture for item views
- and the \l{QtSQL Module}, which also uses this architecture.
- \o \l{The Scribe Classes}, a framework for creating text documents,
- performing low-level text layout and writing OpenDocument files.
- \o A collection of \l{Qt Widget Gallery}{common desktop widgets}, styled
- to fit in on each supported platform.
- \o \l{The Qt 4 Main Window Classes}, a main window, toolbar, menu, and
- docking architecture.
- \o The \l{Graphics View} framework provides a canvas for producing
- interactive graphics.
- \o The \l{QtNetwork Module} provides support for TCP, UDP and local
- sockets that are integrated with Qt's event model, including support
- for Secure Socket Layer (SSL) communications,
- \l{QNetworkProxy}{network proxy} servers and
- \l{Bearer Management}{network bearer management}.
- \o Enhanced \l{qt4-threads.html}{thread support} allows
- \l{Signals & Slots}{signal-slot} connections across threads and
- per-thread event loops.
- Additionally, \l{Thread Support in Qt}{a framework for concurrent programming}
- using Qt paradigms makes common threading tasks easier.
- \o A \l{resource system} for embedding images and other resource files
- into executable files makes it easier to deploy applications.
- \o A \l{QTestLib Manual}{unit testing framework} for Qt applications and
- libraries.
- \endlist
-
- The mature classes provided by these technologies have been used to build
- robust, cross-platform desktop applications. They are augmented by a number
- of additional technologies and improvements that have appeared over the
- lifetime of Qt 4.
-
- \section1 Graphical User Interfaces
-
- \div{class="float-right"}
- \inlineimage gtk-tabwidget.png
- \enddiv
- \div{class="float-right"}
- \inlineimage gtk-progressbar.png
- \br
- \inlineimage gtk-checkbox.png
- \br
- \inlineimage plastique-combobox.png
- \br
- \inlineimage plastique-radiobutton.png
- \enddiv
-
- Alongside the support for traditional desktop user interfaces, Qt includes
- support for declarative UI development with \l{Qt Quick}, a set of
- technologies for creating fluid, dynamic user interfaces. A starting point
- for exploring this approach can be found in the \l{Introduction to Qt Quick}
- guide.
-
- Qt provides a range of standard user interface elements, called widgets,
- for each supported platform. Widgets can be used as containers for other
- widgets, as windows, and as regular controls that the user interacts with.
- Where the platform supports it, widgets can be made to appear partially
- transparent, and may be styled with \l{Qt Style Sheets}.
-
- Support for \l{QTouchEvent}{touch input} and \l{Gestures Programming}{gestures}
- enable widgets to be used to create intuitive user interfaces for
- touch-enabled devices.
-
- User interfaces can also be created dynamically at run-time with the
- features provided by the \l{QtUiTools} module.
-
- A selection of available widgets are shown in the \l{Qt Widget Gallery}.
- An introduction to the concepts behind widgets can be found in the
- \l{Widgets Tutorial}.
-
- \clearfloat
- \section1 Painting, Printing and Rendering
-
- \div{class="float-left"}
- \inlineimage qpainter-affinetransformations.png
- \enddiv
-
- Widgets are just one of many kinds of paint device that Qt can render onto.
- This support for unified painting makes it possible for applications to use
- the same painting code for different tasks, as well as allowing Qt to be
- extended to support additional file formats.
-
- Qt provides support for common bitmap image formats,
- \l{QtSvg Module}{Scalable Vector Graphics} (SVG) drawings and animations,
- Postscript and Portable Document Format (PDF) files. Postscript and PDF are
- integrated with \l{Printing with Qt}{Qt's printing system}, which also
- allows printed output to be previewed.
-
- Interactive graphics can be created with the
- \l{The Animation Framework}{animation framework}, allowing animations to be
- used with both widgets and graphics items. Animations can be used with the
- \l{The State Machine Framework}{state machine framework}, which provides a
- way to express application logic and integrate it with the user interface.
- Animations can be enhanced with a collection of
- \l{QGraphicsEffect}{graphics effects} that operate on graphics items and
- can be applied individually or combined to create more complex effects.
-
- Qt supports integration with \l{QtOpenGL}{OpenGL} on a number of levels,
- providing convenience functions for handling textures and colors, as well
- as providing support for pixel and sample buffers. Future support for
- higher level 3D integration is provided by Qt3D enablers which include
- \l{QMatrix4x4}{matrix multiplication}, \l{QQuaternion}{quaternions}, and an
- API for \l{QGLShader}{vertex and fragment shaders}.
-
- Two APIs are provided for multimedia. The
- \l{Phonon Overview}{Phonon Multimedia Framework} has traditionally been
- used on desktop platforms. A set of
- \l{QtMultimedia Module}{multimedia services} provides low-level access to
- the system's audio system and is often used on mobile devices.
-
- \clearfloat
- \section1 Infrastructure
-
- \div{class="float-right"}
- \inlineimage qtscript-context2d.png
- \enddiv
-
- Facilities for Inter-Process Communication (IPC) and Remote Procedure
- Calling (RPC) mechanisms are available on platforms that support the
- \l{intro-to-dbus.html}{D-Bus} message bus system.
-
- An \l{Undo Framework}{Undo framework} based on the
- \l{Books about GUI Design#Design Patterns}{Command pattern} is designed to
- enable a consistent approach to handling data in editing applications.
-
- The \l{QtScript} and \l{QtScriptTools} modules provide support for
- application scripting and debugging using the ECMAScript language.
-
- The \l{QtHelp Module} provides the foundations of an interactive help
- system that can be used in conjunction with Qt Creator or integrated into
- applications directly.
-
- XML handling is supported in a number of places in Qt. The \l QtCore module
- provides classes for reading and writing XML streams. The \l QtXmlPatterns
- module includes XQuery, XPath and XSLT support, providing facilities for
- XML processing beyond that supported by the QtXml module, which contains
- SAX and DOM parsers. XML schema validation in the QtXmlPatterns module
- covers large parts of version 1.0 of the specification.
-
- \clearfloat
- \section1 Web Client Integration
-
- Integration between \l{Webkit in Qt}{Qt and WebKit} makes it possible for
- developers to use a fully-featured Web browser engine to display documents
- and access online services. Developers can access the browser's environment
- to create documents and run scripts within one or more browser widgets.
-
- A \l{QWebElement}{DOM access API} for QtWebKit provides a cleaner and safer
- way to access elements and structures of Web pages without the use of
- JavaScript.
-
- \section1 Further Reading
-
- Many of the technologies mentioned here, as well as other, more specific
- features, are listed in the \l{What's New in Qt 4} document. A complete
- list of Qt's modules can be found on the \l{All Modules} page, which
- also includes more domain-specific technologies.
-
- The tools that are supplied with Qt are covered by the listing in the
- \l{Qt's Tools} document.
-*/
diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc
index 01103a8..17dc1af 100644
--- a/doc/src/qt4-intro.qdoc
+++ b/doc/src/qt4-intro.qdoc
@@ -138,7 +138,7 @@
In Qt 4.4:
\list
- \o \l{WebKit in Qt}{Qt WebKit integration}, making it possible for developers
+ \o \l{Webkit in QT}{Qt WebKit integration}, making it possible for developers
to use a fully-featured Web browser to display documents and access online
services.
\o A multimedia API provided by the \l{Phonon Overview}{Phonon Multimedia Framework}.
@@ -707,6 +707,7 @@
introduced in Qt 4.7.
\sincelist 4.7
+
*/
/*!
diff --git a/doc/src/snippets/code/doc_src_qmake-manual.pro b/doc/src/snippets/code/doc_src_qmake-manual.pro
index ee35b77..042ca0e 100644
--- a/doc/src/snippets/code/doc_src_qmake-manual.pro
+++ b/doc/src/snippets/code/doc_src_qmake-manual.pro
@@ -1023,3 +1023,7 @@ packagesExist(sqlite3 QtNetwork QtDeclarative) {
// Use the fancy UI, as we have extra packages available
#endif
#! [158]
+
+#! [159]
+RSS_RULES += "graphics_memory=12288;"
+#! [159]
diff --git a/examples/xml/dombookmarks/dombookmarks.pro b/examples/xml/dombookmarks/dombookmarks.pro
index 374d9e3..1cee772 100644
--- a/examples/xml/dombookmarks/dombookmarks.pro
+++ b/examples/xml/dombookmarks/dombookmarks.pro
@@ -11,11 +11,9 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS dombookmarks.pro *.xbel
sources.path = $$[QT_INSTALL_EXAMPLES]/xml/dombookmarks
INSTALLS += target sources
-symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
-
symbian: {
include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
- addFiles.sources = frank.xbel jennifer.xbel
+ addFiles.files = frank.xbel jennifer.xbel
addFiles.path = files
DEPLOYMENT += addFiles
}
diff --git a/examples/xml/streambookmarks/streambookmarks.pro b/examples/xml/streambookmarks/streambookmarks.pro
index 0f2d55d..822a1ca 100644
--- a/examples/xml/streambookmarks/streambookmarks.pro
+++ b/examples/xml/streambookmarks/streambookmarks.pro
@@ -15,7 +15,7 @@ INSTALLS += target sources
symbian: {
include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
- addFiles.sources = frank.xbel jennifer.xbel
+ addFiles.files = frank.xbel jennifer.xbel
addFiles.path = /data/qt/streambookmarks
DEPLOYMENT += addFiles
}
diff --git a/mkspecs/features/symbian/default_post.prf b/mkspecs/features/symbian/default_post.prf
index 470372e..c8fd33b 100644
--- a/mkspecs/features/symbian/default_post.prf
+++ b/mkspecs/features/symbian/default_post.prf
@@ -19,7 +19,19 @@ contains(TEMPLATE, ".*app") {
default_bin_deployment.path += /sys/bin
load(application_icon.prf)
+
+ # Specify default graphics memory quota for applications unless explicitly set by developer.
+ !contains(S60_VERSION, 5.0):!contains(S60_VERSION, 5.1):!contains(S60_VERSION, 5.2):!contains(S60_VERSION, 5.3) {
+ !contains(RSS_RULES, .*graphics_memory.*) {
+ contains(QT, gui) {
+ RSS_RULES += "graphics_memory=24576;"
+ } else {
+ RSS_RULES += "graphics_memory=0;"
+ }
+ }
+ }
}
+
contains(TEMPLATE, lib): {
contains(CONFIG, staticlib)|contains(CONFIG, static): {
# Static libs should not have LIBRARY statements in S60
diff --git a/src/3rdparty/webkit/.tag b/src/3rdparty/webkit/.tag
index f786b78..a560e52 100644
--- a/src/3rdparty/webkit/.tag
+++ b/src/3rdparty/webkit/.tag
@@ -1 +1 @@
-a52dbae362a295e0adfb7ee4fdc21734ae4b7b45
+dda59e50379214c098f365a39c4d64b39ced427e
diff --git a/src/3rdparty/webkit/ChangeLog b/src/3rdparty/webkit/ChangeLog
index 96ef591..5f97e57 100644
--- a/src/3rdparty/webkit/ChangeLog
+++ b/src/3rdparty/webkit/ChangeLog
@@ -1,3 +1,39 @@
+2011-08-26 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org>
+
+ [Qt] libwebcore.a source is compiled without -fvisibility=hidden
+ -fvisibility-inlines-hidden
+ https://bugs.webkit.org/show_bug.cgi?id=65470
+
+ Patch by Holger Freyther <zecke@selfish.org>
+ Rubberstamped by Andreas Kling.
+
+ (qtwebkit-2.2 only by now)
+
+ WTF_USE_EXPORT_MACROS is still not enabled on trunk because there are
+ pending issues with WebKit2, but it appears to be safe to enable this
+ on QtWebKit, so this change is being added to the qtwebkit-2.2 branch.
+
+ The patch also adds CONFIG += hide_symbols and on Unix, +=
+ bsymbolic_functions, which should help reduce the library binary size.
+
+ Testing this is quite easy, so if there's any problem we'll soon
+ know. :-)
+
+ * Source/WebKit.pri:
+
+2011-08-06 Aron Rosenberg <arosenberg@logitech.com>
+
+ Reviewed by Benjamin Poulain.
+
+ [Qt] Fix build with Intel compiler on Windows
+ https://bugs.webkit.org/show_bug.cgi?id=65088
+
+ Disable Intel Compiler warning 873 - function "" has no corresponding operator
+ delete (to be called if an exception is thrown during initialization of an
+ allocated object).
+
+ * Source/WebKit.pri:
+
2011-06-27 Alexis Menard <alexis.menard@openbossa.org>
Reviewed by Kenneth Rohde Christiansen.
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/ChangeLog b/src/3rdparty/webkit/Source/JavaScriptCore/ChangeLog
index ae7ef60..010e66a 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/ChangeLog
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/ChangeLog
@@ -1,3 +1,210 @@
+2011-08-26 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org>
+
+ [Qt] libwebcore.a source is compiled without -fvisibility=hidden
+ -fvisibility-inlines-hidden
+ https://bugs.webkit.org/show_bug.cgi?id=65470
+
+ Patch by Holger Freyther <zecke@selfish.org>
+ Rubberstamped by Andreas Kling.
+
+ (qtwebkit-2.2 only by now)
+
+ WTF_USE_EXPORT_MACROS is still not enabled on trunk because there are
+ pending issues with WebKit2, but it appears to be safe to enable this
+ on QtWebKit, so this change is being added to the qtwebkit-2.2 branch.
+
+ The patch also adds CONFIG += hide_symbols and on Unix, +=
+ bsymbolic_functions, which should help reduce the library binary size.
+
+ Testing this is quite easy, so if there's any problem we'll soon
+ know. :-)
+
+ * wtf/Platform.h:
+
+2011-07-08 Chang Shu <cshu@webkit.org>
+
+ Rename "makeSecure" to "fill" and remove the support for displaying last character
+ to avoid layering violatation.
+ https://bugs.webkit.org/show_bug.cgi?id=59114
+
+ Reviewed by Alexey Proskuryakov.
+
+ * JavaScriptCore.exp:
+ * JavaScriptCore.order:
+ * wtf/text/StringImpl.cpp:
+ (WTF::StringImpl::fill):
+ * wtf/text/StringImpl.h:
+ * wtf/text/WTFString.h:
+ (WTF::String::fill):
+
+2011-08-15 Gavin Barraclough <barraclough@apple.com>
+
+ Crash accessing static property on sealed object
+ https://bugs.webkit.org/show_bug.cgi?id=66242
+
+ Reviewed by Sam Weinig.
+
+ * runtime/JSObject.h:
+ (JSC::JSObject::putDirectInternal):
+ - should only check isExtensible if checkReadOnly.
+
+2011-08-06 Aron Rosenberg <arosenberg@logitech.com>
+
+ Reviewed by Benjamin Poulain.
+
+ [Qt] Fix build with Intel compiler on Windows
+ https://bugs.webkit.org/show_bug.cgi?id=65088
+
+ Intel compiler needs .lib suffixes instead of .a
+ Intel compiler doesn't support nullptr
+ Intel compiler supports unsized arrays
+
+ * JavaScriptCore.pri:
+ * jsc.cpp:
+ * wtf/ByteArray.h:
+ * wtf/NullPtr.h:
+
+2011-05-15 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Geoff Garen & Michael Saboff.
+
+ https://bugs.webkit.org/show_bug.cgi?id=60860
+ Simplify backtracking in YARR JIT
+
+ YARR JIT currently performs a single pass of code generation over the pattern,
+ with special handling to allow the code generation for some backtracking code
+ out of line. We can simplify things by moving to a common mechanism whereby all
+ forwards matching code is generated in one pass, and all backtracking code is
+ generated in another. Backtracking code can be generated in reverse order, to
+ optimized the common fall-through case.
+
+ To make it easier to walk over the pattern, we can first convert to a more
+ byte-code like format before JIT generating. In time we should unify this with
+ the YARR interpreter to more closely unify the two.
+
+ * yarr/YarrJIT.cpp:
+ (JSC::Yarr::YarrGenerator::jumpIfNoAvailableInput):
+ (JSC::Yarr::YarrGenerator::YarrOp::YarrOp):
+ (JSC::Yarr::YarrGenerator::BacktrackingState::BacktrackingState):
+ (JSC::Yarr::YarrGenerator::BacktrackingState::append):
+ (JSC::Yarr::YarrGenerator::BacktrackingState::fallthrough):
+ (JSC::Yarr::YarrGenerator::BacktrackingState::link):
+ (JSC::Yarr::YarrGenerator::BacktrackingState::linkTo):
+ (JSC::Yarr::YarrGenerator::BacktrackingState::takeBacktracksToJumpList):
+ (JSC::Yarr::YarrGenerator::BacktrackingState::isEmpty):
+ (JSC::Yarr::YarrGenerator::BacktrackingState::linkDataLabels):
+ (JSC::Yarr::YarrGenerator::BacktrackingState::ReturnAddressRecord::ReturnAddressRecord):
+ (JSC::Yarr::YarrGenerator::generateAssertionBOL):
+ (JSC::Yarr::YarrGenerator::backtrackAssertionBOL):
+ (JSC::Yarr::YarrGenerator::generateAssertionEOL):
+ (JSC::Yarr::YarrGenerator::backtrackAssertionEOL):
+ (JSC::Yarr::YarrGenerator::matchAssertionWordchar):
+ (JSC::Yarr::YarrGenerator::generateAssertionWordBoundary):
+ (JSC::Yarr::YarrGenerator::backtrackAssertionWordBoundary):
+ (JSC::Yarr::YarrGenerator::generatePatternCharacterOnce):
+ (JSC::Yarr::YarrGenerator::backtrackPatternCharacterOnce):
+ (JSC::Yarr::YarrGenerator::generatePatternCharacterFixed):
+ (JSC::Yarr::YarrGenerator::backtrackPatternCharacterFixed):
+ (JSC::Yarr::YarrGenerator::generatePatternCharacterGreedy):
+ (JSC::Yarr::YarrGenerator::backtrackPatternCharacterGreedy):
+ (JSC::Yarr::YarrGenerator::generatePatternCharacterNonGreedy):
+ (JSC::Yarr::YarrGenerator::backtrackPatternCharacterNonGreedy):
+ (JSC::Yarr::YarrGenerator::generateCharacterClassOnce):
+ (JSC::Yarr::YarrGenerator::backtrackCharacterClassOnce):
+ (JSC::Yarr::YarrGenerator::generateCharacterClassFixed):
+ (JSC::Yarr::YarrGenerator::backtrackCharacterClassFixed):
+ (JSC::Yarr::YarrGenerator::generateCharacterClassGreedy):
+ (JSC::Yarr::YarrGenerator::backtrackCharacterClassGreedy):
+ (JSC::Yarr::YarrGenerator::generateCharacterClassNonGreedy):
+ (JSC::Yarr::YarrGenerator::backtrackCharacterClassNonGreedy):
+ (JSC::Yarr::YarrGenerator::generateTerm):
+ (JSC::Yarr::YarrGenerator::backtrackTerm):
+ (JSC::Yarr::YarrGenerator::generate):
+ (JSC::Yarr::YarrGenerator::backtrack):
+ (JSC::Yarr::YarrGenerator::opCompileParenthesesSubpattern):
+ (JSC::Yarr::YarrGenerator::opCompileParentheticalAssertion):
+ (JSC::Yarr::YarrGenerator::opCompileAlternative):
+ (JSC::Yarr::YarrGenerator::opCompileBody):
+ (JSC::Yarr::YarrGenerator::YarrGenerator):
+ (JSC::Yarr::YarrGenerator::compile):
+
+2011-06-08 Mikołaj Małecki <m.malecki@samsung.com>
+
+ Reviewed by Pavel Feldman.
+
+ Web Inspector: Crash by buffer overrun crash when serializing inspector object tree.
+ https://bugs.webkit.org/show_bug.cgi?id=52791
+
+ No new tests. The problem can be reproduced by trying to create InspectorValue
+ from 1.0e-100 and call ->toJSONString() on this.
+
+ * JavaScriptCore.exp:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ export 2 functions DecimalNumber::bufferLengthForStringExponential and
+ DecimalNumber::toStringExponential.
+
+2011-07-26 Alexis Menard <alexis.menard@openbossa.org>
+
+ Unreviewed build fix for Qt/Linux.
+
+ On platforms with no glib and gstreamer we should not build javascriptcore
+ with the Glib support. This is related to http://trac.webkit.org/changeset/91752.
+
+ * wtf/wtf.pri:
+
+2011-07-26 Alexis Menard <alexis.menard@openbossa.org>
+
+ Reviewed by Andreas Kling.
+
+ [Qt] Change default backend to use GStreamer on Linux and QuickTime on Mac.
+ https://bugs.webkit.org/show_bug.cgi?id=63472
+
+ Enable the bits needed for GStreamer only when QtMultimedia is not used.
+
+ * wtf/wtf.pri:
+
+2011-07-12 Hui Huang <Hui.2.Huang@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt] Fix compiling errors with QtWebkit 2.2 WINSCW build.
+ https://bugs.webkit.org/show_bug.cgi?id=64391
+
+ (QtWebKit-2.2 only, patch not in webkit trunk)
+
+ * parser/JSParser.cpp:
+ * runtime/JSONObject.cpp:
+ * wtf/PageAllocatorSymbian.h:
+ * wtf/Platform.h:
+ * wtf/text/AtomicString.h:
+ * wtf/text/StringStatics.cpp:
+
+
+2011-07-13 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org>
+
+ Reviewed by Andreas Kling.
+
+ Broken build on QNX
+ https://bugs.webkit.org/show_bug.cgi?id=63717
+
+ QNX doesn't support pthread's SA_RESTART (required by
+ JSC_MULTIPLE_THREADS), JIT is broken at runtime and there a
+ few minor compilation errors here and there.
+
+ Original patch by Ritt Konstantin <ritt.ks@gmail.com>, also
+ tested by him on QNX v6.5 (x86)
+
+ * wtf/DateMath.cpp: fix usage of abs/labs
+ * wtf/Platform.h: Disable JIT and JSC_MULTIPLE_THREADS
+ * wtf/StackBounds.cpp: Add a couple of missing includes (and sort them)
+
+2011-07-09 Thouraya Andolsi <thouraya.andolsi@st.com>
+
+ Fix unaligned userspace access for SH4 platforms.
+ https://bugs.webkit.org/show_bug.cgi?id=62993
+
+ * wtf/Platform.h:
+
2011-05-23 Matthew Delaney <mdelaney@apple.com>
Reviewed by Simon Fraser.
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri b/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri
index f6d064f..d8290cf 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri
@@ -73,7 +73,7 @@ defineTest(prependJavaScriptCoreLib) {
# Argument is the relative path to JavaScriptCore.pro's qmake output
pathToJavaScriptCoreOutput = $$ARGS/$$JAVASCRIPTCORE_DESTDIR
- win32-msvc*|wince* {
+ win32-msvc*|wince*|win32-icc {
LIBS = -l$$JAVASCRIPTCORE_TARGET $$LIBS
LIBS = -L$$pathToJavaScriptCoreOutput $$LIBS
POST_TARGETDEPS += $${pathToJavaScriptCoreOutput}$${QMAKE_DIR_SEP}$${JAVASCRIPTCORE_TARGET}.lib
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/jsc.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/jsc.cpp
index 6ef8e18..5f63749 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/jsc.cpp
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/jsc.cpp
@@ -312,7 +312,7 @@ EncodedJSValue JSC_HOST_CALL functionQuit(ExecState* exec)
// be in a separate main function because the jscmain function requires object
// unwinding.
-#if COMPILER(MSVC) && !defined(_DEBUG) && !OS(WINCE)
+#if COMPILER(MSVC) && !COMPILER(INTEL) && !defined(_DEBUG) && !OS(WINCE)
#define TRY __try {
#define EXCEPT(x) } __except (EXCEPTION_EXECUTE_HANDLER) { x; }
#else
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/parser/JSParser.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/parser/JSParser.cpp
index f36c668..5f6d8cf 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/parser/JSParser.cpp
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/parser/JSParser.cpp
@@ -215,13 +215,21 @@ private:
template <class TreeBuilder> ALWAYS_INLINE TreeExpression parseObjectLiteral(TreeBuilder&);
template <class TreeBuilder> ALWAYS_INLINE TreeExpression parseStrictObjectLiteral(TreeBuilder&);
template <class TreeBuilder> ALWAYS_INLINE TreeArguments parseArguments(TreeBuilder&);
+#if COMPILER(WINSCW)
+ template <bool strict, class TreeBuilder> ALWAYS_INLINE TreeProperty parseProperty(bool, TreeBuilder&);
+#else
template <bool strict, class TreeBuilder> ALWAYS_INLINE TreeProperty parseProperty(TreeBuilder&);
+#endif
template <class TreeBuilder> ALWAYS_INLINE TreeFunctionBody parseFunctionBody(TreeBuilder&);
template <class TreeBuilder> ALWAYS_INLINE TreeFormalParameterList parseFormalParameters(TreeBuilder&);
template <class TreeBuilder> ALWAYS_INLINE TreeExpression parseVarDeclarationList(TreeBuilder&, int& declarations, const Identifier*& lastIdent, TreeExpression& lastInitializer, int& identStart, int& initStart, int& initEnd);
template <class TreeBuilder> ALWAYS_INLINE TreeConstDeclList parseConstDeclarationList(TreeBuilder& context);
enum FunctionRequirements { FunctionNoRequirements, FunctionNeedsName };
+#if COMPILER(WINSCW)
+ template <FunctionRequirements, bool nameIsInContainingScope, class TreeBuilder> bool parseFunctionInfo(FunctionRequirements, bool, TreeBuilder&, const Identifier*&, TreeFormalParameterList&, TreeFunctionBody&, int& openBrace, int& closeBrace, int& bodyStartLine);
+#else
template <FunctionRequirements, bool nameIsInContainingScope, class TreeBuilder> bool parseFunctionInfo(TreeBuilder&, const Identifier*&, TreeFormalParameterList&, TreeFunctionBody&, int& openBrace, int& closeBrace, int& bodyStartLine);
+#endif
ALWAYS_INLINE int isBinaryOperator(JSTokenType token);
bool allowAutomaticSemicolon();
@@ -1290,7 +1298,11 @@ template <class TreeBuilder> TreeFunctionBody JSParser::parseFunctionBody(TreeBu
return context.createFunctionBody(strictMode());
}
+#if COMPILER(WINSCW)
+template <JSParser::FunctionRequirements, bool, class TreeBuilder> bool JSParser::parseFunctionInfo(JSParser::FunctionRequirements requirements, bool nameIsInContainingScope, TreeBuilder& context, const Identifier*& name, TreeFormalParameterList& parameters, TreeFunctionBody& body, int& openBracePos, int& closeBracePos, int& bodyStartLine)
+#else
template <JSParser::FunctionRequirements requirements, bool nameIsInContainingScope, class TreeBuilder> bool JSParser::parseFunctionInfo(TreeBuilder& context, const Identifier*& name, TreeFormalParameterList& parameters, TreeFunctionBody& body, int& openBracePos, int& closeBracePos, int& bodyStartLine)
+#endif
{
AutoPopScopeRef functionScope(this, pushScope());
functionScope->setIsFunction();
@@ -1371,7 +1383,11 @@ template <class TreeBuilder> TreeStatement JSParser::parseFunctionDeclaration(Tr
int openBracePos = 0;
int closeBracePos = 0;
int bodyStartLine = 0;
+#if COMPILER(WINSCW)
+ failIfFalse((parseFunctionInfo<FunctionNeedsName, true>(FunctionNeedsName, true, context, name, parameters, body, openBracePos, closeBracePos, bodyStartLine)));
+#else
failIfFalse((parseFunctionInfo<FunctionNeedsName, true>(context, name, parameters, body, openBracePos, closeBracePos, bodyStartLine)));
+#endif
failIfFalse(name);
failIfFalseIfStrict(declareVariable(name));
return context.createFuncDeclStatement(name, body, parameters, openBracePos, closeBracePos, bodyStartLine, m_lastLine);
@@ -1695,8 +1711,11 @@ template <class TreeBuilder> TreeExpression JSParser::parseBinaryExpression(Tree
return context.popOperandStack(operandStackDepth);
}
-
+#if COMPILER(WINSCW)
+template <bool complete, class TreeBuilder> TreeProperty JSParser::parseProperty(bool complete, TreeBuilder& context)
+#else
template <bool complete, class TreeBuilder> TreeProperty JSParser::parseProperty(TreeBuilder& context)
+#endif
{
bool wasIdent = false;
switch (m_token.m_type) {
@@ -1710,7 +1729,14 @@ template <bool complete, class TreeBuilder> TreeProperty JSParser::parseProperty
next();
TreeExpression node = parseAssignmentExpression(context);
failIfFalse(node);
+#if COMPILER(WINSCW)
+ if (complete)
+ return context.template createProperty<true>(ident, node, PropertyNode::Constant);
+ else
+ return context.template createProperty<false>(ident, node, PropertyNode::Constant);
+#else
return context.template createProperty<complete>(ident, node, PropertyNode::Constant);
+#endif
}
failIfFalse(wasIdent);
matchOrFail(IDENT);
@@ -1727,8 +1753,16 @@ template <bool complete, class TreeBuilder> TreeProperty JSParser::parseProperty
type = PropertyNode::Setter;
else
fail();
+#if COMPILER(WINSCW)
+ failIfFalse((parseFunctionInfo<FunctionNeedsName, false>(FunctionNeedsName, false, context, accessorName, parameters, body, openBracePos, closeBracePos, bodyStartLine)));
+ if (complete)
+ return context.template createGetterOrSetterProperty<true>(type, accessorName, parameters, body, openBracePos, closeBracePos, bodyStartLine, m_lastLine);
+ else
+ return context.template createGetterOrSetterProperty<false>(type, accessorName, parameters, body, openBracePos, closeBracePos, bodyStartLine, m_lastLine);
+#else
failIfFalse((parseFunctionInfo<FunctionNeedsName, false>(context, accessorName, parameters, body, openBracePos, closeBracePos, bodyStartLine)));
return context.template createGetterOrSetterProperty<complete>(type, accessorName, parameters, body, openBracePos, closeBracePos, bodyStartLine, m_lastLine);
+#endif
}
case NUMBER: {
double propertyName = m_token.m_data.doubleValue;
@@ -1736,7 +1770,14 @@ template <bool complete, class TreeBuilder> TreeProperty JSParser::parseProperty
consumeOrFail(COLON);
TreeExpression node = parseAssignmentExpression(context);
failIfFalse(node);
+#if COMPILER(WINSCW)
+ if (complete)
+ return context.template createProperty<true>(m_globalData, propertyName, node, PropertyNode::Constant);
+ else
+ return context.template createProperty<false>(m_globalData, propertyName, node, PropertyNode::Constant);
+#else
return context.template createProperty<complete>(m_globalData, propertyName, node, PropertyNode::Constant);
+#endif
}
default:
failIfFalse(m_token.m_type & KeywordTokenFlag);
@@ -1754,7 +1795,11 @@ template <class TreeBuilder> TreeExpression JSParser::parseObjectLiteral(TreeBui
return context.createObjectLiteral();
}
+#if COMPILER(WINSCW)
+ TreeProperty property = parseProperty<false>(false, context);
+#else
TreeProperty property = parseProperty<false>(context);
+#endif
failIfFalse(property);
if (!m_syntaxAlreadyValidated && context.getType(property) != PropertyNode::Constant) {
m_lexer->setOffset(startOffset);
@@ -1768,7 +1813,11 @@ template <class TreeBuilder> TreeExpression JSParser::parseObjectLiteral(TreeBui
// allow extra comma, see http://bugs.webkit.org/show_bug.cgi?id=5939
if (match(CLOSEBRACE))
break;
+#if COMPILER(WINSCW)
+ property = parseProperty<false>(false, context);
+#else
property = parseProperty<false>(context);
+#endif
failIfFalse(property);
if (!m_syntaxAlreadyValidated && context.getType(property) != PropertyNode::Constant) {
m_lexer->setOffset(startOffset);
@@ -1792,7 +1841,11 @@ template <class TreeBuilder> TreeExpression JSParser::parseStrictObjectLiteral(T
return context.createObjectLiteral();
}
+#if COMPILER(WINSCW)
+ TreeProperty property = parseProperty<true>(true, context);
+#else
TreeProperty property = parseProperty<true>(context);
+#endif
failIfFalse(property);
typedef HashMap<RefPtr<StringImpl>, unsigned, IdentifierRepHash> ObjectValidationMap;
@@ -1808,7 +1861,11 @@ template <class TreeBuilder> TreeExpression JSParser::parseStrictObjectLiteral(T
// allow extra comma, see http://bugs.webkit.org/show_bug.cgi?id=5939
if (match(CLOSEBRACE))
break;
+#if COMPILER(WINSCW)
+ property = parseProperty<true>(true, context);
+#else
property = parseProperty<true>(context);
+#endif
failIfFalse(property);
if (!m_syntaxAlreadyValidated) {
std::pair<ObjectValidationMap::iterator, bool> propertyEntryIter = objectValidator.add(context.getName(property).impl(), context.getType(property));
@@ -1987,7 +2044,11 @@ template <class TreeBuilder> TreeExpression JSParser::parseMemberExpression(Tree
int closeBracePos = 0;
int bodyStartLine = 0;
next();
+#if COMPILER(WINSCW)
+ failIfFalse((parseFunctionInfo<FunctionNoRequirements, false>(FunctionNoRequirements, false, context, name, parameters, body, openBracePos, closeBracePos, bodyStartLine)));
+#else
failIfFalse((parseFunctionInfo<FunctionNoRequirements, false>(context, name, parameters, body, openBracePos, closeBracePos, bodyStartLine)));
+#endif
base = context.createFunctionExpr(name, body, parameters, openBracePos, closeBracePos, bodyStartLine, m_lastLine);
} else
base = parsePrimaryExpression(context);
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSONObject.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSONObject.cpp
index 8742fdc..27a508a 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSONObject.cpp
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSONObject.cpp
@@ -76,8 +76,13 @@ private:
class Stringifier {
WTF_MAKE_NONCOPYABLE(Stringifier);
public:
+#if COMPILER(WINSCW)
+ Stringifier(ExecState*, const Local<Unknown>* replacer, const Local<Unknown>* space);
+ Local<Unknown> stringify(Handle<Unknown>*);
+#else
Stringifier(ExecState*, const Local<Unknown>& replacer, const Local<Unknown>& space);
Local<Unknown> stringify(Handle<Unknown>);
+#endif
void visitAggregate(SlotVisitor&);
@@ -197,6 +202,15 @@ JSValue PropertyNameForFunctionCall::value(ExecState* exec) const
// ------------------------------ Stringifier --------------------------------
+#if COMPILER(WINSCW)
+Stringifier::Stringifier(ExecState* exec, const Local<Unknown>* replacer, const Local<Unknown>* space)
+ : m_exec(exec)
+ , m_replacer(*replacer)
+ , m_usingArrayReplacer(false)
+ , m_arrayReplacerPropertyNames(exec)
+ , m_replacerCallType(CallTypeNone)
+ , m_gap(gap(exec, space->get()))
+#else
Stringifier::Stringifier(ExecState* exec, const Local<Unknown>& replacer, const Local<Unknown>& space)
: m_exec(exec)
, m_replacer(replacer)
@@ -204,6 +218,7 @@ Stringifier::Stringifier(ExecState* exec, const Local<Unknown>& replacer, const
, m_arrayReplacerPropertyNames(exec)
, m_replacerCallType(CallTypeNone)
, m_gap(gap(exec, space.get()))
+#endif
{
if (!m_replacer.isObject())
return;
@@ -244,17 +259,29 @@ Stringifier::Stringifier(ExecState* exec, const Local<Unknown>& replacer, const
m_replacerCallType = m_replacer.asObject()->getCallData(m_replacerCallData);
}
+#if COMPILER(WINSCW)
+Local<Unknown> Stringifier::stringify(Handle<Unknown>* value)
+#else
Local<Unknown> Stringifier::stringify(Handle<Unknown> value)
+#endif
{
JSObject* object = constructEmptyObject(m_exec);
if (m_exec->hadException())
return Local<Unknown>(m_exec->globalData(), jsNull());
PropertyNameForFunctionCall emptyPropertyName(m_exec->globalData().propertyNames->emptyIdentifier);
+#if COMPILER(WINSCW)
+ object->putDirect(m_exec->globalData(), m_exec->globalData().propertyNames->emptyIdentifier, value->get());
+#else
object->putDirect(m_exec->globalData(), m_exec->globalData().propertyNames->emptyIdentifier, value.get());
+#endif
UStringBuilder result;
+#if COMPILER(WINSCW)
+ if (appendStringifiedValue(result, value->get(), object, emptyPropertyName) != StringifySucceeded)
+#else
if (appendStringifiedValue(result, value.get(), object, emptyPropertyName) != StringifySucceeded)
+#endif
return Local<Unknown>(m_exec->globalData(), jsUndefined());
if (m_exec->hadException())
return Local<Unknown>(m_exec->globalData(), jsNull());
@@ -606,6 +633,15 @@ bool JSONObject::getOwnPropertyDescriptor(ExecState* exec, const Identifier& pro
class Walker {
public:
+#if COMPILER(WINSCW)
+ Walker(ExecState* exec, Handle<JSObject>* function, CallType callType, CallData callData)
+ : m_exec(exec)
+ , m_function(exec->globalData(), *function)
+ , m_callType(callType)
+ , m_callData(callData)
+ {
+ }
+#else
Walker(ExecState* exec, Handle<JSObject> function, CallType callType, CallData callData)
: m_exec(exec)
, m_function(exec->globalData(), function)
@@ -613,6 +649,7 @@ public:
, m_callData(callData)
{
}
+#endif
JSValue walk(JSValue unfiltered);
private:
JSValue callReviver(JSObject* thisObj, JSValue property, JSValue unfiltered)
@@ -829,7 +866,12 @@ EncodedJSValue JSC_HOST_CALL JSONProtoFuncParse(ExecState* exec)
CallType callType = getCallData(function, callData);
if (callType == CallTypeNone)
return JSValue::encode(unfiltered);
+#if COMPILER(WINSCW)
+ Local<JSObject> handle(exec->globalData(), asObject(function));
+ return JSValue::encode(Walker(exec, &handle, callType, callData).walk(unfiltered));
+#else
return JSValue::encode(Walker(exec, Local<JSObject>(exec->globalData(), asObject(function)), callType, callData).walk(unfiltered));
+#endif
}
// ECMA-262 v5 15.12.3
@@ -841,13 +883,24 @@ EncodedJSValue JSC_HOST_CALL JSONProtoFuncStringify(ExecState* exec)
Local<Unknown> value(exec->globalData(), exec->argument(0));
Local<Unknown> replacer(exec->globalData(), exec->argument(1));
Local<Unknown> space(exec->globalData(), exec->argument(2));
+#if COMPILER(WINSCW)
+ return JSValue::encode(Stringifier(exec, &replacer, &space).stringify(&value).get());
+#else
return JSValue::encode(Stringifier(exec, replacer, space).stringify(value).get());
+#endif
}
UString JSONStringify(ExecState* exec, JSValue value, unsigned indent)
{
LocalScope scope(exec->globalData());
+#if COMPILER(WINSCW)
+ Local<Unknown> replacer(exec->globalData(), jsNull());
+ Local<Unknown> space(exec->globalData(), jsNumber(indent));
+ Local<Unknown> valueHandle(exec->globalData(), value);
+ Local<Unknown> result = Stringifier(exec, &replacer, &space).stringify(&valueHandle);
+#else
Local<Unknown> result = Stringifier(exec, Local<Unknown>(exec->globalData(), jsNull()), Local<Unknown>(exec->globalData(), jsNumber(indent))).stringify(Local<Unknown>(exec->globalData(), value));
+#endif
if (result.isUndefinedOrNull())
return UString();
return result.getString(exec);
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.h b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.h
index 768c457..1d7d2f7 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.h
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.h
@@ -587,7 +587,7 @@ inline bool JSObject::putDirectInternal(JSGlobalData& globalData, const Identifi
return true;
}
- if (!isExtensible())
+ if (checkReadOnly && !isExtensible())
return false;
size_t currentCapacity = m_structure->propertyStorageCapacity();
@@ -651,7 +651,7 @@ inline bool JSObject::putDirectInternal(JSGlobalData& globalData, const Identifi
return true;
}
- if (!isExtensible())
+ if (checkReadOnly && !isExtensible())
return false;
Structure* structure = Structure::addPropertyTransition(globalData, m_structure.get(), propertyName, attributes, specificFunction, offset);
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/ByteArray.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/ByteArray.h
index bdec630..47b1cff 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/ByteArray.h
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/ByteArray.h
@@ -91,7 +91,7 @@ namespace WTF {
// MSVC can't handle correctly unsized array.
// warning C4200: nonstandard extension used : zero-sized array in struct/union
// Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
-#if COMPILER(MSVC)
+#if COMPILER(MSVC) && !COMPILER(INTEL)
unsigned char m_data[INT_MAX];
#else
unsigned char m_data[];
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/DateMath.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/DateMath.cpp
index d414eae..b181ee2 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/DateMath.cpp
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/DateMath.cpp
@@ -692,7 +692,7 @@ double parseES5DateFromNullTerminatedCharacters(const char* dateString)
return NaN;
if (*postParsePosition != ':' || (postParsePosition - currentPosition) != 2)
return NaN;
- tzHoursAbs = abs(tzHours);
+ tzHoursAbs = labs(tzHours);
currentPosition = postParsePosition + 1;
if (!isASCIIDigit(*currentPosition))
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/NullPtr.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/NullPtr.h
index c0e7bd3..9c4319d 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/NullPtr.h
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/NullPtr.h
@@ -35,7 +35,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define __has_feature(feature) 0
#endif
-#if __has_feature(cxx_nullptr) || (GCC_VERSION_AT_LEAST(4, 6, 0) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && _MSC_VER >= 1600)
+#if __has_feature(cxx_nullptr) || (GCC_VERSION_AT_LEAST(4, 6, 0) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && _MSC_VER >= 1600 && !COMPILER(INTEL))
#define HAVE_NULLPTR 1
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/PageAllocatorSymbian.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/PageAllocatorSymbian.h
index eba5b03..d396379 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/PageAllocatorSymbian.h
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/PageAllocatorSymbian.h
@@ -68,7 +68,7 @@ public:
// Size of the large up-front reservation
#if defined(__WINS__)
// Emulator has limited virtual address space
-const size_t largeReservationSize = 96*1024*1024;
+const size_t largeReservationSize = 64*1024*1024;
#else
// HW has plenty of virtual addresses
const size_t largeReservationSize = 256*1024*1024;
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
index 716d9e1..8309acc 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
@@ -365,7 +365,7 @@
#endif /* ARM */
-#if CPU(ARM) || CPU(MIPS)
+#if CPU(ARM) || CPU(MIPS) || CPU(SH4)
#define WTF_CPU_NEEDS_ALIGNED_ACCESS 1
#endif
@@ -581,7 +581,7 @@
#define WTF_USE_PTHREAD_BASED_QT 1
#endif
-#if (PLATFORM(GTK) || PLATFORM(IOS) || PLATFORM(MAC) || PLATFORM(WIN) || (PLATFORM(QT) && (OS(DARWIN) || USE(PTHREAD_BASED_QT)) && !ENABLE(SINGLE_THREADED))) && !defined(ENABLE_JSC_MULTIPLE_THREADS)
+#if (PLATFORM(GTK) || PLATFORM(IOS) || PLATFORM(MAC) || PLATFORM(WIN) || (PLATFORM(QT) && (OS(DARWIN) || USE(PTHREAD_BASED_QT)) && !ENABLE(SINGLE_THREADED))) && !OS(QNX) && !defined(ENABLE_JSC_MULTIPLE_THREADS)
#define ENABLE_JSC_MULTIPLE_THREADS 1
#endif
@@ -1019,11 +1019,17 @@
#define ENABLE_JIT 0
#endif
+/* Disable JIT for WINSCW Symbian Emulator */
+#if !defined(ENABLE_JIT) && COMPILER(WINSCW)
+#define ENABLE_JIT 0
+#endif
+
/* The JIT is enabled by default on all x86, x64-64, ARM & MIPS platforms. */
#if !defined(ENABLE_JIT) \
&& (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(MIPS)) \
&& (OS(DARWIN) || !COMPILER(GCC) || GCC_VERSION_AT_LEAST(4, 1, 0)) \
- && !OS(WINCE)
+ && !OS(WINCE) \
+ && !OS(QNX)
#define ENABLE_JIT 1
#endif
@@ -1215,7 +1221,11 @@
since most ports try to support sub-project independence, adding new headers
to WTF causes many ports to break, and so this way we can address the build
breakages one port at a time. */
+#if PLATFORM(QT)
+#define WTF_USE_EXPORT_MACROS 1
+#else
#define WTF_USE_EXPORT_MACROS 0
+#endif
#if PLATFORM(QT) || PLATFORM(GTK)
#define WTF_USE_UNIX_DOMAIN_SOCKETS 1
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/StackBounds.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/StackBounds.cpp
index 41e0d60..6b61270 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/StackBounds.cpp
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/StackBounds.cpp
@@ -41,10 +41,12 @@
#elif OS(QNX)
+#include <errno.h>
#include <fcntl.h>
-#include <sys/procfs.h>
+#include <pthread.h>
#include <stdio.h>
-#include <errno.h>
+#include <string.h>
+#include <sys/procfs.h>
#elif OS(UNIX)
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.h
index 440700c..cc451e8 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.h
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.h
@@ -113,6 +113,16 @@ public:
static AtomicString fromUTF8(const char*, size_t);
static AtomicString fromUTF8(const char*);
+#if COMPILER(WINSCW)
+ static const AtomicString& nullAtom2();
+ static const AtomicString& emptyAtom2();
+ static const AtomicString& textAtom2();
+ static const AtomicString& commentAtom2();
+ static const AtomicString& starAtom2();
+ static const AtomicString& xmlAtom2();
+ static const AtomicString& xmlnsAtom2();
+#endif
+
private:
String m_string;
@@ -155,6 +165,24 @@ inline bool equalIgnoringCase(const String& a, const AtomicString& b) { return e
// Define external global variables for the commonly used atomic strings.
// These are only usable from the main thread.
#ifndef ATOMICSTRING_HIDE_GLOBALS
+
+#if COMPILER(WINSCW)
+extern const JS_EXPORTDATA AtomicString nullAtom1;
+extern const JS_EXPORTDATA AtomicString emptyAtom1;
+extern const JS_EXPORTDATA AtomicString textAtom1;
+extern const JS_EXPORTDATA AtomicString commentAtom1;
+extern const JS_EXPORTDATA AtomicString starAtom1;
+extern const JS_EXPORTDATA AtomicString xmlAtom1;
+extern const JS_EXPORTDATA AtomicString xmlnsAtom1;
+
+#define nullAtom AtomicString::nullAtom2()
+#define emptyAtom AtomicString::emptyAtom2()
+#define textAtom AtomicString::textAtom2()
+#define commentAtom AtomicString::commentAtom2()
+#define starAtom AtomicString::starAtom2()
+#define xmlAtom AtomicString::xmlAtom2()
+#define xmlnsAtom AtomicString::xmlnsAtom2()
+#else
extern const JS_EXPORTDATA AtomicString nullAtom;
extern const JS_EXPORTDATA AtomicString emptyAtom;
extern const JS_EXPORTDATA AtomicString textAtom;
@@ -162,6 +190,7 @@ extern const JS_EXPORTDATA AtomicString commentAtom;
extern const JS_EXPORTDATA AtomicString starAtom;
extern const JS_EXPORTDATA AtomicString xmlAtom;
extern const JS_EXPORTDATA AtomicString xmlnsAtom;
+#endif
inline AtomicString AtomicString::fromUTF8(const char* characters, size_t length)
{
@@ -190,6 +219,7 @@ template<> struct DefaultHash<AtomicString> {
} // namespace WTF
+#if !COMPILER(WINSCW)
#ifndef ATOMICSTRING_HIDE_GLOBALS
using WTF::AtomicString;
using WTF::nullAtom;
@@ -200,5 +230,6 @@ using WTF::starAtom;
using WTF::xmlAtom;
using WTF::xmlnsAtom;
#endif
+#endif
#endif // AtomicString_h
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.cpp
index 17b4d7d..ea8770a 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.cpp
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.cpp
@@ -270,17 +270,15 @@ PassRefPtr<StringImpl> StringImpl::upper()
return newImpl.release();
}
-PassRefPtr<StringImpl> StringImpl::secure(UChar character, LastCharacterBehavior behavior)
+PassRefPtr<StringImpl> StringImpl::fill(UChar character)
{
if (!m_length)
return this;
UChar* data;
RefPtr<StringImpl> newImpl = createUninitialized(m_length, data);
- unsigned lastCharacterIndex = m_length - 1;
- for (unsigned i = 0; i < lastCharacterIndex; ++i)
+ for (unsigned i = 0; i < m_length; ++i)
data[i] = character;
- data[lastCharacterIndex] = (behavior == ObscureLastCharacter) ? character : m_data[lastCharacterIndex];
return newImpl.release();
}
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.h
index 81911b3..b0ec163 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.h
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.h
@@ -284,9 +284,7 @@ public:
PassRefPtr<StringImpl> lower();
PassRefPtr<StringImpl> upper();
- enum LastCharacterBehavior { ObscureLastCharacter, DisplayLastCharacter };
-
- PassRefPtr<StringImpl> secure(UChar, LastCharacterBehavior = ObscureLastCharacter);
+ PassRefPtr<StringImpl> fill(UChar);
PassRefPtr<StringImpl> foldCase();
PassRefPtr<StringImpl> stripWhiteSpace();
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringStatics.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringStatics.cpp
index ce08728..c5a8b43 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringStatics.cpp
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringStatics.cpp
@@ -51,6 +51,15 @@ StringImpl* StringImpl::empty()
return &emptyString;
}
+#if COMPILER(WINSCW)
+static AtomicString nullAtom1;
+static AtomicString emptyAtom1;
+static AtomicString textAtom1;
+static AtomicString commentAtom1;
+static AtomicString starAtom1;
+static AtomicString xmlAtom1;
+static AtomicString xmlnsAtom1;
+#else
JS_EXPORTDATA DEFINE_GLOBAL(AtomicString, nullAtom)
JS_EXPORTDATA DEFINE_GLOBAL(AtomicString, emptyAtom, "")
JS_EXPORTDATA DEFINE_GLOBAL(AtomicString, textAtom, "#text")
@@ -58,6 +67,7 @@ JS_EXPORTDATA DEFINE_GLOBAL(AtomicString, commentAtom, "#comment")
JS_EXPORTDATA DEFINE_GLOBAL(AtomicString, starAtom, "*")
JS_EXPORTDATA DEFINE_GLOBAL(AtomicString, xmlAtom, "xml")
JS_EXPORTDATA DEFINE_GLOBAL(AtomicString, xmlnsAtom, "xmlns")
+#endif
void AtomicString::init()
{
@@ -67,6 +77,15 @@ void AtomicString::init()
ASSERT(isMainThread());
// Use placement new to initialize the globals.
+#if COMPILER(WINSCW)
+ new ((void*)&nullAtom1) AtomicString;
+ new ((void*)&emptyAtom1) AtomicString("");
+ new ((void*)&textAtom1) AtomicString("#text");
+ new ((void*)&commentAtom1) AtomicString("#comment");
+ new ((void*)&starAtom1) AtomicString("*");
+ new ((void*)&xmlAtom1) AtomicString("xml");
+ new ((void*)&xmlnsAtom1) AtomicString("xmlns");
+#else
new ((void*)&nullAtom) AtomicString;
new ((void*)&emptyAtom) AtomicString("");
new ((void*)&textAtom) AtomicString("#text");
@@ -74,9 +93,19 @@ void AtomicString::init()
new ((void*)&starAtom) AtomicString("*");
new ((void*)&xmlAtom) AtomicString("xml");
new ((void*)&xmlnsAtom) AtomicString("xmlns");
-
+#endif
initialized = true;
}
}
+#if COMPILER(WINSCW)
+const AtomicString& AtomicString::nullAtom2() { return nullAtom1;}
+const AtomicString& AtomicString::emptyAtom2() { return emptyAtom1;}
+const AtomicString& AtomicString::textAtom2() { return textAtom1;}
+const AtomicString& AtomicString::commentAtom2() { return commentAtom1;}
+const AtomicString& AtomicString::starAtom2() { return starAtom1;}
+const AtomicString& AtomicString::xmlAtom2() { return xmlAtom1;}
+const AtomicString& AtomicString::xmlnsAtom2() { return xmlnsAtom1;}
+#endif
+
}
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/WTFString.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/WTFString.h
index b593d20..f29228b 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/WTFString.h
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/WTFString.h
@@ -219,7 +219,7 @@ public:
void makeLower() { if (m_impl) m_impl = m_impl->lower(); }
void makeUpper() { if (m_impl) m_impl = m_impl->upper(); }
- void makeSecure(UChar aChar) { if (m_impl) m_impl = m_impl->secure(aChar); }
+ void fill(UChar c) { if (m_impl) m_impl = m_impl->fill(c); }
void truncate(unsigned len);
void remove(unsigned pos, int len = 1);
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/wtf.pri b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/wtf.pri
index 10b41e4..5af613e 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/wtf.pri
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/wtf.pri
@@ -41,10 +41,12 @@ SOURCES += \
wtf/unicode/icu/CollatorICU.cpp \
wtf/unicode/UTF8.cpp
-contains(DEFINES, USE_GSTREAMER=1) {
- DEFINES += ENABLE_GLIB_SUPPORT=1
- PKGCONFIG += glib-2.0 gio-2.0
- CONFIG += link_pkgconfig
+linux-*:!contains(DEFINES, USE_QTMULTIMEDIA=1) {
+ !contains(QT_CONFIG, no-pkg-config):system(pkg-config --exists glib-2.0 gio-2.0 gstreamer-0.10) {
+ DEFINES += ENABLE_GLIB_SUPPORT=1
+ PKGCONFIG += glib-2.0 gio-2.0
+ CONFIG += link_pkgconfig
+ }
}
unix:!symbian: SOURCES += wtf/OSAllocatorPosix.cpp
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/yarr/YarrJIT.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/yarr/YarrJIT.cpp
index ece2379..f3356b1 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/yarr/YarrJIT.cpp
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/yarr/YarrJIT.cpp
@@ -228,9 +228,10 @@ class YarrGenerator : private MacroAssembler {
}
// Jumps if input not available; will have (incorrectly) incremented already!
- Jump jumpIfNoAvailableInput(unsigned countToCheck)
+ Jump jumpIfNoAvailableInput(unsigned countToCheck = 0)
{
- add32(Imm32(countToCheck), index);
+ if (countToCheck)
+ add32(Imm32(countToCheck), index);
return branch32(Above, index, length);
}
@@ -295,1056 +296,455 @@ class YarrGenerator : private MacroAssembler {
jump(Address(stackPointerRegister, frameLocation * sizeof(void*)));
}
- struct IndirectJumpEntry {
- IndirectJumpEntry(int32_t stackOffset)
- : m_stackOffset(stackOffset)
- {
- }
-
- IndirectJumpEntry(int32_t stackOffset, Jump jump)
- : m_stackOffset(stackOffset)
- {
- addJump(jump);
- }
-
- IndirectJumpEntry(int32_t stackOffset, DataLabelPtr dataLabel)
- : m_stackOffset(stackOffset)
- {
- addDataLabel(dataLabel);
- }
-
- void addJump(Jump jump)
- {
- m_relJumps.append(jump);
- }
-
- void addDataLabel(DataLabelPtr dataLabel)
- {
- m_dataLabelPtrVector.append(dataLabel);
- }
-
- int32_t m_stackOffset;
- JumpList m_relJumps;
- Vector<DataLabelPtr, 16> m_dataLabelPtrVector;
+ enum YarrOpCode {
+ // These nodes wrap body alternatives - those in the main disjunction,
+ // rather than subpatterns or assertions. These are chained together in
+ // a doubly linked list, with a 'begin' node for the first alternative,
+ // a 'next' node for each subsequent alternative, and an 'end' node at
+ // the end. In the case of repeating alternatives, the 'end' node also
+ // has a reference back to 'begin'.
+ OpBodyAlternativeBegin,
+ OpBodyAlternativeNext,
+ OpBodyAlternativeEnd,
+ // Similar to the body alternatives, but used for subpatterns with two
+ // or more alternatives.
+ OpNestedAlternativeBegin,
+ OpNestedAlternativeNext,
+ OpNestedAlternativeEnd,
+ // Used for alternatives in subpatterns where there is only a single
+ // alternative (backtrackingis easier in these cases), or for alternatives
+ // which never need to be backtracked (those in parenthetical assertions,
+ // terminal subpatterns).
+ OpSimpleNestedAlternativeBegin,
+ OpSimpleNestedAlternativeNext,
+ OpSimpleNestedAlternativeEnd,
+ // Used to wrap 'Once' subpattern matches (quantityCount == 1).
+ OpParenthesesSubpatternOnceBegin,
+ OpParenthesesSubpatternOnceEnd,
+ // Used to wrap 'Terminal' subpattern matches (at the end of the regexp).
+ OpParenthesesSubpatternTerminalBegin,
+ OpParenthesesSubpatternTerminalEnd,
+ // Used to wrap parenthetical assertions.
+ OpParentheticalAssertionBegin,
+ OpParentheticalAssertionEnd,
+ // Wraps all simple terms (pattern characters, character classes).
+ OpTerm,
+ // Where an expression contains only 'once through' body alternatives
+ // and no repeating ones, this op is used to return match failure.
+ OpMatchFailed
};
- struct AlternativeBacktrackRecord {
- DataLabelPtr dataLabel;
- Label backtrackLocation;
-
- AlternativeBacktrackRecord(DataLabelPtr dataLabel, Label backtrackLocation)
- : dataLabel(dataLabel)
- , backtrackLocation(backtrackLocation)
- {
- }
- };
-
- struct ParenthesesTail;
- struct TermGenerationState;
-
- struct GenerationState {
- typedef HashMap<int, IndirectJumpEntry*, WTF::IntHash<uint32_t>, UnsignedWithZeroKeyHashTraits<uint32_t> > IndirectJumpHashMap;
-
- GenerationState()
- : m_parenNestingLevel(0)
- {
- }
-
- void addIndirectJumpEntry(int32_t stackOffset, Jump jump)
- {
- IndirectJumpHashMap::iterator result = m_indirectJumpMap.find(stackOffset);
-
- ASSERT(stackOffset >= 0);
-
- uint32_t offset = static_cast<uint32_t>(stackOffset);
-
- if (result == m_indirectJumpMap.end())
- m_indirectJumpMap.add(offset, new IndirectJumpEntry(stackOffset, jump));
- else
- result->second->addJump(jump);
- }
-
- void addIndirectJumpEntry(int32_t stackOffset, JumpList jumps)
- {
- JumpList::JumpVector jumpVector = jumps.jumps();
- size_t size = jumpVector.size();
- for (size_t i = 0; i < size; ++i)
- addIndirectJumpEntry(stackOffset, jumpVector[i]);
-
- jumps.empty();
- }
-
- void addIndirectJumpEntry(int32_t stackOffset, DataLabelPtr dataLabel)
- {
- IndirectJumpHashMap::iterator result = m_indirectJumpMap.find(stackOffset);
-
- ASSERT(stackOffset >= 0);
-
- uint32_t offset = static_cast<uint32_t>(stackOffset);
-
- if (result == m_indirectJumpMap.end())
- m_indirectJumpMap.add(offset, new IndirectJumpEntry(stackOffset, dataLabel));
- else
- result->second->addDataLabel(dataLabel);
- }
-
- void emitIndirectJumpTable(MacroAssembler* masm)
+ // This structure is used to hold the compiled opcode information,
+ // including reference back to the original PatternTerm/PatternAlternatives,
+ // and JIT compilation data structures.
+ struct YarrOp {
+ explicit YarrOp(PatternTerm* term)
+ : m_op(OpTerm)
+ , m_term(term)
+ , m_isDeadCode(false)
{
- for (IndirectJumpHashMap::iterator iter = m_indirectJumpMap.begin(); iter != m_indirectJumpMap.end(); ++iter) {
- IndirectJumpEntry* indJumpEntry = iter->second;
- size_t size = indJumpEntry->m_dataLabelPtrVector.size();
- if (size) {
- // Link any associated DataLabelPtr's with indirect jump via label
- Label hereLabel = masm->label();
- for (size_t i = 0; i < size; ++i)
- m_backtrackRecords.append(AlternativeBacktrackRecord(indJumpEntry->m_dataLabelPtrVector[i], hereLabel));
- }
- indJumpEntry->m_relJumps.link(masm);
- masm->jump(Address(stackPointerRegister, indJumpEntry->m_stackOffset));
- delete indJumpEntry;
- }
- }
-
- void incrementParenNestingLevel()
- {
- ++m_parenNestingLevel;
- }
-
- void decrementParenNestingLevel()
- {
- --m_parenNestingLevel;
- }
-
- ParenthesesTail* addParenthesesTail(PatternTerm& term, JumpList* jumpListToPriorParen)
- {
- OwnPtr<ParenthesesTail> tail = adoptPtr(new ParenthesesTail(term, m_parenNestingLevel, jumpListToPriorParen));
- ParenthesesTail* rawTail = tail.get();
-
- m_parenTails.append(tail.release());
- m_parenTailsForIteration.append(rawTail);
-
- return rawTail;
}
- void emitParenthesesTail(YarrGenerator* generator)
+ explicit YarrOp(YarrOpCode op)
+ : m_op(op)
+ , m_isDeadCode(false)
{
- unsigned vectorSize = m_parenTails.size();
- bool priorBacktrackFallThrough = false;
-
- // Emit in reverse order so parentTail N can fall through to N-1
- for (unsigned index = vectorSize; index > 0; --index) {
- JumpList jumpsToNext;
- priorBacktrackFallThrough = m_parenTails[index-1].get()->generateCode(generator, jumpsToNext, priorBacktrackFallThrough, index > 1);
- if (index > 1)
- jumpsToNext.linkTo(generator->label(), generator);
- else
- addJumpsToNextInteration(jumpsToNext);
- }
- m_parenTails.clear();
}
- void addJumpToNextInteration(Jump jump)
- {
- m_jumpsToNextInteration.append(jump);
- }
+ // The operation, as a YarrOpCode, and also a reference to the PatternTerm.
+ YarrOpCode m_op;
+ PatternTerm* m_term;
- void addJumpsToNextInteration(JumpList jumps)
- {
- m_jumpsToNextInteration.append(jumps);
- }
+ // For alternatives, this holds the PatternAlternative and doubly linked
+ // references to this alternative's siblings. In the case of the
+ // OpBodyAlternativeEnd node at the end of a section of repeating nodes,
+ // m_nextOp will reference the OpBodyAlternativeBegin node of the first
+ // repeating alternative.
+ PatternAlternative* m_alternative;
+ size_t m_previousOp;
+ size_t m_nextOp;
- void addDataLabelToNextIteration(DataLabelPtr dataLabel)
- {
- m_dataPtrsToNextIteration.append(dataLabel);
- }
+ // Used to record a set of Jumps out of the generated code, typically
+ // used for jumps out to backtracking code, and a single reentry back
+ // into the code for a node (likely where a backtrack will trigger
+ // rematching).
+ Label m_reentry;
+ JumpList m_jumps;
- void linkToNextIteration(Label label)
- {
- m_nextIteration = label;
+ // This flag is used to null out the second pattern character, when
+ // two are fused to match a pair together.
+ bool m_isDeadCode;
- for (unsigned i = 0; i < m_dataPtrsToNextIteration.size(); ++i)
- m_backtrackRecords.append(AlternativeBacktrackRecord(m_dataPtrsToNextIteration[i], m_nextIteration));
+ // Currently used in the case of some of the more complex management of
+ // 'm_checked', to cache the offset used in this alternative, to avoid
+ // recalculating it.
+ int m_checkAdjust;
- m_dataPtrsToNextIteration.clear();
-
- for (unsigned i = 0; i < m_parenTailsForIteration.size(); ++i)
- m_parenTailsForIteration[i]->setNextIteration(m_nextIteration);
-
- m_parenTailsForIteration.clear();
- }
-
- void linkToNextIteration(YarrGenerator* generator)
- {
- m_jumpsToNextInteration.linkTo(m_nextIteration, generator);
- }
-
- int m_parenNestingLevel;
- Vector<AlternativeBacktrackRecord> m_backtrackRecords;
- IndirectJumpHashMap m_indirectJumpMap;
- Label m_nextIteration;
- Vector<OwnPtr<ParenthesesTail> > m_parenTails;
- JumpList m_jumpsToNextInteration;
- Vector<DataLabelPtr> m_dataPtrsToNextIteration;
- Vector<ParenthesesTail*> m_parenTailsForIteration;
+ // Used by OpNestedAlternativeNext/End to hold the pointer to the
+ // value that will be pushed into the pattern's frame to return to,
+ // upon backtracking back into the disjunction.
+ DataLabelPtr m_returnAddress;
};
- struct BacktrackDestination {
- typedef enum {
- NoBacktrack,
- BacktrackLabel,
- BacktrackStackOffset,
- BacktrackJumpList,
- BacktrackLinked
- } BacktrackType;
-
- BacktrackDestination()
- : m_backtrackType(NoBacktrack)
- , m_backtrackToLabel(0)
- , m_subDataLabelPtr(0)
- , m_nextBacktrack(0)
- , m_backtrackSourceLabel(0)
- , m_backtrackSourceJumps(0)
+ // BacktrackingState
+ // This class encapsulates information about the state of code generation
+ // whilst generating the code for backtracking, when a term fails to match.
+ // Upon entry to code generation of the backtracking code for a given node,
+ // the Backtracking state will hold references to all control flow sources
+ // that are outputs in need of further backtracking from the prior node
+ // generated (which is the subsequent operation in the regular expression,
+ // and in the m_ops Vector, since we generated backtracking backwards).
+ // These references to control flow take the form of:
+ // - A jump list of jumps, to be linked to code that will backtrack them
+ // further.
+ // - A set of DataLabelPtr values, to be populated with values to be
+ // treated effectively as return addresses backtracking into complex
+ // subpatterns.
+ // - A flag indicating that the current sequence of generated code up to
+ // this point requires backtracking.
+ class BacktrackingState {
+ public:
+ BacktrackingState()
+ : m_pendingFallthrough(false)
{
}
- BacktrackDestination(int32_t stackOffset)
- : m_backtrackType(BacktrackStackOffset)
- , m_backtrackStackOffset(stackOffset)
- , m_backtrackToLabel(0)
- , m_subDataLabelPtr(0)
- , m_nextBacktrack(0)
- , m_backtrackSourceLabel(0)
- , m_backtrackSourceJumps(0)
+ // Add a jump or jumps, a return address, or set the flag indicating
+ // that the current 'fallthrough' control flow requires backtracking.
+ void append(const Jump& jump)
{
+ m_laterFailures.append(jump);
}
-
- BacktrackDestination(Label label)
- : m_backtrackType(BacktrackLabel)
- , m_backtrackLabel(label)
- , m_backtrackToLabel(0)
- , m_subDataLabelPtr(0)
- , m_nextBacktrack(0)
- , m_backtrackSourceLabel(0)
- , m_backtrackSourceJumps(0)
+ void append(JumpList& jumpList)
{
+ m_laterFailures.append(jumpList);
}
-
- void clear(bool doDataLabelClear = true)
+ void append(const DataLabelPtr& returnAddress)
{
- m_backtrackType = NoBacktrack;
- if (doDataLabelClear)
- clearDataLabel();
- m_nextBacktrack = 0;
+ m_pendingReturns.append(returnAddress);
}
-
- void clearDataLabel()
+ void fallthrough()
{
- m_dataLabelPtr = DataLabelPtr();
+ ASSERT(!m_pendingFallthrough);
+ m_pendingFallthrough = true;
}
- bool hasDestination()
+ // These methods clear the backtracking state, either linking to the
+ // current location, a provided label, or copying the backtracking out
+ // to a JumpList. All actions may require code generation to take place,
+ // and as such are passed a pointer to the assembler.
+ void link(MacroAssembler* assembler)
{
- return (m_backtrackType != NoBacktrack);
- }
-
- bool isStackOffset()
- {
- return (m_backtrackType == BacktrackStackOffset);
- }
-
- bool isLabel()
- {
- return (m_backtrackType == BacktrackLabel);
- }
-
- bool isJumpList()
- {
- return (m_backtrackType == BacktrackJumpList);
- }
-
- bool hasDataLabel()
- {
- return m_dataLabelPtr.isSet();
- }
-
- void copyTarget(BacktrackDestination& rhs, bool copyDataLabel = true)
- {
- m_backtrackType = rhs.m_backtrackType;
- if (m_backtrackType == BacktrackStackOffset)
- m_backtrackStackOffset = rhs.m_backtrackStackOffset;
- else if (m_backtrackType == BacktrackLabel)
- m_backtrackLabel = rhs.m_backtrackLabel;
- if (copyDataLabel)
- m_dataLabelPtr = rhs.m_dataLabelPtr;
- m_backtrackSourceJumps = rhs.m_backtrackSourceJumps;
- m_backtrackSourceLabel = rhs.m_backtrackSourceLabel;
- }
-
- void copyTo(BacktrackDestination& lhs)
- {
- lhs.m_backtrackType = m_backtrackType;
- if (m_backtrackType == BacktrackStackOffset)
- lhs.m_backtrackStackOffset = m_backtrackStackOffset;
- else if (m_backtrackType == BacktrackLabel)
- lhs.m_backtrackLabel = m_backtrackLabel;
- lhs.m_backtrackSourceJumps = m_backtrackSourceJumps;
- lhs.m_backtrackSourceLabel = m_backtrackSourceLabel;
- lhs.m_dataLabelPtr = m_dataLabelPtr;
- lhs.m_backTrackJumps = m_backTrackJumps;
- }
-
- void addBacktrackJump(Jump jump)
- {
- m_backTrackJumps.append(jump);
- }
-
- void setStackOffset(int32_t stackOffset)
- {
- m_backtrackType = BacktrackStackOffset;
- m_backtrackStackOffset = stackOffset;
- }
-
- void setLabel(Label label)
- {
- m_backtrackType = BacktrackLabel;
- m_backtrackLabel = label;
- }
-
- void setNextBacktrackLabel(Label label)
- {
- if (m_nextBacktrack)
- m_nextBacktrack->setLabel(label);
- }
-
- void propagateBacktrackToLabel(const BacktrackDestination& rhs)
- {
- if (!m_backtrackToLabel && rhs.m_backtrackToLabel)
- m_backtrackToLabel = rhs.m_backtrackToLabel;
- }
-
- void setBacktrackToLabel(Label* backtrackToLabel)
- {
- if (!m_backtrackToLabel)
- m_backtrackToLabel = backtrackToLabel;
- }
-
- bool hasBacktrackToLabel()
- {
- return m_backtrackToLabel;
- }
-
- void setBacktrackJumpList(JumpList* jumpList)
- {
- m_backtrackType = BacktrackJumpList;
- m_backtrackSourceJumps = jumpList;
- }
-
- void setBacktrackSourceLabel(Label* backtrackSourceLabel)
- {
- m_backtrackSourceLabel = backtrackSourceLabel;
- }
-
- void setDataLabel(DataLabelPtr dp)
- {
- if (m_subDataLabelPtr) {
- *m_subDataLabelPtr = dp;
- m_subDataLabelPtr = 0;
- } else {
- ASSERT(!hasDataLabel());
- m_dataLabelPtr = dp;
+ if (m_pendingReturns.size()) {
+ Label here(assembler);
+ for (unsigned i = 0; i < m_pendingReturns.size(); ++i)
+ m_backtrackRecords.append(ReturnAddressRecord(m_pendingReturns[i], here));
+ m_pendingReturns.clear();
}
+ m_laterFailures.link(assembler);
+ m_laterFailures.clear();
+ m_pendingFallthrough = false;
}
-
- void clearSubDataLabelPtr()
- {
- m_subDataLabelPtr = 0;
- }
-
- void setSubDataLabelPtr(DataLabelPtr* subDataLabelPtr)
+ void linkTo(Label label, MacroAssembler* assembler)
{
- m_subDataLabelPtr = subDataLabelPtr;
- }
-
- void linkToNextBacktrack(BacktrackDestination* nextBacktrack)
- {
- m_nextBacktrack = nextBacktrack;
- }
-
- int32_t getStackOffset()
- {
- ASSERT(m_backtrackType == BacktrackStackOffset);
- return m_backtrackStackOffset;
- }
-
- Label getLabel()
- {
- ASSERT(m_backtrackType == BacktrackLabel);
- return m_backtrackLabel;
- }
-
- JumpList& getBacktrackJumps()
- {
- return m_backTrackJumps;
- }
-
- DataLabelPtr& getDataLabel()
- {
- return m_dataLabelPtr;
- }
-
- void jumpToBacktrack(MacroAssembler* masm)
- {
- if (isJumpList()) {
- if (m_backtrackSourceLabel && (m_backtrackSourceLabel->isSet()))
- masm->jump().linkTo(*m_backtrackSourceLabel, masm);
- else
- m_backtrackSourceJumps->append(masm->jump());
- } else if (isStackOffset())
- masm->jump(Address(stackPointerRegister, m_backtrackStackOffset));
- else if (isLabel())
- masm->jump().linkTo(m_backtrackLabel, masm);
- else
- m_backTrackJumps.append(masm->jump());
- }
-
- void jumpToBacktrack(YarrGenerator* generator, Jump jump)
- {
- if (isJumpList()) {
- if (m_backtrackSourceLabel && (m_backtrackSourceLabel->isSet()))
- jump.linkTo(*m_backtrackSourceLabel, generator);
- else
- m_backtrackSourceJumps->append(jump);
- } else if (isStackOffset())
- generator->m_expressionState.addIndirectJumpEntry(getStackOffset(), jump);
- else if (isLabel())
- jump.linkTo(getLabel(), generator);
- else
- m_backTrackJumps.append(jump);
- }
-
- void jumpToBacktrack(YarrGenerator* generator, JumpList& jumps)
- {
- if (isJumpList()) {
- if (m_backtrackSourceLabel && (m_backtrackSourceLabel->isSet()))
- jumps.linkTo(*m_backtrackSourceLabel, generator);
- else
- m_backtrackSourceJumps->append(jumps);
- } else if (isStackOffset())
- generator->m_expressionState.addIndirectJumpEntry(getStackOffset(), jumps);
- else if (isLabel())
- jumps.linkTo(getLabel(), generator);
- else
- m_backTrackJumps.append(jumps);
- }
-
- bool plantJumpToBacktrackIfExists(YarrGenerator* generator)
- {
- if (isJumpList()) {
- if (m_backtrackSourceLabel && (m_backtrackSourceLabel->isSet()))
- generator->jump(*m_backtrackSourceLabel);
- else
- m_backtrackSourceJumps->append(generator->jump());
-
- return true;
- }
-
- if (isStackOffset()) {
- generator->jump(Address(stackPointerRegister, getStackOffset()));
- return true;
+ if (m_pendingReturns.size()) {
+ for (unsigned i = 0; i < m_pendingReturns.size(); ++i)
+ m_backtrackRecords.append(ReturnAddressRecord(m_pendingReturns[i], label));
+ m_pendingReturns.clear();
}
-
- if (isLabel()) {
- generator->jump(getLabel());
- if (hasDataLabel()) {
- generator->m_expressionState.m_backtrackRecords.append(AlternativeBacktrackRecord(getDataLabel(), getLabel()));
- clearDataLabel();
- }
- return true;
+ if (m_pendingFallthrough)
+ assembler->jump(label);
+ m_laterFailures.linkTo(label, assembler);
+ m_laterFailures.clear();
+ m_pendingFallthrough = false;
+ }
+ void takeBacktracksToJumpList(JumpList& jumpList, MacroAssembler* assembler)
+ {
+ if (m_pendingReturns.size()) {
+ Label here(assembler);
+ for (unsigned i = 0; i < m_pendingReturns.size(); ++i)
+ m_backtrackRecords.append(ReturnAddressRecord(m_pendingReturns[i], here));
+ m_pendingReturns.clear();
+ m_pendingFallthrough = true;
}
-
- return false;
+ if (m_pendingFallthrough)
+ jumpList.append(assembler->jump());
+ jumpList.append(m_laterFailures);
+ m_laterFailures.clear();
+ m_pendingFallthrough = false;
}
- void linkBacktrackToLabel(Label backtrackLabel)
+ bool isEmpty()
{
- if (m_backtrackToLabel)
- *m_backtrackToLabel = backtrackLabel;
+ return m_laterFailures.empty() && m_pendingReturns.isEmpty() && !m_pendingFallthrough;
}
- void linkAlternativeBacktracks(YarrGenerator* generator, bool nextIteration = false)
+ // Called at the end of code generation to link all return addresses.
+ void linkDataLabels(LinkBuffer& linkBuffer)
{
- Label hereLabel = generator->label();
-
- if (m_backtrackToLabel) {
- *m_backtrackToLabel = hereLabel;
- m_backtrackToLabel = 0;
- }
-
- m_backTrackJumps.link(generator);
-
- if (nextIteration)
- generator->m_expressionState.linkToNextIteration(hereLabel);
-
- if (hasDataLabel()) {
- generator->m_expressionState.m_backtrackRecords.append(AlternativeBacktrackRecord(getDataLabel(), hereLabel));
- // data label cleared as a result of the clear() below
- }
-
- clear();
- }
-
- void linkAlternativeBacktracksTo(YarrGenerator* generator, Label label, bool nextIteration = false)
- {
- m_backTrackJumps.linkTo(label, generator);
-
- if (nextIteration)
- generator->m_expressionState.linkToNextIteration(label);
-
- if (hasDataLabel()) {
- generator->m_expressionState.m_backtrackRecords.append(AlternativeBacktrackRecord(getDataLabel(), label));
- clearDataLabel();
- }
+ ASSERT(isEmpty());
+ for (unsigned i = 0; i < m_backtrackRecords.size(); ++i)
+ linkBuffer.patch(m_backtrackRecords[i].m_dataLabel, linkBuffer.locationOf(m_backtrackRecords[i].m_backtrackLocation));
}
private:
- BacktrackType m_backtrackType;
- int32_t m_backtrackStackOffset;
- Label m_backtrackLabel;
- DataLabelPtr m_dataLabelPtr;
- Label* m_backtrackToLabel;
- DataLabelPtr* m_subDataLabelPtr;
- BacktrackDestination* m_nextBacktrack;
- Label* m_backtrackSourceLabel;
- JumpList* m_backtrackSourceJumps;
- JumpList m_backTrackJumps;
- };
-
- struct TermGenerationState {
- TermGenerationState(PatternDisjunction* disjunction, unsigned checkedTotal)
- : disjunction(disjunction)
- , checkedTotal(checkedTotal)
- , m_subParenNum(0)
- , m_linkedBacktrack(0)
- , m_jumpList(0)
- {
- }
-
- void resetAlternative()
- {
- m_backtrack.clear();
- alt = 0;
- }
- bool alternativeValid()
- {
- return alt < disjunction->m_alternatives.size();
- }
- void nextAlternative()
- {
- ++alt;
- }
- PatternAlternative* alternative()
- {
- return disjunction->m_alternatives[alt];
- }
- bool isLastAlternative()
- {
- return (alt + 1) == disjunction->m_alternatives.size();
- }
-
- void resetTerm()
- {
- ASSERT(alternativeValid());
- t = 0;
- m_subParenNum = 0;
- }
- bool termValid()
- {
- ASSERT(alternativeValid());
- return t < alternative()->m_terms.size();
- }
- void nextTerm()
- {
- ASSERT(alternativeValid());
- ++t;
- }
- PatternTerm& term()
- {
- ASSERT(alternativeValid());
- return alternative()->m_terms[t];
- }
- bool isLastTerm()
- {
- ASSERT(alternativeValid());
- return (t + 1) == alternative()->m_terms.size();
- }
- unsigned getSubParenNum()
- {
- return m_subParenNum++;
- }
- bool isMainDisjunction()
- {
- return !disjunction->m_parent;
- }
-
- void setJumpListToPriorParen(JumpList* jumpList)
- {
- m_jumpList = jumpList;
- }
-
- JumpList* getJumpListToPriorParen()
- {
- return m_jumpList;
- }
-
- PatternTerm& lookaheadTerm()
- {
- ASSERT(alternativeValid());
- ASSERT((t + 1) < alternative()->m_terms.size());
- return alternative()->m_terms[t + 1];
- }
- bool isSinglePatternCharacterLookaheadTerm()
- {
- ASSERT(alternativeValid());
- return ((t + 1) < alternative()->m_terms.size())
- && (lookaheadTerm().type == PatternTerm::TypePatternCharacter)
- && (lookaheadTerm().quantityType == QuantifierFixedCount)
- && (lookaheadTerm().quantityCount == 1);
- }
-
- int inputOffset()
- {
- return term().inputPosition - checkedTotal;
- }
-
- void clearBacktrack()
- {
- m_backtrack.clear(false);
- m_linkedBacktrack = 0;
- }
-
- void jumpToBacktrack(MacroAssembler* masm)
- {
- m_backtrack.jumpToBacktrack(masm);
- }
-
- void jumpToBacktrack(YarrGenerator* generator, Jump jump)
- {
- m_backtrack.jumpToBacktrack(generator, jump);
- }
-
- void jumpToBacktrack(YarrGenerator* generator, JumpList& jumps)
- {
- m_backtrack.jumpToBacktrack(generator, jumps);
- }
-
- bool plantJumpToBacktrackIfExists(YarrGenerator* generator)
- {
- return m_backtrack.plantJumpToBacktrackIfExists(generator);
- }
-
- void linkDataLabelToBacktrackIfExists(YarrGenerator* generator, DataLabelPtr dataLabel)
- {
- // If we have a stack offset backtrack destination, use it directly
- if (m_backtrack.isStackOffset()) {
- generator->m_expressionState.addIndirectJumpEntry(m_backtrack.getStackOffset(), dataLabel);
- m_backtrack.clearSubDataLabelPtr();
- } else {
- // If we have a backtrack label, connect the datalabel to it directly.
- if (m_backtrack.isLabel()) {
- generator->m_expressionState.m_backtrackRecords.append(AlternativeBacktrackRecord(dataLabel, m_backtrack.getLabel()));
- m_backtrack.clearSubDataLabelPtr();
- } else
- setBacktrackDataLabel(dataLabel);
+ struct ReturnAddressRecord {
+ ReturnAddressRecord(DataLabelPtr dataLabel, Label backtrackLocation)
+ : m_dataLabel(dataLabel)
+ , m_backtrackLocation(backtrackLocation)
+ {
}
- }
-
- void addBacktrackJump(Jump jump)
- {
- m_backtrack.addBacktrackJump(jump);
- }
-
- void setBacktrackDataLabel(DataLabelPtr dp)
- {
- m_backtrack.setDataLabel(dp);
- }
-
- void setBackTrackStackOffset(int32_t stackOffset)
- {
- m_backtrack.setStackOffset(stackOffset);
- }
-
- void setBacktrackLabel(Label label)
- {
- m_backtrack.setLabel(label);
- }
-
- void linkAlternativeBacktracks(YarrGenerator* generator, bool nextIteration = false)
- {
- m_backtrack.linkAlternativeBacktracks(generator, nextIteration);
- m_linkedBacktrack = 0;
- }
-
- void linkAlternativeBacktracksTo(YarrGenerator* generator, Label label, bool nextIteration = false)
- {
- m_backtrack.linkAlternativeBacktracksTo(generator, label, nextIteration);
- }
-
- void setBacktrackLink(BacktrackDestination* linkedBacktrack)
- {
- m_linkedBacktrack = linkedBacktrack;
- }
-
- void chainBacktracks(BacktrackDestination* followonBacktrack)
- {
- if (m_linkedBacktrack)
- m_linkedBacktrack->linkToNextBacktrack(followonBacktrack);
- }
- BacktrackDestination& getBacktrackDestination()
- {
- return m_backtrack;
- }
-
- void propagateBacktrackingFrom(YarrGenerator* generator, BacktrackDestination& backtrack, bool doJump = true)
- {
- if (doJump)
- m_backtrack.jumpToBacktrack(generator, backtrack.getBacktrackJumps());
-
- if (m_backtrack.isLabel() && backtrack.hasBacktrackToLabel())
- backtrack.linkBacktrackToLabel(m_backtrack.getLabel());
-
- if (backtrack.hasDestination()) {
- if (m_backtrack.hasDataLabel())
- generator->m_expressionState.addDataLabelToNextIteration(m_backtrack.getDataLabel());
+ DataLabelPtr m_dataLabel;
+ Label m_backtrackLocation;
+ };
- m_backtrack.copyTarget(backtrack, doJump);
- }
- }
-
- PatternDisjunction* disjunction;
- int checkedTotal;
- private:
- unsigned alt;
- unsigned t;
- unsigned m_subParenNum;
- BacktrackDestination m_backtrack;
- BacktrackDestination* m_linkedBacktrack;
- JumpList* m_jumpList;
+ JumpList m_laterFailures;
+ bool m_pendingFallthrough;
+ Vector<DataLabelPtr, 4> m_pendingReturns;
+ Vector<ReturnAddressRecord, 4> m_backtrackRecords;
};
- struct ParenthesesTail {
- ParenthesesTail(PatternTerm& term, int nestingLevel, JumpList* jumpListToPriorParen)
- : m_term(term)
- , m_nestingLevel(nestingLevel)
- , m_subParenIndex(0)
- , m_jumpListToPriorParen(jumpListToPriorParen)
- {
- }
-
- void processBacktracks(YarrGenerator* generator, TermGenerationState& state, TermGenerationState& parenthesesState, Label nonGreedyTryParentheses, Label fallThrough)
- {
- m_nonGreedyTryParentheses = nonGreedyTryParentheses;
- m_fallThrough = fallThrough;
-
- m_subParenIndex = state.getSubParenNum();
- parenthesesState.getBacktrackDestination().copyTo(m_parenBacktrack);
- state.chainBacktracks(&m_backtrack);
- BacktrackDestination& stateBacktrack = state.getBacktrackDestination();
- stateBacktrack.copyTo(m_backtrack);
- stateBacktrack.setBacktrackToLabel(&m_backtrackToLabel);
- state.setBacktrackLink(&m_backtrack);
- stateBacktrack.setSubDataLabelPtr(&m_dataAfterLabelPtr);
-
- m_doDirectBacktrack = m_parenBacktrack.hasDestination();
-
- if ((m_term.quantityType == QuantifierGreedy) || (m_term.quantityType == QuantifierNonGreedy))
- m_doDirectBacktrack = false;
-
- if (m_doDirectBacktrack)
- state.propagateBacktrackingFrom(generator, m_parenBacktrack, false);
- else {
- stateBacktrack.setBacktrackJumpList(&m_afterBacktrackJumps);
- stateBacktrack.setBacktrackSourceLabel(&m_backtrackFromAfterParens);
- }
- }
-
- void setNextIteration(Label nextIteration)
- {
- if (!m_nestingLevel && !m_backtrackToLabel.isSet())
- m_backtrackToLabel = nextIteration;
- }
-
- void addAfterParenJump(Jump jump)
- {
- m_afterBacktrackJumps.append(jump);
- }
+ // Generation methods:
+ // ===================
- bool generateCode(YarrGenerator* generator, JumpList& jumpsToNext, bool priorBackTrackFallThrough, bool nextBacktrackFallThrough)
- {
- const RegisterID indexTemporary = regT0;
- unsigned parenthesesFrameLocation = m_term.frameLocation;
- Jump fromPriorBacktrack;
- bool needJumpForPriorParenTail = false;
-
- if (priorBackTrackFallThrough
- && ((m_term.quantityType == QuantifierGreedy)
- || (m_term.quantityType == QuantifierNonGreedy)
- || (!m_doDirectBacktrack && m_parenBacktrack.hasDestination()))) {
- // If the prior paren tail code assumed that it could fall through,
- // but we need to generate after paren backtrack code, then provide
- // a jump around that code for the prior paren tail code.
- // A regular expressing like ((xxx)...)? needs this.
- fromPriorBacktrack = generator->jump();
- needJumpForPriorParenTail = true;
- }
-
- if (!m_backtrack.hasDestination()) {
- if (m_backtrackToLabel.isSet()) {
- m_backtrack.setLabel(m_backtrackToLabel);
- nextBacktrackFallThrough = false;
- } else if (m_jumpListToPriorParen) {
- // If we don't have a destination, go back to either the prior paren or the next outer paren.
- m_backtrack.setBacktrackJumpList(m_jumpListToPriorParen);
- nextBacktrackFallThrough = false;
- } else
- m_backtrack.setBacktrackJumpList(&jumpsToNext);
- } else
- nextBacktrackFallThrough = false;
-
- // A failure AFTER the parens jumps here - Backtrack to this paren
- m_backtrackFromAfterParens = generator->label();
-
- if (m_dataAfterLabelPtr.isSet())
- generator->m_expressionState.m_backtrackRecords.append(AlternativeBacktrackRecord(m_dataAfterLabelPtr, m_backtrackFromAfterParens));
-
- m_afterBacktrackJumps.link(generator);
-
- if (m_term.quantityType == QuantifierGreedy) {
- // If this is -1 we have now tested with both with and without the parens.
- generator->loadFromFrame(parenthesesFrameLocation, indexTemporary);
- m_backtrack.jumpToBacktrack(generator, generator->branch32(Equal, indexTemporary, TrustedImm32(-1)));
- } else if (m_term.quantityType == QuantifierNonGreedy) {
- // If this is -1 we have now tested with both with and without the parens.
- generator->loadFromFrame(parenthesesFrameLocation, indexTemporary);
- generator->branch32(Equal, indexTemporary, TrustedImm32(-1)).linkTo(m_nonGreedyTryParentheses, generator);
- }
-
- if (!m_doDirectBacktrack)
- m_parenBacktrack.plantJumpToBacktrackIfExists(generator);
-
- // A failure WITHIN the parens jumps here
- if (needJumpForPriorParenTail)
- fromPriorBacktrack.link(generator);
- m_parenBacktrack.linkAlternativeBacktracks(generator);
- m_withinBacktrackJumps.link(generator);
-
- if (m_term.capture())
- generator->store32(TrustedImm32(-1), Address(output, (m_term.parentheses.subpatternId << 1) * sizeof(int)));
-
- if (m_term.quantityType == QuantifierGreedy) {
- generator->storeToFrame(TrustedImm32(-1), parenthesesFrameLocation);
- generator->jump().linkTo(m_fallThrough, generator);
- nextBacktrackFallThrough = false;
- } else if (!nextBacktrackFallThrough)
- m_backtrack.jumpToBacktrack(generator);
-
- if (!m_doDirectBacktrack)
- m_backtrack.setNextBacktrackLabel(m_backtrackFromAfterParens);
-
- return nextBacktrackFallThrough;
- }
-
- PatternTerm& m_term;
- int m_nestingLevel;
- unsigned m_subParenIndex;
- JumpList* m_jumpListToPriorParen;
- Label m_nonGreedyTryParentheses;
- Label m_fallThrough;
- Label m_backtrackToLabel;
- Label m_backtrackFromAfterParens;
- DataLabelPtr m_dataAfterLabelPtr;
- JumpList m_withinBacktrackJumps;
- JumpList m_afterBacktrackJumps;
- BacktrackDestination m_parenBacktrack;
- BacktrackDestination m_backtrack;
- bool m_doDirectBacktrack;
- };
+ // This method provides a default implementation of backtracking common
+ // to many terms; terms commonly jump out of the forwards matching path
+ // on any failed conditions, and add these jumps to the m_jumps list. If
+ // no special handling is required we can often just backtrack to m_jumps.
+ void backtrackTermDefault(size_t opIndex)
+ {
+ YarrOp& op = m_ops[opIndex];
+ m_backtrackingState.append(op.m_jumps);
+ }
- void generateAssertionBOL(TermGenerationState& state)
+ void generateAssertionBOL(size_t opIndex)
{
- PatternTerm& term = state.term();
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
if (m_pattern.m_multiline) {
const RegisterID character = regT0;
JumpList matchDest;
- if (!term.inputPosition)
- matchDest.append(branch32(Equal, index, Imm32(state.checkedTotal)));
+ if (!term->inputPosition)
+ matchDest.append(branch32(Equal, index, Imm32(m_checked)));
- readCharacter(state.inputOffset() - 1, character);
+ readCharacter((term->inputPosition - m_checked) - 1, character);
matchCharacterClass(character, matchDest, m_pattern.newlineCharacterClass());
- state.jumpToBacktrack(this);
+ op.m_jumps.append(jump());
matchDest.link(this);
} else {
// Erk, really should poison out these alternatives early. :-/
- if (term.inputPosition)
- state.jumpToBacktrack(this);
+ if (term->inputPosition)
+ op.m_jumps.append(jump());
else
- state.jumpToBacktrack(this, branch32(NotEqual, index, Imm32(state.checkedTotal)));
+ op.m_jumps.append(branch32(NotEqual, index, Imm32(m_checked)));
}
}
+ void backtrackAssertionBOL(size_t opIndex)
+ {
+ backtrackTermDefault(opIndex);
+ }
- void generateAssertionEOL(TermGenerationState& state)
+ void generateAssertionEOL(size_t opIndex)
{
- PatternTerm& term = state.term();
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
if (m_pattern.m_multiline) {
const RegisterID character = regT0;
JumpList matchDest;
- if (term.inputPosition == state.checkedTotal)
+ if (term->inputPosition == m_checked)
matchDest.append(atEndOfInput());
- readCharacter(state.inputOffset(), character);
+ readCharacter((term->inputPosition - m_checked), character);
matchCharacterClass(character, matchDest, m_pattern.newlineCharacterClass());
- state.jumpToBacktrack(this);
+ op.m_jumps.append(jump());
matchDest.link(this);
} else {
- if (term.inputPosition == state.checkedTotal)
- state.jumpToBacktrack(this, notAtEndOfInput());
+ if (term->inputPosition == m_checked)
+ op.m_jumps.append(notAtEndOfInput());
// Erk, really should poison out these alternatives early. :-/
else
- state.jumpToBacktrack(this);
+ op.m_jumps.append(jump());
}
}
+ void backtrackAssertionEOL(size_t opIndex)
+ {
+ backtrackTermDefault(opIndex);
+ }
// Also falls though on nextIsNotWordChar.
- void matchAssertionWordchar(TermGenerationState& state, JumpList& nextIsWordChar, JumpList& nextIsNotWordChar)
+ void matchAssertionWordchar(size_t opIndex, JumpList& nextIsWordChar, JumpList& nextIsNotWordChar)
{
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
+
const RegisterID character = regT0;
- PatternTerm& term = state.term();
- if (term.inputPosition == state.checkedTotal)
+ if (term->inputPosition == m_checked)
nextIsNotWordChar.append(atEndOfInput());
- readCharacter(state.inputOffset(), character);
+ readCharacter((term->inputPosition - m_checked), character);
matchCharacterClass(character, nextIsWordChar, m_pattern.wordcharCharacterClass());
}
- void generateAssertionWordBoundary(TermGenerationState& state)
+ void generateAssertionWordBoundary(size_t opIndex)
{
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
+
const RegisterID character = regT0;
- PatternTerm& term = state.term();
Jump atBegin;
JumpList matchDest;
- if (!term.inputPosition)
- atBegin = branch32(Equal, index, Imm32(state.checkedTotal));
- readCharacter(state.inputOffset() - 1, character);
+ if (!term->inputPosition)
+ atBegin = branch32(Equal, index, Imm32(m_checked));
+ readCharacter((term->inputPosition - m_checked) - 1, character);
matchCharacterClass(character, matchDest, m_pattern.wordcharCharacterClass());
- if (!term.inputPosition)
+ if (!term->inputPosition)
atBegin.link(this);
// We fall through to here if the last character was not a wordchar.
JumpList nonWordCharThenWordChar;
JumpList nonWordCharThenNonWordChar;
- if (term.invert()) {
- matchAssertionWordchar(state, nonWordCharThenNonWordChar, nonWordCharThenWordChar);
+ if (term->invert()) {
+ matchAssertionWordchar(opIndex, nonWordCharThenNonWordChar, nonWordCharThenWordChar);
nonWordCharThenWordChar.append(jump());
} else {
- matchAssertionWordchar(state, nonWordCharThenWordChar, nonWordCharThenNonWordChar);
+ matchAssertionWordchar(opIndex, nonWordCharThenWordChar, nonWordCharThenNonWordChar);
nonWordCharThenNonWordChar.append(jump());
}
- state.jumpToBacktrack(this, nonWordCharThenNonWordChar);
+ op.m_jumps.append(nonWordCharThenNonWordChar);
// We jump here if the last character was a wordchar.
matchDest.link(this);
JumpList wordCharThenWordChar;
JumpList wordCharThenNonWordChar;
- if (term.invert()) {
- matchAssertionWordchar(state, wordCharThenNonWordChar, wordCharThenWordChar);
+ if (term->invert()) {
+ matchAssertionWordchar(opIndex, wordCharThenNonWordChar, wordCharThenWordChar);
wordCharThenWordChar.append(jump());
} else {
- matchAssertionWordchar(state, wordCharThenWordChar, wordCharThenNonWordChar);
+ matchAssertionWordchar(opIndex, wordCharThenWordChar, wordCharThenNonWordChar);
// This can fall-though!
}
- state.jumpToBacktrack(this, wordCharThenWordChar);
+ op.m_jumps.append(wordCharThenWordChar);
nonWordCharThenWordChar.link(this);
wordCharThenNonWordChar.link(this);
}
+ void backtrackAssertionWordBoundary(size_t opIndex)
+ {
+ backtrackTermDefault(opIndex);
+ }
- void generatePatternCharacterSingle(TermGenerationState& state)
+ void generatePatternCharacterOnce(size_t opIndex)
{
+ YarrOp& op = m_ops[opIndex];
+
+ // m_ops always ends with a OpBodyAlternativeEnd or OpMatchFailed
+ // node, so there must always be at least one more node.
+ ASSERT(opIndex + 1 < m_ops.size());
+ YarrOp& nextOp = m_ops[opIndex + 1];
+
+ if (op.m_isDeadCode)
+ return;
+
+ PatternTerm* term = op.m_term;
+ UChar ch = term->patternCharacter;
+
const RegisterID character = regT0;
- UChar ch = state.term().patternCharacter;
+
+ if (nextOp.m_op == OpTerm) {
+ PatternTerm* nextTerm = nextOp.m_term;
+ if (nextTerm->type == PatternTerm::TypePatternCharacter
+ && nextTerm->quantityType == QuantifierFixedCount
+ && nextTerm->quantityCount == 1
+ && nextTerm->inputPosition == (term->inputPosition + 1)) {
+
+ UChar ch2 = nextTerm->patternCharacter;
+
+ int mask = 0;
+ int chPair = ch | (ch2 << 16);
+
+ if (m_pattern.m_ignoreCase) {
+ if (isASCIIAlpha(ch))
+ mask |= 32;
+ if (isASCIIAlpha(ch2))
+ mask |= 32 << 16;
+ }
+
+ BaseIndex address(input, index, TimesTwo, (term->inputPosition - m_checked) * sizeof(UChar));
+ if (mask) {
+ load32WithUnalignedHalfWords(address, character);
+ or32(Imm32(mask), character);
+ op.m_jumps.append(branch32(NotEqual, character, Imm32(chPair | mask)));
+ } else
+ op.m_jumps.append(branch32WithUnalignedHalfWords(NotEqual, address, Imm32(chPair)));
+
+ nextOp.m_isDeadCode = true;
+ return;
+ }
+ }
if (m_pattern.m_ignoreCase && isASCIIAlpha(ch)) {
- readCharacter(state.inputOffset(), character);
+ readCharacter(term->inputPosition - m_checked, character);
or32(TrustedImm32(32), character);
- state.jumpToBacktrack(this, branch32(NotEqual, character, Imm32(Unicode::toLower(ch))));
+ op.m_jumps.append(branch32(NotEqual, character, Imm32(Unicode::toLower(ch))));
} else {
ASSERT(!m_pattern.m_ignoreCase || (Unicode::toLower(ch) == Unicode::toUpper(ch)));
- state.jumpToBacktrack(this, jumpIfCharNotEquals(ch, state.inputOffset()));
+ op.m_jumps.append(jumpIfCharNotEquals(ch, term->inputPosition - m_checked));
}
}
-
- void generatePatternCharacterPair(TermGenerationState& state)
+ void backtrackPatternCharacterOnce(size_t opIndex)
{
- const RegisterID character = regT0;
- UChar ch1 = state.term().patternCharacter;
- UChar ch2 = state.lookaheadTerm().patternCharacter;
-
- int mask = 0;
- int chPair = ch1 | (ch2 << 16);
-
- if (m_pattern.m_ignoreCase) {
- if (isASCIIAlpha(ch1))
- mask |= 32;
- if (isASCIIAlpha(ch2))
- mask |= 32 << 16;
- }
-
- if (mask) {
- load32WithUnalignedHalfWords(BaseIndex(input, index, TimesTwo, state.inputOffset() * sizeof(UChar)), character);
- or32(Imm32(mask), character);
- state.jumpToBacktrack(this, branch32(NotEqual, character, Imm32(chPair | mask)));
- } else
- state.jumpToBacktrack(this, branch32WithUnalignedHalfWords(NotEqual, BaseIndex(input, index, TimesTwo, state.inputOffset() * sizeof(UChar)), Imm32(chPair)));
+ backtrackTermDefault(opIndex);
}
- void generatePatternCharacterFixed(TermGenerationState& state)
+ void generatePatternCharacterFixed(size_t opIndex)
{
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
+ UChar ch = term->patternCharacter;
+
const RegisterID character = regT0;
const RegisterID countRegister = regT1;
- PatternTerm& term = state.term();
- UChar ch = term.patternCharacter;
move(index, countRegister);
- sub32(Imm32(term.quantityCount), countRegister);
+ sub32(Imm32(term->quantityCount), countRegister);
Label loop(this);
+ BaseIndex address(input, countRegister, TimesTwo, (term->inputPosition - m_checked + term->quantityCount) * sizeof(UChar));
+
if (m_pattern.m_ignoreCase && isASCIIAlpha(ch)) {
- load16(BaseIndex(input, countRegister, TimesTwo, (state.inputOffset() + term.quantityCount) * sizeof(UChar)), character);
+ load16(address, character);
or32(TrustedImm32(32), character);
- state.jumpToBacktrack(this, branch32(NotEqual, character, Imm32(Unicode::toLower(ch))));
+ op.m_jumps.append(branch32(NotEqual, character, Imm32(Unicode::toLower(ch))));
} else {
ASSERT(!m_pattern.m_ignoreCase || (Unicode::toLower(ch) == Unicode::toUpper(ch)));
- state.jumpToBacktrack(this, branch16(NotEqual, BaseIndex(input, countRegister, TimesTwo, (state.inputOffset() + term.quantityCount) * sizeof(UChar)), Imm32(ch)));
+ op.m_jumps.append(branch16(NotEqual, address, Imm32(ch)));
}
add32(TrustedImm32(1), countRegister);
branch32(NotEqual, countRegister, index).linkTo(loop, this);
}
+ void backtrackPatternCharacterFixed(size_t opIndex)
+ {
+ backtrackTermDefault(opIndex);
+ }
- void generatePatternCharacterGreedy(TermGenerationState& state)
+ void generatePatternCharacterGreedy(size_t opIndex)
{
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
+ UChar ch = term->patternCharacter;
+
const RegisterID character = regT0;
const RegisterID countRegister = regT1;
- PatternTerm& term = state.term();
- UChar ch = term.patternCharacter;
move(TrustedImm32(0), countRegister);
@@ -1352,121 +752,152 @@ class YarrGenerator : private MacroAssembler {
Label loop(this);
failures.append(atEndOfInput());
if (m_pattern.m_ignoreCase && isASCIIAlpha(ch)) {
- readCharacter(state.inputOffset(), character);
+ readCharacter(term->inputPosition - m_checked, character);
or32(TrustedImm32(32), character);
failures.append(branch32(NotEqual, character, Imm32(Unicode::toLower(ch))));
} else {
ASSERT(!m_pattern.m_ignoreCase || (Unicode::toLower(ch) == Unicode::toUpper(ch)));
- failures.append(jumpIfCharNotEquals(ch, state.inputOffset()));
+ failures.append(jumpIfCharNotEquals(ch, term->inputPosition - m_checked));
}
add32(TrustedImm32(1), countRegister);
add32(TrustedImm32(1), index);
- if (term.quantityCount != quantifyInfinite) {
- branch32(NotEqual, countRegister, Imm32(term.quantityCount)).linkTo(loop, this);
- failures.append(jump());
- } else
+ if (term->quantityCount == quantifyInfinite)
jump(loop);
-
- Label backtrackBegin(this);
- loadFromFrame(term.frameLocation, countRegister);
- state.jumpToBacktrack(this, branchTest32(Zero, countRegister));
- sub32(TrustedImm32(1), countRegister);
- sub32(TrustedImm32(1), index);
+ else
+ branch32(NotEqual, countRegister, Imm32(term->quantityCount)).linkTo(loop, this);
failures.link(this);
+ op.m_reentry = label();
- storeToFrame(countRegister, term.frameLocation);
+ storeToFrame(countRegister, term->frameLocation);
- state.setBacktrackLabel(backtrackBegin);
}
+ void backtrackPatternCharacterGreedy(size_t opIndex)
+ {
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
+
+ const RegisterID countRegister = regT1;
- void generatePatternCharacterNonGreedy(TermGenerationState& state)
+ m_backtrackingState.link(this);
+
+ loadFromFrame(term->frameLocation, countRegister);
+ m_backtrackingState.append(branchTest32(Zero, countRegister));
+ sub32(TrustedImm32(1), countRegister);
+ sub32(TrustedImm32(1), index);
+ jump(op.m_reentry);
+ }
+
+ void generatePatternCharacterNonGreedy(size_t opIndex)
{
- const RegisterID character = regT0;
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
+
const RegisterID countRegister = regT1;
- PatternTerm& term = state.term();
- UChar ch = term.patternCharacter;
move(TrustedImm32(0), countRegister);
+ op.m_reentry = label();
+ storeToFrame(countRegister, term->frameLocation);
+ }
+ void backtrackPatternCharacterNonGreedy(size_t opIndex)
+ {
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
+ UChar ch = term->patternCharacter;
+
+ const RegisterID character = regT0;
+ const RegisterID countRegister = regT1;
- Jump firstTimeDoNothing = jump();
+ JumpList nonGreedyFailures;
- Label hardFail(this);
- sub32(countRegister, index);
- state.jumpToBacktrack(this);
+ m_backtrackingState.link(this);
- Label backtrackBegin(this);
- loadFromFrame(term.frameLocation, countRegister);
+ loadFromFrame(term->frameLocation, countRegister);
- atEndOfInput().linkTo(hardFail, this);
- if (term.quantityCount != quantifyInfinite)
- branch32(Equal, countRegister, Imm32(term.quantityCount), hardFail);
+ nonGreedyFailures.append(atEndOfInput());
+ if (term->quantityCount != quantifyInfinite)
+ nonGreedyFailures.append(branch32(Equal, countRegister, Imm32(term->quantityCount)));
if (m_pattern.m_ignoreCase && isASCIIAlpha(ch)) {
- readCharacter(state.inputOffset(), character);
+ readCharacter(term->inputPosition - m_checked, character);
or32(TrustedImm32(32), character);
- branch32(NotEqual, character, Imm32(Unicode::toLower(ch))).linkTo(hardFail, this);
+ nonGreedyFailures.append(branch32(NotEqual, character, Imm32(Unicode::toLower(ch))));
} else {
ASSERT(!m_pattern.m_ignoreCase || (Unicode::toLower(ch) == Unicode::toUpper(ch)));
- jumpIfCharNotEquals(ch, state.inputOffset()).linkTo(hardFail, this);
+ nonGreedyFailures.append(jumpIfCharNotEquals(ch, term->inputPosition - m_checked));
}
add32(TrustedImm32(1), countRegister);
add32(TrustedImm32(1), index);
- firstTimeDoNothing.link(this);
- storeToFrame(countRegister, term.frameLocation);
+ jump(op.m_reentry);
- state.setBacktrackLabel(backtrackBegin);
+ nonGreedyFailures.link(this);
+ sub32(countRegister, index);
+ m_backtrackingState.fallthrough();
}
- void generateCharacterClassSingle(TermGenerationState& state)
+ void generateCharacterClassOnce(size_t opIndex)
{
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
+
const RegisterID character = regT0;
- PatternTerm& term = state.term();
JumpList matchDest;
- readCharacter(state.inputOffset(), character);
- matchCharacterClass(character, matchDest, term.characterClass);
+ readCharacter((term->inputPosition - m_checked), character);
+ matchCharacterClass(character, matchDest, term->characterClass);
- if (term.invert())
- state.jumpToBacktrack(this, matchDest);
+ if (term->invert())
+ op.m_jumps.append(matchDest);
else {
- state.jumpToBacktrack(this);
+ op.m_jumps.append(jump());
matchDest.link(this);
}
}
+ void backtrackCharacterClassOnce(size_t opIndex)
+ {
+ backtrackTermDefault(opIndex);
+ }
- void generateCharacterClassFixed(TermGenerationState& state)
+ void generateCharacterClassFixed(size_t opIndex)
{
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
+
const RegisterID character = regT0;
const RegisterID countRegister = regT1;
- PatternTerm& term = state.term();
move(index, countRegister);
- sub32(Imm32(term.quantityCount), countRegister);
+ sub32(Imm32(term->quantityCount), countRegister);
Label loop(this);
JumpList matchDest;
- load16(BaseIndex(input, countRegister, TimesTwo, (state.inputOffset() + term.quantityCount) * sizeof(UChar)), character);
- matchCharacterClass(character, matchDest, term.characterClass);
+ load16(BaseIndex(input, countRegister, TimesTwo, (term->inputPosition - m_checked + term->quantityCount) * sizeof(UChar)), character);
+ matchCharacterClass(character, matchDest, term->characterClass);
- if (term.invert())
- state.jumpToBacktrack(this, matchDest);
+ if (term->invert())
+ op.m_jumps.append(matchDest);
else {
- state.jumpToBacktrack(this);
+ op.m_jumps.append(jump());
matchDest.link(this);
}
add32(TrustedImm32(1), countRegister);
branch32(NotEqual, countRegister, index).linkTo(loop, this);
}
+ void backtrackCharacterClassFixed(size_t opIndex)
+ {
+ backtrackTermDefault(opIndex);
+ }
- void generateCharacterClassGreedy(TermGenerationState& state)
+ void generateCharacterClassGreedy(size_t opIndex)
{
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
+
const RegisterID character = regT0;
const RegisterID countRegister = regT1;
- PatternTerm& term = state.term();
move(TrustedImm32(0), countRegister);
@@ -1474,692 +905,1356 @@ class YarrGenerator : private MacroAssembler {
Label loop(this);
failures.append(atEndOfInput());
- if (term.invert()) {
- readCharacter(state.inputOffset(), character);
- matchCharacterClass(character, failures, term.characterClass);
+ if (term->invert()) {
+ readCharacter(term->inputPosition - m_checked, character);
+ matchCharacterClass(character, failures, term->characterClass);
} else {
JumpList matchDest;
- readCharacter(state.inputOffset(), character);
- matchCharacterClass(character, matchDest, term.characterClass);
+ readCharacter(term->inputPosition - m_checked, character);
+ matchCharacterClass(character, matchDest, term->characterClass);
failures.append(jump());
matchDest.link(this);
}
add32(TrustedImm32(1), countRegister);
add32(TrustedImm32(1), index);
- if (term.quantityCount != quantifyInfinite) {
- branch32(NotEqual, countRegister, Imm32(term.quantityCount)).linkTo(loop, this);
+ if (term->quantityCount != quantifyInfinite) {
+ branch32(NotEqual, countRegister, Imm32(term->quantityCount)).linkTo(loop, this);
failures.append(jump());
} else
jump(loop);
- Label backtrackBegin(this);
- loadFromFrame(term.frameLocation, countRegister);
- state.jumpToBacktrack(this, branchTest32(Zero, countRegister));
- sub32(TrustedImm32(1), countRegister);
- sub32(TrustedImm32(1), index);
-
failures.link(this);
+ op.m_reentry = label();
+
+ storeToFrame(countRegister, term->frameLocation);
+ }
+ void backtrackCharacterClassGreedy(size_t opIndex)
+ {
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
- storeToFrame(countRegister, term.frameLocation);
+ const RegisterID countRegister = regT1;
+
+ m_backtrackingState.link(this);
- state.setBacktrackLabel(backtrackBegin);
+ loadFromFrame(term->frameLocation, countRegister);
+ m_backtrackingState.append(branchTest32(Zero, countRegister));
+ sub32(TrustedImm32(1), countRegister);
+ sub32(TrustedImm32(1), index);
+ jump(op.m_reentry);
}
- void generateCharacterClassNonGreedy(TermGenerationState& state)
+ void generateCharacterClassNonGreedy(size_t opIndex)
{
- const RegisterID character = regT0;
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
+
const RegisterID countRegister = regT1;
- PatternTerm& term = state.term();
move(TrustedImm32(0), countRegister);
+ op.m_reentry = label();
+ storeToFrame(countRegister, term->frameLocation);
+ }
+ void backtrackCharacterClassNonGreedy(size_t opIndex)
+ {
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
- Jump firstTimeDoNothing = jump();
+ const RegisterID character = regT0;
+ const RegisterID countRegister = regT1;
- Label hardFail(this);
- sub32(countRegister, index);
- state.jumpToBacktrack(this);
+ JumpList nonGreedyFailures;
+
+ m_backtrackingState.link(this);
Label backtrackBegin(this);
- loadFromFrame(term.frameLocation, countRegister);
+ loadFromFrame(term->frameLocation, countRegister);
- atEndOfInput().linkTo(hardFail, this);
- branch32(Equal, countRegister, Imm32(term.quantityCount), hardFail);
+ nonGreedyFailures.append(atEndOfInput());
+ nonGreedyFailures.append(branch32(Equal, countRegister, Imm32(term->quantityCount)));
JumpList matchDest;
- readCharacter(state.inputOffset(), character);
- matchCharacterClass(character, matchDest, term.characterClass);
+ readCharacter(term->inputPosition - m_checked, character);
+ matchCharacterClass(character, matchDest, term->characterClass);
- if (term.invert())
- matchDest.linkTo(hardFail, this);
+ if (term->invert())
+ nonGreedyFailures.append(matchDest);
else {
- jump(hardFail);
+ nonGreedyFailures.append(jump());
matchDest.link(this);
}
add32(TrustedImm32(1), countRegister);
add32(TrustedImm32(1), index);
- firstTimeDoNothing.link(this);
- storeToFrame(countRegister, term.frameLocation);
+ jump(op.m_reentry);
- state.setBacktrackLabel(backtrackBegin);
+ nonGreedyFailures.link(this);
+ sub32(countRegister, index);
+ m_backtrackingState.fallthrough();
}
- void generateParenthesesDisjunction(PatternTerm& parenthesesTerm, TermGenerationState& state, unsigned alternativeFrameLocation)
+ // Code generation/backtracking for simple terms
+ // (pattern characters, character classes, and assertions).
+ // These methods farm out work to the set of functions above.
+ void generateTerm(size_t opIndex)
{
- ASSERT((parenthesesTerm.type == PatternTerm::TypeParenthesesSubpattern) || (parenthesesTerm.type == PatternTerm::TypeParentheticalAssertion));
- ASSERT(parenthesesTerm.quantityCount == 1);
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
- PatternDisjunction* disjunction = parenthesesTerm.parentheses.disjunction;
- unsigned preCheckedCount = ((parenthesesTerm.quantityType == QuantifierFixedCount) && (parenthesesTerm.type != PatternTerm::TypeParentheticalAssertion)) ? disjunction->m_minimumSize : 0;
+ switch (term->type) {
+ case PatternTerm::TypePatternCharacter:
+ switch (term->quantityType) {
+ case QuantifierFixedCount:
+ if (term->quantityCount == 1)
+ generatePatternCharacterOnce(opIndex);
+ else
+ generatePatternCharacterFixed(opIndex);
+ break;
+ case QuantifierGreedy:
+ generatePatternCharacterGreedy(opIndex);
+ break;
+ case QuantifierNonGreedy:
+ generatePatternCharacterNonGreedy(opIndex);
+ break;
+ }
+ break;
- if (disjunction->m_alternatives.size() == 1) {
- state.resetAlternative();
- ASSERT(state.alternativeValid());
- PatternAlternative* alternative = state.alternative();
- optimizeAlternative(alternative);
+ case PatternTerm::TypeCharacterClass:
+ switch (term->quantityType) {
+ case QuantifierFixedCount:
+ if (term->quantityCount == 1)
+ generateCharacterClassOnce(opIndex);
+ else
+ generateCharacterClassFixed(opIndex);
+ break;
+ case QuantifierGreedy:
+ generateCharacterClassGreedy(opIndex);
+ break;
+ case QuantifierNonGreedy:
+ generateCharacterClassNonGreedy(opIndex);
+ break;
+ }
+ break;
- int countToCheck = alternative->m_minimumSize - preCheckedCount;
- if (countToCheck) {
- ASSERT((parenthesesTerm.type == PatternTerm::TypeParentheticalAssertion) || (parenthesesTerm.quantityType != QuantifierFixedCount));
+ case PatternTerm::TypeAssertionBOL:
+ generateAssertionBOL(opIndex);
+ break;
- // FIXME: This is quite horrible. The call to 'plantJumpToBacktrackIfExists'
- // will be forced to always trampoline into here, just to decrement the index.
- // Ick.
- Jump skip = jump();
+ case PatternTerm::TypeAssertionEOL:
+ generateAssertionEOL(opIndex);
+ break;
- Label backtrackBegin(this);
- sub32(Imm32(countToCheck), index);
- state.addBacktrackJump(jump());
+ case PatternTerm::TypeAssertionWordBoundary:
+ generateAssertionWordBoundary(opIndex);
+ break;
- skip.link(this);
+ case PatternTerm::TypeForwardReference:
+ break;
- state.setBacktrackLabel(backtrackBegin);
+ case PatternTerm::TypeParenthesesSubpattern:
+ case PatternTerm::TypeParentheticalAssertion:
+ ASSERT_NOT_REACHED();
+ case PatternTerm::TypeBackReference:
+ m_shouldFallBack = true;
+ break;
+ }
+ }
+ void backtrackTerm(size_t opIndex)
+ {
+ YarrOp& op = m_ops[opIndex];
+ PatternTerm* term = op.m_term;
- state.jumpToBacktrack(this, jumpIfNoAvailableInput(countToCheck));
- state.checkedTotal += countToCheck;
+ switch (term->type) {
+ case PatternTerm::TypePatternCharacter:
+ switch (term->quantityType) {
+ case QuantifierFixedCount:
+ if (term->quantityCount == 1)
+ backtrackPatternCharacterOnce(opIndex);
+ else
+ backtrackPatternCharacterFixed(opIndex);
+ break;
+ case QuantifierGreedy:
+ backtrackPatternCharacterGreedy(opIndex);
+ break;
+ case QuantifierNonGreedy:
+ backtrackPatternCharacterNonGreedy(opIndex);
+ break;
}
+ break;
- for (state.resetTerm(); state.termValid(); state.nextTerm())
- generateTerm(state);
-
- state.checkedTotal -= countToCheck;
- } else {
- JumpList successes;
- bool propogateBacktrack = false;
-
- // Save current state's paren jump list for use with each alternative
- JumpList* outerJumpList = state.getJumpListToPriorParen();
+ case PatternTerm::TypeCharacterClass:
+ switch (term->quantityType) {
+ case QuantifierFixedCount:
+ if (term->quantityCount == 1)
+ backtrackCharacterClassOnce(opIndex);
+ else
+ backtrackCharacterClassFixed(opIndex);
+ break;
+ case QuantifierGreedy:
+ backtrackCharacterClassGreedy(opIndex);
+ break;
+ case QuantifierNonGreedy:
+ backtrackCharacterClassNonGreedy(opIndex);
+ break;
+ }
+ break;
- for (state.resetAlternative(); state.alternativeValid(); state.nextAlternative(), state.setJumpListToPriorParen(outerJumpList)) {
- PatternAlternative* alternative = state.alternative();
- optimizeAlternative(alternative);
+ case PatternTerm::TypeAssertionBOL:
+ backtrackAssertionBOL(opIndex);
+ break;
- ASSERT(alternative->m_minimumSize >= preCheckedCount);
- int countToCheck = alternative->m_minimumSize - preCheckedCount;
- if (countToCheck) {
- state.addBacktrackJump(jumpIfNoAvailableInput(countToCheck));
- state.checkedTotal += countToCheck;
- }
+ case PatternTerm::TypeAssertionEOL:
+ backtrackAssertionEOL(opIndex);
+ break;
- for (state.resetTerm(); state.termValid(); state.nextTerm())
- generateTerm(state);
+ case PatternTerm::TypeAssertionWordBoundary:
+ backtrackAssertionWordBoundary(opIndex);
+ break;
- // Matched an alternative.
- DataLabelPtr dataLabel = storeToFrameWithPatch(alternativeFrameLocation);
+ case PatternTerm::TypeForwardReference:
+ break;
- if (!state.isLastAlternative() || countToCheck)
- successes.append(jump());
+ case PatternTerm::TypeParenthesesSubpattern:
+ case PatternTerm::TypeParentheticalAssertion:
+ ASSERT_NOT_REACHED();
+ case PatternTerm::TypeBackReference:
+ m_shouldFallBack = true;
+ break;
+ }
+ }
- // Alternative did not match.
+ void generate()
+ {
+ // Forwards generate the matching code.
+ ASSERT(m_ops.size());
+ size_t opIndex = 0;
- // Do we have a backtrack destination?
- // if so, link the data label to it.
- state.linkDataLabelToBacktrackIfExists(this, dataLabel);
+ do {
+ YarrOp& op = m_ops[opIndex];
+ switch (op.m_op) {
- if (!state.isLastAlternative() || countToCheck)
- state.linkAlternativeBacktracks(this);
+ case OpTerm:
+ generateTerm(opIndex);
+ break;
- if (countToCheck) {
- sub32(Imm32(countToCheck), index);
- state.checkedTotal -= countToCheck;
- } else if (state.isLastAlternative())
- propogateBacktrack = true;
+ // OpBodyAlternativeBegin/Next/End
+ //
+ // These nodes wrap the set of alternatives in the body of the regular expression.
+ // There may be either one or two chains of OpBodyAlternative nodes, one representing
+ // the 'once through' sequence of alternatives (if any exist), and one representing
+ // the repeating alternatives (again, if any exist).
+ //
+ // Upon normal entry to the Begin alternative, we will check that input is available.
+ // Reentry to the Begin alternative will take place after the check has taken place,
+ // and will assume that the input position has already been progressed as appropriate.
+ //
+ // Entry to subsequent Next/End alternatives occurs when the prior alternative has
+ // successfully completed a match - return a success state from JIT code.
+ //
+ // Next alternatives allow for reentry optimized to suit backtracking from its
+ // preceding alternative. It expects the input position to still be set to a position
+ // appropriate to its predecessor, and it will only perform an input check if the
+ // predecessor had a minimum size less than its own.
+ //
+ // In the case 'once through' expressions, the End node will also have a reentry
+ // point to jump to when the last alternative fails. Again, this expects the input
+ // position to still reflect that expected by the prior alternative.
+ case OpBodyAlternativeBegin: {
+ PatternAlternative* alternative = op.m_alternative;
+
+ // Upon entry at the head of the set of alternatives, check if input is available
+ // to run the first alternative. (This progresses the input position).
+ op.m_jumps.append(jumpIfNoAvailableInput(alternative->m_minimumSize));
+ // We will reenter after the check, and assume the input position to have been
+ // set as appropriate to this alternative.
+ op.m_reentry = label();
+
+ m_checked += alternative->m_minimumSize;
+ break;
}
- // We fall through to here when the last alternative fails.
- // Add a backtrack out of here for the parenthese handling code to link up.
- if (!propogateBacktrack)
- state.addBacktrackJump(jump());
-
- // Save address on stack for the parens code to backtrack to, to retry the
- // next alternative.
- state.setBackTrackStackOffset(alternativeFrameLocation * sizeof(void*));
-
- successes.link(this);
- }
- }
+ case OpBodyAlternativeNext:
+ case OpBodyAlternativeEnd: {
+ PatternAlternative* priorAlternative = m_ops[op.m_previousOp].m_alternative;
+ PatternAlternative* alternative = op.m_alternative;
+
+ // If we get here, the prior alternative matched - return success.
+
+ // Adjust the stack pointer to remove the pattern's frame.
+ if (m_pattern.m_body->m_callFrameSize)
+ addPtr(Imm32(m_pattern.m_body->m_callFrameSize * sizeof(void*)), stackPointerRegister);
+
+ // Load appropriate values into the return register and the first output
+ // slot, and return. In the case of pattern with a fixed size, we will
+ // not have yet set the value in the first
+ ASSERT(index != returnRegister);
+ if (m_pattern.m_body->m_hasFixedSize) {
+ move(index, returnRegister);
+ if (priorAlternative->m_minimumSize)
+ sub32(Imm32(priorAlternative->m_minimumSize), returnRegister);
+ store32(returnRegister, output);
+ } else
+ load32(Address(output), returnRegister);
+ store32(index, Address(output, 4));
+ generateReturn();
+
+ // This is the divide between the tail of the prior alternative, above, and
+ // the head of the subsequent alternative, below.
+
+ if (op.m_op == OpBodyAlternativeNext) {
+ // This is the reentry point for the Next alternative. We expect any code
+ // that jumps here to do so with the input position matching that of the
+ // PRIOR alteranative, and we will only check input availability if we
+ // need to progress it forwards.
+ op.m_reentry = label();
+ if (int delta = alternative->m_minimumSize - priorAlternative->m_minimumSize) {
+ add32(Imm32(delta), index);
+ if (delta > 0)
+ op.m_jumps.append(jumpIfNoAvailableInput());
+ }
+ } else if (op.m_nextOp == notFound) {
+ // This is the reentry point for the End of 'once through' alternatives,
+ // jumped to when the las alternative fails to match.
+ op.m_reentry = label();
+ sub32(Imm32(priorAlternative->m_minimumSize), index);
+ }
- void generateParenthesesSingle(TermGenerationState& state)
- {
- const RegisterID indexTemporary = regT0;
- PatternTerm& term = state.term();
- PatternDisjunction* disjunction = term.parentheses.disjunction;
- ASSERT(term.quantityCount == 1);
+ if (op.m_op == OpBodyAlternativeNext)
+ m_checked += alternative->m_minimumSize;
+ m_checked -= priorAlternative->m_minimumSize;
+ break;
+ }
- unsigned preCheckedCount = (term.quantityType == QuantifierFixedCount) ? disjunction->m_minimumSize : 0;
+ // OpSimpleNestedAlternativeBegin/Next/End
+ // OpNestedAlternativeBegin/Next/End
+ //
+ // These nodes are used to handle sets of alternatives that are nested within
+ // subpatterns and parenthetical assertions. The 'simple' forms are used where
+ // we do not need to be able to backtrack back into any alternative other than
+ // the last, the normal forms allow backtracking into any alternative.
+ //
+ // Each Begin/Next node is responsible for planting an input check to ensure
+ // sufficient input is available on entry. Next nodes additionally need to
+ // jump to the end - Next nodes use the End node's m_jumps list to hold this
+ // set of jumps.
+ //
+ // In the non-simple forms, successful alternative matches must store a
+ // 'return address' using a DataLabelPtr, used to store the address to jump
+ // to when backtracking, to get to the code for the appropriate alternative.
+ case OpSimpleNestedAlternativeBegin:
+ case OpNestedAlternativeBegin: {
+ PatternTerm* term = op.m_term;
+ PatternAlternative* alternative = op.m_alternative;
+ PatternDisjunction* disjunction = term->parentheses.disjunction;
+
+ // Calculate how much input we need to check for, and if non-zero check.
+ op.m_checkAdjust = alternative->m_minimumSize;
+ if ((term->quantityType == QuantifierFixedCount) && (term->type != PatternTerm::TypeParentheticalAssertion))
+ op.m_checkAdjust -= disjunction->m_minimumSize;
+ if (op.m_checkAdjust)
+ op.m_jumps.append(jumpIfNoAvailableInput(op.m_checkAdjust));
+
+ m_checked += op.m_checkAdjust;
+ break;
+ }
+ case OpSimpleNestedAlternativeNext:
+ case OpNestedAlternativeNext: {
+ PatternTerm* term = op.m_term;
+ PatternAlternative* alternative = op.m_alternative;
+ PatternDisjunction* disjunction = term->parentheses.disjunction;
+
+ // In the non-simple case, store a 'return address' so we can backtrack correctly.
+ if (op.m_op == OpNestedAlternativeNext) {
+ unsigned parenthesesFrameLocation = term->frameLocation;
+ unsigned alternativeFrameLocation = parenthesesFrameLocation;
+ if (term->quantityType != QuantifierFixedCount)
+ alternativeFrameLocation += YarrStackSpaceForBackTrackInfoParenthesesOnce;
+ op.m_returnAddress = storeToFrameWithPatch(alternativeFrameLocation);
+ }
- unsigned parenthesesFrameLocation = term.frameLocation;
- unsigned alternativeFrameLocation = parenthesesFrameLocation;
- if (term.quantityType != QuantifierFixedCount)
- alternativeFrameLocation += YarrStackSpaceForBackTrackInfoParenthesesOnce;
+ // If we reach here then the last alternative has matched - jump to the
+ // End node, to skip over any further alternatives.
+ //
+ // FIXME: this is logically O(N^2) (though N can be expected to be very
+ // small). We could avoid this either by adding an extra jump to the JIT
+ // data structures, or by making backtracking code that jumps to Next
+ // alternatives are responsible for checking that input is available (if
+ // we didn't need to plant the input checks, then m_jumps would be free).
+ YarrOp* endOp = &m_ops[op.m_nextOp];
+ while (endOp->m_nextOp != notFound) {
+ ASSERT(endOp->m_op == OpSimpleNestedAlternativeNext || endOp->m_op == OpNestedAlternativeNext);
+ endOp = &m_ops[endOp->m_nextOp];
+ }
+ ASSERT(endOp->m_op == OpSimpleNestedAlternativeEnd || endOp->m_op == OpNestedAlternativeEnd);
+ endOp->m_jumps.append(jump());
+
+ // This is the entry point for the next alternative.
+ op.m_reentry = label();
+
+ // Calculate how much input we need to check for, and if non-zero check.
+ op.m_checkAdjust = alternative->m_minimumSize;
+ if ((term->quantityType == QuantifierFixedCount) && (term->type != PatternTerm::TypeParentheticalAssertion))
+ op.m_checkAdjust -= disjunction->m_minimumSize;
+ if (op.m_checkAdjust)
+ op.m_jumps.append(jumpIfNoAvailableInput(op.m_checkAdjust));
+
+ YarrOp& lastOp = m_ops[op.m_previousOp];
+ m_checked -= lastOp.m_checkAdjust;
+ m_checked += op.m_checkAdjust;
+ break;
+ }
+ case OpSimpleNestedAlternativeEnd:
+ case OpNestedAlternativeEnd: {
+ PatternTerm* term = op.m_term;
+
+ // In the non-simple case, store a 'return address' so we can backtrack correctly.
+ if (op.m_op == OpNestedAlternativeEnd) {
+ unsigned parenthesesFrameLocation = term->frameLocation;
+ unsigned alternativeFrameLocation = parenthesesFrameLocation;
+ if (term->quantityType != QuantifierFixedCount)
+ alternativeFrameLocation += YarrStackSpaceForBackTrackInfoParenthesesOnce;
+ op.m_returnAddress = storeToFrameWithPatch(alternativeFrameLocation);
+ }
- // optimized case - no capture & no quantifier can be handled in a light-weight manner.
- if (!term.capture() && (term.quantityType == QuantifierFixedCount)) {
- m_expressionState.incrementParenNestingLevel();
+ // If this set of alternatives contains more than one alternative,
+ // then the Next nodes will have planted jumps to the End, and added
+ // them to this node's m_jumps list.
+ op.m_jumps.link(this);
+ op.m_jumps.clear();
- TermGenerationState parenthesesState(disjunction, state.checkedTotal);
+ YarrOp& lastOp = m_ops[op.m_previousOp];
+ m_checked -= lastOp.m_checkAdjust;
+ break;
+ }
- // Use the current state's jump list for the nested parentheses.
- parenthesesState.setJumpListToPriorParen(state.getJumpListToPriorParen());
+ // OpParenthesesSubpatternOnceBegin/End
+ //
+ // These nodes support (optionally) capturing subpatterns, that have a
+ // quantity count of 1 (this covers fixed once, and ?/?? quantifiers).
+ case OpParenthesesSubpatternOnceBegin: {
+ PatternTerm* term = op.m_term;
+ unsigned parenthesesFrameLocation = term->frameLocation;
+ const RegisterID indexTemporary = regT0;
+ ASSERT(term->quantityCount == 1);
+
+ // Upon entry to a Greedy quantified set of parenthese store the index.
+ // We'll use this for two purposes:
+ // - To indicate which iteration we are on of mathing the remainder of
+ // the expression after the parentheses - the first, including the
+ // match within the parentheses, or the second having skipped over them.
+ // - To check for empty matches, which must be rejected.
+ //
+ // At the head of a NonGreedy set of parentheses we'll immediately set the
+ // value on the stack to -1 (indicating a match skipping the subpattern),
+ // and plant a jump to the end. We'll also plant a label to backtrack to
+ // to reenter the subpattern later, with a store to set up index on the
+ // second iteration.
+ //
+ // FIXME: for capturing parens, could use the index in the capture array?
+ if (term->quantityType == QuantifierGreedy)
+ storeToFrame(index, parenthesesFrameLocation);
+ else if (term->quantityType == QuantifierNonGreedy) {
+ storeToFrame(TrustedImm32(-1), parenthesesFrameLocation);
+ op.m_jumps.append(jump());
+ op.m_reentry = label();
+ storeToFrame(index, parenthesesFrameLocation);
+ }
- generateParenthesesDisjunction(state.term(), parenthesesState, alternativeFrameLocation);
- // this expects that any backtracks back out of the parentheses will be in the
- // parenthesesState's m_backTrackJumps vector, and that if they need backtracking
- // they will have set an entry point on the parenthesesState's m_backtrackLabel.
- BacktrackDestination& parenthesesBacktrack = parenthesesState.getBacktrackDestination();
- BacktrackDestination& stateBacktrack = state.getBacktrackDestination();
+ // If the parenthese are capturing, store the starting index value to the
+ // captures array, offsetting as necessary.
+ //
+ // FIXME: could avoid offsetting this value in JIT code, apply
+ // offsets only afterwards, at the point the results array is
+ // being accessed.
+ if (term->capture()) {
+ int offsetId = term->parentheses.subpatternId << 1;
+ int inputOffset = term->inputPosition - m_checked;
+ if (term->quantityType == QuantifierFixedCount)
+ inputOffset -= term->parentheses.disjunction->m_minimumSize;
+ if (inputOffset) {
+ move(index, indexTemporary);
+ add32(Imm32(inputOffset), indexTemporary);
+ store32(indexTemporary, Address(output, offsetId * sizeof(int)));
+ } else
+ store32(index, Address(output, offsetId * sizeof(int)));
+ }
+ break;
+ }
+ case OpParenthesesSubpatternOnceEnd: {
+ PatternTerm* term = op.m_term;
+ unsigned parenthesesFrameLocation = term->frameLocation;
+ const RegisterID indexTemporary = regT0;
+ ASSERT(term->quantityCount == 1);
+
+ // For Greedy/NonGreedy quantified parentheses, we must reject zero length
+ // matches. If the minimum size is know to be non-zero we need not check.
+ if (term->quantityType != QuantifierFixedCount && !term->parentheses.disjunction->m_minimumSize)
+ op.m_jumps.append(branch32(Equal, index, Address(stackPointerRegister, parenthesesFrameLocation * sizeof(void*))));
+
+ // If the parenthese are capturing, store the ending index value to the
+ // captures array, offsetting as necessary.
+ //
+ // FIXME: could avoid offsetting this value in JIT code, apply
+ // offsets only afterwards, at the point the results array is
+ // being accessed.
+ if (term->capture()) {
+ int offsetId = (term->parentheses.subpatternId << 1) + 1;
+ int inputOffset = term->inputPosition - m_checked;
+ if (inputOffset) {
+ move(index, indexTemporary);
+ add32(Imm32(inputOffset), indexTemporary);
+ store32(indexTemporary, Address(output, offsetId * sizeof(int)));
+ } else
+ store32(index, Address(output, offsetId * sizeof(int)));
+ }
- state.propagateBacktrackingFrom(this, parenthesesBacktrack);
- stateBacktrack.propagateBacktrackToLabel(parenthesesBacktrack);
+ // If the parentheses are quantified Greedy then add a label to jump back
+ // to if get a failed match from after the parentheses. For NonGreedy
+ // parentheses, link the jump from before the subpattern to here.
+ if (term->quantityType == QuantifierGreedy)
+ op.m_reentry = label();
+ else if (term->quantityType == QuantifierNonGreedy) {
+ YarrOp& beginOp = m_ops[op.m_previousOp];
+ beginOp.m_jumps.link(this);
+ }
+ break;
+ }
- state.setJumpListToPriorParen(parenthesesState.getJumpListToPriorParen());
+ // OpParenthesesSubpatternTerminalBegin/End
+ case OpParenthesesSubpatternTerminalBegin: {
+ PatternTerm* term = op.m_term;
+ ASSERT(term->quantityType == QuantifierGreedy);
+ ASSERT(term->quantityCount == quantifyInfinite);
+ ASSERT(!term->capture());
- m_expressionState.decrementParenNestingLevel();
- } else {
- Jump nonGreedySkipParentheses;
- Label nonGreedyTryParentheses;
- if (term.quantityType == QuantifierGreedy)
- storeToFrame(index, parenthesesFrameLocation);
- else if (term.quantityType == QuantifierNonGreedy) {
- storeToFrame(TrustedImm32(-1), parenthesesFrameLocation);
- nonGreedySkipParentheses = jump();
- nonGreedyTryParentheses = label();
- storeToFrame(index, parenthesesFrameLocation);
- }
+ // Upon entry set a label to loop back to.
+ op.m_reentry = label();
- // store the match start index
- if (term.capture()) {
- int inputOffset = state.inputOffset() - preCheckedCount;
- if (inputOffset) {
- move(index, indexTemporary);
- add32(Imm32(inputOffset), indexTemporary);
- store32(indexTemporary, Address(output, (term.parentheses.subpatternId << 1) * sizeof(int)));
- } else
- store32(index, Address(output, (term.parentheses.subpatternId << 1) * sizeof(int)));
+ // Store the start index of the current match; we need to reject zero
+ // length matches.
+ storeToFrame(index, term->frameLocation);
+ break;
}
+ case OpParenthesesSubpatternTerminalEnd: {
+ PatternTerm* term = op.m_term;
- ParenthesesTail* parenthesesTail = m_expressionState.addParenthesesTail(term, state.getJumpListToPriorParen());
+ // Check for zero length matches - if the match is non-zero, then we
+ // can accept it & loop back up to the head of the subpattern.
+ YarrOp& beginOp = m_ops[op.m_previousOp];
+ branch32(NotEqual, index, Address(stackPointerRegister, term->frameLocation * sizeof(void*)), beginOp.m_reentry);
- m_expressionState.incrementParenNestingLevel();
+ // Reject the match - backtrack back into the subpattern.
+ op.m_jumps.append(jump());
- TermGenerationState parenthesesState(disjunction, state.checkedTotal);
+ // This is the entry point to jump to when we stop matching - we will
+ // do so once the subpattern cannot match any more.
+ op.m_reentry = label();
+ break;
+ }
- // Save the parenthesesTail for backtracking from nested parens to this one.
- parenthesesState.setJumpListToPriorParen(&parenthesesTail->m_withinBacktrackJumps);
+ // OpParentheticalAssertionBegin/End
+ case OpParentheticalAssertionBegin: {
+ PatternTerm* term = op.m_term;
- // generate the body of the parentheses
- generateParenthesesDisjunction(state.term(), parenthesesState, alternativeFrameLocation);
+ // Store the current index - assertions should not update index, so
+ // we will need to restore it upon a successful match.
+ unsigned parenthesesFrameLocation = term->frameLocation;
+ storeToFrame(index, parenthesesFrameLocation);
- // For non-fixed counts, backtrack if we didn't match anything.
- if (term.quantityType != QuantifierFixedCount)
- parenthesesTail->addAfterParenJump(branch32(Equal, index, Address(stackPointerRegister, (parenthesesFrameLocation * sizeof(void*)))));
+ // Check
+ op.m_checkAdjust = m_checked - term->inputPosition;
+ if (op.m_checkAdjust)
+ sub32(Imm32(op.m_checkAdjust), index);
- // store the match end index
- if (term.capture()) {
- int inputOffset = state.inputOffset();
- if (inputOffset) {
- move(index, indexTemporary);
- add32(Imm32(state.inputOffset()), indexTemporary);
- store32(indexTemporary, Address(output, ((term.parentheses.subpatternId << 1) + 1) * sizeof(int)));
- } else
- store32(index, Address(output, ((term.parentheses.subpatternId << 1) + 1) * sizeof(int)));
+ m_checked -= op.m_checkAdjust;
+ break;
}
+ case OpParentheticalAssertionEnd: {
+ PatternTerm* term = op.m_term;
+
+ // Restore the input index value.
+ unsigned parenthesesFrameLocation = term->frameLocation;
+ loadFromFrame(parenthesesFrameLocation, index);
+
+ // If inverted, a successful match of the assertion must be treated
+ // as a failure, so jump to backtracking.
+ if (term->invert()) {
+ op.m_jumps.append(jump());
+ op.m_reentry = label();
+ }
- m_expressionState.decrementParenNestingLevel();
-
- parenthesesTail->processBacktracks(this, state, parenthesesState, nonGreedyTryParentheses, label());
+ YarrOp& lastOp = m_ops[op.m_previousOp];
+ m_checked += lastOp.m_checkAdjust;
+ break;
+ }
- state.setJumpListToPriorParen(&parenthesesTail->m_afterBacktrackJumps);
-
- parenthesesState.getBacktrackDestination().clear();
+ case OpMatchFailed:
+ if (m_pattern.m_body->m_callFrameSize)
+ addPtr(Imm32(m_pattern.m_body->m_callFrameSize * sizeof(void*)), stackPointerRegister);
+ move(TrustedImm32(-1), returnRegister);
+ generateReturn();
+ break;
+ }
- if (term.quantityType == QuantifierNonGreedy)
- nonGreedySkipParentheses.link(this);
- }
+ ++opIndex;
+ } while (opIndex < m_ops.size());
}
- void generateParenthesesGreedyNoBacktrack(TermGenerationState& state)
+ void backtrack()
{
- PatternTerm& parenthesesTerm = state.term();
- PatternDisjunction* disjunction = parenthesesTerm.parentheses.disjunction;
- ASSERT(parenthesesTerm.type == PatternTerm::TypeParenthesesSubpattern);
- ASSERT(parenthesesTerm.quantityCount != 1); // Handled by generateParenthesesSingle.
+ // Backwards generate the backtracking code.
+ size_t opIndex = m_ops.size();
+ ASSERT(opIndex);
- TermGenerationState parenthesesState(disjunction, state.checkedTotal);
+ do {
+ --opIndex;
+ YarrOp& op = m_ops[opIndex];
+ switch (op.m_op) {
- Label matchAgain(this);
+ case OpTerm:
+ backtrackTerm(opIndex);
+ break;
- storeToFrame(index, parenthesesTerm.frameLocation); // Save the current index to check for zero len matches later.
+ // OpBodyAlternativeBegin/Next/End
+ //
+ // For each Begin/Next node representing an alternative, we need to decide what to do
+ // in two circumstances:
+ // - If we backtrack back into this node, from within the alternative.
+ // - If the input check at the head of the alternative fails (if this exists).
+ //
+ // We treat these two cases differently since in the former case we have slightly
+ // more information - since we are backtracking out of a prior alternative we know
+ // that at least enough input was available to run it. For example, given the regular
+ // expression /a|b/, if we backtrack out of the first alternative (a failed pattern
+ // character match of 'a'), then we need not perform an additional input availability
+ // check before running the second alternative.
+ //
+ // Backtracking required differs for the last alternative, which in the case of the
+ // repeating set of alternatives must loop. The code generated for the last alternative
+ // will also be used to handle all input check failures from any prior alternatives -
+ // these require similar functionality, in seeking the next available alternative for
+ // which there is sufficient input.
+ //
+ // Since backtracking of all other alternatives simply requires us to link backtracks
+ // to the reentry point for the subsequent alternative, we will only be generating any
+ // code when backtracking the last alternative.
+ case OpBodyAlternativeBegin:
+ case OpBodyAlternativeNext: {
+ PatternAlternative* alternative = op.m_alternative;
+
+ if (op.m_op == OpBodyAlternativeNext) {
+ PatternAlternative* priorAlternative = m_ops[op.m_previousOp].m_alternative;
+ m_checked += priorAlternative->m_minimumSize;
+ }
+ m_checked -= alternative->m_minimumSize;
- for (parenthesesState.resetAlternative(); parenthesesState.alternativeValid(); parenthesesState.nextAlternative()) {
+ // Is this the last alternative? If not, then if we backtrack to this point we just
+ // need to jump to try to match the next alternative.
+ if (m_ops[op.m_nextOp].m_op != OpBodyAlternativeEnd) {
+ m_backtrackingState.linkTo(m_ops[op.m_nextOp].m_reentry, this);
+ break;
+ }
+ YarrOp& endOp = m_ops[op.m_nextOp];
- PatternAlternative* alternative = parenthesesState.alternative();
- optimizeAlternative(alternative);
+ YarrOp* beginOp = &op;
+ while (beginOp->m_op != OpBodyAlternativeBegin) {
+ ASSERT(beginOp->m_op == OpBodyAlternativeNext);
+ beginOp = &m_ops[beginOp->m_previousOp];
+ }
- int countToCheck = alternative->m_minimumSize;
- if (countToCheck) {
- parenthesesState.addBacktrackJump(jumpIfNoAvailableInput(countToCheck));
- parenthesesState.checkedTotal += countToCheck;
- }
+ bool onceThrough = endOp.m_nextOp == notFound;
+
+ // First, generate code to handle cases where we backtrack out of an attempted match
+ // of the last alternative. If this is a 'once through' set of alternatives then we
+ // have nothing to do - link this straight through to the End.
+ if (onceThrough)
+ m_backtrackingState.linkTo(endOp.m_reentry, this);
+ else {
+ // Okay, we're going to need to loop. Calculate the delta between where the input
+ // position was, and where we want it to be allowing for the fact that we need to
+ // increment by 1. E.g. for the regexp /a|x/ we need to increment the position by
+ // 1 between loop iterations, but for /abcd|xyz/ we need to increment by two when
+ // looping from the last alternative to the first, for /a|xyz/ we need to decrement
+ // by 1, and for /a|xy/ we don't need to move the input position at all.
+ int deltaLastAlternativeToFirstAlternativePlusOne = (beginOp->m_alternative->m_minimumSize - alternative->m_minimumSize) + 1;
+
+ // If we don't need to move the input poistion, and the pattern has a fixed size
+ // (in which case we omit the store of the start index until the pattern has matched)
+ // then we can just link the backtrack out of the last alternative straight to the
+ // head of the first alternative.
+ if (!deltaLastAlternativeToFirstAlternativePlusOne && m_pattern.m_body->m_hasFixedSize)
+ m_backtrackingState.linkTo(beginOp->m_reentry, this);
+ else {
+ // We need to generate a trampoline of code to execute before looping back
+ // around to the first alternative.
+ m_backtrackingState.link(this);
+
+ // If the pattern size is not fixed, then store the start index, for use if we match.
+ if (!m_pattern.m_body->m_hasFixedSize) {
+ if (alternative->m_minimumSize == 1)
+ store32(index, Address(output));
+ else {
+ move(index, regT0);
+ if (alternative->m_minimumSize)
+ sub32(Imm32(alternative->m_minimumSize - 1), regT0);
+ else
+ add32(Imm32(1), regT0);
+ store32(regT0, Address(output));
+ }
+ }
+
+ if (deltaLastAlternativeToFirstAlternativePlusOne)
+ add32(Imm32(deltaLastAlternativeToFirstAlternativePlusOne), index);
+
+ // Loop. Since this code is only reached when we backtrack out of the last
+ // alternative (and NOT linked to from the input check upon entry to the
+ // last alternative) we know that there must be at least enough input as
+ // required by the last alternative. As such, we only need to check if the
+ // first will require more to run - if the same or less is required we can
+ // unconditionally jump.
+ if (deltaLastAlternativeToFirstAlternativePlusOne > 0)
+ checkInput().linkTo(beginOp->m_reentry, this);
+ else
+ jump(beginOp->m_reentry);
+ }
+ }
- for (parenthesesState.resetTerm(); parenthesesState.termValid(); parenthesesState.nextTerm())
- generateTerm(parenthesesState);
+ // We can reach this point in the code in two ways:
+ // - Fallthrough from the code above (a repeating alternative backtracked out of its
+ // last alternative, and did not have sufficent input to run the first).
+ // - We will loop back up to the following label when a releating alternative loops,
+ // following a failed input check.
+ //
+ // Either way, we have just failed the input check for the first alternative.
+ Label firstInputCheckFailed(this);
+
+ // Generate code to handle input check failures from alternatives except the last.
+ // prevOp is the alternative we're handling a bail out from (initially Begin), and
+ // nextOp is the alternative we will be attempting to reenter into.
+ //
+ // We will link input check failures from the forwards matching path back to the code
+ // that can handle them.
+ YarrOp* prevOp = beginOp;
+ YarrOp* nextOp = &m_ops[beginOp->m_nextOp];
+ while (nextOp->m_op != OpBodyAlternativeEnd) {
+ prevOp->m_jumps.link(this);
+
+ int delta = nextOp->m_alternative->m_minimumSize - prevOp->m_alternative->m_minimumSize;
+ if (delta)
+ add32(Imm32(delta), index);
+
+ // We only get here if an input check fails, it is only worth checking again
+ // if the next alternative has a minimum size less than the last.
+ if (delta < 0) {
+ // FIXME: if we added an extra label to YarrOp, we could avoid needing to
+ // subtract delta back out, and reduce this code. Should performance test
+ // the benefit of this.
+ Jump fail = jumpIfNoAvailableInput();
+ sub32(Imm32(delta), index);
+ jump(nextOp->m_reentry);
+ fail.link(this);
+ }
+ prevOp = nextOp;
+ nextOp = &m_ops[nextOp->m_nextOp];
+ }
- // If we get here, we matched! If the index advanced then try to match more since limit isn't supported yet.
- branch32(NotEqual, index, Address(stackPointerRegister, (parenthesesTerm.frameLocation * sizeof(void*))), matchAgain);
+ // We fall through to here if there is insufficient input to run the last alternative.
- // If we get here we matched, but we matched "" - cannot accept this alternative as is, so either backtrack,
- // or fall through to try the next alternative if no backtrack is available.
- parenthesesState.plantJumpToBacktrackIfExists(this);
+ // If there is insufficient input to run the last alternative, then for 'once through'
+ // alternatives we are done - just jump back up into the forwards matching path at the End.
+ if (onceThrough) {
+ op.m_jumps.linkTo(endOp.m_reentry, this);
+ jump(endOp.m_reentry);
+ break;
+ }
- parenthesesState.linkAlternativeBacktracks(this);
+ // For repeating alternatives, link any input check failure from the last alternative to
+ // this point.
+ op.m_jumps.link(this);
- // We get here if the alternative fails to match - fall through to the next iteration, or out of the loop.
+ bool needsToUpdateMatchStart = !m_pattern.m_body->m_hasFixedSize;
- if (countToCheck) {
- sub32(Imm32(countToCheck), index);
- parenthesesState.checkedTotal -= countToCheck;
- }
- }
+ // Check for cases where input position is already incremented by 1 for the last
+ // alternative (this is particularly useful where the minimum size of the body
+ // disjunction is 0, e.g. /a*|b/).
+ if (needsToUpdateMatchStart && alternative->m_minimumSize == 1) {
+ // index is already incremented by 1, so just store it now!
+ store32(index, Address(output));
+ needsToUpdateMatchStart = false;
+ }
- // If the last alternative falls through to here, we have a failed match...
- // Which means that we match whatever we have matched up to this point (even if nothing).
- }
+ // Check whether there is sufficient input to loop. Increment the input position by
+ // one, and check. Also add in the minimum disjunction size before checking - there
+ // is no point in looping if we're just going to fail all the input checks around
+ // the next iteration.
+ int deltaLastAlternativeToBodyMinimumPlusOne = (m_pattern.m_body->m_minimumSize + 1) - alternative->m_minimumSize;
+ if (deltaLastAlternativeToBodyMinimumPlusOne)
+ add32(Imm32(deltaLastAlternativeToBodyMinimumPlusOne), index);
+ Jump matchFailed = jumpIfNoAvailableInput();
+
+ if (needsToUpdateMatchStart) {
+ if (!m_pattern.m_body->m_minimumSize)
+ store32(index, Address(output));
+ else {
+ move(index, regT0);
+ sub32(Imm32(m_pattern.m_body->m_minimumSize), regT0);
+ store32(regT0, Address(output));
+ }
+ }
- void generateParentheticalAssertion(TermGenerationState& state)
- {
- PatternTerm& term = state.term();
- PatternDisjunction* disjunction = term.parentheses.disjunction;
- ASSERT(term.quantityCount == 1);
- ASSERT(term.quantityType == QuantifierFixedCount);
+ // Calculate how much more input the first alternative requires than the minimum
+ // for the body as a whole. If no more is needed then we dont need an additional
+ // input check here - jump straight back up to the start of the first alternative.
+ int deltaBodyMinimumToFirstAlternative = beginOp->m_alternative->m_minimumSize - m_pattern.m_body->m_minimumSize;
+ if (!deltaBodyMinimumToFirstAlternative)
+ jump(beginOp->m_reentry);
+ else {
+ add32(Imm32(deltaBodyMinimumToFirstAlternative), index);
+ checkInput().linkTo(beginOp->m_reentry, this);
+ jump(firstInputCheckFailed);
+ }
- unsigned parenthesesFrameLocation = term.frameLocation;
- unsigned alternativeFrameLocation = parenthesesFrameLocation + YarrStackSpaceForBackTrackInfoParentheticalAssertion;
+ // We jump to here if we iterate to the point that there is insufficient input to
+ // run any matches, and need to return a failure state from JIT code.
+ matchFailed.link(this);
- int countCheckedAfterAssertion = state.checkedTotal - term.inputPosition;
+ if (m_pattern.m_body->m_callFrameSize)
+ addPtr(Imm32(m_pattern.m_body->m_callFrameSize * sizeof(void*)), stackPointerRegister);
+ move(TrustedImm32(-1), returnRegister);
+ generateReturn();
+ break;
+ }
+ case OpBodyAlternativeEnd: {
+ // We should never backtrack back into a body disjunction.
+ ASSERT(m_backtrackingState.isEmpty());
- if (term.invert()) {
- // Inverted case
- storeToFrame(index, parenthesesFrameLocation);
+ PatternAlternative* priorAlternative = m_ops[op.m_previousOp].m_alternative;
+ m_checked += priorAlternative->m_minimumSize;
+ break;
+ }
- state.checkedTotal -= countCheckedAfterAssertion;
- if (countCheckedAfterAssertion)
- sub32(Imm32(countCheckedAfterAssertion), index);
+ // OpSimpleNestedAlternativeBegin/Next/End
+ // OpNestedAlternativeBegin/Next/End
+ //
+ // Generate code for when we backtrack back out of an alternative into
+ // a Begin or Next node, or when the entry input count check fails. If
+ // there are more alternatives we need to jump to the next alternative,
+ // if not we backtrack back out of the current set of parentheses.
+ //
+ // In the case of non-simple nested assertions we need to also link the
+ // 'return address' appropriately to backtrack back out into the correct
+ // alternative.
+ case OpSimpleNestedAlternativeBegin:
+ case OpSimpleNestedAlternativeNext:
+ case OpNestedAlternativeBegin:
+ case OpNestedAlternativeNext: {
+ YarrOp& nextOp = m_ops[op.m_nextOp];
+ bool isBegin = op.m_previousOp == notFound;
+ bool isLastAlternative = nextOp.m_nextOp == notFound;
+ ASSERT(isBegin == (op.m_op == OpSimpleNestedAlternativeBegin || op.m_op == OpNestedAlternativeBegin));
+ ASSERT(isLastAlternative == (nextOp.m_op == OpSimpleNestedAlternativeEnd || nextOp.m_op == OpNestedAlternativeEnd));
+
+ // Treat an input check failure the same as a failed match.
+ m_backtrackingState.append(op.m_jumps);
+
+ // Set the backtracks to jump to the appropriate place. We may need
+ // to link the backtracks in one of three different way depending on
+ // the type of alternative we are dealing with:
+ // - A single alternative, with no simplings.
+ // - The last alternative of a set of two or more.
+ // - An alternative other than the last of a set of two or more.
+ //
+ // In the case of a single alternative on its own, we don't need to
+ // jump anywhere - if the alternative fails to match we can just
+ // continue to backtrack out of the parentheses without jumping.
+ //
+ // In the case of the last alternative in a set of more than one, we
+ // need to jump to return back out to the beginning. We'll do so by
+ // adding a jump to the End node's m_jumps list, and linking this
+ // when we come to generate the Begin node. For alternatives other
+ // than the last, we need to jump to the next alternative.
+ //
+ // If the alternative had adjusted the input position we must link
+ // backtracking to here, correct, and then jump on. If not we can
+ // link the backtracks directly to their destination.
+ if (op.m_checkAdjust) {
+ // Handle the cases where we need to link the backtracks here.
+ m_backtrackingState.link(this);
+ sub32(Imm32(op.m_checkAdjust), index);
+ if (!isLastAlternative) {
+ // An alternative that is not the last should jump to its successor.
+ jump(nextOp.m_reentry);
+ } else if (!isBegin) {
+ // The last of more than one alternatives must jump back to the begnning.
+ nextOp.m_jumps.append(jump());
+ } else {
+ // A single alternative on its own can fall through.
+ m_backtrackingState.fallthrough();
+ }
+ } else {
+ // Handle the cases where we can link the backtracks directly to their destinations.
+ if (!isLastAlternative) {
+ // An alternative that is not the last should jump to its successor.
+ m_backtrackingState.linkTo(nextOp.m_reentry, this);
+ } else if (!isBegin) {
+ // The last of more than one alternatives must jump back to the begnning.
+ m_backtrackingState.takeBacktracksToJumpList(nextOp.m_jumps, this);
+ }
+ // In the case of a single alternative on its own do nothing - it can fall through.
+ }
- TermGenerationState parenthesesState(disjunction, state.checkedTotal);
- generateParenthesesDisjunction(state.term(), parenthesesState, alternativeFrameLocation);
- // Success! - which means - Fail!
- loadFromFrame(parenthesesFrameLocation, index);
- state.jumpToBacktrack(this);
+ // At this point we've handled the backtracking back into this node.
+ // Now link any backtracks that need to jump to here.
+
+ // For non-simple alternatives, link the alternative's 'return address'
+ // so that we backtrack back out into the previous alternative.
+ if (op.m_op == OpNestedAlternativeNext)
+ m_backtrackingState.append(op.m_returnAddress);
+
+ // If there is more than one alternative, then the last alternative will
+ // have planted a jump to be linked to the end. This jump was added to the
+ // End node's m_jumps list. If we are back at the beginning, link it here.
+ if (isBegin) {
+ YarrOp* endOp = &m_ops[op.m_nextOp];
+ while (endOp->m_nextOp != notFound) {
+ ASSERT(endOp->m_op == OpSimpleNestedAlternativeNext || endOp->m_op == OpNestedAlternativeNext);
+ endOp = &m_ops[endOp->m_nextOp];
+ }
+ ASSERT(endOp->m_op == OpSimpleNestedAlternativeEnd || endOp->m_op == OpNestedAlternativeEnd);
+ m_backtrackingState.append(endOp->m_jumps);
+ }
- // And fail means success.
- parenthesesState.linkAlternativeBacktracks(this);
+ if (!isBegin) {
+ YarrOp& lastOp = m_ops[op.m_previousOp];
+ m_checked += lastOp.m_checkAdjust;
+ }
+ m_checked -= op.m_checkAdjust;
+ break;
+ }
+ case OpSimpleNestedAlternativeEnd:
+ case OpNestedAlternativeEnd: {
+ PatternTerm* term = op.m_term;
+
+ // If we backtrack into the end of a simple subpattern do nothing;
+ // just continue through into the last alternative. If we backtrack
+ // into the end of a non-simple set of alterntives we need to jump
+ // to the backtracking return address set up during generation.
+ if (op.m_op == OpNestedAlternativeEnd) {
+ m_backtrackingState.link(this);
+
+ // Plant a jump to the return address.
+ unsigned parenthesesFrameLocation = term->frameLocation;
+ unsigned alternativeFrameLocation = parenthesesFrameLocation;
+ if (term->quantityType != QuantifierFixedCount)
+ alternativeFrameLocation += YarrStackSpaceForBackTrackInfoParenthesesOnce;
+ loadFromFrameAndJump(alternativeFrameLocation);
+
+ // Link the DataLabelPtr associated with the end of the last
+ // alternative to this point.
+ m_backtrackingState.append(op.m_returnAddress);
+ }
- loadFromFrame(parenthesesFrameLocation, index);
+ YarrOp& lastOp = m_ops[op.m_previousOp];
+ m_checked += lastOp.m_checkAdjust;
+ break;
+ }
- state.checkedTotal += countCheckedAfterAssertion;
- } else {
- // Normal case
- storeToFrame(index, parenthesesFrameLocation);
+ // OpParenthesesSubpatternOnceBegin/End
+ //
+ // When we are backtracking back out of a capturing subpattern we need
+ // to clear the start index in the matches output array, to record that
+ // this subpattern has not been captured.
+ //
+ // When backtracking back out of a Greedy quantified subpattern we need
+ // to catch this, and try running the remainder of the alternative after
+ // the subpattern again, skipping the parentheses.
+ //
+ // Upon backtracking back into a quantified set of parentheses we need to
+ // check whether we were currently skipping the subpattern. If not, we
+ // can backtrack into them, if we were we need to either backtrack back
+ // out of the start of the parentheses, or jump back to the forwards
+ // matching start, depending of whether the match is Greedy or NonGreedy.
+ case OpParenthesesSubpatternOnceBegin: {
+ PatternTerm* term = op.m_term;
+ ASSERT(term->quantityCount == 1);
+
+ // We only need to backtrack to thispoint if capturing or greedy.
+ if (term->capture() || term->quantityType == QuantifierGreedy) {
+ m_backtrackingState.link(this);
+
+ // If capturing, clear the capture (we only need to reset start).
+ if (term->capture())
+ store32(TrustedImm32(-1), Address(output, (term->parentheses.subpatternId << 1) * sizeof(int)));
+
+ // If Greedy, jump to the end.
+ if (term->quantityType == QuantifierGreedy) {
+ // Clear the flag in the stackframe indicating we ran through the subpattern.
+ unsigned parenthesesFrameLocation = term->frameLocation;
+ storeToFrame(TrustedImm32(-1), parenthesesFrameLocation);
+ // Jump to after the parentheses, skipping the subpattern.
+ jump(m_ops[op.m_nextOp].m_reentry);
+ // A backtrack from after the parentheses, when skipping the subpattern,
+ // will jump back to here.
+ op.m_jumps.link(this);
+ }
- state.checkedTotal -= countCheckedAfterAssertion;
- if (countCheckedAfterAssertion)
- sub32(Imm32(countCheckedAfterAssertion), index);
+ m_backtrackingState.fallthrough();
+ }
+ break;
+ }
+ case OpParenthesesSubpatternOnceEnd: {
+ PatternTerm* term = op.m_term;
+
+ if (term->quantityType != QuantifierFixedCount) {
+ m_backtrackingState.link(this);
+
+ // Check whether we should backtrack back into the parentheses, or if we
+ // are currently in a state where we had skipped over the subpattern
+ // (in which case the flag value on the stack will be -1).
+ unsigned parenthesesFrameLocation = term->frameLocation;
+ Jump hadSkipped = branch32(Equal, Address(stackPointerRegister, parenthesesFrameLocation * sizeof(void*)), TrustedImm32(-1));
+
+ if (term->quantityType == QuantifierGreedy) {
+ // For Greedy parentheses, we skip after having already tried going
+ // through the subpattern, so if we get here we're done.
+ YarrOp& beginOp = m_ops[op.m_previousOp];
+ beginOp.m_jumps.append(hadSkipped);
+ } else {
+ // For NonGreedy parentheses, we try skipping the subpattern first,
+ // so if we get here we need to try running through the subpattern
+ // next. Jump back to the start of the parentheses in the forwards
+ // matching path.
+ ASSERT(term->quantityType == QuantifierNonGreedy);
+ YarrOp& beginOp = m_ops[op.m_previousOp];
+ hadSkipped.linkTo(beginOp.m_reentry, this);
+ }
- TermGenerationState parenthesesState(disjunction, state.checkedTotal);
- generateParenthesesDisjunction(state.term(), parenthesesState, alternativeFrameLocation);
- // Success! - which means - Success!
- loadFromFrame(parenthesesFrameLocation, index);
- Jump success = jump();
+ m_backtrackingState.fallthrough();
+ }
- parenthesesState.linkAlternativeBacktracks(this);
+ m_backtrackingState.append(op.m_jumps);
+ break;
+ }
- loadFromFrame(parenthesesFrameLocation, index);
- state.jumpToBacktrack(this);
+ // OpParenthesesSubpatternTerminalBegin/End
+ //
+ // Terminal subpatterns will always match - there is nothing after them to
+ // force a backtrack, and they have a minimum count of 0, and as such will
+ // always produce an acceptable result.
+ case OpParenthesesSubpatternTerminalBegin: {
+ // We will backtrack to this point once the subpattern cannot match any
+ // more. Since no match is accepted as a successful match (we are Greedy
+ // quantified with a minimum of zero) jump back to the forwards matching
+ // path at the end.
+ YarrOp& endOp = m_ops[op.m_nextOp];
+ m_backtrackingState.linkTo(endOp.m_reentry, this);
+ break;
+ }
+ case OpParenthesesSubpatternTerminalEnd:
+ // We should never be backtracking to here (hence the 'terminal' in the name).
+ ASSERT(m_backtrackingState.isEmpty());
+ m_backtrackingState.append(op.m_jumps);
+ break;
- success.link(this);
+ // OpParentheticalAssertionBegin/End
+ case OpParentheticalAssertionBegin: {
+ PatternTerm* term = op.m_term;
+ YarrOp& endOp = m_ops[op.m_nextOp];
- state.checkedTotal += countCheckedAfterAssertion;
- }
- }
+ // We need to handle the backtracks upon backtracking back out
+ // of a parenthetical assertion if either we need to correct
+ // the input index, or the assertion was inverted.
+ if (op.m_checkAdjust || term->invert()) {
+ m_backtrackingState.link(this);
- void generateTerm(TermGenerationState& state)
- {
- PatternTerm& term = state.term();
+ if (op.m_checkAdjust)
+ add32(Imm32(op.m_checkAdjust), index);
- switch (term.type) {
- case PatternTerm::TypeAssertionBOL:
- generateAssertionBOL(state);
- break;
+ // In an inverted assertion failure to match the subpattern
+ // is treated as a successful match - jump to the end of the
+ // subpattern. We already have adjusted the input position
+ // back to that before the assertion, which is correct.
+ if (term->invert())
+ jump(endOp.m_reentry);
- case PatternTerm::TypeAssertionEOL:
- generateAssertionEOL(state);
- break;
+ m_backtrackingState.fallthrough();
+ }
- case PatternTerm::TypeAssertionWordBoundary:
- generateAssertionWordBoundary(state);
- break;
+ // The End node's jump list will contain any backtracks into
+ // the end of the assertion. Also, if inverted, we will have
+ // added the failure caused by a successful match to this.
+ m_backtrackingState.append(endOp.m_jumps);
- case PatternTerm::TypePatternCharacter:
- switch (term.quantityType) {
- case QuantifierFixedCount:
- if (term.quantityCount == 1) {
- if (state.isSinglePatternCharacterLookaheadTerm() && (state.lookaheadTerm().inputPosition == (term.inputPosition + 1))) {
- generatePatternCharacterPair(state);
- state.nextTerm();
- } else
- generatePatternCharacterSingle(state);
- } else
- generatePatternCharacterFixed(state);
- break;
- case QuantifierGreedy:
- generatePatternCharacterGreedy(state);
- break;
- case QuantifierNonGreedy:
- generatePatternCharacterNonGreedy(state);
+ m_checked += op.m_checkAdjust;
break;
}
- break;
+ case OpParentheticalAssertionEnd: {
+ // FIXME: We should really be clearing any nested subpattern
+ // matches on bailing out from after the pattern. Firefox has
+ // this bug too (presumably because they use YARR!)
- case PatternTerm::TypeCharacterClass:
- switch (term.quantityType) {
- case QuantifierFixedCount:
- if (term.quantityCount == 1)
- generateCharacterClassSingle(state);
- else
- generateCharacterClassFixed(state);
- break;
- case QuantifierGreedy:
- generateCharacterClassGreedy(state);
- break;
- case QuantifierNonGreedy:
- generateCharacterClassNonGreedy(state);
+ // Never backtrack into an assertion; later failures bail to before the begin.
+ m_backtrackingState.takeBacktracksToJumpList(op.m_jumps, this);
+
+ YarrOp& lastOp = m_ops[op.m_previousOp];
+ m_checked -= lastOp.m_checkAdjust;
break;
}
- break;
- case PatternTerm::TypeBackReference:
- m_shouldFallBack = true;
- break;
-
- case PatternTerm::TypeForwardReference:
- break;
-
- case PatternTerm::TypeParenthesesSubpattern:
- if (term.quantityCount == 1 && !term.parentheses.isCopy)
- generateParenthesesSingle(state);
- else if (term.parentheses.isTerminal)
- generateParenthesesGreedyNoBacktrack(state);
- else
- m_shouldFallBack = true;
- break;
+ case OpMatchFailed:
+ break;
+ }
- case PatternTerm::TypeParentheticalAssertion:
- generateParentheticalAssertion(state);
- break;
- }
+ } while (opIndex);
}
- void generateDisjunction(PatternDisjunction* disjunction)
+ // Compilation methods:
+ // ====================
+
+ // opCompileParenthesesSubpattern
+ // Emits ops for a subpattern (set of parentheses). These consist
+ // of a set of alternatives wrapped in an outer set of nodes for
+ // the parentheses.
+ // Supported types of parentheses are 'Once' (quantityCount == 1)
+ // and 'Terminal' (non-capturing parentheses quantified as greedy
+ // and infinite).
+ // Alternatives will use the 'Simple' set of ops if either the
+ // subpattern is terminal (in which case we will never need to
+ // backtrack), or if the subpattern only contains one alternative.
+ void opCompileParenthesesSubpattern(PatternTerm* term)
{
- TermGenerationState state(disjunction, 0);
- state.resetAlternative();
-
- // check availability for the next alternative
- int countCheckedForCurrentAlternative = 0;
- int countToCheckForFirstAlternative = 0;
- bool hasShorterAlternatives = false;
- bool setRepeatAlternativeLabels = false;
- JumpList notEnoughInputForPreviousAlternative;
- Label firstAlternative;
- Label firstAlternativeInputChecked;
-
- // The label 'firstAlternative' is used to plant a check to see if there is
- // sufficient input available to run the first repeating alternative.
- // The label 'firstAlternativeInputChecked' will jump directly to matching
- // the first repeating alternative having skipped this check.
-
- if (state.alternativeValid()) {
- PatternAlternative* alternative = state.alternative();
- if (!alternative->onceThrough()) {
- firstAlternative = Label(this);
- setRepeatAlternativeLabels = true;
+ YarrOpCode parenthesesBeginOpCode;
+ YarrOpCode parenthesesEndOpCode;
+ YarrOpCode alternativeBeginOpCode = OpSimpleNestedAlternativeBegin;
+ YarrOpCode alternativeNextOpCode = OpSimpleNestedAlternativeNext;
+ YarrOpCode alternativeEndOpCode = OpSimpleNestedAlternativeEnd;
+
+ // We can currently only compile quantity 1 subpatterns that are
+ // not copies. We generate a copy in the case of a range quantifier,
+ // e.g. /(?:x){3,9}/, or /(?:x)+/ (These are effectively expanded to
+ // /(?:x){3,3}(?:x){0,6}/ and /(?:x)(?:x)*/ repectively). The problem
+ // comes where the subpattern is capturing, in which case we would
+ // need to restore the capture from the first subpattern upon a
+ // failure in the second.
+ if (term->quantityCount == 1 && !term->parentheses.isCopy) {
+ // Select the 'Once' nodes.
+ parenthesesBeginOpCode = OpParenthesesSubpatternOnceBegin;
+ parenthesesEndOpCode = OpParenthesesSubpatternOnceEnd;
+
+ // If there is more than one alternative we cannot use the 'simple' nodes.
+ if (term->parentheses.disjunction->m_alternatives.size() != 1) {
+ alternativeBeginOpCode = OpNestedAlternativeBegin;
+ alternativeNextOpCode = OpNestedAlternativeNext;
+ alternativeEndOpCode = OpNestedAlternativeEnd;
}
- countToCheckForFirstAlternative = alternative->m_minimumSize;
- state.checkedTotal += countToCheckForFirstAlternative;
- if (countToCheckForFirstAlternative)
- notEnoughInputForPreviousAlternative.append(jumpIfNoAvailableInput(countToCheckForFirstAlternative));
- countCheckedForCurrentAlternative = countToCheckForFirstAlternative;
+ } else if (term->parentheses.isTerminal) {
+ // Select the 'Terminal' nodes.
+ parenthesesBeginOpCode = OpParenthesesSubpatternTerminalBegin;
+ parenthesesEndOpCode = OpParenthesesSubpatternTerminalEnd;
+ } else {
+ // This subpattern is not supported by the JIT.
+ m_shouldFallBack = true;
+ return;
}
- if (setRepeatAlternativeLabels)
- firstAlternativeInputChecked = Label(this);
-
- while (state.alternativeValid()) {
- PatternAlternative* alternative = state.alternative();
- optimizeAlternative(alternative);
+ size_t parenBegin = m_ops.size();
+ m_ops.append(parenthesesBeginOpCode);
- // Track whether any alternatives are shorter than the first one.
- if (!alternative->onceThrough())
- hasShorterAlternatives = hasShorterAlternatives || (countCheckedForCurrentAlternative < countToCheckForFirstAlternative);
+ m_ops.append(alternativeBeginOpCode);
+ m_ops.last().m_previousOp = notFound;
+ m_ops.last().m_term = term;
+ Vector<PatternAlternative*>& alternatives = term->parentheses.disjunction->m_alternatives;
+ for (unsigned i = 0; i < alternatives.size(); ++i) {
+ size_t lastOpIndex = m_ops.size() - 1;
- for (state.resetTerm(); state.termValid(); state.nextTerm())
- generateTerm(state);
+ PatternAlternative* nestedAlternative = alternatives[i];
+ opCompileAlternative(nestedAlternative);
- // If we get here, the alternative matched.
- if (m_pattern.m_body->m_callFrameSize)
- addPtr(Imm32(m_pattern.m_body->m_callFrameSize * sizeof(void*)), stackPointerRegister);
+ size_t thisOpIndex = m_ops.size();
+ m_ops.append(YarrOp(alternativeNextOpCode));
- ASSERT(index != returnRegister);
- if (m_pattern.m_body->m_hasFixedSize) {
- move(index, returnRegister);
- if (alternative->m_minimumSize)
- sub32(Imm32(alternative->m_minimumSize), returnRegister);
-
- store32(returnRegister, output);
- } else
- load32(Address(output), returnRegister);
+ YarrOp& lastOp = m_ops[lastOpIndex];
+ YarrOp& thisOp = m_ops[thisOpIndex];
- store32(index, Address(output, 4));
-
- generateReturn();
-
- state.nextAlternative();
- if (alternative->onceThrough() && state.alternativeValid())
- state.clearBacktrack();
-
- // if there are any more alternatives, plant the check for input before looping.
- if (state.alternativeValid()) {
- state.setJumpListToPriorParen(0);
- PatternAlternative* nextAlternative = state.alternative();
- if (!setRepeatAlternativeLabels && !nextAlternative->onceThrough()) {
- // We have handled non-repeating alternatives, jump to next iteration
- // and loop over repeating alternatives.
- state.jumpToBacktrack(this);
-
- countToCheckForFirstAlternative = nextAlternative->m_minimumSize;
+ lastOp.m_alternative = nestedAlternative;
+ lastOp.m_nextOp = thisOpIndex;
+ thisOp.m_previousOp = lastOpIndex;
+ thisOp.m_term = term;
+ }
+ YarrOp& lastOp = m_ops.last();
+ ASSERT(lastOp.m_op == alternativeNextOpCode);
+ lastOp.m_op = alternativeEndOpCode;
+ lastOp.m_alternative = 0;
+ lastOp.m_nextOp = notFound;
- // If we get here, there the last input checked failed.
- notEnoughInputForPreviousAlternative.link(this);
+ size_t parenEnd = m_ops.size();
+ m_ops.append(parenthesesEndOpCode);
- state.linkAlternativeBacktracks(this);
+ m_ops[parenBegin].m_term = term;
+ m_ops[parenBegin].m_previousOp = notFound;
+ m_ops[parenBegin].m_nextOp = parenEnd;
+ m_ops[parenEnd].m_term = term;
+ m_ops[parenEnd].m_previousOp = parenBegin;
+ m_ops[parenEnd].m_nextOp = notFound;
+ }
- // Back up to start the looping alternatives.
- if (countCheckedForCurrentAlternative)
- sub32(Imm32(countCheckedForCurrentAlternative), index);
+ // opCompileParentheticalAssertion
+ // Emits ops for a parenthetical assertion. These consist of an
+ // OpSimpleNestedAlternativeBegin/Next/End set of nodes wrapping
+ // the alternatives, with these wrapped by an outer pair of
+ // OpParentheticalAssertionBegin/End nodes.
+ // We can always use the OpSimpleNestedAlternative nodes in the
+ // case of parenthetical assertions since these only ever match
+ // once, and will never backtrack back into the assertion.
+ void opCompileParentheticalAssertion(PatternTerm* term)
+ {
+ size_t parenBegin = m_ops.size();
+ m_ops.append(OpParentheticalAssertionBegin);
+
+ m_ops.append(OpSimpleNestedAlternativeBegin);
+ m_ops.last().m_previousOp = notFound;
+ m_ops.last().m_term = term;
+ Vector<PatternAlternative*>& alternatives = term->parentheses.disjunction->m_alternatives;
+ for (unsigned i = 0; i < alternatives.size(); ++i) {
+ size_t lastOpIndex = m_ops.size() - 1;
+
+ PatternAlternative* nestedAlternative = alternatives[i];
+ opCompileAlternative(nestedAlternative);
+
+ size_t thisOpIndex = m_ops.size();
+ m_ops.append(YarrOp(OpSimpleNestedAlternativeNext));
+
+ YarrOp& lastOp = m_ops[lastOpIndex];
+ YarrOp& thisOp = m_ops[thisOpIndex];
+
+ lastOp.m_alternative = nestedAlternative;
+ lastOp.m_nextOp = thisOpIndex;
+ thisOp.m_previousOp = lastOpIndex;
+ thisOp.m_term = term;
+ }
+ YarrOp& lastOp = m_ops.last();
+ ASSERT(lastOp.m_op == OpSimpleNestedAlternativeNext);
+ lastOp.m_op = OpSimpleNestedAlternativeEnd;
+ lastOp.m_alternative = 0;
+ lastOp.m_nextOp = notFound;
+
+ size_t parenEnd = m_ops.size();
+ m_ops.append(OpParentheticalAssertionEnd);
+
+ m_ops[parenBegin].m_term = term;
+ m_ops[parenBegin].m_previousOp = notFound;
+ m_ops[parenBegin].m_nextOp = parenEnd;
+ m_ops[parenEnd].m_term = term;
+ m_ops[parenEnd].m_previousOp = parenBegin;
+ m_ops[parenEnd].m_nextOp = notFound;
+ }
- firstAlternative = Label(this);
+ // opCompileAlternative
+ // Called to emit nodes for all terms in an alternative.
+ void opCompileAlternative(PatternAlternative* alternative)
+ {
+ optimizeAlternative(alternative);
- state.checkedTotal = countToCheckForFirstAlternative;
- if (countToCheckForFirstAlternative)
- notEnoughInputForPreviousAlternative.append(jumpIfNoAvailableInput(countToCheckForFirstAlternative));
+ for (unsigned i = 0; i < alternative->m_terms.size(); ++i) {
+ PatternTerm* term = &alternative->m_terms[i];
- countCheckedForCurrentAlternative = countToCheckForFirstAlternative;
+ switch (term->type) {
+ case PatternTerm::TypeParenthesesSubpattern:
+ opCompileParenthesesSubpattern(term);
+ break;
- firstAlternativeInputChecked = Label(this);
+ case PatternTerm::TypeParentheticalAssertion:
+ opCompileParentheticalAssertion(term);
+ break;
- setRepeatAlternativeLabels = true;
- } else {
- int countToCheckForNextAlternative = nextAlternative->m_minimumSize;
-
- if (countCheckedForCurrentAlternative > countToCheckForNextAlternative) { // CASE 1: current alternative was longer than the next one.
- // If we get here, then the last input checked failed.
- notEnoughInputForPreviousAlternative.link(this);
-
- // Check if sufficent input available to run the next alternative
- notEnoughInputForPreviousAlternative.append(jumpIfNoAvailableInput(countToCheckForNextAlternative - countCheckedForCurrentAlternative));
- // We are now in the correct state to enter the next alternative; this add is only required
- // to mirror and revert operation of the sub32, just below.
- add32(Imm32(countCheckedForCurrentAlternative - countToCheckForNextAlternative), index);
-
- // If we get here, then the last input checked passed.
- state.linkAlternativeBacktracks(this);
-
- // No need to check if we can run the next alternative, since it is shorter -
- // just update index.
- sub32(Imm32(countCheckedForCurrentAlternative - countToCheckForNextAlternative), index);
- } else if (countCheckedForCurrentAlternative < countToCheckForNextAlternative) { // CASE 2: next alternative is longer than the current one.
- // If we get here, then the last input checked failed.
- // If there is insufficient input to run the current alternative, and the next alternative is longer,
- // then there is definitely not enough input to run it - don't even check. Just adjust index, as if
- // we had checked.
- notEnoughInputForPreviousAlternative.link(this);
- add32(Imm32(countToCheckForNextAlternative - countCheckedForCurrentAlternative), index);
- notEnoughInputForPreviousAlternative.append(jump());
-
- // The next alternative is longer than the current one; check the difference.
- state.linkAlternativeBacktracks(this);
-
- notEnoughInputForPreviousAlternative.append(jumpIfNoAvailableInput(countToCheckForNextAlternative - countCheckedForCurrentAlternative));
- } else { // CASE 3: Both alternatives are the same length.
- ASSERT(countCheckedForCurrentAlternative == countToCheckForNextAlternative);
-
- // If the next alterative is the same length as this one, then no need to check the input -
- // if there was sufficent input to run the current alternative then there is sufficient
- // input to run the next one; if not, there isn't.
- state.linkAlternativeBacktracks(this);
- }
- state.checkedTotal -= countCheckedForCurrentAlternative;
- countCheckedForCurrentAlternative = countToCheckForNextAlternative;
- state.checkedTotal += countCheckedForCurrentAlternative;
- }
+ default:
+ m_ops.append(term);
}
}
+ }
- // If we get here, all Alternatives failed...
+ // opCompileBody
+ // This method compiles the body disjunction of the regular expression.
+ // The body consists of two sets of alternatives - zero or more 'once
+ // through' (BOL anchored) alternatives, followed by zero or more
+ // repeated alternatives.
+ // For each of these two sets of alteratives, if not empty they will be
+ // wrapped in a set of OpBodyAlternativeBegin/Next/End nodes (with the
+ // 'begin' node referencing the first alternative, and 'next' nodes
+ // referencing any further alternatives. The begin/next/end nodes are
+ // linked together in a doubly linked list. In the case of repeating
+ // alternatives, the end node is also linked back to the beginning.
+ // If no repeating alternatives exist, then a OpMatchFailed node exists
+ // to return the failing result.
+ void opCompileBody(PatternDisjunction* disjunction)
+ {
+ Vector<PatternAlternative*>& alternatives = disjunction->m_alternatives;
+ size_t currentAlternativeIndex = 0;
- state.checkedTotal -= countCheckedForCurrentAlternative;
+ // Emit the 'once through' alternatives.
+ if (alternatives.size() && alternatives[0]->onceThrough()) {
+ m_ops.append(YarrOp(OpBodyAlternativeBegin));
+ m_ops.last().m_previousOp = notFound;
- if (!setRepeatAlternativeLabels) {
- // If there are no alternatives that need repeating (all are marked 'onceThrough') then just link
- // the match failures to this point, and fall through to the return below.
- state.linkAlternativeBacktracks(this, true);
+ do {
+ size_t lastOpIndex = m_ops.size() - 1;
+ PatternAlternative* alternative = alternatives[currentAlternativeIndex];
+ opCompileAlternative(alternative);
- notEnoughInputForPreviousAlternative.link(this);
- } else {
- // How much more input need there be to be able to retry from the first alternative?
- // examples:
- // /yarr_jit/ or /wrec|pcre/
- // In these examples we need check for one more input before looping.
- // /yarr_jit|pcre/
- // In this case we need check for 5 more input to loop (+4 to allow for the first alterative
- // being four longer than the last alternative checked, and another +1 to effectively move
- // the start position along by one).
- // /yarr|rules/ or /wrec|notsomuch/
- // In these examples, provided that there was sufficient input to have just been matching for
- // the second alternative we can loop without checking for available input (since the second
- // alternative is longer than the first). In the latter example we need to decrement index
- // (by 4) so the start position is only progressed by 1 from the last iteration.
- int incrementForNextIter = (countToCheckForFirstAlternative - countCheckedForCurrentAlternative) + 1;
-
- // First, deal with the cases where there was sufficient input to try the last alternative.
- if (incrementForNextIter > 0) // We need to check for more input anyway, fall through to the checking below.
- state.linkAlternativeBacktracks(this, true);
- else if (m_pattern.m_body->m_hasFixedSize && !incrementForNextIter) // No need to update anything, link these backtracks straight to the to pof the loop!
- state.linkAlternativeBacktracksTo(this, firstAlternativeInputChecked, true);
- else { // no need to check the input, but we do have some bookkeeping to do first.
- state.linkAlternativeBacktracks(this, true);
-
- // Where necessary update our preserved start position.
- if (!m_pattern.m_body->m_hasFixedSize) {
- move(index, regT0);
- sub32(Imm32(countCheckedForCurrentAlternative - 1), regT0);
- store32(regT0, Address(output));
- }
+ size_t thisOpIndex = m_ops.size();
+ m_ops.append(YarrOp(OpBodyAlternativeNext));
- // Update index if necessary, and loop (without checking).
- if (incrementForNextIter)
- add32(Imm32(incrementForNextIter), index);
- jump().linkTo(firstAlternativeInputChecked, this);
- }
+ YarrOp& lastOp = m_ops[lastOpIndex];
+ YarrOp& thisOp = m_ops[thisOpIndex];
- notEnoughInputForPreviousAlternative.link(this);
- // Update our idea of the start position, if we're tracking this.
- if (!m_pattern.m_body->m_hasFixedSize) {
- if (countCheckedForCurrentAlternative - 1) {
- move(index, regT0);
- sub32(Imm32(countCheckedForCurrentAlternative - 1), regT0);
- store32(regT0, Address(output));
- } else
- store32(index, Address(output));
- }
+ lastOp.m_alternative = alternative;
+ lastOp.m_nextOp = thisOpIndex;
+ thisOp.m_previousOp = lastOpIndex;
+
+ ++currentAlternativeIndex;
+ } while (currentAlternativeIndex < alternatives.size() && alternatives[currentAlternativeIndex]->onceThrough());
- // Check if there is sufficent input to run the first alternative again.
- jumpIfAvailableInput(incrementForNextIter).linkTo(firstAlternativeInputChecked, this);
- // No - insufficent input to run the first alteranative, are there any other alternatives we
- // might need to check? If so, the last check will have left the index incremented by
- // (countToCheckForFirstAlternative + 1), so we need test whether countToCheckForFirstAlternative
- // LESS input is available, to have the effect of just progressing the start position by 1
- // from the last iteration. If this check passes we can just jump up to the check associated
- // with the first alternative in the loop. This is a bit sad, since we'll end up trying the
- // first alternative again, and this check will fail (otherwise the check planted just above
- // here would have passed). This is a bit sad, however it saves trying to do something more
- // complex here in compilation, and in the common case we should end up coallescing the checks.
- //
- // FIXME: a nice improvement here may be to stop trying to match sooner, based on the least
- // of the minimum-alternative-lengths. E.g. if I have two alternatives of length 200 and 150,
- // and a string of length 100, we'll end up looping index from 0 to 100, checking whether there
- // is sufficient input to run either alternative (constantly failing). If there had been only
- // one alternative, or if the shorter alternative had come first, we would have terminated
- // immediately. :-/
- if (hasShorterAlternatives)
- jumpIfAvailableInput(-countToCheckForFirstAlternative).linkTo(firstAlternative, this);
- // index will now be a bit garbled (depending on whether 'hasShorterAlternatives' is true,
- // it has either been incremented by 1 or by (countToCheckForFirstAlternative + 1) ...
- // but since we're about to return a failure this doesn't really matter!)
+ YarrOp& lastOp = m_ops.last();
+
+ ASSERT(lastOp.m_op == OpBodyAlternativeNext);
+ lastOp.m_op = OpBodyAlternativeEnd;
+ lastOp.m_alternative = 0;
+ lastOp.m_nextOp = notFound;
}
- if (m_pattern.m_body->m_callFrameSize)
- addPtr(Imm32(m_pattern.m_body->m_callFrameSize * sizeof(void*)), stackPointerRegister);
+ if (currentAlternativeIndex == alternatives.size()) {
+ m_ops.append(YarrOp(OpMatchFailed));
+ return;
+ }
- move(TrustedImm32(-1), returnRegister);
+ // Emit the repeated alternatives.
+ size_t repeatLoop = m_ops.size();
+ m_ops.append(YarrOp(OpBodyAlternativeBegin));
+ m_ops.last().m_previousOp = notFound;
+ do {
+ size_t lastOpIndex = m_ops.size() - 1;
+ PatternAlternative* alternative = alternatives[currentAlternativeIndex];
+ ASSERT(!alternative->onceThrough());
+ opCompileAlternative(alternative);
+
+ size_t thisOpIndex = m_ops.size();
+ m_ops.append(YarrOp(OpBodyAlternativeNext));
- generateReturn();
+ YarrOp& lastOp = m_ops[lastOpIndex];
+ YarrOp& thisOp = m_ops[thisOpIndex];
- m_expressionState.emitParenthesesTail(this);
- m_expressionState.emitIndirectJumpTable(this);
- m_expressionState.linkToNextIteration(this);
+ lastOp.m_alternative = alternative;
+ lastOp.m_nextOp = thisOpIndex;
+ thisOp.m_previousOp = lastOpIndex;
+
+ ++currentAlternativeIndex;
+ } while (currentAlternativeIndex < alternatives.size());
+ YarrOp& lastOp = m_ops.last();
+ ASSERT(lastOp.m_op == OpBodyAlternativeNext);
+ lastOp.m_op = OpBodyAlternativeEnd;
+ lastOp.m_alternative = 0;
+ lastOp.m_nextOp = repeatLoop;
}
void generateEnter()
@@ -2230,10 +2325,11 @@ public:
YarrGenerator(YarrPattern& pattern)
: m_pattern(pattern)
, m_shouldFallBack(false)
+ , m_checked(0)
{
}
- void generate()
+ void compile(JSGlobalData* globalData, YarrCodeBlock& jitObject)
{
generateEnter();
@@ -2243,26 +2339,50 @@ public:
if (m_pattern.m_body->m_callFrameSize)
subPtr(Imm32(m_pattern.m_body->m_callFrameSize * sizeof(void*)), stackPointerRegister);
- generateDisjunction(m_pattern.m_body);
- }
-
- void compile(JSGlobalData* globalData, YarrCodeBlock& jitObject)
- {
- generate();
+ // Compile the pattern to the internal 'YarrOp' representation.
+ opCompileBody(m_pattern.m_body);
- LinkBuffer patchBuffer(this, globalData->regexAllocator);
+ // If we encountered anything we can't handle in the JIT code
+ // (e.g. backreferences) then return early.
+ if (m_shouldFallBack) {
+ jitObject.setFallBack(true);
+ return;
+ }
- for (unsigned i = 0; i < m_expressionState.m_backtrackRecords.size(); ++i)
- patchBuffer.patch(m_expressionState.m_backtrackRecords[i].dataLabel, patchBuffer.locationOf(m_expressionState.m_backtrackRecords[i].backtrackLocation));
+ generate();
+ backtrack();
- jitObject.set(patchBuffer.finalizeCode());
+ // Link & finalize the code.
+ LinkBuffer linkBuffer(this, globalData->regexAllocator);
+ m_backtrackingState.linkDataLabels(linkBuffer);
+ jitObject.set(linkBuffer.finalizeCode());
jitObject.setFallBack(m_shouldFallBack);
}
private:
YarrPattern& m_pattern;
+
+ // Used to detect regular expression constructs that are not currently
+ // supported in the JIT; fall back to the interpreter when this is detected.
bool m_shouldFallBack;
- GenerationState m_expressionState;
+
+ // The regular expression expressed as a linear sequence of operations.
+ Vector<YarrOp, 128> m_ops;
+
+ // This records the current input offset being applied due to the current
+ // set of alternatives we are nested within. E.g. when matching the
+ // character 'b' within the regular expression /abc/, we will know that
+ // the minimum size for the alternative is 3, checked upon entry to the
+ // alternative, and that 'b' is at offset 1 from the start, and as such
+ // when matching 'b' we need to apply an offset of -2 to the load.
+ //
+ // FIXME: This should go away. Rather than tracking this value throughout
+ // code generation, we should gather this information up front & store it
+ // on the YarrOp structure.
+ int m_checked;
+
+ // This class records state whilst generating the backtracking path of code.
+ BacktrackingState m_backtrackingState;
};
void jitCompile(YarrPattern& pattern, JSGlobalData* globalData, YarrCodeBlock& jitObject)
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.cbproj b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.cbproj
index 285bb2a..95c3054 100644
--- a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.cbproj
+++ b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.cbproj
@@ -1,138 +1,138 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <ProjectGuid>{bca37a72-5b07-46cf-b44e-89f8e06451a2}</ProjectGuid>
- <Config Condition="'$(Config)'==''">Release</Config>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
- <Base>true</Base>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
- <Base>true</Base>
- <Cfg_1>true</Cfg_1>
- <CfgParent>Base</CfgParent>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
- <Base>true</Base>
- <Cfg_2>true</Cfg_2>
- <CfgParent>Base</CfgParent>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Base)'!=''">
- <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed>
- <OutputExt>lib</OutputExt>
- <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput>
- <Defines>NO_STRICT</Defines>
- <DynamicRTL>true</DynamicRTL>
- <UsePackages>true</UsePackages>
- <ProjectType>CppStaticLibrary</ProjectType>
- <BCC_CPPCompileAlways>true</BCC_CPPCompileAlways>
- <PackageImports>rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;dclZipForged11.bpi;vclZipForged11.bpi;GR32_BDS2006.bpi;GR32_DSGN_BDS2006.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi;CExceptionExpert11.bpi</PackageImports>
- <BCC_wpar>false</BCC_wpar>
- <IncludePath>$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</IncludePath>
- <AllPackageLibs>rtl.lib;vcl.lib</AllPackageLibs>
- <TLIB_PageSize>32</TLIB_PageSize>
- <ILINK_LibraryPath>$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</ILINK_LibraryPath>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Cfg_1)'!=''">
- <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed>
- <DCC_Optimize>false</DCC_Optimize>
- <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
- <Defines>_DEBUG;$(Defines)</Defines>
- <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo>
- <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion>
- <ILINK_DisableIncrementalLinking>true</ILINK_DisableIncrementalLinking>
- <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables>
- <DCC_Define>DEBUG</DCC_Define>
- <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers>
- <IntermediateOutputDir>Debug</IntermediateOutputDir>
- <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines>
- <BCC_StackFrames>true</BCC_StackFrames>
- <BCC_DisableOptimizations>true</BCC_DisableOptimizations>
- <ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
- <TASM_Debugging>Full</TASM_Debugging>
- <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Cfg_2)'!=''">
- <Defines>NDEBUG;$(Defines)</Defines>
- <IntermediateOutputDir>Release</IntermediateOutputDir>
- <ILINK_LibraryPath>$(BDS)\lib\release;$(ILINK_LibraryPath)</ILINK_LibraryPath>
- <TASM_Debugging>None</TASM_Debugging>
- </PropertyGroup>
- <ProjectExtensions>
- <Borland.Personality>CPlusPlusBuilder.Personality</Borland.Personality>
- <Borland.ProjectType>CppStaticLibrary</Borland.ProjectType>
- <BorlandProject>
-<BorlandProject><CPlusPlusBuilder.Personality><VersionInfo><VersionInfo Name="IncludeVerInfo">False</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1033</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Debugging><Debugging Name="DebugSourceDirs"></Debugging></Debugging><Parameters><Parameters Name="RunParams"></Parameters><Parameters Name="Launcher"></Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="DebugCWD"></Parameters><Parameters Name="HostApplication"></Parameters><Parameters Name="RemoteHost"></Parameters><Parameters Name="RemotePath"></Parameters><Parameters Name="RemoteParams"></Parameters><Parameters Name="RemoteLauncher"></Parameters><Parameters Name="UseRemoteLauncher">False</Parameters><Parameters Name="RemoteCWD"></Parameters><Parameters Name="RemoteDebug">False</Parameters><Parameters Name="Debug Symbols Search Path"></Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Excluded_Packages>
-
-
- <Excluded_Packages Name="$(BDS)\bin\bcboffice2k100.bpl">CodeGear C++Builder Office 2000 Servers Package</Excluded_Packages>
- <Excluded_Packages Name="$(BDS)\bin\bcbofficexp100.bpl">CodeGear C++Builder Office XP Servers Package</Excluded_Packages>
- </Excluded_Packages><Linker><Linker Name="LibPrefix"></Linker><Linker Name="LibSuffix"></Linker><Linker Name="LibVersion"></Linker></Linker><ProjectProperties><ProjectProperties Name="AutoShowDeps">False</ProjectProperties><ProjectProperties Name="ManagePaths">True</ProjectProperties><ProjectProperties Name="VerifyPackages">True</ProjectProperties></ProjectProperties><HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Count">3</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item0">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item1">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item2">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\src;..\include</HistoryLists_hlIncludePath></HistoryLists_hlIncludePath><HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Count">1</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item0">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</HistoryLists_hlILINK_LibraryPath></HistoryLists_hlILINK_LibraryPath><HistoryLists_hlDefines><HistoryLists_hlDefines Name="Count">1</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item0">NO_STRICT</HistoryLists_hlDefines></HistoryLists_hlDefines><HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Count">1</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item0">32</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item1">16</HistoryLists_hlTLIB_PageSize></HistoryLists_hlTLIB_PageSize></CPlusPlusBuilder.Personality></BorlandProject></BorlandProject>
- </ProjectExtensions>
- <Import Project="$(MSBuildBinPath)\Borland.Cpp.Targets" />
- <ItemGroup>
- <None Include="..\include\gtest\gtest-death-test.h">
- <BuildOrder>3</BuildOrder>
- </None>
- <None Include="..\include\gtest\gtest-message.h">
- <BuildOrder>4</BuildOrder>
- </None>
- <None Include="..\include\gtest\gtest-param-test.h">
- <BuildOrder>5</BuildOrder>
- </None>
- <None Include="..\include\gtest\gtest-spi.h">
- <BuildOrder>6</BuildOrder>
- </None>
- <None Include="..\include\gtest\gtest-test-part.h">
- <BuildOrder>7</BuildOrder>
- </None>
- <None Include="..\include\gtest\gtest-typed-test.h">
- <BuildOrder>8</BuildOrder>
- </None>
- <None Include="..\include\gtest\gtest.h">
- <BuildOrder>0</BuildOrder>
- </None>
- <None Include="..\include\gtest\gtest_pred_impl.h">
- <BuildOrder>1</BuildOrder>
- </None>
- <None Include="..\include\gtest\gtest_prod.h">
- <BuildOrder>2</BuildOrder>
- </None>
- <None Include="..\include\gtest\internal\gtest-death-test-internal.h">
- <BuildOrder>9</BuildOrder>
- </None>
- <None Include="..\include\gtest\internal\gtest-filepath.h">
- <BuildOrder>10</BuildOrder>
- </None>
- <None Include="..\include\gtest\internal\gtest-internal.h">
- <BuildOrder>11</BuildOrder>
- </None>
- <None Include="..\include\gtest\internal\gtest-linked_ptr.h">
- <BuildOrder>12</BuildOrder>
- </None>
- <None Include="..\include\gtest\internal\gtest-param-util-generated.h">
- <BuildOrder>14</BuildOrder>
- </None>
- <None Include="..\include\gtest\internal\gtest-param-util.h">
- <BuildOrder>13</BuildOrder>
- </None>
- <None Include="..\include\gtest\internal\gtest-port.h">
- <BuildOrder>15</BuildOrder>
- </None>
- <None Include="..\include\gtest\internal\gtest-string.h">
- <BuildOrder>16</BuildOrder>
- </None>
- <None Include="..\include\gtest\internal\gtest-type-util.h">
- <BuildOrder>17</BuildOrder>
- </None>
- <CppCompile Include="gtest_all.cc">
- <BuildOrder>18</BuildOrder>
- </CppCompile>
- <BuildConfiguration Include="Debug">
- <Key>Cfg_1</Key>
- </BuildConfiguration>
- <BuildConfiguration Include="Release">
- <Key>Cfg_2</Key>
- </BuildConfiguration>
- </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <ProjectGuid>{bca37a72-5b07-46cf-b44e-89f8e06451a2}</ProjectGuid>
+ <Config Condition="'$(Config)'==''">Release</Config>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
+ <Base>true</Base>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
+ <Base>true</Base>
+ <Cfg_1>true</Cfg_1>
+ <CfgParent>Base</CfgParent>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
+ <Base>true</Base>
+ <Cfg_2>true</Cfg_2>
+ <CfgParent>Base</CfgParent>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Base)'!=''">
+ <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed>
+ <OutputExt>lib</OutputExt>
+ <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput>
+ <Defines>NO_STRICT</Defines>
+ <DynamicRTL>true</DynamicRTL>
+ <UsePackages>true</UsePackages>
+ <ProjectType>CppStaticLibrary</ProjectType>
+ <BCC_CPPCompileAlways>true</BCC_CPPCompileAlways>
+ <PackageImports>rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;dclZipForged11.bpi;vclZipForged11.bpi;GR32_BDS2006.bpi;GR32_DSGN_BDS2006.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi;CExceptionExpert11.bpi</PackageImports>
+ <BCC_wpar>false</BCC_wpar>
+ <IncludePath>$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</IncludePath>
+ <AllPackageLibs>rtl.lib;vcl.lib</AllPackageLibs>
+ <TLIB_PageSize>32</TLIB_PageSize>
+ <ILINK_LibraryPath>$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</ILINK_LibraryPath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Cfg_1)'!=''">
+ <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed>
+ <DCC_Optimize>false</DCC_Optimize>
+ <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
+ <Defines>_DEBUG;$(Defines)</Defines>
+ <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo>
+ <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion>
+ <ILINK_DisableIncrementalLinking>true</ILINK_DisableIncrementalLinking>
+ <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables>
+ <DCC_Define>DEBUG</DCC_Define>
+ <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers>
+ <IntermediateOutputDir>Debug</IntermediateOutputDir>
+ <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines>
+ <BCC_StackFrames>true</BCC_StackFrames>
+ <BCC_DisableOptimizations>true</BCC_DisableOptimizations>
+ <ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+ <TASM_Debugging>Full</TASM_Debugging>
+ <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Cfg_2)'!=''">
+ <Defines>NDEBUG;$(Defines)</Defines>
+ <IntermediateOutputDir>Release</IntermediateOutputDir>
+ <ILINK_LibraryPath>$(BDS)\lib\release;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+ <TASM_Debugging>None</TASM_Debugging>
+ </PropertyGroup>
+ <ProjectExtensions>
+ <Borland.Personality>CPlusPlusBuilder.Personality</Borland.Personality>
+ <Borland.ProjectType>CppStaticLibrary</Borland.ProjectType>
+ <BorlandProject>
+<BorlandProject><CPlusPlusBuilder.Personality><VersionInfo><VersionInfo Name="IncludeVerInfo">False</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1033</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Debugging><Debugging Name="DebugSourceDirs"></Debugging></Debugging><Parameters><Parameters Name="RunParams"></Parameters><Parameters Name="Launcher"></Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="DebugCWD"></Parameters><Parameters Name="HostApplication"></Parameters><Parameters Name="RemoteHost"></Parameters><Parameters Name="RemotePath"></Parameters><Parameters Name="RemoteParams"></Parameters><Parameters Name="RemoteLauncher"></Parameters><Parameters Name="UseRemoteLauncher">False</Parameters><Parameters Name="RemoteCWD"></Parameters><Parameters Name="RemoteDebug">False</Parameters><Parameters Name="Debug Symbols Search Path"></Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Excluded_Packages>
+
+
+ <Excluded_Packages Name="$(BDS)\bin\bcboffice2k100.bpl">CodeGear C++Builder Office 2000 Servers Package</Excluded_Packages>
+ <Excluded_Packages Name="$(BDS)\bin\bcbofficexp100.bpl">CodeGear C++Builder Office XP Servers Package</Excluded_Packages>
+ </Excluded_Packages><Linker><Linker Name="LibPrefix"></Linker><Linker Name="LibSuffix"></Linker><Linker Name="LibVersion"></Linker></Linker><ProjectProperties><ProjectProperties Name="AutoShowDeps">False</ProjectProperties><ProjectProperties Name="ManagePaths">True</ProjectProperties><ProjectProperties Name="VerifyPackages">True</ProjectProperties></ProjectProperties><HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Count">3</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item0">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item1">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item2">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\src;..\include</HistoryLists_hlIncludePath></HistoryLists_hlIncludePath><HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Count">1</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item0">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</HistoryLists_hlILINK_LibraryPath></HistoryLists_hlILINK_LibraryPath><HistoryLists_hlDefines><HistoryLists_hlDefines Name="Count">1</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item0">NO_STRICT</HistoryLists_hlDefines></HistoryLists_hlDefines><HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Count">1</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item0">32</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item1">16</HistoryLists_hlTLIB_PageSize></HistoryLists_hlTLIB_PageSize></CPlusPlusBuilder.Personality></BorlandProject></BorlandProject>
+ </ProjectExtensions>
+ <Import Project="$(MSBuildBinPath)\Borland.Cpp.Targets" />
+ <ItemGroup>
+ <None Include="..\include\gtest\gtest-death-test.h">
+ <BuildOrder>3</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\gtest-message.h">
+ <BuildOrder>4</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\gtest-param-test.h">
+ <BuildOrder>5</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\gtest-spi.h">
+ <BuildOrder>6</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\gtest-test-part.h">
+ <BuildOrder>7</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\gtest-typed-test.h">
+ <BuildOrder>8</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\gtest.h">
+ <BuildOrder>0</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\gtest_pred_impl.h">
+ <BuildOrder>1</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\gtest_prod.h">
+ <BuildOrder>2</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-death-test-internal.h">
+ <BuildOrder>9</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-filepath.h">
+ <BuildOrder>10</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-internal.h">
+ <BuildOrder>11</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-linked_ptr.h">
+ <BuildOrder>12</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-param-util-generated.h">
+ <BuildOrder>14</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-param-util.h">
+ <BuildOrder>13</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-port.h">
+ <BuildOrder>15</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-string.h">
+ <BuildOrder>16</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-type-util.h">
+ <BuildOrder>17</BuildOrder>
+ </None>
+ <CppCompile Include="gtest_all.cc">
+ <BuildOrder>18</BuildOrder>
+ </CppCompile>
+ <BuildConfiguration Include="Debug">
+ <Key>Cfg_1</Key>
+ </BuildConfiguration>
+ <BuildConfiguration Include="Release">
+ <Key>Cfg_2</Key>
+ </BuildConfiguration>
+ </ItemGroup>
</Project> \ No newline at end of file
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.groupproj b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.groupproj
index 849f4c4..faf31ca 100644
--- a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.groupproj
+++ b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.groupproj
@@ -1,54 +1,54 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <ProjectGuid>{c1d923e0-6cba-4332-9b6f-3420acbf5091}</ProjectGuid>
- </PropertyGroup>
- <ItemGroup />
- <ItemGroup>
- <Projects Include="gtest.cbproj" />
- <Projects Include="gtest_main.cbproj" />
- <Projects Include="gtest_unittest.cbproj" />
- </ItemGroup>
- <ProjectExtensions>
- <Borland.Personality>Default.Personality</Borland.Personality>
- <Borland.ProjectType />
- <BorlandProject>
-<BorlandProject xmlns=""><Default.Personality></Default.Personality></BorlandProject></BorlandProject>
- </ProjectExtensions>
- <Target Name="gtest">
- <MSBuild Projects="gtest.cbproj" Targets="" />
- </Target>
- <Target Name="gtest:Clean">
- <MSBuild Projects="gtest.cbproj" Targets="Clean" />
- </Target>
- <Target Name="gtest:Make">
- <MSBuild Projects="gtest.cbproj" Targets="Make" />
- </Target>
- <Target Name="gtest_main">
- <MSBuild Projects="gtest_main.cbproj" Targets="" />
- </Target>
- <Target Name="gtest_main:Clean">
- <MSBuild Projects="gtest_main.cbproj" Targets="Clean" />
- </Target>
- <Target Name="gtest_main:Make">
- <MSBuild Projects="gtest_main.cbproj" Targets="Make" />
- </Target>
- <Target Name="gtest_unittest">
- <MSBuild Projects="gtest_unittest.cbproj" Targets="" />
- </Target>
- <Target Name="gtest_unittest:Clean">
- <MSBuild Projects="gtest_unittest.cbproj" Targets="Clean" />
- </Target>
- <Target Name="gtest_unittest:Make">
- <MSBuild Projects="gtest_unittest.cbproj" Targets="Make" />
- </Target>
- <Target Name="Build">
- <CallTarget Targets="gtest;gtest_main;gtest_unittest" />
- </Target>
- <Target Name="Clean">
- <CallTarget Targets="gtest:Clean;gtest_main:Clean;gtest_unittest:Clean" />
- </Target>
- <Target Name="Make">
- <CallTarget Targets="gtest:Make;gtest_main:Make;gtest_unittest:Make" />
- </Target>
- <Import Condition="Exists('$(MSBuildBinPath)\Borland.Group.Targets')" Project="$(MSBuildBinPath)\Borland.Group.Targets" />
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <ProjectGuid>{c1d923e0-6cba-4332-9b6f-3420acbf5091}</ProjectGuid>
+ </PropertyGroup>
+ <ItemGroup />
+ <ItemGroup>
+ <Projects Include="gtest.cbproj" />
+ <Projects Include="gtest_main.cbproj" />
+ <Projects Include="gtest_unittest.cbproj" />
+ </ItemGroup>
+ <ProjectExtensions>
+ <Borland.Personality>Default.Personality</Borland.Personality>
+ <Borland.ProjectType />
+ <BorlandProject>
+<BorlandProject xmlns=""><Default.Personality></Default.Personality></BorlandProject></BorlandProject>
+ </ProjectExtensions>
+ <Target Name="gtest">
+ <MSBuild Projects="gtest.cbproj" Targets="" />
+ </Target>
+ <Target Name="gtest:Clean">
+ <MSBuild Projects="gtest.cbproj" Targets="Clean" />
+ </Target>
+ <Target Name="gtest:Make">
+ <MSBuild Projects="gtest.cbproj" Targets="Make" />
+ </Target>
+ <Target Name="gtest_main">
+ <MSBuild Projects="gtest_main.cbproj" Targets="" />
+ </Target>
+ <Target Name="gtest_main:Clean">
+ <MSBuild Projects="gtest_main.cbproj" Targets="Clean" />
+ </Target>
+ <Target Name="gtest_main:Make">
+ <MSBuild Projects="gtest_main.cbproj" Targets="Make" />
+ </Target>
+ <Target Name="gtest_unittest">
+ <MSBuild Projects="gtest_unittest.cbproj" Targets="" />
+ </Target>
+ <Target Name="gtest_unittest:Clean">
+ <MSBuild Projects="gtest_unittest.cbproj" Targets="Clean" />
+ </Target>
+ <Target Name="gtest_unittest:Make">
+ <MSBuild Projects="gtest_unittest.cbproj" Targets="Make" />
+ </Target>
+ <Target Name="Build">
+ <CallTarget Targets="gtest;gtest_main;gtest_unittest" />
+ </Target>
+ <Target Name="Clean">
+ <CallTarget Targets="gtest:Clean;gtest_main:Clean;gtest_unittest:Clean" />
+ </Target>
+ <Target Name="Make">
+ <CallTarget Targets="gtest:Make;gtest_main:Make;gtest_unittest:Make" />
+ </Target>
+ <Import Condition="Exists('$(MSBuildBinPath)\Borland.Group.Targets')" Project="$(MSBuildBinPath)\Borland.Group.Targets" />
</Project> \ No newline at end of file
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_all.cc b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_all.cc
index ba7ad68..121b2d8 100644
--- a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_all.cc
+++ b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_all.cc
@@ -1,38 +1,38 @@
-// Copyright 2009, 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.
-//
-// Author: Josh Kelley (joshkel@gmail.com)
-//
-// Google C++ Testing Framework (Google Test)
-//
-// C++Builder's IDE cannot build a static library from files with hyphens
-// in their name. See http://qc.codegear.com/wc/qcmain.aspx?d=70977 .
-// This file serves as a workaround.
-
-#include "src/gtest-all.cc"
+// Copyright 2009, 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.
+//
+// Author: Josh Kelley (joshkel@gmail.com)
+//
+// Google C++ Testing Framework (Google Test)
+//
+// C++Builder's IDE cannot build a static library from files with hyphens
+// in their name. See http://qc.codegear.com/wc/qcmain.aspx?d=70977 .
+// This file serves as a workaround.
+
+#include "src/gtest-all.cc"
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_link.cc b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_link.cc
index b955ebf..918eccd 100644
--- a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_link.cc
+++ b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_link.cc
@@ -1,40 +1,40 @@
-// Copyright 2009, 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.
-//
-// Author: Josh Kelley (joshkel@gmail.com)
-//
-// Google C++ Testing Framework (Google Test)
-//
-// Links gtest.lib and gtest_main.lib into the current project in C++Builder.
-// This means that these libraries can't be renamed, but it's the only way to
-// ensure that Debug versus Release test builds are linked against the
-// appropriate Debug or Release build of the libraries.
-
-#pragma link "gtest.lib"
-#pragma link "gtest_main.lib"
+// Copyright 2009, 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.
+//
+// Author: Josh Kelley (joshkel@gmail.com)
+//
+// Google C++ Testing Framework (Google Test)
+//
+// Links gtest.lib and gtest_main.lib into the current project in C++Builder.
+// This means that these libraries can't be renamed, but it's the only way to
+// ensure that Debug versus Release test builds are linked against the
+// appropriate Debug or Release build of the libraries.
+
+#pragma link "gtest.lib"
+#pragma link "gtest_main.lib"
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_main.cbproj b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_main.cbproj
index fae32cb..d76ce13 100644
--- a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_main.cbproj
+++ b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_main.cbproj
@@ -1,82 +1,82 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <ProjectGuid>{bca37a72-5b07-46cf-b44e-89f8e06451a2}</ProjectGuid>
- <Config Condition="'$(Config)'==''">Release</Config>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
- <Base>true</Base>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
- <Base>true</Base>
- <Cfg_1>true</Cfg_1>
- <CfgParent>Base</CfgParent>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
- <Base>true</Base>
- <Cfg_2>true</Cfg_2>
- <CfgParent>Base</CfgParent>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Base)'!=''">
- <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed>
- <OutputExt>lib</OutputExt>
- <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput>
- <Defines>NO_STRICT</Defines>
- <DynamicRTL>true</DynamicRTL>
- <UsePackages>true</UsePackages>
- <ProjectType>CppStaticLibrary</ProjectType>
- <BCC_CPPCompileAlways>true</BCC_CPPCompileAlways>
- <PackageImports>rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;dclZipForged11.bpi;vclZipForged11.bpi;GR32_BDS2006.bpi;GR32_DSGN_BDS2006.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi;CExceptionExpert11.bpi</PackageImports>
- <BCC_wpar>false</BCC_wpar>
- <IncludePath>$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</IncludePath>
- <AllPackageLibs>rtl.lib;vcl.lib</AllPackageLibs>
- <TLIB_PageSize>32</TLIB_PageSize>
- <ILINK_LibraryPath>$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</ILINK_LibraryPath>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Cfg_1)'!=''">
- <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed>
- <DCC_Optimize>false</DCC_Optimize>
- <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
- <Defines>_DEBUG;$(Defines)</Defines>
- <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo>
- <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion>
- <ILINK_DisableIncrementalLinking>true</ILINK_DisableIncrementalLinking>
- <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables>
- <DCC_Define>DEBUG</DCC_Define>
- <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers>
- <IntermediateOutputDir>Debug</IntermediateOutputDir>
- <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines>
- <BCC_StackFrames>true</BCC_StackFrames>
- <BCC_DisableOptimizations>true</BCC_DisableOptimizations>
- <ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
- <TASM_Debugging>Full</TASM_Debugging>
- <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Cfg_2)'!=''">
- <Defines>NDEBUG;$(Defines)</Defines>
- <IntermediateOutputDir>Release</IntermediateOutputDir>
- <ILINK_LibraryPath>$(BDS)\lib\release;$(ILINK_LibraryPath)</ILINK_LibraryPath>
- <TASM_Debugging>None</TASM_Debugging>
- </PropertyGroup>
- <ProjectExtensions>
- <Borland.Personality>CPlusPlusBuilder.Personality</Borland.Personality>
- <Borland.ProjectType>CppStaticLibrary</Borland.ProjectType>
- <BorlandProject>
-<BorlandProject><CPlusPlusBuilder.Personality><VersionInfo><VersionInfo Name="IncludeVerInfo">False</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1033</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Debugging><Debugging Name="DebugSourceDirs"></Debugging></Debugging><Parameters><Parameters Name="RunParams"></Parameters><Parameters Name="Launcher"></Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="DebugCWD"></Parameters><Parameters Name="HostApplication"></Parameters><Parameters Name="RemoteHost"></Parameters><Parameters Name="RemotePath"></Parameters><Parameters Name="RemoteParams"></Parameters><Parameters Name="RemoteLauncher"></Parameters><Parameters Name="UseRemoteLauncher">False</Parameters><Parameters Name="RemoteCWD"></Parameters><Parameters Name="RemoteDebug">False</Parameters><Parameters Name="Debug Symbols Search Path"></Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Excluded_Packages>
- <Excluded_Packages Name="$(BDS)\bin\bcboffice2k100.bpl">CodeGear C++Builder Office 2000 Servers Package</Excluded_Packages>
- <Excluded_Packages Name="$(BDS)\bin\bcbofficexp100.bpl">CodeGear C++Builder Office XP Servers Package</Excluded_Packages>
- </Excluded_Packages><Linker><Linker Name="LibPrefix"></Linker><Linker Name="LibSuffix"></Linker><Linker Name="LibVersion"></Linker></Linker><ProjectProperties><ProjectProperties Name="AutoShowDeps">False</ProjectProperties><ProjectProperties Name="ManagePaths">True</ProjectProperties><ProjectProperties Name="VerifyPackages">True</ProjectProperties></ProjectProperties><HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Count">3</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item0">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item1">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item2">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\src;..\include</HistoryLists_hlIncludePath></HistoryLists_hlIncludePath><HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Count">1</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item0">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</HistoryLists_hlILINK_LibraryPath></HistoryLists_hlILINK_LibraryPath><HistoryLists_hlDefines><HistoryLists_hlDefines Name="Count">1</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item0">NO_STRICT</HistoryLists_hlDefines></HistoryLists_hlDefines><HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Count">1</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item0">32</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item1">16</HistoryLists_hlTLIB_PageSize></HistoryLists_hlTLIB_PageSize></CPlusPlusBuilder.Personality></BorlandProject></BorlandProject>
- </ProjectExtensions>
- <Import Project="$(MSBuildBinPath)\Borland.Cpp.Targets" />
- <ItemGroup>
- <CppCompile Include="..\src\gtest_main.cc">
- <BuildOrder>0</BuildOrder>
- </CppCompile>
- <BuildConfiguration Include="Debug">
- <Key>Cfg_1</Key>
- </BuildConfiguration>
- <BuildConfiguration Include="Release">
- <Key>Cfg_2</Key>
- </BuildConfiguration>
- </ItemGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <ProjectGuid>{bca37a72-5b07-46cf-b44e-89f8e06451a2}</ProjectGuid>
+ <Config Condition="'$(Config)'==''">Release</Config>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
+ <Base>true</Base>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
+ <Base>true</Base>
+ <Cfg_1>true</Cfg_1>
+ <CfgParent>Base</CfgParent>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
+ <Base>true</Base>
+ <Cfg_2>true</Cfg_2>
+ <CfgParent>Base</CfgParent>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Base)'!=''">
+ <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed>
+ <OutputExt>lib</OutputExt>
+ <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput>
+ <Defines>NO_STRICT</Defines>
+ <DynamicRTL>true</DynamicRTL>
+ <UsePackages>true</UsePackages>
+ <ProjectType>CppStaticLibrary</ProjectType>
+ <BCC_CPPCompileAlways>true</BCC_CPPCompileAlways>
+ <PackageImports>rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;dclZipForged11.bpi;vclZipForged11.bpi;GR32_BDS2006.bpi;GR32_DSGN_BDS2006.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi;CExceptionExpert11.bpi</PackageImports>
+ <BCC_wpar>false</BCC_wpar>
+ <IncludePath>$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</IncludePath>
+ <AllPackageLibs>rtl.lib;vcl.lib</AllPackageLibs>
+ <TLIB_PageSize>32</TLIB_PageSize>
+ <ILINK_LibraryPath>$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</ILINK_LibraryPath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Cfg_1)'!=''">
+ <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed>
+ <DCC_Optimize>false</DCC_Optimize>
+ <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
+ <Defines>_DEBUG;$(Defines)</Defines>
+ <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo>
+ <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion>
+ <ILINK_DisableIncrementalLinking>true</ILINK_DisableIncrementalLinking>
+ <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables>
+ <DCC_Define>DEBUG</DCC_Define>
+ <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers>
+ <IntermediateOutputDir>Debug</IntermediateOutputDir>
+ <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines>
+ <BCC_StackFrames>true</BCC_StackFrames>
+ <BCC_DisableOptimizations>true</BCC_DisableOptimizations>
+ <ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+ <TASM_Debugging>Full</TASM_Debugging>
+ <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Cfg_2)'!=''">
+ <Defines>NDEBUG;$(Defines)</Defines>
+ <IntermediateOutputDir>Release</IntermediateOutputDir>
+ <ILINK_LibraryPath>$(BDS)\lib\release;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+ <TASM_Debugging>None</TASM_Debugging>
+ </PropertyGroup>
+ <ProjectExtensions>
+ <Borland.Personality>CPlusPlusBuilder.Personality</Borland.Personality>
+ <Borland.ProjectType>CppStaticLibrary</Borland.ProjectType>
+ <BorlandProject>
+<BorlandProject><CPlusPlusBuilder.Personality><VersionInfo><VersionInfo Name="IncludeVerInfo">False</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1033</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Debugging><Debugging Name="DebugSourceDirs"></Debugging></Debugging><Parameters><Parameters Name="RunParams"></Parameters><Parameters Name="Launcher"></Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="DebugCWD"></Parameters><Parameters Name="HostApplication"></Parameters><Parameters Name="RemoteHost"></Parameters><Parameters Name="RemotePath"></Parameters><Parameters Name="RemoteParams"></Parameters><Parameters Name="RemoteLauncher"></Parameters><Parameters Name="UseRemoteLauncher">False</Parameters><Parameters Name="RemoteCWD"></Parameters><Parameters Name="RemoteDebug">False</Parameters><Parameters Name="Debug Symbols Search Path"></Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Excluded_Packages>
+ <Excluded_Packages Name="$(BDS)\bin\bcboffice2k100.bpl">CodeGear C++Builder Office 2000 Servers Package</Excluded_Packages>
+ <Excluded_Packages Name="$(BDS)\bin\bcbofficexp100.bpl">CodeGear C++Builder Office XP Servers Package</Excluded_Packages>
+ </Excluded_Packages><Linker><Linker Name="LibPrefix"></Linker><Linker Name="LibSuffix"></Linker><Linker Name="LibVersion"></Linker></Linker><ProjectProperties><ProjectProperties Name="AutoShowDeps">False</ProjectProperties><ProjectProperties Name="ManagePaths">True</ProjectProperties><ProjectProperties Name="VerifyPackages">True</ProjectProperties></ProjectProperties><HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Count">3</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item0">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item1">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item2">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\src;..\include</HistoryLists_hlIncludePath></HistoryLists_hlIncludePath><HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Count">1</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item0">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</HistoryLists_hlILINK_LibraryPath></HistoryLists_hlILINK_LibraryPath><HistoryLists_hlDefines><HistoryLists_hlDefines Name="Count">1</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item0">NO_STRICT</HistoryLists_hlDefines></HistoryLists_hlDefines><HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Count">1</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item0">32</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item1">16</HistoryLists_hlTLIB_PageSize></HistoryLists_hlTLIB_PageSize></CPlusPlusBuilder.Personality></BorlandProject></BorlandProject>
+ </ProjectExtensions>
+ <Import Project="$(MSBuildBinPath)\Borland.Cpp.Targets" />
+ <ItemGroup>
+ <CppCompile Include="..\src\gtest_main.cc">
+ <BuildOrder>0</BuildOrder>
+ </CppCompile>
+ <BuildConfiguration Include="Debug">
+ <Key>Cfg_1</Key>
+ </BuildConfiguration>
+ <BuildConfiguration Include="Release">
+ <Key>Cfg_2</Key>
+ </BuildConfiguration>
+ </ItemGroup>
+</Project>
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_unittest.cbproj b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_unittest.cbproj
index 33f7056..dc5db8e 100644
--- a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_unittest.cbproj
+++ b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_unittest.cbproj
@@ -1,88 +1,88 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <ProjectGuid>{eea63393-5ac5-4b9c-8909-d75fef2daa41}</ProjectGuid>
- <Config Condition="'$(Config)'==''">Release</Config>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
- <Base>true</Base>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
- <Base>true</Base>
- <Cfg_1>true</Cfg_1>
- <CfgParent>Base</CfgParent>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
- <Base>true</Base>
- <Cfg_2>true</Cfg_2>
- <CfgParent>Base</CfgParent>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Base)'!=''">
- <OutputExt>exe</OutputExt>
- <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed>
- <Defines>NO_STRICT</Defines>
- <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput>
- <DynamicRTL>true</DynamicRTL>
- <ILINK_ObjectSearchPath>..\test</ILINK_ObjectSearchPath>
- <UsePackages>true</UsePackages>
- <ProjectType>CppConsoleApplication</ProjectType>
- <NoVCL>true</NoVCL>
- <BCC_CPPCompileAlways>true</BCC_CPPCompileAlways>
- <PackageImports>rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi</PackageImports>
- <BCC_wpar>false</BCC_wpar>
- <IncludePath>$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test;..</IncludePath>
- <ILINK_LibraryPath>$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test</ILINK_LibraryPath>
- <Multithreaded>true</Multithreaded>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Cfg_1)'!=''">
- <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed>
- <DCC_Optimize>false</DCC_Optimize>
- <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
- <Defines>_DEBUG;$(Defines)</Defines>
- <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo>
- <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion>
- <ILINK_DisableIncrementalLinking>true</ILINK_DisableIncrementalLinking>
- <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables>
- <DCC_Define>DEBUG</DCC_Define>
- <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers>
- <IntermediateOutputDir>Debug</IntermediateOutputDir>
- <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines>
- <BCC_StackFrames>true</BCC_StackFrames>
- <BCC_DisableOptimizations>true</BCC_DisableOptimizations>
- <ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
- <TASM_Debugging>Full</TASM_Debugging>
- <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Cfg_2)'!=''">
- <Defines>NDEBUG;$(Defines)</Defines>
- <IntermediateOutputDir>Release</IntermediateOutputDir>
- <ILINK_LibraryPath>$(BDS)\lib\release;$(ILINK_LibraryPath)</ILINK_LibraryPath>
- <TASM_Debugging>None</TASM_Debugging>
- </PropertyGroup>
- <ProjectExtensions>
- <Borland.Personality>CPlusPlusBuilder.Personality</Borland.Personality>
- <Borland.ProjectType>CppConsoleApplication</Borland.ProjectType>
- <BorlandProject>
-<BorlandProject><CPlusPlusBuilder.Personality><VersionInfo><VersionInfo Name="IncludeVerInfo">False</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1033</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Debugging><Debugging Name="DebugSourceDirs"></Debugging></Debugging><Parameters><Parameters Name="RunParams"></Parameters><Parameters Name="Launcher"></Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="DebugCWD"></Parameters><Parameters Name="HostApplication"></Parameters><Parameters Name="RemoteHost"></Parameters><Parameters Name="RemotePath"></Parameters><Parameters Name="RemoteParams"></Parameters><Parameters Name="RemoteLauncher"></Parameters><Parameters Name="UseRemoteLauncher">False</Parameters><Parameters Name="RemoteCWD"></Parameters><Parameters Name="RemoteDebug">False</Parameters><Parameters Name="Debug Symbols Search Path"></Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Excluded_Packages>
-
-
- <Excluded_Packages Name="$(BDS)\bin\bcboffice2k100.bpl">CodeGear C++Builder Office 2000 Servers Package</Excluded_Packages>
- <Excluded_Packages Name="$(BDS)\bin\bcbofficexp100.bpl">CodeGear C++Builder Office XP Servers Package</Excluded_Packages>
- </Excluded_Packages><Linker><Linker Name="LibPrefix"></Linker><Linker Name="LibSuffix"></Linker><Linker Name="LibVersion"></Linker></Linker><ProjectProperties><ProjectProperties Name="AutoShowDeps">False</ProjectProperties><ProjectProperties Name="ManagePaths">True</ProjectProperties><ProjectProperties Name="VerifyPackages">True</ProjectProperties></ProjectProperties><HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Count">3</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item0">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item1">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item2">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include</HistoryLists_hlIncludePath></HistoryLists_hlIncludePath><HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Count">1</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item0">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item1">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item2">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;$(OUTPUTDIR);..\test</HistoryLists_hlILINK_LibraryPath></HistoryLists_hlILINK_LibraryPath><HistoryLists_hlDefines><HistoryLists_hlDefines Name="Count">2</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item0">NO_STRICT</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item1">STRICT</HistoryLists_hlDefines></HistoryLists_hlDefines></CPlusPlusBuilder.Personality></BorlandProject></BorlandProject>
- </ProjectExtensions>
- <Import Project="$(MSBuildBinPath)\Borland.Cpp.Targets" />
- <ItemGroup>
- <CppCompile Include="..\test\gtest_unittest.cc">
- <BuildOrder>0</BuildOrder>
- </CppCompile>
- <CppCompile Include="gtest_link.cc">
- <BuildOrder>1</BuildOrder>
- </CppCompile>
- <BuildConfiguration Include="Debug">
- <Key>Cfg_1</Key>
- </BuildConfiguration>
- <BuildConfiguration Include="Release">
- <Key>Cfg_2</Key>
- </BuildConfiguration>
- </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <ProjectGuid>{eea63393-5ac5-4b9c-8909-d75fef2daa41}</ProjectGuid>
+ <Config Condition="'$(Config)'==''">Release</Config>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
+ <Base>true</Base>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
+ <Base>true</Base>
+ <Cfg_1>true</Cfg_1>
+ <CfgParent>Base</CfgParent>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
+ <Base>true</Base>
+ <Cfg_2>true</Cfg_2>
+ <CfgParent>Base</CfgParent>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Base)'!=''">
+ <OutputExt>exe</OutputExt>
+ <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed>
+ <Defines>NO_STRICT</Defines>
+ <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput>
+ <DynamicRTL>true</DynamicRTL>
+ <ILINK_ObjectSearchPath>..\test</ILINK_ObjectSearchPath>
+ <UsePackages>true</UsePackages>
+ <ProjectType>CppConsoleApplication</ProjectType>
+ <NoVCL>true</NoVCL>
+ <BCC_CPPCompileAlways>true</BCC_CPPCompileAlways>
+ <PackageImports>rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi</PackageImports>
+ <BCC_wpar>false</BCC_wpar>
+ <IncludePath>$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test;..</IncludePath>
+ <ILINK_LibraryPath>$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test</ILINK_LibraryPath>
+ <Multithreaded>true</Multithreaded>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Cfg_1)'!=''">
+ <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed>
+ <DCC_Optimize>false</DCC_Optimize>
+ <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
+ <Defines>_DEBUG;$(Defines)</Defines>
+ <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo>
+ <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion>
+ <ILINK_DisableIncrementalLinking>true</ILINK_DisableIncrementalLinking>
+ <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables>
+ <DCC_Define>DEBUG</DCC_Define>
+ <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers>
+ <IntermediateOutputDir>Debug</IntermediateOutputDir>
+ <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines>
+ <BCC_StackFrames>true</BCC_StackFrames>
+ <BCC_DisableOptimizations>true</BCC_DisableOptimizations>
+ <ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+ <TASM_Debugging>Full</TASM_Debugging>
+ <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Cfg_2)'!=''">
+ <Defines>NDEBUG;$(Defines)</Defines>
+ <IntermediateOutputDir>Release</IntermediateOutputDir>
+ <ILINK_LibraryPath>$(BDS)\lib\release;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+ <TASM_Debugging>None</TASM_Debugging>
+ </PropertyGroup>
+ <ProjectExtensions>
+ <Borland.Personality>CPlusPlusBuilder.Personality</Borland.Personality>
+ <Borland.ProjectType>CppConsoleApplication</Borland.ProjectType>
+ <BorlandProject>
+<BorlandProject><CPlusPlusBuilder.Personality><VersionInfo><VersionInfo Name="IncludeVerInfo">False</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1033</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Debugging><Debugging Name="DebugSourceDirs"></Debugging></Debugging><Parameters><Parameters Name="RunParams"></Parameters><Parameters Name="Launcher"></Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="DebugCWD"></Parameters><Parameters Name="HostApplication"></Parameters><Parameters Name="RemoteHost"></Parameters><Parameters Name="RemotePath"></Parameters><Parameters Name="RemoteParams"></Parameters><Parameters Name="RemoteLauncher"></Parameters><Parameters Name="UseRemoteLauncher">False</Parameters><Parameters Name="RemoteCWD"></Parameters><Parameters Name="RemoteDebug">False</Parameters><Parameters Name="Debug Symbols Search Path"></Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Excluded_Packages>
+
+
+ <Excluded_Packages Name="$(BDS)\bin\bcboffice2k100.bpl">CodeGear C++Builder Office 2000 Servers Package</Excluded_Packages>
+ <Excluded_Packages Name="$(BDS)\bin\bcbofficexp100.bpl">CodeGear C++Builder Office XP Servers Package</Excluded_Packages>
+ </Excluded_Packages><Linker><Linker Name="LibPrefix"></Linker><Linker Name="LibSuffix"></Linker><Linker Name="LibVersion"></Linker></Linker><ProjectProperties><ProjectProperties Name="AutoShowDeps">False</ProjectProperties><ProjectProperties Name="ManagePaths">True</ProjectProperties><ProjectProperties Name="VerifyPackages">True</ProjectProperties></ProjectProperties><HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Count">3</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item0">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item1">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item2">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include</HistoryLists_hlIncludePath></HistoryLists_hlIncludePath><HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Count">1</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item0">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item1">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item2">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;$(OUTPUTDIR);..\test</HistoryLists_hlILINK_LibraryPath></HistoryLists_hlILINK_LibraryPath><HistoryLists_hlDefines><HistoryLists_hlDefines Name="Count">2</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item0">NO_STRICT</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item1">STRICT</HistoryLists_hlDefines></HistoryLists_hlDefines></CPlusPlusBuilder.Personality></BorlandProject></BorlandProject>
+ </ProjectExtensions>
+ <Import Project="$(MSBuildBinPath)\Borland.Cpp.Targets" />
+ <ItemGroup>
+ <CppCompile Include="..\test\gtest_unittest.cc">
+ <BuildOrder>0</BuildOrder>
+ </CppCompile>
+ <CppCompile Include="gtest_link.cc">
+ <BuildOrder>1</BuildOrder>
+ </CppCompile>
+ <BuildConfiguration Include="Debug">
+ <Key>Cfg_1</Key>
+ </BuildConfiguration>
+ <BuildConfiguration Include="Release">
+ <Key>Cfg_2</Key>
+ </BuildConfiguration>
+ </ItemGroup>
</Project> \ No newline at end of file
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/gyp.bat b/src/3rdparty/webkit/Source/ThirdParty/gyp/gyp.bat
index 91ebf1e..90fbc6d 100755
--- a/src/3rdparty/webkit/Source/ThirdParty/gyp/gyp.bat
+++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/gyp.bat
@@ -1,5 +1,5 @@
-@rem Copyright (c) 2009 Google Inc. All rights reserved.
-@rem Use of this source code is governed by a BSD-style license that can be
-@rem found in the LICENSE file.
-
-@python "%~dp0/gyp" %*
+@rem Copyright (c) 2009 Google Inc. All rights reserved.
+@rem Use of this source code is governed by a BSD-style license that can be
+@rem found in the LICENSE file.
+
+@python "%~dp0/gyp" %*
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/samples/samples.bat b/src/3rdparty/webkit/Source/ThirdParty/gyp/samples/samples.bat
index 5683255..778d9c9 100644
--- a/src/3rdparty/webkit/Source/ThirdParty/gyp/samples/samples.bat
+++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/samples/samples.bat
@@ -1,5 +1,5 @@
-@rem Copyright (c) 2009 Google Inc. All rights reserved.
-@rem Use of this source code is governed by a BSD-style license that can be
-@rem found in the LICENSE file.
-
-@python %~dp0/samples %*
+@rem Copyright (c) 2009 Google Inc. All rights reserved.
+@rem Use of this source code is governed by a BSD-style license that can be
+@rem found in the LICENSE file.
+
+@python %~dp0/samples %*
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/gyptest-errors.py b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/gyptest-errors.py
index 4a2aa07..ca41487 100644
--- a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/gyptest-errors.py
+++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/gyptest-errors.py
@@ -1,24 +1,24 @@
-#!/usr/bin/env python
+#!/usr/bin/env python
# Copyright (c) 2009 Google Inc. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-
-"""
-Verifies behavior for different action configuration errors:
-exit status of 1, and the expected error message must be in stderr.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-
-test.run_gyp('action_missing_name.gyp', chdir='src', status=1, stderr=None)
-expect = [
- "Anonymous action in target broken_actions2. An action must have an 'action_name' field.",
-]
-test.must_contain_all_lines(test.stderr(), expect)
-
-
-test.pass_test()
+
+"""
+Verifies behavior for different action configuration errors:
+exit status of 1, and the expected error message must be in stderr.
+"""
+
+import TestGyp
+
+test = TestGyp.TestGyp()
+
+
+test.run_gyp('action_missing_name.gyp', chdir='src', status=1, stderr=None)
+expect = [
+ "Anonymous action in target broken_actions2. An action must have an 'action_name' field.",
+]
+test.must_contain_all_lines(test.stderr(), expect)
+
+
+test.pass_test()
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/src/subdir1/program.c b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/src/subdir1/program.c
index f155939..d5f661d 100644
--- a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/src/subdir1/program.c
+++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/src/subdir1/program.c
@@ -1,12 +1,12 @@
-#include <stdio.h>
-
-extern void prog1(void);
-extern void prog2(void);
-
-int main(int argc, char *argv[])
-{
- printf("Hello from program.c\n");
- prog1();
- prog2();
- return 0;
-}
+#include <stdio.h>
+
+extern void prog1(void);
+extern void prog2(void);
+
+int main(int argc, char *argv[])
+{
+ printf("Hello from program.c\n");
+ prog1();
+ prog2();
+ return 0;
+}
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/actions-out/README.txt b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/actions-out/README.txt
index 90ef886..1b052c9 100644
--- a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/actions-out/README.txt
+++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/actions-out/README.txt
@@ -1,4 +1,4 @@
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+A place-holder for this Xcode build output directory, so that the
+test script can verify that .xcodeproj files are not created in
+their normal location by making the src/ read-only, and then
+selectively making this build directory writable.
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/program.c b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/program.c
index f155939..d5f661d 100644
--- a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/program.c
+++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/program.c
@@ -1,12 +1,12 @@
-#include <stdio.h>
-
-extern void prog1(void);
-extern void prog2(void);
-
-int main(int argc, char *argv[])
-{
- printf("Hello from program.c\n");
- prog1();
- prog2();
- return 0;
-}
+#include <stdio.h>
+
+extern void prog1(void);
+extern void prog2(void);
+
+int main(int argc, char *argv[])
+{
+ printf("Hello from program.c\n");
+ prog1();
+ prog2();
+ return 0;
+}
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir2/actions-out/README.txt b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir2/actions-out/README.txt
index 90ef886..1b052c9 100644
--- a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir2/actions-out/README.txt
+++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir2/actions-out/README.txt
@@ -1,4 +1,4 @@
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+A place-holder for this Xcode build output directory, so that the
+test script can verify that .xcodeproj files are not created in
+their normal location by making the src/ read-only, and then
+selectively making this build directory writable.
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/rules/subdir2/rules-out/README.txt b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/rules/subdir2/rules-out/README.txt
index 90ef886..1b052c9 100644
--- a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/rules/subdir2/rules-out/README.txt
+++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/rules/subdir2/rules-out/README.txt
@@ -1,4 +1,4 @@
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+A place-holder for this Xcode build output directory, so that the
+test script can verify that .xcodeproj files are not created in
+their normal location by making the src/ read-only, and then
+selectively making this build directory writable.
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/tools/pretty_gyp.py b/src/3rdparty/webkit/Source/ThirdParty/gyp/tools/pretty_gyp.py
index 128c2e3..04c7901 100644
--- a/src/3rdparty/webkit/Source/ThirdParty/gyp/tools/pretty_gyp.py
+++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/tools/pretty_gyp.py
@@ -1,142 +1,142 @@
-#!/usr/bin/env python
-# Copyright (c) 2009 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# This file pretty-prints the contents of a GYP file.
-
-import sys
-import re
-
-input = []
-if len(sys.argv) > 1:
- input_file = open(sys.argv[1])
- input = input_file.read().splitlines()
- input_file.close()
-else:
- input = sys.stdin.read().splitlines()
-
-# This is used to remove comments when we're counting braces.
-comment_re = re.compile(r'\s*#.*')
-
-# This is used to remove quoted strings when we're counting braces.
-# It takes into account quoted quotes, and makes sure that the quotes
-# match.
-# NOTE: It does not handle quotes that span more than one line, or
-# cases where an escaped quote is preceeded by an escaped backslash.
-quote_re_str = r'(?P<q>[\'"])(.*?)(?<![^\\][\\])(?P=q)'
-quote_re = re.compile(quote_re_str)
-
-def comment_replace(matchobj):
- return matchobj.group(1) + matchobj.group(2) + '#' * len(matchobj.group(3))
-
-def mask_comments(input):
- # This is used to mask the quoted strings so we skip braces inside
- # quoted strings.
- search_re = re.compile(r'(.*?)(#)(.*)')
- return [search_re.sub(comment_replace, line) for line in input]
-
-def quote_replace(matchobj):
- return "%s%s%s%s" % (matchobj.group(1),
- matchobj.group(2),
- 'x'*len(matchobj.group(3)),
- matchobj.group(2))
-
-def mask_quotes(input):
- # This is used to mask the quoted strings so we skip braces inside
- # quoted strings.
- search_re = re.compile(r'(.*?)' + quote_re_str)
- return [search_re.sub(quote_replace, line) for line in input]
-
-def do_split(input, masked_input, search_re):
- output = []
- mask_output = []
- for (line, masked_line) in zip(input, masked_input):
- m = search_re.match(masked_line)
- while m:
- split = len(m.group(1))
- line = line[:split] + r'\n' + line[split:]
- masked_line = masked_line[:split] + r'\n' + masked_line[split:]
- m = search_re.match(masked_line)
- output.extend(line.split(r'\n'))
- mask_output.extend(masked_line.split(r'\n'))
- return (output, mask_output)
-
-# This masks out the quotes and comments, and then splits appropriate
-# lines (lines that matche the double_*_brace re's above) before
-# indenting them below.
-def split_double_braces(input):
- # These are used to split lines which have multiple braces on them, so
- # that the indentation looks prettier when all laid out (e.g. closing
- # braces make a nice diagonal line).
- double_open_brace_re = re.compile(r'(.*?[\[\{\(,])(\s*)([\[\{\(])')
- double_close_brace_re = re.compile(r'(.*?[\]\}\)],?)(\s*)([\]\}\)])')
-
- masked_input = mask_quotes(input)
- masked_input = mask_comments(masked_input)
-
- (output, mask_output) = do_split(input, masked_input, double_open_brace_re)
- (output, mask_output) = do_split(output, mask_output, double_close_brace_re)
-
- return output
-
-# This keeps track of the number of braces on a given line and returns
-# the result. It starts at zero and subtracts for closed braces, and
-# adds for open braces.
-def count_braces(line):
- open_braces = ['[', '(', '{']
- close_braces = [']', ')', '}']
- closing_prefix_re = re.compile(r'(.*?[^\s\]\}\)]+.*?)([\]\}\)],?)\s*$')
- cnt = 0
- stripline = comment_re.sub(r'', line)
- stripline = quote_re.sub(r"''", stripline)
- for char in stripline:
- for brace in open_braces:
- if char == brace:
- cnt += 1
- for brace in close_braces:
- if char == brace:
- cnt -= 1
-
- after = False
- if cnt > 0:
- after = True
-
- # This catches the special case of a closing brace having something
- # other than just whitespace ahead of it -- we don't want to
- # unindent that until after this line is printed so it stays with
- # the previous indentation level.
- if cnt < 0 and closing_prefix_re.match(stripline):
- after = True
- return (cnt, after)
-
-# This does the main work of indenting the input based on the brace counts.
-def prettyprint_input(lines):
- indent = 0
- basic_offset = 2
- last_line = ""
- for line in lines:
- if comment_re.match(line):
- print line
- else:
- line = line.strip('\r\n\t ') # Otherwise doesn't strip \r on Unix.
- if len(line) > 0:
- (brace_diff, after) = count_braces(line)
- if brace_diff != 0:
- if after:
- print " " * (basic_offset * indent) + line
- indent += brace_diff
- else:
- indent += brace_diff
- print " " * (basic_offset * indent) + line
- else:
- print " " * (basic_offset * indent) + line
- else:
- print ""
- last_line = line
-
-# Split up the double braces.
-lines = split_double_braces(input)
-
-# Indent and print the output.
-prettyprint_input(lines)
+#!/usr/bin/env python
+# Copyright (c) 2009 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This file pretty-prints the contents of a GYP file.
+
+import sys
+import re
+
+input = []
+if len(sys.argv) > 1:
+ input_file = open(sys.argv[1])
+ input = input_file.read().splitlines()
+ input_file.close()
+else:
+ input = sys.stdin.read().splitlines()
+
+# This is used to remove comments when we're counting braces.
+comment_re = re.compile(r'\s*#.*')
+
+# This is used to remove quoted strings when we're counting braces.
+# It takes into account quoted quotes, and makes sure that the quotes
+# match.
+# NOTE: It does not handle quotes that span more than one line, or
+# cases where an escaped quote is preceeded by an escaped backslash.
+quote_re_str = r'(?P<q>[\'"])(.*?)(?<![^\\][\\])(?P=q)'
+quote_re = re.compile(quote_re_str)
+
+def comment_replace(matchobj):
+ return matchobj.group(1) + matchobj.group(2) + '#' * len(matchobj.group(3))
+
+def mask_comments(input):
+ # This is used to mask the quoted strings so we skip braces inside
+ # quoted strings.
+ search_re = re.compile(r'(.*?)(#)(.*)')
+ return [search_re.sub(comment_replace, line) for line in input]
+
+def quote_replace(matchobj):
+ return "%s%s%s%s" % (matchobj.group(1),
+ matchobj.group(2),
+ 'x'*len(matchobj.group(3)),
+ matchobj.group(2))
+
+def mask_quotes(input):
+ # This is used to mask the quoted strings so we skip braces inside
+ # quoted strings.
+ search_re = re.compile(r'(.*?)' + quote_re_str)
+ return [search_re.sub(quote_replace, line) for line in input]
+
+def do_split(input, masked_input, search_re):
+ output = []
+ mask_output = []
+ for (line, masked_line) in zip(input, masked_input):
+ m = search_re.match(masked_line)
+ while m:
+ split = len(m.group(1))
+ line = line[:split] + r'\n' + line[split:]
+ masked_line = masked_line[:split] + r'\n' + masked_line[split:]
+ m = search_re.match(masked_line)
+ output.extend(line.split(r'\n'))
+ mask_output.extend(masked_line.split(r'\n'))
+ return (output, mask_output)
+
+# This masks out the quotes and comments, and then splits appropriate
+# lines (lines that matche the double_*_brace re's above) before
+# indenting them below.
+def split_double_braces(input):
+ # These are used to split lines which have multiple braces on them, so
+ # that the indentation looks prettier when all laid out (e.g. closing
+ # braces make a nice diagonal line).
+ double_open_brace_re = re.compile(r'(.*?[\[\{\(,])(\s*)([\[\{\(])')
+ double_close_brace_re = re.compile(r'(.*?[\]\}\)],?)(\s*)([\]\}\)])')
+
+ masked_input = mask_quotes(input)
+ masked_input = mask_comments(masked_input)
+
+ (output, mask_output) = do_split(input, masked_input, double_open_brace_re)
+ (output, mask_output) = do_split(output, mask_output, double_close_brace_re)
+
+ return output
+
+# This keeps track of the number of braces on a given line and returns
+# the result. It starts at zero and subtracts for closed braces, and
+# adds for open braces.
+def count_braces(line):
+ open_braces = ['[', '(', '{']
+ close_braces = [']', ')', '}']
+ closing_prefix_re = re.compile(r'(.*?[^\s\]\}\)]+.*?)([\]\}\)],?)\s*$')
+ cnt = 0
+ stripline = comment_re.sub(r'', line)
+ stripline = quote_re.sub(r"''", stripline)
+ for char in stripline:
+ for brace in open_braces:
+ if char == brace:
+ cnt += 1
+ for brace in close_braces:
+ if char == brace:
+ cnt -= 1
+
+ after = False
+ if cnt > 0:
+ after = True
+
+ # This catches the special case of a closing brace having something
+ # other than just whitespace ahead of it -- we don't want to
+ # unindent that until after this line is printed so it stays with
+ # the previous indentation level.
+ if cnt < 0 and closing_prefix_re.match(stripline):
+ after = True
+ return (cnt, after)
+
+# This does the main work of indenting the input based on the brace counts.
+def prettyprint_input(lines):
+ indent = 0
+ basic_offset = 2
+ last_line = ""
+ for line in lines:
+ if comment_re.match(line):
+ print line
+ else:
+ line = line.strip('\r\n\t ') # Otherwise doesn't strip \r on Unix.
+ if len(line) > 0:
+ (brace_diff, after) = count_braces(line)
+ if brace_diff != 0:
+ if after:
+ print " " * (basic_offset * indent) + line
+ indent += brace_diff
+ else:
+ indent += brace_diff
+ print " " * (basic_offset * indent) + line
+ else:
+ print " " * (basic_offset * indent) + line
+ else:
+ print ""
+ last_line = line
+
+# Split up the double braces.
+lines = split_double_braces(input)
+
+# Indent and print the output.
+prettyprint_input(lines)
diff --git a/src/3rdparty/webkit/Source/WebCore/ChangeLog b/src/3rdparty/webkit/Source/WebCore/ChangeLog
index f112cba..41d2ba7 100644
--- a/src/3rdparty/webkit/Source/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/Source/WebCore/ChangeLog
@@ -1,3 +1,1047 @@
+2011-08-25 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org>
+
+ [Qt] Enable password echo on Symbian builds
+ https://bugs.webkit.org/show_bug.cgi?id=66954
+
+ Reviewed by Chang Shu.
+
+ No tests, as this is just a build change.
+
+ * config.h:
+
+2011-08-23 Chang Shu <cshu@webkit.org>
+
+ Added support for momentarily revealing last typed character in password input.
+ Code change was partially based on Apple's iOS code and Samuel Nevala's work.
+ https://bugs.webkit.org/show_bug.cgi?id=32509
+
+ Reviewed by Alexey Proskuryakov.
+
+ * editing/InsertIntoTextNodeCommand.cpp:
+ (WebCore::InsertIntoTextNodeCommand::doApply):
+ * rendering/RenderText.cpp:
+ (WebCore::SecureTextTimer::SecureTextTimer):
+ (WebCore::SecureTextTimer::restartWithNewText):
+ (WebCore::SecureTextTimer::invalidate):
+ (WebCore::SecureTextTimer::lastTypedCharacterOffset):
+ (WebCore::SecureTextTimer::fired):
+ (WebCore::RenderText::willBeDestroyed):
+ (WebCore::RenderText::setTextInternal):
+ (WebCore::RenderText::secureText):
+ (WebCore::RenderText::momentarilyRevealLastTypedCharacter):
+ * rendering/RenderText.h:
+ (WebCore::RenderText::isSecure):
+ * testing/Internals.cpp:
+ (WebCore::Internals::setPasswordEchoEnabled): Fixed some silly coding in Internals.
+ (WebCore::Internals::setPasswordEchoDurationInSeconds):
+ (WebCore::Internals::reset):
+
+2011-07-08 Chang Shu <cshu@webkit.org>
+
+ Update calling sites after function renamed.
+ https://bugs.webkit.org/show_bug.cgi?id=59114
+
+ Reviewed by Alexey Proskuryakov.
+
+ No new tests, just refactoring.
+
+ * editing/visible_units.cpp:
+ (WebCore::previousBoundary):
+ (WebCore::nextBoundary):
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::setTextInternal):
+
+2011-08-18 Chang Shu <cshu@webkit.org>
+
+ Add support of setPasswordEchoEnabled and setPasswordEchoDuration for password echo feature
+ https://bugs.webkit.org/show_bug.cgi?id=66052
+
+ Reviewed by Alexey Proskuryakov.
+
+ Added runtime settings in WebCore.
+ Added support in window.internals for testing.
+
+ Tests: editing/input/password-echo-passnode.html
+ editing/input/password-echo-passnode2.html
+ editing/input/password-echo-passnode3.html
+ editing/input/password-echo-textnode.html
+
+ * page/Settings.cpp:
+ (WebCore::Settings::Settings):
+ * page/Settings.h:
+ (WebCore::Settings::setPasswordEchoEnabled):
+ (WebCore::Settings::passwordEchoEnabled):
+ (WebCore::Settings::setPasswordEchoDurationInSeconds):
+ (WebCore::Settings::passwordEchoDurationInSeconds):
+ * testing/Internals.cpp:
+ (WebCore::Internals::Internals):
+ (WebCore::Internals::setPasswordEchoEnabled):
+ (WebCore::Internals::setPasswordEchoDurationInSeconds):
+ (WebCore::Internals::reset):
+ * testing/Internals.h:
+ * testing/Internals.idl:
+
+2011-08-16 Chang Shu <cshu@webkit.org>
+
+ Support reset in WebCore::Internals
+ https://bugs.webkit.org/show_bug.cgi?id=66307
+
+ Reviewed by Dimitri Glazkov.
+
+ New tests will be added when function reset is implemented.
+
+ Added framework code in WebCoreTestSupport. The real implementation of
+ Internals::reset() depends on the need from the settings that require a reset.
+
+ * testing/Internals.cpp:
+ (WebCore::Internals::reset):
+ * testing/Internals.h:
+ * testing/js/WebCoreTestSupport.cpp:
+ (WebCoreTestSupport::resetInternalsObject):
+ * testing/js/WebCoreTestSupport.h:
+ * testing/v8/WebCoreTestSupport.cpp:
+ (WebCoreTestSupport::resetInternalsObject):
+ * testing/v8/WebCoreTestSupport.h:
+
+2011-06-09 Robert Hogan <robert@webkit.org>
+
+ Reviewed by Andreas Kling.
+
+ Teach Qt about window.internals
+ https://bugs.webkit.org/show_bug.cgi?id=61074
+
+ A weakness of the Qt DRT setup is that things like JSContextRef are abstracted
+ away from the QtWebKit API so we need DumpRenderTreeSupportQt to access WebCore internals.
+ Since the window.internals object requires JSContextRef we need to implement it in DumpRenderTreeSupportQt
+ where we can access it. DumpRenderTreeSupportQt cannot be compiled outside Qt's WebCore and as it
+ is our only possible route into the WebCoreTestSupport class neither can the new window.internals plumbing.
+ Likewise we can't put the accessor in WebCoreTestSupport because it would then need to know about QWebFrame
+ and others. The only alternative seems like a compile time guard which we would have to teach the bots about.
+
+ * CodeGenerators.pri:
+ * WebCore.pri:
+ * WebCore.pro:
+
+2011-06-02 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Add build logistics and plumbing for window.internals object.
+ https://bugs.webkit.org/show_bug.cgi?id=60313
+
+ Test: fast/harness/internals-object.html
+
+ * Configurations/WebCoreTestSupport.xcconfig: Added.
+ * DerivedSources.make: Added support for generating from Internals.idl.
+ * WebCore.gyp/WebCore.gyp: Added new webcore_test_support library.
+ * WebCore.gypi: Ditto.
+ * WebCore.xcodeproj/project.pbxproj: Added WebCoreTestSupport library.
+ * testing/Internals.cpp: Added.
+ * testing/Internals.h: Added.
+ * testing/Internals.idl: Added.
+ * testing/js/WebCoreTestSupport.cpp: Added.
+ * testing/js/WebCoreTestSupport.h: Added.
+ * testing/v8/WebCoreTestSupport.cpp: Added.
+ * testing/v8/WebCoreTestSupport.h: Added.
+
+2011-08-22 Abhishek Arya <inferno@chromium.org>
+
+ Crash in FocusController::advanceFocusInDocumentOrder
+ https://bugs.webkit.org/show_bug.cgi?id=66678
+
+ RefPtr the focusable node to prevent getting deleted by mutation
+ event.
+
+ Reviewed by Dave Hyatt.
+
+ Test: fast/frames/focus-controller-crash-change-event.html
+
+ * page/FocusController.cpp:
+ (WebCore::FocusController::advanceFocusInDocumentOrder):
+
+2011-08-18 Ryosuke Niwa <rniwa@webkit.org>
+
+ SimplifiedBackwardsTextIterator returns incorrect offset with first-letter rule
+ https://bugs.webkit.org/show_bug.cgi?id=66086
+
+ Reviewed by Darin Adler.
+
+ The bug was caused by SimplifiedBackwardsTextIterator's not taking care of first-letter at all.
+ Fixing the bug by detecting RenderTextFragment in handleTextNode.
+
+ Also added m_shouldHandleFirstLetter to SimplifiedBackwardsTextIterator to keep track of whether or not
+ the next call to handleTextNode needs to process the first-letter part of the text fragment.
+
+ Test: editing/text-iterator/backward-textiterator-first-letter-crash.html
+
+ * editing/TextIterator.cpp:
+ (WebCore::firstRenderTextInFirstLetter): Extracted from handleTextNodeFirstLetter.
+ (WebCore::TextIterator::handleTextNodeFirstLetter): Calls firstRenderTextInFirstLetter.
+ (WebCore::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator):
+ (WebCore::SimplifiedBackwardsTextIterator::handleTextNode):
+ (WebCore::SimplifiedBackwardsTextIterator::handleFirstLetter): Added.
+ * editing/TextIterator.h:
+
+2011-08-23 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Fix build on Lion
+
+ https://bugs.webkit.org/show_bug.cgi?id=66770
+
+ Reviewed by Andreas Kling.
+
+ We were mistakenly picking up mac/WebCoreSystemInterface.h instead of
+ the Qt one, and building on Lion revealed this when a typedef for
+ IOSurfaceRef was wrapped in PLATFORM(MAC).
+
+ For now we fix this by including WebCoreSystemInterface using
+ brackets, so that we'll pick up the right file based on the
+ include paths. This also means exposing a few missing enums
+ in our own version of the file, so those were added.
+
+ Lasty, we need to link against the right system interface library
+ on Lion.
+
+ * platform/mac/WebVideoFullscreenHUDWindowController.mm:
+ * platform/qt/WebCoreSystemInterface.h:
+
+2011-08-08 Cris Neckar <cdn@chromium.org>
+
+ Remove counter nodes from the tree and fix-up children when they are removed from the counter map.
+ https://bugs.webkit.org/show_bug.cgi?id=65346
+
+ Reviewed by Adam Barth.
+
+ Covered by existing CSS counter tests.
+
+ * rendering/CounterNode.cpp:
+ (WebCore::CounterNode::~CounterNode):
+
+2011-08-17 Oliver Hunt <oliver@apple.com>
+
+ Move towards supporting user controlled prototypes on CanvasPixelArray
+ https://bugs.webkit.org/show_bug.cgi?id=66429
+
+ Reviewed by Gavin Barraclough.
+
+ Start using a per-global object structure for canvas pixel array.
+
+ * bindings/js/JSImageDataCustom.cpp:
+ (WebCore::toJS):
+
+2011-08-17 Abhishek Arya <inferno@chromium.org>
+
+ Crash in Document::recalcStyleSelector
+ https://bugs.webkit.org/show_bug.cgi?id=66335
+
+ Reviewed by Simon Fraser.
+
+ When node is getting destroyed and its removedFromDocument
+ is not called due to entire document structure torn down(using
+ removeAllChildren), make sure to clear out the stylesheet
+ candidate node from document's structures in its destructor.
+
+ Test: svg/dom/stylesheet-candidate-node-crash-main.html
+
+ * dom/ProcessingInstruction.cpp:
+ (WebCore::ProcessingInstruction::~ProcessingInstruction):
+ * html/HTMLLinkElement.cpp:
+ (WebCore::HTMLLinkElement::~HTMLLinkElement):
+ * html/HTMLStyleElement.cpp:
+ (WebCore::HTMLStyleElement::~HTMLStyleElement):
+ * svg/SVGStyleElement.cpp:
+ (WebCore::SVGStyleElement::~SVGStyleElement):
+
+2011-08-12 Abhishek Arya <inferno@chromium.org>
+
+ Crash in WebCore::editingIgnoresContent
+ https://bugs.webkit.org/show_bug.cgi?id=66125
+
+ Reviewed by Ryosuke Niwa.
+
+ RefPtr a few nodes in case they get blown away in
+ dispatchEvent calls.
+
+ Test: editing/selection/select-start-remove-root-crash.html
+
+ * editing/FrameSelection.cpp:
+ (WebCore::FrameSelection::selectAll):
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplacementFragment::ReplacementFragment):
+
+2011-08-13 Abhishek Arya <inferno@chromium.org>
+
+ Crash in HTMLTreeBuilder::processAnyOtherEndTagForInBody
+ https://bugs.webkit.org/show_bug.cgi?id=66187
+
+ Reviewed by Adam Barth.
+
+ RefPtr a few ContainerNodes to prevent premature deletion.
+
+ Test: fast/html/process-end-tag-for-inbody-crash.html
+
+ * html/parser/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processCloseWhenNestedTag):
+ (WebCore::HTMLTreeBuilder::processAnyOtherEndTagForInBody):
+ (WebCore::HTMLTreeBuilder::callTheAdoptionAgency):
+
+2011-08-10 Abhishek Arya <inferno@chromium.org>
+
+ Check that we do not need layout before trying to dirty
+ m_originatingLine for our floats.
+ https://bugs.webkit.org/show_bug.cgi?id=65938
+
+ Reviewed by Dave Hyatt.
+
+ Test: fast/block/float/float-originating-line-deleted-crash.html
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::removeFloatingObject):
+ (WebCore::RenderBlock::clearFloats):
+
+2011-08-11 Alexis Menard <alexis.menard@openbossa.org>
+
+ Unreviewed build fix for Qt.
+
+ Make sure we build when Qt is namespaced.
+
+ * platform/graphics/gstreamer/PlatformVideoWindowPrivate.h:
+
+2011-08-06 Aron Rosenberg <arosenberg@logitech.com>
+
+ Reviewed by Benjamin Poulain.
+
+ [Qt] Fix build with Intel compiler on Windows
+ https://bugs.webkit.org/show_bug.cgi?id=65088
+
+ Intel compiler needs .lib suffixes instead of .a
+
+ * WebCore.pri:
+
+2011-08-03 Kent Tamura <tkent@chromium.org>
+
+ Fix incorrect checks for HTMLMediaElement
+ https://bugs.webkit.org/show_bug.cgi?id=65590
+
+ Reviewed by Dimitri Glazkov.
+
+ <video> and <audio> can be an HTMLElement instance instead of
+ HTMLMediaElement if MediaPlayer::isAvailable() returns false or
+ the media feature is disabled at runtime.
+
+ * html/HTMLSourceElement.cpp:
+ (WebCore::HTMLSourceElement::insertedIntoTree):
+ (WebCore::HTMLSourceElement::willRemove):
+ * html/HTMLTrackElement.cpp:
+ (WebCore::HTMLTrackElement::insertedIntoTree):
+ (WebCore::HTMLTrackElement::willRemove):
+ * html/shadow/MediaControlElements.cpp:
+ (WebCore::toParentMediaElement):
+ * page/FrameView.cpp:
+ (WebCore::FrameView::updateWidget):
+ * platform/efl/RenderThemeEfl.cpp:
+ (WebCore::RenderThemeEfl::paintMediaMuteButton):
+ * platform/gtk/RenderThemeGtk.cpp:
+ (WebCore::getMediaElementFromRenderObject):
+ * rendering/RenderThemeMac.mm:
+ (WebCore::RenderThemeMac::paintMediaSliderTrack):
+ * rendering/RenderThemeWinCE.cpp:
+ (WebCore::mediaElementParent):
+
+2011-07-28 Abhishek Arya <inferno@chromium.org>
+
+ Regression(82144): Crash in TrailingObjects::updateMidpointsForTrailingBoxes
+ https://bugs.webkit.org/show_bug.cgi?id=65137
+
+ Fix the looping condition to prevent trailingSpaceMidpoint from becoming negative.
+
+ Reviewed by Dave Hyatt.
+
+ Test: fast/block/update-midpoints-for-trailing-boxes-crash.html
+
+ * rendering/RenderBlockLineLayout.cpp:
+ (WebCore::TrailingObjects::updateMidpointsForTrailingBoxes):
+
+2011-08-01 Jochen Eisinger <jochen@chromium.org>
+
+ Never override the policy URL on form submissions.
+ https://bugs.webkit.org/show_bug.cgi?id=61809
+
+ Reviewed by Adam Barth.
+
+ Tests: http/tests/security/cookies/third-party-cookie-blocking-main-frame.html
+ http/tests/security/cookies/third-party-cookie-blocking-user-action.html
+ http/tests/security/cookies/third-party-cookie-blocking.html
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::loadURL):
+ (WebCore::FrameLoader::addExtraFieldsToSubresourceRequest):
+ (WebCore::FrameLoader::addExtraFieldsToMainResourceRequest):
+ (WebCore::FrameLoader::addExtraFieldsToRequest):
+ (WebCore::FrameLoader::loadPostRequest):
+ (WebCore::FrameLoader::loadDifferentDocumentItem):
+ * loader/FrameLoader.h:
+
+
+2011-07-27 Alexis Menard <alexis.menard@openbossa.org>
+
+ [Qt] Unreviewed build fix for mac.
+
+ QtKit is now our default media player, the define is WTF_USE_QTKIT and it's not part
+ of the options passed to build-webkit, therefore DerivedSources should now generate the
+ includes when it's mac.
+
+ * DerivedSources.pro:
+ * WebCore.pro:
+
+2011-07-07 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ Partial layout when a flex-box has visibility: collapse
+ https://bugs.webkit.org/show_bug.cgi?id=63776
+
+ Tests: fast/flexbox/crash-button-input-autofocus.html
+ fast/flexbox/crash-button-keygen.html
+ fast/flexbox/crash-button-relayout.html
+
+ The issue is that FlexBoxIterator would skip any child if it has visibility: collapsed.
+ However if one of the child is anonymous, it may wrap some other child that would be skipped.
+ Now FlexBoxIterator is called during the layout phase and thus some nodes would not relayouted
+ as expected.
+
+ * rendering/RenderDeprecatedFlexibleBox.cpp:
+ (WebCore::FlexBoxIterator::next): When iterating, don't skip anonymous content as there may
+ be real content hiding below.
+
+2011-06-30 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ Update SVG position values on SVG DOM updates
+ https://bugs.webkit.org/show_bug.cgi?id=62439
+
+ Test: svg/custom/crash-textPath-attributes.html
+
+ * rendering/svg/RenderSVGInline.cpp:
+ (WebCore::RenderSVGInline::destroy): Notify our containing RenderSVGText that it needs
+ to update its positioning information.
+
+ * rendering/svg/SVGInlineFlowBox.cpp:
+ (WebCore::SVGInlineFlowBox::calculateBoundaries): Check the type of the InlineBox
+ like the rest of the code (fixes an ASSERT_NOT_REACHED in InlineBox::calculateBoudaries).
+
+ * rendering/svg/SVGTextLayoutAttributesBuilder.cpp:
+ (WebCore::SVGTextLayoutAttributesBuilder::buildLayoutAttributesForTextSubtree): Clear
+ our cached layout attributes every time we invalidate them. This avoids keeping stale
+ attribute that have a backpointer to a RenderObject.
+
+2011-07-13 John Knottenbelt <jknotten@chromium.org>
+
+ Reference Geolocation object from GeoNotifier and Geolocation::setIsAllowed.
+ https://bugs.webkit.org/show_bug.cgi?id=64363
+
+ Reviewed by Tony Gentilcore.
+
+ Test: fast/dom/Geolocation/remove-remote-context-in-error-callback-crash.html
+
+ * page/Geolocation.cpp:
+ (WebCore::Geolocation::setIsAllowed):
+ * page/Geolocation.h:
+
+2011-06-26 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Kent Tamura.
+
+ m_formElementsWithFormAttribute doesn't ref the objects it holds
+ https://bugs.webkit.org/show_bug.cgi?id=62956
+
+ Test: fast/forms/form-associated-element-crash3.html
+
+ * dom/Document.h:
+
+2011-05-26 David Levin <levin@chromium.org>
+
+ Reviewed by Dmitry Titov.
+
+ WebKit's font notification has problems when the WebKit main thread != UI thread.
+ https://bugs.webkit.org/show_bug.cgi?id=61391
+
+ This doesn't happen in DumpRenderTree, so it needs a unit test which is taking me
+ some time to write correctly. In the meantime, this issues happens to be causing
+ some crashes in Chrome so here's the fix alone for the time being.
+
+ * platform/graphics/mac/FontCacheMac.mm:
+ (WebCore::invalidateFontCache): Ensure that FontCache::invalidate is only called on WebKit's main thread.
+ (WebCore::fontCacheRegisteredFontsChangedNotificationCallback): Call common function for font cache invalidation.
+ Note that the call to fontCache() is fine since the singleton is initialized well before calling this function. Theoretically,
+ there could be a problem due to a lack of a memory barrier but that is highly unlikely and this is debug only code.
+ (WebCore::fontCacheATSNotificationCallback): Ditto.
+
+2011-07-07 Gavin Peters <gavinp@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ fast/dom/HTMLLinkElement/link-and-subresource-test.html is flaky on chromium debug bots
+ https://bugs.webkit.org/show_bug.cgi?id=60097
+
+ The culprit was that CachedResource:stopLoading() was using *this
+ after a call to checkNotify(), which isn't kosher. This patch
+ uses a CachedResourceHandle to keep the CachedResource alive.
+
+ The test is a very close copy of the eponymous
+ link-and-subresource-test.html, only substituting invalid
+ resources for the valid ones in that test. The reproduction is
+ timing related, and happens much more consistantly with an invalid
+ resource for whatever reason.
+ Test: fast/dom/HTMLLinkElement/link-and-subresource-test-nonexistent.html
+
+ * loader/cache/CachedResource.cpp:
+ (WebCore::CachedResource::stopLoading):
+
+2011-06-08 Mikołaj Małecki <m.malecki@samsung.com>
+
+ Reviewed by Pavel Feldman.
+
+ Web Inspector: Crash by buffer overrun crash when serializing inspector object tree.
+ https://bugs.webkit.org/show_bug.cgi?id=52791
+
+ No new tests. The problem can be reproduced by trying to create InspectorValue
+ from 1.0e-100 and call ->toJSONString() on this.
+
+ * inspector/InspectorValues.cpp:
+ (WebCore::InspectorBasicValue::writeJSON):
+ Added checking the predicted buffer size and choosing exponential format, or
+ eventually "NaN" if the buffer is too small for decimal format.
+
+2011-07-26 Alexis Menard <alexis.menard@openbossa.org>
+
+ [Qt] Disable video support on linux if the dependencies are not found.
+
+ If we can't find the necessary dependencies to build the GStreamer media player
+ we disable the video support. This is related to http://trac.webkit.org/changeset/91752.
+
+ Reviewed by Holger Freyther.
+
+ No new tests, it's a build fix.
+
+ * features.pri:
+
+2011-07-26 Alexis Menard <alexis.menard@openbossa.org>
+
+ Reviewed by Andreas Kling.
+
+ [Qt] Change default backend to use GStreamer on Linux and QuickTime on Mac.
+ https://bugs.webkit.org/show_bug.cgi?id=63472
+
+ Enable the GStreamer backend and the QuickTime backend as default media players
+ for the Qt port on Mac and Linux. QtMultimedia is now a fallback option that you
+ can enable by passing DEFINES+=USE_QT_MULTIMEDIA=1 to enforce its usage.
+
+ No new tests. The media layout tests are disabled on the Qt port but hopefully with this
+ switch we can enable them again.
+
+ * WebCore.pri:
+ * WebCore.pro:
+ * features.pri:
+
+2011-06-23 Alexis Menard <alexis.menard@openbossa.org>
+
+ Reviewed by Eric Carlson.
+
+ [Qt] Implement fullscreen support on Mac with the QuickTime backend.
+ https://bugs.webkit.org/show_bug.cgi?id=61728
+
+ Implement fullscreen support for Qt when using the QuickTime backend.
+ We mostly use what is already done for the Mac port.
+
+ * DerivedSources.pro: We use the mac files and they have <WebCore/x> type
+ of includes. We need to generate those headers.
+ * WebCore.pro:
+ * platform/mac/WebVideoFullscreenController.h:
+ * platform/mac/WebVideoFullscreenController.mm:
+ * platform/mac/WebVideoFullscreenHUDWindowController.h:
+ * platform/mac/WebVideoFullscreenHUDWindowController.mm:
+ * platform/qt/WebCoreSystemInterface.h:
+ * platform/qt/WebCoreSystemInterface.mm:
+
+2011-06-21 Alexey Proskuryakov <ap@apple.com>
+
+ Fix Mac build in some configurations.
+
+ * platform/mac/WebCoreSystemInterface.h: Added an enum matching WKSI one, since we cannot use
+ WKSI in WebCore.
+
+ * platform/mac/WebVideoFullscreenHUDWindowController.mm: Removed an include of WebKitSystemInterface.h.
+ It's not meant to be used from WebCore, and if included, a wrong copy may be used.
+ (createControlWithMediaUIControlType): Added a FIXME about problems with Leopard build.
+ (-[WebVideoFullscreenHUDWindowController windowDidLoad]): Ditto. Switched enum values to
+ WCSI style (lower level "wk").
+
+2011-06-20 Jer Noble <jer.noble@apple.com>
+
+ Unreviewed build fix; Fix Leopard WebCore build.
+
+ * platform/mac/WebVideoFullscreenHUDWindowController.mm: On Leopard, NSWindowDelegate
+ is a category, not a protocol.
+
+2011-06-20 Jer Noble <jer.noble@apple.com>
+
+ Unreviewed build fix; Fix 32-bit build.
+
+ Code recently moved from WebKit -> WebCore does not pass WebCore's more strict compiler warnings. Use
+ CGFloat, and float constants wherever possible, and use narrowPrecisionToFloat() where not.
+
+ * WebCore.xcodeproj/project.pbxproj: Add '-Wno-undef' flag for WebVideoFullScreenController.mm
+ * platform/mac/WebVideoFullscreenController.mm:
+ (constrainFrameToRatioOfFrame): Use CGFloat instead of Double.
+ (-[WebVideoFullscreenWindow animateFromRect:toRect:withSubAnimation:controllerAction:]): Use float constant.
+ * platform/mac/WebVideoFullscreenHUDWindowController.mm:
+ (-[WebVideoFullscreenHUDWindowController updateVolume]): Use float for volume.
+ (-[WebVideoFullscreenHUDWindowController maxVolume]): Ditto.
+ (-[WebVideoFullscreenHUDWindowController volumeChanged:]): Ditto.
+ (-[WebVideoFullscreenHUDWindowController decrementVolume]): Ditto.
+ (-[WebVideoFullscreenHUDWindowController incrementVolume]): Ditto.
+ (-[WebVideoFullscreenHUDWindowController volume]): Ditto.
+ (-[WebVideoFullscreenHUDWindowController setVolume:]): Ditto.
+ (timeToString): Narrow precision to float when converting to seconds.
+ * platform/mac/WebWindowAnimation.mm:
+ (scaledRect): Use CGFloat.
+ (-[WebWindowScaleAnimation init]): Use float constant.
+ (-[WebWindowScaleAnimation currentValue]): Ditto.
+ (-[WebWindowScaleAnimation additionalDurationNeededToReachFinalFrame]): Ditto.
+ (-[WebWindowFadeAnimation currentAlpha]): Ditto.
+
+2011-06-01 Jer Noble <jer.noble@apple.com>
+
+ Reviewed by Eric Carlson.
+
+ Move Full Screen Controllers into WebCore.
+
+ Remove dependency on QTKit from wekitExitFullscreen()
+ https://bugs.webkit.org/show_bug.cgi?id=61843
+
+ No new tests; the existing media full screen tests are sufficient.
+
+ * WebCore.exp.in: Add new exports.
+ * WebCore.xcodeproj/project.pbxproj: Add references to moved files.
+ * platform/mac/WebCoreSystemInterface.h: Add new WCSI interfaces to WKSI functions.
+ * platform/mac/WebCoreSystemInterface.mm:
+ * platform/mac/WebVideoFullscreenController.h: Renamed from Source/WebKit/mac/WebView/WebVideoFullscreenController.h.
+ * platform/mac/WebVideoFullscreenController.mm: Renamed from Source/WebKit/mac/WebView/WebVideoFullscreenController.mm.
+
+ The following functions have had UNUSED_PARAM added:
+ (-[WebVideoFullscreenController applicationDidResignActive:]):
+ (-[WebVideoFullscreenController applicationDidChangeScreenParameters:]):
+ (-[WebVideoFullscreenWindow mouseMoved:]):
+
+Source/WebKit/mac/WebView/WebVideoFullscreenHUDWindowController.h.
+ * platform/mac/WebVideoFullscreenHUDWindowController.mm: Renamed from Source/WebKit/mac/WebView/WebVideoFullscreenHUDWindowController.mm.
+
+ The following functions have had UNUSED_PARAM added:
+ (-[WebVideoFullscreenHUDWindow cancelOperation:]):
+ (-[WebVideoFullscreenHUDWindowController timelinePositionChanged:]):
+ (-[WebVideoFullscreenHUDWindowController setVolumeToZero:]):
+ (-[WebVideoFullscreenHUDWindowController setVolumeToMaximum:]):
+ (-[WebVideoFullscreenHUDWindowController togglePlaying:]):
+ (-[WebVideoFullscreenHUDWindowController mouseEntered:]):
+ (-[WebVideoFullscreenHUDWindowController mouseExited:]):
+ (-[WebVideoFullscreenHUDWindowController rewind:]):
+ (-[WebVideoFullscreenHUDWindowController fastForward:]):
+ (-[WebVideoFullscreenHUDWindowController windowDidExpose:]):
+ (-[WebVideoFullscreenHUDWindowController windowDidClose:]):
+
+ The following functions have had WKSI calls converted to WCSI ones:
+ (createControlWithMediaUIControlType):
+ (createTimeTextField):
+
+ * platform/mac/WebWindowAnimation.h: Renamed from Source/WebKit/mac/WebView/WebWindowAnimation.h.
+ * platform/mac/WebWindowAnimation.mm: Renamed from Source/WebKit/mac/WebView/WebWindowAnimation.m.
+ (WebWindowAnimationDurationFromDuration):
+
+ The following functions have had WKSI calls converted to WCSI ones:
+ (-[WebWindowScaleAnimation setCurrentProgress:]):
+ (-[WebWindowFadeAnimation initWithDuration:window:initialAlpha:finalAlpha:]):
+
+2011-07-27 Ryosuke Niwa <rniwa@webkit.org>
+
+ Calling window.find immediately after mutating the document crashes WebKit.
+ https://bugs.webkit.org/show_bug.cgi?id=65296
+
+ Reviewed by Darin Adler.
+
+ Don't forget to layout first.
+
+ Test: editing/text-iterator/find-after-mutation.html
+
+ * editing/TextIterator.cpp:
+ (WebCore::findPlainText):
+
+2011-07-27 MORITA Hajime <morrita@google.com>
+
+ Inconsistent state of TreeScope reference.
+ https://bugs.webkit.org/show_bug.cgi?id=65235
+
+ The tree scope pointers on shadow tree nodes didn't cleared.
+ even when the tree scope (shadow root) is destroyed.
+ This change clear these poitners before detaching the shadow root.
+
+ Reviewed by Dimitri Glazkov.
+
+ Test: fast/dom/shadow/tree-scope-crash.html
+
+ * dom/Element.cpp:
+ (WebCore::Element::removeShadowRoot):
+
+2011-05-22 Dominic Cooney <dominicc@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ When removing a shadow root, also remove it from the render tree.
+ https://bugs.webkit.org/show_bug.cgi?id=61245
+
+ Test: existing fast/dom/shadow/layout-tests-can-access-shadow.html
+
+ * dom/Element.cpp:
+ (WebCore::Element::removeShadowRoot): Call detach if attached.
+
+2011-07-22 Sergey Glazunov <serg.glazunov@gmail.com>
+
+ Perform the JavaScript navigation check on a complete URL
+ https://bugs.webkit.org/show_bug.cgi?id=65038
+
+ Reviewed by Adam Barth.
+
+ Test: http/tests/security/xss-DENIED-document-baseURI-javascript.html
+
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::setLocation):
+ (WebCore::DOMWindow::createWindow):
+ (WebCore::DOMWindow::open):
+
+2011-07-22 David Grogan <dgrogan@chromium.org>
+
+ Fix crash in IDBRequest::abort
+ https://bugs.webkit.org/show_bug.cgi?id=64740
+
+ Reviewed by Nate Chapin.
+
+ Tested manually with the testcase in the bug.
+
+ * storage/IDBRequest.cpp:
+ (WebCore::IDBRequest::~IDBRequest):
+ (WebCore::IDBRequest::abort):
+
+2011-07-25 Daniel Bates <dbates@rim.com>
+
+ REGRESSION (r85964): Improper relayout of some nested positioned elements
+ https://bugs.webkit.org/show_bug.cgi?id=64286
+
+ Reviewed by David Hyatt.
+
+ Fixes an issue when traversing up the containing block hierarchy after skipping
+ relatively positioned inlines.
+
+ When processing a positioned element we skip any intermediate inlines to get to
+ to enclosing block B, but don't use the containing block for B (call this P_B) to
+ properly continue traversing up the containing block hierarchy. So, B may be
+ considered again instead of looking at P_B. Hence, we don't set the correct dirty
+ bits for P_B and may not schedule a relayout with respect to the correct layout node.
+
+ Test: fast/block/positioning/relayout-nested-positioned-elements-crash.html
+
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::markContainingBlocksForLayout):
+
+2011-07-26 David Hyatt <hyatt@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=60778
+
+ Use after free because of line box culling optimization regression.
+
+ In the case of a child with no line box being removed (typically
+ a <br> in quirks mode), if there is no previous sibling with a line
+ box, then we have a potential problem with the culling optimization.
+
+ The culled inline may still have other leaf line box children, but
+ they may follow the removed <br>. In this case we can't rely on
+ them, since we need a line box that comes before the <br>.
+
+ The fix is to simply recur up to the parent if we are a culled inline
+ and could not find a previous line box.
+
+ Reviewed by Dan Bernstein.
+
+ Added editing/execCommand/crash-line-break-after-outdent.html
+
+ * rendering/RenderLineBoxList.cpp:
+ (WebCore::RenderLineBoxList::dirtyLinesFromChangedChild):
+
+2011-07-19 Abhishek Arya <inferno@chromium.org>
+
+ Crash when removing unrenderered nodes in replacement fragment.
+ https://bugs.webkit.org/show_bug.cgi?id=64801
+
+ Reviewed by Ryosuke Niwa.
+
+ Test: editing/pasteboard/replacement-fragment-remove-unrendered-node-crash.html
+
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplacementFragment::removeUnrenderedNodes):
+
+2011-07-21 Gavin Peters <gavinp@chromium.org>
+
+ Extend the protector of a CSS style sheet. Because checkLoaded() can recursively delete
+ parent style elements, the protector should be extended to include the parent call.
+
+ https://bugs.webkit.org/show_bug.cgi?id=64736
+
+ Reviewed by Simon Fraser.
+
+ Test: fast/css/css-imports-2.html
+
+ * css/CSSStyleSheet.cpp:
+ (WebCore::CSSStyleSheet::checkLoaded):
+
+2011-07-20 Tony Chang <tony@chromium.org>
+
+ Stale pointer due to floats not removed (flexible box display)
+ https://bugs.webkit.org/show_bug.cgi?id=64603
+
+ Reviewed by David Hyatt.
+
+ Flexbox items should avoid floats.
+
+ Test: fast/flexbox/horizontal-box-float-crash.html
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::avoidsFloats):
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::isDeprecatedFlexItem):
+
+2011-07-12 Hui Huang <Hui.2.Huang@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt] Fix compiling errors with QtWebkit 2.2 WINSCW build.
+ https://bugs.webkit.org/show_bug.cgi?id=64391
+
+ (QtWebKit-2.2 only, patch not in webkit trunk)
+
+ * bindings/generic/ActiveDOMCallback.cpp:
+ * css/CSSStyleSelector.h:
+ * page/PrintContext.cpp:
+ * page/PrintContext.h:
+ * platform/network/HTTPHeaderMap.cpp:
+ * xml/XPathFunctions.cpp:
+ * xml/XPathPredicate.cpp:
+ * xml/XPathResult.cpp:
+
+2011-07-16 Sergey Glazunov <serg.glazunov@gmail.com>
+
+ DOMWindow::open performs a security check on a wrong window
+ https://bugs.webkit.org/show_bug.cgi?id=64651
+
+ Reviewed by Adam Barth.
+
+ Test: http/tests/security/xss-DENIED-window-open-parent.html
+
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::open):
+
+2011-07-14 Adam Barth <abarth@webkit.org>
+
+ The beforeload event allows tracking URI changes in a frame
+ https://bugs.webkit.org/show_bug.cgi?id=64482
+
+ Reviewed by Nate Chapin.
+
+ Tests: http/tests/security/beforeload-iframe-client-redirect.html
+ http/tests/security/beforeload-iframe-server-redirect.html
+
+ Only dispatch the beforeload event for a frame if we haven't yet
+ committed our first real load. The URL that we send to our parent will
+ be the same URL the parent seens in the src attribute.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::loadWithDocumentLoader):
+
+2011-07-14 Tim Horton <timothy_horton@apple.com>
+
+ Clear SVGElementInstance's children immediately upon detachment
+ https://bugs.webkit.org/show_bug.cgi?id=63739
+ <rdar://problem/9705708>
+
+ Reviewed by Nikolas Zimmermann.
+
+ In addition to clearing the instance's children in the destructor,
+ clear them when the instance is detached from its <use>. This way,
+ we won't attempt to use them after we're detached but before the
+ destructor has been called.
+
+ Test: svg/custom/use-crash-using-children-before-destroy.svg
+
+ * svg/SVGElementInstance.cpp:
+ (WebCore::SVGElementInstance::~SVGElementInstance):
+ (WebCore::SVGElementInstance::clearChildren):
+ * svg/SVGElementInstance.h:
+ * svg/SVGUseElement.cpp:
+ (WebCore::SVGUseElement::detachInstance):
+
+2011-06-20 Andras Becsi <abecsi@webkit.org>
+
+ Reviewed by Csaba Osztrogonác.
+
+ make-hash-tools.pl: Perl 5.14 compatibility
+ https://bugs.webkit.org/show_bug.cgi?id=61890
+
+ No new tests needed.
+
+ * make-hash-tools.pl: Use if/elsif instead of switch/case.
+
+2011-07-13 Abhishek Arya <inferno@chromium.org>
+
+ Reviewed by Adam Barth.
+
+ Issue with Frame lifetime due to deletion in beforeload event.
+ https://bugs.webkit.org/show_bug.cgi?id=64457
+
+ Copy the Frame protector higher in the stack from loadWithDocumentLoader
+ to loadFrameRequest since any of loadPostRequest or loadURL can call
+ loadWithDocumentLoader, thereby dispatching the beforeload event and
+ blowing away the frame. This deleted frame will be later accessed in
+ the loadFrameRequest function causing a crash.
+
+ Test: fast/events/form-iframe-target-before-load-crash2.html
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::loadFrameRequest):
+ (WebCore::FrameLoader::loadWithDocumentLoader):
+
+2011-06-03 Yael Aharon <yael.aharon@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Frame flattening is broken with nested frames
+ https://bugs.webkit.org/show_bug.cgi?id=61491
+
+ Do not flatten offscreen iframes during frame flattening, as flattening might make them visible.
+
+ Test: fast/frames/flattening/iframe-flattening-out-of-view.html
+ fast/frames/flattening/iframe-flattening-out-of-view-and-scroll.html
+ fast/frames/flattening/iframe-flattening-out-of-view-scroll-and-relayout.html
+
+ * rendering/RenderIFrame.cpp:
+ (WebCore::RenderIFrame::flattenFrame):
+
+2011-06-23 Robert Hogan <robert@webkit.org>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Windowless Plugins : <input> cursor blinks even after transferring focus to plugin
+ https://bugs.webkit.org/show_bug.cgi?id=30355
+
+ Test: plugins/mouse-click-plugin-clears-selection.html
+
+ PluginView needs to use page->focusController()->setFocusedNode() when focusing a plugin
+ in order to clear the FrameSelection in the currently focused node. In its platform-specific
+ code Chromium already does this (WebPluginContainerImpl.cpp).
+
+ * WebCore.exp.in: Add symbol for FocusController::setFocusedNode
+ * plugins/PluginView.cpp:
+ (WebCore::PluginView::focusPluginElement): Using FocusController::setFocusedNode() makes
+ the call to FocusController:setFocusedFrame() and Document::setFocusedNode()
+ redundant, since it calls both.
+
+2011-06-30 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ Assertion failure in RenderSVGInlineText::characterStartsNewTextChunk
+ https://bugs.webkit.org/show_bug.cgi?id=63076
+
+ Tests: svg/custom/crash-text-in-textpath.svg
+ svg/custom/text-node-in-text-invalidated.svg
+
+ The problem was that we did not call setNeedsPositionUpdate on RenderSVGText. When
+ doing our layout, we would not update the attributes on our SVGRenderInlineText as
+ we would not lay it out.
+
+ This was caused by childrenChanged being overridden on SVGTextPositioningElement but
+ not on SVGTextPathElement.
+
+ As both classes shared the same mother class, it made sense to move the logic here.
+ There should be no other side effects as SVGTextPathElement and SVGTextPositioningElement
+ are the only classes deriving from SVGTextContentElement.
+
+ * svg/SVGTextContentElement.cpp:
+ (WebCore::SVGTextContentElement::childrenChanged): Moved this method from SVGTextPositioningElement.
+ * svg/SVGTextContentElement.h:
+ * svg/SVGTextPositioningElement.cpp:
+ (WebCore::SVGTextPositioningElement::svgAttributeChanged): Updated after updatePositioningValuesInRenderer
+ removal, replaced by RenderSVGText::locateRenderSVGTextAncestor.
+ * svg/SVGTextPositioningElement.h:
+
+2011-06-30 Abhishek Arya <inferno@chromium.org>
+
+ Reviewed by Ryosuke Niwa.
+
+ Crash when calling DOMSubtreeModified event when extracting range
+ contents.
+ https://bugs.webkit.org/show_bug.cgi?id=63650
+
+ Convert a few nodes to RefPtrs and add commonRoot verification checks
+ for Range::processContents.
+
+ Tests: fast/dom/Range/range-extract-contents-event-fire-crash.html
+ fast/dom/Range/range-extract-contents-event-fire-crash2.html
+
+ * dom/Range.cpp:
+ (WebCore::childOfCommonRootBeforeOffset):
+ (WebCore::Range::processContents):
+ (WebCore::Range::processContentsBetweenOffsets):
+ (WebCore::Range::processAncestorsAndTheirSiblings):
+
+2011-06-23 Abhishek Arya <inferno@chromium.org>
+
+ Reviewed by James Robinson.
+
+ In RenderBlock, RenderWidget and RenderReplaced destroy functions,
+ call dirtyLinesFromChangedChild to tell our parent that we are going away.
+ https://bugs.webkit.org/show_bug.cgi?id=60307
+
+ Test: fast/block/child-not-removed-from-parent-lineboxes-crash.html
+ fast/block/block-not-removed-from-parent-lineboxes-crash.html
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::destroy):
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::destroy):
+ * rendering/RenderReplaced.h:
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::destroy):
+
+2011-05-05 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/9354979> REGRESSION (r83070-r83126): Conversation takes 10 seconds to load and makes mail unresponsive
+
+ Culled inlines were triggering some pathological line box tree groveling that isn't even necessary.
+ Removed the ancient code (that used to be in RenderFlow), since it made no sense in the RenderBlock case
+ (it was running for inline blocks, which was definitely not even the intent) or in the RenderInline case
+ (the object being removed has no effect on any lines).
+
+ Also tweaked culledInlineFirstLineBox and culledInlineLastLineBox to avoid bailing if the first replaced object that
+ is encountered has a null inlineBoxWrapper(). Just a slight speed optimization to avoid an extra null check.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::destroy):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::destroy):
+ (WebCore::RenderInline::culledInlineFirstLineBox):
+ (WebCore::RenderInline::culledInlineLastLineBox):
+
2011-06-28 Roland Steiner <rolandsteiner@chromium.org>
Reviewed by Eric Seidel.
@@ -242,17 +1286,6 @@
* loader/DocumentLoader.cpp: (WebCore::DocumentLoader::detachFromFrame): Rollout the fix
for bug 62764.
-2011-06-24 Alexis Menard <alexis.menard@openbossa.org>
-
- Unreviewed build fix.
-
- Build fix on Linux when using the GStreamer backend.
-
- No new tests, just a build fix.
-
- * platform/graphics/gstreamer/PlatformVideoWindowQt.cpp:
- (FullScreenVideoWindow::keyPressEvent):
-
2011-06-23 Abhishek Arya <inferno@chromium.org>
Reviewed by Adam Barth.
diff --git a/src/3rdparty/webkit/Source/WebCore/CodeGenerators.pri b/src/3rdparty/webkit/Source/WebCore/CodeGenerators.pri
index cc29660..db6f7af 100644
--- a/src/3rdparty/webkit/Source/WebCore/CodeGenerators.pri
+++ b/src/3rdparty/webkit/Source/WebCore/CodeGenerators.pri
@@ -509,6 +509,7 @@ IDL_BINDINGS += \
svg/SVGUseElement.idl \
svg/SVGViewElement.idl \
svg/SVGVKernElement.idl \
+ testing/Internals.idl \
webaudio/AudioBuffer.idl \
webaudio/AudioBufferSourceNode.idl \
webaudio/AudioChannelMerger.idl \
@@ -613,6 +614,7 @@ idl.commands = perl -I$$PWD/bindings/scripts $$idl.wkScript \
--include $$PWD/svg \
--include $$PWD/storage \
--include $$PWD/css \
+ --include $$PWD/testing \
--include $$PWD/webaudio \
--include $$PWD/workers \
--outputDir $$WC_GENERATED_SOURCES_DIR \
diff --git a/src/3rdparty/webkit/Source/WebCore/WebCore.exp.in b/src/3rdparty/webkit/Source/WebCore/WebCore.exp.in
index 83317a8..982a8ef 100644
--- a/src/3rdparty/webkit/Source/WebCore/WebCore.exp.in
+++ b/src/3rdparty/webkit/Source/WebCore/WebCore.exp.in
@@ -263,6 +263,7 @@ __ZN7WebCore12IconDatabase27checkIntegrityBeforeOpeningEv
__ZN7WebCore12IconDatabase5closeEv
__ZN7WebCore12IconDatabase9setClientEPNS_18IconDatabaseClientE
__ZN7WebCore12IconDatabaseC1Ev
+__ZN7WebCore12JSDOMWrapper34virtualFunctionToPreventWeakVtableEv
__ZN7WebCore12PopupMenuMacC1EPNS_15PopupMenuClientE
__ZN7WebCore12PrintContext12pagePropertyEPNS_5FrameEPKci
__ZN7WebCore12PrintContext13numberOfPagesEPNS_5FrameERKNS_9FloatSizeE
@@ -389,6 +390,7 @@ __ZN7WebCore15DatabaseTracker8setQuotaEPNS_14SecurityOriginEy
__ZN7WebCore15DatabaseTracker9setClientEPNS_21DatabaseTrackerClientE
__ZN7WebCore15FocusController10setFocusedEb
__ZN7WebCore15FocusController15setFocusedFrameEN3WTF10PassRefPtrINS_5FrameEEE
+__ZN7WebCore15FocusController14setFocusedNodeEPNS_4NodeEN3WTF10PassRefPtrINS_5FrameEEE
__ZN7WebCore15FocusController15setInitialFocusENS_14FocusDirectionEPNS_13KeyboardEventE
__ZN7WebCore15FocusController9setActiveEb
__ZN7WebCore15GraphicsContext12setFillColorERKNS_5ColorENS_10ColorSpaceE
@@ -1010,6 +1012,8 @@ __ZN7WebCore9makeRangeERKNS_15VisiblePositionES2_
__ZN7WebCore9pageCacheEv
__ZN7WebCore9plainTextEPKNS_5RangeENS_20TextIteratorBehaviorE
__ZN7WebCore9toElementEN3JSC7JSValueE
+__ZN7WebCore17cacheDOMStructureEPNS_17JSDOMGlobalObjectEPN3JSC9StructureEPKNS2_9ClassInfoE
+__ZN7WebCore21getCachedDOMStructureEPNS_17JSDOMGlobalObjectEPKN3JSC9ClassInfoE
__ZNK3JSC8Bindings10RootObject12globalObjectEv
__ZNK3WTF6String14createCFStringEv
__ZNK7WebCore5Frame26getDocumentBackgroundColorEv
@@ -1303,6 +1307,7 @@ __ZNK7WebCore9FrameView28isEnclosedInCompositingLayerEv
__ZNK7WebCore9PageCache10frameCountEv
__ZNK7WebCore9PageCache21autoreleasedPageCountEv
__ZTVN7WebCore12ChromeClientE
+__ZTVN7WebCore12JSDOMWrapperE
__ZTVN7WebCore16IconDatabaseBaseE
__ZTVN7WebCore17FileChooserClientE
__ZTVN7WebCore17FrameLoaderClientE
@@ -1325,6 +1330,8 @@ _wkCopyNSURLResponseStatusLine
_wkCopyRequestWithStorageSession
_wkCreateCTLineWithUniCharProvider
_wkCreateCustomCFReadStream
+_wkCreateMediaUIBackgroundView
+_wkCreateMediaUIControl
_wkCreateNSURLConnectionDelegateProxy
_wkCreatePrivateStorageSession
_wkCreateURLNPasteboardFlavorTypeName
@@ -1394,6 +1401,8 @@ _wkSignalCFReadStreamEnd
_wkSignalCFReadStreamError
_wkSignalCFReadStreamHasBytes
_wkSignedPublicKeyAndChallengeString
+_wkWindowSetAlpha
+_wkWindowSetScaledFrame
#if ENABLE(DOM_STORAGE)
__ZN7WebCore14StorageTracker17initializeTrackerERKN3WTF6StringE
@@ -1631,8 +1640,6 @@ __ZN3JSC8Bindings8InstanceC2EN3WTF10PassRefPtrINS0_10RootObjectEEE
__ZN3JSC8Bindings8InstanceD2Ev
__ZN7WebCore13IdentifierRep7isValidEPS0_
__ZN7WebCore16ScriptController16createRootObjectEPv
-__ZN7WebCore17cacheDOMStructureEPNS_17JSDOMGlobalObjectEPN3JSC9StructureEPKNS2_9ClassInfoE
-__ZN7WebCore21getCachedDOMStructureEPNS_17JSDOMGlobalObjectEPKN3JSC9ClassInfoE
__ZNK3JSC8Bindings13RuntimeObject12defaultValueEPNS_9ExecStateENS_22PreferredPrimitiveTypeE
__ZTVN3JSC13RuntimeMethodE
#endif
@@ -1800,6 +1807,9 @@ __ZNK7WebCore16HTMLMediaElement6volumeEv
__ZNK7WebCore16HTMLMediaElement7canPlayEv
__ZNK7WebCore16HTMLMediaElement12playbackRateEv
__ZNK7WebCore16HTMLMediaElement8durationEv
+__ZN7WebCore16HTMLMediaElement16returnToRealtimeEv
+__ZNK7WebCore16HTMLMediaElement12isFullscreenEv
+.objc_class_name_WebVideoFullscreenController
#endif
#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
diff --git a/src/3rdparty/webkit/Source/WebCore/WebCore.gypi b/src/3rdparty/webkit/Source/WebCore/WebCore.gypi
index e418f7f..7383db1 100644
--- a/src/3rdparty/webkit/Source/WebCore/WebCore.gypi
+++ b/src/3rdparty/webkit/Source/WebCore/WebCore.gypi
@@ -6054,6 +6054,17 @@
'xml/XSLTUnicodeSort.cpp',
'xml/XSLTUnicodeSort.h',
],
+ 'webcore_test_support_idl_files': [
+ 'testing/Internals.idl',
+ ],
+ 'webcore_test_support_files': [
+ 'testing/v8/WebCoreTestSupport.cpp',
+ 'testing/v8/WebCoreTestSupport.h',
+ 'testing/js/WebCoreTestSupport.cpp',
+ 'testing/js/WebCoreTestSupport.h',
+ 'testing/Internals.cpp',
+ 'testing/Internals.h',
+ ],
'webcore_resource_files': [
'English.lproj/Localizable.strings',
'English.lproj/localizedStrings.js',
diff --git a/src/3rdparty/webkit/Source/WebCore/WebCore.pri b/src/3rdparty/webkit/Source/WebCore/WebCore.pri
index 4ba1117..82311d2 100644
--- a/src/3rdparty/webkit/Source/WebCore/WebCore.pri
+++ b/src/3rdparty/webkit/Source/WebCore/WebCore.pri
@@ -48,14 +48,16 @@ v8 {
$$SOURCE_DIR/WebCore/bindings/v8 \
$$SOURCE_DIR/WebCore/bindings/v8/custom \
$$SOURCE_DIR/WebCore/bindings/v8/specialization \
- $$SOURCE_DIR/WebCore/bridge/qt/v8
+ $$SOURCE_DIR/WebCore/bridge/qt/v8 \
+ $$SOURCE_DIR/WebCore/testing/v8
} else {
WEBCORE_INCLUDEPATH = \
$$SOURCE_DIR/WebCore/bridge/jsc \
$$SOURCE_DIR/WebCore/bindings/js \
$$SOURCE_DIR/WebCore/bindings/js/specialization \
- $$SOURCE_DIR/WebCore/bridge/c
+ $$SOURCE_DIR/WebCore/bridge/c \
+ $$SOURCE_DIR/WebCore/testing/js
}
WEBCORE_INCLUDEPATH = \
@@ -110,6 +112,7 @@ WEBCORE_INCLUDEPATH = \
$$SOURCE_DIR/WebCore/svg/graphics \
$$SOURCE_DIR/WebCore/svg/graphics/filters \
$$SOURCE_DIR/WebCore/svg/properties \
+ $$SOURCE_DIR/WebCore/testing \
$$SOURCE_DIR/WebCore/webaudio \
$$SOURCE_DIR/WebCore/websockets \
$$SOURCE_DIR/WebCore/wml \
@@ -242,26 +245,22 @@ contains(DEFINES, WTF_USE_QT_BEARER=1) {
}
contains(DEFINES, ENABLE_VIDEO=1) {
- contains(DEFINES, USE_QTKIT=1) {
- DEFINES += WTF_USE_QTKIT=1
-
+ contains(DEFINES, WTF_USE_QTKIT=1) {
INCLUDEPATH += $$PWD/platform/graphics/mac
LIBS += -framework AppKit -framework AudioUnit \
-framework AudioToolbox -framework CoreAudio \
-framework QuartzCore -framework QTKit
- } else:contains(DEFINES, USE_GSTREAMER=1) {
- DEFINES += WTF_USE_GSTREAMER=1
+ } else:contains(DEFINES, WTF_USE_GSTREAMER=1) {
DEFINES += ENABLE_GLIB_SUPPORT=1
INCLUDEPATH += $$PWD/platform/graphics/gstreamer
PKGCONFIG += glib-2.0 gio-2.0 gstreamer-0.10 gstreamer-app-0.10 gstreamer-base-0.10 gstreamer-interfaces-0.10 gstreamer-pbutils-0.10 gstreamer-plugins-base-0.10 gstreamer-video-0.10
- } else:contains(MOBILITY_CONFIG, multimedia) {
+ } else:contains(DEFINES, WTF_USE_QT_MULTIMEDIA=1) {
CONFIG *= mobility
MOBILITY *= multimedia
- DEFINES += WTF_USE_QT_MULTIMEDIA=1
}
}
@@ -343,7 +342,7 @@ use_qt_mobile_theme: DEFINES += WTF_USE_QT_MOBILE_THEME=1
defineTest(prependWebCoreLib) {
pathToWebCoreOutput = $$ARGS/$$WEBCORE_DESTDIR
- win32-msvc*|wince* {
+ win32-msvc*|wince*|win32-icc {
LIBS = -l$$WEBCORE_TARGET $$LIBS
LIBS = -L$$pathToWebCoreOutput $$LIBS
POST_TARGETDEPS += $${pathToWebCoreOutput}$${QMAKE_DIR_SEP}$${WEBCORE_TARGET}.lib
diff --git a/src/3rdparty/webkit/Source/WebCore/WebCore.pro b/src/3rdparty/webkit/Source/WebCore/WebCore.pro
index 107ff35..a305549 100644
--- a/src/3rdparty/webkit/Source/WebCore/WebCore.pro
+++ b/src/3rdparty/webkit/Source/WebCore/WebCore.pro
@@ -222,7 +222,8 @@ v8 {
bindings/v8/custom/V8NotificationCenterCustom.cpp \
bindings/v8/custom/V8ConsoleCustom.cpp \
bindings/v8/custom/V8SQLTransactionSyncCustom.cpp \
- bindings/v8/V8WorkerContextErrorHandler.cpp
+ bindings/v8/V8WorkerContextErrorHandler.cpp \
+ testing/v8/WebCoreTestSupport.cpp
} else {
SOURCES += \
bindings/ScriptControllerBase.cpp \
@@ -374,7 +375,8 @@ v8 {
bridge/runtime_array.cpp \
bridge/runtime_method.cpp \
bridge/runtime_object.cpp \
- bridge/runtime_root.cpp
+ bridge/runtime_root.cpp \
+ testing/js/WebCoreTestSupport.cpp
}
SOURCES += \
@@ -1173,6 +1175,7 @@ SOURCES += \
rendering/style/StyleSurroundData.cpp \
rendering/style/StyleTransformData.cpp \
rendering/style/StyleVisualData.cpp \
+ testing/Internals.cpp \
xml/DOMParser.cpp \
xml/XMLHttpRequest.cpp \
xml/XMLHttpRequestProgressEventThrottle.cpp \
@@ -2420,6 +2423,7 @@ HEADERS += \
svg/SVGVKernElement.h \
svg/SVGZoomAndPan.h \
svg/SVGZoomEvent.h \
+ testing/Internals.h \
workers/AbstractWorker.h \
workers/DedicatedWorkerContext.h \
workers/DedicatedWorkerThread.h \
@@ -2934,31 +2938,43 @@ contains(DEFINES, ENABLE_VIDEO=1) {
bindings/js/JSAudioConstructor.cpp
}
- contains(DEFINES, USE_QTKIT=1) {
+ contains(DEFINES, WTF_USE_QTKIT=1) {
+ INCLUDEPATH += \
+ $$SOURCE_DIR/../WebKitLibraries/
+
HEADERS += \
platform/graphics/mac/MediaPlayerPrivateQTKit.h \
platform/mac/WebCoreObjCExtras.h \
platform/qt/WebCoreSystemInterface.h \
platform/mac/BlockExceptions.h \
- platform/mac/WebCoreObjCExtras.h
+ platform/mac/WebCoreObjCExtras.h \
+ platform/mac/WebVideoFullscreenController.h \
+ platform/mac/WebVideoFullscreenHUDWindowController.h \
+ platform/mac/WebWindowAnimation.h
+
SOURCES += \
+ platform/graphics/cg/IntRectCG.cpp \
+ platform/graphics/cg/FloatSizeCG.cpp \
+ platform/cf/SharedBufferCF.cpp \
+ platform/cf/KURLCFNet.cpp
+
+ OBJECTIVE_SOURCES += \
+ platform/qt/WebCoreSystemInterface.mm \
+ platform/mac/BlockExceptions.mm \
+ platform/mac/WebCoreObjCExtras.mm \
platform/graphics/mac/MediaPlayerPrivateQTKit.mm \
platform/mac/SharedBufferMac.mm \
platform/mac/KURLMac.mm \
platform/text/mac/StringMac.mm \
platform/graphics/mac/FloatSizeMac.mm \
platform/graphics/mac/IntRectMac.mm \
- platform/graphics/cg/IntRectCG.cpp \
- platform/graphics/cg/FloatSizeCG.cpp \
- platform/cf/SharedBufferCF.cpp \
- platform/cf/KURLCFNet.cpp \
- platform/qt/WebCoreSystemInterface.mm \
- platform/mac/BlockExceptions.mm \
- platform/mac/WebCoreObjCExtras.mm
+ platform/mac/WebVideoFullscreenController.mm \
+ platform/mac/WebVideoFullscreenHUDWindowController.mm \
+ platform/mac/WebWindowAnimation.mm
DEFINES+=NSGEOMETRY_TYPES_SAME_AS_CGGEOMETRY_TYPES
- } else: contains(DEFINES, USE_GSTREAMER=1) {
+ } else: contains(DEFINES, WTF_USE_GSTREAMER=1) {
HEADERS += \
platform/graphics/gstreamer/GOwnPtrGStreamer.h \
platform/graphics/gstreamer/GRefPtrGStreamer.h \
@@ -2979,7 +2995,7 @@ contains(DEFINES, ENABLE_VIDEO=1) {
platform/graphics/gstreamer/PlatformVideoWindowQt.cpp \
platform/graphics/gstreamer/ImageGStreamerQt.cpp
- } else:contains(MOBILITY_CONFIG, multimedia) {
+ } else:contains(DEFINES, WTF_USE_QT_MULTIMEDIA=1) {
HEADERS += \
platform/graphics/qt/MediaPlayerPrivateQt.h
diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/generic/ActiveDOMCallback.cpp b/src/3rdparty/webkit/Source/WebCore/bindings/generic/ActiveDOMCallback.cpp
index ff02a42..86bfc56 100644
--- a/src/3rdparty/webkit/Source/WebCore/bindings/generic/ActiveDOMCallback.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/bindings/generic/ActiveDOMCallback.cpp
@@ -38,29 +38,6 @@
namespace WebCore {
-static void destroyOnContextThread(PassOwnPtr<ActiveDOMObjectCallbackImpl>);
-
-class DestroyOnContextThreadTask : public ScriptExecutionContext::Task {
-public:
- static PassOwnPtr<DestroyOnContextThreadTask> create(PassOwnPtr<ActiveDOMObjectCallbackImpl> impl)
- {
- return adoptPtr(new DestroyOnContextThreadTask(impl));
- }
-
- virtual void performTask(ScriptExecutionContext*)
- {
- destroyOnContextThread(m_impl.release());
- }
-
-private:
- DestroyOnContextThreadTask(PassOwnPtr<ActiveDOMObjectCallbackImpl> impl)
- : m_impl(impl)
- {
- }
-
- OwnPtr<ActiveDOMObjectCallbackImpl> m_impl;
-};
-
class ActiveDOMObjectCallbackImpl : public ActiveDOMObject {
public:
ActiveDOMObjectCallbackImpl(ScriptExecutionContext* context)
@@ -109,6 +86,29 @@ private:
bool m_stopped;
};
+static void destroyOnContextThread(PassOwnPtr<ActiveDOMObjectCallbackImpl>);
+
+class DestroyOnContextThreadTask : public ScriptExecutionContext::Task {
+public:
+ static PassOwnPtr<DestroyOnContextThreadTask> create(PassOwnPtr<ActiveDOMObjectCallbackImpl> impl)
+ {
+ return adoptPtr(new DestroyOnContextThreadTask(impl));
+ }
+
+ virtual void performTask(ScriptExecutionContext*)
+ {
+ destroyOnContextThread(m_impl.release());
+ }
+
+private:
+ DestroyOnContextThreadTask(PassOwnPtr<ActiveDOMObjectCallbackImpl> impl)
+ : m_impl(impl)
+ {
+ }
+
+ OwnPtr<ActiveDOMObjectCallbackImpl> m_impl;
+};
+
static void destroyOnContextThread(PassOwnPtr<ActiveDOMObjectCallbackImpl> impl)
{
OwnPtr<ActiveDOMObjectCallbackImpl> implOwnPtr = impl;
diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.cpp b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.cpp
index 60c0ed1..d54fe74 100644
--- a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.cpp
@@ -32,12 +32,9 @@ using namespace JSC;
namespace WebCore {
-#ifndef NDEBUG
-
-JSDOMWrapper::~JSDOMWrapper()
+void JSDOMWrapper::virtualFunctionToPreventWeakVtable()
{
+ ASSERT_NOT_REACHED();
}
-#endif
-
} // namespace WebCore
diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.h b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.h
index 2f5bebd..9a4aca5 100644
--- a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.h
+++ b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.h
@@ -48,6 +48,10 @@ public:
}
protected:
+ // An inline function cannot be the first non-abstract virtual function declared
+ // in the class as it results in the vtable being generated as a weak symbol.
+ virtual void virtualFunctionToPreventWeakVtable();
+
explicit JSDOMWrapper(JSC::Structure* structure, JSC::JSGlobalObject* globalObject)
: JSObjectWithGlobalObject(globalObject, structure)
{
@@ -56,10 +60,6 @@ protected:
// needing to reach through the frame to get to the Document*. See bug 27640.
// ASSERT(globalObject->scriptExecutionContext());
}
-
-#ifndef NDEBUG
- virtual ~JSDOMWrapper();
-#endif
};
} // namespace WebCore
diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h
index a9366ed..01c6ac2 100644
--- a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h
+++ b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h
@@ -1,43 +1,43 @@
-/*
- * Copyright (C) 2009 Apple 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. ``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
- * 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.
- */
-
-#ifndef JSExceptionBase_h
-#define JSExceptionBase_h
-
-namespace JSC {
-
-class JSValue;
-
-} // namespace JSC
-
-namespace WebCore {
-
-class ExceptionBase;
-
-ExceptionBase* toExceptionBase(JSC::JSValue);
-
-} // namespace WebCore
-
-#endif // JSExceptionBase_h
+/*
+ * Copyright (C) 2009 Apple 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. ``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
+ * 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.
+ */
+
+#ifndef JSExceptionBase_h
+#define JSExceptionBase_h
+
+namespace JSC {
+
+class JSValue;
+
+} // namespace JSC
+
+namespace WebCore {
+
+class ExceptionBase;
+
+ExceptionBase* toExceptionBase(JSC::JSValue);
+
+} // namespace WebCore
+
+#endif // JSExceptionBase_h
diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSImageDataCustom.cpp b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSImageDataCustom.cpp
index 420b60c..6e242b0 100644
--- a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSImageDataCustom.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSImageDataCustom.cpp
@@ -48,8 +48,10 @@ JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, ImageData* imageD
wrapper = CREATE_DOM_WRAPPER(exec, globalObject, ImageData, imageData);
Identifier dataName(exec, "data");
static const ClassInfo cpaClassInfo = { "CanvasPixelArray", &JSByteArray::Base::s_info, 0, 0 };
- DEFINE_STATIC_LOCAL(Strong<Structure>, cpaStructure, (exec->globalData(), JSByteArray::createStructure(exec->globalData(), jsNull(), &cpaClassInfo)));
- wrapper->putDirect(exec->globalData(), dataName, new (exec) JSByteArray(exec, cpaStructure.get(), imageData->data()->data()), DontDelete | ReadOnly);
+ Structure* cpaStructure = getCachedDOMStructure(globalObject, &cpaClassInfo);
+ if (!cpaStructure)
+ cpaStructure = cacheDOMStructure(globalObject, JSByteArray::createStructure(exec->globalData(), jsNull(), &cpaClassInfo), &cpaClassInfo);
+ wrapper->putDirect(exec->globalData(), dataName, new (exec) JSByteArray(exec, cpaStructure, imageData->data()->data()), DontDelete | ReadOnly);
exec->heap()->reportExtraMemoryCost(imageData->data()->length());
return wrapper;
diff --git a/src/3rdparty/webkit/Source/WebCore/config.h b/src/3rdparty/webkit/Source/WebCore/config.h
index 001753e..a7ddcee 100644
--- a/src/3rdparty/webkit/Source/WebCore/config.h
+++ b/src/3rdparty/webkit/Source/WebCore/config.h
@@ -197,6 +197,7 @@
#if OS(SYMBIAN)
#define USE_SYSTEM_MALLOC 1
+#define ENABLE_PASSWORD_ECHO 1
#endif
#if OS(UNIX) || OS(WINDOWS)
diff --git a/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSelector.h b/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSelector.h
index a9b0c3e..1fe4ea2 100644
--- a/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSelector.h
+++ b/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSelector.h
@@ -209,7 +209,7 @@ public:
bool checkSelector(const RuleData&);
- template <bool firstPass>
+ template <bool applyFirst>
void applyDeclarations(bool important, int startIndex, int endIndex);
void matchPageRules(RuleSet*, bool isLeftPage, bool isFirstPage, const String& pageName);
diff --git a/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSheet.cpp b/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSheet.cpp
index 16c2ba8..37e5c2a 100644
--- a/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSheet.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSheet.cpp
@@ -220,13 +220,13 @@ void CSSStyleSheet::checkLoaded()
{
if (isLoading())
return;
- if (parent())
- parent()->checkLoaded();
// Avoid |this| being deleted by scripts that run via
// ScriptableDocumentParser::executeScriptsWaitingForStylesheets().
// See <rdar://problem/6622300>.
RefPtr<CSSStyleSheet> protector(this);
+ if (parent())
+ parent()->checkLoaded();
m_loadCompleted = ownerNode() ? ownerNode()->sheetLoaded() : true;
}
diff --git a/src/3rdparty/webkit/Source/WebCore/dom/Document.h b/src/3rdparty/webkit/Source/WebCore/dom/Document.h
index 6e2f5ec..0948592 100644
--- a/src/3rdparty/webkit/Source/WebCore/dom/Document.h
+++ b/src/3rdparty/webkit/Source/WebCore/dom/Document.h
@@ -1227,7 +1227,7 @@ private:
typedef ListHashSet<Element*, 64> FormElementListHashSet;
FormElementListHashSet m_formElementsWithState;
- typedef ListHashSet<FormAssociatedElement*, 32> FormAssociatedElementListHashSet;
+ typedef ListHashSet<RefPtr<FormAssociatedElement>, 32> FormAssociatedElementListHashSet;
FormAssociatedElementListHashSet m_formElementsWithFormAttribute;
typedef HashMap<FormElementKey, Vector<String>, FormElementKeyHash, FormElementKeyHashTraits> FormElementStateMap;
diff --git a/src/3rdparty/webkit/Source/WebCore/dom/Element.cpp b/src/3rdparty/webkit/Source/WebCore/dom/Element.cpp
index e7bfbc0..32e47ca 100644
--- a/src/3rdparty/webkit/Source/WebCore/dom/Element.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/dom/Element.cpp
@@ -1208,7 +1208,13 @@ void Element::removeShadowRoot()
InspectorInstrumentation::willRemoveDOMNode(document(), this);
data->m_shadowRoot = 0;
document()->removeFocusedNodeOfSubtree(oldRoot.get());
+
+ // Remove from rendering tree
+ if (oldRoot->attached())
+ oldRoot->detach();
+
oldRoot->setShadowHost(0);
+ oldRoot->setTreeScopeRecursively(document());
if (oldRoot->inDocument())
oldRoot->removedFromDocument();
else
diff --git a/src/3rdparty/webkit/Source/WebCore/dom/ProcessingInstruction.cpp b/src/3rdparty/webkit/Source/WebCore/dom/ProcessingInstruction.cpp
index 30111d8..f7dcfd2 100644
--- a/src/3rdparty/webkit/Source/WebCore/dom/ProcessingInstruction.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/dom/ProcessingInstruction.cpp
@@ -62,6 +62,9 @@ ProcessingInstruction::~ProcessingInstruction()
if (m_cachedSheet)
m_cachedSheet->removeClient(this);
+
+ if (inDocument())
+ document()->removeStyleSheetCandidateNode(this);
}
void ProcessingInstruction::setData(const String& data, ExceptionCode&)
diff --git a/src/3rdparty/webkit/Source/WebCore/dom/Range.cpp b/src/3rdparty/webkit/Source/WebCore/dom/Range.cpp
index be196c8..0c247c2 100644
--- a/src/3rdparty/webkit/Source/WebCore/dom/Range.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/dom/Range.cpp
@@ -621,7 +621,9 @@ static inline Node* childOfCommonRootBeforeOffset(Node* container, unsigned offs
{
ASSERT(container);
ASSERT(commonRoot);
- ASSERT(commonRoot->contains(container));
+
+ if (!commonRoot->contains(container))
+ return 0;
if (container == commonRoot) {
container = container->firstChild();
@@ -675,7 +677,7 @@ PassRefPtr<DocumentFragment> Range::processContents(ActionType action, Exception
if (ec)
return 0;
- Node* commonRoot = commonAncestorContainer(ec);
+ RefPtr<Node> commonRoot = commonAncestorContainer(ec);
if (ec)
return 0;
ASSERT(commonRoot);
@@ -686,8 +688,8 @@ PassRefPtr<DocumentFragment> Range::processContents(ActionType action, Exception
}
// what is the highest node that partially selects the start / end of the range?
- Node* partialStart = highestAncestorUnderCommonRoot(m_start.container(), commonRoot);
- Node* partialEnd = highestAncestorUnderCommonRoot(m_end.container(), commonRoot);
+ RefPtr<Node> partialStart = highestAncestorUnderCommonRoot(m_start.container(), commonRoot.get());
+ RefPtr<Node> partialEnd = highestAncestorUnderCommonRoot(m_end.container(), commonRoot.get());
// Start and end containers are different.
// There are three possibilities here:
@@ -706,29 +708,32 @@ PassRefPtr<DocumentFragment> Range::processContents(ActionType action, Exception
//
// These are deleted, cloned, or extracted (i.e. both) depending on action.
+ // Note that we are verifying that our common root hierarchy is still intact
+ // after any DOM mutation event, at various stages below. See webkit bug 60350.
+
RefPtr<Node> leftContents;
- if (m_start.container() != commonRoot) {
+ if (m_start.container() != commonRoot && commonRoot->contains(m_start.container())) {
leftContents = processContentsBetweenOffsets(action, 0, m_start.container(), m_start.offset(), lengthOfContentsInNode(m_start.container()), ec);
- leftContents = processAncestorsAndTheirSiblings(action, m_start.container(), ProcessContentsForward, leftContents, commonRoot, ec);
+ leftContents = processAncestorsAndTheirSiblings(action, m_start.container(), ProcessContentsForward, leftContents, commonRoot.get(), ec);
}
RefPtr<Node> rightContents;
- if (m_end.container() != commonRoot) {
+ if (m_end.container() != commonRoot && commonRoot->contains(m_end.container())) {
rightContents = processContentsBetweenOffsets(action, 0, m_end.container(), 0, m_end.offset(), ec);
- rightContents = processAncestorsAndTheirSiblings(action, m_end.container(), ProcessContentsBackward, rightContents, commonRoot, ec);
+ rightContents = processAncestorsAndTheirSiblings(action, m_end.container(), ProcessContentsBackward, rightContents, commonRoot.get(), ec);
}
// delete all children of commonRoot between the start and end container
- Node* processStart = childOfCommonRootBeforeOffset(m_start.container(), m_start.offset(), commonRoot);
- if (m_start.container() != commonRoot) // processStart contains nodes before m_start.
+ RefPtr<Node> processStart = childOfCommonRootBeforeOffset(m_start.container(), m_start.offset(), commonRoot.get());
+ if (processStart && m_start.container() != commonRoot) // processStart contains nodes before m_start.
processStart = processStart->nextSibling();
- Node* processEnd = childOfCommonRootBeforeOffset(m_end.container(), m_end.offset(), commonRoot);
+ RefPtr<Node> processEnd = childOfCommonRootBeforeOffset(m_end.container(), m_end.offset(), commonRoot.get());
// Collapse the range, making sure that the result is not within a node that was partially selected.
if (action == EXTRACT_CONTENTS || action == DELETE_CONTENTS) {
- if (partialStart)
+ if (partialStart && commonRoot->contains(partialStart.get()))
setStart(partialStart->parentNode(), partialStart->nodeIndex() + 1, ec);
- else if (partialEnd)
+ else if (partialEnd && commonRoot->contains(partialEnd.get()))
setStart(partialEnd->parentNode(), partialEnd->nodeIndex(), ec);
if (ec)
return 0;
@@ -743,7 +748,7 @@ PassRefPtr<DocumentFragment> Range::processContents(ActionType action, Exception
if (processStart) {
NodeVector nodes;
- for (Node* n = processStart; n && n != processEnd; n = n->nextSibling())
+ for (Node* n = processStart.get(); n && n != processEnd; n = n->nextSibling())
nodes.append(n);
processNodes(action, nodes, commonRoot, fragment, ec);
}
@@ -834,7 +839,7 @@ PassRefPtr<Node> Range::processContentsBetweenOffsets(ActionType action, PassRef
break;
}
- return result;
+ return result.release();
}
void Range::processNodes(ActionType action, Vector<RefPtr<Node> >& nodes, PassRefPtr<Node> oldContainer, PassRefPtr<Node> newContainer, ExceptionCode& ec)
@@ -899,7 +904,7 @@ PassRefPtr<Node> Range::processAncestorsAndTheirSiblings(ActionType action, Node
firstChildInAncestorToProcess = direction == ProcessContentsForward ? ancestor->nextSibling() : ancestor->previousSibling();
}
- return clonedContainer;
+ return clonedContainer.release();
}
PassRefPtr<DocumentFragment> Range::extractContents(ExceptionCode& ec)
diff --git a/src/3rdparty/webkit/Source/WebCore/dom/StyleElement.cpp b/src/3rdparty/webkit/Source/WebCore/dom/StyleElement.cpp
index 5b0e2ad..3bed5ae 100644
--- a/src/3rdparty/webkit/Source/WebCore/dom/StyleElement.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/dom/StyleElement.cpp
@@ -84,6 +84,15 @@ void StyleElement::removedFromDocument(Document* document, Element* element)
document->styleSelectorChanged(DeferRecalcStyle);
}
+void StyleElement::clearDocumentData(Document* document, Element* element)
+{
+ if (m_sheet)
+ m_sheet->clearOwnerNode();
+
+ if (element->inDocument())
+ document->removeStyleSheetCandidateNode(element);
+}
+
void StyleElement::childrenChanged(Element* element)
{
ASSERT(element);
diff --git a/src/3rdparty/webkit/Source/WebCore/dom/StyleElement.h b/src/3rdparty/webkit/Source/WebCore/dom/StyleElement.h
index 4356c17..1f50c6e 100644
--- a/src/3rdparty/webkit/Source/WebCore/dom/StyleElement.h
+++ b/src/3rdparty/webkit/Source/WebCore/dom/StyleElement.h
@@ -44,6 +44,7 @@ protected:
void insertedIntoDocument(Document*, Element*);
void removedFromDocument(Document*, Element*);
+ void clearDocumentData(Document*, Element*);
void childrenChanged(Element*);
void finishParsingChildren(Element*);
diff --git a/src/3rdparty/webkit/Source/WebCore/editing/InsertIntoTextNodeCommand.cpp b/src/3rdparty/webkit/Source/WebCore/editing/InsertIntoTextNodeCommand.cpp
index b1a455b..0fbc2af 100644
--- a/src/3rdparty/webkit/Source/WebCore/editing/InsertIntoTextNodeCommand.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/editing/InsertIntoTextNodeCommand.cpp
@@ -27,6 +27,8 @@
#include "InsertIntoTextNodeCommand.h"
#include "AXObjectCache.h"
+#include "RenderText.h"
+#include "Settings.h"
#include "Text.h"
namespace WebCore {
@@ -46,7 +48,13 @@ void InsertIntoTextNodeCommand::doApply()
{
if (!m_node->rendererIsEditable())
return;
-
+
+ if (document()->settings() && document()->settings()->passwordEchoEnabled()) {
+ RenderText* renderText = toRenderText(m_node->renderer());
+ if (renderText && renderText->isSecure())
+ renderText->momentarilyRevealLastTypedCharacter(m_offset + m_text.length() - 1);
+ }
+
ExceptionCode ec;
m_node->insertData(m_offset, m_text, ec);
diff --git a/src/3rdparty/webkit/Source/WebCore/editing/ReplaceSelectionCommand.cpp b/src/3rdparty/webkit/Source/WebCore/editing/ReplaceSelectionCommand.cpp
index 279bb35..d1aa6da 100644
--- a/src/3rdparty/webkit/Source/WebCore/editing/ReplaceSelectionCommand.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/editing/ReplaceSelectionCommand.cpp
@@ -138,7 +138,7 @@ ReplacementFragment::ReplacementFragment(Document* document, DocumentFragment* f
if (!m_fragment->firstChild())
return;
- Element* editableRoot = selection.rootEditableElement();
+ RefPtr<Element> editableRoot = selection.rootEditableElement();
ASSERT(editableRoot);
if (!editableRoot)
return;
@@ -153,8 +153,8 @@ ReplacementFragment::ReplacementFragment(Document* document, DocumentFragment* f
return;
}
- Node* styleNode = selection.base().deprecatedNode();
- RefPtr<StyledElement> holder = insertFragmentForTestRendering(styleNode);
+ RefPtr<Node> styleNode = selection.base().deprecatedNode();
+ RefPtr<StyledElement> holder = insertFragmentForTestRendering(styleNode.get());
if (!holder) {
removeInterchangeNodes(m_fragment.get());
return;
@@ -174,7 +174,7 @@ ReplacementFragment::ReplacementFragment(Document* document, DocumentFragment* f
m_fragment = createFragmentFromText(selection.toNormalizedRange().get(), evt->text());
if (!m_fragment->firstChild())
return;
- holder = insertFragmentForTestRendering(styleNode);
+ holder = insertFragmentForTestRendering(styleNode.get());
}
removeInterchangeNodes(holder.get());
@@ -291,7 +291,7 @@ void ReplacementFragment::restoreTestRenderingNodesToFragment(StyledElement* hol
void ReplacementFragment::removeUnrenderedNodes(Node* holder)
{
- Vector<Node*> unrendered;
+ Vector<RefPtr<Node> > unrendered;
for (Node* node = holder->firstChild(); node; node = node->traverseNextNode(holder))
if (!isNodeRendered(node) && !isTableStructureNode(node))
diff --git a/src/3rdparty/webkit/Source/WebCore/editing/SelectionController.cpp b/src/3rdparty/webkit/Source/WebCore/editing/SelectionController.cpp
index 879cb82..ba95ede 100644
--- a/src/3rdparty/webkit/Source/WebCore/editing/SelectionController.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/editing/SelectionController.cpp
@@ -1401,7 +1401,7 @@ void SelectionController::selectAll()
return;
}
- Node* root = 0;
+ RefPtr<Node> root = 0;
if (isContentEditable())
root = highestEditableRoot(m_selection.start());
else {
@@ -1411,7 +1411,7 @@ void SelectionController::selectAll()
}
if (!root)
return;
- VisibleSelection newSelection(VisibleSelection::selectionFromContentsOfNode(root));
+ VisibleSelection newSelection(VisibleSelection::selectionFromContentsOfNode(root.get()));
if (shouldChangeSelection(newSelection))
setSelection(newSelection);
selectFrameElementInParentIfFullySelected();
diff --git a/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.cpp b/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.cpp
index b09c226..38ade02 100644
--- a/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.cpp
@@ -602,21 +602,30 @@ void TextIterator::handleTextBox()
}
}
+static inline RenderText* firstRenderTextInFirstLetter(RenderObject* firstLetter)
+{
+ if (!firstLetter)
+ return 0;
+
+ // FIXME: Should this check descendent objects?
+ for (RenderObject* current = firstLetter->firstChild(); current; current = current->nextSibling()) {
+ if (current->isText())
+ return toRenderText(current);
+ }
+ return 0;
+}
+
void TextIterator::handleTextNodeFirstLetter(RenderTextFragment* renderer)
{
if (renderer->firstLetter()) {
RenderObject* r = renderer->firstLetter();
if (r->style()->visibility() != VISIBLE && !m_ignoresStyleVisibility)
return;
- for (RenderObject *currChild = r->firstChild(); currChild; currChild->nextSibling()) {
- if (currChild->isText()) {
- RenderText* firstLetter = toRenderText(currChild);
- m_handledFirstLetter = true;
- m_remainingTextBox = m_textBox;
- m_textBox = firstLetter->firstTextBox();
- m_firstLetterText = firstLetter;
- return;
- }
+ if (RenderText* firstLetter = firstRenderTextInFirstLetter(r)) {
+ m_handledFirstLetter = true;
+ m_remainingTextBox = m_textBox;
+ m_textBox = firstLetter->firstTextBox();
+ m_firstLetterText = firstLetter;
}
}
m_handledFirstLetter = true;
@@ -1042,14 +1051,46 @@ Node* TextIterator::node() const
SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator()
: m_behavior(TextIteratorDefaultBehavior)
, m_node(0)
+ , m_offset(0)
+ , m_handledNode(false)
+ , m_handledChildren(false)
+ , m_startNode(0)
+ , m_startOffset(0)
+ , m_endNode(0)
+ , m_endOffset(0)
, m_positionNode(0)
+ , m_positionStartOffset(0)
+ , m_positionEndOffset(0)
+ , m_textCharacters(0)
+ , m_textLength(0)
+ , m_lastTextNode(0)
+ , m_lastCharacter(0)
+ , m_singleCharacterBuffer(0)
+ , m_havePassedStartNode(false)
+ , m_shouldHandleFirstLetter(false)
{
}
SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator(const Range* r, TextIteratorBehavior behavior)
: m_behavior(behavior)
, m_node(0)
+ , m_offset(0)
+ , m_handledNode(false)
+ , m_handledChildren(false)
+ , m_startNode(0)
+ , m_startOffset(0)
+ , m_endNode(0)
+ , m_endOffset(0)
, m_positionNode(0)
+ , m_positionStartOffset(0)
+ , m_positionEndOffset(0)
+ , m_textCharacters(0)
+ , m_textLength(0)
+ , m_lastTextNode(0)
+ , m_lastCharacter(0)
+ , m_singleCharacterBuffer(0)
+ , m_havePassedStartNode(false)
+ , m_shouldHandleFirstLetter(false)
{
ASSERT(m_behavior == TextIteratorDefaultBehavior);
@@ -1177,23 +1218,62 @@ bool SimplifiedBackwardsTextIterator::handleTextNode()
{
m_lastTextNode = m_node;
- RenderText* renderer = toRenderText(m_node->renderer());
- String str = renderer->text();
+ int startOffset;
+ int offsetInNode;
+ RenderText* renderer = handleFirstLetter(startOffset, offsetInNode);
+ if (!renderer)
+ return true;
- if (!renderer->firstTextBox() && str.length() > 0)
+ String text = renderer->text();
+ if (!renderer->firstTextBox() && text.length() > 0)
return true;
m_positionEndOffset = m_offset;
-
- m_offset = (m_node == m_startNode) ? m_startOffset : 0;
+ m_offset = startOffset + offsetInNode;
m_positionNode = m_node;
m_positionStartOffset = m_offset;
+
+ ASSERT(0 <= m_positionStartOffset - offsetInNode && m_positionStartOffset - offsetInNode <= static_cast<int>(text.length()));
+ ASSERT(1 <= m_positionEndOffset - offsetInNode && m_positionEndOffset - offsetInNode <= static_cast<int>(text.length()));
+ ASSERT(m_positionStartOffset <= m_positionEndOffset);
+
m_textLength = m_positionEndOffset - m_positionStartOffset;
- m_textCharacters = str.characters() + m_positionStartOffset;
+ m_textCharacters = text.characters() + (m_positionStartOffset - offsetInNode);
+ ASSERT(m_textCharacters >= text.characters());
+ ASSERT(m_textCharacters + m_textLength <= text.characters() + static_cast<int>(text.length()));
- m_lastCharacter = str[m_positionEndOffset - 1];
+ m_lastCharacter = text[m_positionEndOffset - 1];
- return true;
+ return !m_shouldHandleFirstLetter;
+}
+
+RenderText* SimplifiedBackwardsTextIterator::handleFirstLetter(int& startOffset, int& offsetInNode)
+{
+ RenderText* renderer = toRenderText(m_node->renderer());
+ startOffset = (m_node == m_startNode) ? m_startOffset : 0;
+
+ if (!renderer->isTextFragment()) {
+ offsetInNode = 0;
+ return renderer;
+ }
+
+ RenderTextFragment* fragment = toRenderTextFragment(renderer);
+ int offsetAfterFirstLetter = fragment->start();
+ if (startOffset >= offsetAfterFirstLetter) {
+ ASSERT(!m_shouldHandleFirstLetter);
+ offsetInNode = offsetAfterFirstLetter;
+ return renderer;
+ }
+
+ if (!m_shouldHandleFirstLetter && offsetAfterFirstLetter < m_offset) {
+ m_shouldHandleFirstLetter = true;
+ offsetInNode = offsetAfterFirstLetter;
+ return renderer;
+ }
+
+ m_shouldHandleFirstLetter = false;
+ offsetInNode = 0;
+ return firstRenderTextInFirstLetter(fragment->firstLetter());
}
bool SimplifiedBackwardsTextIterator::handleReplacedElement()
@@ -2563,6 +2643,9 @@ tryAgain:
PassRefPtr<Range> findPlainText(const Range* range, const String& target, FindOptions options)
{
+ // CharacterIterator requires renderers to be up-to-date
+ range->ownerDocument()->updateLayout();
+
// First, find the text.
size_t matchStart;
size_t matchLength;
diff --git a/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.h b/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.h
index 9fe4ceb..8820388 100644
--- a/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.h
+++ b/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.h
@@ -203,6 +203,7 @@ public:
private:
void exitNode();
bool handleTextNode();
+ RenderText* handleFirstLetter(int& startOffset, int& offsetInNode);
bool handleReplacedElement();
bool handleNonTextNode();
void emitCharacter(UChar, Node*, int startOffset, int endOffset);
@@ -240,6 +241,9 @@ private:
// Whether m_node has advanced beyond the iteration range (i.e. m_startNode).
bool m_havePassedStartNode;
+
+ // Should handle first-letter renderer in the next call to handleTextNode.
+ bool m_shouldHandleFirstLetter;
};
// Builds on the text iterator, adding a character position so we can walk one
diff --git a/src/3rdparty/webkit/Source/WebCore/editing/visible_units.cpp b/src/3rdparty/webkit/Source/WebCore/editing/visible_units.cpp
index ff683a5..b2b52f3 100644
--- a/src/3rdparty/webkit/Source/WebCore/editing/visible_units.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/editing/visible_units.cpp
@@ -101,7 +101,7 @@ static VisiblePosition previousBoundary(const VisiblePosition& c, BoundarySearch
else {
// Treat bullets used in the text security mode as regular characters when looking for boundaries
String iteratorString(it.characters(), it.length());
- iteratorString = iteratorString.impl()->secure('x');
+ iteratorString.fill('x');
string.prepend(iteratorString.characters(), iteratorString.length());
}
next = searchFunction(string.data(), string.size(), string.size() - suffixLength, MayHaveMoreContext, needMoreContext);
@@ -176,7 +176,7 @@ static VisiblePosition nextBoundary(const VisiblePosition& c, BoundarySearchFunc
else {
// Treat bullets used in the text security mode as regular characters when looking for boundaries
String iteratorString(it.characters(), it.length());
- iteratorString = iteratorString.impl()->secure('x');
+ iteratorString.fill('x');
string.append(iteratorString.characters(), iteratorString.length());
}
next = searchFunction(string.data(), string.size(), prefixLength, MayHaveMoreContext, needMoreContext);
diff --git a/src/3rdparty/webkit/Source/WebCore/features.pri b/src/3rdparty/webkit/Source/WebCore/features.pri
index c56c9fc..3e397a1 100644
--- a/src/3rdparty/webkit/Source/WebCore/features.pri
+++ b/src/3rdparty/webkit/Source/WebCore/features.pri
@@ -162,17 +162,23 @@ symbian|maemo5|maemo6 {
DEFINES -= ENABLE_VIDEO=1
DEFINES += ENABLE_VIDEO=0
- contains(DEFINES, USE_QTKIT=1) {
+ mac:!contains(DEFINES, USE_QTMULTIMEDIA=1) {
DEFINES -= ENABLE_VIDEO=0
DEFINES += ENABLE_VIDEO=1
- DEFINES -= WTF_USE_QT_MULTIMEDIA=1
- DEFINES += WTF_USE_QT_MULTIMEDIA=0
- } else: contains(DEFINES, USE_GSTREAMER=1) {
- DEFINES -= ENABLE_VIDEO=0
- DEFINES += ENABLE_VIDEO=1
- DEFINES -= WTF_USE_QT_MULTIMEDIA=1
- DEFINES += WTF_USE_QT_MULTIMEDIA=0
- } else:contains(MOBILITY_CONFIG, multimedia) {
+ DEFINES += WTF_USE_QTKIT=1
+ DEFINES -= WTF_USE_QTKIT=0
+ } else: linux-*:!contains(DEFINES, USE_QTMULTIMEDIA=1) {
+ !contains(QT_CONFIG, no-pkg-config):system(pkg-config --exists glib-2.0 gio-2.0 gstreamer-0.10) {
+ DEFINES -= ENABLE_VIDEO=0
+ DEFINES += ENABLE_VIDEO=1
+ DEFINES += WTF_USE_GSTREAMER=1
+ DEFINES -= WTF_USE_GSTREAMER=0
+ } else {
+ message("Disabling video due the lack of GLib/Gio/GStreamer.")
+ DEFINES -= ENABLE_VIDEO=1
+ DEFINES += ENABLE_VIDEO=0
+ }
+ } else: contains(MOBILITY_CONFIG, multimedia) {
DEFINES -= ENABLE_VIDEO=0
DEFINES += ENABLE_VIDEO=1
DEFINES -= WTF_USE_QT_MULTIMEDIA=0
diff --git a/src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.cpp b/src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.cpp
index 1da5e2f..df97459 100644
--- a/src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.cpp
@@ -1,8 +1,10 @@
-/* A Bison parser, made by GNU Bison 2.5. */
-/* Bison implementation for Yacc-like parsers in C
+/* A Bison parser, made by GNU Bison 2.4.1. */
+
+/* Skeleton implementation for Bison's Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -44,7 +46,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.5"
+#define YYBISON_VERSION "2.4.1"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -73,7 +75,7 @@
/* Copy the first part of user declarations. */
-/* Line 268 of yacc.c */
+/* Line 189 of yacc.c */
#line 1 "../Source/WebCore/css/CSSGrammar.y"
@@ -135,8 +137,8 @@ using namespace HTMLNames;
-/* Line 268 of yacc.c */
-#line 140 "/Source/WebCore/generated/CSSGrammar.tab.c"
+/* Line 189 of yacc.c */
+#line 142 "/Source/WebCore/generated/CSSGrammar.tab.c"
/* Enabling traces. */
#ifndef YYDEBUG
@@ -252,7 +254,7 @@ using namespace HTMLNames;
typedef union YYSTYPE
{
-/* Line 293 of yacc.c */
+/* Line 214 of yacc.c */
#line 63 "../Source/WebCore/css/CSSGrammar.y"
bool boolean;
@@ -280,8 +282,8 @@ typedef union YYSTYPE
-/* Line 293 of yacc.c */
-#line 285 "/Source/WebCore/generated/CSSGrammar.tab.c"
+/* Line 214 of yacc.c */
+#line 287 "/Source/WebCore/generated/CSSGrammar.tab.c"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -291,7 +293,7 @@ typedef union YYSTYPE
/* Copy the second part of user declarations. */
-/* Line 343 of yacc.c */
+/* Line 264 of yacc.c */
#line 88 "../Source/WebCore/css/CSSGrammar.y"
@@ -307,8 +309,8 @@ static int cssyylex(YYSTYPE* yylval, void* parser)
-/* Line 343 of yacc.c */
-#line 312 "/Source/WebCore/generated/CSSGrammar.tab.c"
+/* Line 264 of yacc.c */
+#line 314 "/Source/WebCore/generated/CSSGrammar.tab.c"
#ifdef short
# undef short
@@ -358,7 +360,7 @@ typedef short int yytype_int16;
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
#ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
+# if YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
# define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -411,11 +413,11 @@ YYID (yyi)
# define alloca _alloca
# else
# define YYSTACK_ALLOC alloca
-# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef EXIT_SUCCESS
-# define EXIT_SUCCESS 0
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
# endif
# endif
# endif
@@ -438,24 +440,24 @@ YYID (yyi)
# ifndef YYSTACK_ALLOC_MAXIMUM
# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
# endif
-# if (defined __cplusplus && ! defined EXIT_SUCCESS \
+# if (defined __cplusplus && ! defined _STDLIB_H \
&& ! ((defined YYMALLOC || defined malloc) \
&& (defined YYFREE || defined free)))
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef EXIT_SUCCESS
-# define EXIT_SUCCESS 0
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
# endif
# endif
# ifndef YYMALLOC
# define YYMALLOC malloc
-# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# ifndef YYFREE
# define YYFREE free
-# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
@@ -484,7 +486,23 @@ union yyalloc
((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ YYSTACK_GAP_MAXIMUM)
-# define YYCOPY_NEEDED 1
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (YYID (0))
+# endif
+# endif
/* Relocate STACK from its old location to the new one. The
local variables YYSIZE and YYSTACKSIZE give the old and new number of
@@ -504,26 +522,6 @@ union yyalloc
#endif
-#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if defined __GNUC__ && 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
- while (YYID (0))
-# endif
-# endif
-#endif /* !YYCOPY_NEEDED */
-
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 21
/* YYLAST -- Last index in YYTABLE. */
@@ -898,8 +896,8 @@ static const yytype_uint8 yyr2[] =
3
};
-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
- Performed when YYTABLE doesn't specify something else to do. Zero
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
means the default is an error. */
static const yytype_uint16 yydefact[] =
{
@@ -1054,7 +1052,8 @@ static const yytype_int16 yypgoto[] =
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
- number is the opposite. If YYTABLE_NINF, syntax error. */
+ number is the opposite. If zero, do what YYDEFACT says.
+ If YYTABLE_NINF, syntax error. */
#define YYTABLE_NINF -276
static const yytype_int16 yytable[] =
{
@@ -1228,12 +1227,6 @@ static const yytype_int16 yytable[] =
87, 88, 0, 0, 90, 91, 92
};
-#define yypact_value_is_default(yystate) \
- ((yystate) == (-305))
-
-#define yytable_value_is_error(yytable_value) \
- YYID (0)
-
static const yytype_int16 yycheck[] =
{
0, 87, 127, 37, 243, 212, 5, 250, 8, 9,
@@ -1479,18 +1472,9 @@ static const yytype_uint8 yystos[] =
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. However,
- YYFAIL appears to be in use. Nevertheless, it is formally deprecated
- in Bison 2.4.2's NEWS entry, where a plan to phase it out is
- discussed. */
+ Once GCC version 2 has supplanted version 1, this can go. */
#define YYFAIL goto yyerrlab
-#if defined YYFAIL
- /* This is here to suppress warnings from the GCC cpp's
- -Wunused-macros. Normally we don't worry about that warning, but
- some users do, and we want to make it easy for users to remove
- YYFAIL uses, which will produce warnings from Bison 2.5. */
-#endif
#define YYRECOVERING() (!!yyerrstatus)
@@ -1500,6 +1484,7 @@ do \
{ \
yychar = (Token); \
yylval = (Value); \
+ yytoken = YYTRANSLATE (yychar); \
YYPOPSTACK (1); \
goto yybackup; \
} \
@@ -1541,10 +1526,19 @@ while (YYID (0))
#endif
-/* This macro is provided for backward compatibility. */
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+ This macro was not mandated originally: define only if we know
+ we won't break user code: when these are the locations we know. */
#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# if YYLTYPE_IS_TRIVIAL
+# define YY_LOCATION_PRINT(File, Loc) \
+ fprintf (File, "%d.%d-%d.%d", \
+ (Loc).first_line, (Loc).first_column, \
+ (Loc).last_line, (Loc).last_column)
+# else
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
#endif
@@ -1736,6 +1730,7 @@ int yydebug;
# define YYMAXDEPTH 10000
#endif
+
#if YYERROR_VERBOSE
@@ -1838,142 +1833,115 @@ yytnamerr (char *yyres, const char *yystr)
}
# endif
-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
- about the unexpected token YYTOKEN for the state stack whose top is
- YYSSP.
-
- Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
- not large enough to hold the message. In that case, also set
- *YYMSG_ALLOC to the required number of bytes. Return 2 if the
- required number of bytes is too large to store. */
-static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
- yytype_int16 *yyssp, int yytoken)
+/* Copy into YYRESULT an error message about the unexpected token
+ YYCHAR while in state YYSTATE. Return the number of bytes copied,
+ including the terminating null byte. If YYRESULT is null, do not
+ copy anything; just return the number of bytes that would be
+ copied. As a special case, return 0 if an ordinary "syntax error"
+ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
+ size calculation. */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
{
- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
- YYSIZE_T yysize = yysize0;
- YYSIZE_T yysize1;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- /* Internationalized format string. */
- const char *yyformat = 0;
- /* Arguments of yyformat. */
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- /* Number of reported tokens (one for the "unexpected", one per
- "expected"). */
- int yycount = 0;
-
- /* There are many possibilities here to consider:
- - Assume YYFAIL is not used. It's too flawed to consider. See
- <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
- for details. YYERROR is fine as it does not invoke this
- function.
- - If this state is a consistent state with a default action, then
- the only way this function was invoked is if the default action
- is an error action. In that case, don't check for expected
- tokens because there are none.
- - The only way there can be no lookahead present (in yychar) is if
- this state is a consistent state with a default action. Thus,
- detecting the absence of a lookahead is sufficient to determine
- that there is no unexpected or expected token to report. In that
- case, just report a simple "syntax error".
- - Don't assume there isn't a lookahead just because this state is a
- consistent state with a default action. There might have been a
- previous inconsistent state, consistent state with a non-default
- action, or user semantic action that manipulated yychar.
- - Of course, the expected token list depends on states to have
- correct lookahead information, and it depends on the parser not
- to perform extra reductions after fetching a lookahead from the
- scanner and before detecting a syntax error. Thus, state merging
- (from LALR or IELR) and default reductions corrupt the expected
- token list. However, the list is correct for canonical LR with
- one exception: it will still contain any token that will not be
- accepted due to an error action in a later state.
- */
- if (yytoken != YYEMPTY)
- {
- int yyn = yypact[*yyssp];
- yyarg[yycount++] = yytname[yytoken];
- if (!yypact_value_is_default (yyn))
- {
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. In other words, skip the first -YYN actions for
- this state because they are default actions. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yyx;
-
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
- && !yytable_value_is_error (yytable[yyx + yyn]))
- {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- yysize = yysize0;
- break;
- }
- yyarg[yycount++] = yytname[yyx];
- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
- if (! (yysize <= yysize1
- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
- }
- }
- }
+ int yyn = yypact[yystate];
- switch (yycount)
- {
-# define YYCASE_(N, S) \
- case N: \
- yyformat = S; \
- break
- YYCASE_(0, YY_("syntax error"));
- YYCASE_(1, YY_("syntax error, unexpected %s"));
- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-# undef YYCASE_
- }
+ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+ return 0;
+ else
+ {
+ int yytype = YYTRANSLATE (yychar);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ int yysize_overflow = 0;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ int yyx;
+
+# if 0
+ /* This is so xgettext sees the translatable formats that are
+ constructed on the fly. */
+ YY_("syntax error, unexpected %s");
+ YY_("syntax error, unexpected %s, expecting %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+# endif
+ char *yyfmt;
+ char const *yyf;
+ static char const yyunexpected[] = "syntax error, unexpected %s";
+ static char const yyexpecting[] = ", expecting %s";
+ static char const yyor[] = " or %s";
+ char yyformat[sizeof yyunexpected
+ + sizeof yyexpecting - 1
+ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+ * (sizeof yyor - 1))];
+ char const *yyprefix = yyexpecting;
+
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yycount = 1;
+
+ yyarg[0] = yytname[yytype];
+ yyfmt = yystpcpy (yyformat, yyunexpected);
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ yyformat[sizeof yyunexpected - 1] = '\0';
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+ yyfmt = yystpcpy (yyfmt, yyprefix);
+ yyprefix = yyor;
+ }
- yysize1 = yysize + yystrlen (yyformat);
- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
+ yyf = YY_(yyformat);
+ yysize1 = yysize + yystrlen (yyf);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
- if (*yymsg_alloc < yysize)
- {
- *yymsg_alloc = 2 * yysize;
- if (! (yysize <= *yymsg_alloc
- && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
- *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
- return 1;
- }
+ if (yysize_overflow)
+ return YYSIZE_MAXIMUM;
- /* Avoid sprintf, as that infringes on the user's name space.
- Don't have undefined behavior even if the translation
- produced a string with the wrong number of "%s"s. */
- {
- char *yyp = *yymsg;
- int yyi = 0;
- while ((*yyp = *yyformat) != '\0')
- if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
- {
- yyp += yytnamerr (yyp, yyarg[yyi++]);
- yyformat += 2;
- }
- else
- {
- yyp++;
- yyformat++;
- }
- }
- return 0;
+ if (yyresult)
+ {
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ char *yyp = yyresult;
+ int yyi = 0;
+ while ((*yyp = *yyf) != '\0')
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ }
+ return yysize;
+ }
}
#endif /* YYERROR_VERBOSE */
+
/*-----------------------------------------------.
| Release the memory associated to this symbol. |
@@ -2006,7 +1974,6 @@ yydestruct (yymsg, yytype, yyvaluep)
}
}
-
/* Prevent warnings from -Wmissing-prototypes. */
#ifdef YYPARSE_PARAM
#if defined __STDC__ || defined __cplusplus
@@ -2023,9 +1990,12 @@ int yyparse ();
#endif /* ! YYPARSE_PARAM */
-/*----------.
-| yyparse. |
-`----------*/
+
+
+
+/*-------------------------.
+| yyparse or yypush_parse. |
+`-------------------------*/
#ifdef YYPARSE_PARAM
#if (defined __STDC__ || defined __C99__FUNC__ \
@@ -2212,7 +2182,7 @@ yybackup:
/* First try to decide what to do without reference to lookahead token. */
yyn = yypact[yystate];
- if (yypact_value_is_default (yyn))
+ if (yyn == YYPACT_NINF)
goto yydefault;
/* Not known => get a lookahead token if don't already have one. */
@@ -2243,8 +2213,8 @@ yybackup:
yyn = yytable[yyn];
if (yyn <= 0)
{
- if (yytable_value_is_error (yyn))
- goto yyerrlab;
+ if (yyn == 0 || yyn == YYTABLE_NINF)
+ goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
@@ -2299,34 +2269,34 @@ yyreduce:
{
case 9:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 303 "../Source/WebCore/css/CSSGrammar.y"
{
static_cast<CSSParser*>(parser)->m_rule = (yyvsp[(4) - (6)].rule);
- }
+ ;}
break;
case 10:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 309 "../Source/WebCore/css/CSSGrammar.y"
{
static_cast<CSSParser*>(parser)->m_keyframe = (yyvsp[(4) - (6)].keyframeRule);
- }
+ ;}
break;
case 11:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 315 "../Source/WebCore/css/CSSGrammar.y"
{
/* can be empty */
- }
+ ;}
break;
case 12:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 321 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
@@ -2338,22 +2308,22 @@ yyreduce:
delete p->m_valueList;
p->m_valueList = 0;
}
- }
+ ;}
break;
case 13:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 335 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
p->m_mediaQuery = p->sinkFloatingMediaQuery((yyvsp[(4) - (5)].mediaQuery));
- }
+ ;}
break;
case 14:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 342 "../Source/WebCore/css/CSSGrammar.y"
{
if ((yyvsp[(4) - (5)].selectorList)) {
@@ -2361,94 +2331,94 @@ yyreduce:
if (p->m_selectorListForParseSelector)
p->m_selectorListForParseSelector->adoptSelectorVector(*(yyvsp[(4) - (5)].selectorList));
}
- }
+ ;}
break;
case 21:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 364 "../Source/WebCore/css/CSSGrammar.y"
{
- }
+ ;}
break;
case 24:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 374 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
(yyval.rule) = static_cast<CSSParser*>(parser)->createCharsetRule((yyvsp[(3) - (5)].string));
if ((yyval.rule) && p->m_styleSheet)
p->m_styleSheet->append((yyval.rule));
- }
+ ;}
break;
case 25:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 380 "../Source/WebCore/css/CSSGrammar.y"
{
- }
+ ;}
break;
case 26:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 382 "../Source/WebCore/css/CSSGrammar.y"
{
- }
+ ;}
break;
case 27:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 387 "../Source/WebCore/css/CSSGrammar.y"
{
// Ignore any @charset rule not at the beginning of the style sheet.
(yyval.rule) = 0;
- }
+ ;}
break;
case 29:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 395 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
if ((yyvsp[(2) - (3)].rule) && p->m_styleSheet)
p->m_styleSheet->append((yyvsp[(2) - (3)].rule));
- }
+ ;}
break;
case 30:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 403 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = (yyvsp[(2) - (2)].rule);
- }
+ ;}
break;
case 37:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 415 "../Source/WebCore/css/CSSGrammar.y"
{
static_cast<CSSParser*>(parser)->m_hadSyntacticallyValidCSSRule = true;
- }
+ ;}
break;
case 41:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 424 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.ruleList) = 0; }
+ { (yyval.ruleList) = 0; ;}
break;
case 42:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 425 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.ruleList) = (yyvsp[(1) - (3)].ruleList);
@@ -2457,357 +2427,357 @@ yyreduce:
(yyval.ruleList) = static_cast<CSSParser*>(parser)->createRuleList();
(yyval.ruleList)->append((yyvsp[(2) - (3)].rule));
}
- }
+ ;}
break;
case 53:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 453 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = static_cast<CSSParser*>(parser)->createImportRule((yyvsp[(3) - (6)].string), (yyvsp[(5) - (6)].mediaList));
- }
+ ;}
break;
case 54:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 456 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = 0;
- }
+ ;}
break;
case 55:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 459 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = 0;
- }
+ ;}
break;
case 56:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 462 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = 0;
- }
+ ;}
break;
case 57:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 468 "../Source/WebCore/css/CSSGrammar.y"
{
static_cast<CSSParser*>(parser)->addNamespace((yyvsp[(3) - (6)].string), (yyvsp[(4) - (6)].string));
(yyval.rule) = 0;
-}
+;}
break;
case 58:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 472 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = 0;
-}
+;}
break;
case 59:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 475 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = 0;
-}
+;}
break;
case 60:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 478 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = 0;
-}
+;}
break;
case 61:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 484 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.string).characters = 0; }
+ { (yyval.string).characters = 0; ;}
break;
case 62:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 485 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.string) = (yyvsp[(1) - (2)].string); }
+ { (yyval.string) = (yyvsp[(1) - (2)].string); ;}
break;
case 65:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 494 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.string) = (yyvsp[(1) - (2)].string);
- }
+ ;}
break;
case 66:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 500 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.valueList) = 0;
- }
+ ;}
break;
case 67:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 503 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.valueList) = (yyvsp[(3) - (4)].valueList);
- }
+ ;}
break;
case 68:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 509 "../Source/WebCore/css/CSSGrammar.y"
{
(yyvsp[(3) - (7)].string).lower();
(yyval.mediaQueryExp) = static_cast<CSSParser*>(parser)->createFloatingMediaQueryExp((yyvsp[(3) - (7)].string), (yyvsp[(5) - (7)].valueList));
- }
+ ;}
break;
case 69:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 516 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
(yyval.mediaQueryExpList) = p->createFloatingMediaQueryExpList();
(yyval.mediaQueryExpList)->append(p->sinkFloatingMediaQueryExp((yyvsp[(1) - (1)].mediaQueryExp)));
- }
+ ;}
break;
case 70:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 521 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.mediaQueryExpList) = (yyvsp[(1) - (5)].mediaQueryExpList);
(yyval.mediaQueryExpList)->append(static_cast<CSSParser*>(parser)->sinkFloatingMediaQueryExp((yyvsp[(5) - (5)].mediaQueryExp)));
- }
+ ;}
break;
case 71:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 528 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.mediaQueryExpList) = static_cast<CSSParser*>(parser)->createFloatingMediaQueryExpList();
- }
+ ;}
break;
case 72:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 531 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.mediaQueryExpList) = (yyvsp[(3) - (3)].mediaQueryExpList);
- }
+ ;}
break;
case 73:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 537 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.mediaQueryRestrictor) = MediaQuery::None;
- }
+ ;}
break;
case 74:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 540 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.mediaQueryRestrictor) = MediaQuery::Only;
- }
+ ;}
break;
case 75:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 543 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.mediaQueryRestrictor) = MediaQuery::Not;
- }
+ ;}
break;
case 76:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 549 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
(yyval.mediaQuery) = p->createFloatingMediaQuery(p->sinkFloatingMediaQueryExpList((yyvsp[(1) - (1)].mediaQueryExpList)));
- }
+ ;}
break;
case 77:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 554 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
(yyvsp[(3) - (4)].string).lower();
(yyval.mediaQuery) = p->createFloatingMediaQuery((yyvsp[(1) - (4)].mediaQueryRestrictor), (yyvsp[(3) - (4)].string), p->sinkFloatingMediaQueryExpList((yyvsp[(4) - (4)].mediaQueryExpList)));
- }
+ ;}
break;
case 78:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 562 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.mediaList) = static_cast<CSSParser*>(parser)->createMediaList();
- }
+ ;}
break;
case 80:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 569 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
(yyval.mediaList) = p->createMediaList();
(yyval.mediaList)->appendMediaQuery(p->sinkFloatingMediaQuery((yyvsp[(1) - (1)].mediaQuery)));
- }
+ ;}
break;
case 81:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 574 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.mediaList) = (yyvsp[(1) - (4)].mediaList);
if ((yyval.mediaList))
(yyval.mediaList)->appendMediaQuery(static_cast<CSSParser*>(parser)->sinkFloatingMediaQuery((yyvsp[(4) - (4)].mediaQuery)));
- }
+ ;}
break;
case 82:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 579 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.mediaList) = 0;
- }
+ ;}
break;
case 83:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 585 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = static_cast<CSSParser*>(parser)->createMediaRule((yyvsp[(3) - (7)].mediaList), (yyvsp[(6) - (7)].ruleList));
- }
+ ;}
break;
case 84:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 588 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = static_cast<CSSParser*>(parser)->createMediaRule(0, (yyvsp[(5) - (6)].ruleList));
- }
+ ;}
break;
case 85:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 594 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.string) = (yyvsp[(1) - (2)].string);
- }
+ ;}
break;
case 86:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 600 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = (yyvsp[(7) - (8)].keyframesRule);
(yyvsp[(7) - (8)].keyframesRule)->setNameInternal((yyvsp[(3) - (8)].string));
- }
+ ;}
break;
case 89:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 612 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.keyframesRule) = static_cast<CSSParser*>(parser)->createKeyframesRule(); }
+ { (yyval.keyframesRule) = static_cast<CSSParser*>(parser)->createKeyframesRule(); ;}
break;
case 90:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 613 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.keyframesRule) = (yyvsp[(1) - (3)].keyframesRule);
if ((yyvsp[(2) - (3)].keyframeRule))
(yyval.keyframesRule)->append((yyvsp[(2) - (3)].keyframeRule));
- }
+ ;}
break;
case 91:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 621 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.keyframeRule) = static_cast<CSSParser*>(parser)->createKeyframeRule((yyvsp[(1) - (6)].valueList));
- }
+ ;}
break;
case 92:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 627 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
(yyval.valueList) = p->createFloatingValueList();
(yyval.valueList)->addValue(p->sinkFloatingValue((yyvsp[(1) - (1)].value)));
- }
+ ;}
break;
case 93:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 632 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
(yyval.valueList) = (yyvsp[(1) - (5)].valueList);
if ((yyval.valueList))
(yyval.valueList)->addValue(p->sinkFloatingValue((yyvsp[(5) - (5)].value)));
- }
+ ;}
break;
case 94:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 641 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).isInt = false; (yyval.value).fValue = (yyvsp[(1) - (1)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; }
+ { (yyval.value).id = 0; (yyval.value).isInt = false; (yyval.value).fValue = (yyvsp[(1) - (1)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; ;}
break;
case 95:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 642 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.value).id = 0; (yyval.value).isInt = false; (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER;
@@ -2818,12 +2788,12 @@ yyreduce:
(yyval.value).fValue = 100;
else
YYERROR;
- }
+ ;}
break;
case 96:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 656 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
@@ -2835,42 +2805,42 @@ yyreduce:
// Also clear margin at-rules here once we fully implement margin at-rules parsing.
(yyval.rule) = 0;
}
- }
+ ;}
break;
case 97:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 667 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = 0;
- }
+ ;}
break;
case 98:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 670 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = 0;
- }
+ ;}
break;
case 99:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 676 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
(yyval.selector) = p->createFloatingSelector();
(yyval.selector)->setTag(QualifiedName(nullAtom, (yyvsp[(1) - (1)].string), p->m_defaultNamespace));
(yyval.selector)->setForPage();
- }
+ ;}
break;
case 100:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 682 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
@@ -2879,312 +2849,312 @@ yyreduce:
(yyval.selector)->setTag(QualifiedName(nullAtom, (yyvsp[(1) - (2)].string), p->m_defaultNamespace));
(yyval.selector)->setForPage();
}
- }
+ ;}
break;
case 101:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 690 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = (yyvsp[(1) - (1)].selector);
if ((yyval.selector))
(yyval.selector)->setForPage();
- }
+ ;}
break;
case 102:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 695 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
(yyval.selector) = p->createFloatingSelector();
(yyval.selector)->setForPage();
- }
+ ;}
break;
case 105:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 708 "../Source/WebCore/css/CSSGrammar.y"
{
static_cast<CSSParser*>(parser)->startDeclarationsForMarginBox();
- }
+ ;}
break;
case 106:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 710 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = static_cast<CSSParser*>(parser)->createMarginAtRule((yyvsp[(1) - (7)].marginBox));
- }
+ ;}
break;
case 107:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 716 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.marginBox) = CSSSelector::TopLeftCornerMarginBox;
- }
+ ;}
break;
case 108:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 719 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.marginBox) = CSSSelector::TopLeftMarginBox;
- }
+ ;}
break;
case 109:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 722 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.marginBox) = CSSSelector::TopCenterMarginBox;
- }
+ ;}
break;
case 110:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 725 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.marginBox) = CSSSelector::TopRightMarginBox;
- }
+ ;}
break;
case 111:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 728 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.marginBox) = CSSSelector::TopRightCornerMarginBox;
- }
+ ;}
break;
case 112:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 731 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.marginBox) = CSSSelector::BottomLeftCornerMarginBox;
- }
+ ;}
break;
case 113:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 734 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.marginBox) = CSSSelector::BottomLeftMarginBox;
- }
+ ;}
break;
case 114:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 737 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.marginBox) = CSSSelector::BottomCenterMarginBox;
- }
+ ;}
break;
case 115:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 740 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.marginBox) = CSSSelector::BottomRightMarginBox;
- }
+ ;}
break;
case 116:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 743 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.marginBox) = CSSSelector::BottomRightCornerMarginBox;
- }
+ ;}
break;
case 117:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 746 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.marginBox) = CSSSelector::LeftTopMarginBox;
- }
+ ;}
break;
case 118:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 749 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.marginBox) = CSSSelector::LeftMiddleMarginBox;
- }
+ ;}
break;
case 119:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 752 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.marginBox) = CSSSelector::LeftBottomMarginBox;
- }
+ ;}
break;
case 120:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 755 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.marginBox) = CSSSelector::RightTopMarginBox;
- }
+ ;}
break;
case 121:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 758 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.marginBox) = CSSSelector::RightMiddleMarginBox;
- }
+ ;}
break;
case 122:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 761 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.marginBox) = CSSSelector::RightBottomMarginBox;
- }
+ ;}
break;
case 123:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 768 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = static_cast<CSSParser*>(parser)->createFontFaceRule();
- }
+ ;}
break;
case 124:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 771 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = 0;
- }
+ ;}
break;
case 125:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 774 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = 0;
- }
+ ;}
break;
case 126:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 780 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.relation) = CSSSelector::DirectAdjacent; }
+ { (yyval.relation) = CSSSelector::DirectAdjacent; ;}
break;
case 127:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 781 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.relation) = CSSSelector::IndirectAdjacent; }
+ { (yyval.relation) = CSSSelector::IndirectAdjacent; ;}
break;
case 128:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 782 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.relation) = CSSSelector::Child; }
+ { (yyval.relation) = CSSSelector::Child; ;}
break;
case 129:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 786 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.integer) = (yyvsp[(1) - (1)].integer); }
+ { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;}
break;
case 130:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 787 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.integer) = 1; }
+ { (yyval.integer) = 1; ;}
break;
case 131:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 791 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.integer) = -1; }
+ { (yyval.integer) = -1; ;}
break;
case 132:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 792 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.integer) = 1; }
+ { (yyval.integer) = 1; ;}
break;
case 133:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 796 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
p->markPropertyStart();
- }
+ ;}
break;
case 134:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 803 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
p->markSelectorListStart();
- }
+ ;}
break;
case 135:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 810 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
p->markSelectorListEnd();
- }
+ ;}
break;
case 136:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 817 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
(yyval.rule) = p->createStyleRule((yyvsp[(1) - (6)].selectorList));
- }
+ ;}
break;
case 137:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 824 "../Source/WebCore/css/CSSGrammar.y"
{
if ((yyvsp[(1) - (1)].selector)) {
@@ -3194,12 +3164,12 @@ yyreduce:
(yyval.selectorList)->append(p->sinkFloatingSelector((yyvsp[(1) - (1)].selector)));
p->updateLastSelectorLineAndPosition();
}
- }
+ ;}
break;
case 138:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 833 "../Source/WebCore/css/CSSGrammar.y"
{
if ((yyvsp[(1) - (4)].selectorList) && (yyvsp[(4) - (4)].selector)) {
@@ -3209,48 +3179,48 @@ yyreduce:
p->updateLastSelectorLineAndPosition();
} else
(yyval.selectorList) = 0;
- }
+ ;}
break;
case 139:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 842 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selectorList) = 0;
- }
+ ;}
break;
case 140:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 848 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = (yyvsp[(1) - (2)].selector);
- }
+ ;}
break;
case 141:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 854 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = (yyvsp[(1) - (1)].selector);
- }
+ ;}
break;
case 142:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 858 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = (yyvsp[(1) - (1)].selector);
- }
+ ;}
break;
case 143:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 862 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = (yyvsp[(2) - (2)].selector);
@@ -3264,12 +3234,12 @@ yyreduce:
end->setRelation(CSSSelector::Descendant);
end->setTagHistory(p->sinkFloatingSelector((yyvsp[(1) - (2)].selector)));
}
- }
+ ;}
break;
case 144:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 875 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = (yyvsp[(3) - (3)].selector);
@@ -3283,75 +3253,75 @@ yyreduce:
end->setRelation((yyvsp[(2) - (3)].relation));
end->setTagHistory(p->sinkFloatingSelector((yyvsp[(1) - (3)].selector)));
}
- }
+ ;}
break;
case 145:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 888 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = 0;
- }
+ ;}
break;
case 146:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 894 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.string).characters = 0; (yyval.string).length = 0; }
+ { (yyval.string).characters = 0; (yyval.string).length = 0; ;}
break;
case 147:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 895 "../Source/WebCore/css/CSSGrammar.y"
- { static UChar star = '*'; (yyval.string).characters = &star; (yyval.string).length = 1; }
+ { static UChar star = '*'; (yyval.string).characters = &star; (yyval.string).length = 1; ;}
break;
case 148:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 896 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.string) = (yyvsp[(1) - (2)].string); }
+ { (yyval.string) = (yyvsp[(1) - (2)].string); ;}
break;
case 149:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 900 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
(yyval.selector) = p->createFloatingSelector();
(yyval.selector)->setTag(QualifiedName(nullAtom, (yyvsp[(1) - (1)].string), p->m_defaultNamespace));
- }
+ ;}
break;
case 150:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 905 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = (yyvsp[(2) - (2)].selector);
if ((yyval.selector))
static_cast<CSSParser*>(parser)->updateSpecifiersWithElementName(nullAtom, (yyvsp[(1) - (2)].string), (yyval.selector));
- }
+ ;}
break;
case 151:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 910 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = (yyvsp[(1) - (1)].selector);
if ((yyval.selector))
static_cast<CSSParser*>(parser)->updateSpecifiersWithElementName(nullAtom, starAtom, (yyval.selector));
- }
+ ;}
break;
case 152:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 915 "../Source/WebCore/css/CSSGrammar.y"
{
AtomicString namespacePrefix = (yyvsp[(1) - (2)].string);
@@ -3362,34 +3332,34 @@ yyreduce:
p->m_styleSheet->determineNamespace(namespacePrefix)));
else // FIXME: Shouldn't this case be an error?
(yyval.selector)->setTag(QualifiedName(nullAtom, (yyvsp[(2) - (2)].string), p->m_defaultNamespace));
- }
+ ;}
break;
case 153:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 925 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = (yyvsp[(3) - (3)].selector);
if ((yyval.selector))
static_cast<CSSParser*>(parser)->updateSpecifiersWithElementName((yyvsp[(1) - (3)].string), (yyvsp[(2) - (3)].string), (yyval.selector));
- }
+ ;}
break;
case 154:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 930 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = (yyvsp[(2) - (2)].selector);
if ((yyval.selector))
static_cast<CSSParser*>(parser)->updateSpecifiersWithElementName((yyvsp[(1) - (2)].string), starAtom, (yyval.selector));
- }
+ ;}
break;
case 155:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 938 "../Source/WebCore/css/CSSGrammar.y"
{
if ((yyvsp[(1) - (1)].selector)) {
@@ -3403,7 +3373,7 @@ yyreduce:
case 156:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 946 "../Source/WebCore/css/CSSGrammar.y"
{
if ((yyvsp[(1) - (5)].selectorList) && (yyvsp[(5) - (5)].selector)) {
@@ -3412,21 +3382,21 @@ yyreduce:
(yyval.selectorList)->append(p->sinkFloatingSelector((yyvsp[(5) - (5)].selector)));
} else
(yyval.selectorList) = 0;
- }
+ ;}
break;
case 157:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 954 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selectorList) = 0;
- }
+ ;}
break;
case 158:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 960 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParserString& str = (yyvsp[(1) - (1)].string);
@@ -3435,53 +3405,53 @@ yyreduce:
if (doc && doc->isHTMLDocument())
str.lower();
(yyval.string) = str;
- }
+ ;}
break;
case 159:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 968 "../Source/WebCore/css/CSSGrammar.y"
{
static UChar star = '*';
(yyval.string).characters = &star;
(yyval.string).length = 1;
- }
+ ;}
break;
case 160:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 976 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = (yyvsp[(1) - (1)].selector);
- }
+ ;}
break;
case 161:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 979 "../Source/WebCore/css/CSSGrammar.y"
{
if (!(yyvsp[(2) - (2)].selector))
(yyval.selector) = 0;
else if ((yyvsp[(1) - (2)].selector))
(yyval.selector) = static_cast<CSSParser*>(parser)->updateSpecifiers((yyvsp[(1) - (2)].selector), (yyvsp[(2) - (2)].selector));
- }
+ ;}
break;
case 162:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 985 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = 0;
- }
+ ;}
break;
case 163:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 991 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
@@ -3490,12 +3460,12 @@ yyreduce:
if (!p->m_strict)
(yyvsp[(1) - (1)].string).lower();
(yyval.selector)->setValue((yyvsp[(1) - (1)].string));
- }
+ ;}
break;
case 164:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 999 "../Source/WebCore/css/CSSGrammar.y"
{
if ((yyvsp[(1) - (1)].string).characters[0] >= '0' && (yyvsp[(1) - (1)].string).characters[0] <= '9') {
@@ -3508,12 +3478,12 @@ yyreduce:
(yyvsp[(1) - (1)].string).lower();
(yyval.selector)->setValue((yyvsp[(1) - (1)].string));
}
- }
+ ;}
break;
case 168:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1017 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
@@ -3522,12 +3492,12 @@ yyreduce:
if (!p->m_strict)
(yyvsp[(2) - (2)].string).lower();
(yyval.selector)->setValue((yyvsp[(2) - (2)].string));
- }
+ ;}
break;
case 169:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1028 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParserString& str = (yyvsp[(1) - (2)].string);
@@ -3536,35 +3506,35 @@ yyreduce:
if (doc && doc->isHTMLDocument())
str.lower();
(yyval.string) = str;
- }
+ ;}
break;
case 170:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1039 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector();
(yyval.selector)->setAttribute(QualifiedName(nullAtom, (yyvsp[(3) - (4)].string), nullAtom));
(yyval.selector)->setMatch(CSSSelector::Set);
- }
+ ;}
break;
case 171:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1044 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector();
(yyval.selector)->setAttribute(QualifiedName(nullAtom, (yyvsp[(3) - (8)].string), nullAtom));
(yyval.selector)->setMatch((CSSSelector::Match)(yyvsp[(4) - (8)].integer));
(yyval.selector)->setValue((yyvsp[(6) - (8)].string));
- }
+ ;}
break;
case 172:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1050 "../Source/WebCore/css/CSSGrammar.y"
{
AtomicString namespacePrefix = (yyvsp[(3) - (5)].string);
@@ -3573,12 +3543,12 @@ yyreduce:
(yyval.selector)->setAttribute(QualifiedName(namespacePrefix, (yyvsp[(4) - (5)].string),
p->m_styleSheet->determineNamespace(namespacePrefix)));
(yyval.selector)->setMatch(CSSSelector::Set);
- }
+ ;}
break;
case 173:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1058 "../Source/WebCore/css/CSSGrammar.y"
{
AtomicString namespacePrefix = (yyvsp[(3) - (9)].string);
@@ -3588,66 +3558,66 @@ yyreduce:
p->m_styleSheet->determineNamespace(namespacePrefix)));
(yyval.selector)->setMatch((CSSSelector::Match)(yyvsp[(5) - (9)].integer));
(yyval.selector)->setValue((yyvsp[(7) - (9)].string));
- }
+ ;}
break;
case 174:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1070 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.integer) = CSSSelector::Exact;
- }
+ ;}
break;
case 175:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1073 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.integer) = CSSSelector::List;
- }
+ ;}
break;
case 176:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1076 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.integer) = CSSSelector::Hyphen;
- }
+ ;}
break;
case 177:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1079 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.integer) = CSSSelector::Begin;
- }
+ ;}
break;
case 178:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1082 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.integer) = CSSSelector::End;
- }
+ ;}
break;
case 179:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1085 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.integer) = CSSSelector::Contain;
- }
+ ;}
break;
case 182:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1096 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector();
@@ -3657,12 +3627,12 @@ yyreduce:
CSSSelector::PseudoType type = (yyval.selector)->pseudoType();
if (type == CSSSelector::PseudoUnknown)
(yyval.selector) = 0;
- }
+ ;}
break;
case 183:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1107 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector();
@@ -3672,12 +3642,12 @@ yyreduce:
CSSSelector::PseudoType type = (yyval.selector)->pseudoType();
if (type == CSSSelector::PseudoUnknown)
(yyval.selector) = 0;
- }
+ ;}
break;
case 184:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1116 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector();
@@ -3686,12 +3656,12 @@ yyreduce:
(yyval.selector)->setValue((yyvsp[(3) - (3)].string));
// FIXME: This call is needed to force selector to compute the pseudoType early enough.
(yyval.selector)->pseudoType();
- }
+ ;}
break;
case 185:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1129 "../Source/WebCore/css/CSSGrammar.y"
{
if ((yyvsp[(4) - (6)].selectorList)) {
@@ -3706,12 +3676,12 @@ yyreduce:
(yyval.selector) = 0;
} else
(yyval.selector) = 0;
- }
+ ;}
break;
case 186:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1144 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser *p = static_cast<CSSParser*>(parser);
@@ -3722,12 +3692,12 @@ yyreduce:
CSSSelector::PseudoType type = (yyval.selector)->pseudoType();
if (type == CSSSelector::PseudoUnknown)
(yyval.selector) = 0;
- }
+ ;}
break;
case 187:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1155 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser *p = static_cast<CSSParser*>(parser);
@@ -3738,12 +3708,12 @@ yyreduce:
CSSSelector::PseudoType type = (yyval.selector)->pseudoType();
if (type == CSSSelector::PseudoUnknown)
(yyval.selector) = 0;
- }
+ ;}
break;
case 188:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1166 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser *p = static_cast<CSSParser*>(parser);
@@ -3762,12 +3732,12 @@ yyreduce:
if (!isValidNthToken((yyvsp[(4) - (6)].string)))
(yyval.selector) = 0;
}
- }
+ ;}
break;
case 189:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1185 "../Source/WebCore/css/CSSGrammar.y"
{
if (!(yyvsp[(4) - (6)].selector) || !(yyvsp[(4) - (6)].selector)->isSimple())
@@ -3784,126 +3754,126 @@ yyreduce:
(yyvsp[(2) - (6)].string).lower();
(yyval.selector)->setValue((yyvsp[(2) - (6)].string));
}
- }
+ ;}
break;
case 190:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1204 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.boolean) = (yyvsp[(1) - (1)].boolean);
- }
+ ;}
break;
case 191:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1207 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.boolean) = (yyvsp[(1) - (2)].boolean);
if ( (yyvsp[(2) - (2)].boolean) )
(yyval.boolean) = (yyvsp[(2) - (2)].boolean);
- }
+ ;}
break;
case 192:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1212 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.boolean) = (yyvsp[(1) - (1)].boolean);
- }
+ ;}
break;
case 193:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1215 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.boolean) = false;
- }
+ ;}
break;
case 194:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1218 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.boolean) = false;
- }
+ ;}
break;
case 195:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1221 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.boolean) = (yyvsp[(1) - (2)].boolean);
- }
+ ;}
break;
case 196:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1224 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.boolean) = (yyvsp[(1) - (2)].boolean);
- }
+ ;}
break;
case 197:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1230 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
p->markPropertyStart();
(yyval.boolean) = (yyvsp[(1) - (3)].boolean);
- }
+ ;}
break;
case 198:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1235 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.boolean) = false;
- }
+ ;}
break;
case 199:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1238 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.boolean) = false;
- }
+ ;}
break;
case 200:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1241 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
p->markPropertyStart();
(yyval.boolean) = false;
- }
+ ;}
break;
case 201:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1246 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.boolean) = false;
- }
+ ;}
break;
case 202:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1249 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
@@ -3911,34 +3881,34 @@ yyreduce:
(yyval.boolean) = (yyvsp[(1) - (4)].boolean);
if ((yyvsp[(2) - (4)].boolean))
(yyval.boolean) = (yyvsp[(2) - (4)].boolean);
- }
+ ;}
break;
case 203:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1256 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
p->markPropertyStart();
(yyval.boolean) = (yyvsp[(1) - (4)].boolean);
- }
+ ;}
break;
case 204:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1261 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
p->markPropertyStart();
(yyval.boolean) = (yyvsp[(1) - (6)].boolean);
- }
+ ;}
break;
case 205:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1269 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.boolean) = false;
@@ -3956,21 +3926,21 @@ yyreduce:
p->m_valueList = 0;
}
p->markPropertyEnd((yyvsp[(5) - (5)].boolean), isPropertyParsed);
- }
+ ;}
break;
case 206:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1287 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.boolean) = false;
- }
+ ;}
break;
case 207:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1291 "../Source/WebCore/css/CSSGrammar.y"
{
/* The default movable type template has letter-spacing: .none; Handle this by looking for
@@ -3979,102 +3949,102 @@ yyreduce:
CSSParser* p = static_cast<CSSParser*>(parser);
p->markPropertyEnd(false, false);
(yyval.boolean) = false;
- }
+ ;}
break;
case 208:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1300 "../Source/WebCore/css/CSSGrammar.y"
{
/* When we encounter something like p {color: red !important fail;} we should drop the declaration */
CSSParser* p = static_cast<CSSParser*>(parser);
p->markPropertyEnd(false, false);
(yyval.boolean) = false;
- }
+ ;}
break;
case 209:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1307 "../Source/WebCore/css/CSSGrammar.y"
{
/* Handle this case: div { text-align: center; !important } Just reduce away the stray !important. */
(yyval.boolean) = false;
- }
+ ;}
break;
case 210:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1312 "../Source/WebCore/css/CSSGrammar.y"
{
/* div { font-family: } Just reduce away this property with no value. */
CSSParser* p = static_cast<CSSParser*>(parser);
p->markPropertyEnd(false, false);
(yyval.boolean) = false;
- }
+ ;}
break;
case 211:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1319 "../Source/WebCore/css/CSSGrammar.y"
{
/* if we come across rules with invalid values like this case: p { weight: *; }, just discard the rule */
CSSParser* p = static_cast<CSSParser*>(parser);
p->markPropertyEnd(false, false);
(yyval.boolean) = false;
- }
+ ;}
break;
case 212:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1326 "../Source/WebCore/css/CSSGrammar.y"
{
/* if we come across: div { color{;color:maroon} }, ignore everything within curly brackets */
(yyval.boolean) = false;
- }
+ ;}
break;
case 213:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1333 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.integer) = cssPropertyID((yyvsp[(1) - (2)].string));
- }
+ ;}
break;
case 214:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1339 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.boolean) = true; }
+ { (yyval.boolean) = true; ;}
break;
case 215:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1340 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.boolean) = false; }
+ { (yyval.boolean) = false; ;}
break;
case 216:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1344 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
(yyval.valueList) = p->createFloatingValueList();
(yyval.valueList)->addValue(p->sinkFloatingValue((yyvsp[(1) - (1)].value)));
- }
+ ;}
break;
case 217:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1349 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
@@ -4089,316 +4059,316 @@ yyreduce:
}
(yyval.valueList)->addValue(p->sinkFloatingValue((yyvsp[(3) - (3)].value)));
}
- }
+ ;}
break;
case 218:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1363 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.valueList) = 0;
- }
+ ;}
break;
case 219:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1366 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.valueList) = 0;
- }
+ ;}
break;
case 220:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1369 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.valueList) = 0;
- }
+ ;}
break;
case 221:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1375 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.character) = '/';
- }
+ ;}
break;
case 222:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1378 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.character) = ',';
- }
+ ;}
break;
case 223:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1381 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.character) = 0;
- }
+ ;}
break;
case 224:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1387 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value) = (yyvsp[(1) - (1)].value); }
+ { (yyval.value) = (yyvsp[(1) - (1)].value); ;}
break;
case 225:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1388 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value) = (yyvsp[(2) - (2)].value); (yyval.value).fValue *= (yyvsp[(1) - (2)].integer); }
+ { (yyval.value) = (yyvsp[(2) - (2)].value); (yyval.value).fValue *= (yyvsp[(1) - (2)].integer); ;}
break;
case 226:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1389 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_STRING; }
+ { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_STRING; ;}
break;
case 227:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1390 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.value).id = cssValueKeywordID((yyvsp[(1) - (2)].string));
(yyval.value).unit = CSSPrimitiveValue::CSS_IDENT;
(yyval.value).string = (yyvsp[(1) - (2)].string);
- }
+ ;}
break;
case 228:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1396 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_DIMENSION; }
+ { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_DIMENSION; ;}
break;
case 229:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1397 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(2) - (3)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_DIMENSION; }
+ { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(2) - (3)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_DIMENSION; ;}
break;
case 230:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1398 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_URI; }
+ { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_URI; ;}
break;
case 231:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1399 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_UNICODE_RANGE; }
+ { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_UNICODE_RANGE; ;}
break;
case 232:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1400 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_PARSER_HEXCOLOR; }
+ { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_PARSER_HEXCOLOR; ;}
break;
case 233:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1401 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).string = CSSParserString(); (yyval.value).unit = CSSPrimitiveValue::CSS_PARSER_HEXCOLOR; }
+ { (yyval.value).id = 0; (yyval.value).string = CSSParserString(); (yyval.value).unit = CSSPrimitiveValue::CSS_PARSER_HEXCOLOR; ;}
break;
case 234:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1403 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.value) = (yyvsp[(1) - (1)].value);
- }
+ ;}
break;
case 235:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1406 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.value) = (yyvsp[(1) - (1)].value);
- }
+ ;}
break;
case 236:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1409 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.value) = (yyvsp[(1) - (1)].value);
- }
+ ;}
break;
case 237:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1412 "../Source/WebCore/css/CSSGrammar.y"
{ /* Handle width: %; */
(yyval.value).id = 0; (yyval.value).unit = 0;
- }
+ ;}
break;
case 238:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1418 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).isInt = true; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; }
+ { (yyval.value).id = 0; (yyval.value).isInt = true; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; ;}
break;
case 239:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1419 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).isInt = false; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; }
+ { (yyval.value).id = 0; (yyval.value).isInt = false; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; ;}
break;
case 240:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1420 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PERCENTAGE; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PERCENTAGE; ;}
break;
case 241:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1421 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PX; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PX; ;}
break;
case 242:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1422 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_CM; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_CM; ;}
break;
case 243:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1423 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_MM; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_MM; ;}
break;
case 244:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1424 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_IN; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_IN; ;}
break;
case 245:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1425 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PT; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PT; ;}
break;
case 246:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1426 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PC; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PC; ;}
break;
case 247:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1427 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_DEG; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_DEG; ;}
break;
case 248:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1428 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_RAD; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_RAD; ;}
break;
case 249:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1429 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_GRAD; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_GRAD; ;}
break;
case 250:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1430 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_TURN; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_TURN; ;}
break;
case 251:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1431 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_MS; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_MS; ;}
break;
case 252:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1432 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_S; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_S; ;}
break;
case 253:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1433 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_HZ; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_HZ; ;}
break;
case 254:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1434 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_KHZ; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_KHZ; ;}
break;
case 255:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1435 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_EMS; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_EMS; ;}
break;
case 256:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1436 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSParserValue::Q_EMS; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSParserValue::Q_EMS; ;}
break;
case 257:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1437 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_EXS; }
+ { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_EXS; ;}
break;
case 258:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1438 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.value).id = 0;
@@ -4407,12 +4377,12 @@ yyreduce:
CSSParser* p = static_cast<CSSParser*>(parser);
if (Document* doc = p->document())
doc->setUsesRemUnits(true);
- }
+ ;}
break;
case 259:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1449 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
@@ -4422,12 +4392,12 @@ yyreduce:
(yyval.value).id = 0;
(yyval.value).unit = CSSParserValue::Function;
(yyval.value).function = f;
- }
+ ;}
break;
case 260:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1458 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
@@ -4437,74 +4407,74 @@ yyreduce:
(yyval.value).id = 0;
(yyval.value).unit = CSSParserValue::Function;
(yyval.value).function = f;
- }
+ ;}
break;
case 261:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1470 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value) = (yyvsp[(1) - (1)].value); }
+ { (yyval.value) = (yyvsp[(1) - (1)].value); ;}
break;
case 262:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1471 "../Source/WebCore/css/CSSGrammar.y"
- { (yyval.value) = (yyvsp[(2) - (2)].value); (yyval.value).fValue *= (yyvsp[(1) - (2)].integer); }
+ { (yyval.value) = (yyvsp[(2) - (2)].value); (yyval.value).fValue *= (yyvsp[(1) - (2)].integer); ;}
break;
case 263:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1475 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.character) = '+';
- }
+ ;}
break;
case 264:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1478 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.character) = '-';
- }
+ ;}
break;
case 265:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1481 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.character) = '*';
- }
+ ;}
break;
case 266:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1484 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.character) = '/';
- }
+ ;}
break;
case 267:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1487 "../Source/WebCore/css/CSSGrammar.y"
{
if (equalIgnoringCase("mod", (yyvsp[(1) - (2)].string).characters, (yyvsp[(1) - (2)].string).length))
(yyval.character) = '%';
else
(yyval.character) = 0;
- }
+ ;}
break;
case 268:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1496 "../Source/WebCore/css/CSSGrammar.y"
{
if ((yyvsp[(3) - (6)].valueList)) {
@@ -4518,23 +4488,23 @@ yyreduce:
(yyval.valueList)->addValue(v);
} else
(yyval.valueList) = 0;
- }
+ ;}
break;
case 269:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1511 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
(yyval.valueList) = p->createFloatingValueList();
(yyval.valueList)->addValue(p->sinkFloatingValue((yyvsp[(1) - (2)].value)));
- }
+ ;}
break;
case 270:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1516 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
@@ -4549,12 +4519,12 @@ yyreduce:
} else
(yyval.valueList) = 0;
- }
+ ;}
break;
case 271:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1530 "../Source/WebCore/css/CSSGrammar.y"
{
if ((yyvsp[(1) - (3)].valueList) && (yyvsp[(2) - (3)].character) && (yyvsp[(3) - (3)].valueList)) {
@@ -4567,30 +4537,30 @@ yyreduce:
(yyval.valueList)->extend(*((yyvsp[(3) - (3)].valueList)));
} else
(yyval.valueList) = 0;
- }
+ ;}
break;
case 273:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1543 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.valueList) = 0;
- }
+ ;}
break;
case 274:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1549 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.valueList) = (yyvsp[(1) - (1)].valueList);
- }
+ ;}
break;
case 275:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1552 "../Source/WebCore/css/CSSGrammar.y"
{
if ((yyvsp[(1) - (4)].valueList) && (yyvsp[(4) - (4)].valueList)) {
@@ -4603,12 +4573,12 @@ yyreduce:
(yyval.valueList)->extend(*((yyvsp[(4) - (4)].valueList)));
} else
(yyval.valueList) = 0;
- }
+ ;}
break;
case 276:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1567 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
@@ -4618,39 +4588,39 @@ yyreduce:
(yyval.value).id = 0;
(yyval.value).unit = CSSParserValue::Function;
(yyval.value).function = f;
- }
+ ;}
break;
case 277:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1576 "../Source/WebCore/css/CSSGrammar.y"
{
YYERROR;
- }
+ ;}
break;
case 278:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1583 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.string) = (yyvsp[(1) - (1)].string);
- }
+ ;}
break;
case 279:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1586 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.string) = (yyvsp[(1) - (1)].string);
- }
+ ;}
break;
case 280:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1592 "../Source/WebCore/css/CSSGrammar.y"
{
CSSParser* p = static_cast<CSSParser*>(parser);
@@ -4660,98 +4630,87 @@ yyreduce:
(yyval.value).id = 0;
(yyval.value).unit = CSSParserValue::Function;
(yyval.value).function = f;
- }
+ ;}
break;
case 281:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1601 "../Source/WebCore/css/CSSGrammar.y"
{
YYERROR;
- }
+ ;}
break;
case 282:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1609 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = 0;
- }
+ ;}
break;
case 283:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1612 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = 0;
- }
+ ;}
break;
case 284:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1618 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = 0;
- }
+ ;}
break;
case 285:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1621 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = 0;
- }
+ ;}
break;
case 286:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1627 "../Source/WebCore/css/CSSGrammar.y"
{
(yyval.rule) = 0;
- }
+ ;}
break;
case 287:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1645 "../Source/WebCore/css/CSSGrammar.y"
{
static_cast<CSSParser*>(parser)->invalidBlockHit();
- }
+ ;}
break;
case 288:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 1648 "../Source/WebCore/css/CSSGrammar.y"
{
static_cast<CSSParser*>(parser)->invalidBlockHit();
- }
+ ;}
break;
-/* Line 1806 of yacc.c */
-#line 4742 "/Source/WebCore/generated/CSSGrammar.tab.c"
+/* Line 1455 of yacc.c */
+#line 4712 "/Source/WebCore/generated/CSSGrammar.tab.c"
default: break;
}
- /* User semantic actions sometimes alter yychar, and that requires
- that yytoken be updated with the new translation. We take the
- approach of translating immediately before every use of yytoken.
- One alternative is translating here after every semantic action,
- but that translation would be missed if the semantic action invokes
- YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
- if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
- incorrect destructor might then be invoked immediately. In the
- case of YYERROR or YYBACKUP, subsequent parser actions might lead
- to an incorrect destructor call or verbose syntax error message
- before the lookahead is translated. */
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
YYPOPSTACK (yylen);
@@ -4779,10 +4738,6 @@ yyreduce:
| yyerrlab -- here on detecting error |
`------------------------------------*/
yyerrlab:
- /* Make sure we have latest lookahead translation. See comments at
- user semantic actions for why this is necessary. */
- yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-
/* If not already recovering from an error, report this error. */
if (!yyerrstatus)
{
@@ -4790,36 +4745,37 @@ yyerrlab:
#if ! YYERROR_VERBOSE
yyerror (YY_("syntax error"));
#else
-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
- yyssp, yytoken)
{
- char const *yymsgp = YY_("syntax error");
- int yysyntax_error_status;
- yysyntax_error_status = YYSYNTAX_ERROR;
- if (yysyntax_error_status == 0)
- yymsgp = yymsg;
- else if (yysyntax_error_status == 1)
- {
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
- yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
- if (!yymsg)
- {
- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
- yysyntax_error_status = 2;
- }
- else
- {
- yysyntax_error_status = YYSYNTAX_ERROR;
- yymsgp = yymsg;
- }
- }
- yyerror (yymsgp);
- if (yysyntax_error_status == 2)
- goto yyexhaustedlab;
+ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+ {
+ YYSIZE_T yyalloc = 2 * yysize;
+ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+ yyalloc = YYSTACK_ALLOC_MAXIMUM;
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+ if (yymsg)
+ yymsg_alloc = yyalloc;
+ else
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ }
+ }
+
+ if (0 < yysize && yysize <= yymsg_alloc)
+ {
+ (void) yysyntax_error (yymsg, yystate, yychar);
+ yyerror (yymsg);
+ }
+ else
+ {
+ yyerror (YY_("syntax error"));
+ if (yysize != 0)
+ goto yyexhaustedlab;
+ }
}
-# undef YYSYNTAX_ERROR
#endif
}
@@ -4878,7 +4834,7 @@ yyerrlab1:
for (;;)
{
yyn = yypact[yystate];
- if (!yypact_value_is_default (yyn))
+ if (yyn != YYPACT_NINF)
{
yyn += YYTERROR;
if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
@@ -4937,13 +4893,8 @@ yyexhaustedlab:
yyreturn:
if (yychar != YYEMPTY)
- {
- /* Make sure we have latest lookahead translation. See comments at
- user semantic actions for why this is necessary. */
- yytoken = YYTRANSLATE (yychar);
- yydestruct ("Cleanup: discarding lookahead",
- yytoken, &yylval);
- }
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
/* Do not reclaim the symbols of the rule which action triggered
this YYABORT or YYACCEPT. */
YYPOPSTACK (yylen);
@@ -4968,7 +4919,7 @@ yyreturn:
-/* Line 2067 of yacc.c */
+/* Line 1675 of yacc.c */
#line 1658 "../Source/WebCore/css/CSSGrammar.y"
diff --git a/src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.h b/src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.h
index 59225d8..2fcae75 100644
--- a/src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.h
+++ b/src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.h
@@ -1,10 +1,12 @@
#ifndef CSSGRAMMAR_H
#define CSSGRAMMAR_H
-/* A Bison parser, made by GNU Bison 2.5. */
-/* Bison interface for Yacc-like parsers in C
+/* A Bison parser, made by GNU Bison 2.4.1. */
+
+/* Skeleton interface for Bison's Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -128,7 +130,7 @@
typedef union YYSTYPE
{
-/* Line 2068 of yacc.c */
+/* Line 1676 of yacc.c */
#line 63 "../Source/WebCore/css/CSSGrammar.y"
bool boolean;
@@ -156,8 +158,8 @@ typedef union YYSTYPE
-/* Line 2068 of yacc.c */
-#line 159 "/Source/WebCore/generated/CSSGrammar.tab.h"
+/* Line 1676 of yacc.c */
+#line 161 "/Source/WebCore/generated/CSSGrammar.tab.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
diff --git a/src/3rdparty/webkit/Source/WebCore/generated/CSSPropertyNames.cpp b/src/3rdparty/webkit/Source/WebCore/generated/CSSPropertyNames.cpp
index 945ba7d..1294a34 100644
--- a/src/3rdparty/webkit/Source/WebCore/generated/CSSPropertyNames.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/generated/CSSPropertyNames.cpp
@@ -1,4 +1,4 @@
-/* C++ code produced by gperf version 3.0.4 */
+/* C++ code produced by gperf version 3.0.3 */
/* Command-line: gperf --key-positions='*' -D -n -s 2 CSSPropertyNames.gperf */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
diff --git a/src/3rdparty/webkit/Source/WebCore/generated/CSSValueKeywords.cpp b/src/3rdparty/webkit/Source/WebCore/generated/CSSValueKeywords.cpp
index 92c7541..081d323 100644
--- a/src/3rdparty/webkit/Source/WebCore/generated/CSSValueKeywords.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/generated/CSSValueKeywords.cpp
@@ -1,4 +1,4 @@
-/* C++ code produced by gperf version 3.0.4 */
+/* C++ code produced by gperf version 3.0.3 */
/* Command-line: gperf --key-positions='*' -D -n -s 2 CSSValueKeywords.gperf */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
diff --git a/src/3rdparty/webkit/Source/WebCore/generated/ColorData.cpp b/src/3rdparty/webkit/Source/WebCore/generated/ColorData.cpp
index da31ef8..3b09b89 100644
--- a/src/3rdparty/webkit/Source/WebCore/generated/ColorData.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/generated/ColorData.cpp
@@ -1,4 +1,4 @@
-/* C++ code produced by gperf version 3.0.4 */
+/* C++ code produced by gperf version 3.0.3 */
/* Command-line: gperf --key-positions='*' -D -s 2 /Source/WebCore/platform/ColorData.gperf */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
diff --git a/src/3rdparty/webkit/Source/WebCore/generated/DocTypeStrings.cpp b/src/3rdparty/webkit/Source/WebCore/generated/DocTypeStrings.cpp
index 5667009..e0a2b4f 100644
--- a/src/3rdparty/webkit/Source/WebCore/generated/DocTypeStrings.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/generated/DocTypeStrings.cpp
@@ -1,4 +1,4 @@
-/* C++ code produced by gperf version 3.0.4 */
+/* C++ code produced by gperf version 3.0.3 */
/* Command-line: gperf --key-positions='*' -s 2 /Source/WebCore/html/DocTypeStrings.gperf */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
diff --git a/src/3rdparty/webkit/Source/WebCore/generated/JSInternals.cpp b/src/3rdparty/webkit/Source/WebCore/generated/JSInternals.cpp
new file mode 100644
index 0000000..1a29b36
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebCore/generated/JSInternals.cpp
@@ -0,0 +1,134 @@
+/*
+ This file is part of the WebKit open source project.
+ This file has been generated by generate-bindings.pl. DO NOT MODIFY!
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "config.h"
+#include "JSInternals.h"
+
+#include "ExceptionCode.h"
+#include "Internals.h"
+#include "JSDOMBinding.h"
+#include "JSDocument.h"
+#include <runtime/Error.h>
+#include <wtf/GetPtr.h>
+
+using namespace JSC;
+
+namespace WebCore {
+
+ASSERT_CLASS_FITS_IN_CELL(JSInternals);
+
+/* Hash table for prototype */
+#if ENABLE(JIT)
+#define THUNK_GENERATOR(generator) , generator
+#else
+#define THUNK_GENERATOR(generator)
+#endif
+
+static const HashTableValue JSInternalsPrototypeTableValues[3] =
+{
+ { "setPasswordEchoEnabled", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsInternalsPrototypeFunctionSetPasswordEchoEnabled), (intptr_t)2 THUNK_GENERATOR(0) },
+ { "setPasswordEchoDurationInSeconds", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsInternalsPrototypeFunctionSetPasswordEchoDurationInSeconds), (intptr_t)2 THUNK_GENERATOR(0) },
+ { 0, 0, 0, 0 THUNK_GENERATOR(0) }
+};
+
+#undef THUNK_GENERATOR
+static JSC_CONST_HASHTABLE HashTable JSInternalsPrototypeTable = { 5, 3, JSInternalsPrototypeTableValues, 0 };
+const ClassInfo JSInternalsPrototype::s_info = { "InternalsPrototype", &JSC::JSObjectWithGlobalObject::s_info, &JSInternalsPrototypeTable, 0 };
+
+JSObject* JSInternalsPrototype::self(ExecState* exec, JSGlobalObject* globalObject)
+{
+ return getDOMPrototype<JSInternals>(exec, globalObject);
+}
+
+bool JSInternalsPrototype::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
+{
+ return getStaticFunctionSlot<JSObject>(exec, &JSInternalsPrototypeTable, this, propertyName, slot);
+}
+
+bool JSInternalsPrototype::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor)
+{
+ return getStaticFunctionDescriptor<JSObject>(exec, &JSInternalsPrototypeTable, this, propertyName, descriptor);
+}
+
+const ClassInfo JSInternals::s_info = { "Internals", &JSDOMWrapper::s_info, 0, 0 };
+
+JSInternals::JSInternals(Structure* structure, JSDOMGlobalObject* globalObject, PassRefPtr<Internals> impl)
+ : JSDOMWrapper(structure, globalObject)
+ , m_impl(impl)
+{
+ ASSERT(inherits(&s_info));
+}
+
+JSObject* JSInternals::createPrototype(ExecState* exec, JSGlobalObject* globalObject)
+{
+ return new (exec) JSInternalsPrototype(exec->globalData(), globalObject, JSInternalsPrototype::createStructure(globalObject->globalData(), globalObject->objectPrototype()));
+}
+
+EncodedJSValue JSC_HOST_CALL jsInternalsPrototypeFunctionSetPasswordEchoEnabled(ExecState* exec)
+{
+ JSValue thisValue = exec->hostThisValue();
+ if (!thisValue.inherits(&JSInternals::s_info))
+ return throwVMTypeError(exec);
+ JSInternals* castedThis = static_cast<JSInternals*>(asObject(thisValue));
+ Internals* imp = static_cast<Internals*>(castedThis->impl());
+ ExceptionCode ec = 0;
+ Document* document(toDocument(exec->argument(0)));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+ bool enabled(exec->argument(1).toBoolean(exec));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+
+ imp->setPasswordEchoEnabled(document, enabled, ec);
+ setDOMException(exec, ec);
+ return JSValue::encode(jsUndefined());
+}
+
+EncodedJSValue JSC_HOST_CALL jsInternalsPrototypeFunctionSetPasswordEchoDurationInSeconds(ExecState* exec)
+{
+ JSValue thisValue = exec->hostThisValue();
+ if (!thisValue.inherits(&JSInternals::s_info))
+ return throwVMTypeError(exec);
+ JSInternals* castedThis = static_cast<JSInternals*>(asObject(thisValue));
+ Internals* imp = static_cast<Internals*>(castedThis->impl());
+ ExceptionCode ec = 0;
+ Document* document(toDocument(exec->argument(0)));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+ double durationInSeconds(exec->argument(1).toNumber(exec));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+
+ imp->setPasswordEchoDurationInSeconds(document, durationInSeconds, ec);
+ setDOMException(exec, ec);
+ return JSValue::encode(jsUndefined());
+}
+
+JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, Internals* impl)
+{
+ return wrap<JSInternals>(exec, globalObject, impl);
+}
+
+Internals* toInternals(JSC::JSValue value)
+{
+ return value.inherits(&JSInternals::s_info) ? static_cast<JSInternals*>(asObject(value))->impl() : 0;
+}
+
+}
diff --git a/src/3rdparty/webkit/Source/WebCore/generated/JSInternals.h b/src/3rdparty/webkit/Source/WebCore/generated/JSInternals.h
new file mode 100644
index 0000000..08e2751
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebCore/generated/JSInternals.h
@@ -0,0 +1,79 @@
+/*
+ This file is part of the WebKit open source project.
+ This file has been generated by generate-bindings.pl. DO NOT MODIFY!
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef JSInternals_h
+#define JSInternals_h
+
+#include "JSDOMBinding.h"
+#include <runtime/JSGlobalObject.h>
+#include <runtime/JSObjectWithGlobalObject.h>
+#include <runtime/ObjectPrototype.h>
+
+namespace WebCore {
+
+class Internals;
+
+class JSInternals : public JSDOMWrapper {
+ typedef JSDOMWrapper Base;
+public:
+ JSInternals(JSC::Structure*, JSDOMGlobalObject*, PassRefPtr<Internals>);
+ static JSC::JSObject* createPrototype(JSC::ExecState*, JSC::JSGlobalObject*);
+ static const JSC::ClassInfo s_info;
+
+ static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)
+ {
+ return JSC::Structure::create(globalData, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
+ }
+
+ Internals* impl() const { return m_impl.get(); }
+
+private:
+ RefPtr<Internals> m_impl;
+protected:
+ static const unsigned StructureFlags = Base::StructureFlags;
+};
+
+JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, Internals*);
+Internals* toInternals(JSC::JSValue);
+
+class JSInternalsPrototype : public JSC::JSObjectWithGlobalObject {
+ typedef JSC::JSObjectWithGlobalObject Base;
+public:
+ static JSC::JSObject* self(JSC::ExecState*, JSC::JSGlobalObject*);
+ static const JSC::ClassInfo s_info;
+ virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&);
+ virtual bool getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier&, JSC::PropertyDescriptor&);
+ static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)
+ {
+ return JSC::Structure::create(globalData, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
+ }
+ JSInternalsPrototype(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) : JSC::JSObjectWithGlobalObject(globalData, globalObject, structure) { }
+protected:
+ static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags;
+};
+
+// Functions
+
+JSC::EncodedJSValue JSC_HOST_CALL jsInternalsPrototypeFunctionSetPasswordEchoEnabled(JSC::ExecState*);
+JSC::EncodedJSValue JSC_HOST_CALL jsInternalsPrototypeFunctionSetPasswordEchoDurationInSeconds(JSC::ExecState*);
+
+} // namespace WebCore
+
+#endif
diff --git a/src/3rdparty/webkit/Source/WebCore/generated/JSWebGLRenderingContext.cpp b/src/3rdparty/webkit/Source/WebCore/generated/JSWebGLRenderingContext.cpp
index 6f38364..e2a03c2 100644
--- a/src/3rdparty/webkit/Source/WebCore/generated/JSWebGLRenderingContext.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/generated/JSWebGLRenderingContext.cpp
@@ -30,6 +30,7 @@
#include "JSDOMBinding.h"
#include "JSHTMLCanvasElement.h"
#include "JSHTMLImageElement.h"
+#include "JSHTMLVideoElement.h"
#include "JSImageData.h"
#include "JSWebGLActiveInfo.h"
#include "JSWebGLBuffer.h"
@@ -2985,6 +2986,40 @@ static EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionTexI
return JSValue::encode(jsUndefined());
}
+static EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionTexImage2D5(ExecState* exec)
+{
+ JSValue thisValue = exec->hostThisValue();
+ if (!thisValue.inherits(&JSWebGLRenderingContext::s_info))
+ return throwVMTypeError(exec);
+ JSWebGLRenderingContext* castedThis = static_cast<JSWebGLRenderingContext*>(asObject(thisValue));
+ WebGLRenderingContext* imp = static_cast<WebGLRenderingContext*>(castedThis->impl());
+ ExceptionCode ec = 0;
+ unsigned target(exec->argument(0).toUInt32(exec));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+ int level(exec->argument(1).toInt32(exec));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+ unsigned internalformat(exec->argument(2).toUInt32(exec));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+ unsigned format(exec->argument(3).toUInt32(exec));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+ unsigned type(exec->argument(4).toUInt32(exec));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+ if (exec->argumentCount() > 5 && !exec->argument(5).isUndefinedOrNull() && !exec->argument(5).inherits(&JSHTMLVideoElement::s_info))
+ return throwVMTypeError(exec);
+ HTMLVideoElement* video(toHTMLVideoElement(exec->argument(5)));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+
+ imp->texImage2D(target, level, internalformat, format, type, video, ec);
+ setDOMException(exec, ec);
+ return JSValue::encode(jsUndefined());
+}
+
EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionTexImage2D(ExecState* exec)
{
if ((exec->argumentCount() == 9 && (exec->argument(8).isNull() || (exec->argument(8).isObject() && asObject(exec->argument(8))->inherits(&JSArrayBufferView::s_info)))))
@@ -2995,6 +3030,8 @@ EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionTexImage2D(
return jsWebGLRenderingContextPrototypeFunctionTexImage2D3(exec);
if ((exec->argumentCount() == 6 && (exec->argument(5).isNull() || (exec->argument(5).isObject() && asObject(exec->argument(5))->inherits(&JSHTMLCanvasElement::s_info)))))
return jsWebGLRenderingContextPrototypeFunctionTexImage2D4(exec);
+ if ((exec->argumentCount() == 6 && (exec->argument(5).isNull() || (exec->argument(5).isObject() && asObject(exec->argument(5))->inherits(&JSHTMLVideoElement::s_info)))))
+ return jsWebGLRenderingContextPrototypeFunctionTexImage2D5(exec);
return throwVMTypeError(exec);
}
@@ -3152,6 +3189,43 @@ static EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionTexS
return JSValue::encode(jsUndefined());
}
+static EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionTexSubImage2D5(ExecState* exec)
+{
+ JSValue thisValue = exec->hostThisValue();
+ if (!thisValue.inherits(&JSWebGLRenderingContext::s_info))
+ return throwVMTypeError(exec);
+ JSWebGLRenderingContext* castedThis = static_cast<JSWebGLRenderingContext*>(asObject(thisValue));
+ WebGLRenderingContext* imp = static_cast<WebGLRenderingContext*>(castedThis->impl());
+ ExceptionCode ec = 0;
+ unsigned target(exec->argument(0).toUInt32(exec));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+ int level(exec->argument(1).toInt32(exec));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+ int xoffset(exec->argument(2).toInt32(exec));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+ int yoffset(exec->argument(3).toInt32(exec));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+ unsigned format(exec->argument(4).toUInt32(exec));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+ unsigned type(exec->argument(5).toUInt32(exec));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+ if (exec->argumentCount() > 6 && !exec->argument(6).isUndefinedOrNull() && !exec->argument(6).inherits(&JSHTMLVideoElement::s_info))
+ return throwVMTypeError(exec);
+ HTMLVideoElement* video(toHTMLVideoElement(exec->argument(6)));
+ if (exec->hadException())
+ return JSValue::encode(jsUndefined());
+
+ imp->texSubImage2D(target, level, xoffset, yoffset, format, type, video, ec);
+ setDOMException(exec, ec);
+ return JSValue::encode(jsUndefined());
+}
+
EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionTexSubImage2D(ExecState* exec)
{
if ((exec->argumentCount() == 9 && (exec->argument(8).isNull() || (exec->argument(8).isObject() && asObject(exec->argument(8))->inherits(&JSArrayBufferView::s_info)))))
@@ -3162,6 +3236,8 @@ EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionTexSubImage
return jsWebGLRenderingContextPrototypeFunctionTexSubImage2D3(exec);
if ((exec->argumentCount() == 7 && (exec->argument(6).isNull() || (exec->argument(6).isObject() && asObject(exec->argument(6))->inherits(&JSHTMLCanvasElement::s_info)))))
return jsWebGLRenderingContextPrototypeFunctionTexSubImage2D4(exec);
+ if ((exec->argumentCount() == 7 && (exec->argument(6).isNull() || (exec->argument(6).isObject() && asObject(exec->argument(6))->inherits(&JSHTMLVideoElement::s_info)))))
+ return jsWebGLRenderingContextPrototypeFunctionTexSubImage2D5(exec);
return throwVMTypeError(exec);
}
diff --git a/src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.cpp b/src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.cpp
index dc82e12..4e5cb97 100644
--- a/src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.cpp
@@ -1,8 +1,10 @@
-/* A Bison parser, made by GNU Bison 2.5. */
-/* Bison implementation for Yacc-like parsers in C
+/* A Bison parser, made by GNU Bison 2.4.1. */
+
+/* Skeleton implementation for Bison's Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -44,7 +46,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.5"
+#define YYBISON_VERSION "2.4.1"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -73,7 +75,7 @@
/* Copy the first part of user declarations. */
-/* Line 268 of yacc.c */
+/* Line 189 of yacc.c */
#line 28 "../Source/WebCore/xml/XPathGrammar.y"
@@ -104,8 +106,8 @@ using namespace XPath;
-/* Line 268 of yacc.c */
-#line 109 "/Source/WebCore/generated/XPathGrammar.tab.c"
+/* Line 189 of yacc.c */
+#line 111 "/Source/WebCore/generated/XPathGrammar.tab.c"
/* Enabling traces. */
#ifndef YYDEBUG
@@ -159,7 +161,7 @@ using namespace XPath;
typedef union YYSTYPE
{
-/* Line 293 of yacc.c */
+/* Line 214 of yacc.c */
#line 60 "../Source/WebCore/xml/XPathGrammar.y"
Step::Axis axis;
@@ -175,8 +177,8 @@ typedef union YYSTYPE
-/* Line 293 of yacc.c */
-#line 180 "/Source/WebCore/generated/XPathGrammar.tab.c"
+/* Line 214 of yacc.c */
+#line 182 "/Source/WebCore/generated/XPathGrammar.tab.c"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -186,7 +188,7 @@ typedef union YYSTYPE
/* Copy the second part of user declarations. */
-/* Line 343 of yacc.c */
+/* Line 264 of yacc.c */
#line 73 "../Source/WebCore/xml/XPathGrammar.y"
@@ -195,8 +197,8 @@ static void xpathyyerror(const char*) { }
-/* Line 343 of yacc.c */
-#line 200 "/Source/WebCore/generated/XPathGrammar.tab.c"
+/* Line 264 of yacc.c */
+#line 202 "/Source/WebCore/generated/XPathGrammar.tab.c"
#ifdef short
# undef short
@@ -246,7 +248,7 @@ typedef short int yytype_int16;
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
#ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
+# if YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
# define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -299,11 +301,11 @@ YYID (yyi)
# define alloca _alloca
# else
# define YYSTACK_ALLOC alloca
-# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef EXIT_SUCCESS
-# define EXIT_SUCCESS 0
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
# endif
# endif
# endif
@@ -326,24 +328,24 @@ YYID (yyi)
# ifndef YYSTACK_ALLOC_MAXIMUM
# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
# endif
-# if (defined __cplusplus && ! defined EXIT_SUCCESS \
+# if (defined __cplusplus && ! defined _STDLIB_H \
&& ! ((defined YYMALLOC || defined malloc) \
&& (defined YYFREE || defined free)))
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef EXIT_SUCCESS
-# define EXIT_SUCCESS 0
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
# endif
# endif
# ifndef YYMALLOC
# define YYMALLOC malloc
-# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# ifndef YYFREE
# define YYFREE free
-# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
@@ -372,7 +374,23 @@ union yyalloc
((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ YYSTACK_GAP_MAXIMUM)
-# define YYCOPY_NEEDED 1
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (YYID (0))
+# endif
+# endif
/* Relocate STACK from its old location to the new one. The
local variables YYSIZE and YYSTACKSIZE give the old and new number of
@@ -392,26 +410,6 @@ union yyalloc
#endif
-#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if defined __GNUC__ && 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
- while (YYID (0))
-# endif
-# endif
-#endif /* !YYCOPY_NEEDED */
-
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 47
/* YYLAST -- Last index in YYTABLE. */
@@ -570,8 +568,8 @@ static const yytype_uint8 yyr2[] =
1, 2
};
-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
- Performed when YYTABLE doesn't specify something else to do. Zero
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
@@ -622,7 +620,8 @@ static const yytype_int8 yypgoto[] =
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
- number is the opposite. If YYTABLE_NINF, syntax error. */
+ number is the opposite. If zero, do what YYDEFACT says.
+ If YYTABLE_NINF, syntax error. */
#define YYTABLE_NINF -1
static const yytype_uint8 yytable[] =
{
@@ -641,12 +640,6 @@ static const yytype_uint8 yytable[] =
15
};
-#define yypact_value_is_default(yystate) \
- ((yystate) == (-44))
-
-#define yytable_value_is_error(yytable_value) \
- YYID (0)
-
static const yytype_int8 yycheck[] =
{
1, 12, 0, 19, 22, 48, 49, 43, 10, 11,
@@ -692,18 +685,9 @@ static const yytype_uint8 yystos[] =
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. However,
- YYFAIL appears to be in use. Nevertheless, it is formally deprecated
- in Bison 2.4.2's NEWS entry, where a plan to phase it out is
- discussed. */
+ Once GCC version 2 has supplanted version 1, this can go. */
#define YYFAIL goto yyerrlab
-#if defined YYFAIL
- /* This is here to suppress warnings from the GCC cpp's
- -Wunused-macros. Normally we don't worry about that warning, but
- some users do, and we want to make it easy for users to remove
- YYFAIL uses, which will produce warnings from Bison 2.5. */
-#endif
#define YYRECOVERING() (!!yyerrstatus)
@@ -713,6 +697,7 @@ do \
{ \
yychar = (Token); \
yylval = (Value); \
+ yytoken = YYTRANSLATE (yychar); \
YYPOPSTACK (1); \
goto yybackup; \
} \
@@ -754,10 +739,19 @@ while (YYID (0))
#endif
-/* This macro is provided for backward compatibility. */
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+ This macro was not mandated originally: define only if we know
+ we won't break user code: when these are the locations we know. */
#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# if YYLTYPE_IS_TRIVIAL
+# define YY_LOCATION_PRINT(File, Loc) \
+ fprintf (File, "%d.%d-%d.%d", \
+ (Loc).first_line, (Loc).first_column, \
+ (Loc).last_line, (Loc).last_column)
+# else
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
#endif
@@ -949,6 +943,7 @@ int yydebug;
# define YYMAXDEPTH 10000
#endif
+
#if YYERROR_VERBOSE
@@ -1051,142 +1046,115 @@ yytnamerr (char *yyres, const char *yystr)
}
# endif
-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
- about the unexpected token YYTOKEN for the state stack whose top is
- YYSSP.
-
- Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
- not large enough to hold the message. In that case, also set
- *YYMSG_ALLOC to the required number of bytes. Return 2 if the
- required number of bytes is too large to store. */
-static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
- yytype_int16 *yyssp, int yytoken)
+/* Copy into YYRESULT an error message about the unexpected token
+ YYCHAR while in state YYSTATE. Return the number of bytes copied,
+ including the terminating null byte. If YYRESULT is null, do not
+ copy anything; just return the number of bytes that would be
+ copied. As a special case, return 0 if an ordinary "syntax error"
+ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
+ size calculation. */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
{
- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
- YYSIZE_T yysize = yysize0;
- YYSIZE_T yysize1;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- /* Internationalized format string. */
- const char *yyformat = 0;
- /* Arguments of yyformat. */
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- /* Number of reported tokens (one for the "unexpected", one per
- "expected"). */
- int yycount = 0;
-
- /* There are many possibilities here to consider:
- - Assume YYFAIL is not used. It's too flawed to consider. See
- <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
- for details. YYERROR is fine as it does not invoke this
- function.
- - If this state is a consistent state with a default action, then
- the only way this function was invoked is if the default action
- is an error action. In that case, don't check for expected
- tokens because there are none.
- - The only way there can be no lookahead present (in yychar) is if
- this state is a consistent state with a default action. Thus,
- detecting the absence of a lookahead is sufficient to determine
- that there is no unexpected or expected token to report. In that
- case, just report a simple "syntax error".
- - Don't assume there isn't a lookahead just because this state is a
- consistent state with a default action. There might have been a
- previous inconsistent state, consistent state with a non-default
- action, or user semantic action that manipulated yychar.
- - Of course, the expected token list depends on states to have
- correct lookahead information, and it depends on the parser not
- to perform extra reductions after fetching a lookahead from the
- scanner and before detecting a syntax error. Thus, state merging
- (from LALR or IELR) and default reductions corrupt the expected
- token list. However, the list is correct for canonical LR with
- one exception: it will still contain any token that will not be
- accepted due to an error action in a later state.
- */
- if (yytoken != YYEMPTY)
- {
- int yyn = yypact[*yyssp];
- yyarg[yycount++] = yytname[yytoken];
- if (!yypact_value_is_default (yyn))
- {
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. In other words, skip the first -YYN actions for
- this state because they are default actions. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yyx;
-
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
- && !yytable_value_is_error (yytable[yyx + yyn]))
- {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- yysize = yysize0;
- break;
- }
- yyarg[yycount++] = yytname[yyx];
- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
- if (! (yysize <= yysize1
- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
- }
- }
- }
+ int yyn = yypact[yystate];
- switch (yycount)
+ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+ return 0;
+ else
{
-# define YYCASE_(N, S) \
- case N: \
- yyformat = S; \
- break
- YYCASE_(0, YY_("syntax error"));
- YYCASE_(1, YY_("syntax error, unexpected %s"));
- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-# undef YYCASE_
- }
+ int yytype = YYTRANSLATE (yychar);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ int yysize_overflow = 0;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ int yyx;
+
+# if 0
+ /* This is so xgettext sees the translatable formats that are
+ constructed on the fly. */
+ YY_("syntax error, unexpected %s");
+ YY_("syntax error, unexpected %s, expecting %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+# endif
+ char *yyfmt;
+ char const *yyf;
+ static char const yyunexpected[] = "syntax error, unexpected %s";
+ static char const yyexpecting[] = ", expecting %s";
+ static char const yyor[] = " or %s";
+ char yyformat[sizeof yyunexpected
+ + sizeof yyexpecting - 1
+ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+ * (sizeof yyor - 1))];
+ char const *yyprefix = yyexpecting;
+
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yycount = 1;
+
+ yyarg[0] = yytname[yytype];
+ yyfmt = yystpcpy (yyformat, yyunexpected);
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ yyformat[sizeof yyunexpected - 1] = '\0';
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+ yyfmt = yystpcpy (yyfmt, yyprefix);
+ yyprefix = yyor;
+ }
- yysize1 = yysize + yystrlen (yyformat);
- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
+ yyf = YY_(yyformat);
+ yysize1 = yysize + yystrlen (yyf);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
- if (*yymsg_alloc < yysize)
- {
- *yymsg_alloc = 2 * yysize;
- if (! (yysize <= *yymsg_alloc
- && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
- *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
- return 1;
- }
+ if (yysize_overflow)
+ return YYSIZE_MAXIMUM;
- /* Avoid sprintf, as that infringes on the user's name space.
- Don't have undefined behavior even if the translation
- produced a string with the wrong number of "%s"s. */
- {
- char *yyp = *yymsg;
- int yyi = 0;
- while ((*yyp = *yyformat) != '\0')
- if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
- {
- yyp += yytnamerr (yyp, yyarg[yyi++]);
- yyformat += 2;
- }
- else
- {
- yyp++;
- yyformat++;
- }
- }
- return 0;
+ if (yyresult)
+ {
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ char *yyp = yyresult;
+ int yyi = 0;
+ while ((*yyp = *yyf) != '\0')
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ }
+ return yysize;
+ }
}
#endif /* YYERROR_VERBOSE */
+
/*-----------------------------------------------.
| Release the memory associated to this symbol. |
@@ -1219,7 +1187,6 @@ yydestruct (yymsg, yytype, yyvaluep)
}
}
-
/* Prevent warnings from -Wmissing-prototypes. */
#ifdef YYPARSE_PARAM
#if defined __STDC__ || defined __cplusplus
@@ -1236,9 +1203,12 @@ int yyparse ();
#endif /* ! YYPARSE_PARAM */
-/*----------.
-| yyparse. |
-`----------*/
+
+
+
+/*-------------------------.
+| yyparse or yypush_parse. |
+`-------------------------*/
#ifdef YYPARSE_PARAM
#if (defined __STDC__ || defined __C99__FUNC__ \
@@ -1425,7 +1395,7 @@ yybackup:
/* First try to decide what to do without reference to lookahead token. */
yyn = yypact[yystate];
- if (yypact_value_is_default (yyn))
+ if (yyn == YYPACT_NINF)
goto yydefault;
/* Not known => get a lookahead token if don't already have one. */
@@ -1456,8 +1426,8 @@ yybackup:
yyn = yytable[yyn];
if (yyn <= 0)
{
- if (yytable_value_is_error (yyn))
- goto yyerrlab;
+ if (yyn == 0 || yyn == YYTABLE_NINF)
+ goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
@@ -1512,98 +1482,98 @@ yyreduce:
{
case 2:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 122 "../Source/WebCore/xml/XPathGrammar.y"
{
PARSER->m_topExpr = (yyvsp[(1) - (1)].expr);
- }
+ ;}
break;
case 3:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 129 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.locationPath)->setAbsolute(false);
- }
+ ;}
break;
case 4:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 134 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.locationPath)->setAbsolute(true);
- }
+ ;}
break;
case 5:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 141 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.locationPath) = new LocationPath;
PARSER->registerParseNode((yyval.locationPath));
- }
+ ;}
break;
case 6:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 147 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.locationPath) = (yyvsp[(2) - (2)].locationPath);
- }
+ ;}
break;
case 7:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 152 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.locationPath) = (yyvsp[(2) - (2)].locationPath);
(yyval.locationPath)->insertFirstStep((yyvsp[(1) - (2)].step));
PARSER->unregisterParseNode((yyvsp[(1) - (2)].step));
- }
+ ;}
break;
case 8:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 161 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.locationPath) = new LocationPath;
(yyval.locationPath)->appendStep((yyvsp[(1) - (1)].step));
PARSER->unregisterParseNode((yyvsp[(1) - (1)].step));
PARSER->registerParseNode((yyval.locationPath));
- }
+ ;}
break;
case 9:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 169 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.locationPath)->appendStep((yyvsp[(3) - (3)].step));
PARSER->unregisterParseNode((yyvsp[(3) - (3)].step));
- }
+ ;}
break;
case 10:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 175 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.locationPath)->appendStep((yyvsp[(2) - (3)].step));
(yyval.locationPath)->appendStep((yyvsp[(3) - (3)].step));
PARSER->unregisterParseNode((yyvsp[(2) - (3)].step));
PARSER->unregisterParseNode((yyvsp[(3) - (3)].step));
- }
+ ;}
break;
case 11:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 185 "../Source/WebCore/xml/XPathGrammar.y"
{
if ((yyvsp[(2) - (2)].predList)) {
@@ -1613,12 +1583,12 @@ yyreduce:
(yyval.step) = new Step(Step::ChildAxis, *(yyvsp[(1) - (2)].nodeTest));
PARSER->deleteNodeTest((yyvsp[(1) - (2)].nodeTest));
PARSER->registerParseNode((yyval.step));
- }
+ ;}
break;
case 12:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 196 "../Source/WebCore/xml/XPathGrammar.y"
{
String localName;
@@ -1635,12 +1605,12 @@ yyreduce:
(yyval.step) = new Step(Step::ChildAxis, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI));
PARSER->deleteString((yyvsp[(1) - (2)].str));
PARSER->registerParseNode((yyval.step));
- }
+ ;}
break;
case 13:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 214 "../Source/WebCore/xml/XPathGrammar.y"
{
if ((yyvsp[(3) - (3)].predList)) {
@@ -1650,12 +1620,12 @@ yyreduce:
(yyval.step) = new Step((yyvsp[(1) - (3)].axis), *(yyvsp[(2) - (3)].nodeTest));
PARSER->deleteNodeTest((yyvsp[(2) - (3)].nodeTest));
PARSER->registerParseNode((yyval.step));
- }
+ ;}
break;
case 14:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 225 "../Source/WebCore/xml/XPathGrammar.y"
{
String localName;
@@ -1672,21 +1642,21 @@ yyreduce:
(yyval.step) = new Step((yyvsp[(1) - (3)].axis), Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI));
PARSER->deleteString((yyvsp[(2) - (3)].str));
PARSER->registerParseNode((yyval.step));
- }
+ ;}
break;
case 17:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 249 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.axis) = Step::AttributeAxis;
- }
+ ;}
break;
case 18:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 256 "../Source/WebCore/xml/XPathGrammar.y"
{
if (*(yyvsp[(1) - (3)].str) == "node")
@@ -1698,147 +1668,147 @@ yyreduce:
PARSER->deleteString((yyvsp[(1) - (3)].str));
PARSER->registerNodeTest((yyval.nodeTest));
- }
+ ;}
break;
case 19:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 269 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.nodeTest) = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest);
PARSER->deleteString((yyvsp[(1) - (3)].str));
PARSER->registerNodeTest((yyval.nodeTest));
- }
+ ;}
break;
case 20:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 276 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.nodeTest) = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest, (yyvsp[(3) - (4)].str)->stripWhiteSpace());
PARSER->deleteString((yyvsp[(1) - (4)].str));
PARSER->deleteString((yyvsp[(3) - (4)].str));
PARSER->registerNodeTest((yyval.nodeTest));
- }
+ ;}
break;
case 21:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 286 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.predList) = 0;
- }
+ ;}
break;
case 23:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 295 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.predList) = new Vector<Predicate*>;
(yyval.predList)->append(new Predicate((yyvsp[(1) - (1)].expr)));
PARSER->unregisterParseNode((yyvsp[(1) - (1)].expr));
PARSER->registerPredicateVector((yyval.predList));
- }
+ ;}
break;
case 24:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 303 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.predList)->append(new Predicate((yyvsp[(2) - (2)].expr)));
PARSER->unregisterParseNode((yyvsp[(2) - (2)].expr));
- }
+ ;}
break;
case 25:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 311 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = (yyvsp[(2) - (3)].expr);
- }
+ ;}
break;
case 26:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 318 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.step) = new Step(Step::DescendantOrSelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest));
PARSER->registerParseNode((yyval.step));
- }
+ ;}
break;
case 27:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 326 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.step) = new Step(Step::SelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest));
PARSER->registerParseNode((yyval.step));
- }
+ ;}
break;
case 28:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 332 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.step) = new Step(Step::ParentAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest));
PARSER->registerParseNode((yyval.step));
- }
+ ;}
break;
case 29:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 340 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = new VariableReference(*(yyvsp[(1) - (1)].str));
PARSER->deleteString((yyvsp[(1) - (1)].str));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
case 30:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 347 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = (yyvsp[(2) - (3)].expr);
- }
+ ;}
break;
case 31:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 352 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = new StringExpression(*(yyvsp[(1) - (1)].str));
PARSER->deleteString((yyvsp[(1) - (1)].str));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
case 32:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 359 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = new Number((yyvsp[(1) - (1)].str)->toDouble());
PARSER->deleteString((yyvsp[(1) - (1)].str));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
case 34:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 370 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = createFunction(*(yyvsp[(1) - (3)].str));
@@ -1846,12 +1816,12 @@ yyreduce:
YYABORT;
PARSER->deleteString((yyvsp[(1) - (3)].str));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
case 35:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 379 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = createFunction(*(yyvsp[(1) - (4)].str), *(yyvsp[(3) - (4)].argList));
@@ -1860,34 +1830,34 @@ yyreduce:
PARSER->deleteString((yyvsp[(1) - (4)].str));
PARSER->deleteExpressionVector((yyvsp[(3) - (4)].argList));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
case 36:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 391 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.argList) = new Vector<Expression*>;
(yyval.argList)->append((yyvsp[(1) - (1)].expr));
PARSER->unregisterParseNode((yyvsp[(1) - (1)].expr));
PARSER->registerExpressionVector((yyval.argList));
- }
+ ;}
break;
case 37:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 399 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.argList)->append((yyvsp[(3) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr));
- }
+ ;}
break;
case 40:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 413 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = new Union;
@@ -1896,21 +1866,21 @@ yyreduce:
PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
case 41:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 425 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = (yyvsp[(1) - (1)].locationPath);
- }
+ ;}
break;
case 43:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 432 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyvsp[(3) - (3)].locationPath)->setAbsolute(true);
@@ -1918,12 +1888,12 @@ yyreduce:
PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(3) - (3)].locationPath));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
case 44:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 441 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyvsp[(3) - (3)].locationPath)->insertFirstStep((yyvsp[(2) - (3)].step));
@@ -1933,134 +1903,123 @@ yyreduce:
PARSER->unregisterParseNode((yyvsp[(2) - (3)].step));
PARSER->unregisterParseNode((yyvsp[(3) - (3)].locationPath));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
case 46:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 456 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = new Filter((yyvsp[(1) - (2)].expr), *(yyvsp[(2) - (2)].predList));
PARSER->unregisterParseNode((yyvsp[(1) - (2)].expr));
PARSER->deletePredicateVector((yyvsp[(2) - (2)].predList));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
case 48:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 468 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = new LogicalOp(LogicalOp::OP_Or, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
case 50:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 480 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = new LogicalOp(LogicalOp::OP_And, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
case 52:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 492 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = new EqTestOp((yyvsp[(2) - (3)].eqop), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
case 54:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 504 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = new EqTestOp((yyvsp[(2) - (3)].eqop), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
case 56:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 516 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = new NumericOp(NumericOp::OP_Add, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
case 57:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 524 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = new NumericOp(NumericOp::OP_Sub, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
case 59:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 536 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = new NumericOp((yyvsp[(2) - (3)].numop), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr));
PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
case 61:
-/* Line 1806 of yacc.c */
+/* Line 1455 of yacc.c */
#line 548 "../Source/WebCore/xml/XPathGrammar.y"
{
(yyval.expr) = new Negative;
(yyval.expr)->addSubExpression((yyvsp[(2) - (2)].expr));
PARSER->unregisterParseNode((yyvsp[(2) - (2)].expr));
PARSER->registerParseNode((yyval.expr));
- }
+ ;}
break;
-/* Line 1806 of yacc.c */
-#line 2051 "/Source/WebCore/generated/XPathGrammar.tab.c"
+/* Line 1455 of yacc.c */
+#line 2021 "/Source/WebCore/generated/XPathGrammar.tab.c"
default: break;
}
- /* User semantic actions sometimes alter yychar, and that requires
- that yytoken be updated with the new translation. We take the
- approach of translating immediately before every use of yytoken.
- One alternative is translating here after every semantic action,
- but that translation would be missed if the semantic action invokes
- YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
- if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
- incorrect destructor might then be invoked immediately. In the
- case of YYERROR or YYBACKUP, subsequent parser actions might lead
- to an incorrect destructor call or verbose syntax error message
- before the lookahead is translated. */
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
YYPOPSTACK (yylen);
@@ -2088,10 +2047,6 @@ yyreduce:
| yyerrlab -- here on detecting error |
`------------------------------------*/
yyerrlab:
- /* Make sure we have latest lookahead translation. See comments at
- user semantic actions for why this is necessary. */
- yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-
/* If not already recovering from an error, report this error. */
if (!yyerrstatus)
{
@@ -2099,36 +2054,37 @@ yyerrlab:
#if ! YYERROR_VERBOSE
yyerror (YY_("syntax error"));
#else
-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
- yyssp, yytoken)
{
- char const *yymsgp = YY_("syntax error");
- int yysyntax_error_status;
- yysyntax_error_status = YYSYNTAX_ERROR;
- if (yysyntax_error_status == 0)
- yymsgp = yymsg;
- else if (yysyntax_error_status == 1)
- {
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
- yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
- if (!yymsg)
- {
- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
- yysyntax_error_status = 2;
- }
- else
- {
- yysyntax_error_status = YYSYNTAX_ERROR;
- yymsgp = yymsg;
- }
- }
- yyerror (yymsgp);
- if (yysyntax_error_status == 2)
- goto yyexhaustedlab;
+ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+ {
+ YYSIZE_T yyalloc = 2 * yysize;
+ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+ yyalloc = YYSTACK_ALLOC_MAXIMUM;
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+ if (yymsg)
+ yymsg_alloc = yyalloc;
+ else
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ }
+ }
+
+ if (0 < yysize && yysize <= yymsg_alloc)
+ {
+ (void) yysyntax_error (yymsg, yystate, yychar);
+ yyerror (yymsg);
+ }
+ else
+ {
+ yyerror (YY_("syntax error"));
+ if (yysize != 0)
+ goto yyexhaustedlab;
+ }
}
-# undef YYSYNTAX_ERROR
#endif
}
@@ -2187,7 +2143,7 @@ yyerrlab1:
for (;;)
{
yyn = yypact[yystate];
- if (!yypact_value_is_default (yyn))
+ if (yyn != YYPACT_NINF)
{
yyn += YYTERROR;
if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
@@ -2246,13 +2202,8 @@ yyexhaustedlab:
yyreturn:
if (yychar != YYEMPTY)
- {
- /* Make sure we have latest lookahead translation. See comments at
- user semantic actions for why this is necessary. */
- yytoken = YYTRANSLATE (yychar);
- yydestruct ("Cleanup: discarding lookahead",
- yytoken, &yylval);
- }
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
/* Do not reclaim the symbols of the rule which action triggered
this YYABORT or YYACCEPT. */
YYPOPSTACK (yylen);
@@ -2277,7 +2228,7 @@ yyreturn:
-/* Line 2067 of yacc.c */
+/* Line 1675 of yacc.c */
#line 556 "../Source/WebCore/xml/XPathGrammar.y"
diff --git a/src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.h b/src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.h
index 2911272..fa6a7b3 100644
--- a/src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.h
+++ b/src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.h
@@ -1,8 +1,10 @@
-/* A Bison parser, made by GNU Bison 2.5. */
-/* Bison interface for Yacc-like parsers in C
+/* A Bison parser, made by GNU Bison 2.4.1. */
+
+/* Skeleton interface for Bison's Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -64,7 +66,7 @@
typedef union YYSTYPE
{
-/* Line 2068 of yacc.c */
+/* Line 1676 of yacc.c */
#line 60 "../Source/WebCore/xml/XPathGrammar.y"
Step::Axis axis;
@@ -80,8 +82,8 @@ typedef union YYSTYPE
-/* Line 2068 of yacc.c */
-#line 85 "/Source/WebCore/generated/XPathGrammar.tab.h"
+/* Line 1676 of yacc.c */
+#line 87 "/Source/WebCore/generated/XPathGrammar.tab.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
diff --git a/src/3rdparty/webkit/Source/WebCore/html/HTMLLinkElement.cpp b/src/3rdparty/webkit/Source/WebCore/html/HTMLLinkElement.cpp
index 633dd1e..d7ca918 100644
--- a/src/3rdparty/webkit/Source/WebCore/html/HTMLLinkElement.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/html/HTMLLinkElement.cpp
@@ -83,6 +83,9 @@ HTMLLinkElement::~HTMLLinkElement()
if (m_cachedLinkResource)
m_cachedLinkResource->removeClient(this);
#endif
+
+ if (inDocument())
+ document()->removeStyleSheetCandidateNode(this);
}
void HTMLLinkElement::setDisabled(bool disabled)
diff --git a/src/3rdparty/webkit/Source/WebCore/html/HTMLSourceElement.cpp b/src/3rdparty/webkit/Source/WebCore/html/HTMLSourceElement.cpp
index 59b3882..0631a20 100644
--- a/src/3rdparty/webkit/Source/WebCore/html/HTMLSourceElement.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/html/HTMLSourceElement.cpp
@@ -57,13 +57,15 @@ PassRefPtr<HTMLSourceElement> HTMLSourceElement::create(const QualifiedName& tag
void HTMLSourceElement::insertedIntoTree(bool deep)
{
HTMLElement::insertedIntoTree(deep);
- if (parentNode() && (parentNode()->hasTagName(audioTag) || parentNode()->hasTagName(videoTag)))
+ Element* parent = parentElement();
+ if (parent && parent->isMediaElement())
static_cast<HTMLMediaElement*>(parentNode())->sourceWasAdded(this);
}
void HTMLSourceElement::willRemove()
{
- if (parentNode() && (parentNode()->hasTagName(audioTag) || parentNode()->hasTagName(videoTag)))
+ Element* parent = parentElement();
+ if (parent && parent->isMediaElement())
static_cast<HTMLMediaElement*>(parentNode())->sourceWillBeRemoved(this);
HTMLElement::willRemove();
}
diff --git a/src/3rdparty/webkit/Source/WebCore/html/HTMLStyleElement.cpp b/src/3rdparty/webkit/Source/WebCore/html/HTMLStyleElement.cpp
index 0f256e1..0213f40 100644
--- a/src/3rdparty/webkit/Source/WebCore/html/HTMLStyleElement.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/html/HTMLStyleElement.cpp
@@ -44,8 +44,7 @@ inline HTMLStyleElement::HTMLStyleElement(const QualifiedName& tagName, Document
HTMLStyleElement::~HTMLStyleElement()
{
- if (m_sheet)
- m_sheet->clearOwnerNode();
+ StyleElement::clearDocumentData(document(), this);
}
PassRefPtr<HTMLStyleElement> HTMLStyleElement::create(const QualifiedName& tagName, Document* document, bool createdByParser)
diff --git a/src/3rdparty/webkit/Source/WebCore/html/HTMLTrackElement.cpp b/src/3rdparty/webkit/Source/WebCore/html/HTMLTrackElement.cpp
index 63f2788..4de878b 100644
--- a/src/3rdparty/webkit/Source/WebCore/html/HTMLTrackElement.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/html/HTMLTrackElement.cpp
@@ -53,7 +53,8 @@ PassRefPtr<HTMLTrackElement> HTMLTrackElement::create(const QualifiedName& tagNa
void HTMLTrackElement::insertedIntoTree(bool deep)
{
HTMLElement::insertedIntoTree(deep);
- if (parentNode() && (parentNode()->hasTagName(audioTag) || parentNode()->hasTagName(videoTag))) {
+ Element* parent = parentElement();
+ if (parent && parent->isMediaElement()) {
// TODO(annacc):
// static_cast<HTMLMediaElement*>(parentNode())->trackWasAdded(this);
}
@@ -61,7 +62,8 @@ void HTMLTrackElement::insertedIntoTree(bool deep)
void HTMLTrackElement::willRemove()
{
- if (parentNode() && (parentNode()->hasTagName(audioTag) || parentNode()->hasTagName(videoTag))) {
+ Element* parent = parentElement();
+ if (parent && parent->isMediaElement()) {
// TODO(annacc):
// static_cast<HTMLMediaElement*>(parentNode())->trackWillBeRemoved(this);
}
diff --git a/src/3rdparty/webkit/Source/WebCore/html/parser/HTMLTreeBuilder.cpp b/src/3rdparty/webkit/Source/WebCore/html/parser/HTMLTreeBuilder.cpp
index 054f766..4492dd2 100644
--- a/src/3rdparty/webkit/Source/WebCore/html/parser/HTMLTreeBuilder.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/html/parser/HTMLTreeBuilder.cpp
@@ -603,13 +603,13 @@ void HTMLTreeBuilder::processCloseWhenNestedTag(AtomicHTMLToken& token)
m_framesetOk = false;
HTMLElementStack::ElementRecord* nodeRecord = m_tree.openElements()->topRecord();
while (1) {
- ContainerNode* node = nodeRecord->node();
- if (shouldClose(node)) {
+ RefPtr<ContainerNode> node = nodeRecord->node();
+ if (shouldClose(node.get())) {
ASSERT(node->isElementNode());
- processFakeEndTag(toElement(node)->tagQName());
+ processFakeEndTag(toElement(node.get())->tagQName());
break;
}
- if (isSpecialNode(node) && !node->hasTagName(addressTag) && !node->hasTagName(divTag) && !node->hasTagName(pTag))
+ if (isSpecialNode(node.get()) && !node->hasTagName(addressTag) && !node->hasTagName(divTag) && !node->hasTagName(pTag))
break;
nodeRecord = nodeRecord->next();
}
@@ -1554,7 +1554,7 @@ void HTMLTreeBuilder::processAnyOtherEndTagForInBody(AtomicHTMLToken& token)
ASSERT(token.type() == HTMLToken::EndTag);
HTMLElementStack::ElementRecord* record = m_tree.openElements()->topRecord();
while (1) {
- ContainerNode* node = record->node();
+ RefPtr<ContainerNode> node = record->node();
if (node->hasLocalName(token.name())) {
m_tree.generateImpliedEndTags();
// FIXME: The ElementRecord pointed to by record might be deleted by
@@ -1568,13 +1568,13 @@ void HTMLTreeBuilder::processAnyOtherEndTagForInBody(AtomicHTMLToken& token)
// http://www.w3.org/Bugs/Public/show_bug.cgi?id=10080
// We might have already popped the node for the token in
// generateImpliedEndTags, just abort.
- if (!m_tree.openElements()->contains(toElement(node)))
+ if (!m_tree.openElements()->contains(toElement(node.get())))
return;
}
- m_tree.openElements()->popUntilPopped(toElement(node));
+ m_tree.openElements()->popUntilPopped(toElement(node.get()));
return;
}
- if (isSpecialNode(node)) {
+ if (isSpecialNode(node.get())) {
parseError(token);
return;
}
@@ -1631,7 +1631,7 @@ void HTMLTreeBuilder::callTheAdoptionAgency(AtomicHTMLToken& token)
}
// 4.
ASSERT(furthestBlock->isAbove(formattingElementRecord));
- ContainerNode* commonAncestor = formattingElementRecord->next()->node();
+ RefPtr<ContainerNode> commonAncestor = formattingElementRecord->next()->node();
// 5.
HTMLFormattingElementList::Bookmark bookmark = m_tree.activeFormattingElements()->bookmarkFor(formattingElement);
// 6.
diff --git a/src/3rdparty/webkit/Source/WebCore/html/shadow/MediaControlElements.cpp b/src/3rdparty/webkit/Source/WebCore/html/shadow/MediaControlElements.cpp
index ac5d5e2..c3bfb9a 100644
--- a/src/3rdparty/webkit/Source/WebCore/html/shadow/MediaControlElements.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/html/shadow/MediaControlElements.cpp
@@ -57,7 +57,7 @@ HTMLMediaElement* toParentMediaElement(RenderObject* o)
{
Node* node = o->node();
Node* mediaNode = node ? node->shadowAncestorNode() : 0;
- if (!mediaNode || (!mediaNode->hasTagName(HTMLNames::videoTag) && !mediaNode->hasTagName(HTMLNames::audioTag)))
+ if (!mediaNode || !mediaNode->isElementNode() || !static_cast<Element*>(mediaNode)->isMediaElement())
return 0;
return static_cast<HTMLMediaElement*>(mediaNode);
diff --git a/src/3rdparty/webkit/Source/WebCore/inspector/InspectorValues.cpp b/src/3rdparty/webkit/Source/WebCore/inspector/InspectorValues.cpp
index 09d1258..c80de51 100644
--- a/src/3rdparty/webkit/Source/WebCore/inspector/InspectorValues.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/inspector/InspectorValues.cpp
@@ -620,7 +620,18 @@ void InspectorBasicValue::writeJSON(Vector<UChar>* output) const
output->append(falseString, 5);
} else if (type() == TypeNumber) {
NumberToStringBuffer buffer;
- unsigned length = DecimalNumber(m_doubleValue).toStringDecimal(buffer, WTF::NumberToStringBufferLength);
+ DecimalNumber decimal = m_doubleValue;
+ unsigned length = 0;
+ if (decimal.bufferLengthForStringDecimal() > WTF::NumberToStringBufferLength) {
+ // Not enough room for decimal. Use exponential format.
+ if (decimal.bufferLengthForStringExponential() > WTF::NumberToStringBufferLength) {
+ // Fallback for an abnormal case if it's too little even for exponential.
+ output->append("NaN", 3);
+ return;
+ }
+ length = decimal.toStringExponential(buffer, WTF::NumberToStringBufferLength);
+ } else
+ length = decimal.toStringDecimal(buffer, WTF::NumberToStringBufferLength);
output->append(buffer, length);
}
}
diff --git a/src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.cpp b/src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.cpp
index 75daae5..1b046b3 100644
--- a/src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.cpp
@@ -1331,6 +1331,9 @@ static bool isFeedWithNestedProtocolInHTTPFamily(const KURL& url)
void FrameLoader::loadFrameRequest(const FrameLoadRequest& request, bool lockHistory, bool lockBackForwardList,
PassRefPtr<Event> event, PassRefPtr<FormState> formState, ReferrerPolicy referrerPolicy)
{
+ // Protect frame from getting blown away inside dispatchBeforeLoadEvent in loadWithDocumentLoader.
+ RefPtr<Frame> protect(m_frame);
+
KURL url = request.resourceRequest().url();
ASSERT(m_frame->document());
@@ -1388,7 +1391,7 @@ void FrameLoader::loadURL(const KURL& newURL, const String& referrer, const Stri
RefPtr<SecurityOrigin> referrerOrigin = SecurityOrigin::createFromString(referrer);
addHTTPOriginIfNeeded(request, referrerOrigin->toString());
}
- addExtraFieldsToRequest(request, newLoadType, true, event || isFormSubmission);
+ addExtraFieldsToRequest(request, newLoadType, true);
if (newLoadType == FrameLoadTypeReload || newLoadType == FrameLoadTypeReloadFromOrigin)
request.setCachePolicy(ReloadIgnoringCacheData);
@@ -1567,7 +1570,13 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t
loader->setTriggeringAction(NavigationAction(newURL, policyChecker()->loadType(), isFormSubmission));
if (Element* ownerElement = m_frame->ownerElement()) {
- if (!ownerElement->dispatchBeforeLoadEvent(loader->request().url().string())) {
+ // We skip dispatching the beforeload event if we've already
+ // committed a real document load because the event would leak
+ // subsequent activity by the frame which the parent frame isn't
+ // supposed to learn. For example, if the child frame navigated to
+ // a new URL, the parent frame shouldn't learn the URL.
+ if (!m_stateMachine.committedFirstRealDocumentLoad()
+ && !ownerElement->dispatchBeforeLoadEvent(loader->request().url().string())) {
continueLoadAfterNavigationPolicy(loader->request(), formState, false);
return;
}
@@ -2700,20 +2709,20 @@ void FrameLoader::detachViewsAndDocumentLoader()
void FrameLoader::addExtraFieldsToSubresourceRequest(ResourceRequest& request)
{
- addExtraFieldsToRequest(request, m_loadType, false, false);
+ addExtraFieldsToRequest(request, m_loadType, false);
}
void FrameLoader::addExtraFieldsToMainResourceRequest(ResourceRequest& request)
{
- addExtraFieldsToRequest(request, m_loadType, true, false);
+ addExtraFieldsToRequest(request, m_loadType, true);
}
-void FrameLoader::addExtraFieldsToRequest(ResourceRequest& request, FrameLoadType loadType, bool mainResource, bool cookiePolicyURLFromRequest)
+void FrameLoader::addExtraFieldsToRequest(ResourceRequest& request, FrameLoadType loadType, bool mainResource)
{
// Don't set the cookie policy URL if it's already been set.
// But make sure to set it on all requests, as it has significance beyond the cookie policy for all protocols (<rdar://problem/6616664>).
if (request.firstPartyForCookies().isEmpty()) {
- if (mainResource && (isLoadingMainFrame() || cookiePolicyURLFromRequest))
+ if (mainResource && isLoadingMainFrame())
request.setFirstPartyForCookies(request.url());
else if (Document* document = m_frame->document())
request.setFirstPartyForCookies(document->firstPartyForCookies());
@@ -2812,7 +2821,7 @@ void FrameLoader::loadPostRequest(const ResourceRequest& inRequest, const String
workingResourceRequest.setHTTPMethod("POST");
workingResourceRequest.setHTTPBody(formData);
workingResourceRequest.setHTTPContentType(contentType);
- addExtraFieldsToRequest(workingResourceRequest, loadType, true, true);
+ addExtraFieldsToRequest(workingResourceRequest, loadType, true);
NavigationAction action(url, loadType, true, event);
@@ -3286,7 +3295,7 @@ void FrameLoader::loadDifferentDocumentItem(HistoryItem* item, FrameLoadType loa
// Make sure to add extra fields to the request after the Origin header is added for the FormData case.
// See https://bugs.webkit.org/show_bug.cgi?id=22194 for more discussion.
- addExtraFieldsToRequest(request, m_loadType, true, formData);
+ addExtraFieldsToRequest(request, m_loadType, true);
addedExtraFields = true;
// FIXME: Slight hack to test if the NSURL cache contains the page we're going to.
@@ -3329,7 +3338,7 @@ void FrameLoader::loadDifferentDocumentItem(HistoryItem* item, FrameLoadType loa
}
if (!addedExtraFields)
- addExtraFieldsToRequest(request, m_loadType, true, formData);
+ addExtraFieldsToRequest(request, m_loadType, true);
loadWithNavigationAction(request, action, false, loadType, 0);
}
diff --git a/src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.h b/src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.h
index f2b16d9..728459c 100644
--- a/src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.h
+++ b/src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.h
@@ -356,7 +356,7 @@ private:
void updateFirstPartyForCookies();
void setFirstPartyForCookies(const KURL&);
- void addExtraFieldsToRequest(ResourceRequest&, FrameLoadType loadType, bool isMainResource, bool cookiePolicyURLFromRequest);
+ void addExtraFieldsToRequest(ResourceRequest&, FrameLoadType, bool isMainResource);
// Also not cool.
void stopLoadingSubframes(ClearProvisionalItemPolicy);
diff --git a/src/3rdparty/webkit/Source/WebCore/loader/cache/CachedResource.cpp b/src/3rdparty/webkit/Source/WebCore/loader/cache/CachedResource.cpp
index 0f205da..8e5038a 100644
--- a/src/3rdparty/webkit/Source/WebCore/loader/cache/CachedResource.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/loader/cache/CachedResource.cpp
@@ -250,6 +250,8 @@ void CachedResource::setRequest(CachedResourceRequest* request)
m_status = Pending;
m_request = request;
+ CachedResourceHandle<CachedResource> protect(this);
+
// All loads finish with data(allDataReceived = true) or error(), except for
// canceled loads, which silently set our request to 0. Be sure to notify our
// client in that case, so we don't seem to continue loading forever.
@@ -258,9 +260,6 @@ void CachedResource::setRequest(CachedResourceRequest* request)
setStatus(Canceled);
checkNotify();
}
-
- if (canDelete() && !inCache())
- delete this;
}
void CachedResource::addClient(CachedResourceClient* client)
diff --git a/src/3rdparty/webkit/Source/WebCore/make-hash-tools.pl b/src/3rdparty/webkit/Source/WebCore/make-hash-tools.pl
index 37639eb..2812ce7 100644
--- a/src/3rdparty/webkit/Source/WebCore/make-hash-tools.pl
+++ b/src/3rdparty/webkit/Source/WebCore/make-hash-tools.pl
@@ -20,7 +20,6 @@
# Boston, MA 02110-1301, USA.
use strict;
-use Switch;
use File::Basename;
my $outdir = $ARGV[0];
@@ -28,9 +27,7 @@ shift;
my $option = basename($ARGV[0],".gperf");
-switch ($option) {
-
-case "DocTypeStrings" {
+if ($option eq "DocTypeStrings") {
my $docTypeStringsGenerated = "$outdir/DocTypeStrings.cpp";
my $docTypeStringsGperf = $ARGV[0];
@@ -38,9 +35,7 @@ case "DocTypeStrings" {
system("gperf --key-positions=\"*\" -s 2 $docTypeStringsGperf > $docTypeStringsGenerated") == 0 || die "calling gperf failed: $?";
-} # case "DocTypeStrings"
-
-case "ColorData" {
+} elsif ($option eq "ColorData") {
my $colorDataGenerated = "$outdir/ColorData.cpp";
my $colorDataGperf = $ARGV[0];
@@ -48,6 +43,6 @@ case "ColorData" {
system("gperf --key-positions=\"*\" -D -s 2 $colorDataGperf > $colorDataGenerated") == 0 || die "calling gperf failed: $?";
-} # case "ColorData"
-
-} # switch ($option)
+} else {
+ die "Unknown option.";
+}
diff --git a/src/3rdparty/webkit/Source/WebCore/page/DOMWindow.cpp b/src/3rdparty/webkit/Source/WebCore/page/DOMWindow.cpp
index d1d60ad..a86c1af 100644
--- a/src/3rdparty/webkit/Source/WebCore/page/DOMWindow.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/page/DOMWindow.cpp
@@ -1667,7 +1667,7 @@ void DOMWindow::setLocation(const String& urlString, DOMWindow* activeWindow, DO
if (completedURL.isNull())
return;
- if (isInsecureScriptAccess(activeWindow, urlString))
+ if (isInsecureScriptAccess(activeWindow, completedURL))
return;
// We want a new history item if we are processing a user gesture.
@@ -1746,7 +1746,7 @@ Frame* DOMWindow::createWindow(const String& urlString, const AtomicString& fram
newFrame->loader()->setOpener(openerFrame);
newFrame->page()->setOpenedByDOM();
- if (newFrame->domWindow()->isInsecureScriptAccess(activeWindow, urlString))
+ if (newFrame->domWindow()->isInsecureScriptAccess(activeWindow, completedURL))
return newFrame;
if (function)
@@ -1796,7 +1796,9 @@ PassRefPtr<DOMWindow> DOMWindow::open(const String& urlString, const AtomicStrin
if (!activeFrame->loader()->shouldAllowNavigation(targetFrame))
return 0;
- if (isInsecureScriptAccess(activeWindow, urlString))
+ KURL completedURL = firstFrame->document()->completeURL(urlString);
+
+ if (targetFrame->domWindow()->isInsecureScriptAccess(activeWindow, completedURL))
return targetFrame->domWindow();
if (urlString.isEmpty())
@@ -1805,7 +1807,7 @@ PassRefPtr<DOMWindow> DOMWindow::open(const String& urlString, const AtomicStrin
// For whatever reason, Firefox uses the first window rather than the active window to
// determine the outgoing referrer. We replicate that behavior here.
targetFrame->navigationScheduler()->scheduleLocationChange(activeFrame->document()->securityOrigin(),
- firstFrame->document()->completeURL(urlString).string(),
+ completedURL,
firstFrame->loader()->outgoingReferrer(),
!activeFrame->script()->anyPageIsProcessingUserGesture(), false);
diff --git a/src/3rdparty/webkit/Source/WebCore/page/FocusController.cpp b/src/3rdparty/webkit/Source/WebCore/page/FocusController.cpp
index 5b91eeb..e7a44ca 100644
--- a/src/3rdparty/webkit/Source/WebCore/page/FocusController.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/page/FocusController.cpp
@@ -214,7 +214,7 @@ bool FocusController::advanceFocusInDocumentOrder(FocusDirection direction, Keyb
document->updateLayoutIgnorePendingStylesheets();
- Node* node = (direction == FocusDirectionForward)
+ RefPtr<Node> node = (direction == FocusDirectionForward)
? document->nextFocusableNode(currentNode, event)
: document->previousFocusableNode(currentNode, event);
@@ -237,7 +237,7 @@ bool FocusController::advanceFocusInDocumentOrder(FocusDirection direction, Keyb
frame = parentFrame;
}
- node = deepFocusableNode(direction, node, event);
+ node = deepFocusableNode(direction, node.get(), event);
if (!node) {
// We didn't find a node to focus, so we should try to pass focus to Chrome.
@@ -254,7 +254,7 @@ bool FocusController::advanceFocusInDocumentOrder(FocusDirection direction, Keyb
? d->nextFocusableNode(0, event)
: d->previousFocusableNode(0, event);
- node = deepFocusableNode(direction, node, event);
+ node = deepFocusableNode(direction, node.get(), event);
if (!node)
return false;
@@ -273,7 +273,7 @@ bool FocusController::advanceFocusInDocumentOrder(FocusDirection direction, Keyb
if (node->isFrameOwnerElement()) {
// We focus frames rather than frame owners.
// FIXME: We should not focus frames that have no scrollbars, as focusing them isn't useful to the user.
- HTMLFrameOwnerElement* owner = static_cast<HTMLFrameOwnerElement*>(node);
+ HTMLFrameOwnerElement* owner = static_cast<HTMLFrameOwnerElement*>(node.get());
if (!owner->contentFrame())
return false;
@@ -296,13 +296,13 @@ bool FocusController::advanceFocusInDocumentOrder(FocusDirection direction, Keyb
setFocusedFrame(newDocument->frame());
if (caretBrowsing) {
- Position position = firstPositionInOrBeforeNode(node);
+ Position position = firstPositionInOrBeforeNode(node.get());
VisibleSelection newSelection(position, position, DOWNSTREAM);
if (frame->selection()->shouldChangeSelection(newSelection))
frame->selection()->setSelection(newSelection);
}
- static_cast<Element*>(node)->focus(false);
+ static_cast<Element*>(node.get())->focus(false);
return true;
}
diff --git a/src/3rdparty/webkit/Source/WebCore/page/FrameView.cpp b/src/3rdparty/webkit/Source/WebCore/page/FrameView.cpp
index b7ff00a..3dadbf3 100644
--- a/src/3rdparty/webkit/Source/WebCore/page/FrameView.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/page/FrameView.cpp
@@ -1938,7 +1938,7 @@ void FrameView::updateWidget(RenderEmbeddedObject* object)
static_cast<HTMLPlugInImageElement*>(ownerElement)->updateWidget(CreateAnyWidgetType);
// FIXME: It is not clear that Media elements need or want this updateWidget() call.
#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
- else if (ownerElement->hasTagName(videoTag) || ownerElement->hasTagName(audioTag))
+ else if (ownerElement->isMediaElement())
static_cast<HTMLMediaElement*>(ownerElement)->updateWidget(CreateAnyWidgetType);
#endif
else
diff --git a/src/3rdparty/webkit/Source/WebCore/page/Geolocation.cpp b/src/3rdparty/webkit/Source/WebCore/page/Geolocation.cpp
index fc5b1c6..b93379a 100644
--- a/src/3rdparty/webkit/Source/WebCore/page/Geolocation.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/page/Geolocation.cpp
@@ -441,6 +441,9 @@ void Geolocation::resume()
void Geolocation::setIsAllowed(bool allowed)
{
+ // Protect the Geolocation object from garbage collection during a callback.
+ RefPtr<Geolocation> protect(this);
+
// This may be due to either a new position from the service, or a cached
// position.
m_allowGeolocation = allowed ? Yes : No;
diff --git a/src/3rdparty/webkit/Source/WebCore/page/Geolocation.h b/src/3rdparty/webkit/Source/WebCore/page/Geolocation.h
index b52ad45..ec48f6e 100644
--- a/src/3rdparty/webkit/Source/WebCore/page/Geolocation.h
+++ b/src/3rdparty/webkit/Source/WebCore/page/Geolocation.h
@@ -100,7 +100,7 @@ private:
void startTimerIfNeeded();
void timerFired(Timer<GeoNotifier>*);
- Geolocation* m_geolocation;
+ RefPtr<Geolocation> m_geolocation;
RefPtr<PositionCallback> m_successCallback;
RefPtr<PositionErrorCallback> m_errorCallback;
RefPtr<PositionOptions> m_options;
diff --git a/src/3rdparty/webkit/Source/WebCore/page/PrintContext.cpp b/src/3rdparty/webkit/Source/WebCore/page/PrintContext.cpp
index 6c8b312..660ad11 100644
--- a/src/3rdparty/webkit/Source/WebCore/page/PrintContext.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/page/PrintContext.cpp
@@ -55,6 +55,13 @@ PrintContext::~PrintContext()
end();
}
+#if COMPILER(WINSCW)
+const IntRect& PrintContext::pageRect(size_t pageNumber) const
+{
+ return m_pageRects[pageNumber];
+}
+#endif
+
void PrintContext::computePageRects(const FloatRect& printRect, float headerHeight, float footerHeight, float userScaleFactor, float& outPageHeight, bool allowHorizontalTiling)
{
m_pageRects.clear();
diff --git a/src/3rdparty/webkit/Source/WebCore/page/PrintContext.h b/src/3rdparty/webkit/Source/WebCore/page/PrintContext.h
index 873937a..aadff47 100644
--- a/src/3rdparty/webkit/Source/WebCore/page/PrintContext.h
+++ b/src/3rdparty/webkit/Source/WebCore/page/PrintContext.h
@@ -51,7 +51,11 @@ public:
// These are only valid after page rects are computed.
size_t pageCount() const { return m_pageRects.size(); }
+#if COMPILER(WINSCW)
+ const IntRect& pageRect(size_t pageNumber) const;
+#else
const IntRect& pageRect(size_t pageNumber) const { return m_pageRects[pageNumber]; }
+#endif
const Vector<IntRect>& pageRects() const { return m_pageRects; }
float computeAutomaticScaleFactor(const FloatSize& availablePaperSize);
diff --git a/src/3rdparty/webkit/Source/WebCore/page/Settings.cpp b/src/3rdparty/webkit/Source/WebCore/page/Settings.cpp
index 2b9e8b7..2025bd0 100644
--- a/src/3rdparty/webkit/Source/WebCore/page/Settings.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/page/Settings.cpp
@@ -89,6 +89,7 @@ Settings::Settings(Page* page)
: m_page(page)
, m_editableLinkBehavior(EditableLinkDefaultBehavior)
, m_textDirectionSubmenuInclusionBehavior(TextDirectionSubmenuAutomaticallyIncluded)
+ , m_passwordEchoDurationInSeconds(1)
, m_minimumFontSize(0)
, m_minimumLogicalFontSize(0)
, m_defaultFontSize(0)
@@ -182,6 +183,7 @@ Settings::Settings(Page* page)
, m_shouldInjectUserScriptsInInitialEmptyDocument(false)
, m_allowDisplayOfInsecureContent(true)
, m_allowRunningOfInsecureContent(true)
+ , m_passwordEchoEnabled(false)
{
// A Frame may not have been created yet, so we initialize the AtomicString
// hash before trying to use it.
diff --git a/src/3rdparty/webkit/Source/WebCore/page/Settings.h b/src/3rdparty/webkit/Source/WebCore/page/Settings.h
index ffe1037..1d2a138 100644
--- a/src/3rdparty/webkit/Source/WebCore/page/Settings.h
+++ b/src/3rdparty/webkit/Source/WebCore/page/Settings.h
@@ -407,6 +407,12 @@ namespace WebCore {
void setAllowRunningOfInsecureContent(bool flag) { m_allowRunningOfInsecureContent = flag; }
bool allowRunningOfInsecureContent() const { return m_allowRunningOfInsecureContent; }
+ void setPasswordEchoEnabled(bool flag) { m_passwordEchoEnabled = flag; }
+ bool passwordEchoEnabled() const { return m_passwordEchoEnabled; }
+
+ void setPasswordEchoDurationInSeconds(double durationInSeconds) { m_passwordEchoDurationInSeconds = durationInSeconds; }
+ double passwordEchoDurationInSeconds() const { return m_passwordEchoDurationInSeconds; }
+
private:
Page* m_page;
@@ -422,6 +428,7 @@ namespace WebCore {
AtomicString m_fantasyFontFamily;
EditableLinkBehavior m_editableLinkBehavior;
TextDirectionSubmenuInclusionBehavior m_textDirectionSubmenuInclusionBehavior;
+ double m_passwordEchoDurationInSeconds;
int m_minimumFontSize;
int m_minimumLogicalFontSize;
int m_defaultFontSize;
@@ -513,6 +520,7 @@ namespace WebCore {
bool m_shouldInjectUserScriptsInInitialEmptyDocument : 1;
bool m_allowDisplayOfInsecureContent : 1;
bool m_allowRunningOfInsecureContent : 1;
+ bool m_passwordEchoEnabled : 1;
#if USE(AVFOUNDATION)
static bool gAVFoundationEnabled;
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowPrivate.h b/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowPrivate.h
index 7b441f4..eeb08c2 100644
--- a/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowPrivate.h
+++ b/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowPrivate.h
@@ -23,7 +23,9 @@
#include <QTimer>
#include <QWidget>
+QT_BEGIN_NAMESPACE
class QKeyEvent;
+QT_END_NAMESPACE
namespace WebCore {
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowQt.cpp b/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowQt.cpp
index a442a2b..7270785 100644
--- a/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowQt.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowQt.cpp
@@ -61,9 +61,9 @@ void FullScreenVideoWindow::keyPressEvent(QKeyEvent* ev)
{
if (m_mediaElement && ev->key() == Qt::Key_Space) {
if (!m_mediaElement->paused())
- m_mediaElement->pause();
+ m_mediaElement->pause(true);
else
- m_mediaElement->play();
+ m_mediaElement->play(true);
} else if (ev->key() == Qt::Key_Escape)
emit closed();
QWidget::keyPressEvent(ev);
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/graphics/mac/FontCacheMac.mm b/src/3rdparty/webkit/Source/WebCore/platform/graphics/mac/FontCacheMac.mm
index c71c411..9f5c44e 100644
--- a/src/3rdparty/webkit/Source/WebCore/platform/graphics/mac/FontCacheMac.mm
+++ b/src/3rdparty/webkit/Source/WebCore/platform/graphics/mac/FontCacheMac.mm
@@ -36,22 +36,33 @@
#import "WebCoreSystemInterface.h"
#import "WebFontCache.h"
#import <AppKit/AppKit.h>
+#import <wtf/MainThread.h>
#import <wtf/StdLibExtras.h>
namespace WebCore {
+// The "void*" parameter makes the function match the prototype for callbacks from callOnMainThread.
+static void invalidateFontCache(void*)
+{
+ if (!isMainThread()) {
+ callOnMainThread(&invalidateFontCache, 0);
+ return;
+ }
+ fontCache()->invalidate();
+}
+
#if !defined(BUILDING_ON_LEOPARD)
static void fontCacheRegisteredFontsChangedNotificationCallback(CFNotificationCenterRef, void* observer, CFStringRef name, const void *, CFDictionaryRef)
{
ASSERT_UNUSED(observer, observer == fontCache());
ASSERT_UNUSED(name, CFEqual(name, kCTFontManagerRegisteredFontsChangedNotification));
- fontCache()->invalidate();
+ invalidateFontCache(0);
}
#else
static void fontCacheATSNotificationCallback(ATSFontNotificationInfoRef, void*)
{
- fontCache()->invalidate();
+ invalidateFontCache(0);
}
#endif
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.h b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.h
index 7ebfaab..9e05840 100644
--- a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.h
+++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.h
@@ -70,6 +70,7 @@ typedef struct _NSRect NSRect;
@class AVAsset;
@class NSArray;
@class NSButtonCell;
+@class NSControl;
@class NSData;
@class NSDate;
@class NSEvent;
@@ -85,12 +86,14 @@ typedef struct _NSRect NSRect;
@class NSURLRequest;
@class NSURLResponse;
@class NSView;
+@class NSWindow;
@class QTMovie;
@class QTMovieView;
#else
class AVAsset;
class NSArray;
class NSButtonCell;
+class NSControl;
class NSData;
class NSDate;
class NSEvent;
@@ -107,6 +110,7 @@ class NSTextFieldCell;
class NSURLConnection;
class NSURLResponse;
class NSView;
+class NSWindow;
class QTMovie;
class QTMovieView;
#endif
@@ -151,6 +155,22 @@ extern BOOL (*wkGetNSURLResponseMustRevalidate)(NSURLResponse *response);
extern void (*wkGetWheelEventDeltas)(NSEvent*, float* deltaX, float* deltaY, BOOL* continuous);
extern BOOL (*wkHitTestMediaUIPart)(int part, int themeStyle, CGRect bounds, CGPoint point);
extern void (*wkMeasureMediaUIPart)(int part, int themeStyle, CGRect *bounds, CGSize *naturalSize);
+extern NSView *(*wkCreateMediaUIBackgroundView)(void);
+
+typedef enum {
+ wkMediaUIControlTimeline,
+ wkMediaUIControlSlider,
+ wkMediaUIControlPlayPauseButton,
+ wkMediaUIControlExitFullscreenButton,
+ wkMediaUIControlRewindButton,
+ wkMediaUIControlFastForwardButton,
+ wkMediaUIControlVolumeUpButton,
+ wkMediaUIControlVolumeDownButton
+};
+extern NSControl *(*wkCreateMediaUIControl)(int);
+
+extern void (*wkWindowSetAlpha)(NSWindow *, float);
+extern void (*wkWindowSetScaledFrame)(NSWindow *, NSRect, NSRect);
extern BOOL (*wkMediaControllerThemeAvailable)(int themeStyle);
extern void (*wkPopupMenu)(NSMenu*, NSPoint location, float width, NSView*, int selectedItem, NSFont*);
extern unsigned (*wkQTIncludeOnlyModernMediaFileTypes)(void);
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.mm b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.mm
index 9cc6677..94191b7 100644
--- a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.mm
+++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.mm
@@ -46,6 +46,10 @@ void (*wkDrawMediaSliderTrack)(int themeStyle, CGContextRef context, CGRect rect
BOOL (*wkHitTestMediaUIPart)(int part, int themeStyle, CGRect bounds, CGPoint point);
void (*wkDrawMediaUIPart)(int part, int themeStyle, CGContextRef context, CGRect rect, unsigned state);
void (*wkMeasureMediaUIPart)(int part, int themeStyle, CGRect *bounds, CGSize *naturalSize);
+NSView *(*wkCreateMediaUIBackgroundView)(void);
+NSControl *(*wkCreateMediaUIControl)(int);
+void (*wkWindowSetAlpha)(NSWindow *, float);
+void (*wkWindowSetScaledFrame)(NSWindow *, NSRect, NSRect);
BOOL (*wkMediaControllerThemeAvailable)(int themeStyle);
NSString* (*wkGetPreferredExtensionForMIMEType)(NSString*);
CFStringRef (*wkSignedPublicKeyAndChallengeString)(unsigned keySize, CFStringRef challenge, CFStringRef keyDescription);
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenController.h b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenController.h
new file mode 100644
index 0000000..88df1d6
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenController.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2009 Apple 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.
+ */
+
+#if ENABLE(VIDEO)
+
+#import <Cocoa/Cocoa.h>
+#import <wtf/RefPtr.h>
+
+namespace WebCore {
+ class HTMLMediaElement;
+}
+
+@protocol WebVideoFullscreenControllerDelegate;
+@class WebVideoFullscreenHUDWindowController;
+@class WebWindowFadeAnimation;
+@class QTMovieLayer;
+
+@interface WebVideoFullscreenController : NSWindowController {
+@private
+ RefPtr<WebCore::HTMLMediaElement> _mediaElement; // (retain)
+ id <WebVideoFullscreenControllerDelegate> _delegate; // (assign)
+
+ NSWindow *_backgroundFullscreenWindow; // (retain)
+ WebVideoFullscreenHUDWindowController *_hudController; // (retain)
+
+ WebWindowFadeAnimation *_fadeAnimation; // (retain)
+
+ BOOL _isEndingFullscreen;
+ BOOL _isWindowLoaded;
+ BOOL _forceDisableAnimation;
+ uint32_t _idleDisplaySleepAssertion;
+ uint32_t _idleSystemSleepAssertion;
+ NSTimer *_tickleTimer;
+ uint32_t _savedUIMode;
+ uint32_t _savedUIOptions;
+}
+
+- (id <WebVideoFullscreenControllerDelegate>)delegate;
+- (void)setDelegate:(id <WebVideoFullscreenControllerDelegate>)delegate;
+
+- (void)setupVideoOverlay:(QTMovieLayer*)layer;
+- (void)setMediaElement:(WebCore::HTMLMediaElement*)mediaElement;
+- (WebCore::HTMLMediaElement*)mediaElement;
+
+- (void)enterFullscreen:(NSScreen *)screen;
+- (void)exitFullscreen;
+
+@end
+
+#endif // ENABLE(VIDEO)
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenController.mm b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenController.mm
new file mode 100644
index 0000000..a943fce
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenController.mm
@@ -0,0 +1,617 @@
+/*
+ * Copyright (C) 2009 Apple 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.
+ */
+
+#import "config.h"
+
+#if ENABLE(VIDEO)
+
+#import "WebVideoFullscreenController.h"
+
+#import "WebVideoFullscreenHUDWindowController.h"
+#import "WebWindowAnimation.h"
+#import <Carbon/Carbon.h>
+#import <IOKit/pwr_mgt/IOPMLib.h>
+#import <QTKit/QTKit.h>
+#import <WebCore/HTMLMediaElement.h>
+#import <WebCore/SoftLinking.h>
+#import <objc/objc-runtime.h>
+#import <wtf/UnusedParam.h>
+
+#if USE(GSTREAMER)
+#import <WebCore/GStreamerGWorld.h>
+#endif
+
+SOFT_LINK_FRAMEWORK(QTKit)
+SOFT_LINK_CLASS(QTKit, QTMovieLayer)
+
+SOFT_LINK_POINTER(QTKit, QTMovieRateDidChangeNotification, NSString *)
+
+#define QTMovieRateDidChangeNotification getQTMovieRateDidChangeNotification()
+static const NSTimeInterval tickleTimerInterval = 1.0;
+
+@interface WebVideoFullscreenWindow : NSWindow
+#ifndef BUILDING_ON_LEOPARD
+<NSAnimationDelegate>
+#endif
+{
+ SEL _controllerActionOnAnimationEnd;
+ WebWindowScaleAnimation *_fullscreenAnimation; // (retain)
+}
+- (void)animateFromRect:(NSRect)startRect toRect:(NSRect)endRect withSubAnimation:(NSAnimation *)subAnimation controllerAction:(SEL)controllerAction;
+@end
+
+@interface WebVideoFullscreenController(HUDWindowControllerDelegate) <WebVideoFullscreenHUDWindowControllerDelegate>
+- (void)requestExitFullscreenWithAnimation:(BOOL)animation;
+- (void)updateMenuAndDockForFullscreen;
+- (void)updatePowerAssertions;
+@end
+
+@interface NSWindow(IsOnActiveSpaceAdditionForTigerAndLeopard)
+- (BOOL)isOnActiveSpace;
+@end
+
+@implementation WebVideoFullscreenController
+- (id)init
+{
+ // Do not defer window creation, to make sure -windowNumber is created (needed by WebWindowScaleAnimation).
+ NSWindow *window = [[WebVideoFullscreenWindow alloc] initWithContentRect:NSZeroRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
+ self = [super initWithWindow:window];
+ [window release];
+ if (!self)
+ return nil;
+ [self windowDidLoad];
+ return self;
+
+}
+- (void)dealloc
+{
+ ASSERT(!_backgroundFullscreenWindow);
+ ASSERT(!_fadeAnimation);
+ [_tickleTimer invalidate];
+ [_tickleTimer release];
+ _tickleTimer = nil;
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
+ [super dealloc];
+}
+
+- (WebVideoFullscreenWindow *)fullscreenWindow
+{
+ return (WebVideoFullscreenWindow *)[super window];
+}
+
+- (void)setupVideoOverlay:(QTMovieLayer*)layer
+{
+ WebVideoFullscreenWindow *window = [self fullscreenWindow];
+#if USE(GSTREAMER)
+ if (_mediaElement && _mediaElement->platformMedia().type == WebCore::PlatformMedia::GStreamerGWorldType) {
+ WebCore::GStreamerGWorld* gstGworld = _mediaElement->platformMedia().media.gstreamerGWorld;
+ if (gstGworld->enterFullscreen())
+ [window setContentView:gstGworld->platformVideoWindow()->window()];
+ }
+#else
+ [[window contentView] setLayer:layer];
+ [[window contentView] setWantsLayer:YES];
+ if (_mediaElement && _mediaElement->platformMedia().type == WebCore::PlatformMedia::QTMovieType)
+ [layer setMovie:_mediaElement->platformMedia().media.qtMovie];
+#endif
+}
+
+- (void)windowDidLoad
+{
+ WebVideoFullscreenWindow *window = [self fullscreenWindow];
+ [window setHasShadow:YES]; // This is nicer with a shadow.
+ [window setLevel:NSPopUpMenuWindowLevel-1];
+
+ QTMovieLayer *layer = [[getQTMovieLayerClass() alloc] init];
+ [self setupVideoOverlay:layer];
+ [layer release];
+
+#if !USE(GSTREAMER)
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidResignActive:) name:NSApplicationDidResignActiveNotification object:NSApp];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidChangeScreenParameters:) name:NSApplicationDidChangeScreenParametersNotification object:NSApp];
+#endif
+}
+
+- (WebCore::HTMLMediaElement*)mediaElement
+{
+ return _mediaElement.get();
+}
+
+- (void)setMediaElement:(WebCore::HTMLMediaElement*)mediaElement
+{
+ _mediaElement = mediaElement;
+ if ([self isWindowLoaded]) {
+ QTMovieLayer *movieLayer = (QTMovieLayer *)[[[self fullscreenWindow] contentView] layer];
+
+ ASSERT(movieLayer && [movieLayer isKindOfClass:[getQTMovieLayerClass() class]]);
+ [self setupVideoOverlay:movieLayer];
+#if !USE(GSTREAMER)
+ ASSERT([movieLayer movie]);
+ [[NSNotificationCenter defaultCenter] addObserver:self
+ selector:@selector(rateChanged:)
+ name:QTMovieRateDidChangeNotification
+ object:[movieLayer movie]];
+#endif
+ }
+}
+
+- (id <WebVideoFullscreenControllerDelegate>)delegate
+{
+ return _delegate;
+}
+
+- (void)setDelegate:(id <WebVideoFullscreenControllerDelegate>)delegate
+{
+ _delegate = delegate;
+}
+
+- (CGFloat)clearFadeAnimation
+{
+ [_fadeAnimation stopAnimation];
+ CGFloat previousAlpha = [_fadeAnimation currentAlpha];
+ [_fadeAnimation setWindow:nil];
+ [_fadeAnimation release];
+ _fadeAnimation = nil;
+ return previousAlpha;
+}
+
+- (void)windowDidExitFullscreen
+{
+#if USE(GSTREAMER)
+ if (_mediaElement && _mediaElement->platformMedia().type == WebCore::PlatformMedia::GStreamerGWorldType)
+ _mediaElement->platformMedia().media.gstreamerGWorld->exitFullscreen();
+#endif
+ [self clearFadeAnimation];
+ [[self window] close];
+ [self setWindow:nil];
+ [self updateMenuAndDockForFullscreen];
+ [self updatePowerAssertions];
+ [_hudController setDelegate:nil];
+ [_hudController release];
+ _hudController = nil;
+ [_backgroundFullscreenWindow close];
+ [_backgroundFullscreenWindow release];
+ _backgroundFullscreenWindow = nil;
+
+ [self autorelease]; // Associated -retain is in -exitFullscreen.
+ _isEndingFullscreen = NO;
+}
+
+- (void)windowDidEnterFullscreen
+{
+ [self clearFadeAnimation];
+
+ ASSERT(!_hudController);
+ _hudController = [[WebVideoFullscreenHUDWindowController alloc] init];
+ [_hudController setDelegate:self];
+
+ [self updateMenuAndDockForFullscreen];
+ [self updatePowerAssertions];
+ [NSCursor setHiddenUntilMouseMoves:YES];
+
+ // Give the HUD keyboard focus initially
+ [_hudController fadeWindowIn];
+}
+
+- (NSRect)mediaElementRect
+{
+ return _mediaElement->screenRect();
+}
+
+- (void)applicationDidResignActive:(NSNotification*)notification
+{
+ UNUSED_PARAM(notification);
+ // Check to see if the fullscreenWindow is on the active space; this function is available
+ // on 10.6 and later, so default to YES if the function is not available:
+ NSWindow* fullscreenWindow = [self fullscreenWindow];
+ BOOL isOnActiveSpace = ([fullscreenWindow respondsToSelector:@selector(isOnActiveSpace)] ? [fullscreenWindow isOnActiveSpace] : YES);
+
+ // Replicate the QuickTime Player (X) behavior when losing active application status:
+ // Is the fullscreen screen the main screen? (Note: this covers the case where only a
+ // single screen is available.) Is the fullscreen screen on the current space? IFF so,
+ // then exit fullscreen mode.
+ if ([fullscreenWindow screen] == [[NSScreen screens] objectAtIndex:0] && isOnActiveSpace)
+ [self requestExitFullscreenWithAnimation:NO];
+}
+
+
+// MARK: -
+// MARK: Exposed Interface
+
+static void constrainFrameToRatioOfFrame(NSRect *frameToConstrain, const NSRect *frame)
+{
+ // Keep a constrained aspect ratio for the destination window
+ CGFloat originalRatio = frame->size.width / frame->size.height;
+ CGFloat newRatio = frameToConstrain->size.width / frameToConstrain->size.height;
+ if (newRatio > originalRatio) {
+ CGFloat newWidth = originalRatio * frameToConstrain->size.height;
+ CGFloat diff = frameToConstrain->size.width - newWidth;
+ frameToConstrain->size.width = newWidth;
+ frameToConstrain->origin.x += diff / 2;
+ } else {
+ CGFloat newHeight = frameToConstrain->size.width / originalRatio;
+ CGFloat diff = frameToConstrain->size.height - newHeight;
+ frameToConstrain->size.height = newHeight;
+ frameToConstrain->origin.y += diff / 2;
+ }
+}
+
+static NSWindow *createBackgroundFullscreenWindow(NSRect frame, int level)
+{
+ NSWindow *window = [[NSWindow alloc] initWithContentRect:frame styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
+ [window setOpaque:YES];
+ [window setBackgroundColor:[NSColor blackColor]];
+ [window setLevel:level];
+ [window setReleasedWhenClosed:NO];
+ return window;
+}
+
+- (void)setupFadeAnimationIfNeededAndFadeIn:(BOOL)fadeIn
+{
+ CGFloat initialAlpha = fadeIn ? 0 : 1;
+ if (_fadeAnimation) {
+ // Make sure we support queuing animation if the previous one isn't over yet
+ initialAlpha = [self clearFadeAnimation];
+ }
+ if (!_forceDisableAnimation)
+ _fadeAnimation = [[WebWindowFadeAnimation alloc] initWithDuration:0.2 window:_backgroundFullscreenWindow initialAlpha:initialAlpha finalAlpha:fadeIn ? 1 : 0];
+}
+
+- (void)enterFullscreen:(NSScreen *)screen
+{
+ if (!screen)
+ screen = [NSScreen mainScreen];
+
+ NSRect frame = [self mediaElementRect];
+ NSRect endFrame = [screen frame];
+ constrainFrameToRatioOfFrame(&endFrame, &frame);
+
+ // Create a black window if needed
+ if (!_backgroundFullscreenWindow)
+ _backgroundFullscreenWindow = createBackgroundFullscreenWindow([screen frame], [[self window] level]-1);
+ else
+ [_backgroundFullscreenWindow setFrame:[screen frame] display:NO];
+
+ [self setupFadeAnimationIfNeededAndFadeIn:YES];
+ if (_forceDisableAnimation) {
+ // This will disable scale animation
+ frame = NSZeroRect;
+ }
+ [[self fullscreenWindow] animateFromRect:frame toRect:endFrame withSubAnimation:_fadeAnimation controllerAction:@selector(windowDidEnterFullscreen)];
+
+ [_backgroundFullscreenWindow orderWindow:NSWindowBelow relativeTo:[[self fullscreenWindow] windowNumber]];
+}
+
+- (void)exitFullscreen
+{
+ if (_isEndingFullscreen)
+ return;
+ _isEndingFullscreen = YES;
+ [_hudController closeWindow];
+
+ NSRect endFrame = [self mediaElementRect];
+
+ [self setupFadeAnimationIfNeededAndFadeIn:NO];
+ if (_forceDisableAnimation) {
+ // This will disable scale animation
+ endFrame = NSZeroRect;
+ }
+
+ // We have to retain ourselves because we want to be alive for the end of the animation.
+ // If our owner releases us we could crash if this is not the case.
+ // Balanced in windowDidExitFullscreen
+ [self retain];
+
+ [[self fullscreenWindow] animateFromRect:[[self window] frame] toRect:endFrame withSubAnimation:_fadeAnimation controllerAction:@selector(windowDidExitFullscreen)];
+}
+
+- (void)applicationDidChangeScreenParameters:(NSNotification*)notification
+{
+ UNUSED_PARAM(notification);
+ // The user may have changed the main screen by moving the menu bar, or they may have changed
+ // the Dock's size or location, or they may have changed the fullscreen screen's dimensions.
+ // Update our presentation parameters, and ensure that the full screen window occupies the
+ // entire screen:
+ [self updateMenuAndDockForFullscreen];
+ [[self window] setFrame:[[[self window] screen] frame] display:YES];
+}
+
+- (void)updateMenuAndDockForFullscreen
+{
+ // NSApplicationPresentationOptions is available on > 10.6 only:
+#ifndef BUILDING_ON_LEOPARD
+ NSApplicationPresentationOptions options = NSApplicationPresentationDefault;
+ NSScreen* fullscreenScreen = [[self window] screen];
+
+ if (!_isEndingFullscreen) {
+ // Auto-hide the menu bar if the fullscreenScreen contains the menu bar:
+ // NOTE: if the fullscreenScreen contains the menu bar but not the dock, we must still
+ // auto-hide the dock, or an exception will be thrown.
+ if ([[NSScreen screens] objectAtIndex:0] == fullscreenScreen)
+ options |= (NSApplicationPresentationAutoHideMenuBar | NSApplicationPresentationAutoHideDock);
+ // Check if the current screen contains the dock by comparing the screen's frame to its
+ // visibleFrame; if a dock is present, the visibleFrame will differ. If the current screen
+ // contains the dock, hide it.
+ else if (!NSEqualRects([fullscreenScreen frame], [fullscreenScreen visibleFrame]))
+ options |= NSApplicationPresentationAutoHideDock;
+ }
+
+ if ([NSApp respondsToSelector:@selector(setPresentationOptions:)])
+ [NSApp setPresentationOptions:options];
+ else
+#endif
+ SetSystemUIMode(_isEndingFullscreen ? kUIModeNormal : kUIModeAllHidden, 0);
+}
+
+- (void)_disableIdleDisplaySleep
+{
+ if (_idleDisplaySleepAssertion == kIOPMNullAssertionID)
+#if defined(BUILDING_ON_LEOPARD) // IOPMAssertionCreateWithName is not defined in the 10.5 SDK
+ IOPMAssertionCreate(kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn, &_idleDisplaySleepAssertion);
+#else // IOPMAssertionCreate is depreciated in > 10.5
+ IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn, CFSTR("WebKit playing a video fullscreen."), &_idleDisplaySleepAssertion);
+#endif
+}
+
+- (void)_enableIdleDisplaySleep
+{
+ if (_idleDisplaySleepAssertion != kIOPMNullAssertionID) {
+ IOPMAssertionRelease(_idleDisplaySleepAssertion);
+ _idleDisplaySleepAssertion = kIOPMNullAssertionID;
+ }
+}
+
+- (void)_disableIdleSystemSleep
+{
+ if (_idleSystemSleepAssertion == kIOPMNullAssertionID)
+#if defined(BUILDING_ON_LEOPARD) // IOPMAssertionCreateWithName is not defined in the 10.5 SDK
+ IOPMAssertionCreate(kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn, &_idleSystemSleepAssertion);
+#else // IOPMAssertionCreate is depreciated in > 10.5
+ IOPMAssertionCreateWithName(kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn, CFSTR("WebKit playing a video fullscreen."), &_idleSystemSleepAssertion);
+#endif
+}
+
+- (void)_enableIdleSystemSleep
+{
+ if (_idleSystemSleepAssertion != kIOPMNullAssertionID) {
+ IOPMAssertionRelease(_idleSystemSleepAssertion);
+ _idleSystemSleepAssertion = kIOPMNullAssertionID;
+ }
+}
+
+- (void)_enableTickleTimer
+{
+ [_tickleTimer invalidate];
+ [_tickleTimer release];
+ _tickleTimer = [[NSTimer scheduledTimerWithTimeInterval:tickleTimerInterval target:self selector:@selector(_tickleTimerFired) userInfo:nil repeats:YES] retain];
+}
+
+- (void)_disableTickleTimer
+{
+ [_tickleTimer invalidate];
+ [_tickleTimer release];
+ _tickleTimer = nil;
+}
+
+- (void)_tickleTimerFired
+{
+ UpdateSystemActivity(OverallAct);
+}
+
+- (void)updatePowerAssertions
+{
+ float rate = 0;
+ if (_mediaElement && _mediaElement->platformMedia().type == WebCore::PlatformMedia::QTMovieType)
+ rate = [_mediaElement->platformMedia().media.qtMovie rate];
+
+ if (rate && !_isEndingFullscreen) {
+ [self _disableIdleSystemSleep];
+ [self _disableIdleDisplaySleep];
+ [self _enableTickleTimer];
+ } else {
+ [self _enableIdleSystemSleep];
+ [self _enableIdleDisplaySleep];
+ [self _disableTickleTimer];
+ }
+}
+
+// MARK: -
+// MARK: Window callback
+
+- (void)_requestExit
+{
+ if (_mediaElement)
+ _mediaElement->exitFullscreen();
+ _forceDisableAnimation = NO;
+}
+
+- (void)requestExitFullscreenWithAnimation:(BOOL)animation
+{
+ if (_isEndingFullscreen)
+ return;
+
+ _forceDisableAnimation = !animation;
+ [self performSelector:@selector(_requestExit) withObject:nil afterDelay:0];
+
+}
+
+- (void)requestExitFullscreen
+{
+ [self requestExitFullscreenWithAnimation:YES];
+}
+
+- (void)fadeHUDIn
+{
+ [_hudController fadeWindowIn];
+}
+
+// MARK: -
+// MARK: QTMovie callbacks
+
+- (void)rateChanged:(NSNotification *)unusedNotification
+{
+ UNUSED_PARAM(unusedNotification);
+ [_hudController updateRate];
+ [self updatePowerAssertions];
+}
+
+@end
+
+@implementation WebVideoFullscreenWindow
+
+- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag
+{
+ UNUSED_PARAM(aStyle);
+ self = [super initWithContentRect:contentRect styleMask:NSBorderlessWindowMask backing:bufferingType defer:flag];
+ if (!self)
+ return nil;
+ [self setOpaque:NO];
+ [self setBackgroundColor:[NSColor clearColor]];
+ [self setIgnoresMouseEvents:NO];
+ [self setAcceptsMouseMovedEvents:YES];
+ return self;
+}
+
+- (void)dealloc
+{
+ ASSERT(!_fullscreenAnimation);
+ [super dealloc];
+}
+
+- (BOOL)resignFirstResponder
+{
+ return NO;
+}
+
+- (BOOL)canBecomeKeyWindow
+{
+ return NO;
+}
+
+- (void)mouseDown:(NSEvent *)theEvent
+{
+ UNUSED_PARAM(theEvent);
+}
+
+- (void)cancelOperation:(id)sender
+{
+ UNUSED_PARAM(sender);
+ [[self windowController] requestExitFullscreen];
+}
+
+- (void)animatedResizeDidEnd
+{
+ // Call our windowController.
+ if (_controllerActionOnAnimationEnd)
+ [[self windowController] performSelector:_controllerActionOnAnimationEnd];
+ _controllerActionOnAnimationEnd = NULL;
+}
+
+//
+// This function will animate a change of frame rectangle
+// We support queuing animation, that means that we'll correctly
+// interrupt the running animation, and queue the next one.
+//
+- (void)animateFromRect:(NSRect)startRect toRect:(NSRect)endRect withSubAnimation:(NSAnimation *)subAnimation controllerAction:(SEL)controllerAction
+{
+ _controllerActionOnAnimationEnd = controllerAction;
+
+ BOOL wasAnimating = NO;
+ if (_fullscreenAnimation) {
+ wasAnimating = YES;
+
+ // Interrupt any running animation.
+ [_fullscreenAnimation stopAnimation];
+
+ // Save the current rect to ensure a smooth transition.
+ startRect = [_fullscreenAnimation currentFrame];
+ [_fullscreenAnimation release];
+ _fullscreenAnimation = nil;
+ }
+
+ if (NSIsEmptyRect(startRect) || NSIsEmptyRect(endRect)) {
+ // Fakely end the subanimation.
+ [subAnimation setCurrentProgress:1];
+ // And remove the weak link to the window.
+ [subAnimation stopAnimation];
+
+ [self setFrame:endRect display:NO];
+ [self makeKeyAndOrderFront:self];
+ [self animatedResizeDidEnd];
+ return;
+ }
+
+ if (!wasAnimating) {
+ // We'll downscale the window during the animation based on the higher resolution rect
+ BOOL higherResolutionIsEndRect = startRect.size.width < endRect.size.width && startRect.size.height < endRect.size.height;
+ [self setFrame:higherResolutionIsEndRect ? endRect : startRect display:NO];
+ }
+
+ ASSERT(!_fullscreenAnimation);
+ _fullscreenAnimation = [[WebWindowScaleAnimation alloc] initWithHintedDuration:0.2 window:self initalFrame:startRect finalFrame:endRect];
+ [_fullscreenAnimation setSubAnimation:subAnimation];
+ [_fullscreenAnimation setDelegate:self];
+
+ // Make sure the animation has scaled the window before showing it.
+ [_fullscreenAnimation setCurrentProgress:0];
+ [self makeKeyAndOrderFront:self];
+
+ [_fullscreenAnimation startAnimation];
+}
+
+- (void)animationDidEnd:(NSAnimation *)animation
+{
+ if (![NSThread isMainThread]) {
+ [self performSelectorOnMainThread:@selector(animationDidEnd:) withObject:animation waitUntilDone:NO];
+ return;
+ }
+ if (animation != _fullscreenAnimation)
+ return;
+
+ // The animation is not really over and was interrupted
+ // Don't send completion events.
+ if ([animation currentProgress] < 1.0)
+ return;
+
+ // Ensure that animation (and subanimation) don't keep
+ // the weak reference to the window ivar that may be destroyed from
+ // now on.
+ [_fullscreenAnimation setWindow:nil];
+
+ [_fullscreenAnimation autorelease];
+ _fullscreenAnimation = nil;
+
+ [self animatedResizeDidEnd];
+}
+
+- (void)mouseMoved:(NSEvent *)theEvent
+{
+ UNUSED_PARAM(theEvent);
+ [[self windowController] fadeHUDIn];
+}
+
+@end
+
+#endif /* ENABLE(VIDEO) */
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.h b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.h
new file mode 100644
index 0000000..92bf776
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2009 Apple 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.
+ */
+
+#if ENABLE(VIDEO)
+
+#import <Cocoa/Cocoa.h>
+
+namespace WebCore {
+ class HTMLMediaElement;
+}
+
+@protocol WebVideoFullscreenHUDWindowControllerDelegate;
+
+@interface WebVideoFullscreenHUDWindowController : NSWindowController
+{
+ id <WebVideoFullscreenHUDWindowControllerDelegate> _delegate;
+ NSTimer *_timelineUpdateTimer;
+ NSTrackingArea *_area;
+ BOOL _mouseIsInHUD;
+ BOOL _isEndingFullscreen;
+ BOOL _isScrubbing;
+
+ NSControl *_timeline;
+ NSTextField *_remainingTimeText;
+ NSTextField *_elapsedTimeText;
+ NSControl *_volumeSlider;
+ NSButton *_playButton;
+}
+
+- (id <WebVideoFullscreenHUDWindowControllerDelegate>)delegate;
+- (void)setDelegate:(id <WebVideoFullscreenHUDWindowControllerDelegate>)delegate;
+- (void)fadeWindowIn;
+- (void)fadeWindowOut;
+- (void)closeWindow;
+- (void)updateRate;
+
+@end
+
+@protocol WebVideoFullscreenHUDWindowControllerDelegate <NSObject>
+- (void)requestExitFullscreen;
+- (WebCore::HTMLMediaElement*)mediaElement;
+@end
+
+#endif
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm
new file mode 100644
index 0000000..1637c1c
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm
@@ -0,0 +1,679 @@
+/*
+ * Copyright (C) 2009 Apple 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.
+ */
+
+#import "config.h"
+
+#if ENABLE(VIDEO)
+
+#import "WebVideoFullscreenHUDWindowController.h"
+
+#import "FloatConversion.h"
+#import <WebCoreSystemInterface.h>
+#import <WebCore/HTMLMediaElement.h>
+#import <wtf/RetainPtr.h>
+#import <wtf/UnusedParam.h>
+
+using namespace WebCore;
+using namespace std;
+
+static inline CGFloat webkit_CGFloor(CGFloat value)
+{
+ if (sizeof(value) == sizeof(float))
+ return floorf(value);
+ return floor(value);
+}
+
+#define HAVE_MEDIA_CONTROL (!defined(BUILDING_ON_LEOPARD))
+
+@interface WebVideoFullscreenHUDWindowController (Private)
+#if !defined(BUILDING_ON_LEOPARD)
+<NSWindowDelegate>
+#endif
+
+- (void)updateTime;
+- (void)timelinePositionChanged:(id)sender;
+- (float)currentTime;
+- (void)setCurrentTime:(float)currentTime;
+- (double)duration;
+
+- (void)volumeChanged:(id)sender;
+- (float)maxVolume;
+- (float)volume;
+- (void)setVolume:(float)volume;
+- (void)decrementVolume;
+- (void)incrementVolume;
+
+- (void)updatePlayButton;
+- (void)togglePlaying:(id)sender;
+- (BOOL)playing;
+- (void)setPlaying:(BOOL)playing;
+
+- (void)rewind:(id)sender;
+- (void)fastForward:(id)sender;
+
+- (NSString *)remainingTimeText;
+- (NSString *)elapsedTimeText;
+
+- (void)exitFullscreen:(id)sender;
+@end
+
+@interface WebVideoFullscreenHUDWindow : NSWindow
+@end
+
+@implementation WebVideoFullscreenHUDWindow
+
+- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag
+{
+ UNUSED_PARAM(aStyle);
+ self = [super initWithContentRect:contentRect styleMask:NSBorderlessWindowMask backing:bufferingType defer:flag];
+ if (!self)
+ return nil;
+
+ [self setOpaque:NO];
+ [self setBackgroundColor:[NSColor clearColor]];
+ [self setLevel:NSPopUpMenuWindowLevel];
+ [self setAcceptsMouseMovedEvents:YES];
+ [self setIgnoresMouseEvents:NO];
+ [self setMovableByWindowBackground:YES];
+
+ return self;
+}
+
+- (BOOL)canBecomeKeyWindow
+{
+ return YES;
+}
+
+- (void)cancelOperation:(id)sender
+{
+ UNUSED_PARAM(sender);
+ [[self windowController] exitFullscreen:self];
+}
+
+- (void)center
+{
+ NSRect hudFrame = [self frame];
+ NSRect screenFrame = [[NSScreen mainScreen] frame];
+ [self setFrameTopLeftPoint:NSMakePoint(screenFrame.origin.x + (screenFrame.size.width - hudFrame.size.width) / 2,
+ screenFrame.origin.y + (screenFrame.size.height - hudFrame.size.height) / 6)];
+}
+
+- (void)keyDown:(NSEvent *)event
+{
+ [super keyDown:event];
+ [[self windowController] fadeWindowIn];
+}
+
+- (BOOL)resignFirstResponder
+{
+ return NO;
+}
+
+- (BOOL)performKeyEquivalent:(NSEvent *)event
+{
+ // Block all command key events while the fullscreen window is up.
+ if ([event type] != NSKeyDown)
+ return NO;
+
+ if (!([event modifierFlags] & NSCommandKeyMask))
+ return NO;
+
+ return YES;
+}
+
+@end
+
+static const CGFloat windowHeight = 59;
+static const CGFloat windowWidth = 438;
+
+static const NSTimeInterval HUDWindowFadeOutDelay = 3;
+
+@implementation WebVideoFullscreenHUDWindowController
+
+- (id)init
+{
+ NSWindow *window = [[WebVideoFullscreenHUDWindow alloc] initWithContentRect:NSMakeRect(0, 0, windowWidth, windowHeight)
+ styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
+ self = [super initWithWindow:window];
+ [window setDelegate:self];
+ [window release];
+ if (!self)
+ return nil;
+ [self windowDidLoad];
+ return self;
+}
+
+- (void)dealloc
+{
+ ASSERT(!_timelineUpdateTimer);
+ ASSERT(!_area);
+ ASSERT(!_isScrubbing);
+ [_timeline release];
+ [_remainingTimeText release];
+ [_elapsedTimeText release];
+ [_volumeSlider release];
+ [_playButton release];
+ [super dealloc];
+}
+
+- (void)setArea:(NSTrackingArea *)area
+{
+ if (area == _area)
+ return;
+ [_area release];
+ _area = [area retain];
+}
+
+- (void)keyDown:(NSEvent *)event
+{
+ NSString *charactersIgnoringModifiers = [event charactersIgnoringModifiers];
+ if ([charactersIgnoringModifiers length] == 1) {
+ switch ([charactersIgnoringModifiers characterAtIndex:0]) {
+ case ' ':
+ [self togglePlaying:nil];
+ return;
+ case NSUpArrowFunctionKey:
+ if ([event modifierFlags] & NSAlternateKeyMask)
+ [self setVolume:[self maxVolume]];
+ else
+ [self incrementVolume];
+ return;
+ case NSDownArrowFunctionKey:
+ if ([event modifierFlags] & NSAlternateKeyMask)
+ [self setVolume:0];
+ else
+ [self decrementVolume];
+ return;
+ default:
+ break;
+ }
+ }
+
+ [super keyDown:event];
+}
+
+- (id <WebVideoFullscreenHUDWindowControllerDelegate>)delegate
+{
+ return _delegate;
+}
+
+- (void)setDelegate:(id <WebVideoFullscreenHUDWindowControllerDelegate>)delegate
+{
+ _delegate = delegate;
+}
+
+- (void)scheduleTimeUpdate
+{
+ [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(unscheduleTimeUpdate) object:self];
+
+ // First, update right away, then schedule future update
+ [self updateTime];
+ [self updatePlayButton];
+
+ [_timelineUpdateTimer invalidate];
+ [_timelineUpdateTimer release];
+
+ // Note that this creates a retain cycle between the window and us.
+ _timelineUpdateTimer = [[NSTimer timerWithTimeInterval:0.25 target:self selector:@selector(updateTime) userInfo:nil repeats:YES] retain];
+ [[NSRunLoop currentRunLoop] addTimer:_timelineUpdateTimer forMode:NSRunLoopCommonModes];
+}
+
+- (void)unscheduleTimeUpdate
+{
+ [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(unscheduleTimeUpdate) object:nil];
+
+ [_timelineUpdateTimer invalidate];
+ [_timelineUpdateTimer release];
+ _timelineUpdateTimer = nil;
+}
+
+- (void)fadeWindowIn
+{
+ NSWindow *window = [self window];
+ if (![window isVisible])
+ [window setAlphaValue:0];
+
+ [window makeKeyAndOrderFront:self];
+ [[window animator] setAlphaValue:1];
+ [self scheduleTimeUpdate];
+
+ [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(fadeWindowOut) object:nil];
+ if (!_mouseIsInHUD && [self playing]) // Don't fade out when paused.
+ [self performSelector:@selector(fadeWindowOut) withObject:nil afterDelay:HUDWindowFadeOutDelay];
+}
+
+- (void)fadeWindowOut
+{
+ [NSCursor setHiddenUntilMouseMoves:YES];
+ [[[self window] animator] setAlphaValue:0];
+ [self performSelector:@selector(unscheduleTimeUpdate) withObject:nil afterDelay:1];
+}
+
+- (void)closeWindow
+{
+ [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(fadeWindowOut) object:nil];
+ [self unscheduleTimeUpdate];
+ NSWindow *window = [self window];
+ [[window contentView] removeTrackingArea:_area];
+ [self setArea:nil];
+ [window close];
+ [window setDelegate:nil];
+ [self setWindow:nil];
+}
+
+#ifndef HAVE_MEDIA_CONTROL
+// FIXME: This code is never compiled, because HAVE_MEDIA_CONTROL is always defined to something, even on Leopard.
+// FIXME: Values in this enum have a different order than ones in WKMediaUIControlType.
+enum {
+ WKMediaUIControlPlayPauseButton,
+ WKMediaUIControlRewindButton,
+ WKMediaUIControlFastForwardButton,
+ WKMediaUIControlExitFullscreenButton,
+ WKMediaUIControlVolumeDownButton,
+ WKMediaUIControlSlider,
+ WKMediaUIControlVolumeUpButton,
+ WKMediaUIControlTimeline
+};
+#endif
+
+static NSControl *createControlWithMediaUIControlType(int controlType, NSRect frame)
+{
+#ifdef HAVE_MEDIA_CONTROL
+ NSControl *control = wkCreateMediaUIControl(controlType);
+ [control setFrame:frame];
+ return control;
+#else
+ // FIXME: This code is never compiled, because HAVE_MEDIA_CONTROL is always defined to something, even on Leopard.
+ if (controlType == wkMediaUIControlSlider)
+ return [[NSSlider alloc] initWithFrame:frame];
+ return [[NSControl alloc] initWithFrame:frame];
+#endif
+}
+
+static NSTextField *createTimeTextField(NSRect frame)
+{
+ NSTextField *textField = [[NSTextField alloc] initWithFrame:frame];
+ [textField setTextColor:[NSColor whiteColor]];
+ [textField setBordered:NO];
+ [textField setFont:[NSFont boldSystemFontOfSize:10]];
+ [textField setDrawsBackground:NO];
+ [textField setBezeled:NO];
+ [textField setEditable:NO];
+ [textField setSelectable:NO];
+ return textField;
+}
+
+- (void)windowDidLoad
+{
+ static const CGFloat horizontalMargin = 10;
+ static const CGFloat playButtonWidth = 41;
+ static const CGFloat playButtonHeight = 35;
+ static const CGFloat playButtonTopMargin = 4;
+ static const CGFloat volumeSliderWidth = 50;
+ static const CGFloat volumeSliderHeight = 13;
+ static const CGFloat volumeButtonWidth = 18;
+ static const CGFloat volumeButtonHeight = 16;
+ static const CGFloat volumeUpButtonLeftMargin = 4;
+ static const CGFloat volumeControlsTopMargin = 13;
+ static const CGFloat exitFullscreenButtonWidth = 25;
+ static const CGFloat exitFullscreenButtonHeight = 21;
+ static const CGFloat exitFullscreenButtonTopMargin = 11;
+ static const CGFloat timelineWidth = 315;
+ static const CGFloat timelineHeight = 14;
+ static const CGFloat timelineBottomMargin = 7;
+ static const CGFloat timeTextFieldWidth = 54;
+ static const CGFloat timeTextFieldHeight = 13;
+ static const CGFloat timeTextFieldHorizontalMargin = 7;
+
+ NSWindow *window = [self window];
+ ASSERT(window);
+
+#ifdef HAVE_MEDIA_CONTROL
+ NSView *background = wkCreateMediaUIBackgroundView();
+#else
+ // FIXME: This code is never compiled, because HAVE_MEDIA_CONTROL is always defined to something, even on Leopard.
+ NSView *background = [[NSView alloc] init];
+#endif
+ [window setContentView:background];
+ _area = [[NSTrackingArea alloc] initWithRect:[background bounds] options:NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways owner:self userInfo:nil];
+ [background addTrackingArea:_area];
+ [background release];
+
+ NSView *contentView = [window contentView];
+
+ CGFloat center = webkit_CGFloor((windowWidth - playButtonWidth) / 2);
+ _playButton = (NSButton *)createControlWithMediaUIControlType(wkMediaUIControlPlayPauseButton, NSMakeRect(center, windowHeight - playButtonTopMargin - playButtonHeight, playButtonWidth, playButtonHeight));
+ ASSERT([_playButton isKindOfClass:[NSButton class]]);
+ [_playButton setTarget:self];
+ [_playButton setAction:@selector(togglePlaying:)];
+ [contentView addSubview:_playButton];
+
+ CGFloat closeToRight = windowWidth - horizontalMargin - exitFullscreenButtonWidth;
+ NSControl *exitFullscreenButton = createControlWithMediaUIControlType(wkMediaUIControlExitFullscreenButton, NSMakeRect(closeToRight, windowHeight - exitFullscreenButtonTopMargin - exitFullscreenButtonHeight, exitFullscreenButtonWidth, exitFullscreenButtonHeight));
+ [exitFullscreenButton setAction:@selector(exitFullscreen:)];
+ [exitFullscreenButton setTarget:self];
+ [contentView addSubview:exitFullscreenButton];
+ [exitFullscreenButton release];
+
+ CGFloat volumeControlsBottom = windowHeight - volumeControlsTopMargin - volumeButtonHeight;
+ CGFloat left = horizontalMargin;
+ NSControl *volumeDownButton = createControlWithMediaUIControlType(wkMediaUIControlVolumeDownButton, NSMakeRect(left, volumeControlsBottom, volumeButtonWidth, volumeButtonHeight));
+ [contentView addSubview:volumeDownButton];
+ [volumeDownButton setTarget:self];
+ [volumeDownButton setAction:@selector(setVolumeToZero:)];
+ [volumeDownButton release];
+
+ left += volumeButtonWidth;
+ _volumeSlider = createControlWithMediaUIControlType(wkMediaUIControlSlider, NSMakeRect(left, volumeControlsBottom + webkit_CGFloor((volumeButtonHeight - volumeSliderHeight) / 2), volumeSliderWidth, volumeSliderHeight));
+ [_volumeSlider setValue:[NSNumber numberWithDouble:[self maxVolume]] forKey:@"maxValue"];
+ [_volumeSlider setTarget:self];
+ [_volumeSlider setAction:@selector(volumeChanged:)];
+ [contentView addSubview:_volumeSlider];
+
+ left += volumeSliderWidth + volumeUpButtonLeftMargin;
+ NSControl *volumeUpButton = createControlWithMediaUIControlType(wkMediaUIControlVolumeUpButton, NSMakeRect(left, volumeControlsBottom, volumeButtonWidth, volumeButtonHeight));
+ [volumeUpButton setTarget:self];
+ [volumeUpButton setAction:@selector(setVolumeToMaximum:)];
+ [contentView addSubview:volumeUpButton];
+ [volumeUpButton release];
+
+#ifdef HAVE_MEDIA_CONTROL
+ _timeline = wkCreateMediaUIControl(wkMediaUIControlTimeline);
+#else
+ // FIXME: This code is never compiled, because HAVE_MEDIA_CONTROL is always defined to something, even on Leopard.
+ _timeline = [[NSSlider alloc] init];
+#endif
+ [_timeline setTarget:self];
+ [_timeline setAction:@selector(timelinePositionChanged:)];
+ [_timeline setFrame:NSMakeRect(webkit_CGFloor((windowWidth - timelineWidth) / 2), timelineBottomMargin, timelineWidth, timelineHeight)];
+ [contentView addSubview:_timeline];
+
+ _elapsedTimeText = createTimeTextField(NSMakeRect(timeTextFieldHorizontalMargin, timelineBottomMargin, timeTextFieldWidth, timeTextFieldHeight));
+ [_elapsedTimeText setAlignment:NSLeftTextAlignment];
+ [contentView addSubview:_elapsedTimeText];
+
+ _remainingTimeText = createTimeTextField(NSMakeRect(windowWidth - timeTextFieldHorizontalMargin - timeTextFieldWidth, timelineBottomMargin, timeTextFieldWidth, timeTextFieldHeight));
+ [_remainingTimeText setAlignment:NSRightTextAlignment];
+ [contentView addSubview:_remainingTimeText];
+
+ [window recalculateKeyViewLoop];
+ [window setInitialFirstResponder:_playButton];
+ [window center];
+}
+
+- (void)updateVolume
+{
+ [_volumeSlider setFloatValue:[self volume]];
+}
+
+- (void)updateTime
+{
+ [self updateVolume];
+
+ [_timeline setFloatValue:[self currentTime]];
+ [_timeline setValue:[NSNumber numberWithDouble:[self duration]] forKey:@"maxValue"];
+
+ [_remainingTimeText setStringValue:[self remainingTimeText]];
+ [_elapsedTimeText setStringValue:[self elapsedTimeText]];
+}
+
+- (void)endScrubbing
+{
+ ASSERT(_isScrubbing);
+ _isScrubbing = NO;
+ if (HTMLMediaElement* mediaElement = [_delegate mediaElement])
+ mediaElement->endScrubbing();
+}
+
+- (void)timelinePositionChanged:(id)sender
+{
+ UNUSED_PARAM(sender);
+ [self setCurrentTime:[_timeline floatValue]];
+ if (!_isScrubbing) {
+ _isScrubbing = YES;
+ if (HTMLMediaElement* mediaElement = [_delegate mediaElement])
+ mediaElement->beginScrubbing();
+ static NSArray *endScrubbingModes = [[NSArray alloc] initWithObjects:NSDefaultRunLoopMode, NSModalPanelRunLoopMode, nil];
+ // Schedule -endScrubbing for when leaving mouse tracking mode.
+ [[NSRunLoop currentRunLoop] performSelector:@selector(endScrubbing) target:self argument:nil order:0 modes:endScrubbingModes];
+ }
+}
+
+- (float)currentTime
+{
+ return [_delegate mediaElement] ? [_delegate mediaElement]->currentTime() : 0;
+}
+
+- (void)setCurrentTime:(float)currentTime
+{
+ if (![_delegate mediaElement])
+ return;
+ WebCore::ExceptionCode e;
+ [_delegate mediaElement]->setCurrentTime(currentTime, e);
+ [self updateTime];
+}
+
+- (double)duration
+{
+ return [_delegate mediaElement] ? [_delegate mediaElement]->duration() : 0;
+}
+
+- (float)maxVolume
+{
+ // Set the volume slider resolution
+ return 100;
+}
+
+- (void)volumeChanged:(id)sender
+{
+ UNUSED_PARAM(sender);
+ [self setVolume:[_volumeSlider floatValue]];
+}
+
+- (void)setVolumeToZero:(id)sender
+{
+ UNUSED_PARAM(sender);
+ [self setVolume:0];
+}
+
+- (void)setVolumeToMaximum:(id)sender
+{
+ UNUSED_PARAM(sender);
+ [self setVolume:[self maxVolume]];
+}
+
+- (void)decrementVolume
+{
+ if (![_delegate mediaElement])
+ return;
+
+ float volume = [self volume] - 10;
+ [self setVolume:MAX(volume, 0)];
+}
+
+- (void)incrementVolume
+{
+ if (![_delegate mediaElement])
+ return;
+
+ float volume = [self volume] + 10;
+ [self setVolume:min(volume, [self maxVolume])];
+}
+
+- (float)volume
+{
+ return [_delegate mediaElement] ? [_delegate mediaElement]->volume() * [self maxVolume] : 0;
+}
+
+- (void)setVolume:(float)volume
+{
+ if (![_delegate mediaElement])
+ return;
+ WebCore::ExceptionCode e;
+ if ([_delegate mediaElement]->muted())
+ [_delegate mediaElement]->setMuted(false);
+ [_delegate mediaElement]->setVolume(volume / [self maxVolume], e);
+ [self updateVolume];
+}
+
+- (void)updatePlayButton
+{
+ [_playButton setIntValue:[self playing]];
+}
+
+- (void)updateRate
+{
+ BOOL playing = [self playing];
+
+ // Keep the HUD visible when paused.
+ if (!playing)
+ [self fadeWindowIn];
+ else if (!_mouseIsInHUD) {
+ [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(fadeWindowOut) object:nil];
+ [self performSelector:@selector(fadeWindowOut) withObject:nil afterDelay:HUDWindowFadeOutDelay];
+ }
+ [self updatePlayButton];
+}
+
+- (void)togglePlaying:(id)sender
+{
+ UNUSED_PARAM(sender);
+ [self setPlaying:![self playing]];
+}
+
+- (BOOL)playing
+{
+ HTMLMediaElement* mediaElement = [_delegate mediaElement];
+ if (!mediaElement)
+ return NO;
+
+ return !mediaElement->canPlay();
+}
+
+- (void)setPlaying:(BOOL)playing
+{
+ HTMLMediaElement* mediaElement = [_delegate mediaElement];
+
+ if (!mediaElement)
+ return;
+
+ if (playing)
+ mediaElement->play(mediaElement->processingUserGesture());
+ else
+ mediaElement->pause(mediaElement->processingUserGesture());
+}
+
+static NSString *timeToString(double time)
+{
+ ASSERT_ARG(time, time >= 0);
+
+ if (!isfinite(time))
+ time = 0;
+
+ int seconds = narrowPrecisionToFloat(abs(time));
+ int hours = seconds / (60 * 60);
+ int minutes = (seconds / 60) % 60;
+ seconds %= 60;
+
+ if (hours)
+ return [NSString stringWithFormat:@"%d:%02d:%02d", hours, minutes, seconds];
+
+ return [NSString stringWithFormat:@"%02d:%02d", minutes, seconds];
+}
+
+- (NSString *)remainingTimeText
+{
+ HTMLMediaElement* mediaElement = [_delegate mediaElement];
+ if (!mediaElement)
+ return @"";
+
+ return [@"-" stringByAppendingString:timeToString(mediaElement->duration() - mediaElement->currentTime())];
+}
+
+- (NSString *)elapsedTimeText
+{
+ if (![_delegate mediaElement])
+ return @"";
+
+ return timeToString([_delegate mediaElement]->currentTime());
+}
+
+// MARK: NSResponder
+
+- (void)mouseEntered:(NSEvent *)theEvent
+{
+ UNUSED_PARAM(theEvent);
+ // Make sure the HUD won't be hidden from now
+ _mouseIsInHUD = YES;
+ [self fadeWindowIn];
+}
+
+- (void)mouseExited:(NSEvent *)theEvent
+{
+ UNUSED_PARAM(theEvent);
+ _mouseIsInHUD = NO;
+ [self fadeWindowIn];
+}
+
+- (void)rewind:(id)sender
+{
+ UNUSED_PARAM(sender);
+ if (![_delegate mediaElement])
+ return;
+ [_delegate mediaElement]->rewind(30);
+}
+
+- (void)fastForward:(id)sender
+{
+ UNUSED_PARAM(sender);
+ if (![_delegate mediaElement])
+ return;
+}
+
+- (void)exitFullscreen:(id)sender
+{
+ UNUSED_PARAM(sender);
+ if (_isEndingFullscreen)
+ return;
+ _isEndingFullscreen = YES;
+ [_delegate requestExitFullscreen];
+}
+
+// MARK: NSWindowDelegate
+
+- (void)windowDidExpose:(NSNotification *)notification
+{
+ UNUSED_PARAM(notification);
+ [self scheduleTimeUpdate];
+}
+
+- (void)windowDidClose:(NSNotification *)notification
+{
+ UNUSED_PARAM(notification);
+ [self unscheduleTimeUpdate];
+}
+
+@end
+
+#endif
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebWindowAnimation.h b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebWindowAnimation.h
new file mode 100644
index 0000000..ecf975b
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebWindowAnimation.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2009 Apple 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 COMPUTER, INC. ``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 COMPUTER, INC. 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.
+ */
+
+#import <Cocoa/Cocoa.h>
+
+@interface WebWindowScaleAnimation : NSAnimation {
+@private
+ NSRect _initialFrame, _finalFrame, _realFrame;
+ NSWindow *_window; // (assign)
+ NSAnimation *_subAnimation; // (retain)
+ NSTimeInterval _hintedDuration;
+}
+- (id)initWithHintedDuration:(NSTimeInterval)duration window:(NSWindow *)window initalFrame:(NSRect)initialFrame finalFrame:(NSRect)finalFrame;
+
+- (void)setSubAnimation:(NSAnimation *)animation;
+
+- (NSRect)currentFrame;
+
+// Be sure to call setWindow:nil to clear the weak link _window when appropriate
+- (void)setWindow:(NSWindow *)window;
+@end
+
+
+@interface WebWindowFadeAnimation : NSAnimation {
+@private
+ CGFloat _initialAlpha, _finalAlpha;
+ NSWindow *_window; // (assign)
+ BOOL _isStopped;
+
+}
+- (id)initWithDuration:(NSTimeInterval)duration window:(NSWindow *)window initialAlpha:(CGFloat)initialAlpha finalAlpha:(CGFloat)finalAlpha;
+
+- (CGFloat)currentAlpha;
+
+// Be sure to call setWindow:nil to clear the weak link _window when appropriate
+- (void)setWindow:(NSWindow *)window;
+@end
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebWindowAnimation.mm b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebWindowAnimation.mm
new file mode 100644
index 0000000..1b11894
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebWindowAnimation.mm
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2009 Apple 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 COMPUTER, INC. ``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 COMPUTER, INC. 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.
+ */
+
+#import "config.h"
+
+#import "WebWindowAnimation.h"
+
+#import "FloatConversion.h"
+#import "WebCoreSystemInterface.h"
+#import <wtf/Assertions.h>
+#import <wtf/UnusedParam.h>
+
+using namespace WebCore;
+
+static const CGFloat slowMotionFactor = 10;
+
+static NSTimeInterval WebWindowAnimationDurationFromDuration(NSTimeInterval duration)
+{
+ return ([[NSApp currentEvent] modifierFlags] & NSShiftKeyMask) ? duration * slowMotionFactor : duration;
+}
+
+static NSRect scaledRect(NSRect _initialFrame, NSRect _finalFrame, CGFloat factor)
+{
+ NSRect currentRect = _initialFrame;
+ currentRect.origin.x += (NSMinX(_finalFrame) - NSMinX(_initialFrame)) * factor;
+ currentRect.origin.y += (NSMinY(_finalFrame) - NSMinY(_initialFrame)) * factor;
+ currentRect.size.width += (NSWidth(_finalFrame) - NSWidth(_initialFrame)) * factor;
+ currentRect.size.height += (NSHeight(_finalFrame) - NSHeight(_initialFrame)) * factor;
+ return currentRect;
+}
+
+static CGFloat squaredDistance(NSPoint point1, NSPoint point2)
+{
+ CGFloat deltaX = point1.x - point2.x;
+ CGFloat deltaY = point1.y - point2.y;
+ return deltaX * deltaX + deltaY * deltaY;
+}
+
+@implementation WebWindowScaleAnimation
+
+- (id)init
+{
+ self = [super init];
+ if (!self)
+ return nil;
+ [self setAnimationBlockingMode:NSAnimationNonblockingThreaded];
+ [self setFrameRate:60];
+ return self;
+}
+
+- (id)initWithHintedDuration:(NSTimeInterval)duration window:(NSWindow *)window initalFrame:(NSRect)initialFrame finalFrame:(NSRect)finalFrame
+{
+ self = [self init];
+ if (!self)
+ return nil;
+ _hintedDuration = duration;
+ _window = window;
+ _initialFrame = initialFrame;
+ _finalFrame = finalFrame;
+ _realFrame = [window frame];
+ return self;
+}
+
+- (void) dealloc
+{
+ [_subAnimation release];
+ [super dealloc];
+}
+
+- (void)setDuration:(NSTimeInterval)duration
+{
+ [super setDuration:WebWindowAnimationDurationFromDuration(duration)];
+}
+
+- (void)setWindow:(NSWindow *)window
+{
+ _window = window;
+}
+
+- (float)currentValue
+{
+ return narrowPrecisionToFloat(0.5 - 0.5 * cos(M_PI * (1 - [self currentProgress])));
+}
+
+- (NSRect)currentFrame
+{
+ return scaledRect(_finalFrame, _initialFrame, [self currentValue]);
+}
+
+- (void)setCurrentProgress:(NSAnimationProgress)progress
+{
+ if (!_window)
+ return;
+
+ [super setCurrentProgress:progress];
+
+ NSRect currentRect = [self currentFrame];
+ wkWindowSetScaledFrame(_window, currentRect, _realFrame);
+ [_subAnimation setCurrentProgress:progress];
+}
+
+- (void)setSubAnimation:(NSAnimation *)animation
+{
+ id oldAnimation = _subAnimation;
+ _subAnimation = [animation retain];
+ [oldAnimation release];
+}
+
+- (NSTimeInterval)additionalDurationNeededToReachFinalFrame
+{
+ static const CGFloat maxAdditionalDuration = 1;
+ static const CGFloat speedFactor = 0.0001f;
+
+ CGFloat maxDist = squaredDistance(_initialFrame.origin, _finalFrame.origin);
+ CGFloat dist;
+
+ dist = squaredDistance(NSMakePoint(NSMaxX(_initialFrame), NSMinY(_initialFrame)), NSMakePoint(NSMaxX(_finalFrame), NSMinY(_finalFrame)));
+ if (dist > maxDist)
+ maxDist = dist;
+
+ dist = squaredDistance(NSMakePoint(NSMaxX(_initialFrame), NSMaxY(_initialFrame)), NSMakePoint(NSMaxX(_finalFrame), NSMaxY(_finalFrame)));
+ if (dist > maxDist)
+ maxDist = dist;
+
+ dist = squaredDistance(NSMakePoint(NSMinX(_initialFrame), NSMinY(_initialFrame)), NSMakePoint(NSMinX(_finalFrame), NSMinY(_finalFrame)));
+ if (dist > maxDist)
+ maxDist = dist;
+
+ return MIN(sqrt(maxDist) * speedFactor, maxAdditionalDuration);
+}
+
+- (void)startAnimation
+{
+ // Compute extra time
+ if (_hintedDuration)
+ [self setDuration:_hintedDuration + [self additionalDurationNeededToReachFinalFrame]];
+ [super startAnimation];
+}
+
+- (void)stopAnimation
+{
+ _window = nil;
+ [super stopAnimation];
+ [_subAnimation stopAnimation];
+}
+
+@end
+
+@implementation WebWindowFadeAnimation
+
+- (id)init
+{
+ self = [super init];
+ if (!self)
+ return nil;
+ [self setAnimationBlockingMode:NSAnimationNonblockingThreaded];
+ [self setFrameRate:60];
+ [self setAnimationCurve:NSAnimationEaseInOut];
+ return self;
+}
+
+- (id)initWithDuration:(NSTimeInterval)duration window:(NSWindow *)window initialAlpha:(CGFloat)initialAlpha finalAlpha:(CGFloat)finalAlpha
+{
+ UNUSED_PARAM(duration);
+ self = [self init];
+ if (!self)
+ return nil;
+ _window = window;
+ _initialAlpha = initialAlpha;
+ _finalAlpha = finalAlpha;
+ return self;
+}
+
+- (void)setDuration:(NSTimeInterval)duration
+{
+ [super setDuration:WebWindowAnimationDurationFromDuration(duration)];
+}
+
+- (CGFloat)currentAlpha
+{
+ return MAX(0, MIN(1, _initialAlpha + [self currentValue] * (_finalAlpha - _initialAlpha)));
+}
+
+- (void)setCurrentProgress:(NSAnimationProgress)progress
+{
+ if (_isStopped)
+ return;
+
+ ASSERT(_window);
+ [super setCurrentProgress:progress];
+
+ wkWindowSetAlpha(_window, [self currentAlpha]);
+}
+
+- (void)setWindow:(NSWindow*)window
+{
+ _window = window;
+}
+
+- (void)stopAnimation
+{
+ // This is relevant when we are a sub animation of a scale animation.
+ // In this case we are hosted in the animated thread of the parent
+ // and even after [super stopAnimation], the parent might call
+ // setCurrrentProgress.
+ _isStopped = YES;
+
+ [super stopAnimation];
+}
+
+@end
+
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/network/HTTPHeaderMap.cpp b/src/3rdparty/webkit/Source/WebCore/platform/network/HTTPHeaderMap.cpp
index 59cbcbe..3541e1e 100644
--- a/src/3rdparty/webkit/Source/WebCore/platform/network/HTTPHeaderMap.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/platform/network/HTTPHeaderMap.cpp
@@ -97,20 +97,32 @@ struct CaseFoldingCStringTranslator {
String HTTPHeaderMap::get(const char* name) const
{
+#if COMPILER(WINSCW)
+ return HashMap::get((AtomicString)(name));
+#else
const_iterator i = find<const char*, CaseFoldingCStringTranslator>(name);
if (i == end())
return String();
return i->second;
+#endif
}
bool HTTPHeaderMap::contains(const char* name) const
{
+#if COMPILER(WINSCW)
+ return HashMap::contains((AtomicString)(name));
+#else
return find<const char*, CaseFoldingCStringTranslator>(name) != end();
+#endif
}
pair<HTTPHeaderMap::iterator, bool> HTTPHeaderMap::add(const char* name, const String& value)
{
+#if COMPILER(WINSCW)
+ return HashMap::add((AtomicString)(name), value);
+#else
return HashMap<AtomicString, String, CaseFoldingHash>::add<const char*, CaseFoldingCStringTranslator>(name, value);
+#endif
}
} // namespace WebCore
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.h b/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.h
index bd530de..e82a6fc 100644
--- a/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.h
+++ b/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.h
@@ -38,14 +38,20 @@ typedef struct _NSRect NSRect;
#ifdef __OBJC__
@class NSArray;
+@class NSControl;
@class NSString;
@class NSURL;
+@class NSView;
+@class NSWindow;
@class QTMovie;
@class QTMovieView;
#else
class NSArray;
+class NSControl;
class NSString;
class NSURL;
+class NSView;
+class NSWindow;
class QTMovie;
class QTMovieView;
#endif
@@ -53,6 +59,8 @@ class QTMovieView;
extern "C" {
// In alphabetical order.
+extern NSView *(*wkCreateMediaUIBackgroundView)(void);
+extern NSControl *(*wkCreateMediaUIControl)(int);
extern unsigned (*wkQTIncludeOnlyModernMediaFileTypes)(void);
extern int (*wkQTMovieDataRate)(QTMovie*);
extern void (*wkQTMovieDisableComponent)(uint32_t[5]);
@@ -68,6 +76,19 @@ extern void (*wkQTMovieViewSetDrawSynchronously)(QTMovieView*, BOOL);
extern NSArray *(*wkQTGetSitesInMediaDownloadCache)();
extern void (*wkQTClearMediaDownloadCacheForSite)(NSString *site);
extern void (*wkQTClearMediaDownloadCache)();
+extern void (*wkWindowSetAlpha)(NSWindow *, float);
+extern void (*wkWindowSetScaledFrame)(NSWindow *, NSRect, NSRect);
+
+typedef enum {
+ wkMediaUIControlTimeline,
+ wkMediaUIControlSlider,
+ wkMediaUIControlPlayPauseButton,
+ wkMediaUIControlExitFullscreenButton,
+ wkMediaUIControlRewindButton,
+ wkMediaUIControlFastForwardButton,
+ wkMediaUIControlVolumeUpButton,
+ wkMediaUIControlVolumeDownButton
+} wkMediaUIControlType;
}
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.mm b/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.mm
index 3e26671..868cbd9 100644
--- a/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.mm
+++ b/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.mm
@@ -27,6 +27,8 @@
#import "WebCoreSystemInterface.h"
#import <Foundation/Foundation.h>
+NSView *(*wkCreateMediaUIBackgroundView)(void);
+NSControl *(*wkCreateMediaUIControl)(int);
unsigned (*wkQTIncludeOnlyModernMediaFileTypes)(void);
int (*wkQTMovieDataRate)(QTMovie*);
void (*wkQTMovieDisableComponent)(uint32_t[5]);
@@ -42,4 +44,6 @@ void (*wkQTMovieViewSetDrawSynchronously)(QTMovieView*, BOOL);
NSArray *(*wkQTGetSitesInMediaDownloadCache)();
void (*wkQTClearMediaDownloadCacheForSite)(NSString *site);
void (*wkQTClearMediaDownloadCache)();
+void (*wkWindowSetAlpha)(NSWindow *, float);
+void (*wkWindowSetScaledFrame)(NSWindow *, NSRect, NSRect);
diff --git a/src/3rdparty/webkit/Source/WebCore/plugins/PluginView.cpp b/src/3rdparty/webkit/Source/WebCore/plugins/PluginView.cpp
index fd2b0b0..b020946 100644
--- a/src/3rdparty/webkit/Source/WebCore/plugins/PluginView.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/plugins/PluginView.cpp
@@ -909,8 +909,9 @@ void PluginView::focusPluginElement()
{
// Focus the plugin
if (Page* page = m_parentFrame->page())
- page->focusController()->setFocusedFrame(m_parentFrame);
- m_parentFrame->document()->setFocusedNode(m_element);
+ page->focusController()->setFocusedNode(m_element, m_parentFrame);
+ else
+ m_parentFrame->document()->setFocusedNode(m_element);
}
void PluginView::didReceiveResponse(const ResourceResponse& response)
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/CounterNode.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/CounterNode.cpp
index 323f5db..8a88fc9 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/CounterNode.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/CounterNode.cpp
@@ -44,6 +44,49 @@ CounterNode::CounterNode(RenderObject* o, bool hasResetType, int value)
CounterNode::~CounterNode()
{
+ // Ideally this would be an assert and this would never be reached. In reality this happens a lot
+ // so we need to handle these cases. The node is still connected to the tree so we need to detach it.
+ if (m_parent || m_previousSibling || m_nextSibling || m_firstChild || m_lastChild) {
+ CounterNode* oldParent = 0;
+ CounterNode* oldPreviousSibling = 0;
+ // Instead of calling removeChild() we do this safely as the tree is likely broken if we get here.
+ if (m_parent) {
+ if (m_parent->m_firstChild == this)
+ m_parent->m_firstChild = m_nextSibling;
+ if (m_parent->m_lastChild == this)
+ m_parent->m_lastChild = m_previousSibling;
+ oldParent = m_parent;
+ m_parent = 0;
+ }
+ if (m_previousSibling) {
+ if (m_previousSibling->m_nextSibling == this)
+ m_previousSibling->m_nextSibling = m_nextSibling;
+ oldPreviousSibling = m_previousSibling;
+ m_previousSibling = 0;
+ }
+ if (m_nextSibling) {
+ if (m_nextSibling->m_previousSibling == this)
+ m_nextSibling->m_previousSibling = oldPreviousSibling;
+ m_nextSibling = 0;
+ }
+ if (m_firstChild) {
+ // The node's children are reparented to the old parent.
+ for (CounterNode* child = m_firstChild; child; ) {
+ CounterNode* nextChild = child->m_nextSibling;
+ CounterNode* nextSibling = 0;
+ child->m_parent = oldParent;
+ if (oldPreviousSibling) {
+ nextSibling = oldPreviousSibling->m_nextSibling;
+ child->m_previousSibling = oldPreviousSibling;
+ oldPreviousSibling->m_nextSibling = child;
+ child->m_nextSibling = nextSibling;
+ nextSibling->m_previousSibling = child;
+ oldPreviousSibling = child;
+ }
+ child = nextChild;
+ }
+ }
+ }
resetRenderers();
}
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlock.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlock.cpp
index a212dd4..39c0469 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlock.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlock.cpp
@@ -184,7 +184,7 @@ void RenderBlock::destroy()
childBox->remove();
}
}
- } else if (isInline() && parent())
+ } else if (parent())
parent()->dirtyLinesFromChangedChild(this);
}
@@ -3204,8 +3204,10 @@ void RenderBlock::removeFloatingObject(RenderBox* o)
logicalBottom = max(logicalBottom, logicalTop + 1);
}
if (r->m_originatingLine) {
- ASSERT(r->m_originatingLine->renderer() == this);
- r->m_originatingLine->markDirty();
+ if (!selfNeedsLayout()) {
+ ASSERT(r->m_originatingLine->renderer() == this);
+ r->m_originatingLine->markDirty();
+ }
#if !ASSERT_DISABLED
r->m_originatingLine = 0;
#endif
@@ -3668,7 +3670,7 @@ void RenderBlock::clearFloats()
}
floatMap.remove(f->m_renderer);
- if (oldFloatingObject->m_originatingLine) {
+ if (oldFloatingObject->m_originatingLine && !selfNeedsLayout()) {
ASSERT(oldFloatingObject->m_originatingLine->renderer() == this);
oldFloatingObject->m_originatingLine->markDirty();
}
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlockLineLayout.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlockLineLayout.cpp
index b0b10e3..2e92801 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlockLineLayout.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlockLineLayout.cpp
@@ -1768,7 +1768,7 @@ void TrailingObjects::updateMidpointsForTrailingBoxes(LineMidpointState& lineMid
if (lineMidpointState.numMidpoints % 2) {
// Find the trailing space object's midpoint.
int trailingSpaceMidpoint = lineMidpointState.numMidpoints - 1;
- for ( ; trailingSpaceMidpoint >= 0 && lineMidpointState.midpoints[trailingSpaceMidpoint].m_obj != m_whitespace; --trailingSpaceMidpoint) { }
+ for ( ; trailingSpaceMidpoint > 0 && lineMidpointState.midpoints[trailingSpaceMidpoint].m_obj != m_whitespace; --trailingSpaceMidpoint) { }
ASSERT(trailingSpaceMidpoint >= 0);
if (collapseFirstSpace == CollapseFirstSpace)
lineMidpointState.midpoints[trailingSpaceMidpoint].m_pos--;
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.cpp
index 0b33abe..9c2aa48 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.cpp
@@ -3200,7 +3200,7 @@ bool RenderBox::shrinkToAvoidFloats() const
bool RenderBox::avoidsFloats() const
{
- return isReplaced() || hasOverflowClip() || isHR() || isLegend() || isWritingModeRoot();
+ return isReplaced() || hasOverflowClip() || isHR() || isLegend() || isWritingModeRoot() || isDeprecatedFlexItem();
}
void RenderBox::addShadowOverflow()
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.h b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.h
index 258f213..08dc922 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.h
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.h
@@ -378,6 +378,8 @@ public:
virtual void markForPaginationRelayoutIfNeeded() { }
bool isWritingModeRoot() const { return !parent() || parent()->style()->writingMode() != style()->writingMode(); }
+
+ bool isDeprecatedFlexItem() const { return !isInline() && !isFloatingOrPositioned() && parent() && parent()->isFlexibleBox(); }
virtual int lineHeight(bool firstLine, LineDirectionMode, LinePositionMode = PositionOnContainingLine) const;
virtual int baselinePosition(FontBaseline, bool firstLine, LineDirectionMode, LinePositionMode = PositionOnContainingLine) const;
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderFlexibleBox.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderFlexibleBox.cpp
index b55bd9d..2a3b32c 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderFlexibleBox.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderFlexibleBox.cpp
@@ -90,8 +90,8 @@ public:
current = forward ? current->nextSiblingBox() : current->previousSiblingBox();
if (current && current->style()->boxOrdinalGroup() > lastOrdinal)
lastOrdinal = current->style()->boxOrdinalGroup();
- } while (!current || current->style()->boxOrdinalGroup() != currentOrdinal ||
- current->style()->visibility() == COLLAPSE);
+ } while (!current || (!current->isAnonymous()
+ && (current->style()->boxOrdinalGroup() != currentOrdinal || current->style()->visibility() == COLLAPSE)));
return current;
}
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderIFrame.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderIFrame.cpp
index 366d9e7..1ce79d4 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderIFrame.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderIFrame.cpp
@@ -102,8 +102,9 @@ bool RenderIFrame::flattenFrame()
if (!view)
return false;
- // Do not flatten offscreen inner frames during frame flattening.
- return absoluteBoundingBoxRect().intersects(IntRect(IntPoint(0, 0), view->contentsSize()));
+ // Do not flatten offscreen inner frames during frame flattening, as flattening might make them visible.
+ IntRect boundingRect = absoluteBoundingBoxRect();
+ return boundingRect.maxX() > 0 && boundingRect.maxY() > 0;
}
void RenderIFrame::layout()
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderInline.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderInline.cpp
index 5fb8683..5bd726d 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderInline.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderInline.cpp
@@ -99,8 +99,7 @@ void RenderInline::destroy()
for (InlineFlowBox* box = firstLineBox(); box; box = box->nextLineBox())
box->remove();
}
- } else if (isInline() && parent())
- parent()->dirtyLinesFromChangedChild(this);
+ }
}
m_lineBoxes.deleteLineBoxes(renderArena());
@@ -845,11 +844,9 @@ InlineBox* RenderInline::culledInlineFirstLineBox() const
// We want to get the margin box in the inline direction, and then use our font ascent/descent in the block
// direction (aligned to the root box's baseline).
- if (curr->isBox()) {
- RenderBox* currBox = toRenderBox(curr);
- if (currBox->inlineBoxWrapper())
- return currBox->inlineBoxWrapper();
- } else if (curr->isRenderInline()) {
+ if (curr->isBox())
+ return toRenderBox(curr)->inlineBoxWrapper();
+ if (curr->isRenderInline()) {
RenderInline* currInline = toRenderInline(curr);
InlineBox* result = currInline->firstLineBoxIncludingCulling();
if (result)
@@ -871,11 +868,9 @@ InlineBox* RenderInline::culledInlineLastLineBox() const
// We want to get the margin box in the inline direction, and then use our font ascent/descent in the block
// direction (aligned to the root box's baseline).
- if (curr->isBox()) {
- RenderBox* currBox = toRenderBox(curr);
- if (currBox->inlineBoxWrapper())
- return currBox->inlineBoxWrapper();
- } else if (curr->isRenderInline()) {
+ if (curr->isBox())
+ return toRenderBox(curr)->inlineBoxWrapper();
+ if (curr->isRenderInline()) {
RenderInline* currInline = toRenderInline(curr);
InlineBox* result = currInline->lastLineBoxIncludingCulling();
if (result)
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderLineBoxList.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderLineBoxList.cpp
index 32f133c..4b50acb 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderLineBoxList.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderLineBoxList.cpp
@@ -355,8 +355,21 @@ void RenderLineBoxList::dirtyLinesFromChangedChild(RenderObject* container, Rend
if (box)
break;
}
- if (!box)
+ if (!box) {
+ if (inlineContainer && !inlineContainer->alwaysCreateLineBoxes()) {
+ // https://bugs.webkit.org/show_bug.cgi?id=60778
+ // We may have just removed a <br> with no line box that was our first child. In this case
+ // we won't find a previous sibling, but firstBox can be pointing to a following sibling.
+ // This isn't good enough, since we won't locate the root line box that encloses the removed
+ // <br>. We have to just over-invalidate a bit and go up to our parent.
+ if (!inlineContainer->parent()->selfNeedsLayout()) {
+ inlineContainer->parent()->dirtyLinesFromChangedChild(inlineContainer);
+ inlineContainer->setNeedsLayout(true); // Mark the container as needing layout to avoid dirtying the same lines again across multiple destroy() calls of the same subtree.
+ }
+ return;
+ }
box = firstBox->root();
+ }
// If we found a line box, then dirty it.
if (box) {
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderObject.h b/src/3rdparty/webkit/Source/WebCore/rendering/RenderObject.h
index 537f08a..44ee43c 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderObject.h
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderObject.h
@@ -1022,10 +1022,13 @@ inline void RenderObject::markContainingBlocksForLayout(bool scheduleRelayout, R
if (!container && !o->isRenderView())
return;
if (!last->isText() && (last->style()->position() == FixedPosition || last->style()->position() == AbsolutePosition)) {
+ bool willSkipRelativelyPositionedInlines = !o->isRenderBlock();
while (o && !o->isRenderBlock()) // Skip relatively positioned inlines and get to the enclosing RenderBlock.
o = o->container();
if (!o || o->m_posChildNeedsLayout)
return;
+ if (willSkipRelativelyPositionedInlines)
+ container = o->container();
o->m_posChildNeedsLayout = true;
simplifiedNormalFlowLayout = true;
ASSERT(!o->isSetNeedsLayoutForbidden());
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.cpp
index c27d336..09a7944 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.cpp
@@ -57,6 +57,14 @@ RenderReplaced::~RenderReplaced()
{
}
+void RenderReplaced::destroy()
+{
+ if (!documentBeingDestroyed() && parent())
+ parent()->dirtyLinesFromChangedChild(this);
+
+ RenderBox::destroy();
+}
+
void RenderReplaced::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
{
RenderBox::styleDidChange(diff, oldStyle);
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.h b/src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.h
index d6ebba6..29fc71c 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.h
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.h
@@ -32,6 +32,8 @@ public:
RenderReplaced(Node*, const IntSize& intrinsicSize);
virtual ~RenderReplaced();
+ virtual void destroy();
+
protected:
virtual void layout();
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderText.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderText.cpp
index 3d20df4..556379e 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderText.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderText.cpp
@@ -37,6 +37,7 @@
#include "RenderCombineText.h"
#include "RenderLayer.h"
#include "RenderView.h"
+#include "Settings.h"
#include "Text.h"
#include "TextBreakIterator.h"
#include "TextResourceDecoder.h"
@@ -53,6 +54,37 @@ using namespace Unicode;
namespace WebCore {
+class SecureTextTimer;
+typedef HashMap<RenderText*, SecureTextTimer*> SecureTextTimerMap;
+static SecureTextTimerMap* gSecureTextTimers = 0;
+
+class SecureTextTimer : public TimerBase {
+public:
+ SecureTextTimer(RenderText* renderText)
+ : m_renderText(renderText)
+ , m_lastTypedCharacterOffset(-1)
+ {
+ }
+
+ void restartWithNewText(unsigned lastTypedCharacterOffset)
+ {
+ m_lastTypedCharacterOffset = lastTypedCharacterOffset;
+ startOneShot(m_renderText->document()->settings()->passwordEchoDurationInSeconds());
+ }
+ void invalidate() { m_lastTypedCharacterOffset = -1; }
+ unsigned lastTypedCharacterOffset() { return m_lastTypedCharacterOffset; }
+
+private:
+ virtual void fired()
+ {
+ ASSERT(gSecureTextTimers->contains(m_renderText));
+ m_renderText->setText(m_renderText->text(), true /* forcing setting text as it may be masked later */);
+ }
+
+ RenderText* m_renderText;
+ int m_lastTypedCharacterOffset;
+};
+
static void makeCapitalized(String* string, UChar previous)
{
if (string->isNull())
@@ -196,6 +228,9 @@ void RenderText::removeAndDestroyTextBoxes()
void RenderText::destroy()
{
+ if (SecureTextTimer* secureTextTimer = gSecureTextTimers ? gSecureTextTimers->take(this) : 0)
+ delete secureTextTimer;
+
removeAndDestroyTextBoxes();
RenderObject::destroy();
}
@@ -1158,13 +1193,13 @@ void RenderText::setTextInternal(PassRefPtr<StringImpl> text)
case TSNONE:
break;
case TSCIRCLE:
- m_text.makeSecure(whiteBullet);
+ secureText(whiteBullet);
break;
case TSDISC:
- m_text.makeSecure(bullet);
+ secureText(bullet);
break;
case TSSQUARE:
- m_text.makeSecure(blackSquare);
+ secureText(blackSquare);
}
}
@@ -1174,6 +1209,28 @@ void RenderText::setTextInternal(PassRefPtr<StringImpl> text)
m_isAllASCII = m_text.containsOnlyASCII();
}
+void RenderText::secureText(UChar mask)
+{
+ if (!m_text.length())
+ return;
+
+ int lastTypedCharacterOffsetToReveal = -1;
+ String revealedText;
+ SecureTextTimer* secureTextTimer = gSecureTextTimers ? gSecureTextTimers->get(this) : 0;
+ if (secureTextTimer && secureTextTimer->isActive()) {
+ lastTypedCharacterOffsetToReveal = secureTextTimer->lastTypedCharacterOffset();
+ if (lastTypedCharacterOffsetToReveal >= 0)
+ revealedText.append(m_text[lastTypedCharacterOffsetToReveal]);
+ }
+
+ m_text.fill(mask);
+ if (lastTypedCharacterOffsetToReveal >= 0) {
+ m_text.replace(lastTypedCharacterOffsetToReveal, 1, revealedText);
+ // m_text may be updated later before timer fires. We invalidate the lastTypedCharacterOffset to avoid inconsistency.
+ secureTextTimer->invalidate();
+ }
+}
+
void RenderText::setText(PassRefPtr<StringImpl> text, bool force)
{
ASSERT(text);
@@ -1597,4 +1654,17 @@ void RenderText::checkConsistency() const
#endif
+void RenderText::momentarilyRevealLastTypedCharacter(unsigned lastTypedCharacterOffset)
+{
+ if (!gSecureTextTimers)
+ gSecureTextTimers = new SecureTextTimerMap;
+
+ SecureTextTimer* secureTextTimer = gSecureTextTimers->get(this);
+ if (!secureTextTimer) {
+ secureTextTimer = new SecureTextTimer(this);
+ gSecureTextTimers->add(this, secureTextTimer);
+ }
+ secureTextTimer->restartWithNewText(lastTypedCharacterOffset);
+}
+
} // namespace WebCore
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderText.h b/src/3rdparty/webkit/Source/WebCore/rendering/RenderText.h
index 2008dad..f89a762 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderText.h
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderText.h
@@ -117,6 +117,9 @@ public:
bool containsReversedText() const { return m_containsReversedText; }
+ bool isSecure() const { return style()->textSecurity() != TSNONE; }
+ void momentarilyRevealLastTypedCharacter(unsigned lastTypedCharacterOffset);
+
InlineTextBox* findNextInlineTextBox(int offset, int& pos) const;
bool allowTabs() const { return !style()->collapseWhiteSpace(); }
@@ -158,6 +161,7 @@ private:
void updateNeedsTranscoding();
inline void transformText(String&) const;
+ void secureText(UChar mask);
float m_minWidth; // here to minimize padding in 64-bit.
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderThemeWinCE.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderThemeWinCE.cpp
index a56ab3e..a22ed8c 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderThemeWinCE.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderThemeWinCE.cpp
@@ -479,7 +479,7 @@ static HTMLMediaElement* mediaElementParent(Node* node)
if (!node)
return 0;
Node* mediaNode = node->shadowAncestorNode();
- if (!mediaNode || (!mediaNode->hasTagName(HTMLNames::videoTag) && !mediaNode->hasTagName(HTMLNames::audioTag)))
+ if (!mediaNode || !mediaNode->isElementNode() || !static_cast<Element*>(mediaNode)->isMediaElement())
return 0;
return static_cast<HTMLMediaElement*>(mediaNode);
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderWidget.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderWidget.cpp
index 894d689..97444cd 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderWidget.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderWidget.cpp
@@ -125,6 +125,10 @@ void RenderWidget::destroy()
document()->axObjectCache()->childrenChanged(this->parent());
document()->axObjectCache()->remove(this);
}
+
+ if (!documentBeingDestroyed() && parent())
+ parent()->dirtyLinesFromChangedChild(this);
+
remove();
if (m_hasCounterNodeMap)
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/svg/RenderSVGInline.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/svg/RenderSVGInline.cpp
index 02a85ce..fdfd92d 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/svg/RenderSVGInline.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/svg/RenderSVGInline.cpp
@@ -95,6 +95,9 @@ void RenderSVGInline::absoluteQuads(Vector<FloatQuad>& quads)
void RenderSVGInline::destroy()
{
+ if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(this))
+ textRenderer->setNeedsPositioningValuesUpdate();
+
SVGResourcesCache::clientDestroyed(this);
RenderInline::destroy();
}
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGInlineFlowBox.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGInlineFlowBox.cpp
index 1d0043b..8992a2a 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGInlineFlowBox.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGInlineFlowBox.cpp
@@ -74,8 +74,11 @@ void SVGInlineFlowBox::paint(PaintInfo& paintInfo, int, int, int, int)
IntRect SVGInlineFlowBox::calculateBoundaries() const
{
IntRect childRect;
- for (InlineBox* child = firstChild(); child; child = child->nextOnLine())
+ for (InlineBox* child = firstChild(); child; child = child->nextOnLine()) {
+ if (!child->isSVGInlineTextBox() && !child->isSVGInlineFlowBox())
+ continue;
childRect.unite(child->calculateBoundaries());
+ }
return childRect;
}
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.cpp
index 42eb8e8..4121723 100644
--- a/src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.cpp
@@ -39,7 +39,11 @@ void SVGTextLayoutAttributesBuilder::buildLayoutAttributesForTextSubtree(RenderS
{
ASSERT(textRoot);
- // Build list of x/y/dx/dy/rotate values for each subtree element that may define these values (tspan/textPath etc).
+ // We always clear our current attribute as we don't want to keep any stale ones that could survive DOM modification.
+ Vector<SVGTextLayoutAttributes>& allAttributes = textRoot->layoutAttributes();
+ allAttributes.clear();
+
+ // Build list of x/y/dx/dy/rotate values for each subtree element that may define these values (tspan/textPath etc).
unsigned atCharacter = 0;
UChar lastCharacter = '\0';
collectTextPositioningElements(textRoot, atCharacter, lastCharacter);
@@ -51,8 +55,6 @@ void SVGTextLayoutAttributesBuilder::buildLayoutAttributesForTextSubtree(RenderS
buildLayoutAttributesForAllCharacters(textRoot, atCharacter);
// Propagate layout attributes to each RenderSVGInlineText object, and the whole list to the RenderSVGText root.
- Vector<SVGTextLayoutAttributes>& allAttributes = textRoot->layoutAttributes();
- allAttributes.clear();
atCharacter = 0;
lastCharacter = '\0';
propagateLayoutAttributes(textRoot, allAttributes, atCharacter, lastCharacter);
diff --git a/src/3rdparty/webkit/Source/WebCore/storage/IDBRequest.cpp b/src/3rdparty/webkit/Source/WebCore/storage/IDBRequest.cpp
index f8d818a..96abd87 100644
--- a/src/3rdparty/webkit/Source/WebCore/storage/IDBRequest.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/storage/IDBRequest.cpp
@@ -66,7 +66,7 @@ IDBRequest::IDBRequest(ScriptExecutionContext* context, PassRefPtr<IDBAny> sourc
IDBRequest::~IDBRequest()
{
- ASSERT(m_readyState == DONE || m_readyState == EarlyDeath);
+ ASSERT(m_readyState == DONE || m_readyState == EarlyDeath || !scriptExecutionContext());
if (m_transaction)
m_transaction->unregisterRequest(this);
}
@@ -149,8 +149,11 @@ void IDBRequest::abort()
ASSERT(m_readyState == DONE);
return;
}
+ // FIXME: Remove isDocument check when
+ // https://bugs.webkit.org/show_bug.cgi?id=57789 is resolved.
+ if (!scriptExecutionContext() || !scriptExecutionContext()->isDocument())
+ return;
- ASSERT(scriptExecutionContext()->isDocument());
EventQueue* eventQueue = static_cast<Document*>(scriptExecutionContext())->eventQueue();
for (size_t i = 0; i < m_enqueuedEvents.size(); ++i) {
bool removed = eventQueue->cancelEvent(m_enqueuedEvents[i].get());
diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.cpp b/src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.cpp
index 6b9c085..0fba66b 100644
--- a/src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.cpp
@@ -70,6 +70,11 @@ SVGElementInstance::~SVGElementInstance()
// Deregister as instance for passed element.
m_element->removeInstanceMapping(this);
+ clearChildren();
+}
+
+void SVGElementInstance::clearChildren()
+{
removeAllChildrenInContainer<SVGElementInstance, SVGElementInstance>(this);
}
@@ -105,8 +110,10 @@ void SVGElementInstance::invalidateAllInstancesOfElement(SVGElement* element)
const HashSet<SVGElementInstance*>::const_iterator end = set.end();
for (HashSet<SVGElementInstance*>::const_iterator it = set.begin(); it != end; ++it) {
ASSERT((*it)->correspondingElement() == element);
- if (SVGUseElement* element = (*it)->correspondingUseElement())
+ if (SVGUseElement* element = (*it)->correspondingUseElement()) {
+ ASSERT(element->inDocument());
element->invalidateShadowTree();
+ }
}
// Be sure to rebuild use trees, if needed
diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.h b/src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.h
index 2a8c52f..f24c16f 100644
--- a/src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.h
+++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.h
@@ -59,6 +59,7 @@ public:
SVGUseElement* correspondingUseElement() const { return m_correspondingUseElement; }
SVGUseElement* directUseElement() const { return m_directUseElement; }
SVGElement* shadowTreeElement() const { return m_shadowTreeElement.get(); }
+ void clearChildren();
void clearUseElements()
{
m_directUseElement = 0;
diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGStyleElement.cpp b/src/3rdparty/webkit/Source/WebCore/svg/SVGStyleElement.cpp
index 042af1c..01adb35 100644
--- a/src/3rdparty/webkit/Source/WebCore/svg/SVGStyleElement.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGStyleElement.cpp
@@ -42,8 +42,7 @@ inline SVGStyleElement::SVGStyleElement(const QualifiedName& tagName, Document*
SVGStyleElement::~SVGStyleElement()
{
- if (m_sheet)
- m_sheet->clearOwnerNode();
+ StyleElement::clearDocumentData(document(), this);
}
PassRefPtr<SVGStyleElement> SVGStyleElement::create(const QualifiedName& tagName, Document* document, bool createdByParser)
diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.cpp b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.cpp
index 4021b4f..35f0401 100644
--- a/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.cpp
@@ -28,6 +28,7 @@
#include "Frame.h"
#include "RenderObject.h"
#include "RenderSVGResource.h"
+#include "RenderSVGText.h"
#include "SVGDocumentExtensions.h"
#include "SVGNames.h"
#include "SVGTextQuery.h"
@@ -292,6 +293,17 @@ SVGTextContentElement* SVGTextContentElement::elementFromRenderer(RenderObject*
return static_cast<SVGTextContentElement*>(node);
}
+void SVGTextContentElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
+{
+ SVGStyledElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
+
+ if (changedByParser || !renderer())
+ return;
+
+ if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(renderer()))
+ textRenderer->setNeedsPositioningValuesUpdate();
+}
+
}
#endif // ENABLE(SVG)
diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.h b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.h
index 94bba70..222a06d 100644
--- a/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.h
+++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.h
@@ -71,6 +71,7 @@ protected:
void fillPassedAttributeToPropertyTypeMap(AttributeToPropertyTypeMap&);
virtual bool selfHasRelativeLengths() const;
+ virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
private:
virtual bool isTextContent() const { return true; }
diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.cpp b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.cpp
index cd714c3..ebd4789 100644
--- a/src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.cpp
@@ -75,30 +75,6 @@ void SVGTextPositioningElement::parseMappedAttribute(Attribute* attr)
SVGTextContentElement::parseMappedAttribute(attr);
}
-static inline void updatePositioningValuesInRenderer(RenderObject* renderer)
-{
- RenderSVGText* textRenderer = 0;
-
- if (renderer->isSVGText())
- textRenderer = toRenderSVGText(renderer);
- else {
- // Locate RenderSVGText parent renderer.
- RenderObject* parent = renderer->parent();
- while (parent && !parent->isSVGText())
- parent = parent->parent();
-
- if (parent) {
- ASSERT(parent->isSVGText());
- textRenderer = toRenderSVGText(parent);
- }
- }
-
- if (!textRenderer)
- return;
-
- textRenderer->setNeedsPositioningValuesUpdate();
-}
-
void SVGTextPositioningElement::svgAttributeChanged(const QualifiedName& attrName)
{
SVGTextContentElement::svgAttributeChanged(attrName);
@@ -116,23 +92,13 @@ void SVGTextPositioningElement::svgAttributeChanged(const QualifiedName& attrNam
return;
if (updateRelativeLengths || attrName == SVGNames::rotateAttr) {
- updatePositioningValuesInRenderer(renderer);
+ if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(renderer))
+ textRenderer->setNeedsPositioningValuesUpdate();
RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer);
return;
}
}
-void SVGTextPositioningElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
-{
- SVGTextContentElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
-
- if (changedByParser)
- return;
-
- if (RenderObject* object = renderer())
- updatePositioningValuesInRenderer(object);
-}
-
void SVGTextPositioningElement::synchronizeProperty(const QualifiedName& attrName)
{
SVGTextContentElement::synchronizeProperty(attrName);
diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.h b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.h
index 5e6dadc..aa8792f 100644
--- a/src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.h
+++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.h
@@ -36,7 +36,6 @@ protected:
SVGTextPositioningElement(const QualifiedName&, Document*);
virtual void parseMappedAttribute(Attribute*);
- virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
virtual void svgAttributeChanged(const QualifiedName&);
virtual void synchronizeProperty(const QualifiedName&);
void fillPassedAttributeToPropertyTypeMap(AttributeToPropertyTypeMap&);
diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGUseElement.cpp b/src/3rdparty/webkit/Source/WebCore/svg/SVGUseElement.cpp
index cea8f0d..d8f9674 100644
--- a/src/3rdparty/webkit/Source/WebCore/svg/SVGUseElement.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGUseElement.cpp
@@ -644,6 +644,7 @@ void SVGUseElement::detachInstance()
if (!m_targetElementInstance)
return;
m_targetElementInstance->clearUseElements();
+ m_targetElementInstance->clearChildren();
m_targetElementInstance = 0;
}
diff --git a/src/3rdparty/webkit/Source/WebCore/testing/Internals.cpp b/src/3rdparty/webkit/Source/WebCore/testing/Internals.cpp
new file mode 100644
index 0000000..caa1274
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebCore/testing/Internals.cpp
@@ -0,0 +1,97 @@
+/*
+ * 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 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 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 "Internals.h"
+
+#include "Document.h"
+#include "ExceptionCode.h"
+#include "Settings.h"
+
+namespace WebCore {
+
+const char* Internals::internalsId = "internals";
+
+PassRefPtr<Internals> Internals::create()
+{
+ return adoptRef(new Internals);
+}
+
+Internals::~Internals()
+{
+}
+
+Internals::Internals()
+ : passwordEchoDurationInSecondsBackedUp(false)
+ , passwordEchoEnabledBackedUp(false)
+{
+}
+
+void Internals::setPasswordEchoEnabled(Document* document, bool enabled, ExceptionCode& ec)
+{
+ if (!document || !document->settings()) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ if (!passwordEchoEnabledBackedUp) {
+ passwordEchoEnabledBackup = document->settings()->passwordEchoEnabled();
+ passwordEchoEnabledBackedUp = true;
+ }
+ document->settings()->setPasswordEchoEnabled(enabled);
+}
+
+void Internals::setPasswordEchoDurationInSeconds(Document* document, double durationInSeconds, ExceptionCode& ec)
+{
+ if (!document || !document->settings()) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ if (!passwordEchoDurationInSecondsBackedUp) {
+ passwordEchoDurationInSecondsBackup = document->settings()->passwordEchoDurationInSeconds();
+ passwordEchoDurationInSecondsBackedUp = true;
+ }
+ document->settings()->setPasswordEchoDurationInSeconds(durationInSeconds);
+}
+
+void Internals::reset(Document* document)
+{
+ if (!document || !document->settings())
+ return;
+
+ if (passwordEchoDurationInSecondsBackedUp) {
+ document->settings()->setPasswordEchoDurationInSeconds(passwordEchoDurationInSecondsBackup);
+ passwordEchoDurationInSecondsBackedUp = false;
+ }
+
+ if (passwordEchoEnabledBackedUp) {
+ document->settings()->setPasswordEchoEnabled(passwordEchoEnabledBackup);
+ passwordEchoEnabledBackedUp = false;
+ }
+}
+
+}
+
diff --git a/src/3rdparty/webkit/Source/WebCore/testing/Internals.h b/src/3rdparty/webkit/Source/WebCore/testing/Internals.h
new file mode 100644
index 0000000..a56240a
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebCore/testing/Internals.h
@@ -0,0 +1,60 @@
+/*
+ * 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 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 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.
+ */
+
+#ifndef Internals_h
+#define Internals_h
+
+#include "ExceptionCode.h"
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
+
+namespace WebCore {
+
+class Document;
+
+class Internals : public RefCounted<Internals> {
+public:
+ static PassRefPtr<Internals> create();
+ virtual ~Internals();
+
+ void reset(Document*);
+
+ void setPasswordEchoEnabled(Document*, bool enabled, ExceptionCode&);
+ void setPasswordEchoDurationInSeconds(Document*, double durationInSeconds, ExceptionCode&);
+
+ static const char* internalsId;
+
+private:
+ Internals();
+
+ double passwordEchoDurationInSecondsBackup;
+ bool passwordEchoEnabledBackup : 1;
+ bool passwordEchoDurationInSecondsBackedUp : 1;
+ bool passwordEchoEnabledBackedUp : 1;
+};
+
+} // namespace WebCore
+
+#endif
diff --git a/src/3rdparty/webkit/Source/WebCore/testing/Internals.idl b/src/3rdparty/webkit/Source/WebCore/testing/Internals.idl
new file mode 100644
index 0000000..e647c9c
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebCore/testing/Internals.idl
@@ -0,0 +1,31 @@
+/*
+ * 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 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 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.
+ */
+
+module window {
+ interface [OmitConstructor] Internals {
+ void setPasswordEchoEnabled(in Document document, in boolean enabled) raises(DOMException);
+ void setPasswordEchoDurationInSeconds(in Document document, in double durationInSeconds) raises(DOMException);
+ };
+}
diff --git a/src/3rdparty/webkit/Source/WebCore/testing/js/WebCoreTestSupport.cpp b/src/3rdparty/webkit/Source/WebCore/testing/js/WebCoreTestSupport.cpp
new file mode 100644
index 0000000..8a795bf
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebCore/testing/js/WebCoreTestSupport.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 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 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 "WebCoreTestSupport.h"
+
+#include "Internals.h"
+#include "JSDOMGlobalObject.h"
+#include "JSDocument.h"
+#include "JSInternals.h"
+#include <JavaScriptCore/APICast.h>
+#include <interpreter/CallFrame.h>
+
+using namespace JSC;
+using namespace WebCore;
+
+namespace WebCoreTestSupport {
+
+void injectInternalsObject(JSContextRef context)
+{
+ JSLock lock(SilenceAssertionsOnly);
+ ExecState* exec = toJS(context);
+ JSDOMGlobalObject* globalObject = static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject());
+ globalObject->putDirect(exec->globalData(), Identifier(exec, Internals::internalsId), toJS(exec, globalObject, Internals::create()));
+}
+
+void resetInternalsObject(JSContextRef context)
+{
+ JSLock lock(SilenceAssertionsOnly);
+ ExecState* exec = toJS(context);
+ JSDOMGlobalObject* globalObject = static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject());
+ Internals * internals = toInternals(globalObject->getDirect(exec->globalData(), Identifier(exec, Internals::internalsId)));
+ if (internals) {
+ ScriptExecutionContext* scriptContext = globalObject->scriptExecutionContext();
+ if (scriptContext->isDocument())
+ internals->reset(static_cast<Document*>(scriptContext));
+ }
+}
+
+}
diff --git a/src/3rdparty/webkit/Source/WebCore/testing/js/WebCoreTestSupport.h b/src/3rdparty/webkit/Source/WebCore/testing/js/WebCoreTestSupport.h
new file mode 100644
index 0000000..bfd8a8b
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebCore/testing/js/WebCoreTestSupport.h
@@ -0,0 +1,38 @@
+/*
+ * 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 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 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.
+ */
+
+#ifndef WebCoreTestSupport_h
+#define WebCoreTestSupport_h
+
+typedef const struct OpaqueJSContext* JSContextRef;
+
+namespace WebCoreTestSupport {
+
+void injectInternalsObject(JSContextRef);
+void resetInternalsObject(JSContextRef);
+
+} // namespace WebCore
+
+#endif
diff --git a/src/3rdparty/webkit/Source/WebCore/testing/v8/WebCoreTestSupport.cpp b/src/3rdparty/webkit/Source/WebCore/testing/v8/WebCoreTestSupport.cpp
new file mode 100644
index 0000000..1f2c2e5
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebCore/testing/v8/WebCoreTestSupport.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 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 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 "WebCoreTestSupport.h"
+
+#include "Document.h"
+#include "Internals.h"
+#include "ScriptExecutionContext.h"
+#include "V8Internals.h"
+
+#include <v8.h>
+
+using namespace WebCore;
+
+namespace WebCoreTestSupport {
+
+void injectInternalsObject(v8::Local<v8::Context> context)
+{
+ v8::Context::Scope contextScope(context);
+ v8::HandleScope scope;
+
+ context->Global()->Set(v8::String::New(Internals::internalsId), toV8(Internals::create()));
+}
+
+void resetInternalsObject(v8::Local<v8::Context> context)
+{
+ v8::Context::Scope contextScope(context);
+ v8::HandleScope scope;
+
+ v8::Handle<v8::Object> object = v8::Handle<v8::Object>::Cast(context->Global()->Get(v8::String::New(Internals::internalsId)));
+ Internals * internals = V8Internals::toNative(object);
+ if (internals) {
+ ScriptExecutionContext* scriptContext = getScriptExecutionContext();
+ if (scriptContext->isDocument())
+ internals->reset(static_cast<Document*>(scriptContext));
+ }
+}
+
+}
diff --git a/src/3rdparty/webkit/Source/WebCore/testing/v8/WebCoreTestSupport.h b/src/3rdparty/webkit/Source/WebCore/testing/v8/WebCoreTestSupport.h
new file mode 100644
index 0000000..fa49c60
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebCore/testing/v8/WebCoreTestSupport.h
@@ -0,0 +1,41 @@
+/*
+ * 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 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 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.
+ */
+
+#ifndef WebCoreTestSupport_h
+#define WebCoreTestSupport_h
+
+namespace v8 {
+class Context;
+template <class T> class Local;
+}
+
+namespace WebCoreTestSupport {
+
+void injectInternalsObject(v8::Local<v8::Context>);
+void resetInternalsObject(v8::Local<v8::Context>);
+
+} // namespace WebCore
+
+#endif
diff --git a/src/3rdparty/webkit/Source/WebCore/xml/XPathFunctions.cpp b/src/3rdparty/webkit/Source/WebCore/xml/XPathFunctions.cpp
index d343a59..1807172 100644
--- a/src/3rdparty/webkit/Source/WebCore/xml/XPathFunctions.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/xml/XPathFunctions.cpp
@@ -39,6 +39,12 @@
#include "XPathValue.h"
#include <wtf/MathExtras.h>
+#if COMPILER(WINSCW)
+#define BOOL_TO_VALUE_CAST (unsigned long)
+#else
+#define BOOL_TO_VALUE_CAST
+#endif
+
namespace WebCore {
namespace XPath {
@@ -453,9 +459,9 @@ Value FunStartsWith::evaluate() const
String s2 = arg(1)->evaluate().toString();
if (s2.isEmpty())
- return true;
+ return BOOL_TO_VALUE_CAST true;
- return s1.startsWith(s2);
+ return BOOL_TO_VALUE_CAST (s1.startsWith(s2));
}
Value FunContains::evaluate() const
@@ -463,10 +469,10 @@ Value FunContains::evaluate() const
String s1 = arg(0)->evaluate().toString();
String s2 = arg(1)->evaluate().toString();
- if (s2.isEmpty())
- return true;
+ if (s2.isEmpty())
+ return BOOL_TO_VALUE_CAST true;
- return s1.contains(s2) != 0;
+ return BOOL_TO_VALUE_CAST (s1.contains(s2) != 0);
}
Value FunSubstringBefore::evaluate() const
@@ -571,17 +577,17 @@ Value FunTranslate::evaluate() const
Value FunBoolean::evaluate() const
{
- return arg(0)->evaluate().toBoolean();
+ return BOOL_TO_VALUE_CAST (arg(0)->evaluate().toBoolean());
}
Value FunNot::evaluate() const
{
- return !arg(0)->evaluate().toBoolean();
+ return BOOL_TO_VALUE_CAST (!arg(0)->evaluate().toBoolean());
}
Value FunTrue::evaluate() const
{
- return true;
+ return BOOL_TO_VALUE_CAST true;
}
Value FunLang::evaluate() const
@@ -600,12 +606,12 @@ Value FunLang::evaluate() const
}
if (!languageAttribute)
- return false;
+ return BOOL_TO_VALUE_CAST false;
String langValue = languageAttribute->value();
while (true) {
if (equalIgnoringCase(langValue, lang))
- return true;
+ return BOOL_TO_VALUE_CAST true;
// Remove suffixes one by one.
size_t index = langValue.reverseFind('-');
@@ -614,12 +620,12 @@ Value FunLang::evaluate() const
langValue = langValue.left(index);
}
- return false;
+ return BOOL_TO_VALUE_CAST false;
}
Value FunFalse::evaluate() const
{
- return false;
+ return BOOL_TO_VALUE_CAST false;
}
Value FunNumber::evaluate() const
diff --git a/src/3rdparty/webkit/Source/WebCore/xml/XPathPredicate.cpp b/src/3rdparty/webkit/Source/WebCore/xml/XPathPredicate.cpp
index 2a6482f..d70d309 100644
--- a/src/3rdparty/webkit/Source/WebCore/xml/XPathPredicate.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/xml/XPathPredicate.cpp
@@ -38,6 +38,12 @@
#include <math.h>
#include <wtf/MathExtras.h>
+#if COMPILER(WINSCW)
+#define BOOL_TO_VALUE_CAST (unsigned long)
+#else
+#define BOOL_TO_VALUE_CAST
+#endif
+
namespace WebCore {
namespace XPath {
@@ -142,7 +148,7 @@ bool EqTestOp::compare(const Value& lhs, const Value& rhs) const
// If one object to be compared is a node-set and the other is a boolean, then the comparison will be true
// if and only if the result of performing the comparison on the boolean and on the result of converting
// the node-set to a boolean using the boolean function is true.
- return compare(lhs.toBoolean(), rhs);
+ return compare(BOOL_TO_VALUE_CAST (lhs.toBoolean()), rhs);
}
ASSERT(0);
}
@@ -161,7 +167,7 @@ bool EqTestOp::compare(const Value& lhs, const Value& rhs) const
return false;
}
if (lhs.isBoolean())
- return compare(lhs, rhs.toBoolean());
+ return compare(lhs, BOOL_TO_VALUE_CAST (rhs.toBoolean()));
ASSERT(0);
}
@@ -198,7 +204,7 @@ Value EqTestOp::evaluate() const
Value lhs(subExpr(0)->evaluate());
Value rhs(subExpr(1)->evaluate());
- return compare(lhs, rhs);
+ return BOOL_TO_VALUE_CAST compare(lhs, rhs);
}
LogicalOp::LogicalOp(Opcode opcode, Expression* lhs, Expression* rhs)
@@ -224,9 +230,9 @@ Value LogicalOp::evaluate() const
// dictates that we must do short-circuit evaluation
bool lhsBool = lhs.toBoolean();
if (lhsBool == shortCircuitOn())
- return lhsBool;
+ return BOOL_TO_VALUE_CAST lhsBool;
- return subExpr(1)->evaluate().toBoolean();
+ return BOOL_TO_VALUE_CAST (subExpr(1)->evaluate().toBoolean());
}
Value Union::evaluate() const
diff --git a/src/3rdparty/webkit/Source/WebCore/xml/XPathResult.cpp b/src/3rdparty/webkit/Source/WebCore/xml/XPathResult.cpp
index 1dcde2e..7377509 100644
--- a/src/3rdparty/webkit/Source/WebCore/xml/XPathResult.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/xml/XPathResult.cpp
@@ -35,6 +35,12 @@
#include "XPathEvaluator.h"
#include "XPathException.h"
+#if COMPILER(WINSCW)
+#define BOOL_TO_VALUE_CAST (unsigned long)
+#else
+#define BOOL_TO_VALUE_CAST
+#endif
+
namespace WebCore {
using namespace XPath;
@@ -84,7 +90,7 @@ void XPathResult::convertTo(unsigned short type, ExceptionCode& ec)
break;
case BOOLEAN_TYPE:
m_resultType = type;
- m_value = m_value.toBoolean();
+ m_value = BOOL_TO_VALUE_CAST (m_value.toBoolean());
break;
case UNORDERED_NODE_ITERATOR_TYPE:
case UNORDERED_NODE_SNAPSHOT_TYPE:
diff --git a/src/3rdparty/webkit/Source/WebKit.pri b/src/3rdparty/webkit/Source/WebKit.pri
index 309357c..be1c7b7 100644
--- a/src/3rdparty/webkit/Source/WebKit.pri
+++ b/src/3rdparty/webkit/Source/WebKit.pri
@@ -2,6 +2,9 @@
contains(QT_CONFIG, qpa)|contains(QT_CONFIG, embedded): CONFIG += embedded
+contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
+unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions
+
# Detect that we are building as a standalone package by the presence of
# either the generated files directory or as part of the Qt package through
# QTDIR_build
@@ -71,6 +74,7 @@ CONFIG(release, debug|release) {
INCLUDEPATH += \
$$PWD \
+ $$PWD/../include \
$$OUTPUT_DIR/include/QtWebKit \
$$OUTPUT_DIR/include \
$$QT.script.includes
@@ -157,6 +161,7 @@ disable_uitools: DEFINES *= QT_NO_UITOOLS
# Disable a few warnings on Windows. The warnings are also
# disabled in WebKitLibraries/win/tools/vsprops/common.vsprops
win32-msvc*|wince*: QMAKE_CXXFLAGS += -wd4291 -wd4344 -wd4396 -wd4503 -wd4800 -wd4819 -wd4996
+win32-icc: QMAKE_CXXFLAGS += -wd873
CONFIG(qt_minimal) {
DEFINES *= QT_NO_ANIMATION
diff --git a/src/3rdparty/webkit/Source/WebKit/ChangeLog b/src/3rdparty/webkit/Source/WebKit/ChangeLog
index ac05a54..20f61f5 100644
--- a/src/3rdparty/webkit/Source/WebKit/ChangeLog
+++ b/src/3rdparty/webkit/Source/WebKit/ChangeLog
@@ -1,3 +1,29 @@
+2011-06-01 Jer Noble <jer.noble@apple.com>
+
+ Reviewed by Eric Carlson.
+
+ Move Full Screen Controllers into WebCore.
+
+ Remove dependency on QTKit from wekitExitFullscreen()
+ https://bugs.webkit.org/show_bug.cgi?id=61843
+
+ WebVideoFullscreenController, WebVideoFullscreenHUDController, and WebWindowAnimation
+ have been moved into WebCore.
+
+ * WebKit.xcodeproj/project.pbxproj:
+
+2011-06-30 Leandro Pereira <leandro@profusion.mobi>
+
+ Reviewed by Simon Hausmann.
+
+ generate-webkitversion.pl should not "use Switch"
+ https://bugs.webkit.org/show_bug.cgi?id=63628
+
+ Switch got deprecated on recent Perl versions and the script wasn't
+ using the switch statement.
+
+ * scripts/generate-webkitversion.pl: Remove "use Switch;" line.
+
2011-04-18 Timothy Hatcher <timothy@apple.com>
Make update-webkit-localizable-strings put WebKit/win strings in WebCore
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebframe.cpp b/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebframe.cpp
index 026a7df..5ea7059 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebframe.cpp
+++ b/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebframe.cpp
@@ -751,8 +751,10 @@ QMultiMap<QString, QString> QWebFrame::metaData() const
static inline void clearCoreFrame(WebCore::Frame* frame)
{
- frame->loader()->activeDocumentLoader()->writer()->begin();
- frame->loader()->activeDocumentLoader()->writer()->end();
+ WebCore::DocumentLoader* documentLoader = frame->loader()->activeDocumentLoader();
+ Q_ASSERT(documentLoader);
+ documentLoader->writer()->begin();
+ documentLoader->writer()->end();
}
static inline bool isCoreFrameClear(WebCore::Frame* frame)
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebsettings.cpp b/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebsettings.cpp
index 3606764..9123ede 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebsettings.cpp
+++ b/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebsettings.cpp
@@ -273,6 +273,11 @@ void QWebSettingsPrivate::apply()
settings->setNeedsSiteSpecificQuirks(value);
settings->setUsesPageCache(WebCore::pageCache()->capacity());
+
+#if ENABLE(PASSWORD_ECHO)
+ settings->setPasswordEchoEnabled(true);
+ settings->setPasswordEchoDurationInSeconds(1);
+#endif
} else {
QList<QWebSettingsPrivate*> settings = *::allSettings();
for (int i = 0; i < settings.count(); ++i)
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebview.cpp b/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebview.cpp
index f4b23f3..76b927b 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebview.cpp
+++ b/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebview.cpp
@@ -372,7 +372,7 @@ void QWebViewPrivate::detachCurrentPage()
Makes \a page the new web page of the web view.
The parent QObject of the provided page remains the owner
- of the object. If the current document is a child of the web
+ of the object. If the current page is a child of the web
view, it will be deleted.
\sa page()
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog b/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog
index d702142..0bca4b2 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog
+++ b/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog
@@ -1,3 +1,306 @@
+2011-08-25 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org>
+
+ Unreviewed QtWebKit.pro fix for when building inside Qt
+
+ Patch by Simo Fält <simo.falt@nokia.com>
+
+ The QtWebKit version was being overwritten by a global Qt version when
+ QtWebKit was built inside Qt. Fixed by moving the version
+ definition after the inclusion of qbase.pri.
+
+ * QtWebKit.pro:
+
+2011-08-18 Chang Shu <cshu@webkit.org>
+
+ Add support of setPasswordEchoEnabled and setPasswordEchoDuration for password echo feature
+ https://bugs.webkit.org/show_bug.cgi?id=66052
+
+ Reviewed by Alexey Proskuryakov.
+
+ Enable password echo under the build flag.
+
+ * Api/qwebsettings.cpp:
+ (QWebSettingsPrivate::apply):
+
+2011-08-16 Chang Shu <cshu@webkit.org>
+
+ Support reset in WebCore::Internals
+ https://bugs.webkit.org/show_bug.cgi?id=66307
+
+ Reviewed by Dimitri Glazkov.
+
+ Added framework code in WebKit.
+
+ * WebCoreSupport/DumpRenderTreeSupportQt.cpp:
+ (DumpRenderTreeSupportQt::resetInternalsObject):
+ * WebCoreSupport/DumpRenderTreeSupportQt.h:
+
+2011-06-09 Robert Hogan <robert@webkit.org>
+
+ Reviewed by Andreas Kling.
+
+ Teach Qt about window.internals
+ https://bugs.webkit.org/show_bug.cgi?id=61074
+
+ * WebCoreSupport/DumpRenderTreeSupportQt.cpp:
+ (DumpRenderTreeSupportQt::injectInternalsObject):
+ * WebCoreSupport/DumpRenderTreeSupportQt.h:
+
+2011-08-23 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Fix build on Lion
+
+ https://bugs.webkit.org/show_bug.cgi?id=66770
+
+ Reviewed by Andreas Kling.
+
+ We were mistakenly picking up mac/WebCoreSystemInterface.h instead of
+ the Qt one, and building on Lion revealed this when a typedef for
+ IOSurfaceRef was wrapped in PLATFORM(MAC).
+
+ For now we fix this by including WebCoreSystemInterface using
+ brackets, so that we'll pick up the right file based on the
+ include paths. This also means exposing a few missing enums
+ in our own version of the file, so those were added.
+
+ Lasty, we need to link against the right system interface library
+ on Lion.
+
+ * QtWebKit.pro:
+
+2011-08-05 Dawit Alemayehu <adawit@kde.org>
+
+ Reviewed by Andreas Kling.
+
+ Reverted commit r87797, http://trac.webkit.org/changeset/87797, because it
+ causes the regression reported under bug# 63582.
+
+ [Qt] REGRESSION(r87797): Broke KDEWebKit's custom QNAM.
+ https://bugs.webkit.org/show_bug.cgi?id=63582
+
+ * WebCoreSupport/FrameLoaderClientQt.cpp:
+ (WebCore::FrameLoaderClientQt::setFrame):
+
+2011-07-26 Alexis Menard <alexis.menard@openbossa.org>
+
+ Reviewed by Andreas Kling.
+
+ [Qt] Change default backend to use GStreamer on Linux and QuickTime on Mac.
+ https://bugs.webkit.org/show_bug.cgi?id=63472
+
+ Use the flag WTF_USE_QTKIT=1 rather than USE_QTKIT=1 because that flag doesn't
+ exist anymore, it's the default. Ditto for GStreamer.
+
+ * QtWebKit.pro:
+
+2011-06-23 Alexis Menard <alexis.menard@openbossa.org>
+
+ Reviewed by Eric Carlson.
+
+ [Qt] Implement fullscreen support on Mac with the QuickTime backend.
+ https://bugs.webkit.org/show_bug.cgi?id=61728
+
+ Implement fullscreen support for Qt when using the QuickTime backend.
+ We mostly use what is already done for the Mac port.
+
+ * QtWebKit.pro:
+ * WebCoreSupport/ChromeClientQt.cpp:
+ (WebCore::ChromeClientQt::ChromeClientQt):
+ (WebCore::ChromeClientQt::~ChromeClientQt):
+ * WebCoreSupport/ChromeClientQt.h:
+ * WebCoreSupport/FullScreenVideoQt.cpp:
+ (WebCore::FullScreenVideoQt::FullScreenVideoQt):
+ (WebCore::FullScreenVideoQt::~FullScreenVideoQt):
+ (WebCore::FullScreenVideoQt::enterFullScreenForNode):
+ (WebCore::FullScreenVideoQt::exitFullScreenForNode):
+ (WebCore::FullScreenVideoQt::requiresFullScreenForVideoPlayback):
+ (WebCore::FullScreenVideoQt::isValid):
+ * WebCoreSupport/FullScreenVideoQt.h:
+ * WebCoreSupport/QTKitFullScreenVideoHandler.h: Added.
+ * WebCoreSupport/QTKitFullScreenVideoHandler.mm: Added.
+ (QTKitFullScreenVideoHandler::QTKitFullScreenVideoHandler):
+ (QTKitFullScreenVideoHandler::~QTKitFullScreenVideoHandler):
+ (QTKitFullScreenVideoHandler::enterFullScreen):
+ (QTKitFullScreenVideoHandler::exitFullScreen):
+ * WebCoreSupport/WebSystemInterface.mm:
+ (InitWebCoreSystemInterface):
+
+2011-07-27 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
+
+ [Qt] QtWebkit never finishes loading sites when they are loaded after an initial QUrl fails to load.
+ https://bugs.webkit.org/show_bug.cgi?id=61328
+
+ Reviewed by Andreas Kling.
+
+ Change the hooks in FrameLoaderClient we use for emitting signals. Instead of
+ emitting signals in the progress notification functions, we use the
+ dispatchDid{Start,Finish,Fail}* functions. The main reason behind this change is
+ that loading code is prepared to handle load() when inside those functions.
+
+ The crash was being caused by setUrl() (and load()) being called when
+ loadFinished(false) was emitted. The problem here is that when
+ postProgressFinishedNotification the FrameLoader wasn't ready for taking a load()
+ call again, because it was still the ProvisionalLoadState but with the
+ provisionalDocumentLoader already removed.
+
+ To emulate the same behavior that QtWebKit had when using
+ postProgressFinishedNotification, we now keep track of the frame originating the
+ load, and emit the signals when this frame's client is called.
+
+ The patch keeps the existing semantics for QWebPage signals, but we now emit the
+ QWebFrame signals everytime, not only when they are the originating frame for
+ loading.
+
+ * Api/qwebframe.cpp:
+ (clearCoreFrame): Document our assumption that activeDocumentLoader will exist.
+
+ * WebCoreSupport/FrameLoaderClientQt.h: Remove m_loadError, add a boolean to keep
+ track whether the frame is originating the load. Remove the signals from
+ FrameLoaderClientQt since we will emit QWebFrame and QWebPage signals directly.
+
+ * WebCoreSupport/FrameLoaderClientQt.cpp:
+ (WebCore::FrameLoaderClientQt::FrameLoaderClientQt): Initialize m_isOriginatingLoad.
+
+ (WebCore::FrameLoaderClientQt::setFrame): Do not connect QWebFrame and QWebPage
+ signals to our signals for load/finished, signal emission will be done manually.
+
+ (WebCore::FrameLoaderClientQt::dispatchDidStartProvisionalLoad): Emit
+ loadStarted() signal and make the first notification of estimation change, that
+ Qt API tests expect to exist and notify 10%.
+
+ (WebCore::FrameLoaderClientQt::dispatchDidFinishLoad): Remove reference to
+ m_loadError and emit loadFinished() signal.
+
+ (WebCore::FrameLoaderClientQt::postProgressStartedNotification): Remove signal
+ emission and mark the originating load as true, since only the originating frame
+ gets this call in its client.
+
+ (WebCore::FrameLoaderClientQt::postProgressFinishedNotification): Remove signal
+ emission.
+
+ (WebCore::FrameLoaderClientQt::callErrorPageExtension): Return whether the call
+ was successful or not. This wasn't necessary before because a successful call for
+ error page would lead to a load(), that cleared the m_loadError.
+ (WebCore::FrameLoaderClientQt::dispatchDidFailProvisionalLoad): Remove reference
+ to m_loadError and emit finished signal indicating error if ErrorPage extension
+ doesn't handle it.
+ (WebCore::FrameLoaderClientQt::dispatchDidFailLoad): Ditto.
+
+ (WebCore::FrameLoaderClientQt::emitLoadStarted): Emit the loadStarted() signal
+ for the QWebFrame, and if the originating load also do for the QWebPage.
+
+ (WebCore::FrameLoaderClientQt::emitLoadFinished): Same as before but for
+ loadFinished(). Take care to reset the originating load flag before the signals
+ are emitted, since they might want to set it back again.
+
+ * tests/qwebframe/tst_qwebframe.cpp:
+ (URLSetter::URLSetter): Object that sets the url using either load() or setUrl()
+ when a certain signal is emitted in the frame.
+
+ (URLSetter::execute):
+ (tst_QWebFrame::loadInSignalHandlers_data):
+ (tst_QWebFrame::loadInSignalHandlers): New test inspired by the bug test case. This test
+ crashes without this patch applied.
+
+2011-07-25 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
+
+ [Qt] Add more tests to cover the behavior of loadFinished() signal
+ https://bugs.webkit.org/show_bug.cgi?id=63490
+
+ Reviewed by Benjamin Poulain.
+
+ * tests/qwebframe/tst_qwebframe.cpp:
+ (FakeReply::FakeReply):
+ (FakeNetworkManager::createRequest): Add a fake reply that gives 404 error code.
+
+ (tst_QWebFrame::loadFinishedAfterNotFoundError): Verify that we get loadFinished(false)
+ after a 404 error without contents.
+
+ * tests/qwebpage/tst_qwebpage.cpp:
+ (tst_QWebPage::errorPageExtensionLoadFinished): Verify if the argument of loadFinished()
+ is true when we use error page extension to produce our own error pages.
+
+2011-07-12 Hui Huang <Hui.2.Huang@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt] Fix compiling errors with QtWebkit 2.2 WINSCW build.
+ https://bugs.webkit.org/show_bug.cgi?id=64391
+
+ (QtWebKit-2.2 only, patch not in webkit trunk)
+
+ * symbian/bwins/QtWebKitu.def:
+
+2011-07-19 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
+
+ [Qt] Improve documentation of QWebView::setPage()
+ https://bugs.webkit.org/show_bug.cgi?id=64827
+
+ Reviewed by Noam Rosenthal.
+
+ * Api/qwebview.cpp: Use the word 'page' to refer to a QWebPage instead of 'document'.
+
+2011-05-16 Robert Hogan <robert@webkit.org>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ plugins/invalidate_rect.html fails on linux ports
+
+ Add ChromeClientQt::allowsAcceleratedCompositing().
+
+ https://bugs.webkit.org/show_bug.cgi?id=54051
+
+ * WebCoreSupport/ChromeClientQt.cpp:
+ (WebCore::ChromeClientQt::allowsAcceleratedCompositing):
+ * WebCoreSupport/ChromeClientQt.h:
+
+2011-07-01 Jade Han <jade.han@nokia.com>
+
+ [Qt][Symbian] Update .def file for Symbian to build Tools
+ https://bugs.webkit.org/show_bug.cgi?id=61200
+
+ Reviewed by Laszlo Gombos.
+
+ Add newly introduced symbols to fix building the Tools directory for Symbian.
+
+ * symbian/eabi/QtWebKitu.def:
+
+2011-06-30 Rafael Brandao <rafael.lobo@openbossa.org>
+
+ Reviewed by Benjamin Poulain.
+
+ [Qt] Fix tst_QWebFrame::renderGeometry() API test
+ https://bugs.webkit.org/show_bug.cgi?id=63236
+
+ This test required a security origin with granted permission to request local resources.
+ By default, only local files can load local resources. So modified baseUrl to be a local file.
+
+ * tests/qwebframe/tst_qwebframe.cpp:
+ (tst_QWebFrame::renderGeometry):
+
+2011-07-01 Jade Han <jade.han@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt][Symbian] Update .def file for Symbian
+ https://bugs.webkit.org/show_bug.cgi?id=61200
+
+ Add newly introduced symbols to fix the Symbian build.
+
+ * symbian/eabi/QtWebKitu.def:
+
+2011-06-30 Fabrizio Machado <fabrizio.machado@nokia.com>
+
+ Reviewed by Benjamin Poulain.
+
+ [Qt] QML Webview causes performance drops
+ https://bugs.webkit.org/show_bug.cgi?id=57554
+
+ Remove tiledBackingStoreEnabled from QML WebView.
+
+ * declarative/qdeclarativewebview.cpp:
+ (QDeclarativeWebView::setPage):
+
2011-06-29 Alexis Menard <alexis.menard@openbossa.org>
Reviewed by Benjamin Poulain.
@@ -17,23 +320,6 @@
Rubber-stamped by Andreas Kling.
- [Qt] Fix tst_QWebFrame::setHtmlWithResource() API test
- https://bugs.webkit.org/show_bug.cgi?id=63235
-
- [Qt] Fix tst_QWebFrame::renderGeometry() API test
- https://bugs.webkit.org/show_bug.cgi?id=63236
-
- [Qt] Fix tst_QWebFrame::setUrlWithPendingLoads() API test
- https://bugs.webkit.org/show_bug.cgi?id=63237
-
- * tests/qwebframe/tst_qwebframe.cpp: Mark failing test cases as expected fails until real fix.
- (tst_QWebFrame::setHtmlWithResource):
- (tst_QWebFrame::renderGeometry):
-
-2011-06-23 Csaba Osztrogonác <ossy@webkit.org>
-
- Rubber-stamped by Andreas Kling.
-
[Qt] Fix tst_QWebPage::showModalDialog() API test
https://bugs.webkit.org/show_bug.cgi?id=63244
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro b/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro
index e07f699..41b0d39 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro
+++ b/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro
@@ -42,10 +42,6 @@ win32*:!win32-msvc* {
contains(DEFINES, ENABLE_WEBGL=1)|contains(CONFIG, texmap): LIBS += $$QMAKE_LIBS_OPENGL
}
-moduleFile=$$PWD/qt_webkit_version.pri
-isEmpty(QT_BUILD_TREE):include($$moduleFile)
-VERSION = $${QT_WEBKIT_MAJOR_VERSION}.$${QT_WEBKIT_MINOR_VERSION}.$${QT_WEBKIT_PATCH_VERSION}
-
include_webinspector: RESOURCES += $$SOURCE_DIR/WebCore/inspector/front-end/WebKit.qrc $$WC_GENERATED_SOURCES_DIR/InspectorBackendStub.qrc
# Extract sources to build from the generator definitions
@@ -87,6 +83,9 @@ CONFIG(QTDIR_build) {
symbian: TARGET =$$TARGET$${QT_LIBINFIX}
}
+moduleFile=$$PWD/qt_webkit_version.pri
+isEmpty(QT_BUILD_TREE):include($$moduleFile)
+VERSION = $${QT_WEBKIT_MAJOR_VERSION}.$${QT_WEBKIT_MINOR_VERSION}.$${QT_WEBKIT_PATCH_VERSION}
symbian {
TARGET.EPOCALLOWDLLDATA=1
@@ -218,31 +217,39 @@ contains(DEFINES, ENABLE_NETSCAPE_PLUGIN_API=1) {
}
contains(DEFINES, ENABLE_VIDEO=1) {
- !contains(DEFINES, USE_QTKIT=1):!contains(DEFINES, USE_GSTREAMER=1):contains(MOBILITY_CONFIG, multimedia) {
+ !contains(DEFINES, WTF_USE_QTKIT=1):!contains(DEFINES, WTF_USE_GSTREAMER=1):contains(DEFINES, WTF_USE_QT_MULTIMEDIA=1) {
HEADERS += $$PWD/WebCoreSupport/FullScreenVideoWidget.h
SOURCES += $$PWD/WebCoreSupport/FullScreenVideoWidget.cpp
}
- contains(DEFINES, USE_GSTREAMER=1) | contains(MOBILITY_CONFIG, multimedia) {
+ contains(DEFINES, WTF_USE_QTKIT=1) | contains(DEFINES, WTF_USE_GSTREAMER=1) | contains(DEFINES, WTF_USE_QT_MULTIMEDIA=1) {
HEADERS += $$PWD/WebCoreSupport/FullScreenVideoQt.h
SOURCES += $$PWD/WebCoreSupport/FullScreenVideoQt.cpp
}
- contains(DEFINES, USE_QTKIT=1) {
- INCLUDEPATH += $$SOURCE_DIR/WebCore/platform/qt/
- INCLUDEPATH += $$SOURCE_DIR/../WebKitLibraries/
+ contains(DEFINES, WTF_USE_QTKIT=1) {
+ INCLUDEPATH += $$SOURCE_DIR/WebCore/platform/qt/ \
+ $$SOURCE_DIR/WebCore/platform/mac/ \
+ $$SOURCE_DIR/../WebKitLibraries/
+
DEFINES+=NSGEOMETRY_TYPES_SAME_AS_CGGEOMETRY_TYPES
- HEADERS += $$PWD/WebCoreSupport/WebSystemInterface.h
- SOURCES += $$PWD/WebCoreSupport/WebSystemInterface.mm
+
+ HEADERS += $$PWD/WebCoreSupport/WebSystemInterface.h \
+ $$PWD/WebCoreSupport/QTKitFullScreenVideoHandler.h
+
+ OBJECTIVE_SOURCES += $$PWD/WebCoreSupport/WebSystemInterface.mm \
+ $$PWD/WebCoreSupport/QTKitFullScreenVideoHandler.mm
+
+ LIBS+= -framework Security -framework IOKit
# We can know the Mac OS version by using the Darwin major version
DARWIN_VERSION = $$split(QMAKE_HOST.version, ".")
DARWIN_MAJOR_VERSION = $$first(DARWIN_VERSION)
- equals(DARWIN_MAJOR_VERSION, "10") {
- LIBS+= $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.a -framework Security
- } else {
- equals(DARWIN_MAJOR_VERSION, "9") {
- LIBS+= $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceLeopard.a -framework Security
- }
+ equals(DARWIN_MAJOR_VERSION, "11") {
+ LIBS += $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceLion.a
+ } else:equals(DARWIN_MAJOR_VERSION, "10") {
+ LIBS += $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.a
+ } else:equals(DARWIN_MAJOR_VERSION, "9") {
+ LIBS += $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceLeopard.a
}
}
}
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp
index ea2c826..a199f78 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp
+++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp
@@ -75,7 +75,7 @@
#include <qtooltip.h>
#include <wtf/OwnPtr.h>
-#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA))
+#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA) || USE(QTKIT))
#include "FullScreenVideoQt.h"
#include "HTMLMediaElement.h"
#include "HTMLNames.h"
@@ -92,7 +92,7 @@ bool ChromeClientQt::dumpVisitedLinksCallbacks = false;
ChromeClientQt::ChromeClientQt(QWebPage* webPage)
: m_webPage(webPage)
, m_eventLoop(0)
-#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA))
+#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA) || USE(QTKIT))
, m_fullScreenVideo(0)
#endif
{
@@ -104,7 +104,7 @@ ChromeClientQt::~ChromeClientQt()
if (m_eventLoop)
m_eventLoop->exit();
-#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA))
+#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA) || USE(QTKIT))
delete m_fullScreenVideo;
#endif
}
@@ -129,6 +129,13 @@ FloatRect ChromeClientQt::windowRect()
return platformPageClient()->windowRect();
}
+bool ChromeClientQt::allowsAcceleratedCompositing() const
+{
+ if (!platformPageClient())
+ return false;
+ return platformPageClient()->allowsAcceleratedCompositing();
+}
+
FloatRect ChromeClientQt::pageRect()
{
if (!m_webPage)
@@ -661,7 +668,7 @@ IntRect ChromeClientQt::visibleRectForTiledBackingStore() const
}
#endif
-#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA))
+#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA) || USE(QTKIT))
FullScreenVideoQt* ChromeClientQt::fullScreenVideo()
{
if (!m_fullScreenVideo)
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.h b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.h
index 814a192..f1b7b8e 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.h
+++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.h
@@ -155,6 +155,7 @@ public:
virtual void scheduleCompositingLayerSync();
virtual CompositingTriggerFlags allowedCompositingTriggers() const;
#endif
+ virtual bool allowsAcceleratedCompositing() const;
#if ENABLE(TILED_BACKING_STORE)
virtual IntRect visibleRectForTiledBackingStore() const;
@@ -164,7 +165,7 @@ public:
virtual void needTouchEvents(bool) { }
#endif
-#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA))
+#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA) || USE(QTKIT))
virtual bool supportsFullscreenForNode(const Node*);
virtual void enterFullscreenForNode(Node*);
virtual void exitFullscreenForNode(Node*);
@@ -203,7 +204,7 @@ public:
bool menuBarVisible;
QEventLoop* m_eventLoop;
-#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA))
+#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA) || USE(QTKIT))
FullScreenVideoQt* m_fullScreenVideo;
#endif
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp
index 9d0b4f9..2fc8e84 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp
+++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp
@@ -23,6 +23,9 @@
#include "config.h"
#include "DumpRenderTreeSupportQt.h"
+#if USE(JSC)
+#include "APICast.h"
+#endif
#include "ApplicationCacheStorage.h"
#include "CSSComputedStyleDeclaration.h"
#include "ChromeClientQt.h"
@@ -74,6 +77,7 @@
#include "SVGSMILElement.h"
#endif
#include "TextIterator.h"
+#include "WebCoreTestSupport.h"
#include "WorkerThread.h"
#include <wtf/CurrentTime.h>
@@ -1109,6 +1113,44 @@ void DumpRenderTreeSupportQt::removeShadowRoot(const QWebElement& element)
webElement->removeShadowRoot();
}
+void DumpRenderTreeSupportQt::injectInternalsObject(QWebFrame* frame)
+{
+ WebCore::Frame* coreFrame = QWebFramePrivate::core(frame);
+#if USE(JSC)
+ JSC::JSLock lock(JSC::SilenceAssertionsOnly);
+
+ JSDOMWindow* window = toJSDOMWindow(coreFrame, mainThreadNormalWorld());
+ Q_ASSERT(window);
+
+ JSC::ExecState* exec = window->globalExec();
+ Q_ASSERT(exec);
+
+ JSContextRef context = toRef(exec);
+ WebCoreTestSupport::injectInternalsObject(context);
+#elif USE(V8)
+ WebCoreTestSupport::injectInternalsObject(V8Proxy::mainWorldContext(coreFrame));
+#endif
+}
+
+void DumpRenderTreeSupportQt::resetInternalsObject(QWebFrame* frame)
+{
+ WebCore::Frame* coreFrame = QWebFramePrivate::core(frame);
+#if USE(JSC)
+ JSC::JSLock lock(JSC::SilenceAssertionsOnly);
+
+ JSDOMWindow* window = toJSDOMWindow(coreFrame, mainThreadNormalWorld());
+ Q_ASSERT(window);
+
+ JSC::ExecState* exec = window->globalExec();
+ Q_ASSERT(exec);
+
+ JSContextRef context = toRef(exec);
+ WebCoreTestSupport::resetInternalsObject(context);
+#elif USE(V8)
+ WebCoreTestSupport::resetInternalsObject(V8Proxy::mainWorldContext(coreFrame));
+#endif
+}
+
// Provide a backward compatibility with previously exported private symbols as of QtWebKit 4.6 release
void QWEBKIT_EXPORT qt_resumeActiveDOMObjects(QWebFrame* frame)
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h
index c93942c..7040ea1 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h
+++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h
@@ -218,6 +218,7 @@ public:
static QString layerTreeAsText(QWebFrame*);
static void injectInternalsObject(QWebFrame*);
+ static void resetInternalsObject(QWebFrame*);
};
#endif
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
index 68aecda..8971fc4 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
+++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
@@ -210,7 +210,7 @@ FrameLoaderClientQt::FrameLoaderClientQt()
, m_pluginView(0)
, m_hasSentResponseToPlugin(false)
, m_hasRepresentation(false)
- , m_loadError(ResourceError())
+ , m_isOriginatingLoad(false)
{
}
@@ -229,22 +229,12 @@ void FrameLoaderClientQt::setFrame(QWebFrame* webFrame, Frame* frame)
return;
}
- connect(this, SIGNAL(loadStarted()),
- m_webFrame->page(), SIGNAL(loadStarted()));
- connect(this, SIGNAL(loadStarted()),
- m_webFrame, SIGNAL(loadStarted()));
connect(this, SIGNAL(loadProgress(int)),
m_webFrame->page(), SIGNAL(loadProgress(int)));
- connect(this, SIGNAL(loadFinished(bool)),
- m_webFrame->page(), SIGNAL(loadFinished(bool)));
- // FIXME: The queued connection here is needed because of a problem with QNetworkAccessManager.
- // See http://bugreports.qt.nokia.com/browse/QTBUG-18718
connect(this, SIGNAL(unsupportedContent(QNetworkReply*)),
- m_webFrame->page(), SIGNAL(unsupportedContent(QNetworkReply*)), Qt::QueuedConnection);
+ m_webFrame->page(), SIGNAL(unsupportedContent(QNetworkReply*)));
- connect(this, SIGNAL(loadFinished(bool)),
- m_webFrame, SIGNAL(loadFinished(bool)));
connect(this, SIGNAL(titleChanged(QString)),
m_webFrame, SIGNAL(titleChanged(QString)));
}
@@ -448,8 +438,11 @@ void FrameLoaderClientQt::dispatchDidStartProvisionalLoad()
m_lastRequestedUrl = m_frame->loader()->activeDocumentLoader()->requestURL();
- if (m_webFrame)
- emit m_webFrame->provisionalLoad();
+ if (!m_webFrame)
+ return;
+ emitLoadStarted();
+ postProgressEstimateChangedNotification();
+ emit m_webFrame->provisionalLoad();
}
@@ -526,12 +519,11 @@ void FrameLoaderClientQt::dispatchDidFinishLoad()
if (dumpFrameLoaderCallbacks)
printf("%s - didFinishLoadForFrame\n", qPrintable(drtDescriptionSuitableForTestResult(m_frame)));
- // Clears the previous error.
- m_loadError = ResourceError();
-
if (!m_webFrame)
return;
+
m_webFrame->page()->d->updateNavigationActions();
+ emitLoadFinished(true);
}
@@ -579,12 +571,8 @@ void FrameLoaderClientQt::revertToProvisionalState(DocumentLoader*)
void FrameLoaderClientQt::postProgressStartedNotification()
{
- if (m_webFrame && m_frame->page()) {
- // As a new load have started, clear the previous error.
- m_loadError = ResourceError();
- emit loadStarted();
- postProgressEstimateChangedNotification();
- }
+ if (m_webFrame && m_frame->page())
+ m_isOriginatingLoad = true;
if (m_frame->tree()->parent() || !m_webFrame)
return;
m_webFrame->page()->d->updateNavigationActions();
@@ -611,9 +599,6 @@ void FrameLoaderClientQt::postProgressFinishedNotification()
}
}
}
-
- if (m_webFrame && m_frame->page())
- emit loadFinished(m_loadError.isNull());
}
void FrameLoaderClientQt::setMainFrameDocumentReady(bool)
@@ -1133,38 +1118,39 @@ bool FrameLoaderClientQt::dispatchDidLoadResourceFromMemoryCache(WebCore::Docume
return false;
}
-void FrameLoaderClientQt::callErrorPageExtension(const WebCore::ResourceError& error)
+bool FrameLoaderClientQt::callErrorPageExtension(const WebCore::ResourceError& error)
{
QWebPage* page = m_webFrame->page();
- if (page->supportsExtension(QWebPage::ErrorPageExtension)) {
- QWebPage::ErrorPageExtensionOption option;
-
- if (error.domain() == "QtNetwork")
- option.domain = QWebPage::QtNetwork;
- else if (error.domain() == "HTTP")
- option.domain = QWebPage::Http;
- else if (error.domain() == "WebKit")
- option.domain = QWebPage::WebKit;
- else
- return;
+ if (!page->supportsExtension(QWebPage::ErrorPageExtension))
+ return false;
+
+ QWebPage::ErrorPageExtensionOption option;
+ if (error.domain() == "QtNetwork")
+ option.domain = QWebPage::QtNetwork;
+ else if (error.domain() == "HTTP")
+ option.domain = QWebPage::Http;
+ else if (error.domain() == "WebKit")
+ option.domain = QWebPage::WebKit;
+ else
+ return false;
- option.url = QUrl(error.failingURL());
- option.frame = m_webFrame;
- option.error = error.errorCode();
- option.errorString = error.localizedDescription();
+ option.url = QUrl(error.failingURL());
+ option.frame = m_webFrame;
+ option.error = error.errorCode();
+ option.errorString = error.localizedDescription();
- QWebPage::ErrorPageExtensionReturn output;
- if (!page->extension(QWebPage::ErrorPageExtension, &option, &output))
- return;
+ QWebPage::ErrorPageExtensionReturn output;
+ if (!page->extension(QWebPage::ErrorPageExtension, &option, &output))
+ return false;
- KURL baseUrl(output.baseUrl);
- KURL failingUrl(option.url);
+ KURL baseUrl(output.baseUrl);
+ KURL failingUrl(option.url);
- WebCore::ResourceRequest request(baseUrl);
- WTF::RefPtr<WebCore::SharedBuffer> buffer = WebCore::SharedBuffer::create(output.content.constData(), output.content.length());
- WebCore::SubstituteData substituteData(buffer, output.contentType, output.encoding, failingUrl);
- m_frame->loader()->load(request, substituteData, false);
- }
+ WebCore::ResourceRequest request(baseUrl);
+ WTF::RefPtr<WebCore::SharedBuffer> buffer = WebCore::SharedBuffer::create(output.content.constData(), output.content.length());
+ WebCore::SubstituteData substituteData(buffer, output.contentType, output.encoding, failingUrl);
+ m_frame->loader()->load(request, substituteData, false);
+ return true;
}
void FrameLoaderClientQt::dispatchDidFailProvisionalLoad(const WebCore::ResourceError& error)
@@ -1172,9 +1158,13 @@ void FrameLoaderClientQt::dispatchDidFailProvisionalLoad(const WebCore::Resource
if (dumpFrameLoaderCallbacks)
printf("%s - didFailProvisionalLoadWithError\n", qPrintable(drtDescriptionSuitableForTestResult(m_frame)));
- m_loadError = error;
- if (!error.isNull() && !error.isCancellation())
- callErrorPageExtension(error);
+ if (!error.isNull() && !error.isCancellation()) {
+ if (callErrorPageExtension(error))
+ return;
+ }
+
+ if (m_webFrame)
+ emitLoadFinished(false);
}
void FrameLoaderClientQt::dispatchDidFailLoad(const WebCore::ResourceError& error)
@@ -1182,9 +1172,13 @@ void FrameLoaderClientQt::dispatchDidFailLoad(const WebCore::ResourceError& erro
if (dumpFrameLoaderCallbacks)
printf("%s - didFailLoadWithError\n", qPrintable(drtDescriptionSuitableForTestResult(m_frame)));
- m_loadError = error;
- if (!error.isNull() && !error.isCancellation())
- callErrorPageExtension(error);
+ if (!error.isNull() && !error.isCancellation()) {
+ if (callErrorPageExtension(error))
+ return;
+ }
+
+ if (m_webFrame)
+ emitLoadFinished(false);
}
WebCore::Frame* FrameLoaderClientQt::dispatchCreatePage(const WebCore::NavigationAction&)
@@ -1682,6 +1676,26 @@ PassRefPtr<FrameNetworkingContext> FrameLoaderClientQt::createNetworkingContext(
return FrameNetworkingContextQt::create(m_frame, m_webFrame, !MIMESniffingDisabled, m_webFrame->page()->networkAccessManager());
}
+void FrameLoaderClientQt::emitLoadStarted()
+{
+ QWebPage* webPage = m_webFrame->page();
+ if (m_isOriginatingLoad && webPage)
+ emit webPage->loadStarted();
+ emit m_webFrame->loadStarted();
+}
+
+void FrameLoaderClientQt::emitLoadFinished(bool ok)
+{
+ // Signal handlers can lead to a new load, that will use the member again.
+ const bool wasOriginatingLoad = m_isOriginatingLoad;
+ m_isOriginatingLoad = false;
+
+ QWebPage* webPage = m_webFrame->page();
+ if (wasOriginatingLoad && webPage)
+ emit webPage->loadFinished(ok);
+ emit m_webFrame->loadFinished(ok);
+}
+
}
#include "moc_FrameLoaderClientQt.cpp"
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h
index 6cfd9c1..1be365d 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h
+++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h
@@ -67,11 +67,10 @@ class FrameLoaderClientQt : public QObject, public FrameLoaderClient {
friend class ::QWebFrame;
void callPolicyFunction(FramePolicyFunction function, PolicyAction action);
- void callErrorPageExtension(const ResourceError&);
+ bool callErrorPageExtension(const ResourceError&);
+
signals:
- void loadStarted();
void loadProgress(int d);
- void loadFinished(bool);
void titleChanged(const QString& title);
void unsupportedContent(QNetworkReply*);
@@ -265,6 +264,9 @@ private slots:
void onIconLoadedForPageURL(const QString&);
private:
+ void emitLoadStarted();
+ void emitLoadFinished(bool ok);
+
Frame *m_frame;
QWebFrame *m_webFrame;
ResourceResponse m_response;
@@ -279,7 +281,7 @@ private:
bool m_hasRepresentation;
KURL m_lastRequestedUrl;
- ResourceError m_loadError;
+ bool m_isOriginatingLoad;
};
}
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp
index ef97f3a..b1a6e0f 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp
+++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp
@@ -35,6 +35,10 @@
#include "PlatformVideoWindowPrivate.h"
#endif
+#if USE(QTKIT)
+#include "QTKitFullScreenVideoHandler.h"
+#endif
+
#if USE(QT_MULTIMEDIA)
#include <QGraphicsVideoItem>
#include <QMediaPlayer>
@@ -147,6 +151,10 @@ FullScreenVideoQt::FullScreenVideoQt(ChromeClientQt* chromeClient)
#if USE(GSTREAMER)
m_FullScreenVideoHandlerGStreamer = new GStreamerFullScreenVideoHandler;
#endif
+
+#if USE(QTKIT)
+ m_FullScreenVideoHandlerQTKit = new QTKitFullScreenVideoHandler;
+#endif
}
FullScreenVideoQt::~FullScreenVideoQt()
@@ -157,6 +165,9 @@ FullScreenVideoQt::~FullScreenVideoQt()
#if USE(GSTREAMER)
delete m_FullScreenVideoHandlerGStreamer;
#endif
+#if USE(QTKIT)
+ delete m_FullScreenVideoHandlerQTKit;
+#endif
}
void FullScreenVideoQt::enterFullScreenForNode(Node* node)
@@ -185,6 +196,10 @@ void FullScreenVideoQt::enterFullScreenForNode(Node* node)
m_FullScreenVideoHandlerGStreamer->setVideoElement(m_videoElement);
m_FullScreenVideoHandlerGStreamer->enterFullScreen();
#endif
+
+#if USE(QTKIT)
+ m_FullScreenVideoHandlerQTKit->enterFullScreen(m_videoElement);
+#endif
}
void FullScreenVideoQt::exitFullScreenForNode(Node* node)
@@ -211,6 +226,11 @@ void FullScreenVideoQt::exitFullScreenForNode(Node* node)
#if USE(GSTREAMER)
m_FullScreenVideoHandlerGStreamer->exitFullScreen();
#endif
+
+#if USE(QTKIT)
+ m_FullScreenVideoHandlerQTKit->exitFullScreen();
+#endif
+
}
void FullScreenVideoQt::aboutToClose()
@@ -232,9 +252,6 @@ bool FullScreenVideoQt::requiresFullScreenForVideoPlayback()
{
#if USE(QT_MULTIMEDIA)
return m_FullScreenVideoHandler ? m_FullScreenVideoHandler->requiresFullScreenForVideoPlayback() : false;
-#endif
-#if USE(GSTREAMER)
- return false;
#else
return false;
#endif
@@ -247,6 +264,8 @@ bool FullScreenVideoQt::isValid() const
#endif
#if USE(GSTREAMER)
return m_FullScreenVideoHandlerGStreamer;
+#elif USE(QTKIT)
+ return m_FullScreenVideoHandlerQTKit;
#else
return 0;
#endif
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h
index fda153d..06438ea 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h
+++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h
@@ -38,6 +38,9 @@ class Node;
#if USE(QT_MULTIMEDIA)
class MediaPlayerPrivateQt;
#endif
+#if USE(QTKIT)
+class QTKitFullScreenVideoHandler;
+#endif
// We do not use ENABLE or USE because moc does not expand these macros.
#if defined(WTF_USE_GSTREAMER) && WTF_USE_GSTREAMER
@@ -109,6 +112,9 @@ private:
#if USE(GSTREAMER)
GStreamerFullScreenVideoHandler* m_FullScreenVideoHandlerGStreamer;
#endif
+#if USE(QTKIT)
+ QTKitFullScreenVideoHandler* m_FullScreenVideoHandlerQTKit;
+#endif
};
}
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QTKitFullScreenVideoHandler.h b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QTKitFullScreenVideoHandler.h
new file mode 100644
index 0000000..39af101
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QTKitFullScreenVideoHandler.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef QTKitFullScreenVideoHandler_h
+#define QTKitFullScreenVideoHandler_h
+
+#include <OwnPtr.h>
+
+namespace WebCore {
+
+class HTMLVideoElement;
+
+class QTKitFullScreenVideoHandler {
+ class QTKitFullScreenVideoHandlerPrivate;
+public:
+ QTKitFullScreenVideoHandler();
+ ~QTKitFullScreenVideoHandler();
+ void enterFullScreen(HTMLVideoElement*);
+ void exitFullScreen();
+
+private:
+ OwnPtr<QTKitFullScreenVideoHandlerPrivate> privateData;
+};
+
+}
+
+#endif // QTKitFullScreenVideoHandler_h
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QTKitFullScreenVideoHandler.mm b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QTKitFullScreenVideoHandler.mm
new file mode 100644
index 0000000..5e94442
--- /dev/null
+++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QTKitFullScreenVideoHandler.mm
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "config.h"
+
+#include "QTKitFullScreenVideoHandler.h"
+
+#import <Cocoa/Cocoa.h>
+
+#include "HTMLVideoElement.h"
+#include "WebVideoFullscreenController.h"
+
+using namespace WebCore;
+
+class QTKitFullScreenVideoHandler::QTKitFullScreenVideoHandlerPrivate {
+public :
+ WebVideoFullscreenController* m_FullScreenController;
+};
+
+QTKitFullScreenVideoHandler::QTKitFullScreenVideoHandler()
+ : privateData (adoptPtr(new QTKitFullScreenVideoHandlerPrivate))
+{
+ privateData->m_FullScreenController = nil;
+}
+
+QTKitFullScreenVideoHandler::~QTKitFullScreenVideoHandler()
+{
+ exitFullScreen();
+}
+
+void QTKitFullScreenVideoHandler::enterFullScreen(HTMLVideoElement* videoElement)
+{
+ if (privateData->m_FullScreenController) {
+ // First exit fullscreen for the old mediaElement.
+ exitFullScreen();
+ ASSERT(!privateData->m_FullScreenController);
+ }
+ if (!privateData->m_FullScreenController) {
+ privateData->m_FullScreenController = [[WebVideoFullscreenController alloc] init];
+ [privateData->m_FullScreenController setMediaElement:videoElement];
+ NSScreen* currentScreen = [NSScreen mainScreen];
+ [privateData->m_FullScreenController enterFullscreen:currentScreen];
+ }
+}
+
+void QTKitFullScreenVideoHandler::exitFullScreen()
+{
+ [privateData->m_FullScreenController exitFullscreen];
+ [privateData->m_FullScreenController release];
+ privateData->m_FullScreenController = nil;
+}
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/WebSystemInterface.mm b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/WebSystemInterface.mm
index 7ff2ec8..8354af9 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/WebSystemInterface.mm
+++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/WebSystemInterface.mm
@@ -57,6 +57,10 @@ void InitWebCoreSystemInterface(void)
INIT(QTGetSitesInMediaDownloadCache);
INIT(QTClearMediaDownloadCacheForSite);
INIT(QTClearMediaDownloadCache);
+ INIT(CreateMediaUIBackgroundView);
+ INIT(CreateMediaUIControl);
+ INIT(WindowSetAlpha);
+ INIT(WindowSetScaledFrame);
didInit = true;
}
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/declarative/qdeclarativewebview.cpp b/src/3rdparty/webkit/Source/WebKit/qt/declarative/qdeclarativewebview.cpp
index 6ba1346..22ee579d 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/declarative/qdeclarativewebview.cpp
+++ b/src/3rdparty/webkit/Source/WebKit/qt/declarative/qdeclarativewebview.cpp
@@ -782,7 +782,9 @@ void QDeclarativeWebView::setPage(QWebPage* page)
connect(page->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(windowObjectCleared()));
+#if !defined(Q_OS_SYMBIAN)
page->settings()->setAttribute(QWebSettings::TiledBackingStoreEnabled, true);
+#endif
}
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/symbian/bwins/QtWebKitu.def b/src/3rdparty/webkit/Source/WebKit/qt/symbian/bwins/QtWebKitu.def
index f1a545e..c93213c 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/symbian/bwins/QtWebKitu.def
+++ b/src/3rdparty/webkit/Source/WebKit/qt/symbian/bwins/QtWebKitu.def
@@ -368,7 +368,7 @@ EXPORTS
?qWebKitMinorVersion@@YAHXZ @ 367 NONAME ; int qWebKitMinorVersion(void)
?qWebKitVersion@@YA?AVQString@@XZ @ 368 NONAME ; class QString qWebKitVersion(void)
?qt_drt_clearFrameName@@YAXPAVQWebFrame@@@Z @ 369 NONAME ; void qt_drt_clearFrameName(class QWebFrame *)
- ?qt_drt_counterValueForElementById@@YA?AVQString@@PAVQWebFrame@@ABV1@@Z @ 370 NONAME ; class QString qt_drt_counterValueForElementById(class QWebFrame *, class QString const &)
+ ?qt_drt_counterValueForElementById@@YA?AVQString@@PAVQWebFrame@@ABV1@@Z @ 370 NONAME ABSENT ; class QString qt_drt_counterValueForElementById(class QWebFrame *, class QString const &)
?qt_drt_garbageCollector_collect@@YAXXZ @ 371 NONAME ; void qt_drt_garbageCollector_collect(void)
?qt_drt_garbageCollector_collectOnAlternateThread@@YAX_N@Z @ 372 NONAME ; void qt_drt_garbageCollector_collectOnAlternateThread(bool)
?qt_drt_javaScriptObjectsCount@@YAHXZ @ 373 NONAME ; int qt_drt_javaScriptObjectsCount(void)
@@ -628,21 +628,21 @@ EXPORTS
?inspectorUrl@QWebSettings@@QBE?AVQUrl@@XZ @ 627 NONAME ABSENT ; class QUrl QWebSettings::inspectorUrl(void) const
?isTiledBackingStoreFrozen@QGraphicsWebView@@QBE_NXZ @ 628 NONAME ; bool QGraphicsWebView::isTiledBackingStoreFrozen(void) const
?pageChanged@QWebFrame@@IAEXXZ @ 629 NONAME ; void QWebFrame::pageChanged(void)
- ?qt_drt_enableCaretBrowsing@@YAXPAVQWebPage@@_N@Z @ 630 NONAME ; void qt_drt_enableCaretBrowsing(class QWebPage *, bool)
- ?qt_drt_evaluateScriptInIsolatedWorld@@YAXPAVQWebFrame@@HABVQString@@@Z @ 631 NONAME ; void qt_drt_evaluateScriptInIsolatedWorld(class QWebFrame *, int, class QString const &)
- ?qt_drt_hasDocumentElement@@YA_NPAVQWebFrame@@@Z @ 632 NONAME ; bool qt_drt_hasDocumentElement(class QWebFrame *)
- ?qt_drt_numberOfPages@@YAHPAVQWebFrame@@MM@Z @ 633 NONAME ; int qt_drt_numberOfPages(class QWebFrame *, float, float)
- ?qt_drt_pageNumberForElementById@@YAHPAVQWebFrame@@ABVQString@@MM@Z @ 634 NONAME ; int qt_drt_pageNumberForElementById(class QWebFrame *, class QString const &, float, float)
- ?qt_drt_pauseSVGAnimation@@YA_NPAVQWebFrame@@ABVQString@@N1@Z @ 635 NONAME ; bool qt_drt_pauseSVGAnimation(class QWebFrame *, class QString const &, double, class QString const &)
- ?qt_drt_setDomainRelaxationForbiddenForURLScheme@@YAX_NABVQString@@@Z @ 636 NONAME ; void qt_drt_setDomainRelaxationForbiddenForURLScheme(bool, class QString const &)
- ?qt_drt_setFrameFlatteningEnabled@@YAXPAVQWebPage@@_N@Z @ 637 NONAME ; void qt_drt_setFrameFlatteningEnabled(class QWebPage *, bool)
- ?qt_drt_setMediaType@@YAXPAVQWebFrame@@ABVQString@@@Z @ 638 NONAME ; void qt_drt_setMediaType(class QWebFrame *, class QString const &)
- ?qt_drt_setTimelineProfilingEnabled@@YAXPAVQWebPage@@_N@Z @ 639 NONAME ; void qt_drt_setTimelineProfilingEnabled(class QWebPage *, bool)
- ?qt_drt_webinspector_close@@YAXPAVQWebPage@@@Z @ 640 NONAME ; void qt_drt_webinspector_close(class QWebPage *)
- ?qt_drt_webinspector_executeScript@@YAXPAVQWebPage@@JABVQString@@@Z @ 641 NONAME ; void qt_drt_webinspector_executeScript(class QWebPage *, long, class QString const &)
- ?qt_drt_webinspector_show@@YAXPAVQWebPage@@@Z @ 642 NONAME ; void qt_drt_webinspector_show(class QWebPage *)
- ?qt_drt_workerThreadCount@@YAHXZ @ 643 NONAME ; int qt_drt_workerThreadCount(void)
- ?qt_wrt_setViewMode@@YAXPAVQWebPage@@ABVQString@@@Z @ 644 NONAME ; void qt_wrt_setViewMode(class QWebPage *, class QString const &)
+ ?qt_drt_enableCaretBrowsing@@YAXPAVQWebPage@@_N@Z @ 630 NONAME ABSENT ; void qt_drt_enableCaretBrowsing(class QWebPage *, bool)
+ ?qt_drt_evaluateScriptInIsolatedWorld@@YAXPAVQWebFrame@@HABVQString@@@Z @ 631 NONAME ABSENT ; void qt_drt_evaluateScriptInIsolatedWorld(class QWebFrame *, int, class QString const &)
+ ?qt_drt_hasDocumentElement@@YA_NPAVQWebFrame@@@Z @ 632 NONAME ABSENT ; bool qt_drt_hasDocumentElement(class QWebFrame *)
+ ?qt_drt_numberOfPages@@YAHPAVQWebFrame@@MM@Z @ 633 NONAME ABSENT ; int qt_drt_numberOfPages(class QWebFrame *, float, float)
+ ?qt_drt_pageNumberForElementById@@YAHPAVQWebFrame@@ABVQString@@MM@Z @ 634 NONAME ABSENT ; int qt_drt_pageNumberForElementById(class QWebFrame *, class QString const &, float, float)
+ ?qt_drt_pauseSVGAnimation@@YA_NPAVQWebFrame@@ABVQString@@N1@Z @ 635 NONAME ABSENT ; bool qt_drt_pauseSVGAnimation(class QWebFrame *, class QString const &, double, class QString const &)
+ ?qt_drt_setDomainRelaxationForbiddenForURLScheme@@YAX_NABVQString@@@Z @ 636 NONAME ABSENT ; void qt_drt_setDomainRelaxationForbiddenForURLScheme(bool, class QString const &)
+ ?qt_drt_setFrameFlatteningEnabled@@YAXPAVQWebPage@@_N@Z @ 637 NONAME ABSENT ; void qt_drt_setFrameFlatteningEnabled(class QWebPage *, bool)
+ ?qt_drt_setMediaType@@YAXPAVQWebFrame@@ABVQString@@@Z @ 638 NONAME ABSENT ; void qt_drt_setMediaType(class QWebFrame *, class QString const &)
+ ?qt_drt_setTimelineProfilingEnabled@@YAXPAVQWebPage@@_N@Z @ 639 NONAME ABSENT ; void qt_drt_setTimelineProfilingEnabled(class QWebPage *, bool)
+ ?qt_drt_webinspector_close@@YAXPAVQWebPage@@@Z @ 640 NONAME ABSENT ; void qt_drt_webinspector_close(class QWebPage *)
+ ?qt_drt_webinspector_executeScript@@YAXPAVQWebPage@@JABVQString@@@Z @ 641 NONAME ABSENT ; void qt_drt_webinspector_executeScript(class QWebPage *, long, class QString const &)
+ ?qt_drt_webinspector_show@@YAXPAVQWebPage@@@Z @ 642 NONAME ABSENT ; void qt_drt_webinspector_show(class QWebPage *)
+ ?qt_drt_workerThreadCount@@YAHXZ @ 643 NONAME ABSENT ; int qt_drt_workerThreadCount(void)
+ ?qt_wrt_setViewMode@@YAXPAVQWebPage@@ABVQString@@@Z @ 644 NONAME ABSENT ; void qt_wrt_setViewMode(class QWebPage *, class QString const &)
?qtwebkit_webframe_scrollRecursively@@YAXPAVQWebFrame@@HHABVQPoint@@@Z @ 645 NONAME ; void qtwebkit_webframe_scrollRecursively(class QWebFrame *, int, int, class QPoint const &)
?resizesToContents@QGraphicsWebView@@QBE_NXZ @ 646 NONAME ; bool QGraphicsWebView::resizesToContents(void) const
?scrollToAnchor@QWebFrame@@QAEXABVQString@@@Z @ 647 NONAME ; void QWebFrame::scrollToAnchor(class QString const &)
@@ -650,4 +650,148 @@ EXPORTS
?setResizesToContents@QGraphicsWebView@@QAEX_N@Z @ 649 NONAME ; void QGraphicsWebView::setResizesToContents(bool)
?setTiledBackingStoreFrozen@QGraphicsWebView@@QAEX_N@Z @ 650 NONAME ; void QGraphicsWebView::setTiledBackingStoreFrozen(bool)
?qtwebkit_webframe_scrollOverflow@@YA_NPAVQWebFrame@@HHABVQPoint@@@Z @ 651 NONAME ; bool qtwebkit_webframe_scrollOverflow(QWebFrame *, int, int, const QPoint&)
- ?qtwebkit_setPluginCreatedCallback@@YAXP6AXPAVQWebFrame@@PAX1@Z@Z @ 652 NONAME ; void qtwebkit_setPluginCreatedCallback(void (*)(class QWebFrame *, void *, void *))
+ ?qtwebkit_setPluginCreatedCallback@@YAXP6AXPAVQWebFrame@@PAX1@Z@Z @ 652 NONAME ; void qtwebkit_setPluginCreatedCallback(void (*)(class QWebFrame *, void *, void *))
+ ?mediaContentUrlByElementId@DumpRenderTreeSupportQt@@SA?AVQUrl@@PAVQWebFrame@@ABVQString@@@Z @ 653 NONAME ; class QUrl DumpRenderTreeSupportQt::mediaContentUrlByElementId(QWebFrame *, const QString &)
+ ?webPageSetGroupName@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@ABVQString@@@Z @ 654 NONAME ; void DumpRenderTreeSupportQt::webPageSetGroupName(class QWebPage *, class QString const &)
+ ?webPageGroupName@DumpRenderTreeSupportQt@@SA?AVQString@@PAVQWebPage@@@Z @ 655 NONAME ; class QString DumpRenderTreeSupportQt::webPageGroupName(class QWebPage *)
+ ?renderHints@QGraphicsWebView@@QBE?AV?$QFlags@W4RenderHint@QPainter@@@@XZ @ 656 NONAME ; class QFlags<enum QPainter::RenderHint> QGraphicsWebView::renderHints(void) const
+ ?setRenderHint@QGraphicsWebView@@QAEXW4RenderHint@QPainter@@_N@Z @ 657 NONAME ; void QGraphicsWebView::setRenderHint(enum QPainter::RenderHint, bool)
+ ?selectedHtml@QWebPage@@QBE?AVQString@@XZ @ 658 NONAME ; class QString QWebPage::selectedHtml(void) const
+ ?hasSelection@QWebPage@@QBE_NXZ @ 659 NONAME ; bool QWebPage::hasSelection(void) const
+ ?garbageCollectorCollect@DumpRenderTreeSupportQt@@SAXXZ @ 660 NONAME ; void DumpRenderTreeSupportQt::garbageCollectorCollect(void)
+ ?supportedContentTypes@QWebPage@@QBE?AVQStringList@@XZ @ 661 NONAME ; class QStringList QWebPage::supportedContentTypes(void) const
+ ?supportsContentType@QWebPage@@QBE_NABVQString@@@Z @ 662 NONAME ; bool QWebPage::supportsContentType(class QString const &) const
+ ?setFeaturePermission@QWebPage@@QAEXPAVQWebFrame@@W4Feature@1@W4PermissionPolicy@1@@Z @ 663 NONAME ; void QWebPage::setFeaturePermission(class QWebFrame *, enum QWebPage::Feature, enum QWebPage::PermissionPolicy)
+ strnstr @ 664 NONAME
+ ??1QWebScriptWorld@@QAE@XZ @ 665 NONAME ; QWebScriptWorld::~QWebScriptWorld(void)
+ ??_EQWebSettings@@QAE@I@Z @ 666 NONAME ; QWebSettings::~QWebSettings(unsigned int)
+ ?setSelectTrailingWhitespaceEnabled@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@_N@Z @ 667 NONAME ; void DumpRenderTreeSupportQt::setSelectTrailingWhitespaceEnabled(class QWebPage *, bool)
+ ?webInspectorShow@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@@Z @ 668 NONAME ; void DumpRenderTreeSupportQt::webInspectorShow(class QWebPage *)
+ ?firstRectForCharacterRange@DumpRenderTreeSupportQt@@SA?AV?$QList@VQVariant@@@@PAVQWebPage@@HH@Z @ 669 NONAME ; class QList<class QVariant> DumpRenderTreeSupportQt::firstRectForCharacterRange(class QWebPage *, int, int)
+ ?whiteListAccessFromOrigin@DumpRenderTreeSupportQt@@SAXABVQString@@00_N@Z @ 670 NONAME ; void DumpRenderTreeSupportQt::whiteListAccessFromOrigin(class QString const &, class QString const &, class QString const &, bool)
+ ?dumpResourceLoadCallbacks@DumpRenderTreeSupportQt@@SAX_N@Z @ 671 NONAME ; void DumpRenderTreeSupportQt::dumpResourceLoadCallbacks(bool)
+ ?setWillSendRequestClearHeaders@DumpRenderTreeSupportQt@@SAXABVQStringList@@@Z @ 672 NONAME ; void DumpRenderTreeSupportQt::setWillSendRequestClearHeaders(class QStringList const &)
+ ?dumpResourceLoadCallbacksPath@DumpRenderTreeSupportQt@@SAXABVQString@@@Z @ 673 NONAME ; void DumpRenderTreeSupportQt::dumpResourceLoadCallbacksPath(class QString const &)
+ ?featurePermissionRequestCanceled@QWebPage@@IAEXPAVQWebFrame@@W4Feature@1@@Z @ 674 NONAME ; void QWebPage::featurePermissionRequestCanceled(class QWebFrame *, enum QWebPage::Feature)
+ ??0ViewportAttributes@QWebPage@@QAE@ABV01@@Z @ 675 NONAME ; QWebPage::ViewportAttributes::ViewportAttributes(class QWebPage::ViewportAttributes const &)
+ ?getChildHistoryItems@DumpRenderTreeSupportQt@@SA?AV?$QMap@VQString@@VQWebHistoryItem@@@@ABVQWebHistoryItem@@@Z @ 676 NONAME ; class QMap<class QString, class QWebHistoryItem> DumpRenderTreeSupportQt::getChildHistoryItems(class QWebHistoryItem const &)
+ ??_EQWebHistoryItem@@QAE@I@Z @ 677 NONAME ; QWebHistoryItem::~QWebHistoryItem(unsigned int)
+ ?viewportAttributesForSize@QWebPage@@QBE?AVViewportAttributes@1@ABVQSize@@@Z @ 678 NONAME ; class QWebPage::ViewportAttributes QWebPage::viewportAttributesForSize(class QSize const &) const
+ ?selectedRange@DumpRenderTreeSupportQt@@SA?AV?$QList@VQVariant@@@@PAVQWebPage@@@Z @ 679 NONAME ; class QList<class QVariant> DumpRenderTreeSupportQt::selectedRange(class QWebPage *)
+ ?selectedHtml@QWebView@@QBE?AVQString@@XZ @ 680 NONAME ; class QString QWebView::selectedHtml(void) const
+ ?pageNumberForElementById@DumpRenderTreeSupportQt@@SAHPAVQWebFrame@@ABVQString@@MM@Z @ 681 NONAME ; int DumpRenderTreeSupportQt::pageNumberForElementById(class QWebFrame *, class QString const &, float, float)
+ ??1ViewportAttributes@QWebPage@@QAE@XZ @ 682 NONAME ; QWebPage::ViewportAttributes::~ViewportAttributes(void)
+ ?resumeActiveDOMObjects@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@@Z @ 683 NONAME ; void DumpRenderTreeSupportQt::resumeActiveDOMObjects(class QWebFrame *)
+ ?suspendAnimations@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@@Z @ 684 NONAME ; void DumpRenderTreeSupportQt::suspendAnimations(class QWebFrame *)
+ ?initialScaleFactor@ViewportAttributes@QWebPage@@QBEMXZ @ 685 NONAME ; float QWebPage::ViewportAttributes::initialScaleFactor(void) const
+ ?setSmartInsertDeleteEnabled@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@_N@Z @ 686 NONAME ; void DumpRenderTreeSupportQt::setSmartInsertDeleteEnabled(class QWebPage *, bool)
+ ?nodesFromRect@DumpRenderTreeSupportQt@@SA?AV?$QList@VQVariant@@@@ABVQWebElement@@HHIIII_N@Z @ 687 NONAME ; class QList<class QVariant> DumpRenderTreeSupportQt::nodesFromRect(class QWebElement const &, int, int, unsigned int, unsigned int, unsigned int, unsigned int, bool)
+ ?setJavaScriptProfilingEnabled@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@_N@Z @ 688 NONAME ; void DumpRenderTreeSupportQt::setJavaScriptProfilingEnabled(class QWebFrame *, bool)
+ ?shouldClose@DumpRenderTreeSupportQt@@SA_NPAVQWebFrame@@@Z @ 689 NONAME ; bool DumpRenderTreeSupportQt::shouldClose(class QWebFrame *)
+ ?clearOpener@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@@Z @ 690 NONAME ; void DumpRenderTreeSupportQt::clearOpener(class QWebFrame *)
+ ?isTargetItem@DumpRenderTreeSupportQt@@SA_NABVQWebHistoryItem@@@Z @ 691 NONAME ; bool DumpRenderTreeSupportQt::isTargetItem(class QWebHistoryItem const &)
+ ?setWillSendRequestReturnsNullOnRedirect@DumpRenderTreeSupportQt@@SAX_N@Z @ 692 NONAME ; void DumpRenderTreeSupportQt::setWillSendRequestReturnsNullOnRedirect(bool)
+ ??0DumpRenderTreeSupportQt@@QAE@XZ @ 693 NONAME ; DumpRenderTreeSupportQt::DumpRenderTreeSupportQt(void)
+ ?isUserScalable@ViewportAttributes@QWebPage@@QBE_NXZ @ 694 NONAME ; bool QWebPage::ViewportAttributes::isUserScalable(void) const
+ ?clearFrameName@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@@Z @ 695 NONAME ; void DumpRenderTreeSupportQt::clearFrameName(class QWebFrame *)
+ ??0QWebScriptWorld@@QAE@XZ @ 696 NONAME ; QWebScriptWorld::QWebScriptWorld(void)
+ ??4ViewportAttributes@QWebPage@@QAEAAV01@ABV01@@Z @ 697 NONAME ; class QWebPage::ViewportAttributes & QWebPage::ViewportAttributes::operator=(class QWebPage::ViewportAttributes const &)
+ ?dumpNotification@DumpRenderTreeSupportQt@@SAX_N@Z @ 698 NONAME ; void DumpRenderTreeSupportQt::dumpNotification(bool)
+ ?setDeferMainResourceDataLoad@DumpRenderTreeSupportQt@@SAX_N@Z @ 699 NONAME ; void DumpRenderTreeSupportQt::setDeferMainResourceDataLoad(bool)
+ ?webInspectorClose@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@@Z @ 700 NONAME ; void DumpRenderTreeSupportQt::webInspectorClose(class QWebPage *)
+ ?defaultMinimumTimerInterval@DumpRenderTreeSupportQt@@SANXZ @ 701 NONAME ; double DumpRenderTreeSupportQt::defaultMinimumTimerInterval(void)
+ ??0ViewportAttributes@QWebPage@@QAE@XZ @ 702 NONAME ; QWebPage::ViewportAttributes::ViewportAttributes(void)
+ ?counterValueForElementById@DumpRenderTreeSupportQt@@SA?AVQString@@PAVQWebFrame@@ABV2@@Z @ 703 NONAME ; class QString DumpRenderTreeSupportQt::counterValueForElementById(class QWebFrame *, class QString const &)
+ ??_EQWebElement@@QAE@I@Z @ 704 NONAME ; QWebElement::~QWebElement(unsigned int)
+ ?setMinimumTimerInterval@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@N@Z @ 705 NONAME ; void DumpRenderTreeSupportQt::setMinimumTimerInterval(class QWebPage *, double)
+ ?activeMockDeviceOrientationClient@DumpRenderTreeSupportQt@@SAX_N@Z @ 706 NONAME ; void DumpRenderTreeSupportQt::activeMockDeviceOrientationClient(bool)
+ ?addUserStyleSheet@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@ABVQString@@@Z @ 707 NONAME ; void DumpRenderTreeSupportQt::addUserStyleSheet(class QWebPage *, class QString const &)
+ ?devicePixelRatio@ViewportAttributes@QWebPage@@QBEMXZ @ 708 NONAME ; float QWebPage::ViewportAttributes::devicePixelRatio(void) const
+ ?setMockDeviceOrientation@DumpRenderTreeSupportQt@@SAX_NN0N0N@Z @ 709 NONAME ; void DumpRenderTreeSupportQt::setMockDeviceOrientation(bool, double, bool, double, bool, double)
+ ?size@ViewportAttributes@QWebPage@@QBE?AVQSize@@XZ @ 710 NONAME ; class QSize QWebPage::ViewportAttributes::size(void) const
+ ?setCustomPolicyDelegate@DumpRenderTreeSupportQt@@SAX_N0@Z @ 711 NONAME ; void DumpRenderTreeSupportQt::setCustomPolicyDelegate(bool, bool)
+ ?viewportChangeRequested@QWebPage@@IAEXXZ @ 712 NONAME ; void QWebPage::viewportChangeRequested(void)
+ ?hasDocumentElement@DumpRenderTreeSupportQt@@SA_NPAVQWebFrame@@@Z @ 713 NONAME ; bool DumpRenderTreeSupportQt::hasDocumentElement(class QWebFrame *)
+ ?numberOfPages@DumpRenderTreeSupportQt@@SAHPAVQWebFrame@@MM@Z @ 714 NONAME ; int DumpRenderTreeSupportQt::numberOfPages(class QWebFrame *, float, float)
+ ?numberOfActiveAnimations@DumpRenderTreeSupportQt@@SAHPAVQWebFrame@@@Z @ 715 NONAME ; int DumpRenderTreeSupportQt::numberOfActiveAnimations(class QWebFrame *)
+ ?contextMenu@DumpRenderTreeSupportQt@@SA?AVQStringList@@PAVQWebPage@@@Z @ 716 NONAME ; class QStringList DumpRenderTreeSupportQt::contextMenu(class QWebPage *)
+ ?setWillSendRequestReturnsNull@DumpRenderTreeSupportQt@@SAX_N@Z @ 717 NONAME ; void DumpRenderTreeSupportQt::setWillSendRequestReturnsNull(bool)
+ ?resumeAnimations@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@@Z @ 718 NONAME ; void DumpRenderTreeSupportQt::resumeAnimations(class QWebFrame *)
+ ?addURLToRedirect@DumpRenderTreeSupportQt@@SAXABVQString@@0@Z @ 719 NONAME ; void DumpRenderTreeSupportQt::addURLToRedirect(class QString const &, class QString const &)
+ ??_EQWebDatabase@@QAE@I@Z @ 720 NONAME ; QWebDatabase::~QWebDatabase(unsigned int)
+ ?workerThreadCount@DumpRenderTreeSupportQt@@SAHXZ @ 721 NONAME ; int DumpRenderTreeSupportQt::workerThreadCount(void)
+ ?render@QWebElement@@QAEXPAVQPainter@@ABVQRect@@@Z @ 722 NONAME ; void QWebElement::render(class QPainter *, class QRect const &)
+ ?setFrameFlatteningEnabled@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@_N@Z @ 723 NONAME ; void DumpRenderTreeSupportQt::setFrameFlatteningEnabled(class QWebPage *, bool)
+ ?dumpResourceResponseMIMETypes@DumpRenderTreeSupportQt@@SAX_N@Z @ 724 NONAME ; void DumpRenderTreeSupportQt::dumpResourceResponseMIMETypes(bool)
+ ?pageProperty@DumpRenderTreeSupportQt@@SA?AVQString@@PAVQWebFrame@@ABV2@H@Z @ 725 NONAME ; class QString DumpRenderTreeSupportQt::pageProperty(class QWebFrame *, class QString const &, int)
+ ??0QDRTNode@@QAE@XZ @ 726 NONAME ; QDRTNode::QDRTNode(void)
+ ?hasSelection@QWebView@@QBE_NXZ @ 727 NONAME ; bool QWebView::hasSelection(void) const
+ ??_EQDRTNode@@QAE@I@Z @ 728 NONAME ; QDRTNode::~QDRTNode(unsigned int)
+ ?garbageCollectorCollectOnAlternateThread@DumpRenderTreeSupportQt@@SAX_N@Z @ 729 NONAME ; void DumpRenderTreeSupportQt::garbageCollectorCollectOnAlternateThread(bool)
+ ?setRenderHints@QGraphicsWebView@@QAEXV?$QFlags@W4RenderHint@QPainter@@@@@Z @ 730 NONAME ; void QGraphicsWebView::setRenderHints(class QFlags<enum QPainter::RenderHint>)
+ ?setAlternateHtml@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@ABVQString@@ABVQUrl@@2@Z @ 731 NONAME ; void DumpRenderTreeSupportQt::setAlternateHtml(class QWebFrame *, class QString const &, class QUrl const &, class QUrl const &)
+ ?webInspectorExecuteScript@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@JABVQString@@@Z @ 732 NONAME ; void DumpRenderTreeSupportQt::webInspectorExecuteScript(class QWebPage *, long, class QString const &)
+ ?pauseTransitionOfProperty@DumpRenderTreeSupportQt@@SA_NPAVQWebFrame@@ABVQString@@N1@Z @ 733 NONAME ; bool DumpRenderTreeSupportQt::pauseTransitionOfProperty(class QWebFrame *, class QString const &, double, class QString const &)
+ ?numberOfPendingGeolocationPermissionRequests@DumpRenderTreeSupportQt@@SAHPAVQWebPage@@@Z @ 734 NONAME ; int DumpRenderTreeSupportQt::numberOfPendingGeolocationPermissionRequests(class QWebPage *)
+ ?setEditingBehavior@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@ABVQString@@@Z @ 735 NONAME ; void DumpRenderTreeSupportQt::setEditingBehavior(class QWebPage *, class QString const &)
+ ?findString@DumpRenderTreeSupportQt@@SA_NPAVQWebPage@@ABVQString@@ABVQStringList@@@Z @ 736 NONAME ; bool DumpRenderTreeSupportQt::findString(class QWebPage *, class QString const &, class QStringList const &)
+ ?setCaretBrowsingEnabled@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@_N@Z @ 737 NONAME ; void DumpRenderTreeSupportQt::setCaretBrowsingEnabled(class QWebPage *, bool)
+ ?historyItemTarget@DumpRenderTreeSupportQt@@SA?AVQString@@ABVQWebHistoryItem@@@Z @ 738 NONAME ; class QString DumpRenderTreeSupportQt::historyItemTarget(class QWebHistoryItem const &)
+ ??1QDRTNode@@QAE@XZ @ 739 NONAME ; QDRTNode::~QDRTNode(void)
+ ?clearAllApplicationCaches@DumpRenderTreeSupportQt@@SAXXZ @ 740 NONAME ; void DumpRenderTreeSupportQt::clearAllApplicationCaches(void)
+ ?isValid@ViewportAttributes@QWebPage@@QBE_NXZ @ 741 NONAME ; bool QWebPage::ViewportAttributes::isValid(void) const
+ ?dumpVisitedLinksCallbacks@DumpRenderTreeSupportQt@@SAX_N@Z @ 742 NONAME ; void DumpRenderTreeSupportQt::dumpVisitedLinksCallbacks(bool)
+ ?resetOriginAccessWhiteLists@DumpRenderTreeSupportQt@@SAXXZ @ 743 NONAME ; void DumpRenderTreeSupportQt::resetOriginAccessWhiteLists(void)
+ ??_EQWebSecurityOrigin@@QAE@I@Z @ 744 NONAME ; QWebSecurityOrigin::~QWebSecurityOrigin(unsigned int)
+ ?dumpFrameLoader@DumpRenderTreeSupportQt@@SAX_N@Z @ 745 NONAME ; void DumpRenderTreeSupportQt::dumpFrameLoader(bool)
+ ?markerTextForListItem@DumpRenderTreeSupportQt@@SA?AVQString@@ABVQWebElement@@@Z @ 746 NONAME ; class QString DumpRenderTreeSupportQt::markerTextForListItem(class QWebElement const &)
+ ?elementDoesAutoCompleteForElementWithId@DumpRenderTreeSupportQt@@SA_NPAVQWebFrame@@ABVQString@@@Z @ 747 NONAME ; bool DumpRenderTreeSupportQt::elementDoesAutoCompleteForElementWithId(class QWebFrame *, class QString const &)
+ ?applicationCacheQuotaExceeded@QWebPage@@IAEXPAVQWebSecurityOrigin@@_K@Z @ 748 NONAME ; void QWebPage::applicationCacheQuotaExceeded(class QWebSecurityOrigin *, unsigned long long)
+ ?setTimelineProfilingEnabled@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@_N@Z @ 749 NONAME ; void DumpRenderTreeSupportQt::setTimelineProfilingEnabled(class QWebPage *, bool)
+ ??0QDRTNode@@AAE@PAVNode@WebCore@@@Z @ 750 NONAME ; QDRTNode::QDRTNode(class WebCore::Node *)
+ ?setMockGeolocationPermission@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@_N@Z @ 751 NONAME ; void DumpRenderTreeSupportQt::setMockGeolocationPermission(class QWebPage *, bool)
+ ?setMockGeolocationError@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@HABVQString@@@Z @ 752 NONAME ; void DumpRenderTreeSupportQt::setMockGeolocationError(class QWebPage *, int, class QString const &)
+ ?clearScriptWorlds@DumpRenderTreeSupportQt@@SAXXZ @ 753 NONAME ; void DumpRenderTreeSupportQt::clearScriptWorlds(void)
+ ?maximumScaleFactor@ViewportAttributes@QWebPage@@QBEMXZ @ 754 NONAME ; float QWebPage::ViewportAttributes::maximumScaleFactor(void) const
+ ?dumpHistoryCallbacks@DumpRenderTreeSupportQt@@SAX_N@Z @ 755 NONAME ; void DumpRenderTreeSupportQt::dumpHistoryCallbacks(bool)
+ ??0MimeType@QWebPluginFactory@@QAE@XZ @ 756 NONAME ; QWebPluginFactory::MimeType::MimeType(void)
+ ?pauseSVGAnimation@DumpRenderTreeSupportQt@@SA_NPAVQWebFrame@@ABVQString@@N1@Z @ 757 NONAME ; bool DumpRenderTreeSupportQt::pauseSVGAnimation(class QWebFrame *, class QString const &, double, class QString const &)
+ ?featurePermissionRequested@QWebPage@@IAEXPAVQWebFrame@@W4Feature@1@@Z @ 758 NONAME ; void QWebPage::featurePermissionRequested(class QWebFrame *, enum QWebPage::Feature)
+ ?removeShadowRoot@DumpRenderTreeSupportQt@@SAXABVQWebElement@@@Z @ 759 NONAME ; void DumpRenderTreeSupportQt::removeShadowRoot(class QWebElement const &)
+ ??_EQWebPluginInfo@@QAE@I@Z @ 760 NONAME ; QWebPluginInfo::~QWebPluginInfo(unsigned int)
+ ?pageSizeAndMarginsInPixels@DumpRenderTreeSupportQt@@SA?AVQString@@PAVQWebFrame@@HHHHHHH@Z @ 761 NONAME ; class QString DumpRenderTreeSupportQt::pageSizeAndMarginsInPixels(class QWebFrame *, int, int, int, int, int, int, int)
+ ?suspendActiveDOMObjects@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@@Z @ 762 NONAME ; void DumpRenderTreeSupportQt::suspendActiveDOMObjects(class QWebFrame *)
+ ?dumpUserGestureInFrameLoader@DumpRenderTreeSupportQt@@SAX_N@Z @ 763 NONAME ; void DumpRenderTreeSupportQt::dumpUserGestureInFrameLoader(bool)
+ ??0QWebScriptWorld@@QAE@ABV0@@Z @ 764 NONAME ; QWebScriptWorld::QWebScriptWorld(class QWebScriptWorld const &)
+ ?setDumpRenderTreeModeEnabled@DumpRenderTreeSupportQt@@SAX_N@Z @ 765 NONAME ; void DumpRenderTreeSupportQt::setDumpRenderTreeModeEnabled(bool)
+ ?evaluateScriptInIsolatedWorld@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@HABVQString@@@Z @ 766 NONAME ; void DumpRenderTreeSupportQt::evaluateScriptInIsolatedWorld(class QWebFrame *, int, class QString const &)
+ ?setApplicationCacheQuota@QWebSecurityOrigin@@QAEX_J@Z @ 767 NONAME ; void QWebSecurityOrigin::setApplicationCacheQuota(long long)
+ ?plainText@DumpRenderTreeSupportQt@@SA?AVQString@@ABVQVariant@@@Z @ 768 NONAME ; class QString DumpRenderTreeSupportQt::plainText(class QVariant const &)
+ ??1DumpRenderTreeSupportQt@@QAE@XZ @ 769 NONAME ; DumpRenderTreeSupportQt::~DumpRenderTreeSupportQt(void)
+ ?viewportAsText@DumpRenderTreeSupportQt@@SA?AVQString@@PAVQWebPage@@HABVQSize@@1@Z @ 770 NONAME ; class QString DumpRenderTreeSupportQt::viewportAsText(class QWebPage *, int, class QSize const &, class QSize const &)
+ ?setDomainRelaxationForbiddenForURLScheme@DumpRenderTreeSupportQt@@SAX_NABVQString@@@Z @ 771 NONAME ; void DumpRenderTreeSupportQt::setDomainRelaxationForbiddenForURLScheme(bool, class QString const &)
+ ?setMediaType@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@ABVQString@@@Z @ 772 NONAME ; void DumpRenderTreeSupportQt::setMediaType(class QWebFrame *, class QString const &)
+ ?computedStyleIncludingVisitedInfo@DumpRenderTreeSupportQt@@SA?AV?$QMap@VQString@@VQVariant@@@@ABVQWebElement@@@Z @ 773 NONAME ; class QMap<class QString, class QVariant> DumpRenderTreeSupportQt::computedStyleIncludingVisitedInfo(class QWebElement const &)
+ ?overwritePluginDirectories@DumpRenderTreeSupportQt@@SAXXZ @ 774 NONAME ; void DumpRenderTreeSupportQt::overwritePluginDirectories(void)
+ ?minimumScaleFactor@ViewportAttributes@QWebPage@@QBEMXZ @ 775 NONAME ; float QWebPage::ViewportAttributes::minimumScaleFactor(void) const
+ ?setAutofilled@DumpRenderTreeSupportQt@@SAXABVQWebElement@@_N@Z @ 776 NONAME ; void DumpRenderTreeSupportQt::setAutofilled(class QWebElement const &, bool)
+ ?dumpSetAcceptsEditing@DumpRenderTreeSupportQt@@SAX_N@Z @ 777 NONAME ; void DumpRenderTreeSupportQt::dumpSetAcceptsEditing(bool)
+ ?pauseAnimation@DumpRenderTreeSupportQt@@SA_NPAVQWebFrame@@ABVQString@@N1@Z @ 778 NONAME ; bool DumpRenderTreeSupportQt::pauseAnimation(class QWebFrame *, class QString const &, double, class QString const &)
+ ?isPageBoxVisible@DumpRenderTreeSupportQt@@SA_NPAVQWebFrame@@H@Z @ 779 NONAME ; bool DumpRenderTreeSupportQt::isPageBoxVisible(class QWebFrame *, int)
+ ?shadowRoot@DumpRenderTreeSupportQt@@SA?AVQVariant@@ABVQWebElement@@@Z @ 780 NONAME ; class QVariant DumpRenderTreeSupportQt::shadowRoot(class QWebElement const &)
+ ??4QDRTNode@@QAEAAV0@ABV0@@Z @ 781 NONAME ; class QDRTNode & QDRTNode::operator=(class QDRTNode const &)
+ ?responseMimeType@DumpRenderTreeSupportQt@@SA?AVQString@@PAVQWebFrame@@@Z @ 782 NONAME ; class QString DumpRenderTreeSupportQt::responseMimeType(class QWebFrame *)
+ ?setMockGeolocationPosition@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@NNN@Z @ 783 NONAME ; void DumpRenderTreeSupportQt::setMockGeolocationPosition(class QWebPage *, double, double, double)
+ ?isCommandEnabled@DumpRenderTreeSupportQt@@SA_NPAVQWebPage@@ABVQString@@@Z @ 784 NONAME ; bool DumpRenderTreeSupportQt::isCommandEnabled(class QWebPage *, class QString const &)
+ ?dumpEditingCallbacks@DumpRenderTreeSupportQt@@SAX_N@Z @ 785 NONAME ; void DumpRenderTreeSupportQt::dumpEditingCallbacks(bool)
+ ?setActualVisibleContentRect@QWebPage@@QBEXABVQRect@@@Z @ 786 NONAME ; void QWebPage::setActualVisibleContentRect(class QRect const &) const
+ ?executeCoreCommandByName@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@ABVQString@@1@Z @ 787 NONAME ; void DumpRenderTreeSupportQt::executeCoreCommandByName(class QWebPage *, class QString const &, class QString const &)
+ ?resetGeolocationMock@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@@Z @ 788 NONAME ; void DumpRenderTreeSupportQt::resetGeolocationMock(class QWebPage *)
+ ?removeWhiteListAccessFromOrigin@DumpRenderTreeSupportQt@@SAXABVQString@@00_N@Z @ 789 NONAME ; void DumpRenderTreeSupportQt::removeWhiteListAccessFromOrigin(class QString const &, class QString const &, class QString const &, bool)
+ ??0QDRTNode@@QAE@ABV0@@Z @ 790 NONAME ; QDRTNode::QDRTNode(class QDRTNode const &)
+ ?removeMockDeviceOrientation@DumpRenderTreeSupportQt@@SAXXZ @ 791 NONAME ; void DumpRenderTreeSupportQt::removeMockDeviceOrientation(void)
+ ??4QWebScriptWorld@@QAEAAV0@ABV0@@Z @ 792 NONAME ; class QWebScriptWorld & QWebScriptWorld::operator=(class QWebScriptWorld const &)
+ ?javaScriptObjectsCount@DumpRenderTreeSupportQt@@SAHXZ @ 793 NONAME ; int DumpRenderTreeSupportQt::javaScriptObjectsCount(void)
+ ?world@QWebScriptWorld@@QBEPAVDOMWrapperWorld@WebCore@@XZ @ 794 NONAME ; class WebCore::DOMWrapperWorld * QWebScriptWorld::world(void) const
+ ?simulateDesktopNotificationClick@DumpRenderTreeSupportQt@@SAXABVQString@@@Z @ 795 NONAME ; void DumpRenderTreeSupportQt::simulateDesktopNotificationClick(class QString const &)
+ ?ensureShadowRoot@DumpRenderTreeSupportQt@@SA?AVQVariant@@ABVQWebElement@@@Z @ 796 NONAME ; class QVariant DumpRenderTreeSupportQt::ensureShadowRoot(class QWebElement const &) \ No newline at end of file
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/symbian/eabi/QtWebKitu.def b/src/3rdparty/webkit/Source/WebKit/qt/symbian/eabi/QtWebKitu.def
index 176b9a1..d948de4 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/symbian/eabi/QtWebKitu.def
+++ b/src/3rdparty/webkit/Source/WebKit/qt/symbian/eabi/QtWebKitu.def
@@ -1,847 +1,880 @@
-EXPORTS
- _Z10qt_drt_runb @ 1 NONAME
- _Z14qWebKitVersionv @ 2 NONAME
- _Z19qWebKitMajorVersionv @ 3 NONAME
- _Z19qWebKitMinorVersionv @ 4 NONAME
- _Z20qt_dump_frame_loaderb @ 5 NONAME
- _Z20qt_webpage_groupNameP8QWebPage @ 6 NONAME
- _Z21qt_drt_clearFrameNameP9QWebFrame @ 7 NONAME
- _Z21qt_drt_pauseAnimationP9QWebFrameRK7QStringdS3_ @ 8 NONAME
- _Z23qt_webpage_setGroupNameP8QWebPageRK7QString @ 9 NONAME
- _Z25qt_dump_editing_callbacksb @ 10 NONAME
- _Z27qt_dump_set_accepts_editingb @ 11 NONAME
- _Z29qt_drt_javaScriptObjectsCountv @ 12 NONAME
- _Z31qt_drt_garbageCollector_collectv @ 13 NONAME
- _Z31qt_drt_numberOfActiveAnimationsP9QWebFrame @ 14 NONAME
- _Z31qt_dump_resource_load_callbacksb @ 15 NONAME
- _Z32qt_drt_pauseTransitionOfPropertyP9QWebFrameRK7QStringdS3_ @ 16 NONAME
- _Z33qt_drt_overwritePluginDirectoriesv @ 17 NONAME
- _Z36qt_drt_setJavaScriptProfilingEnabledP9QWebFrameb @ 18 NONAME
- _Z48qt_drt_garbageCollector_collectOnAlternateThreadb @ 19 NONAME
- _ZN11QWebElement11encloseWithERK7QString @ 20 NONAME
- _ZN11QWebElement11encloseWithERKS_ @ 21 NONAME
- _ZN11QWebElement11removeClassERK7QString @ 22 NONAME
- _ZN11QWebElement11setInnerXmlERK7QString @ 23 NONAME
- _ZN11QWebElement11setOuterXmlERK7QString @ 24 NONAME
- _ZN11QWebElement11toggleClassERK7QString @ 25 NONAME
- _ZN11QWebElement12appendInsideERK7QString @ 26 NONAME
- _ZN11QWebElement12appendInsideERKS_ @ 27 NONAME
- _ZN11QWebElement12setAttributeERK7QStringS2_ @ 28 NONAME
- _ZN11QWebElement12setPlainTextERK7QString @ 29 NONAME
- _ZN11QWebElement13appendOutsideERK7QString @ 30 NONAME
- _ZN11QWebElement13appendOutsideERKS_ @ 31 NONAME
- _ZN11QWebElement13prependInsideERK7QString @ 32 NONAME
- _ZN11QWebElement13prependInsideERKS_ @ 33 NONAME
- _ZN11QWebElement14prependOutsideERK7QString @ 34 NONAME
- _ZN11QWebElement14prependOutsideERKS_ @ 35 NONAME
- _ZN11QWebElement14removeChildrenEv @ 36 NONAME ABSENT
- _ZN11QWebElement14setAttributeNSERK7QStringS2_S2_ @ 37 NONAME
- _ZN11QWebElement15removeAttributeERK7QString @ 38 NONAME
- _ZN11QWebElement16enclosingElementEPN7WebCore4NodeE @ 39 NONAME
- _ZN11QWebElement16setStylePropertyERK7QStringS2_ @ 40 NONAME
- _ZN11QWebElement16takeFromDocumentEv @ 41 NONAME
- _ZN11QWebElement17removeAttributeNSERK7QStringS2_ @ 42 NONAME
- _ZN11QWebElement18evaluateJavaScriptERK7QString @ 43 NONAME
- _ZN11QWebElement18removeFromDocumentEv @ 44 NONAME
- _ZN11QWebElement19encloseContentsWithERK7QString @ 45 NONAME
- _ZN11QWebElement19encloseContentsWithERKS_ @ 46 NONAME
- _ZN11QWebElement7replaceERK7QString @ 47 NONAME
- _ZN11QWebElement7replaceERKS_ @ 48 NONAME
- _ZN11QWebElement8addClassERK7QString @ 49 NONAME
- _ZN11QWebElement8setFocusEv @ 50 NONAME
- _ZN11QWebElementC1EPN7WebCore4NodeE @ 51 NONAME
- _ZN11QWebElementC1EPN7WebCore7ElementE @ 52 NONAME
- _ZN11QWebElementC1ERKS_ @ 53 NONAME
- _ZN11QWebElementC1Ev @ 54 NONAME
- _ZN11QWebElementC2EPN7WebCore4NodeE @ 55 NONAME
- _ZN11QWebElementC2EPN7WebCore7ElementE @ 56 NONAME
- _ZN11QWebElementC2ERKS_ @ 57 NONAME
- _ZN11QWebElementC2Ev @ 58 NONAME
- _ZN11QWebElementD1Ev @ 59 NONAME
- _ZN11QWebElementD2Ev @ 60 NONAME
- _ZN11QWebElementaSERKS_ @ 61 NONAME
- _ZN11QWebHistory12restoreStateERK10QByteArray @ 62 NONAME ABSENT
- _ZN11QWebHistory19setMaximumItemCountEi @ 63 NONAME
- _ZN11QWebHistory4backEv @ 64 NONAME
- _ZN11QWebHistory5clearEv @ 65 NONAME
- _ZN11QWebHistory7forwardEv @ 66 NONAME
- _ZN11QWebHistory8goToItemERK15QWebHistoryItem @ 67 NONAME
- _ZN11QWebHistoryC1Ev @ 68 NONAME
- _ZN11QWebHistoryC2Ev @ 69 NONAME
- _ZN11QWebHistoryD1Ev @ 70 NONAME
- _ZN11QWebHistoryD2Ev @ 71 NONAME
- _ZN12QWebDatabase14removeDatabaseERKS_ @ 72 NONAME
- _ZN12QWebDatabase18removeAllDatabasesEv @ 73 NONAME
- _ZN12QWebDatabaseC1EP19QWebDatabasePrivate @ 74 NONAME
- _ZN12QWebDatabaseC1ERKS_ @ 75 NONAME
- _ZN12QWebDatabaseC2EP19QWebDatabasePrivate @ 76 NONAME
- _ZN12QWebDatabaseC2ERKS_ @ 77 NONAME
- _ZN12QWebDatabaseD1Ev @ 78 NONAME
- _ZN12QWebDatabaseD2Ev @ 79 NONAME
- _ZN12QWebDatabaseaSERKS_ @ 80 NONAME
- _ZN12QWebSettings10iconForUrlERK4QUrl @ 81 NONAME
- _ZN12QWebSettings10webGraphicENS_10WebGraphicE @ 82 NONAME
- _ZN12QWebSettings11setFontSizeENS_8FontSizeEi @ 83 NONAME
- _ZN12QWebSettings12setAttributeENS_12WebAttributeEb @ 84 NONAME
- _ZN12QWebSettings13resetFontSizeENS_8FontSizeE @ 85 NONAME
- _ZN12QWebSettings13setFontFamilyENS_10FontFamilyERK7QString @ 86 NONAME
- _ZN12QWebSettings13setWebGraphicENS_10WebGraphicERK7QPixmap @ 87 NONAME
- _ZN12QWebSettings14globalSettingsEv @ 88 NONAME
- _ZN12QWebSettings14pluginDatabaseEv @ 89 NONAME ABSENT
- _ZN12QWebSettings14resetAttributeENS_12WebAttributeE @ 90 NONAME
- _ZN12QWebSettings15resetFontFamilyENS_10FontFamilyE @ 91 NONAME
- _ZN12QWebSettings16iconDatabasePathEv @ 92 NONAME
- _ZN12QWebSettings17clearIconDatabaseEv @ 93 NONAME
- _ZN12QWebSettings17clearMemoryCachesEv @ 94 NONAME
- _ZN12QWebSettings18offlineStoragePathEv @ 95 NONAME
- _ZN12QWebSettings19maximumPagesInCacheEv @ 96 NONAME
- _ZN12QWebSettings19setIconDatabasePathERK7QString @ 97 NONAME
- _ZN12QWebSettings19setLocalStoragePathERK7QString @ 98 NONAME
- _ZN12QWebSettings20setUserStyleSheetUrlERK4QUrl @ 99 NONAME
- _ZN12QWebSettings21setOfflineStoragePathERK7QString @ 100 NONAME
- _ZN12QWebSettings22setDefaultTextEncodingERK7QString @ 101 NONAME
- _ZN12QWebSettings22setMaximumPagesInCacheEi @ 102 NONAME
- _ZN12QWebSettings23enablePersistentStorageERK7QString @ 103 NONAME
- _ZN12QWebSettings24setObjectCacheCapacitiesEiii @ 104 NONAME
- _ZN12QWebSettings26offlineStorageDefaultQuotaEv @ 105 NONAME
- _ZN12QWebSettings29setOfflineStorageDefaultQuotaEx @ 106 NONAME
- _ZN12QWebSettings30offlineWebApplicationCachePathEv @ 107 NONAME
- _ZN12QWebSettings31offlineWebApplicationCacheQuotaEv @ 108 NONAME
- _ZN12QWebSettings33setOfflineWebApplicationCachePathERK7QString @ 109 NONAME
- _ZN12QWebSettings34setOfflineWebApplicationCacheQuotaEx @ 110 NONAME
- _ZN12QWebSettingsC1EPN7WebCore8SettingsE @ 111 NONAME
- _ZN12QWebSettingsC1Ev @ 112 NONAME
- _ZN12QWebSettingsC2EPN7WebCore8SettingsE @ 113 NONAME
- _ZN12QWebSettingsC2Ev @ 114 NONAME
- _ZN12QWebSettingsD1Ev @ 115 NONAME
- _ZN12QWebSettingsD2Ev @ 116 NONAME
- _ZN13QWebInspector11qt_metacallEN11QMetaObject4CallEiPPv @ 117 NONAME
- _ZN13QWebInspector11qt_metacastEPKc @ 118 NONAME
- _ZN13QWebInspector11resizeEventEP12QResizeEvent @ 119 NONAME
- _ZN13QWebInspector16staticMetaObjectE @ 120 NONAME DATA 16
- _ZN13QWebInspector18windowTitleChangedERK7QString @ 121 NONAME ABSENT
- _ZN13QWebInspector19getStaticMetaObjectEv @ 122 NONAME
- _ZN13QWebInspector5eventEP6QEvent @ 123 NONAME
- _ZN13QWebInspector7setPageEP8QWebPage @ 124 NONAME
- _ZN13QWebInspector9hideEventEP10QHideEvent @ 125 NONAME
- _ZN13QWebInspector9showEventEP10QShowEvent @ 126 NONAME
- _ZN13QWebInspectorC1EP7QWidget @ 127 NONAME
- _ZN13QWebInspectorC2EP7QWidget @ 128 NONAME
- _ZN13QWebInspectorD0Ev @ 129 NONAME
- _ZN13QWebInspectorD1Ev @ 130 NONAME
- _ZN13QWebInspectorD2Ev @ 131 NONAME
- _ZN14QWebPluginInfo10setEnabledEb @ 132 NONAME
- _ZN14QWebPluginInfoC1EPN7WebCore13PluginPackageE @ 133 NONAME
- _ZN14QWebPluginInfoC1ERKS_ @ 134 NONAME
- _ZN14QWebPluginInfoC1Ev @ 135 NONAME
- _ZN14QWebPluginInfoC2EPN7WebCore13PluginPackageE @ 136 NONAME
- _ZN14QWebPluginInfoC2ERKS_ @ 137 NONAME
- _ZN14QWebPluginInfoC2Ev @ 138 NONAME
- _ZN14QWebPluginInfoD1Ev @ 139 NONAME
- _ZN14QWebPluginInfoD2Ev @ 140 NONAME
- _ZN14QWebPluginInfoaSERKS_ @ 141 NONAME
- _ZN15QWebHistoryItem11setUserDataERK8QVariant @ 142 NONAME
- _ZN15QWebHistoryItemC1EP22QWebHistoryItemPrivate @ 143 NONAME
- _ZN15QWebHistoryItemC1ERKS_ @ 144 NONAME
- _ZN15QWebHistoryItemC2EP22QWebHistoryItemPrivate @ 145 NONAME
- _ZN15QWebHistoryItemC2ERKS_ @ 146 NONAME
- _ZN15QWebHistoryItemD1Ev @ 147 NONAME
- _ZN15QWebHistoryItemD2Ev @ 148 NONAME
- _ZN15QWebHistoryItemaSERKS_ @ 149 NONAME
- _ZN16QGraphicsWebView10loadFailedEv @ 150 NONAME ABSENT
- _ZN16QGraphicsWebView10sceneEventEP6QEvent @ 151 NONAME
- _ZN16QGraphicsWebView10setContentERK10QByteArrayRK7QStringRK4QUrl @ 152 NONAME
- _ZN16QGraphicsWebView10urlChangedERK4QUrl @ 153 NONAME
- _ZN16QGraphicsWebView10wheelEventEP24QGraphicsSceneWheelEvent @ 154 NONAME
- _ZN16QGraphicsWebView11iconChangedEv @ 155 NONAME
- _ZN16QGraphicsWebView11loadStartedEv @ 156 NONAME
- _ZN16QGraphicsWebView11qt_metacallEN11QMetaObject4CallEiPPv @ 157 NONAME
- _ZN16QGraphicsWebView11qt_metacastEPKc @ 158 NONAME
- _ZN16QGraphicsWebView11setGeometryERK6QRectF @ 159 NONAME
- _ZN16QGraphicsWebView12focusInEventEP11QFocusEvent @ 160 NONAME
- _ZN16QGraphicsWebView12loadFinishedEv @ 161 NONAME ABSENT
- _ZN16QGraphicsWebView12titleChangedERK7QString @ 162 NONAME
- _ZN16QGraphicsWebView13dragMoveEventEP27QGraphicsSceneDragDropEvent @ 163 NONAME
- _ZN16QGraphicsWebView13focusOutEventEP11QFocusEvent @ 164 NONAME
- _ZN16QGraphicsWebView13keyPressEventEP9QKeyEvent @ 165 NONAME
- _ZN16QGraphicsWebView13setZoomFactorEf @ 166 NONAME
- _ZN16QGraphicsWebView13statusChangedEv @ 167 NONAME ABSENT
- _ZN16QGraphicsWebView14dragEnterEventEP27QGraphicsSceneDragDropEvent @ 168 NONAME
- _ZN16QGraphicsWebView14dragLeaveEventEP27QGraphicsSceneDragDropEvent @ 169 NONAME
- _ZN16QGraphicsWebView14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 170 NONAME
- _ZN16QGraphicsWebView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 171 NONAME
- _ZN16QGraphicsWebView14setInteractiveEb @ 172 NONAME ABSENT
- _ZN16QGraphicsWebView14updateGeometryEv @ 173 NONAME
- _ZN16QGraphicsWebView15hoverLeaveEventEP24QGraphicsSceneHoverEvent @ 174 NONAME
- _ZN16QGraphicsWebView15keyReleaseEventEP9QKeyEvent @ 175 NONAME
- _ZN16QGraphicsWebView15mousePressEventEP24QGraphicsSceneMouseEvent @ 176 NONAME
- _ZN16QGraphicsWebView15progressChangedEf @ 177 NONAME ABSENT
- _ZN16QGraphicsWebView16contextMenuEventEP30QGraphicsSceneContextMenuEvent @ 178 NONAME
- _ZN16QGraphicsWebView16inputMethodEventEP17QInputMethodEvent @ 179 NONAME
- _ZN16QGraphicsWebView16staticMetaObjectE @ 180 NONAME DATA 16
- _ZN16QGraphicsWebView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 181 NONAME
- _ZN16QGraphicsWebView17zoomFactorChangedEv @ 182 NONAME ABSENT
- _ZN16QGraphicsWebView18focusNextPrevChildEb @ 183 NONAME
- _ZN16QGraphicsWebView19getStaticMetaObjectEv @ 184 NONAME
- _ZN16QGraphicsWebView20interactivityChangedEv @ 185 NONAME ABSENT
- _ZN16QGraphicsWebView21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 186 NONAME
- _ZN16QGraphicsWebView4backEv @ 187 NONAME
- _ZN16QGraphicsWebView4loadERK15QNetworkRequestN21QNetworkAccessManager9OperationERK10QByteArray @ 188 NONAME
- _ZN16QGraphicsWebView4loadERK4QUrl @ 189 NONAME
- _ZN16QGraphicsWebView4stopEv @ 190 NONAME
- _ZN16QGraphicsWebView5eventEP6QEvent @ 191 NONAME
- _ZN16QGraphicsWebView5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 192 NONAME
- _ZN16QGraphicsWebView6reloadEv @ 193 NONAME
- _ZN16QGraphicsWebView6setUrlERK4QUrl @ 194 NONAME
- _ZN16QGraphicsWebView7forwardEv @ 195 NONAME
- _ZN16QGraphicsWebView7setHtmlERK7QStringRK4QUrl @ 196 NONAME
- _ZN16QGraphicsWebView7setPageEP8QWebPage @ 197 NONAME
- _ZN16QGraphicsWebView9dropEventEP27QGraphicsSceneDragDropEvent @ 198 NONAME
- _ZN16QGraphicsWebViewC1EP13QGraphicsItem @ 199 NONAME
- _ZN16QGraphicsWebViewC2EP13QGraphicsItem @ 200 NONAME
- _ZN16QGraphicsWebViewD0Ev @ 201 NONAME
- _ZN16QGraphicsWebViewD1Ev @ 202 NONAME
- _ZN16QGraphicsWebViewD2Ev @ 203 NONAME
- _ZN17QWebHitTestResultC1EP24QWebHitTestResultPrivate @ 204 NONAME
- _ZN17QWebHitTestResultC1ERKS_ @ 205 NONAME
- _ZN17QWebHitTestResultC1Ev @ 206 NONAME
- _ZN17QWebHitTestResultC2EP24QWebHitTestResultPrivate @ 207 NONAME
- _ZN17QWebHitTestResultC2ERKS_ @ 208 NONAME
- _ZN17QWebHitTestResultC2Ev @ 209 NONAME
- _ZN17QWebHitTestResultD1Ev @ 210 NONAME
- _ZN17QWebHitTestResultD2Ev @ 211 NONAME
- _ZN17QWebHitTestResultaSERKS_ @ 212 NONAME
- _ZN17QWebPluginFactory11qt_metacallEN11QMetaObject4CallEiPPv @ 213 NONAME
- _ZN17QWebPluginFactory11qt_metacastEPKc @ 214 NONAME
- _ZN17QWebPluginFactory14refreshPluginsEv @ 215 NONAME
- _ZN17QWebPluginFactory16staticMetaObjectE @ 216 NONAME DATA 16
- _ZN17QWebPluginFactory19getStaticMetaObjectEv @ 217 NONAME
- _ZN17QWebPluginFactory9extensionENS_9ExtensionEPKNS_15ExtensionOptionEPNS_15ExtensionReturnE @ 218 NONAME
- _ZN17QWebPluginFactoryC2EP7QObject @ 219 NONAME
- _ZN17QWebPluginFactoryD0Ev @ 220 NONAME
- _ZN17QWebPluginFactoryD1Ev @ 221 NONAME
- _ZN17QWebPluginFactoryD2Ev @ 222 NONAME
- _ZN18QWebPluginDatabase11qt_metacallEN11QMetaObject4CallEiPPv @ 223 NONAME
- _ZN18QWebPluginDatabase11qt_metacastEPKc @ 224 NONAME
- _ZN18QWebPluginDatabase13addSearchPathERK7QString @ 225 NONAME
- _ZN18QWebPluginDatabase14setSearchPathsERK11QStringList @ 226 NONAME
- _ZN18QWebPluginDatabase16staticMetaObjectE @ 227 NONAME DATA 16
- _ZN18QWebPluginDatabase17pluginForMimeTypeERK7QString @ 228 NONAME
- _ZN18QWebPluginDatabase18defaultSearchPathsEv @ 229 NONAME
- _ZN18QWebPluginDatabase19getStaticMetaObjectEv @ 230 NONAME
- _ZN18QWebPluginDatabase29setPreferredPluginForMimeTypeERK7QStringRK14QWebPluginInfo @ 231 NONAME
- _ZN18QWebPluginDatabase7refreshEv @ 232 NONAME
- _ZN18QWebPluginDatabaseC1EP7QObject @ 233 NONAME
- _ZN18QWebPluginDatabaseC2EP7QObject @ 234 NONAME
- _ZN18QWebPluginDatabaseD0Ev @ 235 NONAME
- _ZN18QWebPluginDatabaseD1Ev @ 236 NONAME
- _ZN18QWebPluginDatabaseD2Ev @ 237 NONAME
- _ZN18QWebSecurityOrigin10allOriginsEv @ 238 NONAME
- _ZN18QWebSecurityOrigin12localSchemesEv @ 239 NONAME
- _ZN18QWebSecurityOrigin14addLocalSchemeERK7QString @ 240 NONAME
- _ZN18QWebSecurityOrigin16setDatabaseQuotaEx @ 241 NONAME
- _ZN18QWebSecurityOrigin17removeLocalSchemeERK7QString @ 242 NONAME
- _ZN18QWebSecurityOrigin25whiteListAccessFromOriginERK7QStringS2_S2_b @ 243 NONAME ABSENT
- _ZN18QWebSecurityOrigin27resetOriginAccessWhiteListsEv @ 244 NONAME ABSENT
- _ZN18QWebSecurityOriginC1EP25QWebSecurityOriginPrivate @ 245 NONAME
- _ZN18QWebSecurityOriginC1ERKS_ @ 246 NONAME
- _ZN18QWebSecurityOriginC2EP25QWebSecurityOriginPrivate @ 247 NONAME
- _ZN18QWebSecurityOriginC2ERKS_ @ 248 NONAME
- _ZN18QWebSecurityOriginD1Ev @ 249 NONAME
- _ZN18QWebSecurityOriginD2Ev @ 250 NONAME
- _ZN18QWebSecurityOriginaSERKS_ @ 251 NONAME
- _ZN20QWebHistoryInterface11qt_metacallEN11QMetaObject4CallEiPPv @ 252 NONAME
- _ZN20QWebHistoryInterface11qt_metacastEPKc @ 253 NONAME
- _ZN20QWebHistoryInterface16defaultInterfaceEv @ 254 NONAME
- _ZN20QWebHistoryInterface16staticMetaObjectE @ 255 NONAME DATA 16
- _ZN20QWebHistoryInterface19getStaticMetaObjectEv @ 256 NONAME
- _ZN20QWebHistoryInterface19setDefaultInterfaceEPS_ @ 257 NONAME
- _ZN20QWebHistoryInterfaceC2EP7QObject @ 258 NONAME
- _ZN20QWebHistoryInterfaceD0Ev @ 259 NONAME
- _ZN20QWebHistoryInterfaceD1Ev @ 260 NONAME
- _ZN20QWebHistoryInterfaceD2Ev @ 261 NONAME
- _ZN8QWebPage10chooseFileEP9QWebFrameRK7QString @ 262 NONAME
- _ZN8QWebPage10setPaletteERK8QPalette @ 263 NONAME
- _ZN8QWebPage11linkClickedERK4QUrl @ 264 NONAME
- _ZN8QWebPage11linkHoveredERK7QStringS2_S2_ @ 265 NONAME
- _ZN8QWebPage11loadStartedEv @ 266 NONAME
- _ZN8QWebPage11qt_metacallEN11QMetaObject4CallEiPPv @ 267 NONAME
- _ZN8QWebPage11qt_metacastEPKc @ 268 NONAME
- _ZN8QWebPage12createPluginERK7QStringRK4QUrlRK11QStringListS8_ @ 269 NONAME
- _ZN8QWebPage12createWindowENS_13WebWindowTypeE @ 270 NONAME
- _ZN8QWebPage12frameCreatedEP9QWebFrame @ 271 NONAME
- _ZN8QWebPage12loadFinishedEb @ 272 NONAME
- _ZN8QWebPage12loadProgressEi @ 273 NONAME
- _ZN8QWebPage13triggerActionENS_9WebActionEb @ 274 NONAME
- _ZN8QWebPage14printRequestedEP9QWebFrame @ 275 NONAME
- _ZN8QWebPage15contentsChangedEv @ 276 NONAME
- _ZN8QWebPage15javaScriptAlertEP9QWebFrameRK7QString @ 277 NONAME
- _ZN8QWebPage15scrollRequestedEiiRK5QRect @ 278 NONAME
- _ZN8QWebPage16javaScriptPromptEP9QWebFrameRK7QStringS4_PS2_ @ 279 NONAME
- _ZN8QWebPage16repaintRequestedERK5QRect @ 280 NONAME
- _ZN8QWebPage16selectionChangedEv @ 281 NONAME
- _ZN8QWebPage16setPluginFactoryEP17QWebPluginFactory @ 282 NONAME
- _ZN8QWebPage16staticMetaObjectE @ 283 NONAME DATA 16
- _ZN8QWebPage16statusBarMessageERK7QString @ 284 NONAME
- _ZN8QWebPage17downloadRequestedERK15QNetworkRequest @ 285 NONAME
- _ZN8QWebPage17javaScriptConfirmEP9QWebFrameRK7QString @ 286 NONAME
- _ZN8QWebPage17microFocusChangedEv @ 287 NONAME
- _ZN8QWebPage18focusNextPrevChildEb @ 288 NONAME
- _ZN8QWebPage18setContentEditableEb @ 289 NONAME
- _ZN8QWebPage18unsupportedContentEP13QNetworkReply @ 290 NONAME
- _ZN8QWebPage19getStaticMetaObjectEv @ 291 NONAME
- _ZN8QWebPage20windowCloseRequestedEv @ 292 NONAME
- _ZN8QWebPage21databaseQuotaExceededEP9QWebFrame7QString @ 293 NONAME
- _ZN8QWebPage21webInspectorTriggeredERK11QWebElement @ 294 NONAME ABSENT
- _ZN8QWebPage23acceptNavigationRequestEP9QWebFrameRK15QNetworkRequestNS_14NavigationTypeE @ 295 NONAME
- _ZN8QWebPage23geometryChangeRequestedERK5QRect @ 296 NONAME
- _ZN8QWebPage23saveFrameStateRequestedEP9QWebFrameP15QWebHistoryItem @ 297 NONAME
- _ZN8QWebPage23setLinkDelegationPolicyENS_20LinkDelegationPolicyE @ 298 NONAME
- _ZN8QWebPage23setNetworkAccessManagerEP21QNetworkAccessManager @ 299 NONAME
- _ZN8QWebPage23swallowContextMenuEventEP17QContextMenuEvent @ 300 NONAME
- _ZN8QWebPage24javaScriptConsoleMessageERK7QStringiS2_ @ 301 NONAME
- _ZN8QWebPage25createStandardContextMenuEv @ 302 NONAME
- _ZN8QWebPage25shouldInterruptJavaScriptEv @ 303 NONAME
- _ZN8QWebPage26restoreFrameStateRequestedEP9QWebFrame @ 304 NONAME
- _ZN8QWebPage28setForwardUnsupportedContentEb @ 305 NONAME
- _ZN8QWebPage30updatePositionDependentActionsERK6QPoint @ 306 NONAME
- _ZN8QWebPage32menuBarVisibilityChangeRequestedEb @ 307 NONAME
- _ZN8QWebPage32toolBarVisibilityChangeRequestedEb @ 308 NONAME
- _ZN8QWebPage34statusBarVisibilityChangeRequestedEb @ 309 NONAME
- _ZN8QWebPage5eventEP6QEvent @ 310 NONAME
- _ZN8QWebPage7setViewEP7QWidget @ 311 NONAME
- _ZN8QWebPage8findTextERK7QString6QFlagsINS_8FindFlagEE @ 312 NONAME
- _ZN8QWebPage9extensionENS_9ExtensionEPKNS_15ExtensionOptionEPNS_15ExtensionReturnE @ 313 NONAME
- _ZN8QWebPageC1EP7QObject @ 314 NONAME
- _ZN8QWebPageC2EP7QObject @ 315 NONAME
- _ZN8QWebPageD0Ev @ 316 NONAME
- _ZN8QWebPageD1Ev @ 317 NONAME
- _ZN8QWebPageD2Ev @ 318 NONAME
- _ZN8QWebView10paintEventEP11QPaintEvent @ 319 NONAME
- _ZN8QWebView10setContentERK10QByteArrayRK7QStringRK4QUrl @ 320 NONAME
- _ZN8QWebView10urlChangedERK4QUrl @ 321 NONAME
- _ZN8QWebView10wheelEventEP11QWheelEvent @ 322 NONAME
- _ZN8QWebView11changeEventEP6QEvent @ 323 NONAME
- _ZN8QWebView11iconChangedEv @ 324 NONAME
- _ZN8QWebView11linkClickedERK4QUrl @ 325 NONAME
- _ZN8QWebView11loadStartedEv @ 326 NONAME
- _ZN8QWebView11qt_metacallEN11QMetaObject4CallEiPPv @ 327 NONAME
- _ZN8QWebView11qt_metacastEPKc @ 328 NONAME
- _ZN8QWebView11resizeEventEP12QResizeEvent @ 329 NONAME
- _ZN8QWebView12createWindowEN8QWebPage13WebWindowTypeE @ 330 NONAME
- _ZN8QWebView12focusInEventEP11QFocusEvent @ 331 NONAME
- _ZN8QWebView12loadFinishedEb @ 332 NONAME
- _ZN8QWebView12loadProgressEi @ 333 NONAME
- _ZN8QWebView12titleChangedERK7QString @ 334 NONAME
- _ZN8QWebView13dragMoveEventEP14QDragMoveEvent @ 335 NONAME
- _ZN8QWebView13focusOutEventEP11QFocusEvent @ 336 NONAME
- _ZN8QWebView13keyPressEventEP9QKeyEvent @ 337 NONAME
- _ZN8QWebView13setRenderHintEN8QPainter10RenderHintEb @ 338 NONAME
- _ZN8QWebView13setZoomFactorEf @ 339 NONAME
- _ZN8QWebView14dragEnterEventEP15QDragEnterEvent @ 340 NONAME
- _ZN8QWebView14dragLeaveEventEP15QDragLeaveEvent @ 341 NONAME
- _ZN8QWebView14mouseMoveEventEP11QMouseEvent @ 342 NONAME
- _ZN8QWebView14setRenderHintsE6QFlagsIN8QPainter10RenderHintEE @ 343 NONAME
- _ZN8QWebView15keyReleaseEventEP9QKeyEvent @ 344 NONAME
- _ZN8QWebView15mousePressEventEP11QMouseEvent @ 345 NONAME
- _ZN8QWebView16contextMenuEventEP17QContextMenuEvent @ 346 NONAME
- _ZN8QWebView16inputMethodEventEP17QInputMethodEvent @ 347 NONAME
- _ZN8QWebView16selectionChangedEv @ 348 NONAME
- _ZN8QWebView16staticMetaObjectE @ 349 NONAME DATA 16
- _ZN8QWebView16statusBarMessageERK7QString @ 350 NONAME
- _ZN8QWebView17mouseReleaseEventEP11QMouseEvent @ 351 NONAME
- _ZN8QWebView17triggerPageActionEN8QWebPage9WebActionEb @ 352 NONAME
- _ZN8QWebView18focusNextPrevChildEb @ 353 NONAME
- _ZN8QWebView18guessUrlFromStringERK7QString @ 354 NONAME ABSENT
- _ZN8QWebView19getStaticMetaObjectEv @ 355 NONAME
- _ZN8QWebView21mouseDoubleClickEventEP11QMouseEvent @ 356 NONAME
- _ZN8QWebView21setTextSizeMultiplierEf @ 357 NONAME
- _ZN8QWebView4backEv @ 358 NONAME
- _ZN8QWebView4loadERK15QNetworkRequestN21QNetworkAccessManager9OperationERK10QByteArray @ 359 NONAME
- _ZN8QWebView4loadERK4QUrl @ 360 NONAME
- _ZN8QWebView4stopEv @ 361 NONAME
- _ZN8QWebView5eventEP6QEvent @ 362 NONAME
- _ZN8QWebView6reloadEv @ 363 NONAME
- _ZN8QWebView6setUrlERK4QUrl @ 364 NONAME
- _ZN8QWebView7forwardEv @ 365 NONAME
- _ZN8QWebView7setHtmlERK7QStringRK4QUrl @ 366 NONAME
- _ZN8QWebView7setPageEP8QWebPage @ 367 NONAME
- _ZN8QWebView8findTextERK7QString6QFlagsIN8QWebPage8FindFlagEE @ 368 NONAME
- _ZN8QWebView9dropEventEP10QDropEvent @ 369 NONAME
- _ZN8QWebViewC1EP7QWidget @ 370 NONAME
- _ZN8QWebViewC2EP7QWidget @ 371 NONAME
- _ZN8QWebViewD0Ev @ 372 NONAME
- _ZN8QWebViewD1Ev @ 373 NONAME
- _ZN8QWebViewD2Ev @ 374 NONAME
- _ZN9QWebFrame10setContentERK10QByteArrayRK7QStringRK4QUrl @ 375 NONAME
- _ZN9QWebFrame10urlChangedERK4QUrl @ 376 NONAME
- _ZN9QWebFrame11iconChangedEv @ 377 NONAME
- _ZN9QWebFrame11loadStartedEv @ 378 NONAME
- _ZN9QWebFrame11qt_metacallEN11QMetaObject4CallEiPPv @ 379 NONAME
- _ZN9QWebFrame11qt_metacastEPKc @ 380 NONAME
- _ZN9QWebFrame12loadFinishedEb @ 381 NONAME
- _ZN9QWebFrame12titleChangedERK7QString @ 382 NONAME
- _ZN9QWebFrame13setZoomFactorEf @ 383 NONAME
- _ZN9QWebFrame15provisionalLoadEv @ 384 NONAME
- _ZN9QWebFrame16staticMetaObjectE @ 385 NONAME DATA 16
- _ZN9QWebFrame17setScrollBarValueEN2Qt11OrientationEi @ 386 NONAME
- _ZN9QWebFrame17setScrollPositionERK6QPoint @ 387 NONAME
- _ZN9QWebFrame18evaluateJavaScriptERK7QString @ 388 NONAME
- _ZN9QWebFrame18setScrollBarPolicyEN2Qt11OrientationENS0_15ScrollBarPolicyE @ 389 NONAME
- _ZN9QWebFrame19contentsSizeChangedERK5QSize @ 390 NONAME
- _ZN9QWebFrame19getStaticMetaObjectEv @ 391 NONAME
- _ZN9QWebFrame21setTextSizeMultiplierEf @ 392 NONAME
- _ZN9QWebFrame22initialLayoutCompletedEv @ 393 NONAME
- _ZN9QWebFrame23setClipRenderToViewportEb @ 394 NONAME ABSENT
- _ZN9QWebFrame27addToJavaScriptWindowObjectERK7QStringP7QObject @ 395 NONAME
- _ZN9QWebFrame27addToJavaScriptWindowObjectERK7QStringP7QObjectN13QScriptEngine14ValueOwnershipE @ 396 NONAME
- _ZN9QWebFrame29javaScriptWindowObjectClearedEv @ 397 NONAME
- _ZN9QWebFrame4loadERK15QNetworkRequestN21QNetworkAccessManager9OperationERK10QByteArray @ 398 NONAME
- _ZN9QWebFrame4loadERK4QUrl @ 399 NONAME
- _ZN9QWebFrame5eventEP6QEvent @ 400 NONAME
- _ZN9QWebFrame6renderEP8QPainter @ 401 NONAME
- _ZN9QWebFrame6renderEP8QPainterRK7QRegion @ 402 NONAME
- _ZN9QWebFrame6scrollEii @ 403 NONAME
- _ZN9QWebFrame6setUrlERK4QUrl @ 404 NONAME
- _ZN9QWebFrame7setHtmlERK7QStringRK4QUrl @ 405 NONAME
- _ZN9QWebFrame8setFocusEv @ 406 NONAME
- _ZN9QWebFrameC1EP8QWebPageP13QWebFrameData @ 407 NONAME
- _ZN9QWebFrameC1EPS_P13QWebFrameData @ 408 NONAME
- _ZN9QWebFrameC2EP8QWebPageP13QWebFrameData @ 409 NONAME
- _ZN9QWebFrameC2EPS_P13QWebFrameData @ 410 NONAME
- _ZN9QWebFrameD0Ev @ 411 NONAME
- _ZN9QWebFrameD1Ev @ 412 NONAME
- _ZN9QWebFrameD2Ev @ 413 NONAME
- _ZNK11QWebElement10firstChildEv @ 414 NONAME
- _ZNK11QWebElement10toInnerXmlEv @ 415 NONAME
- _ZNK11QWebElement10toOuterXmlEv @ 416 NONAME
- _ZNK11QWebElement11attributeNSERK7QStringS2_S2_ @ 417 NONAME
- _ZNK11QWebElement11nextSiblingEv @ 418 NONAME
- _ZNK11QWebElement11toPlainTextEv @ 419 NONAME
- _ZNK11QWebElement12hasAttributeERK7QString @ 420 NONAME
- _ZNK11QWebElement12namespaceUriEv @ 421 NONAME
- _ZNK11QWebElement13hasAttributesEv @ 422 NONAME
- _ZNK11QWebElement13stylePropertyERK7QStringNS_20StyleResolveStrategyE @ 423 NONAME
- _ZNK11QWebElement14hasAttributeNSERK7QStringS2_ @ 424 NONAME
- _ZNK11QWebElement15previousSiblingEv @ 425 NONAME
- _ZNK11QWebElement5cloneEv @ 426 NONAME
- _ZNK11QWebElement6isNullEv @ 427 NONAME
- _ZNK11QWebElement6parentEv @ 428 NONAME
- _ZNK11QWebElement6prefixEv @ 429 NONAME
- _ZNK11QWebElement7classesEv @ 430 NONAME
- _ZNK11QWebElement7findAllERK7QString @ 431 NONAME
- _ZNK11QWebElement7tagNameEv @ 432 NONAME
- _ZNK11QWebElement8documentEv @ 433 NONAME
- _ZNK11QWebElement8geometryEv @ 434 NONAME
- _ZNK11QWebElement8hasClassERK7QString @ 435 NONAME
- _ZNK11QWebElement8hasFocusEv @ 436 NONAME
- _ZNK11QWebElement8webFrameEv @ 437 NONAME
- _ZNK11QWebElement9attributeERK7QStringS2_ @ 438 NONAME
- _ZNK11QWebElement9findFirstERK7QString @ 439 NONAME
- _ZNK11QWebElement9lastChildEv @ 440 NONAME
- _ZNK11QWebElement9localNameEv @ 441 NONAME
- _ZNK11QWebElementeqERKS_ @ 442 NONAME
- _ZNK11QWebElementneERKS_ @ 443 NONAME
- _ZNK11QWebHistory11currentItemEv @ 444 NONAME
- _ZNK11QWebHistory11forwardItemEv @ 445 NONAME
- _ZNK11QWebHistory12canGoForwardEv @ 446 NONAME
- _ZNK11QWebHistory12forwardItemsEi @ 447 NONAME
- _ZNK11QWebHistory16currentItemIndexEv @ 448 NONAME
- _ZNK11QWebHistory16maximumItemCountEv @ 449 NONAME
- _ZNK11QWebHistory5countEv @ 450 NONAME
- _ZNK11QWebHistory5itemsEv @ 451 NONAME
- _ZNK11QWebHistory6itemAtEi @ 452 NONAME
- _ZNK11QWebHistory8backItemEv @ 453 NONAME
- _ZNK11QWebHistory9backItemsEi @ 454 NONAME
- _ZNK11QWebHistory9canGoBackEv @ 455 NONAME
- _ZNK11QWebHistory9saveStateENS_19HistoryStateVersionE @ 456 NONAME ABSENT
- _ZNK12QWebDatabase11displayNameEv @ 457 NONAME
- _ZNK12QWebDatabase12expectedSizeEv @ 458 NONAME
- _ZNK12QWebDatabase4nameEv @ 459 NONAME
- _ZNK12QWebDatabase4sizeEv @ 460 NONAME
- _ZNK12QWebDatabase6originEv @ 461 NONAME
- _ZNK12QWebDatabase8fileNameEv @ 462 NONAME
- _ZNK12QWebSettings10fontFamilyENS_10FontFamilyE @ 463 NONAME
- _ZNK12QWebSettings13testAttributeENS_12WebAttributeE @ 464 NONAME
- _ZNK12QWebSettings16localStoragePathEv @ 465 NONAME
- _ZNK12QWebSettings17userStyleSheetUrlEv @ 466 NONAME
- _ZNK12QWebSettings19defaultTextEncodingEv @ 467 NONAME
- _ZNK12QWebSettings8fontSizeENS_8FontSizeE @ 468 NONAME
- _ZNK13QWebInspector10metaObjectEv @ 469 NONAME
- _ZNK13QWebInspector4pageEv @ 470 NONAME
- _ZNK13QWebInspector8sizeHintEv @ 471 NONAME
- _ZNK14QWebPluginInfo11descriptionEv @ 472 NONAME
- _ZNK14QWebPluginInfo16supportsMimeTypeERK7QString @ 473 NONAME
- _ZNK14QWebPluginInfo4nameEv @ 474 NONAME
- _ZNK14QWebPluginInfo4pathEv @ 475 NONAME
- _ZNK14QWebPluginInfo6isNullEv @ 476 NONAME
- _ZNK14QWebPluginInfo9isEnabledEv @ 477 NONAME
- _ZNK14QWebPluginInfo9mimeTypesEv @ 478 NONAME
- _ZNK14QWebPluginInfoeqERKS_ @ 479 NONAME
- _ZNK14QWebPluginInfoneERKS_ @ 480 NONAME
- _ZNK15QWebHistoryItem11lastVisitedEv @ 481 NONAME
- _ZNK15QWebHistoryItem11originalUrlEv @ 482 NONAME
- _ZNK15QWebHistoryItem3urlEv @ 483 NONAME
- _ZNK15QWebHistoryItem4iconEv @ 484 NONAME
- _ZNK15QWebHistoryItem5titleEv @ 485 NONAME
- _ZNK15QWebHistoryItem7isValidEv @ 486 NONAME
- _ZNK15QWebHistoryItem8userDataEv @ 487 NONAME
- _ZNK16QGraphicsWebView10metaObjectEv @ 488 NONAME
- _ZNK16QGraphicsWebView10zoomFactorEv @ 489 NONAME
- _ZNK16QGraphicsWebView13isInteractiveEv @ 490 NONAME ABSENT
- _ZNK16QGraphicsWebView3urlEv @ 491 NONAME
- _ZNK16QGraphicsWebView4iconEv @ 492 NONAME
- _ZNK16QGraphicsWebView4pageEv @ 493 NONAME
- _ZNK16QGraphicsWebView5titleEv @ 494 NONAME
- _ZNK16QGraphicsWebView6statusEv @ 495 NONAME ABSENT
- _ZNK16QGraphicsWebView6toHtmlEv @ 496 NONAME ABSENT
- _ZNK16QGraphicsWebView7historyEv @ 497 NONAME
- _ZNK16QGraphicsWebView8progressEv @ 498 NONAME ABSENT
- _ZNK16QGraphicsWebView8settingsEv @ 499 NONAME
- _ZNK17QWebHitTestResult11linkElementEv @ 500 NONAME
- _ZNK17QWebHitTestResult12boundingRectEv @ 501 NONAME
- _ZNK17QWebHitTestResult13alternateTextEv @ 502 NONAME
- _ZNK17QWebHitTestResult15linkTargetFrameEv @ 503 NONAME
- _ZNK17QWebHitTestResult17isContentEditableEv @ 504 NONAME
- _ZNK17QWebHitTestResult17isContentSelectedEv @ 505 NONAME
- _ZNK17QWebHitTestResult21enclosingBlockElementEv @ 506 NONAME
- _ZNK17QWebHitTestResult3posEv @ 507 NONAME
- _ZNK17QWebHitTestResult5frameEv @ 508 NONAME
- _ZNK17QWebHitTestResult5titleEv @ 509 NONAME
- _ZNK17QWebHitTestResult6isNullEv @ 510 NONAME
- _ZNK17QWebHitTestResult6pixmapEv @ 511 NONAME
- _ZNK17QWebHitTestResult7elementEv @ 512 NONAME
- _ZNK17QWebHitTestResult7linkUrlEv @ 513 NONAME
- _ZNK17QWebHitTestResult8imageUrlEv @ 514 NONAME
- _ZNK17QWebHitTestResult8linkTextEv @ 515 NONAME
- _ZNK17QWebHitTestResult9linkTitleEv @ 516 NONAME
- _ZNK17QWebPluginFactory10metaObjectEv @ 517 NONAME
- _ZNK17QWebPluginFactory17supportsExtensionENS_9ExtensionE @ 518 NONAME
- _ZNK17QWebPluginFactory8MimeTypeeqERKS0_ @ 519 NONAME
- _ZNK18QWebPluginDatabase10metaObjectEv @ 520 NONAME
- _ZNK18QWebPluginDatabase11searchPathsEv @ 521 NONAME
- _ZNK18QWebPluginDatabase7pluginsEv @ 522 NONAME
- _ZNK18QWebSecurityOrigin13databaseQuotaEv @ 523 NONAME
- _ZNK18QWebSecurityOrigin13databaseUsageEv @ 524 NONAME
- _ZNK18QWebSecurityOrigin4hostEv @ 525 NONAME
- _ZNK18QWebSecurityOrigin4portEv @ 526 NONAME
- _ZNK18QWebSecurityOrigin6schemeEv @ 527 NONAME
- _ZNK18QWebSecurityOrigin9databasesEv @ 528 NONAME
- _ZNK20QWebHistoryInterface10metaObjectEv @ 529 NONAME
- _ZNK8QWebPage10isModifiedEv @ 530 NONAME
- _ZNK8QWebPage10metaObjectEv @ 531 NONAME
- _ZNK8QWebPage10totalBytesEv @ 532 NONAME
- _ZNK8QWebPage12currentFrameEv @ 533 NONAME
- _ZNK8QWebPage12selectedTextEv @ 534 NONAME
- _ZNK8QWebPage12viewportSizeEv @ 535 NONAME
- _ZNK8QWebPage13bytesReceivedEv @ 536 NONAME
- _ZNK8QWebPage13pluginFactoryEv @ 537 NONAME
- _ZNK8QWebPage15setViewportSizeERK5QSize @ 538 NONAME
- _ZNK8QWebPage15userAgentForUrlERK4QUrl @ 539 NONAME
- _ZNK8QWebPage16inputMethodQueryEN2Qt16InputMethodQueryE @ 540 NONAME
- _ZNK8QWebPage17fixedContentsSizeEv @ 541 NONAME ABSENT
- _ZNK8QWebPage17isContentEditableEv @ 542 NONAME
- _ZNK8QWebPage17supportsExtensionENS_9ExtensionE @ 543 NONAME
- _ZNK8QWebPage20linkDelegationPolicyEv @ 544 NONAME
- _ZNK8QWebPage20networkAccessManagerEv @ 545 NONAME
- _ZNK8QWebPage20setFixedContentsSizeERK5QSize @ 546 NONAME ABSENT
- _ZNK8QWebPage25forwardUnsupportedContentEv @ 547 NONAME
- _ZNK8QWebPage4viewEv @ 548 NONAME
- _ZNK8QWebPage6actionENS_9WebActionE @ 549 NONAME
- _ZNK8QWebPage7frameAtERK6QPoint @ 550 NONAME
- _ZNK8QWebPage7historyEv @ 551 NONAME
- _ZNK8QWebPage7paletteEv @ 552 NONAME
- _ZNK8QWebPage8settingsEv @ 553 NONAME
- _ZNK8QWebPage9mainFrameEv @ 554 NONAME
- _ZNK8QWebPage9undoStackEv @ 555 NONAME
- _ZNK8QWebView10isModifiedEv @ 556 NONAME
- _ZNK8QWebView10metaObjectEv @ 557 NONAME
- _ZNK8QWebView10pageActionEN8QWebPage9WebActionE @ 558 NONAME
- _ZNK8QWebView10zoomFactorEv @ 559 NONAME
- _ZNK8QWebView11renderHintsEv @ 560 NONAME
- _ZNK8QWebView12selectedTextEv @ 561 NONAME
- _ZNK8QWebView16inputMethodQueryEN2Qt16InputMethodQueryE @ 562 NONAME
- _ZNK8QWebView18textSizeMultiplierEv @ 563 NONAME
- _ZNK8QWebView3urlEv @ 564 NONAME
- _ZNK8QWebView4iconEv @ 565 NONAME
- _ZNK8QWebView4pageEv @ 566 NONAME
- _ZNK8QWebView5printEP8QPrinter @ 567 NONAME
- _ZNK8QWebView5titleEv @ 568 NONAME
- _ZNK8QWebView7historyEv @ 569 NONAME
- _ZNK8QWebView8settingsEv @ 570 NONAME
- _ZNK8QWebView8sizeHintEv @ 571 NONAME
- _ZNK9QWebFrame10metaObjectEv @ 572 NONAME
- _ZNK9QWebFrame10zoomFactorEv @ 573 NONAME
- _ZNK9QWebFrame11childFramesEv @ 574 NONAME
- _ZNK9QWebFrame11parentFrameEv @ 575 NONAME
- _ZNK9QWebFrame11toPlainTextEv @ 576 NONAME
- _ZNK9QWebFrame12contentsSizeEv @ 577 NONAME
- _ZNK9QWebFrame12requestedUrlEv @ 578 NONAME
- _ZNK9QWebFrame14hitTestContentERK6QPoint @ 579 NONAME
- _ZNK9QWebFrame14renderTreeDumpEv @ 580 NONAME
- _ZNK9QWebFrame14scrollBarValueEN2Qt11OrientationE @ 581 NONAME
- _ZNK9QWebFrame14scrollPositionEv @ 582 NONAME
- _ZNK9QWebFrame14securityOriginEv @ 583 NONAME
- _ZNK9QWebFrame15documentElementEv @ 584 NONAME
- _ZNK9QWebFrame15findAllElementsERK7QString @ 585 NONAME
- _ZNK9QWebFrame15scrollBarPolicyEN2Qt11OrientationE @ 586 NONAME
- _ZNK9QWebFrame16findFirstElementERK7QString @ 587 NONAME
- _ZNK9QWebFrame16scrollBarMaximumEN2Qt11OrientationE @ 588 NONAME
- _ZNK9QWebFrame16scrollBarMinimumEN2Qt11OrientationE @ 589 NONAME
- _ZNK9QWebFrame17scrollBarGeometryEN2Qt11OrientationE @ 590 NONAME
- _ZNK9QWebFrame18textSizeMultiplierEv @ 591 NONAME
- _ZNK9QWebFrame20clipRenderToViewportEv @ 592 NONAME ABSENT
- _ZNK9QWebFrame3posEv @ 593 NONAME
- _ZNK9QWebFrame3urlEv @ 594 NONAME
- _ZNK9QWebFrame4iconEv @ 595 NONAME
- _ZNK9QWebFrame4pageEv @ 596 NONAME
- _ZNK9QWebFrame5titleEv @ 597 NONAME
- _ZNK9QWebFrame6toHtmlEv @ 598 NONAME
- _ZNK9QWebFrame7baseUrlEv @ 599 NONAME
- _ZNK9QWebFrame8geometryEv @ 600 NONAME
- _ZNK9QWebFrame8hasFocusEv @ 601 NONAME
- _ZNK9QWebFrame8metaDataEv @ 602 NONAME
- _ZNK9QWebFrame9frameNameEv @ 603 NONAME
- _ZTI13QWebInspector @ 604 NONAME
- _ZTI16QGraphicsWebView @ 605 NONAME
- _ZTI17QWebPluginFactory @ 606 NONAME
- _ZTI18QWebPluginDatabase @ 607 NONAME
- _ZTI20QWebHistoryInterface @ 608 NONAME
- _ZTI8QWebPage @ 609 NONAME
- _ZTI8QWebView @ 610 NONAME
- _ZTI9QWebFrame @ 611 NONAME
- _ZTV13QWebInspector @ 612 NONAME
- _ZTV16QGraphicsWebView @ 613 NONAME
- _ZTV17QWebPluginFactory @ 614 NONAME
- _ZTV18QWebPluginDatabase @ 615 NONAME
- _ZTV20QWebHistoryInterface @ 616 NONAME
- _ZTV8QWebPage @ 617 NONAME
- _ZTV8QWebView @ 618 NONAME
- _ZTV9QWebFrame @ 619 NONAME
- _ZThn16_N16QGraphicsWebView11setGeometryERK6QRectF @ 620 NONAME
- _ZThn16_N16QGraphicsWebView14updateGeometryEv @ 621 NONAME
- _ZThn16_N16QGraphicsWebViewD0Ev @ 622 NONAME
- _ZThn16_N16QGraphicsWebViewD1Ev @ 623 NONAME
- _ZThn8_N13QWebInspectorD0Ev @ 624 NONAME
- _ZThn8_N13QWebInspectorD1Ev @ 625 NONAME
- _ZThn8_N16QGraphicsWebView10sceneEventEP6QEvent @ 626 NONAME
- _ZThn8_N16QGraphicsWebView10wheelEventEP24QGraphicsSceneWheelEvent @ 627 NONAME
- _ZThn8_N16QGraphicsWebView12focusInEventEP11QFocusEvent @ 628 NONAME
- _ZThn8_N16QGraphicsWebView13dragMoveEventEP27QGraphicsSceneDragDropEvent @ 629 NONAME
- _ZThn8_N16QGraphicsWebView13focusOutEventEP11QFocusEvent @ 630 NONAME
- _ZThn8_N16QGraphicsWebView13keyPressEventEP9QKeyEvent @ 631 NONAME
- _ZThn8_N16QGraphicsWebView14dragEnterEventEP27QGraphicsSceneDragDropEvent @ 632 NONAME
- _ZThn8_N16QGraphicsWebView14dragLeaveEventEP27QGraphicsSceneDragDropEvent @ 633 NONAME
- _ZThn8_N16QGraphicsWebView14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 634 NONAME
- _ZThn8_N16QGraphicsWebView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 635 NONAME
- _ZThn8_N16QGraphicsWebView15hoverLeaveEventEP24QGraphicsSceneHoverEvent @ 636 NONAME
- _ZThn8_N16QGraphicsWebView15keyReleaseEventEP9QKeyEvent @ 637 NONAME
- _ZThn8_N16QGraphicsWebView15mousePressEventEP24QGraphicsSceneMouseEvent @ 638 NONAME
- _ZThn8_N16QGraphicsWebView16contextMenuEventEP30QGraphicsSceneContextMenuEvent @ 639 NONAME
- _ZThn8_N16QGraphicsWebView16inputMethodEventEP17QInputMethodEvent @ 640 NONAME
- _ZThn8_N16QGraphicsWebView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 641 NONAME
- _ZThn8_N16QGraphicsWebView21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 642 NONAME
- _ZThn8_N16QGraphicsWebView5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 643 NONAME
- _ZThn8_N16QGraphicsWebView9dropEventEP27QGraphicsSceneDragDropEvent @ 644 NONAME
- _ZThn8_N16QGraphicsWebViewD0Ev @ 645 NONAME
- _ZThn8_N16QGraphicsWebViewD1Ev @ 646 NONAME
- _ZThn8_N8QWebViewD0Ev @ 647 NONAME
- _ZThn8_N8QWebViewD1Ev @ 648 NONAME
- _ZlsR11QDataStreamRK11QWebHistory @ 649 NONAME
- _ZrsR11QDataStreamR11QWebHistory @ 650 NONAME
- _Z32qt_drt_whiteListAccessFromOriginRK7QStringS1_S1_b @ 651 NONAME
- _Z33qt_drt_counterValueForElementByIdP9QWebFrameRK7QString @ 652 NONAME ABSENT
- _Z34qt_drt_resetOriginAccessWhiteListsv @ 653 NONAME
- _ZN11QWebElement17removeAllChildrenEv @ 654 NONAME
- _ZN11QWebElement6renderEP8QPainter @ 655 NONAME
- _ZN12QWebSettings30setPrintingMaximumShrinkFactorEf @ 656 NONAME ABSENT
- _ZN12QWebSettings30setPrintingMinimumShrinkFactorEf @ 657 NONAME ABSENT
- _ZN16QGraphicsWebView10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 658 NONAME
- _ZN16QGraphicsWebView11linkClickedERK4QUrl @ 659 NONAME
- _ZN16QGraphicsWebView12loadFinishedEb @ 660 NONAME
- _ZN16QGraphicsWebView12loadProgressEi @ 661 NONAME
- _ZN16QGraphicsWebView16statusBarMessageERK7QString @ 662 NONAME
- _ZN16QGraphicsWebView17triggerPageActionEN8QWebPage9WebActionEb @ 663 NONAME
- _ZN16QGraphicsWebView8findTextERK7QString6QFlagsIN8QWebPage8FindFlagEE @ 664 NONAME
- _ZN21QWebElementCollection6appendERKS_ @ 665 NONAME
- _ZN21QWebElementCollectionC1ERK11QWebElementRK7QString @ 666 NONAME
- _ZN21QWebElementCollectionC1ERKS_ @ 667 NONAME
- _ZN21QWebElementCollectionC1Ev @ 668 NONAME
- _ZN21QWebElementCollectionC2ERK11QWebElementRK7QString @ 669 NONAME
- _ZN21QWebElementCollectionC2ERKS_ @ 670 NONAME
- _ZN21QWebElementCollectionC2Ev @ 671 NONAME
- _ZN21QWebElementCollectionD1Ev @ 672 NONAME
- _ZN21QWebElementCollectionD2Ev @ 673 NONAME
- _ZN21QWebElementCollectionaSERKS_ @ 674 NONAME
- _ZN9QWebFrame6renderEP8QPainterNS_11RenderLayerERK7QRegion @ 675 NONAME
- _ZNK12QWebSettings27printingMaximumShrinkFactorEv @ 676 NONAME ABSENT
- _ZNK12QWebSettings27printingMinimumShrinkFactorEv @ 677 NONAME ABSENT
- _ZNK16QGraphicsWebView10isModifiedEv @ 678 NONAME
- _ZNK16QGraphicsWebView10pageActionEN8QWebPage9WebActionE @ 679 NONAME
- _ZNK16QGraphicsWebView16inputMethodQueryEN2Qt16InputMethodQueryE @ 680 NONAME
- _ZNK16QGraphicsWebView8sizeHintEN2Qt8SizeHintERK6QSizeF @ 681 NONAME
- _ZNK21QWebElementCollection2atEi @ 682 NONAME
- _ZNK21QWebElementCollection5countEv @ 683 NONAME
- _ZNK21QWebElementCollection6toListEv @ 684 NONAME
- _ZNK21QWebElementCollectionplERKS_ @ 685 NONAME
- _ZNK8QWebPage21preferredContentsSizeEv @ 686 NONAME
- _ZNK8QWebPage24setPreferredContentsSizeERK5QSize @ 687 NONAME
- _ZThn16_NK16QGraphicsWebView8sizeHintEN2Qt8SizeHintERK6QSizeF @ 688 NONAME
- _ZThn8_N16QGraphicsWebView10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 689 NONAME
- _ZThn8_NK16QGraphicsWebView16inputMethodQueryEN2Qt16InputMethodQueryE @ 690 NONAME
- _ZNK11QWebElement14attributeNamesERK7QString @ 691 NONAME
- _Z23qt_networkAccessAllowedb @ 692 NONAME
- _Z25qt_resumeActiveDOMObjectsP9QWebFrame @ 693 NONAME
- _Z26qt_suspendActiveDOMObjectsP9QWebFrame @ 694 NONAME
- _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameii @ 695 NONAME ABSENT
- _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameiiRK6QPoint @ 696 NONAME
- _ZN9QWebFrame17scrollRecursivelyEii @ 697 NONAME ABSENT
- _ZN16QGraphicsWebView20setResizesToContentsEb @ 698 NONAME
- _ZNK16QGraphicsWebView17resizesToContentsEv @ 699 NONAME
- _Z20qt_drt_numberOfPagesP9QWebFrameff @ 700 NONAME ABSENT
- _Z24qt_drt_pauseSVGAnimationP9QWebFrameRK7QStringdS3_ @ 701 NONAME ABSENT
- _Z24qt_drt_webinspector_showP8QWebPage @ 702 NONAME ABSENT
- _Z24qt_drt_workerThreadCountv @ 703 NONAME ABSENT
- _Z25qt_drt_hasDocumentElementP9QWebFrame @ 704 NONAME ABSENT
- _Z25qt_drt_webinspector_closeP8QWebPage @ 705 NONAME ABSENT
- _Z31qt_drt_pageNumberForElementByIdP9QWebFrameRK7QStringff @ 706 NONAME ABSENT
- _Z33qt_drt_webinspector_executeScriptP8QWebPagelRK7QString @ 707 NONAME ABSENT
- _Z34qt_drt_setTimelineProfilingEnabledP8QWebPageb @ 708 NONAME ABSENT
- _Z32qt_drt_setFrameFlatteningEnabledP8QWebPageb @ 709 NONAME ABSENT
- _Z36qt_drt_evaluateScriptInIsolatedWorldP9QWebFrameiRK7QString @ 710 NONAME ABSENT
- _Z47qt_drt_setDomainRelaxationForbiddenForURLSchemebRK7QString @ 711 NONAME ABSENT
- _ZN9QWebFrame11pageChangedEv @ 712 NONAME
- _ZN9QWebFrame14scrollToAnchorERK7QString @ 713 NONAME
- _ZN12QWebSettings15setInspectorUrlERK4QUrl @ 714 NONAME ABSENT
- _ZN13QWebInspector10closeEventEP11QCloseEvent @ 715 NONAME
- _ZN16QGraphicsWebView26setTiledBackingStoreFrozenEb @ 716 NONAME
- _ZNK16QGraphicsWebView25isTiledBackingStoreFrozenEv @ 717 NONAME
- _Z18qt_wrt_setViewModeP8QWebPageRK7QString @ 718 NONAME ABSENT
- _Z19qt_drt_setMediaTypeP9QWebFrameRK7QString @ 719 NONAME ABSENT
- _Z26qt_drt_enableCaretBrowsingP8QWebPageb @ 720 NONAME ABSENT
- _ZNK12QWebSettings12inspectorUrlEv @ 721 NONAME ABSENT
- _ZN23DumpRenderTreeSupportQt19webPageSetGroupNameEP8QWebPageRK7QString @ 722 NONAME
- _ZN23DumpRenderTreeSupportQt16webPageGroupNameEP8QWebPage @ 723 NONAME
- _ZN23DumpRenderTreeSupportQt23garbageCollectorCollectEv @ 724 NONAME
- _Z32qtwebkit_webframe_scrollOverflowP9QWebFrameiiRK6QPoint @ 725 NONAME
- _ZN23DumpRenderTreeSupportQt12setMediaTypeEP9QWebFrameRK7QString @ 726 NONAME
- _ZN23DumpRenderTreeSupportQt13numberOfPagesEP9QWebFrameff @ 727 NONAME
- _ZN23DumpRenderTreeSupportQt13selectedRangeEP8QWebPage @ 728 NONAME
- _ZN23DumpRenderTreeSupportQt14clearFrameNameEP9QWebFrame @ 729 NONAME
- _ZN23DumpRenderTreeSupportQt14pauseAnimationEP9QWebFrameRK7QStringdS4_ @ 730 NONAME
- _ZN23DumpRenderTreeSupportQt15dumpFrameLoaderEb @ 731 NONAME
- _ZN23DumpRenderTreeSupportQt16dumpNotificationEb @ 732 NONAME
- _ZN23DumpRenderTreeSupportQt16isCommandEnabledEP8QWebPageRK7QString @ 733 NONAME
- _ZN23DumpRenderTreeSupportQt16webInspectorShowEP8QWebPage @ 734 NONAME
- _ZN23DumpRenderTreeSupportQt17pauseSVGAnimationEP9QWebFrameRK7QStringdS4_ @ 735 NONAME
- _ZN23DumpRenderTreeSupportQt17webInspectorCloseEP8QWebPage @ 736 NONAME
- _ZN23DumpRenderTreeSupportQt17workerThreadCountEv @ 737 NONAME
- _ZN23DumpRenderTreeSupportQt18hasDocumentElementEP9QWebFrame @ 738 NONAME
- _ZN23DumpRenderTreeSupportQt20dumpEditingCallbacksEb @ 739 NONAME
- _ZN23DumpRenderTreeSupportQt21markerTextForListItemERK11QWebElement @ 740 NONAME
- _ZN23DumpRenderTreeSupportQt22javaScriptObjectsCountEv @ 741 NONAME
- _ZN23DumpRenderTreeSupportQt23setCaretBrowsingEnabledEP8QWebPageb @ 742 NONAME
- _ZN23DumpRenderTreeSupportQt24executeCoreCommandByNameEP8QWebPageRK7QStringS4_ @ 743 NONAME
- _ZN23DumpRenderTreeSupportQt21dumpSetAcceptsEditingEb @ 744 NONAME
- _ZN23DumpRenderTreeSupportQt22resumeActiveDOMObjectsEP9QWebFrame @ 745 NONAME
- _ZN23DumpRenderTreeSupportQt23suspendActiveDOMObjectsEP9QWebFrame @ 746 NONAME
- _ZN23DumpRenderTreeSupportQt24numberOfActiveAnimationsEP9QWebFrame @ 747 NONAME
- _ZN23DumpRenderTreeSupportQt24pageNumberForElementByIdEP9QWebFrameRK7QStringff @ 748 NONAME
- _ZN23DumpRenderTreeSupportQt25dumpResourceLoadCallbacksEb @ 749 NONAME
- _ZN23DumpRenderTreeSupportQt25pauseTransitionOfPropertyEP9QWebFrameRK7QStringdS4_ @ 750 NONAME
- _ZN23DumpRenderTreeSupportQt25setFrameFlatteningEnabledEP8QWebPageb @ 751 NONAME
- _ZN23DumpRenderTreeSupportQt25webInspectorExecuteScriptEP8QWebPagelRK7QString @ 752 NONAME
- _ZN23DumpRenderTreeSupportQt25whiteListAccessFromOriginERK7QStringS2_S2_b @ 753 NONAME
- _ZN23DumpRenderTreeSupportQt26counterValueForElementByIdEP9QWebFrameRK7QString @ 754 NONAME
- _ZN23DumpRenderTreeSupportQt26firstRectForCharacterRangeEP8QWebPageii @ 755 NONAME
- _ZN23DumpRenderTreeSupportQt26overwritePluginDirectoriesEv @ 756 NONAME
- _ZN23DumpRenderTreeSupportQt27resetOriginAccessWhiteListsEv @ 757 NONAME
- _ZN23DumpRenderTreeSupportQt27setSmartInsertDeleteEnabledEP8QWebPageb @ 758 NONAME
- _ZN23DumpRenderTreeSupportQt27setTimelineProfilingEnabledEP8QWebPageb @ 759 NONAME
- _ZN23DumpRenderTreeSupportQt28setDumpRenderTreeModeEnabledEb @ 760 NONAME
- _ZN23DumpRenderTreeSupportQt29dumpResourceLoadCallbacksPathERK7QString @ 761 NONAME
- _ZN23DumpRenderTreeSupportQt29evaluateScriptInIsolatedWorldEP9QWebFrameiRK7QString @ 762 NONAME
- _ZN23DumpRenderTreeSupportQt29setJavaScriptProfilingEnabledEP9QWebFrameb @ 763 NONAME
- _ZN23DumpRenderTreeSupportQt29setWillSendRequestReturnsNullEb @ 764 NONAME
- _ZN23DumpRenderTreeSupportQt30setWillSendRequestClearHeadersERK11QStringList @ 765 NONAME
- _ZN23DumpRenderTreeSupportQt33computedStyleIncludingVisitedInfoERK11QWebElement @ 766 NONAME
- _ZN23DumpRenderTreeSupportQt34setSelectTrailingWhitespaceEnabledEP8QWebPageb @ 767 NONAME
- _ZN23DumpRenderTreeSupportQt39elementDoesAutoCompleteForElementWithIdEP9QWebFrameRK7QString @ 768 NONAME
- _ZN23DumpRenderTreeSupportQt39setWillSendRequestReturnsNullOnRedirectEb @ 769 NONAME
- _ZN23DumpRenderTreeSupportQt40garbageCollectorCollectOnAlternateThreadEb @ 770 NONAME
- _ZN23DumpRenderTreeSupportQt40setDomainRelaxationForbiddenForURLSchemeEbRK7QString @ 771 NONAME
- _ZN23DumpRenderTreeSupportQt18setEditingBehaviorEP8QWebPageRK7QString @ 772 NONAME
- _ZN23DumpRenderTreeSupportQt24setNotificationsReceiverEP7QObject @ 773 NONAME ABSENT
- _ZN23DumpRenderTreeSupportQt26allowNotificationForOriginERK7QString @ 774 NONAME ABSENT
- _ZN23DumpRenderTreeSupportQt26setCheckPermissionFunctionEPFvP7QObjectRK4QUrlR22NotificationPermissionE @ 775 NONAME ABSENT
- _ZN23DumpRenderTreeSupportQt28setRequestPermissionFunctionEPFvP7QObjectRK7QStringE @ 776 NONAME ABSENT
- _ZN23DumpRenderTreeSupportQt31removeWhiteListAccessFromOriginERK7QStringS2_S2_b @ 777 NONAME
- _ZN23DumpRenderTreeSupportQt11shouldCloseEP9QWebFrame @ 778 NONAME
- _ZN23DumpRenderTreeSupportQt12isTargetItemERK15QWebHistoryItem @ 779 NONAME
- _ZN23DumpRenderTreeSupportQt17historyItemTargetERK15QWebHistoryItem @ 780 NONAME
- _ZN23DumpRenderTreeSupportQt20getChildHistoryItemsERK15QWebHistoryItem @ 781 NONAME
- _ZN23DumpRenderTreeSupportQt23setMockGeolocationErrorEiRK7QString @ 782 NONAME ABSENT
- _ZN23DumpRenderTreeSupportQt26setMockGeolocationPositionEddd @ 783 NONAME ABSENT
- _ZN23DumpRenderTreeSupportQt17clearScriptWorldsEv @ 784 NONAME
- _ZN23DumpRenderTreeSupportQt23setCustomPolicyDelegateEbb @ 785 NONAME
- _ZN15QWebScriptWorldC1ERKS_ @ 786 NONAME
- _ZN15QWebScriptWorldC1Ev @ 787 NONAME
- _ZN15QWebScriptWorldC2ERKS_ @ 788 NONAME
- _ZN15QWebScriptWorldC2Ev @ 789 NONAME
- _ZN15QWebScriptWorldD1Ev @ 790 NONAME
- _ZN15QWebScriptWorldD2Ev @ 791 NONAME
- _ZN15QWebScriptWorldaSERKS_ @ 792 NONAME
- _ZN23DumpRenderTreeSupportQt29dumpResourceResponseMIMETypesEb @ 793 NONAME
- _ZN23DumpRenderTreeSupportQtC1Ev @ 794 NONAME
- _ZN23DumpRenderTreeSupportQtC2Ev @ 795 NONAME
- _ZN23DumpRenderTreeSupportQtD1Ev @ 796 NONAME
- _ZN23DumpRenderTreeSupportQtD2Ev @ 797 NONAME
- _ZN8QWebPage23allowGeolocationRequestEP9QWebFrame @ 798 NONAME ABSENT
- _ZN8QWebPage23viewportChangeRequestedERKNS_13ViewportHintsE @ 799 NONAME ABSENT
- _ZNK15QWebScriptWorld5worldEv @ 800 NONAME
- _ZN16QGraphicsWebView13setDeviceSizeERK5QSize @ 801 NONAME ABSENT
- _ZN23DumpRenderTreeSupportQt12pagePropertyEP9QWebFrameRK7QStringi @ 802 NONAME
- _ZN23DumpRenderTreeSupportQt16isPageBoxVisibleEP9QWebFramei @ 803 NONAME
- _ZN23DumpRenderTreeSupportQt16resumeAnimationsEP9QWebFrame @ 804 NONAME
- _ZN23DumpRenderTreeSupportQt17addUserStyleSheetEP8QWebPageRK7QString @ 805 NONAME
- _ZN23DumpRenderTreeSupportQt17suspendAnimationsEP9QWebFrame @ 806 NONAME
- _ZN23DumpRenderTreeSupportQt26pageSizeAndMarginsInPixelsEP9QWebFrameiiiiiii @ 807 NONAME
- _ZN23DumpRenderTreeSupportQt28setDeferMainResourceDataLoadEb @ 808 NONAME
- _ZN8QWebPage17setUserPermissionEP9QWebFrameNS_16PermissionDomainENS_16PermissionPolicyE @ 809 NONAME ABSENT
- _ZN8QWebPage23checkPermissionFromUserEP9QWebFrameNS_16PermissionDomainERNS_16PermissionPolicyE @ 810 NONAME ABSENT
- _ZN8QWebPage25requestPermissionFromUserEP9QWebFrameNS_16PermissionDomainE @ 811 NONAME ABSENT
- _ZN8QWebPage27cancelRequestsForPermissionEP9QWebFrameNS_16PermissionDomainE @ 812 NONAME ABSENT
- _ZNK16QGraphicsWebView10deviceSizeEv @ 813 NONAME ABSENT
- _ZN23DumpRenderTreeSupportQt14viewportAsTextEP8QWebPageRK5QSize @ 814 NONAME
- _ZN23DumpRenderTreeSupportQt32simulateDesktopNotificationClickERK7QString @ 815 NONAME
- _ZN8QWebPage23viewportChangeRequestedEv @ 816 NONAME
- _ZNK8QWebPage28viewportConfigurationForSizeERK5QSize @ 817 NONAME ABSENT
- _ZN23DumpRenderTreeSupportQt20dumpHistoryCallbacksEb @ 818 NONAME
- _ZN23DumpRenderTreeSupportQt25dumpVisitedLinksCallbacksEb @ 819 NONAME
- _ZN23DumpRenderTreeSupportQt9plainTextERK8QVariant @ 820 NONAME
- _ZNK8QWebPage25viewportAttributesForSizeERK5QSize @ 821 NONAME
- _ZN8QWebPage18ViewportAttributesC1ERKS0_ @ 822 NONAME
- _ZN8QWebPage18ViewportAttributesC1Ev @ 823 NONAME
- _ZN8QWebPage18ViewportAttributesC2ERKS0_ @ 824 NONAME
- _ZN8QWebPage18ViewportAttributesC2Ev @ 825 NONAME
- _ZN8QWebPage18ViewportAttributesD1Ev @ 826 NONAME
- _ZN8QWebPage18ViewportAttributesD2Ev @ 827 NONAME
- _ZN8QWebPage18ViewportAttributesaSERKS0_ @ 828 NONAME
- _ZN23DumpRenderTreeSupportQt13nodesFromRectERK11QWebElementiijjjjb @ 829 NONAME
- _ZN23DumpRenderTreeSupportQt28dumpUserGestureInFrameLoaderEb @ 830 NONAME
- _ZNK8QWebPage19supportsContentTypeERK7QString @ 831 NONAME
- _ZNK8QWebPage21supportedContentTypesEv @ 832 NONAME
- _ZNK8QWebPage27setActualVisibleContentRectERK5QRect @ 833 NONAME
- _ZN8QWebPage20setFeaturePermissionEP9QWebFrameNS_7FeatureENS_16PermissionPolicyE @ 834 NONAME
- _ZN8QWebPage26featurePermissionRequestedEP9QWebFrameNS_7FeatureE @ 835 NONAME
- _ZN8QWebPage32featurePermissionRequestCanceledEP9QWebFrameNS_7FeatureE @ 836 NONAME
- _Z33qtwebkit_setPluginCreatedCallbackPFvP9QWebFramePvS1_E @ 837 NONAME
- _ZN23DumpRenderTreeSupportQt23setMockGeolocationErrorEP8QWebPageiRK7QString @ 838 NONAME
- _ZN23DumpRenderTreeSupportQt26setMockGeolocationPositionEP8QWebPageddd @ 839 NONAME
- _ZN23DumpRenderTreeSupportQt14viewportAsTextEP8QWebPageiRK5QSizeS4_ @ 840 NONAME
- _ZN23DumpRenderTreeSupportQt13nodesFromRectERK11QWebElementiijjjjb @ 841 NONAME
- _ZN23DumpRenderTreeSupportQt9plainTextERK8QVariant @ 842 NONAME
- _ZN23DumpRenderTreeSupportQt26mediaContentUrlByElementIdEP9QWebFrameRK7QString @ 843 NONAME
- _ZNK8QWebPage12hasSelectionEv @ 844 NONAME
- _ZNK8QWebPage12selectedHtmlEv @ 845 NONAME
- _ZN11QWebElement6renderEP8QPainterRK5QRect @ 846 NONAME
+EXPORTS
+ _Z10qt_drt_runb @ 1 NONAME
+ _Z14qWebKitVersionv @ 2 NONAME
+ _Z19qWebKitMajorVersionv @ 3 NONAME
+ _Z19qWebKitMinorVersionv @ 4 NONAME
+ _Z20qt_dump_frame_loaderb @ 5 NONAME
+ _Z20qt_webpage_groupNameP8QWebPage @ 6 NONAME
+ _Z21qt_drt_clearFrameNameP9QWebFrame @ 7 NONAME
+ _Z21qt_drt_pauseAnimationP9QWebFrameRK7QStringdS3_ @ 8 NONAME
+ _Z23qt_webpage_setGroupNameP8QWebPageRK7QString @ 9 NONAME
+ _Z25qt_dump_editing_callbacksb @ 10 NONAME
+ _Z27qt_dump_set_accepts_editingb @ 11 NONAME
+ _Z29qt_drt_javaScriptObjectsCountv @ 12 NONAME
+ _Z31qt_drt_garbageCollector_collectv @ 13 NONAME
+ _Z31qt_drt_numberOfActiveAnimationsP9QWebFrame @ 14 NONAME
+ _Z31qt_dump_resource_load_callbacksb @ 15 NONAME
+ _Z32qt_drt_pauseTransitionOfPropertyP9QWebFrameRK7QStringdS3_ @ 16 NONAME
+ _Z33qt_drt_overwritePluginDirectoriesv @ 17 NONAME
+ _Z36qt_drt_setJavaScriptProfilingEnabledP9QWebFrameb @ 18 NONAME
+ _Z48qt_drt_garbageCollector_collectOnAlternateThreadb @ 19 NONAME
+ _ZN11QWebElement11encloseWithERK7QString @ 20 NONAME
+ _ZN11QWebElement11encloseWithERKS_ @ 21 NONAME
+ _ZN11QWebElement11removeClassERK7QString @ 22 NONAME
+ _ZN11QWebElement11setInnerXmlERK7QString @ 23 NONAME
+ _ZN11QWebElement11setOuterXmlERK7QString @ 24 NONAME
+ _ZN11QWebElement11toggleClassERK7QString @ 25 NONAME
+ _ZN11QWebElement12appendInsideERK7QString @ 26 NONAME
+ _ZN11QWebElement12appendInsideERKS_ @ 27 NONAME
+ _ZN11QWebElement12setAttributeERK7QStringS2_ @ 28 NONAME
+ _ZN11QWebElement12setPlainTextERK7QString @ 29 NONAME
+ _ZN11QWebElement13appendOutsideERK7QString @ 30 NONAME
+ _ZN11QWebElement13appendOutsideERKS_ @ 31 NONAME
+ _ZN11QWebElement13prependInsideERK7QString @ 32 NONAME
+ _ZN11QWebElement13prependInsideERKS_ @ 33 NONAME
+ _ZN11QWebElement14prependOutsideERK7QString @ 34 NONAME
+ _ZN11QWebElement14prependOutsideERKS_ @ 35 NONAME
+ _ZN11QWebElement14removeChildrenEv @ 36 NONAME ABSENT
+ _ZN11QWebElement14setAttributeNSERK7QStringS2_S2_ @ 37 NONAME
+ _ZN11QWebElement15removeAttributeERK7QString @ 38 NONAME
+ _ZN11QWebElement16enclosingElementEPN7WebCore4NodeE @ 39 NONAME
+ _ZN11QWebElement16setStylePropertyERK7QStringS2_ @ 40 NONAME
+ _ZN11QWebElement16takeFromDocumentEv @ 41 NONAME
+ _ZN11QWebElement17removeAttributeNSERK7QStringS2_ @ 42 NONAME
+ _ZN11QWebElement18evaluateJavaScriptERK7QString @ 43 NONAME
+ _ZN11QWebElement18removeFromDocumentEv @ 44 NONAME
+ _ZN11QWebElement19encloseContentsWithERK7QString @ 45 NONAME
+ _ZN11QWebElement19encloseContentsWithERKS_ @ 46 NONAME
+ _ZN11QWebElement7replaceERK7QString @ 47 NONAME
+ _ZN11QWebElement7replaceERKS_ @ 48 NONAME
+ _ZN11QWebElement8addClassERK7QString @ 49 NONAME
+ _ZN11QWebElement8setFocusEv @ 50 NONAME
+ _ZN11QWebElementC1EPN7WebCore4NodeE @ 51 NONAME
+ _ZN11QWebElementC1EPN7WebCore7ElementE @ 52 NONAME
+ _ZN11QWebElementC1ERKS_ @ 53 NONAME
+ _ZN11QWebElementC1Ev @ 54 NONAME
+ _ZN11QWebElementC2EPN7WebCore4NodeE @ 55 NONAME
+ _ZN11QWebElementC2EPN7WebCore7ElementE @ 56 NONAME
+ _ZN11QWebElementC2ERKS_ @ 57 NONAME
+ _ZN11QWebElementC2Ev @ 58 NONAME
+ _ZN11QWebElementD1Ev @ 59 NONAME
+ _ZN11QWebElementD2Ev @ 60 NONAME
+ _ZN11QWebElementaSERKS_ @ 61 NONAME
+ _ZN11QWebHistory12restoreStateERK10QByteArray @ 62 NONAME ABSENT
+ _ZN11QWebHistory19setMaximumItemCountEi @ 63 NONAME
+ _ZN11QWebHistory4backEv @ 64 NONAME
+ _ZN11QWebHistory5clearEv @ 65 NONAME
+ _ZN11QWebHistory7forwardEv @ 66 NONAME
+ _ZN11QWebHistory8goToItemERK15QWebHistoryItem @ 67 NONAME
+ _ZN11QWebHistoryC1Ev @ 68 NONAME
+ _ZN11QWebHistoryC2Ev @ 69 NONAME
+ _ZN11QWebHistoryD1Ev @ 70 NONAME
+ _ZN11QWebHistoryD2Ev @ 71 NONAME
+ _ZN12QWebDatabase14removeDatabaseERKS_ @ 72 NONAME
+ _ZN12QWebDatabase18removeAllDatabasesEv @ 73 NONAME
+ _ZN12QWebDatabaseC1EP19QWebDatabasePrivate @ 74 NONAME
+ _ZN12QWebDatabaseC1ERKS_ @ 75 NONAME
+ _ZN12QWebDatabaseC2EP19QWebDatabasePrivate @ 76 NONAME
+ _ZN12QWebDatabaseC2ERKS_ @ 77 NONAME
+ _ZN12QWebDatabaseD1Ev @ 78 NONAME
+ _ZN12QWebDatabaseD2Ev @ 79 NONAME
+ _ZN12QWebDatabaseaSERKS_ @ 80 NONAME
+ _ZN12QWebSettings10iconForUrlERK4QUrl @ 81 NONAME
+ _ZN12QWebSettings10webGraphicENS_10WebGraphicE @ 82 NONAME
+ _ZN12QWebSettings11setFontSizeENS_8FontSizeEi @ 83 NONAME
+ _ZN12QWebSettings12setAttributeENS_12WebAttributeEb @ 84 NONAME
+ _ZN12QWebSettings13resetFontSizeENS_8FontSizeE @ 85 NONAME
+ _ZN12QWebSettings13setFontFamilyENS_10FontFamilyERK7QString @ 86 NONAME
+ _ZN12QWebSettings13setWebGraphicENS_10WebGraphicERK7QPixmap @ 87 NONAME
+ _ZN12QWebSettings14globalSettingsEv @ 88 NONAME
+ _ZN12QWebSettings14pluginDatabaseEv @ 89 NONAME ABSENT
+ _ZN12QWebSettings14resetAttributeENS_12WebAttributeE @ 90 NONAME
+ _ZN12QWebSettings15resetFontFamilyENS_10FontFamilyE @ 91 NONAME
+ _ZN12QWebSettings16iconDatabasePathEv @ 92 NONAME
+ _ZN12QWebSettings17clearIconDatabaseEv @ 93 NONAME
+ _ZN12QWebSettings17clearMemoryCachesEv @ 94 NONAME
+ _ZN12QWebSettings18offlineStoragePathEv @ 95 NONAME
+ _ZN12QWebSettings19maximumPagesInCacheEv @ 96 NONAME
+ _ZN12QWebSettings19setIconDatabasePathERK7QString @ 97 NONAME
+ _ZN12QWebSettings19setLocalStoragePathERK7QString @ 98 NONAME
+ _ZN12QWebSettings20setUserStyleSheetUrlERK4QUrl @ 99 NONAME
+ _ZN12QWebSettings21setOfflineStoragePathERK7QString @ 100 NONAME
+ _ZN12QWebSettings22setDefaultTextEncodingERK7QString @ 101 NONAME
+ _ZN12QWebSettings22setMaximumPagesInCacheEi @ 102 NONAME
+ _ZN12QWebSettings23enablePersistentStorageERK7QString @ 103 NONAME
+ _ZN12QWebSettings24setObjectCacheCapacitiesEiii @ 104 NONAME
+ _ZN12QWebSettings26offlineStorageDefaultQuotaEv @ 105 NONAME
+ _ZN12QWebSettings29setOfflineStorageDefaultQuotaEx @ 106 NONAME
+ _ZN12QWebSettings30offlineWebApplicationCachePathEv @ 107 NONAME
+ _ZN12QWebSettings31offlineWebApplicationCacheQuotaEv @ 108 NONAME
+ _ZN12QWebSettings33setOfflineWebApplicationCachePathERK7QString @ 109 NONAME
+ _ZN12QWebSettings34setOfflineWebApplicationCacheQuotaEx @ 110 NONAME
+ _ZN12QWebSettingsC1EPN7WebCore8SettingsE @ 111 NONAME
+ _ZN12QWebSettingsC1Ev @ 112 NONAME
+ _ZN12QWebSettingsC2EPN7WebCore8SettingsE @ 113 NONAME
+ _ZN12QWebSettingsC2Ev @ 114 NONAME
+ _ZN12QWebSettingsD1Ev @ 115 NONAME
+ _ZN12QWebSettingsD2Ev @ 116 NONAME
+ _ZN13QWebInspector11qt_metacallEN11QMetaObject4CallEiPPv @ 117 NONAME
+ _ZN13QWebInspector11qt_metacastEPKc @ 118 NONAME
+ _ZN13QWebInspector11resizeEventEP12QResizeEvent @ 119 NONAME
+ _ZN13QWebInspector16staticMetaObjectE @ 120 NONAME DATA 16
+ _ZN13QWebInspector18windowTitleChangedERK7QString @ 121 NONAME ABSENT
+ _ZN13QWebInspector19getStaticMetaObjectEv @ 122 NONAME
+ _ZN13QWebInspector5eventEP6QEvent @ 123 NONAME
+ _ZN13QWebInspector7setPageEP8QWebPage @ 124 NONAME
+ _ZN13QWebInspector9hideEventEP10QHideEvent @ 125 NONAME
+ _ZN13QWebInspector9showEventEP10QShowEvent @ 126 NONAME
+ _ZN13QWebInspectorC1EP7QWidget @ 127 NONAME
+ _ZN13QWebInspectorC2EP7QWidget @ 128 NONAME
+ _ZN13QWebInspectorD0Ev @ 129 NONAME
+ _ZN13QWebInspectorD1Ev @ 130 NONAME
+ _ZN13QWebInspectorD2Ev @ 131 NONAME
+ _ZN14QWebPluginInfo10setEnabledEb @ 132 NONAME
+ _ZN14QWebPluginInfoC1EPN7WebCore13PluginPackageE @ 133 NONAME
+ _ZN14QWebPluginInfoC1ERKS_ @ 134 NONAME
+ _ZN14QWebPluginInfoC1Ev @ 135 NONAME
+ _ZN14QWebPluginInfoC2EPN7WebCore13PluginPackageE @ 136 NONAME
+ _ZN14QWebPluginInfoC2ERKS_ @ 137 NONAME
+ _ZN14QWebPluginInfoC2Ev @ 138 NONAME
+ _ZN14QWebPluginInfoD1Ev @ 139 NONAME
+ _ZN14QWebPluginInfoD2Ev @ 140 NONAME
+ _ZN14QWebPluginInfoaSERKS_ @ 141 NONAME
+ _ZN15QWebHistoryItem11setUserDataERK8QVariant @ 142 NONAME
+ _ZN15QWebHistoryItemC1EP22QWebHistoryItemPrivate @ 143 NONAME
+ _ZN15QWebHistoryItemC1ERKS_ @ 144 NONAME
+ _ZN15QWebHistoryItemC2EP22QWebHistoryItemPrivate @ 145 NONAME
+ _ZN15QWebHistoryItemC2ERKS_ @ 146 NONAME
+ _ZN15QWebHistoryItemD1Ev @ 147 NONAME
+ _ZN15QWebHistoryItemD2Ev @ 148 NONAME
+ _ZN15QWebHistoryItemaSERKS_ @ 149 NONAME
+ _ZN16QGraphicsWebView10loadFailedEv @ 150 NONAME ABSENT
+ _ZN16QGraphicsWebView10sceneEventEP6QEvent @ 151 NONAME
+ _ZN16QGraphicsWebView10setContentERK10QByteArrayRK7QStringRK4QUrl @ 152 NONAME
+ _ZN16QGraphicsWebView10urlChangedERK4QUrl @ 153 NONAME
+ _ZN16QGraphicsWebView10wheelEventEP24QGraphicsSceneWheelEvent @ 154 NONAME
+ _ZN16QGraphicsWebView11iconChangedEv @ 155 NONAME
+ _ZN16QGraphicsWebView11loadStartedEv @ 156 NONAME
+ _ZN16QGraphicsWebView11qt_metacallEN11QMetaObject4CallEiPPv @ 157 NONAME
+ _ZN16QGraphicsWebView11qt_metacastEPKc @ 158 NONAME
+ _ZN16QGraphicsWebView11setGeometryERK6QRectF @ 159 NONAME
+ _ZN16QGraphicsWebView12focusInEventEP11QFocusEvent @ 160 NONAME
+ _ZN16QGraphicsWebView12loadFinishedEv @ 161 NONAME ABSENT
+ _ZN16QGraphicsWebView12titleChangedERK7QString @ 162 NONAME
+ _ZN16QGraphicsWebView13dragMoveEventEP27QGraphicsSceneDragDropEvent @ 163 NONAME
+ _ZN16QGraphicsWebView13focusOutEventEP11QFocusEvent @ 164 NONAME
+ _ZN16QGraphicsWebView13keyPressEventEP9QKeyEvent @ 165 NONAME
+ _ZN16QGraphicsWebView13setZoomFactorEf @ 166 NONAME
+ _ZN16QGraphicsWebView13statusChangedEv @ 167 NONAME ABSENT
+ _ZN16QGraphicsWebView14dragEnterEventEP27QGraphicsSceneDragDropEvent @ 168 NONAME
+ _ZN16QGraphicsWebView14dragLeaveEventEP27QGraphicsSceneDragDropEvent @ 169 NONAME
+ _ZN16QGraphicsWebView14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 170 NONAME
+ _ZN16QGraphicsWebView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 171 NONAME
+ _ZN16QGraphicsWebView14setInteractiveEb @ 172 NONAME ABSENT
+ _ZN16QGraphicsWebView14updateGeometryEv @ 173 NONAME
+ _ZN16QGraphicsWebView15hoverLeaveEventEP24QGraphicsSceneHoverEvent @ 174 NONAME
+ _ZN16QGraphicsWebView15keyReleaseEventEP9QKeyEvent @ 175 NONAME
+ _ZN16QGraphicsWebView15mousePressEventEP24QGraphicsSceneMouseEvent @ 176 NONAME
+ _ZN16QGraphicsWebView15progressChangedEf @ 177 NONAME ABSENT
+ _ZN16QGraphicsWebView16contextMenuEventEP30QGraphicsSceneContextMenuEvent @ 178 NONAME
+ _ZN16QGraphicsWebView16inputMethodEventEP17QInputMethodEvent @ 179 NONAME
+ _ZN16QGraphicsWebView16staticMetaObjectE @ 180 NONAME DATA 16
+ _ZN16QGraphicsWebView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 181 NONAME
+ _ZN16QGraphicsWebView17zoomFactorChangedEv @ 182 NONAME ABSENT
+ _ZN16QGraphicsWebView18focusNextPrevChildEb @ 183 NONAME
+ _ZN16QGraphicsWebView19getStaticMetaObjectEv @ 184 NONAME
+ _ZN16QGraphicsWebView20interactivityChangedEv @ 185 NONAME ABSENT
+ _ZN16QGraphicsWebView21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 186 NONAME
+ _ZN16QGraphicsWebView4backEv @ 187 NONAME
+ _ZN16QGraphicsWebView4loadERK15QNetworkRequestN21QNetworkAccessManager9OperationERK10QByteArray @ 188 NONAME
+ _ZN16QGraphicsWebView4loadERK4QUrl @ 189 NONAME
+ _ZN16QGraphicsWebView4stopEv @ 190 NONAME
+ _ZN16QGraphicsWebView5eventEP6QEvent @ 191 NONAME
+ _ZN16QGraphicsWebView5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 192 NONAME
+ _ZN16QGraphicsWebView6reloadEv @ 193 NONAME
+ _ZN16QGraphicsWebView6setUrlERK4QUrl @ 194 NONAME
+ _ZN16QGraphicsWebView7forwardEv @ 195 NONAME
+ _ZN16QGraphicsWebView7setHtmlERK7QStringRK4QUrl @ 196 NONAME
+ _ZN16QGraphicsWebView7setPageEP8QWebPage @ 197 NONAME
+ _ZN16QGraphicsWebView9dropEventEP27QGraphicsSceneDragDropEvent @ 198 NONAME
+ _ZN16QGraphicsWebViewC1EP13QGraphicsItem @ 199 NONAME
+ _ZN16QGraphicsWebViewC2EP13QGraphicsItem @ 200 NONAME
+ _ZN16QGraphicsWebViewD0Ev @ 201 NONAME
+ _ZN16QGraphicsWebViewD1Ev @ 202 NONAME
+ _ZN16QGraphicsWebViewD2Ev @ 203 NONAME
+ _ZN17QWebHitTestResultC1EP24QWebHitTestResultPrivate @ 204 NONAME
+ _ZN17QWebHitTestResultC1ERKS_ @ 205 NONAME
+ _ZN17QWebHitTestResultC1Ev @ 206 NONAME
+ _ZN17QWebHitTestResultC2EP24QWebHitTestResultPrivate @ 207 NONAME
+ _ZN17QWebHitTestResultC2ERKS_ @ 208 NONAME
+ _ZN17QWebHitTestResultC2Ev @ 209 NONAME
+ _ZN17QWebHitTestResultD1Ev @ 210 NONAME
+ _ZN17QWebHitTestResultD2Ev @ 211 NONAME
+ _ZN17QWebHitTestResultaSERKS_ @ 212 NONAME
+ _ZN17QWebPluginFactory11qt_metacallEN11QMetaObject4CallEiPPv @ 213 NONAME
+ _ZN17QWebPluginFactory11qt_metacastEPKc @ 214 NONAME
+ _ZN17QWebPluginFactory14refreshPluginsEv @ 215 NONAME
+ _ZN17QWebPluginFactory16staticMetaObjectE @ 216 NONAME DATA 16
+ _ZN17QWebPluginFactory19getStaticMetaObjectEv @ 217 NONAME
+ _ZN17QWebPluginFactory9extensionENS_9ExtensionEPKNS_15ExtensionOptionEPNS_15ExtensionReturnE @ 218 NONAME
+ _ZN17QWebPluginFactoryC2EP7QObject @ 219 NONAME
+ _ZN17QWebPluginFactoryD0Ev @ 220 NONAME
+ _ZN17QWebPluginFactoryD1Ev @ 221 NONAME
+ _ZN17QWebPluginFactoryD2Ev @ 222 NONAME
+ _ZN18QWebPluginDatabase11qt_metacallEN11QMetaObject4CallEiPPv @ 223 NONAME
+ _ZN18QWebPluginDatabase11qt_metacastEPKc @ 224 NONAME
+ _ZN18QWebPluginDatabase13addSearchPathERK7QString @ 225 NONAME
+ _ZN18QWebPluginDatabase14setSearchPathsERK11QStringList @ 226 NONAME
+ _ZN18QWebPluginDatabase16staticMetaObjectE @ 227 NONAME DATA 16
+ _ZN18QWebPluginDatabase17pluginForMimeTypeERK7QString @ 228 NONAME
+ _ZN18QWebPluginDatabase18defaultSearchPathsEv @ 229 NONAME
+ _ZN18QWebPluginDatabase19getStaticMetaObjectEv @ 230 NONAME
+ _ZN18QWebPluginDatabase29setPreferredPluginForMimeTypeERK7QStringRK14QWebPluginInfo @ 231 NONAME
+ _ZN18QWebPluginDatabase7refreshEv @ 232 NONAME
+ _ZN18QWebPluginDatabaseC1EP7QObject @ 233 NONAME
+ _ZN18QWebPluginDatabaseC2EP7QObject @ 234 NONAME
+ _ZN18QWebPluginDatabaseD0Ev @ 235 NONAME
+ _ZN18QWebPluginDatabaseD1Ev @ 236 NONAME
+ _ZN18QWebPluginDatabaseD2Ev @ 237 NONAME
+ _ZN18QWebSecurityOrigin10allOriginsEv @ 238 NONAME
+ _ZN18QWebSecurityOrigin12localSchemesEv @ 239 NONAME
+ _ZN18QWebSecurityOrigin14addLocalSchemeERK7QString @ 240 NONAME
+ _ZN18QWebSecurityOrigin16setDatabaseQuotaEx @ 241 NONAME
+ _ZN18QWebSecurityOrigin17removeLocalSchemeERK7QString @ 242 NONAME
+ _ZN18QWebSecurityOrigin25whiteListAccessFromOriginERK7QStringS2_S2_b @ 243 NONAME ABSENT
+ _ZN18QWebSecurityOrigin27resetOriginAccessWhiteListsEv @ 244 NONAME ABSENT
+ _ZN18QWebSecurityOriginC1EP25QWebSecurityOriginPrivate @ 245 NONAME
+ _ZN18QWebSecurityOriginC1ERKS_ @ 246 NONAME
+ _ZN18QWebSecurityOriginC2EP25QWebSecurityOriginPrivate @ 247 NONAME
+ _ZN18QWebSecurityOriginC2ERKS_ @ 248 NONAME
+ _ZN18QWebSecurityOriginD1Ev @ 249 NONAME
+ _ZN18QWebSecurityOriginD2Ev @ 250 NONAME
+ _ZN18QWebSecurityOriginaSERKS_ @ 251 NONAME
+ _ZN20QWebHistoryInterface11qt_metacallEN11QMetaObject4CallEiPPv @ 252 NONAME
+ _ZN20QWebHistoryInterface11qt_metacastEPKc @ 253 NONAME
+ _ZN20QWebHistoryInterface16defaultInterfaceEv @ 254 NONAME
+ _ZN20QWebHistoryInterface16staticMetaObjectE @ 255 NONAME DATA 16
+ _ZN20QWebHistoryInterface19getStaticMetaObjectEv @ 256 NONAME
+ _ZN20QWebHistoryInterface19setDefaultInterfaceEPS_ @ 257 NONAME
+ _ZN20QWebHistoryInterfaceC2EP7QObject @ 258 NONAME
+ _ZN20QWebHistoryInterfaceD0Ev @ 259 NONAME
+ _ZN20QWebHistoryInterfaceD1Ev @ 260 NONAME
+ _ZN20QWebHistoryInterfaceD2Ev @ 261 NONAME
+ _ZN8QWebPage10chooseFileEP9QWebFrameRK7QString @ 262 NONAME
+ _ZN8QWebPage10setPaletteERK8QPalette @ 263 NONAME
+ _ZN8QWebPage11linkClickedERK4QUrl @ 264 NONAME
+ _ZN8QWebPage11linkHoveredERK7QStringS2_S2_ @ 265 NONAME
+ _ZN8QWebPage11loadStartedEv @ 266 NONAME
+ _ZN8QWebPage11qt_metacallEN11QMetaObject4CallEiPPv @ 267 NONAME
+ _ZN8QWebPage11qt_metacastEPKc @ 268 NONAME
+ _ZN8QWebPage12createPluginERK7QStringRK4QUrlRK11QStringListS8_ @ 269 NONAME
+ _ZN8QWebPage12createWindowENS_13WebWindowTypeE @ 270 NONAME
+ _ZN8QWebPage12frameCreatedEP9QWebFrame @ 271 NONAME
+ _ZN8QWebPage12loadFinishedEb @ 272 NONAME
+ _ZN8QWebPage12loadProgressEi @ 273 NONAME
+ _ZN8QWebPage13triggerActionENS_9WebActionEb @ 274 NONAME
+ _ZN8QWebPage14printRequestedEP9QWebFrame @ 275 NONAME
+ _ZN8QWebPage15contentsChangedEv @ 276 NONAME
+ _ZN8QWebPage15javaScriptAlertEP9QWebFrameRK7QString @ 277 NONAME
+ _ZN8QWebPage15scrollRequestedEiiRK5QRect @ 278 NONAME
+ _ZN8QWebPage16javaScriptPromptEP9QWebFrameRK7QStringS4_PS2_ @ 279 NONAME
+ _ZN8QWebPage16repaintRequestedERK5QRect @ 280 NONAME
+ _ZN8QWebPage16selectionChangedEv @ 281 NONAME
+ _ZN8QWebPage16setPluginFactoryEP17QWebPluginFactory @ 282 NONAME
+ _ZN8QWebPage16staticMetaObjectE @ 283 NONAME DATA 16
+ _ZN8QWebPage16statusBarMessageERK7QString @ 284 NONAME
+ _ZN8QWebPage17downloadRequestedERK15QNetworkRequest @ 285 NONAME
+ _ZN8QWebPage17javaScriptConfirmEP9QWebFrameRK7QString @ 286 NONAME
+ _ZN8QWebPage17microFocusChangedEv @ 287 NONAME
+ _ZN8QWebPage18focusNextPrevChildEb @ 288 NONAME
+ _ZN8QWebPage18setContentEditableEb @ 289 NONAME
+ _ZN8QWebPage18unsupportedContentEP13QNetworkReply @ 290 NONAME
+ _ZN8QWebPage19getStaticMetaObjectEv @ 291 NONAME
+ _ZN8QWebPage20windowCloseRequestedEv @ 292 NONAME
+ _ZN8QWebPage21databaseQuotaExceededEP9QWebFrame7QString @ 293 NONAME
+ _ZN8QWebPage21webInspectorTriggeredERK11QWebElement @ 294 NONAME ABSENT
+ _ZN8QWebPage23acceptNavigationRequestEP9QWebFrameRK15QNetworkRequestNS_14NavigationTypeE @ 295 NONAME
+ _ZN8QWebPage23geometryChangeRequestedERK5QRect @ 296 NONAME
+ _ZN8QWebPage23saveFrameStateRequestedEP9QWebFrameP15QWebHistoryItem @ 297 NONAME
+ _ZN8QWebPage23setLinkDelegationPolicyENS_20LinkDelegationPolicyE @ 298 NONAME
+ _ZN8QWebPage23setNetworkAccessManagerEP21QNetworkAccessManager @ 299 NONAME
+ _ZN8QWebPage23swallowContextMenuEventEP17QContextMenuEvent @ 300 NONAME
+ _ZN8QWebPage24javaScriptConsoleMessageERK7QStringiS2_ @ 301 NONAME
+ _ZN8QWebPage25createStandardContextMenuEv @ 302 NONAME
+ _ZN8QWebPage25shouldInterruptJavaScriptEv @ 303 NONAME
+ _ZN8QWebPage26restoreFrameStateRequestedEP9QWebFrame @ 304 NONAME
+ _ZN8QWebPage28setForwardUnsupportedContentEb @ 305 NONAME
+ _ZN8QWebPage30updatePositionDependentActionsERK6QPoint @ 306 NONAME
+ _ZN8QWebPage32menuBarVisibilityChangeRequestedEb @ 307 NONAME
+ _ZN8QWebPage32toolBarVisibilityChangeRequestedEb @ 308 NONAME
+ _ZN8QWebPage34statusBarVisibilityChangeRequestedEb @ 309 NONAME
+ _ZN8QWebPage5eventEP6QEvent @ 310 NONAME
+ _ZN8QWebPage7setViewEP7QWidget @ 311 NONAME
+ _ZN8QWebPage8findTextERK7QString6QFlagsINS_8FindFlagEE @ 312 NONAME
+ _ZN8QWebPage9extensionENS_9ExtensionEPKNS_15ExtensionOptionEPNS_15ExtensionReturnE @ 313 NONAME
+ _ZN8QWebPageC1EP7QObject @ 314 NONAME
+ _ZN8QWebPageC2EP7QObject @ 315 NONAME
+ _ZN8QWebPageD0Ev @ 316 NONAME
+ _ZN8QWebPageD1Ev @ 317 NONAME
+ _ZN8QWebPageD2Ev @ 318 NONAME
+ _ZN8QWebView10paintEventEP11QPaintEvent @ 319 NONAME
+ _ZN8QWebView10setContentERK10QByteArrayRK7QStringRK4QUrl @ 320 NONAME
+ _ZN8QWebView10urlChangedERK4QUrl @ 321 NONAME
+ _ZN8QWebView10wheelEventEP11QWheelEvent @ 322 NONAME
+ _ZN8QWebView11changeEventEP6QEvent @ 323 NONAME
+ _ZN8QWebView11iconChangedEv @ 324 NONAME
+ _ZN8QWebView11linkClickedERK4QUrl @ 325 NONAME
+ _ZN8QWebView11loadStartedEv @ 326 NONAME
+ _ZN8QWebView11qt_metacallEN11QMetaObject4CallEiPPv @ 327 NONAME
+ _ZN8QWebView11qt_metacastEPKc @ 328 NONAME
+ _ZN8QWebView11resizeEventEP12QResizeEvent @ 329 NONAME
+ _ZN8QWebView12createWindowEN8QWebPage13WebWindowTypeE @ 330 NONAME
+ _ZN8QWebView12focusInEventEP11QFocusEvent @ 331 NONAME
+ _ZN8QWebView12loadFinishedEb @ 332 NONAME
+ _ZN8QWebView12loadProgressEi @ 333 NONAME
+ _ZN8QWebView12titleChangedERK7QString @ 334 NONAME
+ _ZN8QWebView13dragMoveEventEP14QDragMoveEvent @ 335 NONAME
+ _ZN8QWebView13focusOutEventEP11QFocusEvent @ 336 NONAME
+ _ZN8QWebView13keyPressEventEP9QKeyEvent @ 337 NONAME
+ _ZN8QWebView13setRenderHintEN8QPainter10RenderHintEb @ 338 NONAME
+ _ZN8QWebView13setZoomFactorEf @ 339 NONAME
+ _ZN8QWebView14dragEnterEventEP15QDragEnterEvent @ 340 NONAME
+ _ZN8QWebView14dragLeaveEventEP15QDragLeaveEvent @ 341 NONAME
+ _ZN8QWebView14mouseMoveEventEP11QMouseEvent @ 342 NONAME
+ _ZN8QWebView14setRenderHintsE6QFlagsIN8QPainter10RenderHintEE @ 343 NONAME
+ _ZN8QWebView15keyReleaseEventEP9QKeyEvent @ 344 NONAME
+ _ZN8QWebView15mousePressEventEP11QMouseEvent @ 345 NONAME
+ _ZN8QWebView16contextMenuEventEP17QContextMenuEvent @ 346 NONAME
+ _ZN8QWebView16inputMethodEventEP17QInputMethodEvent @ 347 NONAME
+ _ZN8QWebView16selectionChangedEv @ 348 NONAME
+ _ZN8QWebView16staticMetaObjectE @ 349 NONAME DATA 16
+ _ZN8QWebView16statusBarMessageERK7QString @ 350 NONAME
+ _ZN8QWebView17mouseReleaseEventEP11QMouseEvent @ 351 NONAME
+ _ZN8QWebView17triggerPageActionEN8QWebPage9WebActionEb @ 352 NONAME
+ _ZN8QWebView18focusNextPrevChildEb @ 353 NONAME
+ _ZN8QWebView18guessUrlFromStringERK7QString @ 354 NONAME ABSENT
+ _ZN8QWebView19getStaticMetaObjectEv @ 355 NONAME
+ _ZN8QWebView21mouseDoubleClickEventEP11QMouseEvent @ 356 NONAME
+ _ZN8QWebView21setTextSizeMultiplierEf @ 357 NONAME
+ _ZN8QWebView4backEv @ 358 NONAME
+ _ZN8QWebView4loadERK15QNetworkRequestN21QNetworkAccessManager9OperationERK10QByteArray @ 359 NONAME
+ _ZN8QWebView4loadERK4QUrl @ 360 NONAME
+ _ZN8QWebView4stopEv @ 361 NONAME
+ _ZN8QWebView5eventEP6QEvent @ 362 NONAME
+ _ZN8QWebView6reloadEv @ 363 NONAME
+ _ZN8QWebView6setUrlERK4QUrl @ 364 NONAME
+ _ZN8QWebView7forwardEv @ 365 NONAME
+ _ZN8QWebView7setHtmlERK7QStringRK4QUrl @ 366 NONAME
+ _ZN8QWebView7setPageEP8QWebPage @ 367 NONAME
+ _ZN8QWebView8findTextERK7QString6QFlagsIN8QWebPage8FindFlagEE @ 368 NONAME
+ _ZN8QWebView9dropEventEP10QDropEvent @ 369 NONAME
+ _ZN8QWebViewC1EP7QWidget @ 370 NONAME
+ _ZN8QWebViewC2EP7QWidget @ 371 NONAME
+ _ZN8QWebViewD0Ev @ 372 NONAME
+ _ZN8QWebViewD1Ev @ 373 NONAME
+ _ZN8QWebViewD2Ev @ 374 NONAME
+ _ZN9QWebFrame10setContentERK10QByteArrayRK7QStringRK4QUrl @ 375 NONAME
+ _ZN9QWebFrame10urlChangedERK4QUrl @ 376 NONAME
+ _ZN9QWebFrame11iconChangedEv @ 377 NONAME
+ _ZN9QWebFrame11loadStartedEv @ 378 NONAME
+ _ZN9QWebFrame11qt_metacallEN11QMetaObject4CallEiPPv @ 379 NONAME
+ _ZN9QWebFrame11qt_metacastEPKc @ 380 NONAME
+ _ZN9QWebFrame12loadFinishedEb @ 381 NONAME
+ _ZN9QWebFrame12titleChangedERK7QString @ 382 NONAME
+ _ZN9QWebFrame13setZoomFactorEf @ 383 NONAME
+ _ZN9QWebFrame15provisionalLoadEv @ 384 NONAME
+ _ZN9QWebFrame16staticMetaObjectE @ 385 NONAME DATA 16
+ _ZN9QWebFrame17setScrollBarValueEN2Qt11OrientationEi @ 386 NONAME
+ _ZN9QWebFrame17setScrollPositionERK6QPoint @ 387 NONAME
+ _ZN9QWebFrame18evaluateJavaScriptERK7QString @ 388 NONAME
+ _ZN9QWebFrame18setScrollBarPolicyEN2Qt11OrientationENS0_15ScrollBarPolicyE @ 389 NONAME
+ _ZN9QWebFrame19contentsSizeChangedERK5QSize @ 390 NONAME
+ _ZN9QWebFrame19getStaticMetaObjectEv @ 391 NONAME
+ _ZN9QWebFrame21setTextSizeMultiplierEf @ 392 NONAME
+ _ZN9QWebFrame22initialLayoutCompletedEv @ 393 NONAME
+ _ZN9QWebFrame23setClipRenderToViewportEb @ 394 NONAME ABSENT
+ _ZN9QWebFrame27addToJavaScriptWindowObjectERK7QStringP7QObject @ 395 NONAME
+ _ZN9QWebFrame27addToJavaScriptWindowObjectERK7QStringP7QObjectN13QScriptEngine14ValueOwnershipE @ 396 NONAME
+ _ZN9QWebFrame29javaScriptWindowObjectClearedEv @ 397 NONAME
+ _ZN9QWebFrame4loadERK15QNetworkRequestN21QNetworkAccessManager9OperationERK10QByteArray @ 398 NONAME
+ _ZN9QWebFrame4loadERK4QUrl @ 399 NONAME
+ _ZN9QWebFrame5eventEP6QEvent @ 400 NONAME
+ _ZN9QWebFrame6renderEP8QPainter @ 401 NONAME
+ _ZN9QWebFrame6renderEP8QPainterRK7QRegion @ 402 NONAME
+ _ZN9QWebFrame6scrollEii @ 403 NONAME
+ _ZN9QWebFrame6setUrlERK4QUrl @ 404 NONAME
+ _ZN9QWebFrame7setHtmlERK7QStringRK4QUrl @ 405 NONAME
+ _ZN9QWebFrame8setFocusEv @ 406 NONAME
+ _ZN9QWebFrameC1EP8QWebPageP13QWebFrameData @ 407 NONAME
+ _ZN9QWebFrameC1EPS_P13QWebFrameData @ 408 NONAME
+ _ZN9QWebFrameC2EP8QWebPageP13QWebFrameData @ 409 NONAME
+ _ZN9QWebFrameC2EPS_P13QWebFrameData @ 410 NONAME
+ _ZN9QWebFrameD0Ev @ 411 NONAME
+ _ZN9QWebFrameD1Ev @ 412 NONAME
+ _ZN9QWebFrameD2Ev @ 413 NONAME
+ _ZNK11QWebElement10firstChildEv @ 414 NONAME
+ _ZNK11QWebElement10toInnerXmlEv @ 415 NONAME
+ _ZNK11QWebElement10toOuterXmlEv @ 416 NONAME
+ _ZNK11QWebElement11attributeNSERK7QStringS2_S2_ @ 417 NONAME
+ _ZNK11QWebElement11nextSiblingEv @ 418 NONAME
+ _ZNK11QWebElement11toPlainTextEv @ 419 NONAME
+ _ZNK11QWebElement12hasAttributeERK7QString @ 420 NONAME
+ _ZNK11QWebElement12namespaceUriEv @ 421 NONAME
+ _ZNK11QWebElement13hasAttributesEv @ 422 NONAME
+ _ZNK11QWebElement13stylePropertyERK7QStringNS_20StyleResolveStrategyE @ 423 NONAME
+ _ZNK11QWebElement14hasAttributeNSERK7QStringS2_ @ 424 NONAME
+ _ZNK11QWebElement15previousSiblingEv @ 425 NONAME
+ _ZNK11QWebElement5cloneEv @ 426 NONAME
+ _ZNK11QWebElement6isNullEv @ 427 NONAME
+ _ZNK11QWebElement6parentEv @ 428 NONAME
+ _ZNK11QWebElement6prefixEv @ 429 NONAME
+ _ZNK11QWebElement7classesEv @ 430 NONAME
+ _ZNK11QWebElement7findAllERK7QString @ 431 NONAME
+ _ZNK11QWebElement7tagNameEv @ 432 NONAME
+ _ZNK11QWebElement8documentEv @ 433 NONAME
+ _ZNK11QWebElement8geometryEv @ 434 NONAME
+ _ZNK11QWebElement8hasClassERK7QString @ 435 NONAME
+ _ZNK11QWebElement8hasFocusEv @ 436 NONAME
+ _ZNK11QWebElement8webFrameEv @ 437 NONAME
+ _ZNK11QWebElement9attributeERK7QStringS2_ @ 438 NONAME
+ _ZNK11QWebElement9findFirstERK7QString @ 439 NONAME
+ _ZNK11QWebElement9lastChildEv @ 440 NONAME
+ _ZNK11QWebElement9localNameEv @ 441 NONAME
+ _ZNK11QWebElementeqERKS_ @ 442 NONAME
+ _ZNK11QWebElementneERKS_ @ 443 NONAME
+ _ZNK11QWebHistory11currentItemEv @ 444 NONAME
+ _ZNK11QWebHistory11forwardItemEv @ 445 NONAME
+ _ZNK11QWebHistory12canGoForwardEv @ 446 NONAME
+ _ZNK11QWebHistory12forwardItemsEi @ 447 NONAME
+ _ZNK11QWebHistory16currentItemIndexEv @ 448 NONAME
+ _ZNK11QWebHistory16maximumItemCountEv @ 449 NONAME
+ _ZNK11QWebHistory5countEv @ 450 NONAME
+ _ZNK11QWebHistory5itemsEv @ 451 NONAME
+ _ZNK11QWebHistory6itemAtEi @ 452 NONAME
+ _ZNK11QWebHistory8backItemEv @ 453 NONAME
+ _ZNK11QWebHistory9backItemsEi @ 454 NONAME
+ _ZNK11QWebHistory9canGoBackEv @ 455 NONAME
+ _ZNK11QWebHistory9saveStateENS_19HistoryStateVersionE @ 456 NONAME ABSENT
+ _ZNK12QWebDatabase11displayNameEv @ 457 NONAME
+ _ZNK12QWebDatabase12expectedSizeEv @ 458 NONAME
+ _ZNK12QWebDatabase4nameEv @ 459 NONAME
+ _ZNK12QWebDatabase4sizeEv @ 460 NONAME
+ _ZNK12QWebDatabase6originEv @ 461 NONAME
+ _ZNK12QWebDatabase8fileNameEv @ 462 NONAME
+ _ZNK12QWebSettings10fontFamilyENS_10FontFamilyE @ 463 NONAME
+ _ZNK12QWebSettings13testAttributeENS_12WebAttributeE @ 464 NONAME
+ _ZNK12QWebSettings16localStoragePathEv @ 465 NONAME
+ _ZNK12QWebSettings17userStyleSheetUrlEv @ 466 NONAME
+ _ZNK12QWebSettings19defaultTextEncodingEv @ 467 NONAME
+ _ZNK12QWebSettings8fontSizeENS_8FontSizeE @ 468 NONAME
+ _ZNK13QWebInspector10metaObjectEv @ 469 NONAME
+ _ZNK13QWebInspector4pageEv @ 470 NONAME
+ _ZNK13QWebInspector8sizeHintEv @ 471 NONAME
+ _ZNK14QWebPluginInfo11descriptionEv @ 472 NONAME
+ _ZNK14QWebPluginInfo16supportsMimeTypeERK7QString @ 473 NONAME
+ _ZNK14QWebPluginInfo4nameEv @ 474 NONAME
+ _ZNK14QWebPluginInfo4pathEv @ 475 NONAME
+ _ZNK14QWebPluginInfo6isNullEv @ 476 NONAME
+ _ZNK14QWebPluginInfo9isEnabledEv @ 477 NONAME
+ _ZNK14QWebPluginInfo9mimeTypesEv @ 478 NONAME
+ _ZNK14QWebPluginInfoeqERKS_ @ 479 NONAME
+ _ZNK14QWebPluginInfoneERKS_ @ 480 NONAME
+ _ZNK15QWebHistoryItem11lastVisitedEv @ 481 NONAME
+ _ZNK15QWebHistoryItem11originalUrlEv @ 482 NONAME
+ _ZNK15QWebHistoryItem3urlEv @ 483 NONAME
+ _ZNK15QWebHistoryItem4iconEv @ 484 NONAME
+ _ZNK15QWebHistoryItem5titleEv @ 485 NONAME
+ _ZNK15QWebHistoryItem7isValidEv @ 486 NONAME
+ _ZNK15QWebHistoryItem8userDataEv @ 487 NONAME
+ _ZNK16QGraphicsWebView10metaObjectEv @ 488 NONAME
+ _ZNK16QGraphicsWebView10zoomFactorEv @ 489 NONAME
+ _ZNK16QGraphicsWebView13isInteractiveEv @ 490 NONAME ABSENT
+ _ZNK16QGraphicsWebView3urlEv @ 491 NONAME
+ _ZNK16QGraphicsWebView4iconEv @ 492 NONAME
+ _ZNK16QGraphicsWebView4pageEv @ 493 NONAME
+ _ZNK16QGraphicsWebView5titleEv @ 494 NONAME
+ _ZNK16QGraphicsWebView6statusEv @ 495 NONAME ABSENT
+ _ZNK16QGraphicsWebView6toHtmlEv @ 496 NONAME ABSENT
+ _ZNK16QGraphicsWebView7historyEv @ 497 NONAME
+ _ZNK16QGraphicsWebView8progressEv @ 498 NONAME ABSENT
+ _ZNK16QGraphicsWebView8settingsEv @ 499 NONAME
+ _ZNK17QWebHitTestResult11linkElementEv @ 500 NONAME
+ _ZNK17QWebHitTestResult12boundingRectEv @ 501 NONAME
+ _ZNK17QWebHitTestResult13alternateTextEv @ 502 NONAME
+ _ZNK17QWebHitTestResult15linkTargetFrameEv @ 503 NONAME
+ _ZNK17QWebHitTestResult17isContentEditableEv @ 504 NONAME
+ _ZNK17QWebHitTestResult17isContentSelectedEv @ 505 NONAME
+ _ZNK17QWebHitTestResult21enclosingBlockElementEv @ 506 NONAME
+ _ZNK17QWebHitTestResult3posEv @ 507 NONAME
+ _ZNK17QWebHitTestResult5frameEv @ 508 NONAME
+ _ZNK17QWebHitTestResult5titleEv @ 509 NONAME
+ _ZNK17QWebHitTestResult6isNullEv @ 510 NONAME
+ _ZNK17QWebHitTestResult6pixmapEv @ 511 NONAME
+ _ZNK17QWebHitTestResult7elementEv @ 512 NONAME
+ _ZNK17QWebHitTestResult7linkUrlEv @ 513 NONAME
+ _ZNK17QWebHitTestResult8imageUrlEv @ 514 NONAME
+ _ZNK17QWebHitTestResult8linkTextEv @ 515 NONAME
+ _ZNK17QWebHitTestResult9linkTitleEv @ 516 NONAME
+ _ZNK17QWebPluginFactory10metaObjectEv @ 517 NONAME
+ _ZNK17QWebPluginFactory17supportsExtensionENS_9ExtensionE @ 518 NONAME
+ _ZNK17QWebPluginFactory8MimeTypeeqERKS0_ @ 519 NONAME
+ _ZNK18QWebPluginDatabase10metaObjectEv @ 520 NONAME
+ _ZNK18QWebPluginDatabase11searchPathsEv @ 521 NONAME
+ _ZNK18QWebPluginDatabase7pluginsEv @ 522 NONAME
+ _ZNK18QWebSecurityOrigin13databaseQuotaEv @ 523 NONAME
+ _ZNK18QWebSecurityOrigin13databaseUsageEv @ 524 NONAME
+ _ZNK18QWebSecurityOrigin4hostEv @ 525 NONAME
+ _ZNK18QWebSecurityOrigin4portEv @ 526 NONAME
+ _ZNK18QWebSecurityOrigin6schemeEv @ 527 NONAME
+ _ZNK18QWebSecurityOrigin9databasesEv @ 528 NONAME
+ _ZNK20QWebHistoryInterface10metaObjectEv @ 529 NONAME
+ _ZNK8QWebPage10isModifiedEv @ 530 NONAME
+ _ZNK8QWebPage10metaObjectEv @ 531 NONAME
+ _ZNK8QWebPage10totalBytesEv @ 532 NONAME
+ _ZNK8QWebPage12currentFrameEv @ 533 NONAME
+ _ZNK8QWebPage12selectedTextEv @ 534 NONAME
+ _ZNK8QWebPage12viewportSizeEv @ 535 NONAME
+ _ZNK8QWebPage13bytesReceivedEv @ 536 NONAME
+ _ZNK8QWebPage13pluginFactoryEv @ 537 NONAME
+ _ZNK8QWebPage15setViewportSizeERK5QSize @ 538 NONAME
+ _ZNK8QWebPage15userAgentForUrlERK4QUrl @ 539 NONAME
+ _ZNK8QWebPage16inputMethodQueryEN2Qt16InputMethodQueryE @ 540 NONAME
+ _ZNK8QWebPage17fixedContentsSizeEv @ 541 NONAME ABSENT
+ _ZNK8QWebPage17isContentEditableEv @ 542 NONAME
+ _ZNK8QWebPage17supportsExtensionENS_9ExtensionE @ 543 NONAME
+ _ZNK8QWebPage20linkDelegationPolicyEv @ 544 NONAME
+ _ZNK8QWebPage20networkAccessManagerEv @ 545 NONAME
+ _ZNK8QWebPage20setFixedContentsSizeERK5QSize @ 546 NONAME ABSENT
+ _ZNK8QWebPage25forwardUnsupportedContentEv @ 547 NONAME
+ _ZNK8QWebPage4viewEv @ 548 NONAME
+ _ZNK8QWebPage6actionENS_9WebActionE @ 549 NONAME
+ _ZNK8QWebPage7frameAtERK6QPoint @ 550 NONAME
+ _ZNK8QWebPage7historyEv @ 551 NONAME
+ _ZNK8QWebPage7paletteEv @ 552 NONAME
+ _ZNK8QWebPage8settingsEv @ 553 NONAME
+ _ZNK8QWebPage9mainFrameEv @ 554 NONAME
+ _ZNK8QWebPage9undoStackEv @ 555 NONAME
+ _ZNK8QWebView10isModifiedEv @ 556 NONAME
+ _ZNK8QWebView10metaObjectEv @ 557 NONAME
+ _ZNK8QWebView10pageActionEN8QWebPage9WebActionE @ 558 NONAME
+ _ZNK8QWebView10zoomFactorEv @ 559 NONAME
+ _ZNK8QWebView11renderHintsEv @ 560 NONAME
+ _ZNK8QWebView12selectedTextEv @ 561 NONAME
+ _ZNK8QWebView16inputMethodQueryEN2Qt16InputMethodQueryE @ 562 NONAME
+ _ZNK8QWebView18textSizeMultiplierEv @ 563 NONAME
+ _ZNK8QWebView3urlEv @ 564 NONAME
+ _ZNK8QWebView4iconEv @ 565 NONAME
+ _ZNK8QWebView4pageEv @ 566 NONAME
+ _ZNK8QWebView5printEP8QPrinter @ 567 NONAME
+ _ZNK8QWebView5titleEv @ 568 NONAME
+ _ZNK8QWebView7historyEv @ 569 NONAME
+ _ZNK8QWebView8settingsEv @ 570 NONAME
+ _ZNK8QWebView8sizeHintEv @ 571 NONAME
+ _ZNK9QWebFrame10metaObjectEv @ 572 NONAME
+ _ZNK9QWebFrame10zoomFactorEv @ 573 NONAME
+ _ZNK9QWebFrame11childFramesEv @ 574 NONAME
+ _ZNK9QWebFrame11parentFrameEv @ 575 NONAME
+ _ZNK9QWebFrame11toPlainTextEv @ 576 NONAME
+ _ZNK9QWebFrame12contentsSizeEv @ 577 NONAME
+ _ZNK9QWebFrame12requestedUrlEv @ 578 NONAME
+ _ZNK9QWebFrame14hitTestContentERK6QPoint @ 579 NONAME
+ _ZNK9QWebFrame14renderTreeDumpEv @ 580 NONAME
+ _ZNK9QWebFrame14scrollBarValueEN2Qt11OrientationE @ 581 NONAME
+ _ZNK9QWebFrame14scrollPositionEv @ 582 NONAME
+ _ZNK9QWebFrame14securityOriginEv @ 583 NONAME
+ _ZNK9QWebFrame15documentElementEv @ 584 NONAME
+ _ZNK9QWebFrame15findAllElementsERK7QString @ 585 NONAME
+ _ZNK9QWebFrame15scrollBarPolicyEN2Qt11OrientationE @ 586 NONAME
+ _ZNK9QWebFrame16findFirstElementERK7QString @ 587 NONAME
+ _ZNK9QWebFrame16scrollBarMaximumEN2Qt11OrientationE @ 588 NONAME
+ _ZNK9QWebFrame16scrollBarMinimumEN2Qt11OrientationE @ 589 NONAME
+ _ZNK9QWebFrame17scrollBarGeometryEN2Qt11OrientationE @ 590 NONAME
+ _ZNK9QWebFrame18textSizeMultiplierEv @ 591 NONAME
+ _ZNK9QWebFrame20clipRenderToViewportEv @ 592 NONAME ABSENT
+ _ZNK9QWebFrame3posEv @ 593 NONAME
+ _ZNK9QWebFrame3urlEv @ 594 NONAME
+ _ZNK9QWebFrame4iconEv @ 595 NONAME
+ _ZNK9QWebFrame4pageEv @ 596 NONAME
+ _ZNK9QWebFrame5titleEv @ 597 NONAME
+ _ZNK9QWebFrame6toHtmlEv @ 598 NONAME
+ _ZNK9QWebFrame7baseUrlEv @ 599 NONAME
+ _ZNK9QWebFrame8geometryEv @ 600 NONAME
+ _ZNK9QWebFrame8hasFocusEv @ 601 NONAME
+ _ZNK9QWebFrame8metaDataEv @ 602 NONAME
+ _ZNK9QWebFrame9frameNameEv @ 603 NONAME
+ _ZTI13QWebInspector @ 604 NONAME
+ _ZTI16QGraphicsWebView @ 605 NONAME
+ _ZTI17QWebPluginFactory @ 606 NONAME
+ _ZTI18QWebPluginDatabase @ 607 NONAME
+ _ZTI20QWebHistoryInterface @ 608 NONAME
+ _ZTI8QWebPage @ 609 NONAME
+ _ZTI8QWebView @ 610 NONAME
+ _ZTI9QWebFrame @ 611 NONAME
+ _ZTV13QWebInspector @ 612 NONAME
+ _ZTV16QGraphicsWebView @ 613 NONAME
+ _ZTV17QWebPluginFactory @ 614 NONAME
+ _ZTV18QWebPluginDatabase @ 615 NONAME
+ _ZTV20QWebHistoryInterface @ 616 NONAME
+ _ZTV8QWebPage @ 617 NONAME
+ _ZTV8QWebView @ 618 NONAME
+ _ZTV9QWebFrame @ 619 NONAME
+ _ZThn16_N16QGraphicsWebView11setGeometryERK6QRectF @ 620 NONAME
+ _ZThn16_N16QGraphicsWebView14updateGeometryEv @ 621 NONAME
+ _ZThn16_N16QGraphicsWebViewD0Ev @ 622 NONAME
+ _ZThn16_N16QGraphicsWebViewD1Ev @ 623 NONAME
+ _ZThn8_N13QWebInspectorD0Ev @ 624 NONAME
+ _ZThn8_N13QWebInspectorD1Ev @ 625 NONAME
+ _ZThn8_N16QGraphicsWebView10sceneEventEP6QEvent @ 626 NONAME
+ _ZThn8_N16QGraphicsWebView10wheelEventEP24QGraphicsSceneWheelEvent @ 627 NONAME
+ _ZThn8_N16QGraphicsWebView12focusInEventEP11QFocusEvent @ 628 NONAME
+ _ZThn8_N16QGraphicsWebView13dragMoveEventEP27QGraphicsSceneDragDropEvent @ 629 NONAME
+ _ZThn8_N16QGraphicsWebView13focusOutEventEP11QFocusEvent @ 630 NONAME
+ _ZThn8_N16QGraphicsWebView13keyPressEventEP9QKeyEvent @ 631 NONAME
+ _ZThn8_N16QGraphicsWebView14dragEnterEventEP27QGraphicsSceneDragDropEvent @ 632 NONAME
+ _ZThn8_N16QGraphicsWebView14dragLeaveEventEP27QGraphicsSceneDragDropEvent @ 633 NONAME
+ _ZThn8_N16QGraphicsWebView14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 634 NONAME
+ _ZThn8_N16QGraphicsWebView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 635 NONAME
+ _ZThn8_N16QGraphicsWebView15hoverLeaveEventEP24QGraphicsSceneHoverEvent @ 636 NONAME
+ _ZThn8_N16QGraphicsWebView15keyReleaseEventEP9QKeyEvent @ 637 NONAME
+ _ZThn8_N16QGraphicsWebView15mousePressEventEP24QGraphicsSceneMouseEvent @ 638 NONAME
+ _ZThn8_N16QGraphicsWebView16contextMenuEventEP30QGraphicsSceneContextMenuEvent @ 639 NONAME
+ _ZThn8_N16QGraphicsWebView16inputMethodEventEP17QInputMethodEvent @ 640 NONAME
+ _ZThn8_N16QGraphicsWebView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 641 NONAME
+ _ZThn8_N16QGraphicsWebView21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 642 NONAME
+ _ZThn8_N16QGraphicsWebView5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 643 NONAME
+ _ZThn8_N16QGraphicsWebView9dropEventEP27QGraphicsSceneDragDropEvent @ 644 NONAME
+ _ZThn8_N16QGraphicsWebViewD0Ev @ 645 NONAME
+ _ZThn8_N16QGraphicsWebViewD1Ev @ 646 NONAME
+ _ZThn8_N8QWebViewD0Ev @ 647 NONAME
+ _ZThn8_N8QWebViewD1Ev @ 648 NONAME
+ _ZlsR11QDataStreamRK11QWebHistory @ 649 NONAME
+ _ZrsR11QDataStreamR11QWebHistory @ 650 NONAME
+ _Z32qt_drt_whiteListAccessFromOriginRK7QStringS1_S1_b @ 651 NONAME
+ _Z33qt_drt_counterValueForElementByIdP9QWebFrameRK7QString @ 652 NONAME ABSENT
+ _Z34qt_drt_resetOriginAccessWhiteListsv @ 653 NONAME
+ _ZN11QWebElement17removeAllChildrenEv @ 654 NONAME
+ _ZN11QWebElement6renderEP8QPainter @ 655 NONAME
+ _ZN12QWebSettings30setPrintingMaximumShrinkFactorEf @ 656 NONAME ABSENT
+ _ZN12QWebSettings30setPrintingMinimumShrinkFactorEf @ 657 NONAME ABSENT
+ _ZN16QGraphicsWebView10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 658 NONAME
+ _ZN16QGraphicsWebView11linkClickedERK4QUrl @ 659 NONAME
+ _ZN16QGraphicsWebView12loadFinishedEb @ 660 NONAME
+ _ZN16QGraphicsWebView12loadProgressEi @ 661 NONAME
+ _ZN16QGraphicsWebView16statusBarMessageERK7QString @ 662 NONAME
+ _ZN16QGraphicsWebView17triggerPageActionEN8QWebPage9WebActionEb @ 663 NONAME
+ _ZN16QGraphicsWebView8findTextERK7QString6QFlagsIN8QWebPage8FindFlagEE @ 664 NONAME
+ _ZN21QWebElementCollection6appendERKS_ @ 665 NONAME
+ _ZN21QWebElementCollectionC1ERK11QWebElementRK7QString @ 666 NONAME
+ _ZN21QWebElementCollectionC1ERKS_ @ 667 NONAME
+ _ZN21QWebElementCollectionC1Ev @ 668 NONAME
+ _ZN21QWebElementCollectionC2ERK11QWebElementRK7QString @ 669 NONAME
+ _ZN21QWebElementCollectionC2ERKS_ @ 670 NONAME
+ _ZN21QWebElementCollectionC2Ev @ 671 NONAME
+ _ZN21QWebElementCollectionD1Ev @ 672 NONAME
+ _ZN21QWebElementCollectionD2Ev @ 673 NONAME
+ _ZN21QWebElementCollectionaSERKS_ @ 674 NONAME
+ _ZN9QWebFrame6renderEP8QPainterNS_11RenderLayerERK7QRegion @ 675 NONAME
+ _ZNK12QWebSettings27printingMaximumShrinkFactorEv @ 676 NONAME ABSENT
+ _ZNK12QWebSettings27printingMinimumShrinkFactorEv @ 677 NONAME ABSENT
+ _ZNK16QGraphicsWebView10isModifiedEv @ 678 NONAME
+ _ZNK16QGraphicsWebView10pageActionEN8QWebPage9WebActionE @ 679 NONAME
+ _ZNK16QGraphicsWebView16inputMethodQueryEN2Qt16InputMethodQueryE @ 680 NONAME
+ _ZNK16QGraphicsWebView8sizeHintEN2Qt8SizeHintERK6QSizeF @ 681 NONAME
+ _ZNK21QWebElementCollection2atEi @ 682 NONAME
+ _ZNK21QWebElementCollection5countEv @ 683 NONAME
+ _ZNK21QWebElementCollection6toListEv @ 684 NONAME
+ _ZNK21QWebElementCollectionplERKS_ @ 685 NONAME
+ _ZNK8QWebPage21preferredContentsSizeEv @ 686 NONAME
+ _ZNK8QWebPage24setPreferredContentsSizeERK5QSize @ 687 NONAME
+ _ZThn16_NK16QGraphicsWebView8sizeHintEN2Qt8SizeHintERK6QSizeF @ 688 NONAME
+ _ZThn8_N16QGraphicsWebView10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 689 NONAME
+ _ZThn8_NK16QGraphicsWebView16inputMethodQueryEN2Qt16InputMethodQueryE @ 690 NONAME
+ _ZNK11QWebElement14attributeNamesERK7QString @ 691 NONAME
+ _Z23qt_networkAccessAllowedb @ 692 NONAME
+ _Z25qt_resumeActiveDOMObjectsP9QWebFrame @ 693 NONAME
+ _Z26qt_suspendActiveDOMObjectsP9QWebFrame @ 694 NONAME
+ _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameii @ 695 NONAME ABSENT
+ _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameiiRK6QPoint @ 696 NONAME
+ _ZN9QWebFrame17scrollRecursivelyEii @ 697 NONAME ABSENT
+ _ZN16QGraphicsWebView20setResizesToContentsEb @ 698 NONAME
+ _ZNK16QGraphicsWebView17resizesToContentsEv @ 699 NONAME
+ _Z20qt_drt_numberOfPagesP9QWebFrameff @ 700 NONAME ABSENT
+ _Z24qt_drt_pauseSVGAnimationP9QWebFrameRK7QStringdS3_ @ 701 NONAME ABSENT
+ _Z24qt_drt_webinspector_showP8QWebPage @ 702 NONAME ABSENT
+ _Z24qt_drt_workerThreadCountv @ 703 NONAME ABSENT
+ _Z25qt_drt_hasDocumentElementP9QWebFrame @ 704 NONAME ABSENT
+ _Z25qt_drt_webinspector_closeP8QWebPage @ 705 NONAME ABSENT
+ _Z31qt_drt_pageNumberForElementByIdP9QWebFrameRK7QStringff @ 706 NONAME ABSENT
+ _Z33qt_drt_webinspector_executeScriptP8QWebPagelRK7QString @ 707 NONAME ABSENT
+ _Z34qt_drt_setTimelineProfilingEnabledP8QWebPageb @ 708 NONAME ABSENT
+ _Z32qt_drt_setFrameFlatteningEnabledP8QWebPageb @ 709 NONAME ABSENT
+ _Z36qt_drt_evaluateScriptInIsolatedWorldP9QWebFrameiRK7QString @ 710 NONAME ABSENT
+ _Z47qt_drt_setDomainRelaxationForbiddenForURLSchemebRK7QString @ 711 NONAME ABSENT
+ _ZN9QWebFrame11pageChangedEv @ 712 NONAME
+ _ZN9QWebFrame14scrollToAnchorERK7QString @ 713 NONAME
+ _ZN12QWebSettings15setInspectorUrlERK4QUrl @ 714 NONAME ABSENT
+ _ZN13QWebInspector10closeEventEP11QCloseEvent @ 715 NONAME
+ _ZN16QGraphicsWebView26setTiledBackingStoreFrozenEb @ 716 NONAME
+ _ZNK16QGraphicsWebView25isTiledBackingStoreFrozenEv @ 717 NONAME
+ _Z18qt_wrt_setViewModeP8QWebPageRK7QString @ 718 NONAME ABSENT
+ _Z19qt_drt_setMediaTypeP9QWebFrameRK7QString @ 719 NONAME ABSENT
+ _Z26qt_drt_enableCaretBrowsingP8QWebPageb @ 720 NONAME ABSENT
+ _ZNK12QWebSettings12inspectorUrlEv @ 721 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt19webPageSetGroupNameEP8QWebPageRK7QString @ 722 NONAME
+ _ZN23DumpRenderTreeSupportQt16webPageGroupNameEP8QWebPage @ 723 NONAME
+ _ZN23DumpRenderTreeSupportQt23garbageCollectorCollectEv @ 724 NONAME
+ _Z32qtwebkit_webframe_scrollOverflowP9QWebFrameiiRK6QPoint @ 725 NONAME
+ _ZN23DumpRenderTreeSupportQt12setMediaTypeEP9QWebFrameRK7QString @ 726 NONAME
+ _ZN23DumpRenderTreeSupportQt13numberOfPagesEP9QWebFrameff @ 727 NONAME
+ _ZN23DumpRenderTreeSupportQt13selectedRangeEP8QWebPage @ 728 NONAME
+ _ZN23DumpRenderTreeSupportQt14clearFrameNameEP9QWebFrame @ 729 NONAME
+ _ZN23DumpRenderTreeSupportQt14pauseAnimationEP9QWebFrameRK7QStringdS4_ @ 730 NONAME
+ _ZN23DumpRenderTreeSupportQt15dumpFrameLoaderEb @ 731 NONAME
+ _ZN23DumpRenderTreeSupportQt16dumpNotificationEb @ 732 NONAME
+ _ZN23DumpRenderTreeSupportQt16isCommandEnabledEP8QWebPageRK7QString @ 733 NONAME
+ _ZN23DumpRenderTreeSupportQt16webInspectorShowEP8QWebPage @ 734 NONAME
+ _ZN23DumpRenderTreeSupportQt17pauseSVGAnimationEP9QWebFrameRK7QStringdS4_ @ 735 NONAME
+ _ZN23DumpRenderTreeSupportQt17webInspectorCloseEP8QWebPage @ 736 NONAME
+ _ZN23DumpRenderTreeSupportQt17workerThreadCountEv @ 737 NONAME
+ _ZN23DumpRenderTreeSupportQt18hasDocumentElementEP9QWebFrame @ 738 NONAME
+ _ZN23DumpRenderTreeSupportQt20dumpEditingCallbacksEb @ 739 NONAME
+ _ZN23DumpRenderTreeSupportQt21markerTextForListItemERK11QWebElement @ 740 NONAME
+ _ZN23DumpRenderTreeSupportQt22javaScriptObjectsCountEv @ 741 NONAME
+ _ZN23DumpRenderTreeSupportQt23setCaretBrowsingEnabledEP8QWebPageb @ 742 NONAME
+ _ZN23DumpRenderTreeSupportQt24executeCoreCommandByNameEP8QWebPageRK7QStringS4_ @ 743 NONAME
+ _ZN23DumpRenderTreeSupportQt21dumpSetAcceptsEditingEb @ 744 NONAME
+ _ZN23DumpRenderTreeSupportQt22resumeActiveDOMObjectsEP9QWebFrame @ 745 NONAME
+ _ZN23DumpRenderTreeSupportQt23suspendActiveDOMObjectsEP9QWebFrame @ 746 NONAME
+ _ZN23DumpRenderTreeSupportQt24numberOfActiveAnimationsEP9QWebFrame @ 747 NONAME
+ _ZN23DumpRenderTreeSupportQt24pageNumberForElementByIdEP9QWebFrameRK7QStringff @ 748 NONAME
+ _ZN23DumpRenderTreeSupportQt25dumpResourceLoadCallbacksEb @ 749 NONAME
+ _ZN23DumpRenderTreeSupportQt25pauseTransitionOfPropertyEP9QWebFrameRK7QStringdS4_ @ 750 NONAME
+ _ZN23DumpRenderTreeSupportQt25setFrameFlatteningEnabledEP8QWebPageb @ 751 NONAME
+ _ZN23DumpRenderTreeSupportQt25webInspectorExecuteScriptEP8QWebPagelRK7QString @ 752 NONAME
+ _ZN23DumpRenderTreeSupportQt25whiteListAccessFromOriginERK7QStringS2_S2_b @ 753 NONAME
+ _ZN23DumpRenderTreeSupportQt26counterValueForElementByIdEP9QWebFrameRK7QString @ 754 NONAME
+ _ZN23DumpRenderTreeSupportQt26firstRectForCharacterRangeEP8QWebPageii @ 755 NONAME
+ _ZN23DumpRenderTreeSupportQt26overwritePluginDirectoriesEv @ 756 NONAME
+ _ZN23DumpRenderTreeSupportQt27resetOriginAccessWhiteListsEv @ 757 NONAME
+ _ZN23DumpRenderTreeSupportQt27setSmartInsertDeleteEnabledEP8QWebPageb @ 758 NONAME
+ _ZN23DumpRenderTreeSupportQt27setTimelineProfilingEnabledEP8QWebPageb @ 759 NONAME
+ _ZN23DumpRenderTreeSupportQt28setDumpRenderTreeModeEnabledEb @ 760 NONAME
+ _ZN23DumpRenderTreeSupportQt29dumpResourceLoadCallbacksPathERK7QString @ 761 NONAME
+ _ZN23DumpRenderTreeSupportQt29evaluateScriptInIsolatedWorldEP9QWebFrameiRK7QString @ 762 NONAME
+ _ZN23DumpRenderTreeSupportQt29setJavaScriptProfilingEnabledEP9QWebFrameb @ 763 NONAME
+ _ZN23DumpRenderTreeSupportQt29setWillSendRequestReturnsNullEb @ 764 NONAME
+ _ZN23DumpRenderTreeSupportQt30setWillSendRequestClearHeadersERK11QStringList @ 765 NONAME
+ _ZN23DumpRenderTreeSupportQt33computedStyleIncludingVisitedInfoERK11QWebElement @ 766 NONAME
+ _ZN23DumpRenderTreeSupportQt34setSelectTrailingWhitespaceEnabledEP8QWebPageb @ 767 NONAME
+ _ZN23DumpRenderTreeSupportQt39elementDoesAutoCompleteForElementWithIdEP9QWebFrameRK7QString @ 768 NONAME
+ _ZN23DumpRenderTreeSupportQt39setWillSendRequestReturnsNullOnRedirectEb @ 769 NONAME
+ _ZN23DumpRenderTreeSupportQt40garbageCollectorCollectOnAlternateThreadEb @ 770 NONAME
+ _ZN23DumpRenderTreeSupportQt40setDomainRelaxationForbiddenForURLSchemeEbRK7QString @ 771 NONAME
+ _ZN23DumpRenderTreeSupportQt18setEditingBehaviorEP8QWebPageRK7QString @ 772 NONAME
+ _ZN23DumpRenderTreeSupportQt24setNotificationsReceiverEP7QObject @ 773 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt26allowNotificationForOriginERK7QString @ 774 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt26setCheckPermissionFunctionEPFvP7QObjectRK4QUrlR22NotificationPermissionE @ 775 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt28setRequestPermissionFunctionEPFvP7QObjectRK7QStringE @ 776 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt31removeWhiteListAccessFromOriginERK7QStringS2_S2_b @ 777 NONAME
+ _ZN23DumpRenderTreeSupportQt11shouldCloseEP9QWebFrame @ 778 NONAME
+ _ZN23DumpRenderTreeSupportQt12isTargetItemERK15QWebHistoryItem @ 779 NONAME
+ _ZN23DumpRenderTreeSupportQt17historyItemTargetERK15QWebHistoryItem @ 780 NONAME
+ _ZN23DumpRenderTreeSupportQt20getChildHistoryItemsERK15QWebHistoryItem @ 781 NONAME
+ _ZN23DumpRenderTreeSupportQt23setMockGeolocationErrorEiRK7QString @ 782 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt26setMockGeolocationPositionEddd @ 783 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt17clearScriptWorldsEv @ 784 NONAME
+ _ZN23DumpRenderTreeSupportQt23setCustomPolicyDelegateEbb @ 785 NONAME
+ _ZN15QWebScriptWorldC1ERKS_ @ 786 NONAME
+ _ZN15QWebScriptWorldC1Ev @ 787 NONAME
+ _ZN15QWebScriptWorldC2ERKS_ @ 788 NONAME
+ _ZN15QWebScriptWorldC2Ev @ 789 NONAME
+ _ZN15QWebScriptWorldD1Ev @ 790 NONAME
+ _ZN15QWebScriptWorldD2Ev @ 791 NONAME
+ _ZN15QWebScriptWorldaSERKS_ @ 792 NONAME
+ _ZN23DumpRenderTreeSupportQt29dumpResourceResponseMIMETypesEb @ 793 NONAME
+ _ZN23DumpRenderTreeSupportQtC1Ev @ 794 NONAME
+ _ZN23DumpRenderTreeSupportQtC2Ev @ 795 NONAME
+ _ZN23DumpRenderTreeSupportQtD1Ev @ 796 NONAME
+ _ZN23DumpRenderTreeSupportQtD2Ev @ 797 NONAME
+ _ZN8QWebPage23allowGeolocationRequestEP9QWebFrame @ 798 NONAME ABSENT
+ _ZN8QWebPage23viewportChangeRequestedERKNS_13ViewportHintsE @ 799 NONAME ABSENT
+ _ZNK15QWebScriptWorld5worldEv @ 800 NONAME
+ _ZN16QGraphicsWebView13setDeviceSizeERK5QSize @ 801 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt12pagePropertyEP9QWebFrameRK7QStringi @ 802 NONAME
+ _ZN23DumpRenderTreeSupportQt16isPageBoxVisibleEP9QWebFramei @ 803 NONAME
+ _ZN23DumpRenderTreeSupportQt16resumeAnimationsEP9QWebFrame @ 804 NONAME
+ _ZN23DumpRenderTreeSupportQt17addUserStyleSheetEP8QWebPageRK7QString @ 805 NONAME
+ _ZN23DumpRenderTreeSupportQt17suspendAnimationsEP9QWebFrame @ 806 NONAME
+ _ZN23DumpRenderTreeSupportQt26pageSizeAndMarginsInPixelsEP9QWebFrameiiiiiii @ 807 NONAME
+ _ZN23DumpRenderTreeSupportQt28setDeferMainResourceDataLoadEb @ 808 NONAME
+ _ZN8QWebPage17setUserPermissionEP9QWebFrameNS_16PermissionDomainENS_16PermissionPolicyE @ 809 NONAME ABSENT
+ _ZN8QWebPage23checkPermissionFromUserEP9QWebFrameNS_16PermissionDomainERNS_16PermissionPolicyE @ 810 NONAME ABSENT
+ _ZN8QWebPage25requestPermissionFromUserEP9QWebFrameNS_16PermissionDomainE @ 811 NONAME ABSENT
+ _ZN8QWebPage27cancelRequestsForPermissionEP9QWebFrameNS_16PermissionDomainE @ 812 NONAME ABSENT
+ _ZNK16QGraphicsWebView10deviceSizeEv @ 813 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt14viewportAsTextEP8QWebPageRK5QSize @ 814 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt32simulateDesktopNotificationClickERK7QString @ 815 NONAME
+ _ZN8QWebPage23viewportChangeRequestedEv @ 816 NONAME
+ _ZNK8QWebPage28viewportConfigurationForSizeERK5QSize @ 817 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt20dumpHistoryCallbacksEb @ 818 NONAME
+ _ZN23DumpRenderTreeSupportQt25dumpVisitedLinksCallbacksEb @ 819 NONAME
+ _ZN23DumpRenderTreeSupportQt9plainTextERK8QVariant @ 820 NONAME
+ _ZNK8QWebPage25viewportAttributesForSizeERK5QSize @ 821 NONAME
+ _ZN8QWebPage18ViewportAttributesC1ERKS0_ @ 822 NONAME
+ _ZN8QWebPage18ViewportAttributesC1Ev @ 823 NONAME
+ _ZN8QWebPage18ViewportAttributesC2ERKS0_ @ 824 NONAME
+ _ZN8QWebPage18ViewportAttributesC2Ev @ 825 NONAME
+ _ZN8QWebPage18ViewportAttributesD1Ev @ 826 NONAME
+ _ZN8QWebPage18ViewportAttributesD2Ev @ 827 NONAME
+ _ZN8QWebPage18ViewportAttributesaSERKS0_ @ 828 NONAME
+ _ZN23DumpRenderTreeSupportQt13nodesFromRectERK11QWebElementiijjjjb @ 829 NONAME
+ _ZN23DumpRenderTreeSupportQt28dumpUserGestureInFrameLoaderEb @ 830 NONAME
+ _ZNK8QWebPage19supportsContentTypeERK7QString @ 831 NONAME
+ _ZNK8QWebPage21supportedContentTypesEv @ 832 NONAME
+ _ZNK8QWebPage27setActualVisibleContentRectERK5QRect @ 833 NONAME
+ _ZN8QWebPage20setFeaturePermissionEP9QWebFrameNS_7FeatureENS_16PermissionPolicyE @ 834 NONAME
+ _ZN8QWebPage26featurePermissionRequestedEP9QWebFrameNS_7FeatureE @ 835 NONAME
+ _ZN8QWebPage32featurePermissionRequestCanceledEP9QWebFrameNS_7FeatureE @ 836 NONAME
+ _Z33qtwebkit_setPluginCreatedCallbackPFvP9QWebFramePvS1_E @ 837 NONAME
+ _ZN23DumpRenderTreeSupportQt23setMockGeolocationErrorEP8QWebPageiRK7QString @ 838 NONAME
+ _ZN23DumpRenderTreeSupportQt26setMockGeolocationPositionEP8QWebPageddd @ 839 NONAME
+ _ZN23DumpRenderTreeSupportQt14viewportAsTextEP8QWebPageiRK5QSizeS4_ @ 840 NONAME
+ _ZN23DumpRenderTreeSupportQt26mediaContentUrlByElementIdEP9QWebFrameRK7QString @ 841 NONAME
+ _ZNK8QWebPage12hasSelectionEv @ 842 NONAME
+ _ZNK8QWebPage12selectedHtmlEv @ 843 NONAME
+ _ZN11QWebElement6renderEP8QPainterRK5QRect @ 844 NONAME
+ _ZN16QGraphicsWebView13setRenderHintEN8QPainter10RenderHintEb @ 845 NONAME
+ _ZN16QGraphicsWebView14setRenderHintsE6QFlagsIN8QPainter10RenderHintEE @ 846 NONAME
+ _ZNK16QGraphicsWebView11renderHintsEv @ 847 NONAME
+ _ZN18QWebSecurityOrigin24setApplicationCacheQuotaEx @ 848 NONAME
+ _ZN8QWebPage29applicationCacheQuotaExceededEP18QWebSecurityOriginy @ 849 NONAME
+ _ZNK8QWebView12hasSelectionEv @ 850 NONAME
+ _ZNK8QWebView12selectedHtmlEv @ 851 NONAME
+ _ZN23DumpRenderTreeSupportQt10findStringEP8QWebPageRK7QStringRK11QStringList @ 852 NONAME
+ _ZN23DumpRenderTreeSupportQt10shadowRootERK11QWebElement @ 853 NONAME
+ _ZN23DumpRenderTreeSupportQt11clearOpenerEP9QWebFrame @ 854 NONAME
+ _ZN23DumpRenderTreeSupportQt11contextMenuEP8QWebPage @ 855 NONAME
+ _ZN23DumpRenderTreeSupportQt13setAutofilledERK11QWebElementb @ 856 NONAME
+ _ZN23DumpRenderTreeSupportQt16addURLToRedirectERK7QStringS2_ @ 857 NONAME
+ _ZN23DumpRenderTreeSupportQt16ensureShadowRootERK11QWebElement @ 858 NONAME
+ _ZN23DumpRenderTreeSupportQt16removeShadowRootERK11QWebElement @ 859 NONAME
+ _ZN23DumpRenderTreeSupportQt16responseMimeTypeEP9QWebFrame @ 860 NONAME
+ _ZN23DumpRenderTreeSupportQt16setAlternateHtmlEP9QWebFrameRK7QStringRK4QUrlS7_ @ 861 NONAME
+ _ZN23DumpRenderTreeSupportQt20resetGeolocationMockEP8QWebPage @ 862 NONAME
+ _ZN23DumpRenderTreeSupportQt23setMinimumTimerIntervalEP8QWebPaged @ 863 NONAME
+ _ZN23DumpRenderTreeSupportQt24setMockDeviceOrientationEbdbdbd @ 864 NONAME
+ _ZN23DumpRenderTreeSupportQt25clearAllApplicationCachesEv @ 865 NONAME
+ _ZN23DumpRenderTreeSupportQt27defaultMinimumTimerIntervalEv @ 866 NONAME
+ _ZN23DumpRenderTreeSupportQt27removeMockDeviceOrientationEv @ 867 NONAME
+ _ZN23DumpRenderTreeSupportQt28setMockGeolocationPermissionEP8QWebPageb @ 868 NONAME
+ _ZN23DumpRenderTreeSupportQt33activeMockDeviceOrientationClientEb @ 869 NONAME
+ _ZN23DumpRenderTreeSupportQt44numberOfPendingGeolocationPermissionRequestsEP8QWebPage @ 870 NONAME
+ _ZN8QDRTNodeC1EPN7WebCore4NodeE @ 871 NONAME
+ _ZN8QDRTNodeC1ERKS_ @ 872 NONAME
+ _ZN8QDRTNodeC1Ev @ 873 NONAME
+ _ZN8QDRTNodeC2EPN7WebCore4NodeE @ 874 NONAME
+ _ZN8QDRTNodeC2ERKS_ @ 875 NONAME
+ _ZN8QDRTNodeC2Ev @ 876 NONAME
+ _ZN8QDRTNodeD1Ev @ 877 NONAME
+ _ZN8QDRTNodeD2Ev @ 878 NONAME
+ _ZN8QDRTNodeaSERKS_ @ 879 NONAME
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/symbian/platformplugin/qss/OverlayWidget.qss b/src/3rdparty/webkit/Source/WebKit/qt/symbian/platformplugin/qss/OverlayWidget.qss
index b01d43f..2a4ee9d 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/symbian/platformplugin/qss/OverlayWidget.qss
+++ b/src/3rdparty/webkit/Source/WebKit/qt/symbian/platformplugin/qss/OverlayWidget.qss
@@ -1,59 +1,59 @@
-QSlider::groove {
- border: 2px solid black;
- border-radius: 5px;
- background: white;
-}
-
-QSlider::handle {
- border: 2px solid black;
- border-radius: 8px;
- background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eee, stop:1 #ccc);
-}
-
-QSlider::add-page {
- border: 2px solid black;
- border-radius: 5px;
-}
-
-QSlider::sub-page {
- border: 2px solid black;
- border-radius: 5px;
-}
-
-QSlider::groove:horizontal {
- height: 10px;
-}
-
-QSlider::handle:horizontal {
- width: 40px;
- margin-top: -15px;
- margin-bottom: -15px;
-}
-
-QSlider::add-page:horizontal {
- height: 10px;
- background: white;
-}
-
-QSlider::sub-page:horizontal {
- height: 10px;
- background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eee, stop:1 #ccc);
-}
-
-QSlider::groove:vertical {
- width: 10px;
-}
-
-QSlider::handle:vertical {
- height: 40px; margin-left: -15px; margin-right: -15px;
-}
-
-QSlider::add-page:vertical {
- width: 10px;
- background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eee, stop:1 #ccc);
-}
-
-QSlider::sub-page:vertical {
- width: 10px;
- background: white;
+QSlider::groove {
+ border: 2px solid black;
+ border-radius: 5px;
+ background: white;
+}
+
+QSlider::handle {
+ border: 2px solid black;
+ border-radius: 8px;
+ background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eee, stop:1 #ccc);
+}
+
+QSlider::add-page {
+ border: 2px solid black;
+ border-radius: 5px;
+}
+
+QSlider::sub-page {
+ border: 2px solid black;
+ border-radius: 5px;
+}
+
+QSlider::groove:horizontal {
+ height: 10px;
+}
+
+QSlider::handle:horizontal {
+ width: 40px;
+ margin-top: -15px;
+ margin-bottom: -15px;
+}
+
+QSlider::add-page:horizontal {
+ height: 10px;
+ background: white;
+}
+
+QSlider::sub-page:horizontal {
+ height: 10px;
+ background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eee, stop:1 #ccc);
+}
+
+QSlider::groove:vertical {
+ width: 10px;
+}
+
+QSlider::handle:vertical {
+ height: 40px; margin-left: -15px; margin-right: -15px;
+}
+
+QSlider::add-page:vertical {
+ width: 10px;
+ background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eee, stop:1 #ccc);
+}
+
+QSlider::sub-page:vertical {
+ width: 10px;
+ background: white;
} \ No newline at end of file
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/application_postscript b/src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/application_postscript
index 41107c3..c4b9ae6 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/application_postscript
+++ b/src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/application_postscript
@@ -1,137 +1,137 @@
-%!PS-Adobe-2.0 EPSF-1.2
-%%Creator: HiJaak 2.1
-%%CreationDate: 12/29/93 13:52:08
-%%BoundingBox:126 216 486 576
-%%EndComments
-/ld {load def} bind def
-/s /stroke ld /f /fill ld /m /moveto ld /l /lineto ld /c /curveto ld /rgb {255 div 3 1 roll 255 div 3 1 roll 255 div 3 1 roll setrgbcolor} def
-126 216 translate
-360.0000 360.0000 scale
-/picstr 124 string def
-124 124 8 [124 0 0 -124 0 124] {currentfile picstr readhexstring pop} image
-65656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD1B1B1B1B1B1B1B1B1B1BFF
-65656565656565656565656565656565656565656565656565656565656565006565656565006565656500656565656565000000656565656565656565656565656565656565656565656565656565656565ADADAD00ADADAD000000ADAD00ADADADADAD00AD00ADADADAD00ADADADAD00000000001B1B001B1B1BFF
-65656565656565656565656565656565656565656565656565656565656565000065656500006565650065006565656500656565006565656565656565656565656565656565656565656565656565656565ADADAD00ADAD00ADADAD00ADAD00ADADAD00ADAD0000ADADAD00ADADADAD001B1B1B1B001B001B1B1BFF
-65656565656565656565656565656565656565656565656565656565656565000065656500006565650065006565650065656565650065656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADAD00ADADAD00ADAD00AD00ADAD00ADADADAD001B1B1B1B001B001B1B1BFF
-65656565656565656565656565656565656565656565656565656565656565006500650065006565650065006565650065656565656565656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADADAD00AD00ADADAD00AD00ADAD00ADADADAD00000000001B1B001B1B1BFF
-65656565656565656565656565656565656565656565656565656565656565006500650065006565006565650065650065656500000065656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADADADAD00ADADADAD00ADAD00AD00ADADADAD001B1B1B1B001B001B1B1BFF
-65656565656565656565656565656565656565656565656565656565656565006500650065006565000000000065650065656565650065656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADADADAD00ADADADAD00ADAD00AD00ADADADAD001B1B1B1B001B001B1B1BFF
-65656565656565656565656565656565656565656565656565656565656565006565006565006500656565656500656500656565006565656565656565656565656565656565656565656565656565656565ADADAD00ADAD00ADADAD00ADADADAD00ADADADAD00ADADAD0000ADADADAD001B1B1B1B001B001B1B1BFF
-65656565656565656565656565656565656565656565656565656565656565006565006565006500656565656500656565000000656565656565656565656565656565656565656565656565656565656565ADADAD00ADADAD000000ADADADADAD00ADADADAD00ADADADAD00ADADADAD00000000001B1B00000000FF
-65656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565ADADAD00ADADADADADADADADADADADADADADADADADADADADADADADADADADAD1B1B1B1B1B1B1B1B1B1BFF
-65656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565ADADAD00ADADADADADADADADADADADADADADADADADADADADADADADADADADAD1B1B1B1B1B1B1B1B1B1BFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDC0000DC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292000000009292000000000092920000929200009292929292ADADADAD00000000ADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDC0000DC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929200009292000092000092920000920000929200009292929292ADADAD0000ADAD0000ADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDC00DCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929292929292000092920000920000009200009292929292ADAD0000ADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00000000DCDC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929292929292000092920000920000009200009292929292ADAD0000ADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929200000092000000000092920000920000009292929292ADAD0000ADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929292000092000092000092920000920000009292929292ADAD0000ADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929200009292000092000092920000920000929200009292929292ADADAD0000ADAD0000ADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000000000DC000000000000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292000000009292000092929200000000929200009292929292ADADADAD00000000ADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00000000004A4A00000000004A00000000004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDC0000DCDC0000DC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDC00000065656500000065FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDC0000DCDC0000DC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00000065656500000065FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDC00DCDC00DCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00000000650000000065FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00000000004A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDC00000000DCDC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDC00000000650000000065FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00000000004A4A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00006500650065000065FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A00004A4A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00006500000065000065FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00006500000065000065FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A4A000000000000004A00000000004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000000000DC000000000000DCDCDCDCDCDCDC00006565006565000065FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A00000000004A4A4A4A0000004A4A4A00000000004A4A4A4A004A4A4A4A4A00000000004A00000000004A00000000004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A004A4A4A4A004A4A004A4A4A004A4A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A004A4A4A4A004A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A00000000004A4A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A00000000004A000000004A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A004A4A4A4A004A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A004A4A4A4A004A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A004A4A4A4A004A4A004A4A4A004A4A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A00000000004A4A4A4A0000004A4A4A4A4A004A4A4A4A4A4A00000000004A00000000004A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
-showpage
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: HiJaak 2.1
+%%CreationDate: 12/29/93 13:52:08
+%%BoundingBox:126 216 486 576
+%%EndComments
+/ld {load def} bind def
+/s /stroke ld /f /fill ld /m /moveto ld /l /lineto ld /c /curveto ld /rgb {255 div 3 1 roll 255 div 3 1 roll 255 div 3 1 roll setrgbcolor} def
+126 216 translate
+360.0000 360.0000 scale
+/picstr 124 string def
+124 124 8 [124 0 0 -124 0 124] {currentfile picstr readhexstring pop} image
+65656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD1B1B1B1B1B1B1B1B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006565656565006565656500656565656565000000656565656565656565656565656565656565656565656565656565656565ADADAD00ADADAD000000ADAD00ADADADADAD00AD00ADADADAD00ADADADAD00000000001B1B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565000065656500006565650065006565656500656565006565656565656565656565656565656565656565656565656565656565ADADAD00ADAD00ADADAD00ADAD00ADADAD00ADAD0000ADADAD00ADADADAD001B1B1B1B001B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565000065656500006565650065006565650065656565650065656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADAD00ADADAD00ADAD00AD00ADAD00ADADADAD001B1B1B1B001B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006500650065006565650065006565650065656565656565656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADADAD00AD00ADADAD00AD00ADAD00ADADADAD00000000001B1B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006500650065006565006565650065650065656500000065656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADADADAD00ADADADAD00ADAD00AD00ADADADAD001B1B1B1B001B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006500650065006565000000000065650065656565650065656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADADADAD00ADADADAD00ADAD00AD00ADADADAD001B1B1B1B001B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006565006565006500656565656500656500656565006565656565656565656565656565656565656565656565656565656565ADADAD00ADAD00ADADAD00ADADADAD00ADADADAD00ADADAD0000ADADADAD001B1B1B1B001B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006565006565006500656565656500656565000000656565656565656565656565656565656565656565656565656565656565ADADAD00ADADAD000000ADADADADAD00ADADADAD00ADADADAD00ADADADAD00000000001B1B00000000FF
+65656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565ADADAD00ADADADADADADADADADADADADADADADADADADADADADADADADADADAD1B1B1B1B1B1B1B1B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565ADADAD00ADADADADADADADADADADADADADADADADADADADADADADADADADADAD1B1B1B1B1B1B1B1B1B1BFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDC0000DC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292000000009292000000000092920000929200009292929292ADADADAD00000000ADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDC0000DC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929200009292000092000092920000920000929200009292929292ADADAD0000ADAD0000ADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDC00DCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929292929292000092920000920000009200009292929292ADAD0000ADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00000000DCDC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929292929292000092920000920000009200009292929292ADAD0000ADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929200000092000000000092920000920000009292929292ADAD0000ADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929292000092000092000092920000920000009292929292ADAD0000ADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929200009292000092000092920000920000929200009292929292ADADAD0000ADAD0000ADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000000000DC000000000000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292000000009292000092929200000000929200009292929292ADADADAD00000000ADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00000000004A4A00000000004A00000000004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDC0000DCDC0000DC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDC00000065656500000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDC0000DCDC0000DC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00000065656500000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDC00DCDC00DCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00000000650000000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00000000004A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDC00000000DCDC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDC00000000650000000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00000000004A4A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00006500650065000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A00004A4A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00006500000065000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00006500000065000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A4A000000000000004A00000000004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000000000DC000000000000DCDCDCDCDCDCDC00006565006565000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A00000000004A4A4A4A0000004A4A4A00000000004A4A4A4A004A4A4A4A4A00000000004A00000000004A00000000004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A004A4A4A4A004A4A004A4A4A004A4A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A004A4A4A4A004A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A00000000004A4A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A00000000004A000000004A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A004A4A4A4A004A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A004A4A4A4A004A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A004A4A4A4A004A4A004A4A4A004A4A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A00000000004A4A4A4A0000004A4A4A4A4A004A4A4A4A4A4A00000000004A00000000004A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+showpage
 \ No newline at end of file
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/text_xml b/src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/text_xml
index dd4f6fd..38a9fe5 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/text_xml
+++ b/src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/text_xml
@@ -1,19 +1,19 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<CATALOG>
- <CD>
- <TITLE>Empire Burlesque</TITLE>
- <ARTIST>Bob Dylan</ARTIST>
- <COUNTRY>USA</COUNTRY>
- <COMPANY>Columbia</COMPANY>
- <PRICE>10.90</PRICE>
- <YEAR>1985</YEAR>
- </CD>
- <CD>
- <TITLE>Unchain my heart</TITLE>
- <ARTIST>Joe Cocker</ARTIST>
- <COUNTRY>USA</COUNTRY>
- <COMPANY>EMI</COMPANY>
- <PRICE>8.20</PRICE>
- <YEAR>1987</YEAR>
- </CD>
-</CATALOG>
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<CATALOG>
+ <CD>
+ <TITLE>Empire Burlesque</TITLE>
+ <ARTIST>Bob Dylan</ARTIST>
+ <COUNTRY>USA</COUNTRY>
+ <COMPANY>Columbia</COMPANY>
+ <PRICE>10.90</PRICE>
+ <YEAR>1985</YEAR>
+ </CD>
+ <CD>
+ <TITLE>Unchain my heart</TITLE>
+ <ARTIST>Joe Cocker</ARTIST>
+ <COUNTRY>USA</COUNTRY>
+ <COMPANY>EMI</COMPANY>
+ <PRICE>8.20</PRICE>
+ <YEAR>1987</YEAR>
+ </CD>
+</CATALOG>
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe.html b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe.html
index 4b0e30c..ee0f64d 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe.html
+++ b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe.html
@@ -1,53 +1,53 @@
-<html>
-<head>
-<title></title>
-<style type="text/css">
-<!--
-#header {
- background: #0f0;
- position: absolute;
- top: 0px;
- left: 0px;
- width: 800px;
- height: 100px;
-}
-#content1 {
- background: #ff0;
- position: absolute;
- top: 101px;
- left: 0px;
- width: 400px;
- height: 400px;
- overflow: scroll;
-}
-#content2 {
- background: #ff7;
- position: absolute;
- top: 101px;
- left: 401px;
- width: 400px;
- height: 400px;
-}
-#footer {
- background: #0f0;
- position: absolute;
- top: 502px;
- left: 0px;
- width: 800px;
- height: 200px;
-}
--->
-</style>
-</head>
-<body>
-<div id="header"></div>
-<div id="content1">You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
-You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
-You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
-You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
-You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
-You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.</div>
-<iframe id="content2" name="control" src="testiframe2.html"> </iframe>
-<div id="footer"></div>
-</body>
+<html>
+<head>
+<title></title>
+<style type="text/css">
+<!--
+#header {
+ background: #0f0;
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ width: 800px;
+ height: 100px;
+}
+#content1 {
+ background: #ff0;
+ position: absolute;
+ top: 101px;
+ left: 0px;
+ width: 400px;
+ height: 400px;
+ overflow: scroll;
+}
+#content2 {
+ background: #ff7;
+ position: absolute;
+ top: 101px;
+ left: 401px;
+ width: 400px;
+ height: 400px;
+}
+#footer {
+ background: #0f0;
+ position: absolute;
+ top: 502px;
+ left: 0px;
+ width: 800px;
+ height: 200px;
+}
+-->
+</style>
+</head>
+<body>
+<div id="header"></div>
+<div id="content1">You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
+You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
+You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
+You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
+You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
+You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.</div>
+<iframe id="content2" name="control" src="testiframe2.html"> </iframe>
+<div id="footer"></div>
+</body>
</html> \ No newline at end of file
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe2.html b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe2.html
index 8957a5d..483e94e 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe2.html
+++ b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe2.html
@@ -1,20 +1,20 @@
-<html>
-<head>
-<title></title>
-<style type="text/css">
-<!--
-#content {
- background: #fff;
- position: absolute;
- top: 0px;
- left: 0px;
- width: 800px;
- height: 800px;
-}
--->
-</style>
-</head>
-<body>
-<div id="content"> </div>
-</body>
+<html>
+<head>
+<title></title>
+<style type="text/css">
+<!--
+#content {
+ background: #fff;
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ width: 800px;
+ height: 800px;
+}
+-->
+</style>
+</head>
+<body>
+<div id="content"> </div>
+</body>
</html> \ No newline at end of file
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 f2bdcee..c9e862a 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
@@ -649,7 +649,7 @@ private slots:
void setContent_data();
void setContent();
void setCacheLoadControlAttribute();
- //void setUrlWithPendingLoads();
+ void setUrlWithPendingLoads();
void setUrlWithFragment_data();
void setUrlWithFragment();
void setUrlToEmpty();
@@ -658,6 +658,9 @@ private slots:
void setUrlSameUrl();
void setUrlThenLoads_data();
void setUrlThenLoads();
+ void loadFinishedAfterNotFoundError();
+ void loadInSignalHandlers_data();
+ void loadInSignalHandlers();
private:
QString evalJS(const QString&s) {
@@ -2301,6 +2304,8 @@ class FakeReply : public QNetworkReply {
Q_OBJECT
public:
+ static const QUrl urlFor404ErrorWithoutContents;
+
FakeReply(const QNetworkRequest& request, QObject* parent = 0)
: QNetworkReply(parent)
{
@@ -2320,6 +2325,10 @@ public:
else if (request.url().host() == QLatin1String("abcdef.abcdef")) {
setError(QNetworkReply::HostNotFoundError, tr("Invalid URL"));
QTimer::singleShot(0, this, SLOT(continueError()));
+ } else if (request.url() == FakeReply::urlFor404ErrorWithoutContents) {
+ setError(QNetworkReply::ContentNotFoundError, "Not found");
+ setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 404);
+ QTimer::singleShot(0, this, SLOT(continueError()));
}
open(QIODevice::ReadOnly);
@@ -2351,6 +2360,8 @@ private slots:
}
};
+const QUrl FakeReply::urlFor404ErrorWithoutContents = QUrl("http://this.will/return-http-404-error-without-contents.html");
+
class FakeNetworkManager : public QNetworkAccessManager {
Q_OBJECT
@@ -2362,17 +2373,17 @@ protected:
{
QString url = request.url().toString();
if (op == QNetworkAccessManager::GetOperation) {
- if (url == "qrc:/test1.html" || url == "http://abcdef.abcdef/")
- return new FakeReply(request, this);
#ifndef QT_NO_OPENSSL
- else if (url == "qrc:/fake-ssl-error.html") {
+ if (url == "qrc:/fake-ssl-error.html") {
FakeReply* reply = new FakeReply(request, this);
QList<QSslError> errors;
emit sslErrors(reply, errors << QSslError(QSslError::UnspecifiedError));
return reply;
}
#endif
- }
+ if (url == "qrc:/test1.html" || url == "http://abcdef.abcdef/" || request.url() == FakeReply::urlFor404ErrorWithoutContents)
+ return new FakeReply(request, this);
+ }
return QNetworkAccessManager::createRequest(op, request, outgoingData);
}
@@ -2502,9 +2513,7 @@ void tst_QWebFrame::setHtmlWithResource()
QCOMPARE(spy.count(), 1);
QCOMPARE(frame->evaluateJavaScript("document.images.length").toInt(), 1);
- QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=63235", Continue);
QCOMPARE(frame->evaluateJavaScript("document.images[0].width").toInt(), 128);
- QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=63235", Continue);
QCOMPARE(frame->evaluateJavaScript("document.images[0].height").toInt(), 128);
QString html2 =
@@ -2523,7 +2532,6 @@ void tst_QWebFrame::setHtmlWithResource()
QCOMPARE(spy.size(), 2);
QWebElement p = frame->documentElement().findAll("p").at(0);
- QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=63235", Continue);
QCOMPARE(p.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("red"));
}
@@ -2898,7 +2906,10 @@ void tst_QWebFrame::renderGeometry()
QList<QWebFrame*> frames = page.mainFrame()->childFrames();
QWebFrame *frame = frames.at(0);
QString innerHtml("<body style='margin: 0px;'><img src='qrc:/image.png'/></body>");
- frame->setHtml(innerHtml);
+
+ // By default, only security origins of local files can load local resources.
+ // So we should specify baseUrl to be a local file in order to get a proper origin.
+ frame->setHtml(innerHtml, QUrl("file:///path/to/file"));
waitForSignal(frame, SIGNAL(loadFinished(bool)), 200);
QPicture picture;
@@ -2911,9 +2922,7 @@ void tst_QWebFrame::renderGeometry()
frame->render(&painter1, QWebFrame::ContentsLayer);
painter1.end();
- QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=63236", Continue);
QCOMPARE(size.width(), picture.boundingRect().width() + frame->scrollBarGeometry(Qt::Vertical).width());
- QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=63236", Continue);
QCOMPARE(size.height(), picture.boundingRect().height() + frame->scrollBarGeometry(Qt::Horizontal).height());
// render everything, should be the size of the iframe
@@ -2921,9 +2930,7 @@ void tst_QWebFrame::renderGeometry()
frame->render(&painter2, QWebFrame::AllLayers);
painter2.end();
- QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=63236", Continue);
QCOMPARE(size.width(), picture.boundingRect().width()); // width: 100px
- QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=63236", Continue);
QCOMPARE(size.height(), picture.boundingRect().height()); // height: 100px
}
@@ -3359,16 +3366,12 @@ void tst_QWebFrame::webElementSlotOnly()
QCOMPARE(evalJS("myWebElementSlotObject.tagName"), QString("BODY"));
}
-// [Qt] Fix tst_QWebFrame::setUrlWithPendingLoads() API test
-// https://bugs.webkit.org/show_bug.cgi?id=63237
-/*
void tst_QWebFrame::setUrlWithPendingLoads()
{
QWebPage page;
page.mainFrame()->setHtml("<img src='dummy:'/>");
page.mainFrame()->setUrl(QUrl("about:blank"));
}
-*/
void tst_QWebFrame::setUrlWithFragment_data()
{
@@ -3658,5 +3661,113 @@ void tst_QWebFrame::setUrlThenLoads()
QCOMPARE(frame->baseUrl(), extractBaseUrl(urlToLoad2));
}
+void tst_QWebFrame::loadFinishedAfterNotFoundError()
+{
+ QWebPage page;
+ QWebFrame* frame = page.mainFrame();
+
+ QSignalSpy spy(&page, SIGNAL(loadFinished(bool)));
+ FakeNetworkManager* networkManager = new FakeNetworkManager(&page);
+ page.setNetworkAccessManager(networkManager);
+
+ frame->setUrl(FakeReply::urlFor404ErrorWithoutContents);
+ QTRY_COMPARE(spy.count(), 1);
+ const bool wasLoadOk = spy.at(0).at(0).toBool();
+ QVERIFY(!wasLoadOk);
+}
+
+class URLSetter : public QObject {
+ Q_OBJECT
+
+public:
+ enum Signal {
+ LoadStarted,
+ LoadFinished,
+ ProvisionalLoad
+ };
+
+ enum Type {
+ UseLoad,
+ UseSetUrl
+ };
+
+ URLSetter(QWebFrame*, Signal, Type, const QUrl&);
+
+public slots:
+ void execute();
+
+signals:
+ void finished();
+
+private:
+ QWebFrame* m_frame;
+ QUrl m_url;
+ Type m_type;
+};
+
+Q_DECLARE_METATYPE(URLSetter::Signal)
+Q_DECLARE_METATYPE(URLSetter::Type)
+
+URLSetter::URLSetter(QWebFrame* frame, Signal signal, URLSetter::Type type, const QUrl& url)
+ : m_frame(frame), m_url(url), m_type(type)
+{
+ if (signal == LoadStarted)
+ connect(m_frame, SIGNAL(loadStarted()), SLOT(execute()));
+ else if (signal == LoadFinished)
+ connect(m_frame, SIGNAL(loadFinished(bool)), SLOT(execute()));
+ else
+ connect(m_frame, SIGNAL(provisionalLoad()), SLOT(execute()));
+}
+
+void URLSetter::execute()
+{
+ // We track only the first emission.
+ m_frame->disconnect(this);
+ if (m_type == URLSetter::UseLoad)
+ m_frame->load(m_url);
+ else
+ m_frame->setUrl(m_url);
+ connect(m_frame, SIGNAL(loadFinished(bool)), SIGNAL(finished()));
+}
+
+void tst_QWebFrame::loadInSignalHandlers_data()
+{
+ QTest::addColumn<URLSetter::Type>("type");
+ QTest::addColumn<URLSetter::Signal>("signal");
+ QTest::addColumn<QUrl>("url");
+
+ const QUrl validUrl("qrc:/test2.html");
+ const QUrl invalidUrl("qrc:/invalid");
+
+ QTest::newRow("call load() in loadStarted() after valid url") << URLSetter::UseLoad << URLSetter::LoadStarted << validUrl;
+ QTest::newRow("call load() in loadStarted() after invalid url") << URLSetter::UseLoad << URLSetter::LoadStarted << invalidUrl;
+ QTest::newRow("call load() in loadFinished() after valid url") << URLSetter::UseLoad << URLSetter::LoadFinished << validUrl;
+ QTest::newRow("call load() in loadFinished() after invalid url") << URLSetter::UseLoad << URLSetter::LoadFinished << invalidUrl;
+ QTest::newRow("call load() in provisionalLoad() after valid url") << URLSetter::UseLoad << URLSetter::ProvisionalLoad << validUrl;
+ QTest::newRow("call load() in provisionalLoad() after invalid url") << URLSetter::UseLoad << URLSetter::ProvisionalLoad << invalidUrl;
+
+ QTest::newRow("call setUrl() in loadStarted() after valid url") << URLSetter::UseSetUrl << URLSetter::LoadStarted << validUrl;
+ QTest::newRow("call setUrl() in loadStarted() after invalid url") << URLSetter::UseSetUrl << URLSetter::LoadStarted << invalidUrl;
+ QTest::newRow("call setUrl() in loadFinished() after valid url") << URLSetter::UseSetUrl << URLSetter::LoadFinished << validUrl;
+ QTest::newRow("call setUrl() in loadFinished() after invalid url") << URLSetter::UseSetUrl << URLSetter::LoadFinished << invalidUrl;
+ QTest::newRow("call setUrl() in provisionalLoad() after valid url") << URLSetter::UseSetUrl << URLSetter::ProvisionalLoad << validUrl;
+ QTest::newRow("call setUrl() in provisionalLoad() after invalid url") << URLSetter::UseSetUrl << URLSetter::ProvisionalLoad << invalidUrl;
+}
+
+void tst_QWebFrame::loadInSignalHandlers()
+{
+ QFETCH(URLSetter::Type, type);
+ QFETCH(URLSetter::Signal, signal);
+ QFETCH(QUrl, url);
+
+ QWebFrame* frame = m_page->mainFrame();
+ const QUrl urlForSetter("qrc:/test1.html");
+ URLSetter setter(frame, signal, type, urlForSetter);
+
+ frame->load(url);
+ waitForSignal(&setter, SIGNAL(finished()), 200);
+ QCOMPARE(frame->url(), urlForSetter);
+}
+
QTEST_MAIN(tst_QWebFrame)
#include "tst_qwebframe.moc"
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 359ef05..893c284 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
@@ -130,6 +130,7 @@ private slots:
void errorPageExtension();
void errorPageExtensionInIFrames();
void errorPageExtensionInFrameset();
+ void errorPageExtensionLoadFinished();
void userAgentApplicationName();
void viewModes();
@@ -2572,6 +2573,35 @@ void tst_QWebPage::errorPageExtensionInFrameset()
m_view->setPage(0);
}
+void tst_QWebPage::errorPageExtensionLoadFinished()
+{
+ ErrorPage page;
+ m_view->setPage(&page);
+
+ QSignalSpy spyLoadFinished(m_view, SIGNAL(loadFinished(bool)));
+ QSignalSpy spyFrameLoadFinished(m_view->page()->mainFrame(), SIGNAL(loadFinished(bool)));
+
+ m_view->setUrl(QUrl("data:text/html,foo"));
+ QTRY_COMPARE(spyLoadFinished.count(), 1);
+ QTRY_COMPARE(spyFrameLoadFinished.count(), 1);
+
+ const bool loadSucceded = spyLoadFinished.at(0).at(0).toBool();
+ QVERIFY(loadSucceded);
+ const bool frameLoadSucceded = spyFrameLoadFinished.at(0).at(0).toBool();
+ QVERIFY(frameLoadSucceded);
+
+ m_view->page()->mainFrame()->setUrl(QUrl("http://non.existent/url"));
+ QTRY_COMPARE(spyLoadFinished.count(), 2);
+ QTRY_COMPARE(spyFrameLoadFinished.count(), 2);
+
+ const bool nonExistantLoadSucceded = spyLoadFinished.at(1).at(0).toBool();
+ QVERIFY(nonExistantLoadSucceded);
+ const bool nonExistantFrameLoadSucceded = spyFrameLoadFinished.at(1).at(0).toBool();
+ QVERIFY(nonExistantFrameLoadSucceded);
+
+ m_view->setPage(0);
+}
+
class FriendlyWebPage : public QWebPage
{
public:
diff --git a/src/3rdparty/webkit/Source/WebKit2/ChangeLog b/src/3rdparty/webkit/Source/WebKit2/ChangeLog
index b6e5afe..be0c43d 100644
--- a/src/3rdparty/webkit/Source/WebKit2/ChangeLog
+++ b/src/3rdparty/webkit/Source/WebKit2/ChangeLog
@@ -1,3 +1,30 @@
+2011-08-06 Aron Rosenberg <arosenberg@logitech.com>
+
+ Reviewed by Benjamin Poulain.
+
+ [Qt] Fix build with Intel compiler on Windows
+ https://bugs.webkit.org/show_bug.cgi?id=65088
+
+ Intel compiler needs .lib suffixes instead of .a
+
+ * WebKit2.pri:
+
+2011-06-23 Robert Hogan <robert@webkit.org>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Windowless Plugins : <input> cursor blinks even after transferring focus to plugin
+ https://bugs.webkit.org/show_bug.cgi?id=30355
+
+ PluginView needs to use page->focusController()->setFocusedNode() when focusing a plugin
+ in order to clear the FrameSelection in the currently focused node. In its platform-specific
+ code Chromium already does this (WebPluginContainerImpl.cpp).
+
+ * WebProcess/Plugins/PluginView.cpp:
+ (WebCore::PluginView::focusPluginElement): Using FocusController::setFocusedNode() makes
+ the call to FocusController:setFocusedFrame() redundant, since the
+ former calls it.
+
2011-06-27 Huang Dongsung <luxtella@company100.net>
Reviewed by Kenneth Rohde Christiansen.
diff --git a/src/3rdparty/webkit/Source/WebKit2/WebKit2.pri b/src/3rdparty/webkit/Source/WebKit2/WebKit2.pri
index 32c25e1..3122326 100644
--- a/src/3rdparty/webkit/Source/WebKit2/WebKit2.pri
+++ b/src/3rdparty/webkit/Source/WebKit2/WebKit2.pri
@@ -73,7 +73,7 @@ symbian {
defineTest(prependWebKit2Lib) {
pathToWebKit2Output = $$ARGS/$$WEBKIT2_DESTDIR
- win32-msvc*|wince* {
+ win32-msvc*|wince*|win32-icc {
LIBS = -l$$WEBKIT2_TARGET $$LIBS
LIBS = -L$$pathToWebKit2Output $$LIBS
POST_TARGETDEPS += $${pathToWebKit2Output}$${QMAKE_DIR_SEP}$${WEBKIT2_TARGET}.lib
diff --git a/src/3rdparty/webkit/Source/WebKit2/WebProcess/Plugins/PluginView.cpp b/src/3rdparty/webkit/Source/WebKit2/WebProcess/Plugins/PluginView.cpp
index feb1e5c..1962d8c 100644
--- a/src/3rdparty/webkit/Source/WebKit2/WebProcess/Plugins/PluginView.cpp
+++ b/src/3rdparty/webkit/Source/WebKit2/WebProcess/Plugins/PluginView.cpp
@@ -638,8 +638,9 @@ void PluginView::focusPluginElement()
ASSERT(frame());
if (Page* page = frame()->page())
- page->focusController()->setFocusedFrame(frame());
- frame()->document()->setFocusedNode(m_pluginElement);
+ page->focusController()->setFocusedNode(m_pluginElement.get(), frame());
+ else
+ frame()->document()->setFocusedNode(m_pluginElement);
}
void PluginView::pendingURLRequestsTimerFired()
diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index 85f9e4f..413f504 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
- a52dbae362a295e0adfb7ee4fdc21734ae4b7b45
+ dda59e50379214c098f365a39c4d64b39ced427e
diff --git a/src/3rdparty/webkit/WebKitLibraries/libWebCoreSQLite3.a b/src/3rdparty/webkit/WebKitLibraries/libWebCoreSQLite3.a
new file mode 100644
index 0000000..2e5fd15
--- /dev/null
+++ b/src/3rdparty/webkit/WebKitLibraries/libWebCoreSQLite3.a
Binary files differ
diff --git a/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceLeopard.a b/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceLeopard.a
new file mode 100644
index 0000000..43b6043
--- /dev/null
+++ b/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceLeopard.a
Binary files differ
diff --git a/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceLion.a b/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceLion.a
new file mode 100644
index 0000000..345860c
--- /dev/null
+++ b/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceLion.a
Binary files differ
diff --git a/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.a b/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.a
new file mode 100644
index 0000000..845ca54
--- /dev/null
+++ b/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.a
Binary files differ
diff --git a/src/3rdparty/webkit/include/JavaScriptCore/APICast.h b/src/3rdparty/webkit/include/JavaScriptCore/APICast.h
new file mode 100644
index 0000000..237bfc8
--- /dev/null
+++ b/src/3rdparty/webkit/include/JavaScriptCore/APICast.h
@@ -0,0 +1 @@
+#include "JavaScriptCore/API/APICast.h"
diff --git a/src/3rdparty/webkit/include/JavaScriptCore/Error.h b/src/3rdparty/webkit/include/JavaScriptCore/Error.h
new file mode 100644
index 0000000..4635063
--- /dev/null
+++ b/src/3rdparty/webkit/include/JavaScriptCore/Error.h
@@ -0,0 +1 @@
+#include "JavaScriptCore/runtime/Error.h"
diff --git a/src/3rdparty/webkit/include/JavaScriptCore/FunctionPrototype.h b/src/3rdparty/webkit/include/JavaScriptCore/FunctionPrototype.h
new file mode 100644
index 0000000..a2829fb
--- /dev/null
+++ b/src/3rdparty/webkit/include/JavaScriptCore/FunctionPrototype.h
@@ -0,0 +1 @@
+#include "JavaScriptCore/runtime/FunctionPrototype.h"
diff --git a/src/3rdparty/webkit/include/JavaScriptCore/InternalFunction.h b/src/3rdparty/webkit/include/JavaScriptCore/InternalFunction.h
new file mode 100644
index 0000000..7c549e0
--- /dev/null
+++ b/src/3rdparty/webkit/include/JavaScriptCore/InternalFunction.h
@@ -0,0 +1 @@
+#include "JavaScriptCore/runtime/InternalFunction.h"
diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JSBase.h b/src/3rdparty/webkit/include/JavaScriptCore/JSBase.h
new file mode 100644
index 0000000..9c3826e
--- /dev/null
+++ b/src/3rdparty/webkit/include/JavaScriptCore/JSBase.h
@@ -0,0 +1 @@
+#include "JavaScriptCore/API/JSBase.h"
diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JSContextRef.h b/src/3rdparty/webkit/include/JavaScriptCore/JSContextRef.h
new file mode 100644
index 0000000..f2f0c47
--- /dev/null
+++ b/src/3rdparty/webkit/include/JavaScriptCore/JSContextRef.h
@@ -0,0 +1 @@
+#include "JavaScriptCore/API/JSContextRef.h"
diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JSGlobalObject.h b/src/3rdparty/webkit/include/JavaScriptCore/JSGlobalObject.h
new file mode 100644
index 0000000..ebbffb4
--- /dev/null
+++ b/src/3rdparty/webkit/include/JavaScriptCore/JSGlobalObject.h
@@ -0,0 +1 @@
+#include "JavaScriptCore/runtime/JSGlobalObject.h"
diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JSLock.h b/src/3rdparty/webkit/include/JavaScriptCore/JSLock.h
new file mode 100644
index 0000000..7934695
--- /dev/null
+++ b/src/3rdparty/webkit/include/JavaScriptCore/JSLock.h
@@ -0,0 +1 @@
+#include "JavaScriptCore/runtime/JSLock.h"
diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JSObject.h b/src/3rdparty/webkit/include/JavaScriptCore/JSObject.h
new file mode 100644
index 0000000..e6767cf
--- /dev/null
+++ b/src/3rdparty/webkit/include/JavaScriptCore/JSObject.h
@@ -0,0 +1 @@
+#include "JavaScriptCore/runtime/JSObject.h"
diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JSObjectWithGlobalObject.h b/src/3rdparty/webkit/include/JavaScriptCore/JSObjectWithGlobalObject.h
new file mode 100644
index 0000000..2125f2d
--- /dev/null
+++ b/src/3rdparty/webkit/include/JavaScriptCore/JSObjectWithGlobalObject.h
@@ -0,0 +1 @@
+#include "JavaScriptCore/runtime/JSObjectWithGlobalObject.h"
diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JSStringRef.h b/src/3rdparty/webkit/include/JavaScriptCore/JSStringRef.h
new file mode 100644
index 0000000..6141f13
--- /dev/null
+++ b/src/3rdparty/webkit/include/JavaScriptCore/JSStringRef.h
@@ -0,0 +1 @@
+#include "JavaScriptCore/API/JSStringRef.h"
diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JSValueRef.h b/src/3rdparty/webkit/include/JavaScriptCore/JSValueRef.h
new file mode 100644
index 0000000..a038672
--- /dev/null
+++ b/src/3rdparty/webkit/include/JavaScriptCore/JSValueRef.h
@@ -0,0 +1 @@
+#include "JavaScriptCore/API/JSValueRef.h"
diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JavaScript.h b/src/3rdparty/webkit/include/JavaScriptCore/JavaScript.h
new file mode 100644
index 0000000..d5e2b25
--- /dev/null
+++ b/src/3rdparty/webkit/include/JavaScriptCore/JavaScript.h
@@ -0,0 +1 @@
+#include "JavaScriptCore/API/JavaScript.h"
diff --git a/src/3rdparty/webkit/include/JavaScriptCore/ObjectPrototype.h b/src/3rdparty/webkit/include/JavaScriptCore/ObjectPrototype.h
new file mode 100644
index 0000000..d66b76c
--- /dev/null
+++ b/src/3rdparty/webkit/include/JavaScriptCore/ObjectPrototype.h
@@ -0,0 +1 @@
+#include "JavaScriptCore/runtime/ObjectPrototype.h"
diff --git a/src/3rdparty/webkit/include/JavaScriptCore/SourceCode.h b/src/3rdparty/webkit/include/JavaScriptCore/SourceCode.h
new file mode 100644
index 0000000..148829a
--- /dev/null
+++ b/src/3rdparty/webkit/include/JavaScriptCore/SourceCode.h
@@ -0,0 +1 @@
+#include "JavaScriptCore/parser/SourceCode.h"
diff --git a/src/3rdparty/webkit/include/JavaScriptCore/Strong.h b/src/3rdparty/webkit/include/JavaScriptCore/Strong.h
new file mode 100644
index 0000000..bb611f9
--- /dev/null
+++ b/src/3rdparty/webkit/include/JavaScriptCore/Strong.h
@@ -0,0 +1 @@
+#include "JavaScriptCore/heap/Strong.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/QGraphicsWebView b/src/3rdparty/webkit/include/QtWebKit/QGraphicsWebView
new file mode 100644
index 0000000..508a397
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/QGraphicsWebView
@@ -0,0 +1 @@
+#include "qgraphicswebview.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebDatabase b/src/3rdparty/webkit/include/QtWebKit/QWebDatabase
new file mode 100644
index 0000000..ec02742
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/QWebDatabase
@@ -0,0 +1 @@
+#include "qwebdatabase.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebElement b/src/3rdparty/webkit/include/QtWebKit/QWebElement
new file mode 100644
index 0000000..32a17d0
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/QWebElement
@@ -0,0 +1 @@
+#include "qwebelement.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebElementCollection b/src/3rdparty/webkit/include/QtWebKit/QWebElementCollection
new file mode 100644
index 0000000..32a17d0
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/QWebElementCollection
@@ -0,0 +1 @@
+#include "qwebelement.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebFrame b/src/3rdparty/webkit/include/QtWebKit/QWebFrame
new file mode 100644
index 0000000..0748fde
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/QWebFrame
@@ -0,0 +1 @@
+#include "qwebframe.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebHistory b/src/3rdparty/webkit/include/QtWebKit/QWebHistory
new file mode 100644
index 0000000..35e9da5
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/QWebHistory
@@ -0,0 +1 @@
+#include "qwebhistory.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebHistoryInterface b/src/3rdparty/webkit/include/QtWebKit/QWebHistoryInterface
new file mode 100644
index 0000000..7352319
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/QWebHistoryInterface
@@ -0,0 +1 @@
+#include "qwebhistoryinterface.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebHistoryItem b/src/3rdparty/webkit/include/QtWebKit/QWebHistoryItem
new file mode 100644
index 0000000..35e9da5
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/QWebHistoryItem
@@ -0,0 +1 @@
+#include "qwebhistory.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebHitTestResult b/src/3rdparty/webkit/include/QtWebKit/QWebHitTestResult
new file mode 100644
index 0000000..0748fde
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/QWebHitTestResult
@@ -0,0 +1 @@
+#include "qwebframe.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebInspector b/src/3rdparty/webkit/include/QtWebKit/QWebInspector
new file mode 100644
index 0000000..0923bb7
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/QWebInspector
@@ -0,0 +1 @@
+#include "qwebinspector.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebPage b/src/3rdparty/webkit/include/QtWebKit/QWebPage
new file mode 100644
index 0000000..e8e8c10
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/QWebPage
@@ -0,0 +1 @@
+#include "qwebpage.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebPluginFactory b/src/3rdparty/webkit/include/QtWebKit/QWebPluginFactory
new file mode 100644
index 0000000..3e4ee81
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/QWebPluginFactory
@@ -0,0 +1 @@
+#include "qwebpluginfactory.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebSecurityOrigin b/src/3rdparty/webkit/include/QtWebKit/QWebSecurityOrigin
new file mode 100644
index 0000000..6427a3b
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/QWebSecurityOrigin
@@ -0,0 +1 @@
+#include "qwebsecurityorigin.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebSettings b/src/3rdparty/webkit/include/QtWebKit/QWebSettings
new file mode 100644
index 0000000..f50c1a2
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/QWebSettings
@@ -0,0 +1 @@
+#include "qwebsettings.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebView b/src/3rdparty/webkit/include/QtWebKit/QWebView
new file mode 100644
index 0000000..3ec1eb9
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/QWebView
@@ -0,0 +1 @@
+#include "qwebview.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/QtWebKit b/src/3rdparty/webkit/include/QtWebKit/QtWebKit
new file mode 100644
index 0000000..155a551
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/QtWebKit
@@ -0,0 +1,19 @@
+#ifndef QT_QTWEBKIT_MODULE_H
+#define QT_QTWEBKIT_MODULE_H
+#include <QtNetwork/QtNetwork>
+#include "qwebframe.h"
+#include "qgraphicswebview.h"
+#include "qwebkitglobal.h"
+#include "qwebkitplatformplugin.h"
+#include "qwebpage.h"
+#include "qwebview.h"
+#include "qwebsettings.h"
+#include "qwebhistoryinterface.h"
+#include "qwebdatabase.h"
+#include "qwebsecurityorigin.h"
+#include "qwebelement.h"
+#include "qwebpluginfactory.h"
+#include "qwebhistory.h"
+#include "qwebinspector.h"
+#include "qwebkitversion.h"
+#endif // QT_QTWEBKIT_MODULE_H
diff --git a/src/3rdparty/webkit/include/QtWebKit/ViewportAttributes b/src/3rdparty/webkit/include/QtWebKit/ViewportAttributes
new file mode 100644
index 0000000..e8e8c10
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/ViewportAttributes
@@ -0,0 +1 @@
+#include "qwebpage.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/classheaders.pri b/src/3rdparty/webkit/include/QtWebKit/classheaders.pri
new file mode 100644
index 0000000..0e13e75
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/classheaders.pri
@@ -0,0 +1 @@
+WEBKIT_CLASS_HEADERS = $$PWD/QtWebKit $$PWD/QWebHitTestResult $$PWD/QWebFrame $$PWD/QGraphicsWebView $$PWD/QWebPage $$PWD/ViewportAttributes $$PWD/QWebView $$PWD/QWebSettings $$PWD/QWebHistoryInterface $$PWD/QWebDatabase $$PWD/QWebSecurityOrigin $$PWD/QWebElement $$PWD/QWebElementCollection $$PWD/QWebPluginFactory $$PWD/QWebHistoryItem $$PWD/QWebHistory $$PWD/QWebInspector
diff --git a/src/3rdparty/webkit/include/QtWebKit/qgraphicswebview.h b/src/3rdparty/webkit/include/QtWebKit/qgraphicswebview.h
new file mode 100644
index 0000000..0584f1d
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/qgraphicswebview.h
@@ -0,0 +1 @@
+#include "../../WebKit/qt/Api/qgraphicswebview.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebdatabase.h b/src/3rdparty/webkit/include/QtWebKit/qwebdatabase.h
new file mode 100644
index 0000000..f23fed4
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/qwebdatabase.h
@@ -0,0 +1 @@
+#include "../../WebKit/qt/Api/qwebdatabase.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebelement.h b/src/3rdparty/webkit/include/QtWebKit/qwebelement.h
new file mode 100644
index 0000000..e11a84b
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/qwebelement.h
@@ -0,0 +1 @@
+#include "../../WebKit/qt/Api/qwebelement.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebframe.h b/src/3rdparty/webkit/include/QtWebKit/qwebframe.h
new file mode 100644
index 0000000..d1393c5
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/qwebframe.h
@@ -0,0 +1 @@
+#include "../../WebKit/qt/Api/qwebframe.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebhistory.h b/src/3rdparty/webkit/include/QtWebKit/qwebhistory.h
new file mode 100644
index 0000000..edf6f81
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/qwebhistory.h
@@ -0,0 +1 @@
+#include "../../WebKit/qt/Api/qwebhistory.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebhistoryinterface.h b/src/3rdparty/webkit/include/QtWebKit/qwebhistoryinterface.h
new file mode 100644
index 0000000..da1a6a9
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/qwebhistoryinterface.h
@@ -0,0 +1 @@
+#include "../../WebKit/qt/Api/qwebhistoryinterface.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebinspector.h b/src/3rdparty/webkit/include/QtWebKit/qwebinspector.h
new file mode 100644
index 0000000..4742105
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/qwebinspector.h
@@ -0,0 +1 @@
+#include "../../WebKit/qt/Api/qwebinspector.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebkitglobal.h b/src/3rdparty/webkit/include/QtWebKit/qwebkitglobal.h
new file mode 100644
index 0000000..b9b2650
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/qwebkitglobal.h
@@ -0,0 +1 @@
+#include "../../WebKit/qt/Api/qwebkitglobal.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebkitplatformplugin.h b/src/3rdparty/webkit/include/QtWebKit/qwebkitplatformplugin.h
new file mode 100644
index 0000000..db4e554
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/qwebkitplatformplugin.h
@@ -0,0 +1 @@
+#include "../../WebKit/qt/Api/qwebkitplatformplugin.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebkitversion.h b/src/3rdparty/webkit/include/QtWebKit/qwebkitversion.h
new file mode 100644
index 0000000..af7be3b
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/qwebkitversion.h
@@ -0,0 +1 @@
+#include "../../WebKit/qt/Api/qwebkitversion.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebpage.h b/src/3rdparty/webkit/include/QtWebKit/qwebpage.h
new file mode 100644
index 0000000..2053ccb
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/qwebpage.h
@@ -0,0 +1 @@
+#include "../../WebKit/qt/Api/qwebpage.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebpluginfactory.h b/src/3rdparty/webkit/include/QtWebKit/qwebpluginfactory.h
new file mode 100644
index 0000000..db095b7
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/qwebpluginfactory.h
@@ -0,0 +1 @@
+#include "../../WebKit/qt/Api/qwebpluginfactory.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebsecurityorigin.h b/src/3rdparty/webkit/include/QtWebKit/qwebsecurityorigin.h
new file mode 100644
index 0000000..1ce553c
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/qwebsecurityorigin.h
@@ -0,0 +1 @@
+#include "../../WebKit/qt/Api/qwebsecurityorigin.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebsettings.h b/src/3rdparty/webkit/include/QtWebKit/qwebsettings.h
new file mode 100644
index 0000000..cdedc07
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/qwebsettings.h
@@ -0,0 +1 @@
+#include "../../WebKit/qt/Api/qwebsettings.h"
diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebview.h b/src/3rdparty/webkit/include/QtWebKit/qwebview.h
new file mode 100644
index 0000000..3490665
--- /dev/null
+++ b/src/3rdparty/webkit/include/QtWebKit/qwebview.h
@@ -0,0 +1 @@
+#include "../../WebKit/qt/Api/qwebview.h"
diff --git a/src/3rdparty/webkit/include/WebCore/AXObjectCache.h b/src/3rdparty/webkit/include/WebCore/AXObjectCache.h
new file mode 100644
index 0000000..19e50c5
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/AXObjectCache.h
@@ -0,0 +1 @@
+#include "WebCore/accessibility/AXObjectCache.h"
diff --git a/src/3rdparty/webkit/include/WebCore/AbstractDatabase.h b/src/3rdparty/webkit/include/WebCore/AbstractDatabase.h
new file mode 100644
index 0000000..e845a89
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/AbstractDatabase.h
@@ -0,0 +1 @@
+#include "WebCore/storage/AbstractDatabase.h"
diff --git a/src/3rdparty/webkit/include/WebCore/AnimationController.h b/src/3rdparty/webkit/include/WebCore/AnimationController.h
new file mode 100644
index 0000000..5a0fc36
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/AnimationController.h
@@ -0,0 +1 @@
+#include "WebCore/page/animation/AnimationController.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ApplicationCache.h b/src/3rdparty/webkit/include/WebCore/ApplicationCache.h
new file mode 100644
index 0000000..1c73afe
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ApplicationCache.h
@@ -0,0 +1 @@
+#include "WebCore/loader/appcache/ApplicationCache.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ApplicationCacheStorage.h b/src/3rdparty/webkit/include/WebCore/ApplicationCacheStorage.h
new file mode 100644
index 0000000..f5bf232
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ApplicationCacheStorage.h
@@ -0,0 +1 @@
+#include "WebCore/loader/appcache/ApplicationCacheStorage.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ArchiveResource.h b/src/3rdparty/webkit/include/WebCore/ArchiveResource.h
new file mode 100644
index 0000000..aa854cb
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ArchiveResource.h
@@ -0,0 +1 @@
+#include "WebCore/loader/archive/ArchiveResource.h"
diff --git a/src/3rdparty/webkit/include/WebCore/AuthenticationClient.h b/src/3rdparty/webkit/include/WebCore/AuthenticationClient.h
new file mode 100644
index 0000000..6dc6438
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/AuthenticationClient.h
@@ -0,0 +1 @@
+#include "WebCore/platform/network/AuthenticationClient.h"
diff --git a/src/3rdparty/webkit/include/WebCore/BackForwardController.h b/src/3rdparty/webkit/include/WebCore/BackForwardController.h
new file mode 100644
index 0000000..f352699
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/BackForwardController.h
@@ -0,0 +1 @@
+#include "WebCore/history/BackForwardController.h"
diff --git a/src/3rdparty/webkit/include/WebCore/BackForwardList.h b/src/3rdparty/webkit/include/WebCore/BackForwardList.h
new file mode 100644
index 0000000..211f9a3
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/BackForwardList.h
@@ -0,0 +1 @@
+#include "WebCore/history/BackForwardList.h"
diff --git a/src/3rdparty/webkit/include/WebCore/BitmapImage.h b/src/3rdparty/webkit/include/WebCore/BitmapImage.h
new file mode 100644
index 0000000..fd77e4e
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/BitmapImage.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/BitmapImage.h"
diff --git a/src/3rdparty/webkit/include/WebCore/CSSComputedStyleDeclaration.h b/src/3rdparty/webkit/include/WebCore/CSSComputedStyleDeclaration.h
new file mode 100644
index 0000000..89eef12
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/CSSComputedStyleDeclaration.h
@@ -0,0 +1 @@
+#include "WebCore/css/CSSComputedStyleDeclaration.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Chrome.h b/src/3rdparty/webkit/include/WebCore/Chrome.h
new file mode 100644
index 0000000..0d9d432
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Chrome.h
@@ -0,0 +1 @@
+#include "WebCore/page/Chrome.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ChromeClient.h b/src/3rdparty/webkit/include/WebCore/ChromeClient.h
new file mode 100644
index 0000000..6c49eb7
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ChromeClient.h
@@ -0,0 +1 @@
+#include "WebCore/page/ChromeClient.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Color.h b/src/3rdparty/webkit/include/WebCore/Color.h
new file mode 100644
index 0000000..0b177c5
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Color.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/Color.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ContextMenu.h b/src/3rdparty/webkit/include/WebCore/ContextMenu.h
new file mode 100644
index 0000000..5eb190d
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ContextMenu.h
@@ -0,0 +1 @@
+#include "WebCore/platform/ContextMenu.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ContextMenuClient.h b/src/3rdparty/webkit/include/WebCore/ContextMenuClient.h
new file mode 100644
index 0000000..5471ea8
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ContextMenuClient.h
@@ -0,0 +1 @@
+#include "WebCore/page/ContextMenuClient.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ContextMenuController.h b/src/3rdparty/webkit/include/WebCore/ContextMenuController.h
new file mode 100644
index 0000000..463f01a
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ContextMenuController.h
@@ -0,0 +1 @@
+#include "WebCore/page/ContextMenuController.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ContextMenuItem.h b/src/3rdparty/webkit/include/WebCore/ContextMenuItem.h
new file mode 100644
index 0000000..0ee8088
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ContextMenuItem.h
@@ -0,0 +1 @@
+#include "WebCore/platform/ContextMenuItem.h"
diff --git a/src/3rdparty/webkit/include/WebCore/CookieJar.h b/src/3rdparty/webkit/include/WebCore/CookieJar.h
new file mode 100644
index 0000000..4da688b
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/CookieJar.h
@@ -0,0 +1 @@
+#include "WebCore/platform/CookieJar.h"
diff --git a/src/3rdparty/webkit/include/WebCore/CookieStorage.h b/src/3rdparty/webkit/include/WebCore/CookieStorage.h
new file mode 100644
index 0000000..a087fc5
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/CookieStorage.h
@@ -0,0 +1 @@
+#include "WebCore/platform/network/CookieStorage.h"
diff --git a/src/3rdparty/webkit/include/WebCore/CookiesStrategy.h b/src/3rdparty/webkit/include/WebCore/CookiesStrategy.h
new file mode 100644
index 0000000..ee0f80b
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/CookiesStrategy.h
@@ -0,0 +1 @@
+#include "WebCore/platform/CookiesStrategy.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Credential.h b/src/3rdparty/webkit/include/WebCore/Credential.h
new file mode 100644
index 0000000..358cc97
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Credential.h
@@ -0,0 +1 @@
+#include "WebCore/platform/network/Credential.h"
diff --git a/src/3rdparty/webkit/include/WebCore/CrossOriginPreflightResultCache.h b/src/3rdparty/webkit/include/WebCore/CrossOriginPreflightResultCache.h
new file mode 100644
index 0000000..511572c
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/CrossOriginPreflightResultCache.h
@@ -0,0 +1 @@
+#include "WebCore/loader/CrossOriginPreflightResultCache.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Cursor.h b/src/3rdparty/webkit/include/WebCore/Cursor.h
new file mode 100644
index 0000000..416929f
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Cursor.h
@@ -0,0 +1 @@
+#include "WebCore/platform/Cursor.h"
diff --git a/src/3rdparty/webkit/include/WebCore/DOMImplementation.h b/src/3rdparty/webkit/include/WebCore/DOMImplementation.h
new file mode 100644
index 0000000..9e37ed5
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/DOMImplementation.h
@@ -0,0 +1 @@
+#include "WebCore/dom/DOMImplementation.h"
diff --git a/src/3rdparty/webkit/include/WebCore/DOMWrapperWorld.h b/src/3rdparty/webkit/include/WebCore/DOMWrapperWorld.h
new file mode 100644
index 0000000..15450f6
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/DOMWrapperWorld.h
@@ -0,0 +1 @@
+#include "WebCore/bindings/js/DOMWrapperWorld.h"
diff --git a/src/3rdparty/webkit/include/WebCore/DatabaseDetails.h b/src/3rdparty/webkit/include/WebCore/DatabaseDetails.h
new file mode 100644
index 0000000..1759bd3
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/DatabaseDetails.h
@@ -0,0 +1 @@
+#include "WebCore/storage/DatabaseDetails.h"
diff --git a/src/3rdparty/webkit/include/WebCore/DatabaseTracker.h b/src/3rdparty/webkit/include/WebCore/DatabaseTracker.h
new file mode 100644
index 0000000..e4e9f82
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/DatabaseTracker.h
@@ -0,0 +1 @@
+#include "WebCore/storage/DatabaseTracker.h"
diff --git a/src/3rdparty/webkit/include/WebCore/DatabaseTrackerClient.h b/src/3rdparty/webkit/include/WebCore/DatabaseTrackerClient.h
new file mode 100644
index 0000000..d020ce1
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/DatabaseTrackerClient.h
@@ -0,0 +1 @@
+#include "WebCore/storage/DatabaseTrackerClient.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Document.h b/src/3rdparty/webkit/include/WebCore/Document.h
new file mode 100644
index 0000000..064119d
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Document.h
@@ -0,0 +1 @@
+#include "WebCore/dom/Document.h"
diff --git a/src/3rdparty/webkit/include/WebCore/DocumentFragment.h b/src/3rdparty/webkit/include/WebCore/DocumentFragment.h
new file mode 100644
index 0000000..4ff6d72
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/DocumentFragment.h
@@ -0,0 +1 @@
+#include "WebCore/dom/DocumentFragment.h"
diff --git a/src/3rdparty/webkit/include/WebCore/DocumentLoader.h b/src/3rdparty/webkit/include/WebCore/DocumentLoader.h
new file mode 100644
index 0000000..b93cbb0
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/DocumentLoader.h
@@ -0,0 +1 @@
+#include "WebCore/loader/DocumentLoader.h"
diff --git a/src/3rdparty/webkit/include/WebCore/DocumentMarkerController.h b/src/3rdparty/webkit/include/WebCore/DocumentMarkerController.h
new file mode 100644
index 0000000..74f9fc4
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/DocumentMarkerController.h
@@ -0,0 +1 @@
+#include "WebCore/dom/DocumentMarkerController.h"
diff --git a/src/3rdparty/webkit/include/WebCore/DragActions.h b/src/3rdparty/webkit/include/WebCore/DragActions.h
new file mode 100644
index 0000000..8e4d0b3
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/DragActions.h
@@ -0,0 +1 @@
+#include "WebCore/page/DragActions.h"
diff --git a/src/3rdparty/webkit/include/WebCore/DragClient.h b/src/3rdparty/webkit/include/WebCore/DragClient.h
new file mode 100644
index 0000000..e9a96a5
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/DragClient.h
@@ -0,0 +1 @@
+#include "WebCore/page/DragClient.h"
diff --git a/src/3rdparty/webkit/include/WebCore/DragController.h b/src/3rdparty/webkit/include/WebCore/DragController.h
new file mode 100644
index 0000000..30de072
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/DragController.h
@@ -0,0 +1 @@
+#include "WebCore/page/DragController.h"
diff --git a/src/3rdparty/webkit/include/WebCore/DragData.h b/src/3rdparty/webkit/include/WebCore/DragData.h
new file mode 100644
index 0000000..d66db38
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/DragData.h
@@ -0,0 +1 @@
+#include "WebCore/platform/DragData.h"
diff --git a/src/3rdparty/webkit/include/WebCore/EditAction.h b/src/3rdparty/webkit/include/WebCore/EditAction.h
new file mode 100644
index 0000000..75200b2
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/EditAction.h
@@ -0,0 +1 @@
+#include "WebCore/editing/EditAction.h"
diff --git a/src/3rdparty/webkit/include/WebCore/EditCommand.h b/src/3rdparty/webkit/include/WebCore/EditCommand.h
new file mode 100644
index 0000000..06d9145
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/EditCommand.h
@@ -0,0 +1 @@
+#include "WebCore/editing/EditCommand.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Editor.h b/src/3rdparty/webkit/include/WebCore/Editor.h
new file mode 100644
index 0000000..1d2a300
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Editor.h
@@ -0,0 +1 @@
+#include "WebCore/editing/Editor.h"
diff --git a/src/3rdparty/webkit/include/WebCore/EditorClient.h b/src/3rdparty/webkit/include/WebCore/EditorClient.h
new file mode 100644
index 0000000..027fb4e
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/EditorClient.h
@@ -0,0 +1 @@
+#include "WebCore/page/EditorClient.h"
diff --git a/src/3rdparty/webkit/include/WebCore/EditorInsertAction.h b/src/3rdparty/webkit/include/WebCore/EditorInsertAction.h
new file mode 100644
index 0000000..7fc8a54
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/EditorInsertAction.h
@@ -0,0 +1 @@
+#include "WebCore/editing/EditorInsertAction.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Element.h b/src/3rdparty/webkit/include/WebCore/Element.h
new file mode 100644
index 0000000..ead3556
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Element.h
@@ -0,0 +1 @@
+#include "WebCore/dom/Element.h"
diff --git a/src/3rdparty/webkit/include/WebCore/EmptyProtocolDefinitions.h b/src/3rdparty/webkit/include/WebCore/EmptyProtocolDefinitions.h
new file mode 100644
index 0000000..c75e216
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/EmptyProtocolDefinitions.h
@@ -0,0 +1 @@
+#include "WebCore/platform/mac/EmptyProtocolDefinitions.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Event.h b/src/3rdparty/webkit/include/WebCore/Event.h
new file mode 100644
index 0000000..3a79434
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Event.h
@@ -0,0 +1 @@
+#include "WebCore/dom/Event.h"
diff --git a/src/3rdparty/webkit/include/WebCore/EventHandler.h b/src/3rdparty/webkit/include/WebCore/EventHandler.h
new file mode 100644
index 0000000..afb7092
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/EventHandler.h
@@ -0,0 +1 @@
+#include "WebCore/page/EventHandler.h"
diff --git a/src/3rdparty/webkit/include/WebCore/FileChooser.h b/src/3rdparty/webkit/include/WebCore/FileChooser.h
new file mode 100644
index 0000000..e968b5c
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/FileChooser.h
@@ -0,0 +1 @@
+#include "WebCore/platform/FileChooser.h"
diff --git a/src/3rdparty/webkit/include/WebCore/FileSystem.h b/src/3rdparty/webkit/include/WebCore/FileSystem.h
new file mode 100644
index 0000000..27195b9
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/FileSystem.h
@@ -0,0 +1 @@
+#include "WebCore/platform/FileSystem.h"
diff --git a/src/3rdparty/webkit/include/WebCore/FloatPoint.h b/src/3rdparty/webkit/include/WebCore/FloatPoint.h
new file mode 100644
index 0000000..9246f21
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/FloatPoint.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/FloatPoint.h"
diff --git a/src/3rdparty/webkit/include/WebCore/FloatRect.h b/src/3rdparty/webkit/include/WebCore/FloatRect.h
new file mode 100644
index 0000000..b18898f
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/FloatRect.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/FloatRect.h"
diff --git a/src/3rdparty/webkit/include/WebCore/FloatSize.h b/src/3rdparty/webkit/include/WebCore/FloatSize.h
new file mode 100644
index 0000000..0178b44
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/FloatSize.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/FloatSize.h"
diff --git a/src/3rdparty/webkit/include/WebCore/FocusController.h b/src/3rdparty/webkit/include/WebCore/FocusController.h
new file mode 100644
index 0000000..4fb9ab7
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/FocusController.h
@@ -0,0 +1 @@
+#include "WebCore/page/FocusController.h"
diff --git a/src/3rdparty/webkit/include/WebCore/FocusDirection.h b/src/3rdparty/webkit/include/WebCore/FocusDirection.h
new file mode 100644
index 0000000..1c76ae5
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/FocusDirection.h
@@ -0,0 +1 @@
+#include "WebCore/page/FocusDirection.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Font.h b/src/3rdparty/webkit/include/WebCore/Font.h
new file mode 100644
index 0000000..84ae5e6
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Font.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/Font.h"
diff --git a/src/3rdparty/webkit/include/WebCore/FontRenderingMode.h b/src/3rdparty/webkit/include/WebCore/FontRenderingMode.h
new file mode 100644
index 0000000..3f2925c
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/FontRenderingMode.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/FontRenderingMode.h"
diff --git a/src/3rdparty/webkit/include/WebCore/FormState.h b/src/3rdparty/webkit/include/WebCore/FormState.h
new file mode 100644
index 0000000..2be503d
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/FormState.h
@@ -0,0 +1 @@
+#include "WebCore/loader/FormState.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Frame.h b/src/3rdparty/webkit/include/WebCore/Frame.h
new file mode 100644
index 0000000..447a563
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Frame.h
@@ -0,0 +1 @@
+#include "WebCore/page/Frame.h"
diff --git a/src/3rdparty/webkit/include/WebCore/FrameLoadRequest.h b/src/3rdparty/webkit/include/WebCore/FrameLoadRequest.h
new file mode 100644
index 0000000..3744166
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/FrameLoadRequest.h
@@ -0,0 +1 @@
+#include "WebCore/page/FrameLoadRequest.h"
diff --git a/src/3rdparty/webkit/include/WebCore/FrameLoader.h b/src/3rdparty/webkit/include/WebCore/FrameLoader.h
new file mode 100644
index 0000000..d5f7c97
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/FrameLoader.h
@@ -0,0 +1 @@
+#include "WebCore/loader/FrameLoader.h"
diff --git a/src/3rdparty/webkit/include/WebCore/FrameLoaderClient.h b/src/3rdparty/webkit/include/WebCore/FrameLoaderClient.h
new file mode 100644
index 0000000..140b7a1
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/FrameLoaderClient.h
@@ -0,0 +1 @@
+#include "WebCore/loader/FrameLoaderClient.h"
diff --git a/src/3rdparty/webkit/include/WebCore/FrameLoaderTypes.h b/src/3rdparty/webkit/include/WebCore/FrameLoaderTypes.h
new file mode 100644
index 0000000..5b12e86
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/FrameLoaderTypes.h
@@ -0,0 +1 @@
+#include "WebCore/loader/FrameLoaderTypes.h"
diff --git a/src/3rdparty/webkit/include/WebCore/FrameNetworkingContext.h b/src/3rdparty/webkit/include/WebCore/FrameNetworkingContext.h
new file mode 100644
index 0000000..1e37ea8
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/FrameNetworkingContext.h
@@ -0,0 +1 @@
+#include "WebCore/loader/FrameNetworkingContext.h"
diff --git a/src/3rdparty/webkit/include/WebCore/FrameView.h b/src/3rdparty/webkit/include/WebCore/FrameView.h
new file mode 100644
index 0000000..0e85324
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/FrameView.h
@@ -0,0 +1 @@
+#include "WebCore/page/FrameView.h"
diff --git a/src/3rdparty/webkit/include/WebCore/GCController.h b/src/3rdparty/webkit/include/WebCore/GCController.h
new file mode 100644
index 0000000..c528ce0
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/GCController.h
@@ -0,0 +1 @@
+#include "WebCore/bindings/js/GCController.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Geolocation.h b/src/3rdparty/webkit/include/WebCore/Geolocation.h
new file mode 100644
index 0000000..3fe78ca
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Geolocation.h
@@ -0,0 +1 @@
+#include "WebCore/page/Geolocation.h"
diff --git a/src/3rdparty/webkit/include/WebCore/GeolocationClient.h b/src/3rdparty/webkit/include/WebCore/GeolocationClient.h
new file mode 100644
index 0000000..f77eb42
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/GeolocationClient.h
@@ -0,0 +1 @@
+#include "WebCore/page/GeolocationClient.h"
diff --git a/src/3rdparty/webkit/include/WebCore/GeolocationController.h b/src/3rdparty/webkit/include/WebCore/GeolocationController.h
new file mode 100644
index 0000000..e929b83
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/GeolocationController.h
@@ -0,0 +1 @@
+#include "WebCore/page/GeolocationController.h"
diff --git a/src/3rdparty/webkit/include/WebCore/GeolocationError.h b/src/3rdparty/webkit/include/WebCore/GeolocationError.h
new file mode 100644
index 0000000..657e27c
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/GeolocationError.h
@@ -0,0 +1 @@
+#include "WebCore/page/GeolocationError.h"
diff --git a/src/3rdparty/webkit/include/WebCore/GeolocationPosition.h b/src/3rdparty/webkit/include/WebCore/GeolocationPosition.h
new file mode 100644
index 0000000..19f09cc
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/GeolocationPosition.h
@@ -0,0 +1 @@
+#include "WebCore/page/GeolocationPosition.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Gradient.h b/src/3rdparty/webkit/include/WebCore/Gradient.h
new file mode 100644
index 0000000..33ab685
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Gradient.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/Gradient.h"
diff --git a/src/3rdparty/webkit/include/WebCore/GraphicsContext.h b/src/3rdparty/webkit/include/WebCore/GraphicsContext.h
new file mode 100644
index 0000000..e82ec75
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/GraphicsContext.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/GraphicsContext.h"
diff --git a/src/3rdparty/webkit/include/WebCore/GraphicsContextCG.h b/src/3rdparty/webkit/include/WebCore/GraphicsContextCG.h
new file mode 100644
index 0000000..c71753f
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/GraphicsContextCG.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/cg/GraphicsContextCG.h"
diff --git a/src/3rdparty/webkit/include/WebCore/GraphicsLayer.h b/src/3rdparty/webkit/include/WebCore/GraphicsLayer.h
new file mode 100644
index 0000000..3387101
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/GraphicsLayer.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/GraphicsLayer.h"
diff --git a/src/3rdparty/webkit/include/WebCore/GraphicsLayerCA.h b/src/3rdparty/webkit/include/WebCore/GraphicsLayerCA.h
new file mode 100644
index 0000000..314d55c
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/GraphicsLayerCA.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/ca/GraphicsLayerCA.h"
diff --git a/src/3rdparty/webkit/include/WebCore/GraphicsLayerClient.h b/src/3rdparty/webkit/include/WebCore/GraphicsLayerClient.h
new file mode 100644
index 0000000..10e9e60
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/GraphicsLayerClient.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/GraphicsLayerClient.h"
diff --git a/src/3rdparty/webkit/include/WebCore/HTMLAppletElement.h b/src/3rdparty/webkit/include/WebCore/HTMLAppletElement.h
new file mode 100644
index 0000000..c0bacf1
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/HTMLAppletElement.h
@@ -0,0 +1 @@
+#include "WebCore/html/HTMLAppletElement.h"
diff --git a/src/3rdparty/webkit/include/WebCore/HTMLFormElement.h b/src/3rdparty/webkit/include/WebCore/HTMLFormElement.h
new file mode 100644
index 0000000..83db912
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/HTMLFormElement.h
@@ -0,0 +1 @@
+#include "WebCore/html/HTMLFormElement.h"
diff --git a/src/3rdparty/webkit/include/WebCore/HTMLFrameElement.h b/src/3rdparty/webkit/include/WebCore/HTMLFrameElement.h
new file mode 100644
index 0000000..2a59d8c
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/HTMLFrameElement.h
@@ -0,0 +1 @@
+#include "WebCore/html/HTMLFrameElement.h"
diff --git a/src/3rdparty/webkit/include/WebCore/HTMLFrameOwnerElement.h b/src/3rdparty/webkit/include/WebCore/HTMLFrameOwnerElement.h
new file mode 100644
index 0000000..1219a12
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/HTMLFrameOwnerElement.h
@@ -0,0 +1 @@
+#include "WebCore/html/HTMLFrameOwnerElement.h"
diff --git a/src/3rdparty/webkit/include/WebCore/HTMLIFrameElement.h b/src/3rdparty/webkit/include/WebCore/HTMLIFrameElement.h
new file mode 100644
index 0000000..fe96ccf
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/HTMLIFrameElement.h
@@ -0,0 +1 @@
+#include "WebCore/html/HTMLIFrameElement.h"
diff --git a/src/3rdparty/webkit/include/WebCore/HTMLInputElement.h b/src/3rdparty/webkit/include/WebCore/HTMLInputElement.h
new file mode 100644
index 0000000..60100aa
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/HTMLInputElement.h
@@ -0,0 +1 @@
+#include "WebCore/html/HTMLInputElement.h"
diff --git a/src/3rdparty/webkit/include/WebCore/HTMLMediaElement.h b/src/3rdparty/webkit/include/WebCore/HTMLMediaElement.h
new file mode 100644
index 0000000..d332c0a
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/HTMLMediaElement.h
@@ -0,0 +1 @@
+#include "WebCore/html/HTMLMediaElement.h"
diff --git a/src/3rdparty/webkit/include/WebCore/HTMLPlugInElement.h b/src/3rdparty/webkit/include/WebCore/HTMLPlugInElement.h
new file mode 100644
index 0000000..c3eb10f
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/HTMLPlugInElement.h
@@ -0,0 +1 @@
+#include "WebCore/html/HTMLPlugInElement.h"
diff --git a/src/3rdparty/webkit/include/WebCore/HTMLPlugInImageElement.h b/src/3rdparty/webkit/include/WebCore/HTMLPlugInImageElement.h
new file mode 100644
index 0000000..38c638c
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/HTMLPlugInImageElement.h
@@ -0,0 +1 @@
+#include "WebCore/html/HTMLPlugInImageElement.h"
diff --git a/src/3rdparty/webkit/include/WebCore/HTMLTableCellElement.h b/src/3rdparty/webkit/include/WebCore/HTMLTableCellElement.h
new file mode 100644
index 0000000..2e3e09d
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/HTMLTableCellElement.h
@@ -0,0 +1 @@
+#include "WebCore/html/HTMLTableCellElement.h"
diff --git a/src/3rdparty/webkit/include/WebCore/HTMLTextAreaElement.h b/src/3rdparty/webkit/include/WebCore/HTMLTextAreaElement.h
new file mode 100644
index 0000000..6613ae6
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/HTMLTextAreaElement.h
@@ -0,0 +1 @@
+#include "WebCore/html/HTMLTextAreaElement.h"
diff --git a/src/3rdparty/webkit/include/WebCore/HTTPHeaderMap.h b/src/3rdparty/webkit/include/WebCore/HTTPHeaderMap.h
new file mode 100644
index 0000000..a48b2ce
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/HTTPHeaderMap.h
@@ -0,0 +1 @@
+#include "WebCore/platform/network/HTTPHeaderMap.h"
diff --git a/src/3rdparty/webkit/include/WebCore/HistoryItem.h b/src/3rdparty/webkit/include/WebCore/HistoryItem.h
new file mode 100644
index 0000000..284e4b9
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/HistoryItem.h
@@ -0,0 +1 @@
+#include "WebCore/history/HistoryItem.h"
diff --git a/src/3rdparty/webkit/include/WebCore/HitTestRequest.h b/src/3rdparty/webkit/include/WebCore/HitTestRequest.h
new file mode 100644
index 0000000..6f1f0d8
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/HitTestRequest.h
@@ -0,0 +1 @@
+#include "WebCore/rendering/HitTestRequest.h"
diff --git a/src/3rdparty/webkit/include/WebCore/HitTestResult.h b/src/3rdparty/webkit/include/WebCore/HitTestResult.h
new file mode 100644
index 0000000..50e3246
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/HitTestResult.h
@@ -0,0 +1 @@
+#include "WebCore/rendering/HitTestResult.h"
diff --git a/src/3rdparty/webkit/include/WebCore/HostWindow.h b/src/3rdparty/webkit/include/WebCore/HostWindow.h
new file mode 100644
index 0000000..82bd27f
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/HostWindow.h
@@ -0,0 +1 @@
+#include "WebCore/platform/HostWindow.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Icon.h b/src/3rdparty/webkit/include/WebCore/Icon.h
new file mode 100644
index 0000000..3b027fc
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Icon.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/Icon.h"
diff --git a/src/3rdparty/webkit/include/WebCore/IconDatabase.h b/src/3rdparty/webkit/include/WebCore/IconDatabase.h
new file mode 100644
index 0000000..ba2985a
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/IconDatabase.h
@@ -0,0 +1 @@
+#include "WebCore/loader/icon/IconDatabase.h"
diff --git a/src/3rdparty/webkit/include/WebCore/IconDatabaseBase.h b/src/3rdparty/webkit/include/WebCore/IconDatabaseBase.h
new file mode 100644
index 0000000..9cc3e82
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/IconDatabaseBase.h
@@ -0,0 +1 @@
+#include "WebCore/loader/icon/IconDatabaseBase.h"
diff --git a/src/3rdparty/webkit/include/WebCore/IconDatabaseClient.h b/src/3rdparty/webkit/include/WebCore/IconDatabaseClient.h
new file mode 100644
index 0000000..f70b84e
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/IconDatabaseClient.h
@@ -0,0 +1 @@
+#include "WebCore/loader/icon/IconDatabaseClient.h"
diff --git a/src/3rdparty/webkit/include/WebCore/IdentifierRep.h b/src/3rdparty/webkit/include/WebCore/IdentifierRep.h
new file mode 100644
index 0000000..51a75d6
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/IdentifierRep.h
@@ -0,0 +1 @@
+#include "WebCore/bridge/IdentifierRep.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Image.h b/src/3rdparty/webkit/include/WebCore/Image.h
new file mode 100644
index 0000000..9e713f4
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Image.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/Image.h"
diff --git a/src/3rdparty/webkit/include/WebCore/InspectorClient.h b/src/3rdparty/webkit/include/WebCore/InspectorClient.h
new file mode 100644
index 0000000..7cc8863
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/InspectorClient.h
@@ -0,0 +1 @@
+#include "WebCore/inspector/InspectorClient.h"
diff --git a/src/3rdparty/webkit/include/WebCore/InspectorController.h b/src/3rdparty/webkit/include/WebCore/InspectorController.h
new file mode 100644
index 0000000..f3bf6a7
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/InspectorController.h
@@ -0,0 +1 @@
+#include "WebCore/inspector/InspectorController.h"
diff --git a/src/3rdparty/webkit/include/WebCore/InspectorFrontendClientLocal.h b/src/3rdparty/webkit/include/WebCore/InspectorFrontendClientLocal.h
new file mode 100644
index 0000000..de2f131
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/InspectorFrontendClientLocal.h
@@ -0,0 +1 @@
+#include "WebCore/inspector/InspectorFrontendClientLocal.h"
diff --git a/src/3rdparty/webkit/include/WebCore/IntPoint.h b/src/3rdparty/webkit/include/WebCore/IntPoint.h
new file mode 100644
index 0000000..6738be4
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/IntPoint.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/IntPoint.h"
diff --git a/src/3rdparty/webkit/include/WebCore/IntRect.h b/src/3rdparty/webkit/include/WebCore/IntRect.h
new file mode 100644
index 0000000..9ff65c1
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/IntRect.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/IntRect.h"
diff --git a/src/3rdparty/webkit/include/WebCore/IntRectHash.h b/src/3rdparty/webkit/include/WebCore/IntRectHash.h
new file mode 100644
index 0000000..f21fc99
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/IntRectHash.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/IntRectHash.h"
diff --git a/src/3rdparty/webkit/include/WebCore/IntSize.h b/src/3rdparty/webkit/include/WebCore/IntSize.h
new file mode 100644
index 0000000..1ed1253
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/IntSize.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/IntSize.h"
diff --git a/src/3rdparty/webkit/include/WebCore/JSCSSStyleDeclaration.h b/src/3rdparty/webkit/include/WebCore/JSCSSStyleDeclaration.h
new file mode 100644
index 0000000..9b6643c
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/JSCSSStyleDeclaration.h
@@ -0,0 +1 @@
+#include "WebCore/generated/JSCSSStyleDeclaration.h"
diff --git a/src/3rdparty/webkit/include/WebCore/JSPluginElementFunctions.h b/src/3rdparty/webkit/include/WebCore/JSPluginElementFunctions.h
new file mode 100644
index 0000000..be5c4e6
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/JSPluginElementFunctions.h
@@ -0,0 +1 @@
+#include "WebCore/bindings/js/JSPluginElementFunctions.h"
diff --git a/src/3rdparty/webkit/include/WebCore/KURL.h b/src/3rdparty/webkit/include/WebCore/KURL.h
new file mode 100644
index 0000000..66540b2
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/KURL.h
@@ -0,0 +1 @@
+#include "WebCore/platform/KURL.h"
diff --git a/src/3rdparty/webkit/include/WebCore/KeyboardEvent.h b/src/3rdparty/webkit/include/WebCore/KeyboardEvent.h
new file mode 100644
index 0000000..10fe215
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/KeyboardEvent.h
@@ -0,0 +1 @@
+#include "WebCore/dom/KeyboardEvent.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Language.h b/src/3rdparty/webkit/include/WebCore/Language.h
new file mode 100644
index 0000000..fb27338
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Language.h
@@ -0,0 +1 @@
+#include "WebCore/platform/Language.h"
diff --git a/src/3rdparty/webkit/include/WebCore/LinkHash.h b/src/3rdparty/webkit/include/WebCore/LinkHash.h
new file mode 100644
index 0000000..c5c7438
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/LinkHash.h
@@ -0,0 +1 @@
+#include "WebCore/platform/LinkHash.h"
diff --git a/src/3rdparty/webkit/include/WebCore/LocalizedStrings.h b/src/3rdparty/webkit/include/WebCore/LocalizedStrings.h
new file mode 100644
index 0000000..1a0a77a
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/LocalizedStrings.h
@@ -0,0 +1 @@
+#include "WebCore/platform/LocalizedStrings.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Logging.h b/src/3rdparty/webkit/include/WebCore/Logging.h
new file mode 100644
index 0000000..b85d7b8
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Logging.h
@@ -0,0 +1 @@
+#include "WebCore/platform/Logging.h"
diff --git a/src/3rdparty/webkit/include/WebCore/MIMETypeRegistry.h b/src/3rdparty/webkit/include/WebCore/MIMETypeRegistry.h
new file mode 100644
index 0000000..0c39b17
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/MIMETypeRegistry.h
@@ -0,0 +1 @@
+#include "WebCore/platform/MIMETypeRegistry.h"
diff --git a/src/3rdparty/webkit/include/WebCore/MediaCanStartListener.h b/src/3rdparty/webkit/include/WebCore/MediaCanStartListener.h
new file mode 100644
index 0000000..7c78efc
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/MediaCanStartListener.h
@@ -0,0 +1 @@
+#include "WebCore/page/MediaCanStartListener.h"
diff --git a/src/3rdparty/webkit/include/WebCore/MemoryCache.h b/src/3rdparty/webkit/include/WebCore/MemoryCache.h
new file mode 100644
index 0000000..c903f1d
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/MemoryCache.h
@@ -0,0 +1 @@
+#include "WebCore/loader/cache/MemoryCache.h"
diff --git a/src/3rdparty/webkit/include/WebCore/MouseEvent.h b/src/3rdparty/webkit/include/WebCore/MouseEvent.h
new file mode 100644
index 0000000..5f43397
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/MouseEvent.h
@@ -0,0 +1 @@
+#include "WebCore/dom/MouseEvent.h"
diff --git a/src/3rdparty/webkit/include/WebCore/NavigationAction.h b/src/3rdparty/webkit/include/WebCore/NavigationAction.h
new file mode 100644
index 0000000..ca0f93c
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/NavigationAction.h
@@ -0,0 +1 @@
+#include "WebCore/loader/NavigationAction.h"
diff --git a/src/3rdparty/webkit/include/WebCore/NetscapePlugInStreamLoader.h b/src/3rdparty/webkit/include/WebCore/NetscapePlugInStreamLoader.h
new file mode 100644
index 0000000..8047c20
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/NetscapePlugInStreamLoader.h
@@ -0,0 +1 @@
+#include "WebCore/loader/NetscapePlugInStreamLoader.h"
diff --git a/src/3rdparty/webkit/include/WebCore/NetworkingContext.h b/src/3rdparty/webkit/include/WebCore/NetworkingContext.h
new file mode 100644
index 0000000..7a2e974
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/NetworkingContext.h
@@ -0,0 +1 @@
+#include "WebCore/platform/network/NetworkingContext.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Node.h b/src/3rdparty/webkit/include/WebCore/Node.h
new file mode 100644
index 0000000..eca5439
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Node.h
@@ -0,0 +1 @@
+#include "WebCore/dom/Node.h"
diff --git a/src/3rdparty/webkit/include/WebCore/NotImplemented.h b/src/3rdparty/webkit/include/WebCore/NotImplemented.h
new file mode 100644
index 0000000..d9198fc
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/NotImplemented.h
@@ -0,0 +1 @@
+#include "WebCore/platform/NotImplemented.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Page.h b/src/3rdparty/webkit/include/WebCore/Page.h
new file mode 100644
index 0000000..ea3c5b3
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Page.h
@@ -0,0 +1 @@
+#include "WebCore/page/Page.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PageCache.h b/src/3rdparty/webkit/include/WebCore/PageCache.h
new file mode 100644
index 0000000..3210b0e
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PageCache.h
@@ -0,0 +1 @@
+#include "WebCore/history/PageCache.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PageGroup.h b/src/3rdparty/webkit/include/WebCore/PageGroup.h
new file mode 100644
index 0000000..2dd1abd
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PageGroup.h
@@ -0,0 +1 @@
+#include "WebCore/page/PageGroup.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Path.h b/src/3rdparty/webkit/include/WebCore/Path.h
new file mode 100644
index 0000000..add6db3
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Path.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/Path.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PlatformCALayer.h b/src/3rdparty/webkit/include/WebCore/PlatformCALayer.h
new file mode 100644
index 0000000..bfa9258
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PlatformCALayer.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/ca/PlatformCALayer.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PlatformContextCairo.h b/src/3rdparty/webkit/include/WebCore/PlatformContextCairo.h
new file mode 100644
index 0000000..ccd6a92
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PlatformContextCairo.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/cairo/PlatformContextCairo.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PlatformGestureEvent.h b/src/3rdparty/webkit/include/WebCore/PlatformGestureEvent.h
new file mode 100644
index 0000000..377e5cb
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PlatformGestureEvent.h
@@ -0,0 +1 @@
+#include "WebCore/platform/PlatformGestureEvent.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PlatformKeyboardEvent.h b/src/3rdparty/webkit/include/WebCore/PlatformKeyboardEvent.h
new file mode 100644
index 0000000..19d8251
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PlatformKeyboardEvent.h
@@ -0,0 +1 @@
+#include "WebCore/platform/PlatformKeyboardEvent.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PlatformMouseEvent.h b/src/3rdparty/webkit/include/WebCore/PlatformMouseEvent.h
new file mode 100644
index 0000000..9d0abba
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PlatformMouseEvent.h
@@ -0,0 +1 @@
+#include "WebCore/platform/PlatformMouseEvent.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PlatformStrategies.h b/src/3rdparty/webkit/include/WebCore/PlatformStrategies.h
new file mode 100644
index 0000000..641c5d2
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PlatformStrategies.h
@@ -0,0 +1 @@
+#include "WebCore/platform/PlatformStrategies.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PlatformTouchEvent.h b/src/3rdparty/webkit/include/WebCore/PlatformTouchEvent.h
new file mode 100644
index 0000000..7628c0a
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PlatformTouchEvent.h
@@ -0,0 +1 @@
+#include "WebCore/platform/PlatformTouchEvent.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PlatformTouchPoint.h b/src/3rdparty/webkit/include/WebCore/PlatformTouchPoint.h
new file mode 100644
index 0000000..ef0c316
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PlatformTouchPoint.h
@@ -0,0 +1 @@
+#include "WebCore/platform/PlatformTouchPoint.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PlatformWheelEvent.h b/src/3rdparty/webkit/include/WebCore/PlatformWheelEvent.h
new file mode 100644
index 0000000..23a8af9
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PlatformWheelEvent.h
@@ -0,0 +1 @@
+#include "WebCore/platform/PlatformWheelEvent.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PluginData.h b/src/3rdparty/webkit/include/WebCore/PluginData.h
new file mode 100644
index 0000000..26ad15a
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PluginData.h
@@ -0,0 +1 @@
+#include "WebCore/plugins/PluginData.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PluginStrategy.h b/src/3rdparty/webkit/include/WebCore/PluginStrategy.h
new file mode 100644
index 0000000..4c84db0
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PluginStrategy.h
@@ -0,0 +1 @@
+#include "WebCore/plugins/PluginStrategy.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PluginViewBase.h b/src/3rdparty/webkit/include/WebCore/PluginViewBase.h
new file mode 100644
index 0000000..c5d0535
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PluginViewBase.h
@@ -0,0 +1 @@
+#include "WebCore/plugins/PluginViewBase.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PolicyChecker.h b/src/3rdparty/webkit/include/WebCore/PolicyChecker.h
new file mode 100644
index 0000000..98c0626
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PolicyChecker.h
@@ -0,0 +1 @@
+#include "WebCore/loader/PolicyChecker.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PopupMenu.h b/src/3rdparty/webkit/include/WebCore/PopupMenu.h
new file mode 100644
index 0000000..e4764a8
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PopupMenu.h
@@ -0,0 +1 @@
+#include "WebCore/platform/PopupMenu.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PopupMenuClient.h b/src/3rdparty/webkit/include/WebCore/PopupMenuClient.h
new file mode 100644
index 0000000..dba5017
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PopupMenuClient.h
@@ -0,0 +1 @@
+#include "WebCore/platform/PopupMenuClient.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PopupMenuStyle.h b/src/3rdparty/webkit/include/WebCore/PopupMenuStyle.h
new file mode 100644
index 0000000..e51de9b
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PopupMenuStyle.h
@@ -0,0 +1 @@
+#include "WebCore/platform/PopupMenuStyle.h"
diff --git a/src/3rdparty/webkit/include/WebCore/PrintContext.h b/src/3rdparty/webkit/include/WebCore/PrintContext.h
new file mode 100644
index 0000000..f234cb6
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/PrintContext.h
@@ -0,0 +1 @@
+#include "WebCore/page/PrintContext.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ProgressTracker.h b/src/3rdparty/webkit/include/WebCore/ProgressTracker.h
new file mode 100644
index 0000000..3fff316
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ProgressTracker.h
@@ -0,0 +1 @@
+#include "WebCore/loader/ProgressTracker.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ProtectionSpace.h b/src/3rdparty/webkit/include/WebCore/ProtectionSpace.h
new file mode 100644
index 0000000..be6afe5
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ProtectionSpace.h
@@ -0,0 +1 @@
+#include "WebCore/platform/network/ProtectionSpace.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ProxyServer.h b/src/3rdparty/webkit/include/WebCore/ProxyServer.h
new file mode 100644
index 0000000..a933b78
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ProxyServer.h
@@ -0,0 +1 @@
+#include "WebCore/platform/network/ProxyServer.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Range.h b/src/3rdparty/webkit/include/WebCore/Range.h
new file mode 100644
index 0000000..21ebad8
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Range.h
@@ -0,0 +1 @@
+#include "WebCore/dom/Range.h"
diff --git a/src/3rdparty/webkit/include/WebCore/RenderEmbeddedObject.h b/src/3rdparty/webkit/include/WebCore/RenderEmbeddedObject.h
new file mode 100644
index 0000000..31be6c9
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/RenderEmbeddedObject.h
@@ -0,0 +1 @@
+#include "WebCore/rendering/RenderEmbeddedObject.h"
diff --git a/src/3rdparty/webkit/include/WebCore/RenderLayer.h b/src/3rdparty/webkit/include/WebCore/RenderLayer.h
new file mode 100644
index 0000000..aefe178
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/RenderLayer.h
@@ -0,0 +1 @@
+#include "WebCore/rendering/RenderLayer.h"
diff --git a/src/3rdparty/webkit/include/WebCore/RenderTheme.h b/src/3rdparty/webkit/include/WebCore/RenderTheme.h
new file mode 100644
index 0000000..324d109
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/RenderTheme.h
@@ -0,0 +1 @@
+#include "WebCore/rendering/RenderTheme.h"
diff --git a/src/3rdparty/webkit/include/WebCore/RenderTreeAsText.h b/src/3rdparty/webkit/include/WebCore/RenderTreeAsText.h
new file mode 100644
index 0000000..7ae5171
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/RenderTreeAsText.h
@@ -0,0 +1 @@
+#include "WebCore/rendering/RenderTreeAsText.h"
diff --git a/src/3rdparty/webkit/include/WebCore/RenderView.h b/src/3rdparty/webkit/include/WebCore/RenderView.h
new file mode 100644
index 0000000..3402a57
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/RenderView.h
@@ -0,0 +1 @@
+#include "WebCore/rendering/RenderView.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ReplaceSelectionCommand.h b/src/3rdparty/webkit/include/WebCore/ReplaceSelectionCommand.h
new file mode 100644
index 0000000..e320498
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ReplaceSelectionCommand.h
@@ -0,0 +1 @@
+#include "WebCore/editing/ReplaceSelectionCommand.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ResourceHandle.h b/src/3rdparty/webkit/include/WebCore/ResourceHandle.h
new file mode 100644
index 0000000..42a0e20
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ResourceHandle.h
@@ -0,0 +1 @@
+#include "WebCore/platform/network/ResourceHandle.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ResourceLoadScheduler.h b/src/3rdparty/webkit/include/WebCore/ResourceLoadScheduler.h
new file mode 100644
index 0000000..5cf5d4b
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ResourceLoadScheduler.h
@@ -0,0 +1 @@
+#include "WebCore/loader/ResourceLoadScheduler.h"
diff --git a/src/3rdparty/webkit/include/WebCore/RuntimeEnabledFeatures.h b/src/3rdparty/webkit/include/WebCore/RuntimeEnabledFeatures.h
new file mode 100644
index 0000000..a8e879b
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/RuntimeEnabledFeatures.h
@@ -0,0 +1 @@
+#include "WebCore/bindings/generic/RuntimeEnabledFeatures.h"
diff --git a/src/3rdparty/webkit/include/WebCore/SchemeRegistry.h b/src/3rdparty/webkit/include/WebCore/SchemeRegistry.h
new file mode 100644
index 0000000..6c89b6a
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/SchemeRegistry.h
@@ -0,0 +1 @@
+#include "WebCore/platform/SchemeRegistry.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ScriptController.h b/src/3rdparty/webkit/include/WebCore/ScriptController.h
new file mode 100644
index 0000000..5bd55f4
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ScriptController.h
@@ -0,0 +1 @@
+#include "WebCore/bindings/js/ScriptController.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ScriptValue.h b/src/3rdparty/webkit/include/WebCore/ScriptValue.h
new file mode 100644
index 0000000..4afbad7
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ScriptValue.h
@@ -0,0 +1 @@
+#include "WebCore/bindings/js/ScriptValue.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ScrollTypes.h b/src/3rdparty/webkit/include/WebCore/ScrollTypes.h
new file mode 100644
index 0000000..c35b2f3
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ScrollTypes.h
@@ -0,0 +1 @@
+#include "WebCore/platform/ScrollTypes.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ScrollView.h b/src/3rdparty/webkit/include/WebCore/ScrollView.h
new file mode 100644
index 0000000..6b4f7f6
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ScrollView.h
@@ -0,0 +1 @@
+#include "WebCore/platform/ScrollView.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ScrollableArea.h b/src/3rdparty/webkit/include/WebCore/ScrollableArea.h
new file mode 100644
index 0000000..11afb5f
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ScrollableArea.h
@@ -0,0 +1 @@
+#include "WebCore/platform/ScrollableArea.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Scrollbar.h b/src/3rdparty/webkit/include/WebCore/Scrollbar.h
new file mode 100644
index 0000000..9fe1514
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Scrollbar.h
@@ -0,0 +1 @@
+#include "WebCore/platform/Scrollbar.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ScrollbarTheme.h b/src/3rdparty/webkit/include/WebCore/ScrollbarTheme.h
new file mode 100644
index 0000000..fc4e762
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ScrollbarTheme.h
@@ -0,0 +1 @@
+#include "WebCore/platform/ScrollbarTheme.h"
diff --git a/src/3rdparty/webkit/include/WebCore/SearchPopupMenu.h b/src/3rdparty/webkit/include/WebCore/SearchPopupMenu.h
new file mode 100644
index 0000000..637ad39
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/SearchPopupMenu.h
@@ -0,0 +1 @@
+#include "WebCore/platform/SearchPopupMenu.h"
diff --git a/src/3rdparty/webkit/include/WebCore/SecurityOrigin.h b/src/3rdparty/webkit/include/WebCore/SecurityOrigin.h
new file mode 100644
index 0000000..5b00657
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/SecurityOrigin.h
@@ -0,0 +1 @@
+#include "WebCore/page/SecurityOrigin.h"
diff --git a/src/3rdparty/webkit/include/WebCore/SecurityOriginHash.h b/src/3rdparty/webkit/include/WebCore/SecurityOriginHash.h
new file mode 100644
index 0000000..dac6640
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/SecurityOriginHash.h
@@ -0,0 +1 @@
+#include "WebCore/page/SecurityOriginHash.h"
diff --git a/src/3rdparty/webkit/include/WebCore/SerializedScriptValue.h b/src/3rdparty/webkit/include/WebCore/SerializedScriptValue.h
new file mode 100644
index 0000000..2186c56
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/SerializedScriptValue.h
@@ -0,0 +1 @@
+#include "WebCore/bindings/js/SerializedScriptValue.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Settings.h b/src/3rdparty/webkit/include/WebCore/Settings.h
new file mode 100644
index 0000000..3a29adc
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Settings.h
@@ -0,0 +1 @@
+#include "WebCore/page/Settings.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ShadowRoot.h b/src/3rdparty/webkit/include/WebCore/ShadowRoot.h
new file mode 100644
index 0000000..1a832bb
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ShadowRoot.h
@@ -0,0 +1 @@
+#include "WebCore/dom/ShadowRoot.h"
diff --git a/src/3rdparty/webkit/include/WebCore/SharedBuffer.h b/src/3rdparty/webkit/include/WebCore/SharedBuffer.h
new file mode 100644
index 0000000..95eedd0
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/SharedBuffer.h
@@ -0,0 +1 @@
+#include "WebCore/platform/SharedBuffer.h"
diff --git a/src/3rdparty/webkit/include/WebCore/SimpleFontData.h b/src/3rdparty/webkit/include/WebCore/SimpleFontData.h
new file mode 100644
index 0000000..3d90d29
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/SimpleFontData.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/SimpleFontData.h"
diff --git a/src/3rdparty/webkit/include/WebCore/SoftLinking.h b/src/3rdparty/webkit/include/WebCore/SoftLinking.h
new file mode 100644
index 0000000..3ceb0c0
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/SoftLinking.h
@@ -0,0 +1 @@
+#include "WebCore/platform/mac/SoftLinking.h"
diff --git a/src/3rdparty/webkit/include/WebCore/SpellingCorrectionController.h b/src/3rdparty/webkit/include/WebCore/SpellingCorrectionController.h
new file mode 100644
index 0000000..d7c0571
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/SpellingCorrectionController.h
@@ -0,0 +1 @@
+#include "WebCore/editing/SpellingCorrectionController.h"
diff --git a/src/3rdparty/webkit/include/WebCore/StorageTracker.h b/src/3rdparty/webkit/include/WebCore/StorageTracker.h
new file mode 100644
index 0000000..55d240a
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/StorageTracker.h
@@ -0,0 +1 @@
+#include "WebCore/storage/StorageTracker.h"
diff --git a/src/3rdparty/webkit/include/WebCore/SubstituteData.h b/src/3rdparty/webkit/include/WebCore/SubstituteData.h
new file mode 100644
index 0000000..47db253
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/SubstituteData.h
@@ -0,0 +1 @@
+#include "WebCore/loader/SubstituteData.h"
diff --git a/src/3rdparty/webkit/include/WebCore/TextAffinity.h b/src/3rdparty/webkit/include/WebCore/TextAffinity.h
new file mode 100644
index 0000000..e97160c
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/TextAffinity.h
@@ -0,0 +1 @@
+#include "WebCore/editing/TextAffinity.h"
diff --git a/src/3rdparty/webkit/include/WebCore/TextCheckerClient.h b/src/3rdparty/webkit/include/WebCore/TextCheckerClient.h
new file mode 100644
index 0000000..860e675
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/TextCheckerClient.h
@@ -0,0 +1 @@
+#include "WebCore/platform/text/TextCheckerClient.h"
diff --git a/src/3rdparty/webkit/include/WebCore/TextDirection.h b/src/3rdparty/webkit/include/WebCore/TextDirection.h
new file mode 100644
index 0000000..de842d6
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/TextDirection.h
@@ -0,0 +1 @@
+#include "WebCore/platform/text/TextDirection.h"
diff --git a/src/3rdparty/webkit/include/WebCore/TextIterator.h b/src/3rdparty/webkit/include/WebCore/TextIterator.h
new file mode 100644
index 0000000..193bbd8
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/TextIterator.h
@@ -0,0 +1 @@
+#include "WebCore/editing/TextIterator.h"
diff --git a/src/3rdparty/webkit/include/WebCore/TextResourceDecoder.h b/src/3rdparty/webkit/include/WebCore/TextResourceDecoder.h
new file mode 100644
index 0000000..75eae5c
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/TextResourceDecoder.h
@@ -0,0 +1 @@
+#include "WebCore/loader/TextResourceDecoder.h"
diff --git a/src/3rdparty/webkit/include/WebCore/TextRun.h b/src/3rdparty/webkit/include/WebCore/TextRun.h
new file mode 100644
index 0000000..8e2a041
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/TextRun.h
@@ -0,0 +1 @@
+#include "WebCore/platform/graphics/TextRun.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Timer.h b/src/3rdparty/webkit/include/WebCore/Timer.h
new file mode 100644
index 0000000..62727b1
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Timer.h
@@ -0,0 +1 @@
+#include "WebCore/platform/Timer.h"
diff --git a/src/3rdparty/webkit/include/WebCore/UIEventWithKeyState.h b/src/3rdparty/webkit/include/WebCore/UIEventWithKeyState.h
new file mode 100644
index 0000000..c0ac9aa
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/UIEventWithKeyState.h
@@ -0,0 +1 @@
+#include "WebCore/dom/UIEventWithKeyState.h"
diff --git a/src/3rdparty/webkit/include/WebCore/UserContentTypes.h b/src/3rdparty/webkit/include/WebCore/UserContentTypes.h
new file mode 100644
index 0000000..cf75a72
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/UserContentTypes.h
@@ -0,0 +1 @@
+#include "WebCore/page/UserContentTypes.h"
diff --git a/src/3rdparty/webkit/include/WebCore/UserContentURLPattern.h b/src/3rdparty/webkit/include/WebCore/UserContentURLPattern.h
new file mode 100644
index 0000000..877c9cb
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/UserContentURLPattern.h
@@ -0,0 +1 @@
+#include "WebCore/page/UserContentURLPattern.h"
diff --git a/src/3rdparty/webkit/include/WebCore/UserGestureIndicator.h b/src/3rdparty/webkit/include/WebCore/UserGestureIndicator.h
new file mode 100644
index 0000000..384902e
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/UserGestureIndicator.h
@@ -0,0 +1 @@
+#include "WebCore/dom/UserGestureIndicator.h"
diff --git a/src/3rdparty/webkit/include/WebCore/UserScriptTypes.h b/src/3rdparty/webkit/include/WebCore/UserScriptTypes.h
new file mode 100644
index 0000000..bdd9ec8
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/UserScriptTypes.h
@@ -0,0 +1 @@
+#include "WebCore/page/UserScriptTypes.h"
diff --git a/src/3rdparty/webkit/include/WebCore/UserTypingGestureIndicator.h b/src/3rdparty/webkit/include/WebCore/UserTypingGestureIndicator.h
new file mode 100644
index 0000000..b7a34a4
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/UserTypingGestureIndicator.h
@@ -0,0 +1 @@
+#include "WebCore/dom/UserTypingGestureIndicator.h"
diff --git a/src/3rdparty/webkit/include/WebCore/ViewportArguments.h b/src/3rdparty/webkit/include/WebCore/ViewportArguments.h
new file mode 100644
index 0000000..dd0911d
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/ViewportArguments.h
@@ -0,0 +1 @@
+#include "WebCore/dom/ViewportArguments.h"
diff --git a/src/3rdparty/webkit/include/WebCore/VisiblePosition.h b/src/3rdparty/webkit/include/WebCore/VisiblePosition.h
new file mode 100644
index 0000000..5575815
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/VisiblePosition.h
@@ -0,0 +1 @@
+#include "WebCore/editing/VisiblePosition.h"
diff --git a/src/3rdparty/webkit/include/WebCore/VisitedLinkStrategy.h b/src/3rdparty/webkit/include/WebCore/VisitedLinkStrategy.h
new file mode 100644
index 0000000..f5b8a57
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/VisitedLinkStrategy.h
@@ -0,0 +1 @@
+#include "WebCore/platform/VisitedLinkStrategy.h"
diff --git a/src/3rdparty/webkit/include/WebCore/WebCoreKeyboardUIMode.h b/src/3rdparty/webkit/include/WebCore/WebCoreKeyboardUIMode.h
new file mode 100644
index 0000000..8b748d3
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/WebCoreKeyboardUIMode.h
@@ -0,0 +1 @@
+#include "WebCore/page/WebCoreKeyboardUIMode.h"
diff --git a/src/3rdparty/webkit/include/WebCore/Widget.h b/src/3rdparty/webkit/include/WebCore/Widget.h
new file mode 100644
index 0000000..d4e2687
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/Widget.h
@@ -0,0 +1 @@
+#include "WebCore/platform/Widget.h"
diff --git a/src/3rdparty/webkit/include/WebCore/WindowFeatures.h b/src/3rdparty/webkit/include/WebCore/WindowFeatures.h
new file mode 100644
index 0000000..bb349fd
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/WindowFeatures.h
@@ -0,0 +1 @@
+#include "WebCore/page/WindowFeatures.h"
diff --git a/src/3rdparty/webkit/include/WebCore/markup.h b/src/3rdparty/webkit/include/WebCore/markup.h
new file mode 100644
index 0000000..05cdeea
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/markup.h
@@ -0,0 +1 @@
+#include "WebCore/editing/markup.h"
diff --git a/src/3rdparty/webkit/include/WebCore/npapi.h b/src/3rdparty/webkit/include/WebCore/npapi.h
new file mode 100644
index 0000000..ec1c3b0
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/npapi.h
@@ -0,0 +1 @@
+#include "WebCore/bridge/npapi.h"
diff --git a/src/3rdparty/webkit/include/WebCore/npfunctions.h b/src/3rdparty/webkit/include/WebCore/npfunctions.h
new file mode 100644
index 0000000..151ef69
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/npfunctions.h
@@ -0,0 +1 @@
+#include "WebCore/plugins/npfunctions.h"
diff --git a/src/3rdparty/webkit/include/WebCore/npruntime.h b/src/3rdparty/webkit/include/WebCore/npruntime.h
new file mode 100644
index 0000000..271e548
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/npruntime.h
@@ -0,0 +1 @@
+#include "WebCore/bridge/npruntime.h"
diff --git a/src/3rdparty/webkit/include/WebCore/npruntime_internal.h b/src/3rdparty/webkit/include/WebCore/npruntime_internal.h
new file mode 100644
index 0000000..255abc3
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebCore/npruntime_internal.h
@@ -0,0 +1 @@
+#include "WebCore/bridge/npruntime_internal.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/RunLoop.h b/src/3rdparty/webkit/include/WebKit2/RunLoop.h
new file mode 100644
index 0000000..d6f6d5f
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/RunLoop.h
@@ -0,0 +1 @@
+#include "WebKit2/Platform/RunLoop.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKArray.h b/src/3rdparty/webkit/include/WebKit2/WKArray.h
new file mode 100644
index 0000000..b3841b0
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKArray.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKArray.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKBackForwardList.h b/src/3rdparty/webkit/include/WebKit2/WKBackForwardList.h
new file mode 100644
index 0000000..26f2e74
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKBackForwardList.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKBackForwardList.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKBackForwardListItem.h b/src/3rdparty/webkit/include/WebKit2/WKBackForwardListItem.h
new file mode 100644
index 0000000..e609686
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKBackForwardListItem.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKBackForwardListItem.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKBase.h b/src/3rdparty/webkit/include/WebKit2/WKBase.h
new file mode 100644
index 0000000..c859bf9
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKBase.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKBase.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKContext.h b/src/3rdparty/webkit/include/WebKit2/WKContext.h
new file mode 100644
index 0000000..c884b67
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKContext.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKContext.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKContextMenuItemTypes.h b/src/3rdparty/webkit/include/WebKit2/WKContextMenuItemTypes.h
new file mode 100644
index 0000000..62e0aa9
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKContextMenuItemTypes.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKContextMenuItemTypes.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKCookieManager.h b/src/3rdparty/webkit/include/WebKit2/WKCookieManager.h
new file mode 100644
index 0000000..3ff208f
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKCookieManager.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKCookieManager.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKCredentialTypes.h b/src/3rdparty/webkit/include/WebKit2/WKCredentialTypes.h
new file mode 100644
index 0000000..6221bc7
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKCredentialTypes.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKCredentialTypes.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKData.h b/src/3rdparty/webkit/include/WebKit2/WKData.h
new file mode 100644
index 0000000..794eedf
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKData.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKData.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKDictionary.h b/src/3rdparty/webkit/include/WebKit2/WKDictionary.h
new file mode 100644
index 0000000..570f234
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKDictionary.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKDictionary.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKError.h b/src/3rdparty/webkit/include/WebKit2/WKError.h
new file mode 100644
index 0000000..4cf78d6
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKError.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKError.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKEvent.h b/src/3rdparty/webkit/include/WebKit2/WKEvent.h
new file mode 100644
index 0000000..e58bc1c
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKEvent.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKEvent.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKFindOptions.h b/src/3rdparty/webkit/include/WebKit2/WKFindOptions.h
new file mode 100644
index 0000000..1e4ef92
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKFindOptions.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKFindOptions.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKFormSubmissionListener.h b/src/3rdparty/webkit/include/WebKit2/WKFormSubmissionListener.h
new file mode 100644
index 0000000..b4cceb7
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKFormSubmissionListener.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKFormSubmissionListener.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKFrame.h b/src/3rdparty/webkit/include/WebKit2/WKFrame.h
new file mode 100644
index 0000000..3ac6529
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKFrame.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKFrame.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKFramePolicyListener.h b/src/3rdparty/webkit/include/WebKit2/WKFramePolicyListener.h
new file mode 100644
index 0000000..7916c38
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKFramePolicyListener.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKFramePolicyListener.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKGeolocationManager.h b/src/3rdparty/webkit/include/WebKit2/WKGeolocationManager.h
new file mode 100644
index 0000000..3e503e6
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKGeolocationManager.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKGeolocationManager.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKGeolocationPermissionRequest.h b/src/3rdparty/webkit/include/WebKit2/WKGeolocationPermissionRequest.h
new file mode 100644
index 0000000..5205a0e
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKGeolocationPermissionRequest.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKGeolocationPermissionRequest.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKGeolocationPosition.h b/src/3rdparty/webkit/include/WebKit2/WKGeolocationPosition.h
new file mode 100644
index 0000000..cff7f23
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKGeolocationPosition.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKGeolocationPosition.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKGeometry.h b/src/3rdparty/webkit/include/WebKit2/WKGeometry.h
new file mode 100644
index 0000000..b84460c
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKGeometry.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKGeometry.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKGraphicsContext.h b/src/3rdparty/webkit/include/WebKit2/WKGraphicsContext.h
new file mode 100644
index 0000000..fbccdc9
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKGraphicsContext.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKGraphicsContext.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKImage.h b/src/3rdparty/webkit/include/WebKit2/WKImage.h
new file mode 100644
index 0000000..a02314d
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKImage.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKImage.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKMutableArray.h b/src/3rdparty/webkit/include/WebKit2/WKMutableArray.h
new file mode 100644
index 0000000..a47af3b
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKMutableArray.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKMutableArray.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKMutableDictionary.h b/src/3rdparty/webkit/include/WebKit2/WKMutableDictionary.h
new file mode 100644
index 0000000..0c345f5
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKMutableDictionary.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKMutableDictionary.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKNativeEvent.h b/src/3rdparty/webkit/include/WebKit2/WKNativeEvent.h
new file mode 100644
index 0000000..deeb2a5
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKNativeEvent.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKNativeEvent.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKNavigationData.h b/src/3rdparty/webkit/include/WebKit2/WKNavigationData.h
new file mode 100644
index 0000000..9607b97
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKNavigationData.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKNavigationData.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKNumber.h b/src/3rdparty/webkit/include/WebKit2/WKNumber.h
new file mode 100644
index 0000000..7924588
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKNumber.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKNumber.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKOpenPanelParameters.h b/src/3rdparty/webkit/include/WebKit2/WKOpenPanelParameters.h
new file mode 100644
index 0000000..b0c4134
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKOpenPanelParameters.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKOpenPanelParameters.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKOpenPanelResultListener.h b/src/3rdparty/webkit/include/WebKit2/WKOpenPanelResultListener.h
new file mode 100644
index 0000000..a3b015d
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKOpenPanelResultListener.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKOpenPanelResultListener.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKPage.h b/src/3rdparty/webkit/include/WebKit2/WKPage.h
new file mode 100644
index 0000000..75d785c
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKPage.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKPage.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKPageGroup.h b/src/3rdparty/webkit/include/WebKit2/WKPageGroup.h
new file mode 100644
index 0000000..eefeb25
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKPageGroup.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKPageGroup.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKPageLoadTypes.h b/src/3rdparty/webkit/include/WebKit2/WKPageLoadTypes.h
new file mode 100644
index 0000000..cd39b9d
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKPageLoadTypes.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKPageLoadTypes.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKPreferences.h b/src/3rdparty/webkit/include/WebKit2/WKPreferences.h
new file mode 100644
index 0000000..5777a3a
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKPreferences.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKPreferences.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKProtectionSpaceTypes.h b/src/3rdparty/webkit/include/WebKit2/WKProtectionSpaceTypes.h
new file mode 100644
index 0000000..025ce94
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKProtectionSpaceTypes.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/C/WKProtectionSpaceTypes.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKRetainPtr.h b/src/3rdparty/webkit/include/WebKit2/WKRetainPtr.h
new file mode 100644
index 0000000..5e58f97
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKRetainPtr.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/cpp/WKRetainPtr.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKString.h b/src/3rdparty/webkit/include/WebKit2/WKString.h
new file mode 100644
index 0000000..381b3c6
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKString.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKString.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKType.h b/src/3rdparty/webkit/include/WebKit2/WKType.h
new file mode 100644
index 0000000..addabdd
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKType.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKType.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKURL.h b/src/3rdparty/webkit/include/WebKit2/WKURL.h
new file mode 100644
index 0000000..d7f765b
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKURL.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKURL.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKURLRequest.h b/src/3rdparty/webkit/include/WebKit2/WKURLRequest.h
new file mode 100644
index 0000000..21d3b70
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKURLRequest.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKURLRequest.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKURLResponse.h b/src/3rdparty/webkit/include/WebKit2/WKURLResponse.h
new file mode 100644
index 0000000..f62c0f5
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKURLResponse.h
@@ -0,0 +1 @@
+#include "WebKit2/Shared/API/c/WKURLResponse.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WKView.h b/src/3rdparty/webkit/include/WebKit2/WKView.h
new file mode 100644
index 0000000..4247dc6
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WKView.h
@@ -0,0 +1 @@
+#include "WebKit2/UIProcess/API/mac/WKView.h"
diff --git a/src/3rdparty/webkit/include/WebKit2/WebProcess.h b/src/3rdparty/webkit/include/WebKit2/WebProcess.h
new file mode 100644
index 0000000..9b8eb4a
--- /dev/null
+++ b/src/3rdparty/webkit/include/WebKit2/WebProcess.h
@@ -0,0 +1 @@
+#include "WebKit2/WebProcess/WebProcess.h"
diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc
index dc92866..4974aef 100644
--- a/src/corelib/global/qnamespace.qdoc
+++ b/src/corelib/global/qnamespace.qdoc
@@ -539,7 +539,7 @@
string, "ddd MMM d yyyy". See QDate::toString() for more information.
\value ISODate \l{ISO 8601} extended format: either \c{YYYY-MM-DD} for dates or
- \c{YYYY-MM-DDTHH:MM:SS}, \c{YYYY-MM-DDTHH:MM:SSTZD} (e.g., 1997-07-16T19:20:30+01:00)
+ \c{YYYY-MM-DDTHH:mm:ss}, \c{YYYY-MM-DDTHH:mm:ssTZD} (e.g., 1997-07-16T19:20:30+01:00)
for combined dates and times.
\value SystemLocaleShortDate The \l{QLocale::ShortFormat}{short format} used
diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp
index f9196e0..c0c62e1 100644
--- a/src/corelib/io/qdir.cpp
+++ b/src/corelib/io/qdir.cpp
@@ -1633,9 +1633,13 @@ bool QDir::operator==(const QDir &dir) const
if (d->filters == other->filters
&& d->sort == other->sort
&& d->nameFilters == other->nameFilters) {
- d->resolveAbsoluteEntry();
- other->resolveAbsoluteEntry();
- return d->absoluteDirEntry.filePath().compare(other->absoluteDirEntry.filePath(), sensitive) == 0;
+
+ // Assume directories are the same if path is the same
+ if (d->dirEntry.filePath() == other->dirEntry.filePath())
+ return true;
+
+ // Fallback to expensive canonical path computation
+ return canonicalPath().compare(dir.canonicalPath(), sensitive) == 0;
}
return false;
}
diff --git a/src/corelib/io/qfileinfo.cpp b/src/corelib/io/qfileinfo.cpp
index ca42c87..ff328da 100644
--- a/src/corelib/io/qfileinfo.cpp
+++ b/src/corelib/io/qfileinfo.cpp
@@ -391,6 +391,11 @@ bool QFileInfo::operator==(const QFileInfo &fileinfo) const
return true;
if (d->isDefaultConstructed || fileinfo.d_ptr->isDefaultConstructed)
return false;
+
+ // Assume files are the same if path is the same
+ if (d->fileEntry.filePath() == fileinfo.d_ptr->fileEntry.filePath())
+ return true;
+
Qt::CaseSensitivity sensitive;
if (d->fileEngine == 0 || fileinfo.d_ptr->fileEngine == 0) {
if (d->fileEngine != fileinfo.d_ptr->fileEngine) // one is native, the other is a custom file-engine
@@ -406,6 +411,7 @@ bool QFileInfo::operator==(const QFileInfo &fileinfo) const
if (fileinfo.size() != size()) //if the size isn't the same...
return false;
+ // Fallback to expensive canonical path computation
return canonicalFilePath().compare(fileinfo.canonicalFilePath(), sensitive) == 0;
}
diff --git a/src/corelib/io/qfilesystemengine_win.cpp b/src/corelib/io/qfilesystemengine_win.cpp
index f704fc3..764ee6d 100644
--- a/src/corelib/io/qfilesystemengine_win.cpp
+++ b/src/corelib/io/qfilesystemengine_win.cpp
@@ -536,7 +536,7 @@ QFileSystemEntry QFileSystemEngine::absoluteName(const QFileSystemEntry &entry)
// Force uppercase drive letters.
ret[0] = ret.at(0).toUpper();
}
- return QFileSystemEntry(ret);
+ return QFileSystemEntry(ret, QFileSystemEntry::FromInternalPath());
}
//static
@@ -1052,11 +1052,12 @@ QString QFileSystemEngine::tempPath()
}
if (ret.isEmpty()) {
#if !defined(Q_OS_WINCE)
- ret = QLatin1String("c:/tmp");
+ ret = QLatin1String("C:/tmp");
#else
ret = QLatin1String("/Temp");
#endif
- }
+ } else if (ret.length() >= 2 && ret[1] == QLatin1Char(':'))
+ ret[0] = ret.at(0).toUpper(); // Force uppercase drive letters.
return ret;
}
diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp
index ea00cb4..dae4e82 100644
--- a/src/corelib/io/qiodevice.cpp
+++ b/src/corelib/io/qiodevice.cpp
@@ -423,6 +423,8 @@ QIODevice::~QIODevice()
seeking backwards and forwards in the data stream. Regular files
are non-sequential.
+ The QIODevice implementation returns false.
+
\sa bytesAvailable()
*/
bool QIODevice::isSequential() const
diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp
index d457601..e80a8b6 100644
--- a/src/corelib/io/qtemporaryfile.cpp
+++ b/src/corelib/io/qtemporaryfile.cpp
@@ -44,17 +44,18 @@
#ifndef QT_NO_TEMPORARYFILE
#include "qplatformdefs.h"
-#include "qabstractfileengine.h"
#include "private/qfile_p.h"
-#include "private/qabstractfileengine_p.h"
#include "private/qfsfileengine_p.h"
+#include "private/qsystemerror_p.h"
+#include "private/qfilesystemengine_p.h"
-#if !defined(Q_OS_WINCE)
-# include <errno.h>
+#if defined(Q_OS_SYMBIAN)
+#include "private/qcore_symbian_p.h"
#endif
-#if defined(Q_OS_UNIX)
-# include "private/qcore_unix_p.h" // overrides QT_OPEN
+#if !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
+#include "private/qcore_unix_p.h" // overrides QT_OPEN
+#include <errno.h>
#endif
#if defined(QT_BUILD_CORE_LIB)
@@ -63,6 +64,30 @@
QT_BEGIN_NAMESPACE
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+typedef ushort Char;
+
+static inline Char Latin1Char(char ch)
+{
+ return ushort(uchar(ch));
+}
+
+# ifdef Q_OS_WIN
+typedef HANDLE NativeFileHandle;
+# else // Q_OS_SYMBIAN
+# ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+typedef RFile64 NativeFileHandle;
+# else
+typedef RFile NativeFileHandle;
+# endif
+# endif
+
+#else // POSIX
+typedef char Char;
+typedef char Latin1Char;
+typedef int NativeFileHandle;
+#endif
+
/*
* Copyright (c) 1987, 1993
* The Regents of the University of California. All rights reserved.
@@ -96,27 +121,33 @@ QT_BEGIN_NAMESPACE
\internal
Generates a unique file path and returns a native handle to the open file.
- \a path is used as a template when generating unique paths,
- \a placeholderStart and \a placeholderEnd delimit the sub-string that will
- be randomized.
+ \a path is used as a template when generating unique paths, \a pos
+ identifies the position of the first character that will be replaced in the
+ template and \a length the number of characters that may be substituted.
Returns an open handle to the newly created file if successful, an invalid
handle otherwise. In both cases, the string in \a path will be changed and
contain the generated path name.
*/
-static int createFileFromTemplate(char *const path,
- char *const placeholderStart, char *const placeholderEnd)
+static bool createFileFromTemplate(NativeFileHandle &file,
+ QFileSystemEntry::NativePath &path, size_t pos, size_t length,
+ QSystemError &error)
{
- Q_ASSERT(placeholderEnd > placeholderStart);
+ Q_ASSERT(length != 0);
+ Q_ASSERT(pos < size_t(path.length()));
+ Q_ASSERT(length <= size_t(path.length()) - pos);
+
+ Char *const placeholderStart = (Char *)path.data() + pos;
+ Char *const placeholderEnd = placeholderStart + length;
// Initialize placeholder with random chars + PID.
{
- char *rIter = placeholderEnd;
+ Char *rIter = placeholderEnd;
#if defined(QT_BUILD_CORE_LIB)
quint64 pid = quint64(QCoreApplication::applicationPid());
do {
- *--rIter = (pid % 10) + '0';
+ *--rIter = Latin1Char((pid % 10) + '0');
pid /= 10;
} while (rIter != placeholderStart && pid != 0);
#endif
@@ -124,48 +155,82 @@ static int createFileFromTemplate(char *const path,
while (rIter != placeholderStart) {
char ch = char((qrand() & 0xffff) % (26 + 26));
if (ch < 26)
- *--rIter = ch + 'A';
+ *--rIter = Latin1Char(ch + 'A');
else
- *--rIter = ch - 26 + 'a';
+ *--rIter = Latin1Char(ch - 26 + 'a');
}
}
+#ifdef Q_OS_SYMBIAN
+ RFs& fs = qt_s60GetRFs();
+#endif
+
for (;;) {
// Atomically create file and obtain handle
-#ifndef Q_OS_WIN
- {
- int fd = QT_OPEN(path, QT_OPEN_CREAT | O_EXCL | QT_OPEN_RDWR | QT_OPEN_LARGEFILE, 0600);
- if (fd != -1)
- return fd;
- if (errno != EEXIST)
- return -1;
+#if defined(Q_OS_WIN)
+ file = CreateFile((const wchar_t *)path.constData(),
+ GENERIC_READ | GENERIC_WRITE,
+ FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_NEW,
+ FILE_ATTRIBUTE_NORMAL, NULL);
+
+ if (file != INVALID_HANDLE_VALUE)
+ return true;
+
+ DWORD err = GetLastError();
+ if (err != ERROR_FILE_EXISTS) {
+ error = QSystemError(err, QSystemError::NativeError);
+ return false;
+ }
+#elif defined(Q_OS_SYMBIAN)
+ TInt err = file.Create(fs, qt_QString2TPtrC(path),
+ EFileRead | EFileWrite | EFileShareReadersOrWriters);
+
+ if (err == KErrNone)
+ return true;
+
+ if (err != KErrAlreadyExists) {
+ error = QSystemError(err, QSystemError::NativeError);
+ return false;
+ }
+#else // POSIX
+ file = QT_OPEN(path.constData(),
+ QT_OPEN_CREAT | O_EXCL | QT_OPEN_RDWR | QT_OPEN_LARGEFILE,
+ 0600);
+
+ if (file != -1)
+ return true;
+
+ int err = errno;
+ if (err != EEXIST) {
+ error = QSystemError(err, QSystemError::NativeError);
+ return false;
}
-#else
- if (!QFileInfo(QString::fromLocal8Bit(path)).exists())
- return 1;
#endif
/* tricky little algorwwithm for backward compatibility */
- for (char *iter = placeholderStart;;) {
+ for (Char *iter = placeholderStart;;) {
// Character progression: [0-9] => 'a' ... 'z' => 'A' .. 'Z'
// String progression: "ZZaiC" => "aabiC"
- switch (*iter) {
+ switch (char(*iter)) {
case 'Z':
// Rollover, advance next character
- *iter = 'a';
- if (++iter == placeholderEnd)
- return -1;
+ *iter = Latin1Char('a');
+ if (++iter == placeholderEnd) {
+ // Out of alternatives. Return file exists error, previously set.
+ error = QSystemError(err, QSystemError::NativeError);
+ return false;
+ }
continue;
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
- *iter = 'a';
+ *iter = Latin1Char('a');
break;
case 'z':
// increment 'z' to 'A'
- *iter = 'A';
+ *iter = Latin1Char('A');
break;
default:
@@ -257,7 +322,7 @@ bool QTemporaryFileEngine::open(QIODevice::OpenMode openMode)
QString qfilename = d->fileEntry.filePath();
- // Find placeholder string.
+ // Ensure there is a placeholder mask
uint phPos = qfilename.length();
uint phLength = 0;
@@ -269,70 +334,73 @@ bool QTemporaryFileEngine::open(QIODevice::OpenMode openMode)
continue;
}
- if (qfilename[phPos] == QLatin1Char('/')
- || phLength >= 6) {
+ if (phLength >= 6
+ || qfilename[phPos] == QLatin1Char('/')) {
++phPos;
break;
}
+ // start over
phLength = 0;
}
- QStringRef prefix, suffix;
- if (phLength < 6) {
- qfilename += QLatin1Char('.');
- prefix = QStringRef(&qfilename);
- phLength = 6;
- } else {
- prefix = qfilename.leftRef(phPos);
- suffix = qfilename.midRef(phPos + phLength);
- }
+ if (phLength < 6)
+ qfilename.append(QLatin1String(".XXXXXX"));
+
+ // "Nativify" :-)
+ QFileSystemEntry::NativePath filename = QFileSystemEngine::absoluteName(
+ QFileSystemEntry(qfilename, QFileSystemEntry::FromInternalPath()))
+ .nativeFilePath();
- QByteArray filename = prefix.toLocal8Bit();
+ // Find mask in native path
phPos = filename.length();
- if (suffix.isEmpty())
- filename.resize(phPos + phLength);
- else
- filename.insert(phPos + phLength, suffix.toLocal8Bit());
-
- char *path = filename.data();
-
-#ifndef Q_OS_WIN
- int fd = createFileFromTemplate(path, path + phPos, path + phPos + phLength);
- if (fd != -1) {
- // First open the fd as an external file descriptor to
- // initialize the engine properly.
- if (QFSFileEngine::open(openMode, fd)) {
-
- // Allow the engine to close the handle even if it's "external".
- d->closeFileHandle = true;
-
- // Restore the file names (open() resets them).
- d->fileEntry = QFileSystemEntry(QString::fromLocal8Bit(path, filename.length())); //note that filename is NOT a native path
- filePathIsTemplate = false;
- return true;
+ phLength = 0;
+ while (phPos != 0) {
+ --phPos;
+
+ if (filename[phPos] == Latin1Char('X')) {
+ ++phLength;
+ continue;
}
- QT_CLOSE(fd);
- }
- setError(errno == EMFILE ? QFile::ResourceError : QFile::OpenError, qt_error_string(errno));
- return false;
-#else
- if (createFileFromTemplate(path, path + phPos, path + phPos + phLength) == -1) {
- return false;
+ if (phLength >= 6) {
+ ++phPos;
+ break;
+ }
+
+ // start over
+ phLength = 0;
}
- QString template_ = d->fileEntry.filePath();
- d->fileEntry = QFileSystemEntry(QString::fromLocal8Bit(path, filename.length()));
+ Q_ASSERT(phLength >= 6);
- if (QFSFileEngine::open(openMode)) {
- filePathIsTemplate = false;
- return true;
+ QSystemError error;
+#if defined(Q_OS_WIN)
+ NativeFileHandle &file = d->fileHandle;
+#elif defined(Q_OS_SYMBIAN)
+ NativeFileHandle &file = d->symbianFile;
+#else // POSIX
+ NativeFileHandle &file = d->fd;
+#endif
+
+ if (!createFileFromTemplate(file, filename, phPos, phLength, error)) {
+ setError(QFile::OpenError, error.toString());
+ return false;
}
- d->fileEntry = QFileSystemEntry(template_, QFileSystemEntry::FromInternalPath());
- return false;
+ d->fileEntry = QFileSystemEntry(filename, QFileSystemEntry::FromNativePath());
+
+#if !defined(Q_OS_WIN)
+ d->closeFileHandle = true;
#endif
+
+ filePathIsTemplate = false;
+
+ d->openMode = openMode;
+ d->lastFlushFailed = false;
+ d->tried_stat = 0;
+
+ return true;
}
bool QTemporaryFileEngine::remove()
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp
index b4c37f4..8597fa3 100644
--- a/src/corelib/kernel/qmetaobject.cpp
+++ b/src/corelib/kernel/qmetaobject.cpp
@@ -432,9 +432,10 @@ int QMetaObject::constructorCount() const
}
/*!
- Returns the number of methods in this class, including the number of
- properties provided by each base class. These include signals and slots
- as well as normal member functions.
+ Returns the number of methods known to the meta-object system in this class,
+ including the number of properties provided by each base class. These
+ include signals and slots as well as member functions declared with the
+ Q_INVOKABLE macro.
Use code like the following to obtain a QStringList containing the methods
specific to a given class:
@@ -1245,6 +1246,10 @@ bool QMetaObject::invokeMethod(QObject *obj,
tag(), and an access() specifier. You can use invoke() to invoke
the method on an arbitrary QObject.
+ A method will only be registered with the meta-object system if it
+ is a slot, a signal, or declared with the Q_INVOKABLE macro.
+ Constructors can also be registered with Q_INVOKABLE.
+
\sa QMetaObject, QMetaEnum, QMetaProperty, {Qt's Property System}
*/
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp
index a6fee43..8e4fb32 100644
--- a/src/corelib/tools/qdatetime.cpp
+++ b/src/corelib/tools/qdatetime.cpp
@@ -1538,7 +1538,7 @@ int QTime::msec() const
If \a format is Qt::ISODate, the string format corresponds to the
ISO 8601 extended specification for representations of dates,
- which is also HH:MM:SS. (However, contrary to ISO 8601, dates
+ which is also HH:mm:ss. (However, contrary to ISO 8601, dates
before 15 October 1582 are handled as Julian dates, not Gregorian
dates. See \l{QDate G and J} {Use of Gregorian and Julian
Calendars}. This might change in a future version of Qt.)
@@ -2461,7 +2461,7 @@ void QDateTime::setTime_t(uint secsSince1Jan1970UTC)
If the \a format is Qt::ISODate, the string format corresponds
to the ISO 8601 extended specification for representations of
- dates and times, taking the form YYYY-MM-DDTHH:MM:SS[Z|[+|-]HH:MM],
+ dates and times, taking the form YYYY-MM-DDTHH:mm:ss[Z|[+|-]HH:mm],
depending on the timeSpec() of the QDateTime. If the timeSpec()
is Qt::UTC, Z will be appended to the string; if the timeSpec() is
Qt::OffsetFromUTC the offset in hours and minutes from UTC will
@@ -4040,8 +4040,11 @@ static QDateTimePrivate::Spec utcToLocal(QDate &date, QTime &time)
RTz tz;
User::LeaveIfError(tz.Connect());
CleanupClosePushL(tz);
- res.tm_isdst = tz.IsDaylightSavingOnL(*tz.GetTimeZoneIdL(),utcTTime);
+ CTzId *tzId = tz.GetTimeZoneIdL();
+ CleanupStack::PushL(tzId);
+ res.tm_isdst = tz.IsDaylightSavingOnL(*tzId,utcTTime);
User::LeaveIfError(tz.ConvertToLocalTime(utcTTime));
+ CleanupStack::PopAndDestroy(tzId);
CleanupStack::PopAndDestroy(&tz));
if (KErrNone == err) {
TDateTime localDateTime = utcTTime.DateTime();
diff --git a/src/corelib/tools/qline.cpp b/src/corelib/tools/qline.cpp
index 0f67652..af3b7d5 100644
--- a/src/corelib/tools/qline.cpp
+++ b/src/corelib/tools/qline.cpp
@@ -564,9 +564,8 @@ qreal QLineF::length() const
Returns the angle of the line in degrees.
- The return value will be in the range of values from 0.0 up to but not
- including 360.0. The angles are measured counter-clockwise from a point
- on the x-axis to the right of the origin (x > 0).
+ Positive values for the angles mean counter-clockwise while negative values
+ mean the clockwise direction. Zero degrees is at the 3 o'clock position.
\sa setAngle()
*/
diff --git a/src/corelib/tools/qlist.cpp b/src/corelib/tools/qlist.cpp
index e68ddd5..18bfe24 100644
--- a/src/corelib/tools/qlist.cpp
+++ b/src/corelib/tools/qlist.cpp
@@ -460,8 +460,8 @@ void **QListData::erase(void **xi)
Note that the internal array only ever gets bigger over the life
of the list. It never shrinks. The internal array is deallocated
- by the destructor and by the assignment operator, when one list
- is assigned to another.
+ by the destructor, by clear(), and by the assignment operator,
+ when one list is assigned to another.
Here's an example of a QList that stores integers and
a QList that stores QDate values:
diff --git a/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp b/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp
index b1ebec8..8787a5e 100644
--- a/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp
@@ -114,7 +114,7 @@ QT_BEGIN_NAMESPACE
/*!
\qmlproperty bool AnimatedImage::cache
- \since QtQuick 1.1
+ \since Quick 1.1
Specifies whether the image should be cached. The default value is
true. Setting \a cache to false is useful when dealing with large images,
@@ -123,7 +123,7 @@ QT_BEGIN_NAMESPACE
/*!
\qmlproperty bool AnimatedImage::mirror
- \since QtQuick 1.1
+ \since Quick 1.1
This property holds whether the image should be horizontally inverted
(effectively displaying a mirrored image).
diff --git a/src/declarative/graphicsitems/qdeclarativeborderimage.cpp b/src/declarative/graphicsitems/qdeclarativeborderimage.cpp
index 4b4efb6..9c274e9 100644
--- a/src/declarative/graphicsitems/qdeclarativeborderimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeborderimage.cpp
@@ -215,7 +215,7 @@ QDeclarativeBorderImage::~QDeclarativeBorderImage()
/*!
\qmlproperty bool BorderImage::cache
- \since QtQuick 1.1
+ \since Quick 1.1
Specifies whether the image should be cached. The default value is
true. Setting \a cache to false is useful when dealing with large images,
@@ -224,7 +224,7 @@ QDeclarativeBorderImage::~QDeclarativeBorderImage()
/*!
\qmlproperty bool BorderImage::mirror
- \since QtQuick 1.1
+ \since Quick 1.1
This property holds whether the image should be horizontally inverted
(effectively displaying a mirrored image).
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
index fd2dc45..d5c58df 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
@@ -1399,7 +1399,7 @@ void QDeclarativeFlickable::setContentHeight(qreal h)
/*!
\qmlmethod Flickable::resizeContent(real width, real height, QPointF center)
\preliminary
- \since QtQuick 1.1
+ \since Quick 1.1
Resizes the content to \a width x \a height about \a center.
@@ -1439,7 +1439,7 @@ void QDeclarativeFlickable::resizeContent(qreal w, qreal h, QPointF center)
/*!
\qmlmethod Flickable::returnToBounds()
\preliminary
- \since QtQuick 1.1
+ \since Quick 1.1
Ensures the content is within legal bounds.
diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp
index e53472d..23433d6 100644
--- a/src/declarative/graphicsitems/qdeclarativegridview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp
@@ -2618,7 +2618,7 @@ void QDeclarativeGridView::positionViewAtIndex(int index, int mode)
/*!
\qmlmethod GridView::positionViewAtBeginning()
\qmlmethod GridView::positionViewAtEnd()
- \since QtQuick 1.1
+ \since Quick 1.1
Positions the view at the beginning or end, taking into account any header or footer.
diff --git a/src/declarative/graphicsitems/qdeclarativeimage.cpp b/src/declarative/graphicsitems/qdeclarativeimage.cpp
index 9b9d680..e6bb798 100644
--- a/src/declarative/graphicsitems/qdeclarativeimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeimage.cpp
@@ -473,7 +473,7 @@ QRectF QDeclarativeImage::boundingRect() const
/*!
\qmlproperty bool Image::cache
- \since QtQuick 1.1
+ \since Quick 1.1
Specifies whether the image should be cached. The default value is
true. Setting \a cache to false is useful when dealing with large images,
@@ -482,7 +482,7 @@ QRectF QDeclarativeImage::boundingRect() const
/*!
\qmlproperty bool Image::mirror
- \since QtQuick 1.1
+ \since Quick 1.1
This property holds whether the image should be horizontally inverted
(effectively displaying a mirrored image).
diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp
index d36d163..805ca4d 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp
@@ -3480,7 +3480,7 @@ qreal QDeclarativeItem::implicitHeight() const
/*!
\qmlproperty real Item::implicitWidth
\qmlproperty real Item::implicitHeight
- \since QtQuick 1.1
+ \since Quick 1.1
Defines the natural width or height of the Item if no \l width or \l height is specified.
diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp
index f0fc96b..f29f778 100644
--- a/src/declarative/graphicsitems/qdeclarativelistview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp
@@ -3028,7 +3028,7 @@ void QDeclarativeListView::positionViewAtIndex(int index, int mode)
/*!
\qmlmethod ListView::positionViewAtBeginning()
\qmlmethod ListView::positionViewAtEnd()
- \since QtQuick 1.1
+ \since Quick 1.1
Positions the view at the beginning or end, taking into account any header or footer.
diff --git a/src/declarative/graphicsitems/qdeclarativemousearea.cpp b/src/declarative/graphicsitems/qdeclarativemousearea.cpp
index 0e06a4c..18f008a 100644
--- a/src/declarative/graphicsitems/qdeclarativemousearea.cpp
+++ b/src/declarative/graphicsitems/qdeclarativemousearea.cpp
@@ -419,7 +419,7 @@ void QDeclarativeMouseArea::setEnabled(bool a)
/*!
\qmlproperty bool MouseArea::preventStealing
- \since QtQuick 1.1
+ \since Quick 1.1
This property holds whether the mouse events may be stolen from this
MouseArea.
diff --git a/src/declarative/graphicsitems/qdeclarativepositioners.cpp b/src/declarative/graphicsitems/qdeclarativepositioners.cpp
index 483cad4..f3d1a68 100644
--- a/src/declarative/graphicsitems/qdeclarativepositioners.cpp
+++ b/src/declarative/graphicsitems/qdeclarativepositioners.cpp
@@ -584,7 +584,7 @@ QDeclarativeRow::QDeclarativeRow(QDeclarativeItem *parent)
/*!
\qmlproperty enumeration Row::layoutDirection
- \since QtQuick 1.1
+ \since Quick 1.1
This property holds the layoutDirection of the row.
@@ -878,7 +878,7 @@ void QDeclarativeGrid::setFlow(Flow flow)
/*!
\qmlproperty enumeration Grid::layoutDirection
- \since QtQuick 1.1
+ \since Quick 1.1
This property holds the layout direction of the layout.
@@ -1236,7 +1236,7 @@ void QDeclarativeFlow::setFlow(Flow flow)
/*!
\qmlproperty enumeration Flow::layoutDirection
- \since QtQuick 1.1
+ \since Quick 1.1
This property holds the layout direction of the layout.
diff --git a/src/declarative/graphicsitems/qdeclarativerepeater.cpp b/src/declarative/graphicsitems/qdeclarativerepeater.cpp
index e881b96..813c255 100644
--- a/src/declarative/graphicsitems/qdeclarativerepeater.cpp
+++ b/src/declarative/graphicsitems/qdeclarativerepeater.cpp
@@ -128,7 +128,7 @@ QDeclarativeRepeaterPrivate::~QDeclarativeRepeaterPrivate()
/*!
\qmlsignal Repeater::onItemAdded(int index, Item item)
- \since QtQuick 1.1
+ \since Quick 1.1
This handler is called when an item is added to the repeater. The \a index
parameter holds the index at which the item has been inserted within the
@@ -137,7 +137,7 @@ QDeclarativeRepeaterPrivate::~QDeclarativeRepeaterPrivate()
/*!
\qmlsignal Repeater::onItemRemoved(int index, Item item)
- \since QtQuick 1.1
+ \since Quick 1.1
This handler is called when an item is removed from the repeater. The \a index
parameter holds the index at which the item was removed from the repeater,
@@ -306,7 +306,7 @@ int QDeclarativeRepeater::count() const
/*!
\qmlmethod Item Repeater::itemAt(index)
- \since QtQuick 1.1
+ \since Quick 1.1
Returns the \l Item that has been created at the given \a index, or \c null
if no item exists at \a index.
diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp
index 20e4eef..54ff406 100644
--- a/src/declarative/graphicsitems/qdeclarativetext.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetext.cpp
@@ -1190,7 +1190,7 @@ void QDeclarativeText::setWrapMode(WrapMode mode)
/*!
\qmlproperty int Text::lineCount
- \since QtQuick 1.1
+ \since Quick 1.1
Returns the number of lines visible in the text item.
@@ -1206,7 +1206,7 @@ int QDeclarativeText::lineCount() const
/*!
\qmlproperty bool Text::truncated
- \since QtQuick 1.1
+ \since Quick 1.1
Returns true if the text has been truncated due to \l maximumLineCount
or \l elide.
@@ -1223,7 +1223,7 @@ bool QDeclarativeText::truncated() const
/*!
\qmlproperty int Text::maximumLineCount
- \since QtQuick 1.1
+ \since Quick 1.1
Set this property to limit the number of lines that the text item will show.
If elide is set to Text.ElideRight, the text will be elided appropriately.
@@ -1457,7 +1457,7 @@ qreal QDeclarativeText::paintedHeight() const
/*!
\qmlproperty real Text::lineHeight
- \since QtQuick 1.1
+ \since Quick 1.1
Sets the line height for the text.
The value can be in pixels or a multiplier depending on lineHeightMode.
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp
index ca7e948..0ea7ff3 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp
@@ -107,7 +107,7 @@ TextEdit {
/*!
\qmlsignal TextEdit::onLinkActivated(string link)
- \since QtQuick 1.1
+ \since Quick 1.1
This handler is called when the user clicks on a link embedded in the text.
The link must be in rich text or HTML format and the
@@ -546,7 +546,15 @@ bool QDeclarativeTextEditPrivate::determineHorizontalAlignment()
{
Q_Q(QDeclarativeTextEdit);
if (hAlignImplicit && q->isComponentComplete()) {
- bool alignToRight = text.isEmpty() ? QApplication::keyboardInputDirection() == Qt::RightToLeft : rightToLeftText;
+ bool alignToRight;
+ if (text.isEmpty()) {
+ const QString preeditText = control->textCursor().block().layout()->preeditAreaText();
+ alignToRight = preeditText.isEmpty()
+ ? QApplication::keyboardInputDirection() == Qt::RightToLeft
+ : preeditText.isRightToLeft();
+ } else {
+ alignToRight = rightToLeftText;
+ }
return setHAlign(alignToRight ? QDeclarativeTextEdit::AlignRight : QDeclarativeTextEdit::AlignLeft);
}
return false;
@@ -615,7 +623,7 @@ void QDeclarativeTextEdit::setWrapMode(WrapMode mode)
/*!
\qmlproperty int TextEdit::lineCount
- \since QtQuick 1.1
+ \since Quick 1.1
Returns the total number of lines in the textEdit item.
*/
@@ -709,7 +717,7 @@ void QDeclarativeTextEdit::moveCursorSelection(int pos)
/*!
\qmlmethod void TextEdit::moveCursorSelection(int position, SelectionMode mode = TextEdit.SelectCharacters)
- \since QtQuick 1.1
+ \since Quick 1.1
Moves the cursor to \a position and updates the selection according to the optional \a mode
parameter. (To only move the cursor, set the \l cursorPosition property.)
@@ -1074,7 +1082,7 @@ void QDeclarativeTextEdit::setSelectByMouse(bool on)
/*!
\qmlproperty enum TextEdit::mouseSelectionMode
- \since QtQuick 1.1
+ \since Quick 1.1
Specifies how text should be selected using a mouse.
@@ -1220,7 +1228,7 @@ void QDeclarativeTextEditPrivate::focusChanged(bool hasFocus)
/*!
\qmlmethod void TextEdit::deselect()
- \since QtQuick 1.1
+ \since Quick 1.1
Removes active text selection.
*/
@@ -1581,6 +1589,7 @@ void QDeclarativeTextEdit::q_textChanged()
void QDeclarativeTextEdit::moveCursorDelegate()
{
Q_D(QDeclarativeTextEdit);
+ d->determineHorizontalAlignment();
updateMicroFocus();
emit cursorRectangleChanged();
if(!d->cursor)
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h b/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h
index 412d33c..731d956 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h
@@ -77,7 +77,7 @@ public:
yoff(0)
{
#ifdef Q_OS_SYMBIAN
- if (QSysInfo::symbianVersion() >= QSysInfo::SV_SF_1) {
+ if (QSysInfo::symbianVersion() == QSysInfo::SV_SF_1 || QSysInfo::symbianVersion() == QSysInfo::SV_SF_3) {
showInputPanelOnFocus = false;
}
#endif
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
index 5245236..cc3f0b9 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
@@ -407,7 +407,11 @@ bool QDeclarativeTextInputPrivate::determineHorizontalAlignment()
if (hAlignImplicit) {
// if no explicit alignment has been set, follow the natural layout direction of the text
QString text = control->text();
- bool isRightToLeft = text.isEmpty() ? QApplication::keyboardInputDirection() == Qt::RightToLeft : text.isRightToLeft();
+ if (text.isEmpty())
+ text = control->preeditAreaText();
+ bool isRightToLeft = text.isEmpty()
+ ? QApplication::keyboardInputDirection() == Qt::RightToLeft
+ : text.isRightToLeft();
return setHAlign(isRightToLeft ? QDeclarativeTextInput::AlignRight : QDeclarativeTextInput::AlignLeft);
}
return false;
@@ -874,7 +878,8 @@ void QDeclarativeTextInputPrivate::updateInputMethodHints()
\o TextInput.Normal - Displays the text as it is. (Default)
\o TextInput.Password - Displays asterixes instead of characters.
\o TextInput.NoEcho - Displays nothing.
- \o TextInput.PasswordEchoOnEdit - Displays all but the current character as asterixes.
+ \o TextInput.PasswordEchoOnEdit - Displays characters as they are entered
+ while editing, otherwise displays asterisks.
\endlist
*/
QDeclarativeTextInput::EchoMode QDeclarativeTextInput::echoMode() const
@@ -1010,7 +1015,7 @@ int QDeclarativeTextInput::positionAt(int x) const
/*!
\qmlmethod int TextInput::positionAt(int x, CursorPosition position = CursorBetweenCharacters)
- \since QtQuick 1.1
+ \since Quick 1.1
This function returns the character position at
x pixels from the left of the textInput. Position 0 is before the
@@ -1398,7 +1403,7 @@ QVariant QDeclarativeTextInput::inputMethodQuery(Qt::InputMethodQuery property)
/*!
\qmlmethod void TextInput::deselect()
- \since QtQuick 1.1
+ \since Quick 1.1
Removes active text selection.
*/
@@ -1570,7 +1575,7 @@ void QDeclarativeTextInput::setSelectByMouse(bool on)
/*!
\qmlproperty enum TextInput::mouseSelectionMode
- \since QtQuick 1.1
+ \since Quick 1.1
Specifies how text should be selected using a mouse.
@@ -1618,7 +1623,7 @@ void QDeclarativeTextInput::moveCursorSelection(int position)
/*!
\qmlmethod void TextInput::moveCursorSelection(int position, SelectionMode mode = TextInput.SelectCharacters)
- \since QtQuick 1.1
+ \since Quick 1.1
Moves the cursor to \a position and updates the selection according to the optional \a mode
parameter. (To only move the cursor, set the \l cursorPosition property.)
@@ -1906,6 +1911,7 @@ void QDeclarativeTextInput::cursorPosChanged()
void QDeclarativeTextInput::updateCursorRectangle()
{
Q_D(QDeclarativeTextInput);
+ d->determineHorizontalAlignment();
d->updateHorizontalScroll();
updateRect();//TODO: Only update rect between pos's
updateMicroFocus();
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h b/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h
index 0325016..4712c65 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h
@@ -80,7 +80,7 @@ public:
selectPressed(false)
{
#ifdef Q_OS_SYMBIAN
- if (QSysInfo::symbianVersion() >= QSysInfo::SV_SF_1) {
+ if (QSysInfo::symbianVersion() == QSysInfo::SV_SF_1 || QSysInfo::symbianVersion() == QSysInfo::SV_SF_3) {
showInputPanelOnFocus = false;
}
#endif
diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
index 26757b5..b896a77 100644
--- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
+++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
@@ -1375,7 +1375,7 @@ void QDeclarativeVisualDataModel::_q_rowsMoved(const QModelIndex &sourceParent,
Q_D(QDeclarativeVisualDataModel);
const int count = sourceEnd - sourceStart + 1;
if (destinationParent == d->m_root && sourceParent == d->m_root) {
- _q_itemsMoved(sourceStart, sourceStart > destinationRow ? destinationRow : destinationRow-1, count);
+ _q_itemsMoved(sourceStart, sourceStart > destinationRow ? destinationRow : destinationRow-count, count);
} else if (sourceParent == d->m_root) {
_q_itemsRemoved(sourceStart, count);
} else if (destinationParent == d->m_root) {
diff --git a/src/declarative/util/qdeclarativelistmodel.cpp b/src/declarative/util/qdeclarativelistmodel.cpp
index 28c2df6..9604117 100644
--- a/src/declarative/util/qdeclarativelistmodel.cpp
+++ b/src/declarative/util/qdeclarativelistmodel.cpp
@@ -784,6 +784,7 @@ void QDeclarativeListModelParser::setCustomData(QObject *obj, const QByteArray &
QDeclarativeListModel *rv = static_cast<QDeclarativeListModel *>(obj);
ModelNode *root = new ModelNode(rv->m_nested);
+ rv->m_nested->m_ownsRoot = true;
rv->m_nested->_root = root;
QStack<ModelNode *> nodes;
nodes << root;
diff --git a/src/gui/accessible/qaccessible_unix.cpp b/src/gui/accessible/qaccessible_unix.cpp
index 19fbe78..1c1eb2a 100644
--- a/src/gui/accessible/qaccessible_unix.cpp
+++ b/src/gui/accessible/qaccessible_unix.cpp
@@ -96,7 +96,7 @@ void QAccessible::updateAccessibility(QObject *o, int who, Event reason)
}
initialize();
- if (bridges()->isEmpty())
+ if (!bridges() || bridges()->isEmpty())
return;
QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(o);
diff --git a/src/gui/image/qpixmap_mac.cpp b/src/gui/image/qpixmap_mac.cpp
index bdf1f90..47b6eef 100644
--- a/src/gui/image/qpixmap_mac.cpp
+++ b/src/gui/image/qpixmap_mac.cpp
@@ -851,7 +851,33 @@ static void qt_mac_grabDisplayRect(CGDirectDisplayID display, const QRect &displ
ptrCGLDestroyContext(glContextObj); // and destroy the context
}
+#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
// Returns a pixmap containing the screen contents at rect.
+static QPixmap qt_mac_grabScreenRect_10_6(const QRect &rect)
+{
+ const int maxDisplays = 128; // 128 displays should be enough for everyone.
+ CGDirectDisplayID displays[maxDisplays];
+ CGDisplayCount displayCount;
+ const CGRect cgRect = CGRectMake(rect.x(), rect.y(), rect.width(), rect.height());
+ const CGDisplayErr err = CGGetDisplaysWithRect(cgRect, maxDisplays, displays, &displayCount);
+
+ if (err && displayCount == 0)
+ return QPixmap();
+ QPixmap windowPixmap(rect.size());
+ for (uint i = 0; i < displayCount; ++i) {
+ const CGRect bounds = CGDisplayBounds(displays[i]);
+ // Translate to display-local coordinates
+ QRect displayRect = rect.translated(qRound(-bounds.origin.x), qRound(-bounds.origin.y));
+ QCFType<CGImageRef> image = CGDisplayCreateImageForRect(displays[i],
+ CGRectMake(displayRect.x(), displayRect.y(), displayRect.width(), displayRect.height()));
+ QPixmap pix = QPixmap::fromMacCGImageRef(image);
+ QPainter painter(&windowPixmap);
+ painter.drawPixmap(-bounds.origin.x, -bounds.origin.y, pix);
+ }
+ return windowPixmap;
+}
+#endif
+
static QPixmap qt_mac_grabScreenRect(const QRect &rect)
{
if (!resolveOpenGLSymbols())
@@ -927,7 +953,12 @@ QPixmap QPixmap::grabWindow(WId window, int x, int y, int w, int h)
QRect rect(globalCoord.x() + x, globalCoord.y() + y, w, h);
#ifdef QT_MAC_USE_COCOA
- return qt_mac_grabScreenRect(rect);
+#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
+ if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_6)
+ return qt_mac_grabScreenRect_10_6(rect);
+ else
+#endif
+ return qt_mac_grabScreenRect(rect);
#else
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4)
if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_4) {
diff --git a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp
index 899b792..5ddd53f 100644
--- a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp
+++ b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp
@@ -64,8 +64,6 @@
#define QT_EAknCursorPositionChanged MAknEdStateObserver::EAknEdwinStateEvent(6)
// MAknEdStateObserver::EAknActivatePenInputRequest
#define QT_EAknActivatePenInputRequest MAknEdStateObserver::EAknEdwinStateEvent(7)
-// MAknEdStateObserver::EAknClosePenInputRequest
-#define QT_EAknClosePenInputRequest MAknEdStateObserver::EAknEdwinStateEvent(10)
// EAknEditorFlagSelectionVisible is only valid from 3.2 onwards.
// Sym^3 AVKON FEP manager expects that this flag is used for FEP-aware editors
@@ -254,6 +252,9 @@ bool QCoeFepInputContext::needsInputPanel()
bool QCoeFepInputContext::filterEvent(const QEvent *event)
{
+ // The CloseSoftwareInputPanel event is not handled here, because the VK will automatically
+ // close when it discovers that the underlying widget does not have input capabilities.
+
if (!focusWidget())
return false;
@@ -317,12 +318,6 @@ bool QCoeFepInputContext::filterEvent(const QEvent *event)
if (!needsInputPanel())
return false;
- if ((event->type() == QEvent::CloseSoftwareInputPanel)
- && (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0)) {
- m_fepState->ReportAknEdStateEventL(QT_EAknClosePenInputRequest);
- return false;
- }
-
if (event->type() == QEvent::RequestSoftwareInputPanel) {
// Only request virtual keyboard if it is not yet active or if this is the first time
// panel is requested for this application.
@@ -479,7 +474,7 @@ void QCoeFepInputContext::resetSplitViewWidget(bool keepInputWidget)
if (!alwaysResize) {
if (gv->scene()) {
- if (gv->scene()->focusItem() && S60->partial_keyboardAutoTranslation) {
+ if (gv->scene()->focusItem()) {
// Check if the widget contains cursorPositionChanged signal and disconnect from it.
QByteArray signal = QMetaObject::normalizedSignature(SIGNAL(cursorPositionChanged()));
int index = gv->scene()->focusItem()->toGraphicsObject()->metaObject()->indexOfSignal(signal.right(signal.length() - 1));
@@ -585,7 +580,7 @@ void QCoeFepInputContext::ensureFocusWidgetVisible(QWidget *widget)
if (!moveWithinVisibleArea) {
// Check if the widget contains cursorPositionChanged signal and connect to it.
QByteArray signal = QMetaObject::normalizedSignature(SIGNAL(cursorPositionChanged()));
- if (gv->scene() && gv->scene()->focusItem() && S60->partial_keyboardAutoTranslation) {
+ if (gv->scene() && gv->scene()->focusItem()) {
int index = gv->scene()->focusItem()->toGraphicsObject()->metaObject()->indexOfSignal(signal.right(signal.length() - 1));
if (index != -1)
connect(gv->scene()->focusItem()->toGraphicsObject(), SIGNAL(cursorPositionChanged()), this, SLOT(translateInputWidget()));
@@ -1085,18 +1080,7 @@ TInt QCoeFepInputContext::DocumentLengthForFep() const
return 0;
QVariant variant = w->inputMethodQuery(Qt::ImSurroundingText);
-
- int size = variant.value<QString>().size() + m_preeditString.size();
-
- // To fix an issue with backspaces not being generated if document size is zero,
- // fake document length to be at least one always, except when dealing with
- // hidden text widgets, where this faking would generate extra asterisk. Since the
- // primary use of hidden text widgets is password fields, they are unlikely to
- // support multiple lines anyway.
- if (size == 0 && !(m_textCapabilities & TCoeInputCapabilities::ESecretText))
- size = 1;
-
- return size;
+ return variant.value<QString>().size() + m_preeditString.size();
}
TInt QCoeFepInputContext::DocumentMaximumLengthForFep() const
@@ -1179,12 +1163,6 @@ void QCoeFepInputContext::GetEditorContentForFep(TDes& aEditorContent, TInt aDoc
// FEP expects the preedit string to be part of the editor content, so let's mix it in.
int cursor = w->inputMethodQuery(Qt::ImCursorPosition).toInt();
text.insert(cursor, m_preeditString);
-
- // Add additional space to empty non-password text to compensate
- // for the fake length we specified in DocumentLengthForFep().
- if (text.size() == 0 && !(m_textCapabilities & TCoeInputCapabilities::ESecretText))
- text += QChar(0x20);
-
aEditorContent.Copy(qt_QString2TPtrC(text.mid(aDocumentPosition, aLengthToRetrieve)));
}
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 31246f4..da1c778 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -2760,9 +2760,6 @@ QS60ThreadLocalData::QS60ThreadLocalData()
QS60ThreadLocalData::~QS60ThreadLocalData()
{
- for (int i = 0; i < releaseFuncs.count(); ++i)
- releaseFuncs[i]();
- releaseFuncs.clear();
if (!usingCONEinstances) {
delete screenDevice;
wsSession.Close();
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp
index de2d87e..e1df267 100644
--- a/src/gui/kernel/qevent.cpp
+++ b/src/gui/kernel/qevent.cpp
@@ -142,8 +142,7 @@ QInputEvent::~QInputEvent()
and QWidget::mouseMoveEvent() to receive mouse events in your own
widgets.
- \sa QWidget::setMouseTracking() QWidget::grabMouse()
- QCursor::pos()
+ \sa QWidget::setMouseTracking() QWidget::grabMouse() QCursor::pos()
*/
/*!
diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp
index 5fc72d4..117b72f 100644
--- a/src/gui/kernel/qkeysequence.cpp
+++ b/src/gui/kernel/qkeysequence.cpp
@@ -933,7 +933,7 @@ QKeySequence::QKeySequence(const QString &key)
}
/*!
- \since 4.7
+ \since 4.x
Creates a key sequence from the \a key string based on \a format.
*/
QKeySequence::QKeySequence(const QString &key, QKeySequence::SequenceFormat format)
@@ -1130,7 +1130,7 @@ int QKeySequence::assign(const QString &ks)
/*!
\fn int QKeySequence::assign(const QString &keys, QKeySequence::SequenceFormat format)
- \since 4.7
+ \since 4.x
Adds the given \a keys to the key sequence (based on \a format).
\a keys may contain up to four key codes, provided they are
diff --git a/src/gui/kernel/qsoftkeymanager.cpp b/src/gui/kernel/qsoftkeymanager.cpp
index 9caa37e..510705f 100644
--- a/src/gui/kernel/qsoftkeymanager.cpp
+++ b/src/gui/kernel/qsoftkeymanager.cpp
@@ -123,10 +123,8 @@ QAction *QSoftKeyManager::createAction(StandardSoftKey standardKey, QWidget *act
default:
break;
};
- if (key != 0) {
+ if (key != 0)
QSoftKeyManager::instance()->d_func()->softKeyCommandActions.insert(action, key);
- connect(action, SIGNAL(destroyed(QObject*)), QSoftKeyManager::instance(), SLOT(cleanupHash(QObject*)));
- }
#endif
QAction::SoftKeyRole softKeyRole = QAction::NoSoftKey;
switch (standardKey) {
@@ -159,13 +157,7 @@ QAction *QSoftKeyManager::createKeyedAction(StandardSoftKey standardKey, Qt::Key
QScopedPointer<QAction> action(createAction(standardKey, actionWidget));
connect(action.data(), SIGNAL(triggered()), QSoftKeyManager::instance(), SLOT(sendKeyEvent()));
-
-#if defined(Q_WS_S60) && !defined(SYMBIAN_VERSION_9_4) && !defined(SYMBIAN_VERSION_9_3) && !defined(SYMBIAN_VERSION_9_2)
- // Don't connect destroyed slot if is was already connected in createAction
- if (!(QSoftKeyManager::instance()->d_func()->softKeyCommandActions.contains(action.data())))
-#endif
connect(action.data(), SIGNAL(destroyed(QObject*)), QSoftKeyManager::instance(), SLOT(cleanupHash(QObject*)));
-
QSoftKeyManager::instance()->d_func()->keyedActions.insert(action.data(), key);
return action.take();
#endif //QT_NO_ACTION
@@ -174,9 +166,7 @@ QAction *QSoftKeyManager::createKeyedAction(StandardSoftKey standardKey, Qt::Key
void QSoftKeyManager::cleanupHash(QObject *obj)
{
Q_D(QSoftKeyManager);
- // Can't use qobject_cast in destroyed() signal handler as that'll return NULL,
- // so use static_cast instead. Since the pointer is only used as a hash key, it is safe.
- QAction *action = static_cast<QAction *>(obj);
+ QAction *action = qobject_cast<QAction*>(obj);
d->keyedActions.remove(action);
#if defined(Q_WS_S60) && !defined(SYMBIAN_VERSION_9_4) && !defined(SYMBIAN_VERSION_9_3) && !defined(SYMBIAN_VERSION_9_2)
d->softKeyCommandActions.remove(action);
diff --git a/src/gui/kernel/qt_s60_p.h b/src/gui/kernel/qt_s60_p.h
index 3ec4052..ada52a0 100644
--- a/src/gui/kernel/qt_s60_p.h
+++ b/src/gui/kernel/qt_s60_p.h
@@ -97,10 +97,6 @@ static const int qt_symbian_max_screens = 4;
//this macro exists because EColor16MAP enum value doesn't exist in Symbian OS 9.2
#define Q_SYMBIAN_ECOLOR16MAP TDisplayMode(13)
-class QSymbianTypeFaceExtras;
-typedef QHash<QString, const QSymbianTypeFaceExtras *> QSymbianTypeFaceExtrasHash;
-typedef void (*QThreadLocalReleaseFunc)();
-
class Q_AUTOTEST_EXPORT QS60ThreadLocalData
{
public:
@@ -109,8 +105,6 @@ public:
bool usingCONEinstances;
RWsSession wsSession;
CWsScreenDevice *screenDevice;
- QSymbianTypeFaceExtrasHash fontData;
- QVector<QThreadLocalReleaseFunc> releaseFuncs;
};
class QS60Data
@@ -184,8 +178,6 @@ public:
inline CWsScreenDevice* screenDevice(const QWidget *widget);
inline CWsScreenDevice* screenDevice(int screenNumber);
static inline int screenNumberForWidget(const QWidget *widget);
- inline QSymbianTypeFaceExtrasHash& fontData();
- inline void addThreadLocalReleaseFunc(QThreadLocalReleaseFunc func);
static inline CCoeAppUi* appUi();
static inline CEikMenuBar* menuBar();
#ifdef Q_WS_S60
@@ -486,24 +478,6 @@ inline int QS60Data::screenNumberForWidget(const QWidget *widget)
return qt_widget_private(const_cast<QWidget *>(w))->symbianScreenNumber;
}
-inline QSymbianTypeFaceExtrasHash& QS60Data::fontData()
-{
- if (!tls.hasLocalData()) {
- tls.setLocalData(new QS60ThreadLocalData);
- }
- return tls.localData()->fontData;
-}
-
-inline void QS60Data::addThreadLocalReleaseFunc(QThreadLocalReleaseFunc func)
-{
- if (!tls.hasLocalData()) {
- tls.setLocalData(new QS60ThreadLocalData);
- }
- QS60ThreadLocalData *data = tls.localData();
- if (!data->releaseFuncs.contains(func))
- data->releaseFuncs.append(func);
-}
-
inline CCoeAppUi* QS60Data::appUi()
{
return CCoeEnv::Static()-> AppUi();
diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp
index 807f68e..256e34b 100644
--- a/src/gui/kernel/qwidget_s60.cpp
+++ b/src/gui/kernel/qwidget_s60.cpp
@@ -235,22 +235,11 @@ void QWidgetPrivate::setGeometry_sys(int x, int y, int w, int h, bool isMove)
QSize oldSize(q->size());
QRect oldGeom(data.crect);
- bool checkExtra = true;
- if (q->isWindow() && (data.window_state & (Qt::WindowFullScreen | Qt::WindowMaximized))) {
- // Do not allow fullscreen/maximized windows to expand beyond client rect
- TRect r = S60->clientRect();
- w = qMin(w, r.Width());
- h = qMin(h, r.Height());
-
- if (w == r.Width() && h == r.Height())
- checkExtra = false;
- }
-
// Lose maximized status if deliberate resize
if (w != oldSize.width() || h != oldSize.height())
data.window_state &= ~Qt::WindowMaximized;
- if (checkExtra && extra) { // any size restrictions?
+ if (extra) { // any size restrictions?
w = qMin(w,extra->maxw);
h = qMin(h,extra->maxh);
w = qMax(w,extra->minw);
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 76d7316..9826689 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -3098,7 +3098,7 @@ void QRasterPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textIte
ensurePen();
ensureState();
-#if defined (Q_WS_WIN) || defined(Q_WS_MAC)
+#if defined (Q_WS_WIN) || defined(Q_WS_MAC) || (defined(Q_OS_MAC) && defined(Q_WS_QPA))
if (!supportsTransformations(ti.fontEngine)) {
QVarLengthArray<QFixedPoint> positions;
@@ -3438,7 +3438,7 @@ bool QRasterPaintEngine::supportsTransformations(const QFontEngine *fontEngine)
bool QRasterPaintEngine::supportsTransformations(qreal pixelSize, const QTransform &m) const
{
-#if defined(Q_WS_MAC)
+#if defined(Q_WS_MAC) || (defined(Q_OS_MAC) && defined(Q_WS_QPA))
// Mac font engines don't support scaling and rotation
if (m.type() > QTransform::TxTranslate)
#else
diff --git a/src/gui/s60framework/s60framework.pri b/src/gui/s60framework/s60framework.pri
index e30d2c0..4e94c21 100644
--- a/src/gui/s60framework/s60framework.pri
+++ b/src/gui/s60framework/s60framework.pri
@@ -2,8 +2,7 @@ SOURCES += s60framework/qs60mainapplication.cpp \
s60framework/qs60mainappui.cpp \
s60framework/qs60maindocument.cpp \
s60framework/qs60keycapture.cpp
-HEADERS += qs60keycapture_p.h \
- s60framework/qs60mainapplication_p.h \
+HEADERS += s60framework/qs60mainapplication_p.h \
s60framework/qs60mainapplication.h \
s60framework/qs60mainappui.h \
s60framework/qs60maindocument.h \
diff --git a/src/gui/styles/qs60style_s60.cpp b/src/gui/styles/qs60style_s60.cpp
index 913352a..33619d6 100644
--- a/src/gui/styles/qs60style_s60.cpp
+++ b/src/gui/styles/qs60style_s60.cpp
@@ -91,6 +91,7 @@ enum TSupportRelease {
ES60_5_1 = 0x0008,
ES60_5_2 = 0x0010,
ES60_5_3 = 0x0020,
+ ES60_5_4 = 0x0040,
ES60_3_X = ES60_3_1 | ES60_3_2,
// Releases before Symbian Foundation
ES60_PreSF = ES60_3_1 | ES60_3_2 | ES60_5_0,
@@ -98,8 +99,10 @@ enum TSupportRelease {
ES60_Pre52 = ES60_3_1 | ES60_3_2 | ES60_5_0 | ES60_5_1,
// Releases before S60 5.3
ES60_Pre53 = ES60_3_1 | ES60_3_2 | ES60_5_0 | ES60_5_1 | ES60_5_2,
+ // Releases before S60 5.4
+ ES60_Pre54 = ES60_3_1 | ES60_3_2 | ES60_5_0 | ES60_5_1 | ES60_5_2 | ES60_5_3,
// Add all new releases here
- ES60_All = ES60_3_1 | ES60_3_2 | ES60_5_0 | ES60_5_1 | ES60_5_2 | ES60_5_3
+ ES60_All = ES60_3_1 | ES60_3_2 | ES60_5_0 | ES60_5_1 | ES60_5_2 | ES60_5_3 | ES60_5_4
};
typedef struct {
@@ -707,7 +710,7 @@ QPixmap QS60StyleModeSpecifics::colorSkinnedGraphicsLX(
colorIndex,
icon,
iconMask,
- AknIconUtils::AvkonIconFileName(),
+ (fallbackGraphicID != KErrNotFound ? AknIconUtils::AvkonIconFileName() : KNullDesC),
fallbackGraphicID,
fallbackGraphicsMaskID,
defaultColor);
@@ -922,7 +925,7 @@ QPixmap QS60StyleModeSpecifics::createSkinnedGraphicsLX(
skinId,
icon,
iconMask,
- AknIconUtils::AvkonIconFileName(),
+ (fallbackGraphicID != KErrNotFound ? AknIconUtils::AvkonIconFileName() : KNullDesC),
fallbackGraphicID ,
fallbackGraphicsMaskID);
@@ -1016,7 +1019,7 @@ QPixmap QS60StyleModeSpecifics::createSkinnedGraphicsLX(
KAknsIIDDefault, //animation is not themed, lets force fallback graphics
animationFrame,
frameMask,
- AknIconUtils::AvkonIconFileName(),
+ (fallbackGraphicID != KErrNotFound ? AknIconUtils::AvkonIconFileName() : KNullDesC),
fallbackGraphicID ,
fallbackGraphicsMaskID);
}
@@ -1228,7 +1231,8 @@ bool QS60StyleModeSpecifics::checkSupport(const int supportedRelease)
(currentRelease == QSysInfo::SV_S60_5_0 && supportedRelease & ES60_5_0) ||
(currentRelease == QSysInfo::SV_S60_5_1 && supportedRelease & ES60_5_1) ||
(currentRelease == QSysInfo::SV_S60_5_2 && supportedRelease & ES60_5_2) ||
- (currentRelease == QSysInfo::SV_S60_5_3 && supportedRelease & ES60_5_3) );
+ (currentRelease == QSysInfo::SV_S60_5_3 && supportedRelease & ES60_5_3) ||
+ (currentRelease == QSysInfo::SV_S60_5_4 && supportedRelease & ES60_5_4) );
}
TAknsItemID QS60StyleModeSpecifics::partSpecificThemeId(int part)
diff --git a/src/gui/styles/qwindowsstyle.cpp b/src/gui/styles/qwindowsstyle.cpp
index c099273..9732c7e 100644
--- a/src/gui/styles/qwindowsstyle.cpp
+++ b/src/gui/styles/qwindowsstyle.cpp
@@ -177,11 +177,14 @@ bool QWindowsStyle::eventFilter(QObject *o, QEvent *e)
// Alt has been pressed - find all widgets that care
QList<QWidget *> l = widget->findChildren<QWidget *>();
- for (int pos=0 ; pos < l.size() ; ++pos) {
+ for (int pos=0 ; pos < l.size() ;) {
QWidget *w = l.at(pos);
if (w->isWindow() || !w->isVisible() ||
- w->style()->styleHint(SH_UnderlineShortcut, 0, w))
+ w->style()->styleHint(SH_UnderlineShortcut, 0, w)) {
l.removeAt(pos);
+ continue;
+ }
+ pos++;
}
// Update states before repainting
d->seenAlt.append(widget);
diff --git a/src/gui/text/qfontdatabase_s60.cpp b/src/gui/text/qfontdatabase_s60.cpp
index ffa4e59..8400feb 100644
--- a/src/gui/text/qfontdatabase_s60.cpp
+++ b/src/gui/text/qfontdatabase_s60.cpp
@@ -166,6 +166,7 @@ public:
COpenFontRasterizer *m_rasterizer;
mutable QList<const QSymbianTypeFaceExtras *> m_extras;
+ mutable QHash<QString, const QSymbianTypeFaceExtras *> m_extrasHash;
mutable QSet<QString> m_applicationFontFamilies;
};
@@ -268,9 +269,8 @@ void QSymbianFontDatabaseExtrasImplementation::clear()
static_cast<const QSymbianFontDatabaseExtrasImplementation*>(db->symbianExtras);
if (!dbExtras)
return; // initializeDb() has never been called
- QSymbianTypeFaceExtrasHash &extrasHash = S60->fontData();
if (QSymbianTypeFaceExtras::symbianFontTableApiAvailable()) {
- qDeleteAll(extrasHash);
+ qDeleteAll(dbExtras->m_extrasHash);
} else {
typedef QList<const QSymbianTypeFaceExtras *>::iterator iterator;
for (iterator p = dbExtras->m_extras.begin(); p != dbExtras->m_extras.end(); ++p) {
@@ -279,16 +279,11 @@ void QSymbianFontDatabaseExtrasImplementation::clear()
}
dbExtras->m_extras.clear();
}
- extrasHash.clear();
+ dbExtras->m_extrasHash.clear();
}
void qt_cleanup_symbianFontDatabase()
{
- static bool cleanupDone = false;
- if (cleanupDone)
- return;
- cleanupDone = true;
-
QFontDatabasePrivate *db = privateDb();
if (!db)
return;
@@ -339,12 +334,9 @@ COpenFont* OpenFontFromBitmapFont(const CBitmapFont* aBitmapFont)
const QSymbianTypeFaceExtras *QSymbianFontDatabaseExtrasImplementation::extras(const QString &aTypeface,
bool bold, bool italic) const
{
- QSymbianTypeFaceExtrasHash &extrasHash = S60->fontData();
- if (extrasHash.isEmpty() && QThread::currentThread() != QApplication::instance()->thread())
- S60->addThreadLocalReleaseFunc(clear);
const QString typeface = qt_symbian_fontNameWithAppFontMarker(aTypeface);
const QString searchKey = typeface + QString::number(int(bold)) + QString::number(int(italic));
- if (!extrasHash.contains(searchKey)) {
+ if (!m_extrasHash.contains(searchKey)) {
TFontSpec searchSpec(qt_QString2TPtrC(typeface), 1);
if (bold)
searchSpec.iFontStyle.SetStrokeWeight(EStrokeWeightBold);
@@ -358,7 +350,7 @@ const QSymbianTypeFaceExtras *QSymbianFontDatabaseExtrasImplementation::extras(c
QScopedPointer<CFont, CFontFromScreenDeviceReleaser> sFont(font);
QSymbianTypeFaceExtras *extras = new QSymbianTypeFaceExtras(font);
sFont.take();
- extrasHash.insert(searchKey, extras);
+ m_extrasHash.insert(searchKey, extras);
} else {
const TInt err = m_store->GetNearestFontToDesignHeightInPixels(font, searchSpec);
Q_ASSERT(err == KErrNone && font);
@@ -372,20 +364,20 @@ const QSymbianTypeFaceExtras *QSymbianFontDatabaseExtrasImplementation::extras(c
const TOpenFontFaceAttrib* const attrib = openFont->FaceAttrib();
const QString foundKey =
QString((const QChar*)attrib->FullName().Ptr(), attrib->FullName().Length());
- if (!extrasHash.contains(foundKey)) {
+ if (!m_extrasHash.contains(foundKey)) {
QScopedPointer<CFont, CFontFromFontStoreReleaser> sFont(font);
QSymbianTypeFaceExtras *extras = new QSymbianTypeFaceExtras(font, openFont);
sFont.take();
m_extras.append(extras);
- extrasHash.insert(searchKey, extras);
- extrasHash.insert(foundKey, extras);
+ m_extrasHash.insert(searchKey, extras);
+ m_extrasHash.insert(foundKey, extras);
} else {
m_store->ReleaseFont(font);
- extrasHash.insert(searchKey, extrasHash.value(foundKey));
+ m_extrasHash.insert(searchKey, m_extrasHash.value(foundKey));
}
}
}
- return extrasHash.value(searchKey);
+ return m_extrasHash.value(searchKey);
}
void QSymbianFontDatabaseExtrasImplementation::removeAppFontData(
@@ -981,7 +973,7 @@ bool QFontDatabase::removeAllApplicationFonts()
bool QFontDatabase::supportsThreadedFontRendering()
{
- return QSymbianTypeFaceExtras::symbianFontTableApiAvailable();
+ return false;
}
static
diff --git a/src/gui/text/qfontengine_coretext.mm b/src/gui/text/qfontengine_coretext.mm
index 64d4a24..153451e 100644
--- a/src/gui/text/qfontengine_coretext.mm
+++ b/src/gui/text/qfontengine_coretext.mm
@@ -135,7 +135,7 @@ void QCoreTextFontEngineMulti::init(bool kerning)
attributeDict = CFDictionaryCreateMutable(0, 2,
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
- CFDictionaryAddValue(attributeDict, NSFontAttributeName, ctfont);
+ CFDictionaryAddValue(attributeDict, kCTFontAttributeName, ctfont);
if (!kerning) {
float zero = 0.0;
QCFType<CFNumberRef> noKern = CFNumberCreate(kCFAllocatorDefault, kCFNumberFloatType, &zero);
@@ -257,7 +257,7 @@ bool QCoreTextFontEngineMulti::stringToCMap(const QChar *str, int len, QGlyphLay
//NSLog(@"Dictionary %@", runAttribs);
if (!runAttribs)
runAttribs = attributeDict;
- CTFontRef runFont = static_cast<CTFontRef>(CFDictionaryGetValue(runAttribs, NSFontAttributeName));
+ CTFontRef runFont = static_cast<CTFontRef>(CFDictionaryGetValue(runAttribs, kCTFontAttributeName));
uint fontIndex = fontIndexForFont(runFont);
const QFontEngine *engine = engineAt(fontIndex);
fontIndex <<= 24;
@@ -547,7 +547,6 @@ glyph_metrics_t QCoreTextFontEngine::boundingBox(glyph_t glyph)
ret.xoff = ret.xoff.round();
ret.yoff = ret.yoff.round();
}
-
return ret;
}
@@ -723,7 +722,12 @@ QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition
QImage im(qRound(br.width) + 2, qRound(br.height) + 2, QImage::Format_RGB32);
im.fill(0);
- CGColorSpaceRef colorspace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
+ CGColorSpaceRef colorspace =
+#ifdef Q_WS_MAC
+ CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
+#else
+ CGColorSpaceCreateDeviceRGB();
+#endif
uint cgflags = kCGImageAlphaNoneSkipFirst;
#ifdef kCGBitmapByteOrder32Host //only needed because CGImage.h added symbols in the minor version
cgflags |= kCGBitmapByteOrder32Host;
diff --git a/src/gui/text/qfontengine_coretext_p.h b/src/gui/text/qfontengine_coretext_p.h
index efe8295..0a2ae1f 100644
--- a/src/gui/text/qfontengine_coretext_p.h
+++ b/src/gui/text/qfontengine_coretext_p.h
@@ -44,6 +44,12 @@
#include <private/qfontengine_p.h>
+#ifdef QT_NO_CORESERVICES
+#include <CoreText/CoreText.h>
+#include <CoreGraphics/CoreGraphics.h>
+#include <private/qcore_mac_p.h>
+#endif
+
#if !defined(Q_WS_MAC) || (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
class QRawFontPrivate;
diff --git a/src/gui/text/qtextcontrol.cpp b/src/gui/text/qtextcontrol.cpp
index e32e112..bde2c34 100644
--- a/src/gui/text/qtextcontrol.cpp
+++ b/src/gui/text/qtextcontrol.cpp
@@ -680,20 +680,30 @@ void QTextControlPrivate::extendWordwiseSelection(int suggestedNewPosition, qrea
if (!wordSelectionEnabled && (mouseXPosition < wordStartX || mouseXPosition > wordEndX))
return;
- // keep the already selected word even when moving to the left
- // (#39164)
- if (suggestedNewPosition < selectedWordOnDoubleClick.position())
- cursor.setPosition(selectedWordOnDoubleClick.selectionEnd());
- else
- cursor.setPosition(selectedWordOnDoubleClick.selectionStart());
+ if (wordSelectionEnabled) {
+ if (suggestedNewPosition < selectedWordOnDoubleClick.position()) {
+ cursor.setPosition(selectedWordOnDoubleClick.selectionEnd());
+ setCursorPosition(wordStartPos, QTextCursor::KeepAnchor);
+ } else {
+ cursor.setPosition(selectedWordOnDoubleClick.selectionStart());
+ setCursorPosition(wordEndPos, QTextCursor::KeepAnchor);
+ }
+ } else {
+ // keep the already selected word even when moving to the left
+ // (#39164)
+ if (suggestedNewPosition < selectedWordOnDoubleClick.position())
+ cursor.setPosition(selectedWordOnDoubleClick.selectionEnd());
+ else
+ cursor.setPosition(selectedWordOnDoubleClick.selectionStart());
- const qreal differenceToStart = mouseXPosition - wordStartX;
- const qreal differenceToEnd = wordEndX - mouseXPosition;
+ const qreal differenceToStart = mouseXPosition - wordStartX;
+ const qreal differenceToEnd = wordEndX - mouseXPosition;
- if (differenceToStart < differenceToEnd)
- setCursorPosition(wordStartPos, QTextCursor::KeepAnchor);
- else
- setCursorPosition(wordEndPos, QTextCursor::KeepAnchor);
+ if (differenceToStart < differenceToEnd)
+ setCursorPosition(wordStartPos, QTextCursor::KeepAnchor);
+ else
+ setCursorPosition(wordEndPos, QTextCursor::KeepAnchor);
+ }
if (interactionFlags & Qt::TextSelectableByMouse) {
#ifndef QT_NO_CLIPBOARD
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index 9f148ee..aa4a20d 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -2087,7 +2087,8 @@ void QTextEngine::justify(const QScriptLine &line)
}
}
- QFixed need = line.width - line.textWidth;
+ QFixed leading = leadingSpaceWidth(line);
+ QFixed need = line.width - line.textWidth - leading;
if (need < 0) {
// line overflows already!
const_cast<QScriptLine &>(line).justified = true;
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index 515915a..4fd6ddf 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -1928,12 +1928,8 @@ found:
if (line.textWidth > 0 && item < eng->layoutData->items.size())
eng->maxWidth += lbh.spaceData.textWidth;
- // In the latter case, text are drawn with trailing spaces at the beginning
- // of a line, so the naturalTextWidth should contain the space width
- if ((eng->option.flags() & QTextOption::IncludeTrailingSpaces) ||
- (line.width == QFIXED_MAX && eng->isRightToLeft())) {
+ if (eng->option.flags() & QTextOption::IncludeTrailingSpaces)
line.textWidth += lbh.spaceData.textWidth;
- }
if (lbh.spaceData.length) {
line.length += lbh.spaceData.length;
line.hasTrailingSpaces = true;
diff --git a/src/gui/text/text.pri b/src/gui/text/text.pri
index b6cdc52..1cfacf7 100644
--- a/src/gui/text/text.pri
+++ b/src/gui/text/text.pri
@@ -106,14 +106,17 @@ unix:x11 {
!embedded:!qpa:!x11:mac {
HEADERS += \
text/qfontengine_mac_p.h
- OBJECTIVE_HEADERS += \
- text/qfontengine_coretext_p.h
SOURCES += \
text/qfont_mac.cpp \
text/qrawfont_mac.cpp
OBJECTIVE_SOURCES += \
- text/qfontengine_coretext.mm \
text/qfontengine_mac.mm
+}
+!embedded:!x11:mac {
+ OBJECTIVE_HEADERS += \
+ text/qfontengine_coretext_p.h
+ OBJECTIVE_SOURCES += \
+ text/qfontengine_coretext.mm
contains(QT_CONFIG, harfbuzz) {
DEFINES += QT_ENABLE_HARFBUZZ_FOR_MAC
}
diff --git a/src/gui/widgets/qcombobox.cpp b/src/gui/widgets/qcombobox.cpp
index 41394e3..fc251bf 100644
--- a/src/gui/widgets/qcombobox.cpp
+++ b/src/gui/widgets/qcombobox.cpp
@@ -2497,7 +2497,7 @@ void QComboBox::showPopup()
} else {
TRect staConTopRect = TRect();
AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EStaconTop, staConTopRect);
- listRect.setWidth(listRect.height());
+ listRect.setWidth(screen.height());
//by default popup is centered on screen in landscape
listRect.moveCenter(screen.center());
if (staConTopRect.IsEmpty() && AknLayoutUtils::CbaLocation() != AknLayoutUtils::EAknCbaLocationBottom) {
diff --git a/src/gui/widgets/qlinecontrol.cpp b/src/gui/widgets/qlinecontrol.cpp
index a8031e7..b6e2f90 100644
--- a/src/gui/widgets/qlinecontrol.cpp
+++ b/src/gui/widgets/qlinecontrol.cpp
@@ -60,7 +60,7 @@
QT_BEGIN_NAMESPACE
#ifdef QT_GUI_PASSWORD_ECHO_DELAY
-static const int qt_passwordEchoDelay = QT_GUI_PASSWORD_ECHO_DELAY;
+static int qt_passwordEchoDelay = QT_GUI_PASSWORD_ECHO_DELAY;
#endif
/*!
@@ -93,8 +93,8 @@ void QLineControl::updateDisplayText(bool forceUpdate)
if (m_echoMode == QLineEdit::Password) {
str.fill(m_passwordCharacter);
#ifdef QT_GUI_PASSWORD_ECHO_DELAY
- if (m_passwordEchoTimer != 0 && m_cursor > 0 && m_cursor <= m_text.length()) {
- int cursor = m_cursor - 1;
+ if (m_passwordEchoTimer != 0 && !str.isEmpty()) {
+ int cursor = m_text.length() - 1;
QChar uc = m_text.at(cursor);
str[cursor] = uc;
if (cursor > 0 && uc.unicode() >= 0xdc00 && uc.unicode() < 0xe000) {
diff --git a/src/gui/widgets/qtextedit.cpp b/src/gui/widgets/qtextedit.cpp
index 61d4fed..2670089 100644
--- a/src/gui/widgets/qtextedit.cpp
+++ b/src/gui/widgets/qtextedit.cpp
@@ -2472,8 +2472,6 @@ bool QTextEdit::find(const QString &exp, QTextDocument::FindFlags options)
and the text edit will try to guess the right format.
Use setHtml() or setPlainText() directly to avoid text edit's guessing.
-
- \sa toPlainText(), toHtml()
*/
void QTextEdit::setText(const QString &text)
{
diff --git a/src/imports/shaders/shadereffectitem.cpp b/src/imports/shaders/shadereffectitem.cpp
index ca5c9a3..b954e5a 100644..100755
--- a/src/imports/shaders/shadereffectitem.cpp
+++ b/src/imports/shaders/shadereffectitem.cpp
@@ -199,8 +199,13 @@ Rectangle {
*/
+#ifdef Q_OS_SYMBIAN
+#define OBSERVE_GL_CONTEXT_LOSS 1
+#endif
+
ShaderEffectItem::ShaderEffectItem(QDeclarativeItem *parent)
: QDeclarativeItem(parent)
+ , m_program(0)
, m_meshResolution(1, 1)
, m_geometry(QSGGeometry::defaultAttributes_TexturedPoint2D(), 4)
, m_blending(true)
@@ -214,15 +219,21 @@ ShaderEffectItem::ShaderEffectItem(QDeclarativeItem *parent)
, m_hasShaderPrograms(false)
, m_mirrored(false)
, m_defaultVertexShader(true)
+ , m_contextObserver(0)
{
setFlag(QGraphicsItem::ItemHasNoContents, false);
connect(this, SIGNAL(visibleChanged()), this, SLOT(handleVisibilityChange()));
m_active = isVisible();
+
+#ifndef OBSERVE_GL_CONTEXT_LOSS
+ m_program = new QGLShaderProgram(this);
+#endif
}
ShaderEffectItem::~ShaderEffectItem()
{
reset();
+ delete m_contextObserver;
}
@@ -402,10 +413,38 @@ void ShaderEffectItem::renderEffect(QPainter *painter, const QMatrix4x4 &matrix)
if (!painter || !painter->device())
return;
- if (!m_program.isLinked() || m_program_dirty)
+#ifdef OBSERVE_GL_CONTEXT_LOSS
+ QGLContext *context = const_cast <QGLContext*> (QGLContext::currentContext());
+ if (!m_program || !m_contextObserver || !m_contextObserver->isValid()) {
+ // Context has changed, re-create QGLShaderProgram
+ if (context) {
+ delete m_program;
+ m_program = 0;
+
+ delete m_contextObserver;
+ m_contextObserver = 0;
+
+ m_program = new QGLShaderProgram(this);
+ m_contextObserver = new QGLFramebufferObject(QSize(2,2));
+
+ if (!m_contextObserver || !m_program) {
+ delete m_program;
+ m_program = 0;
+ delete m_contextObserver;
+ m_contextObserver = 0;
+ qWarning() << "ShaderEffectItem::renderEffect - Creating QGLShaderProgram or QGLFrameBufferObject failed!";
+ }
+ }
+ }
+#endif
+
+ if (!m_program)
+ return;
+
+ if (!m_program->isLinked() || m_program_dirty)
updateShaderProgram();
- m_program.bind();
+ m_program->bind();
QMatrix4x4 combinedMatrix;
combinedMatrix.scale(2.0 / painter->device()->width(), -2.0 / painter->device()->height(), 1.0);
@@ -414,7 +453,7 @@ void ShaderEffectItem::renderEffect(QPainter *painter, const QMatrix4x4 &matrix)
updateEffectState(combinedMatrix);
for (int i = 0; i < m_attributeNames.size(); ++i) {
- m_program.enableAttributeArray(m_geometry.attributes()[i].position);
+ m_program->enableAttributeArray(m_geometry.attributes()[i].position);
}
bindGeometry();
@@ -452,11 +491,14 @@ void ShaderEffectItem::renderEffect(QPainter *painter, const QMatrix4x4 &matrix)
glDisable(GL_DEPTH_TEST);
for (int i = 0; i < m_attributeNames.size(); ++i)
- m_program.disableAttributeArray(m_geometry.attributes()[i].position);
+ m_program->disableAttributeArray(m_geometry.attributes()[i].position);
}
void ShaderEffectItem::updateEffectState(const QMatrix4x4 &matrix)
{
+ if (!m_program)
+ return;
+
for (int i = m_sources.size() - 1; i >= 0; --i) {
const ShaderEffectItem::SourceData &source = m_sources.at(i);
if (!source.source)
@@ -467,10 +509,10 @@ void ShaderEffectItem::updateEffectState(const QMatrix4x4 &matrix)
}
if (m_respectsOpacity)
- m_program.setUniformValue("qt_Opacity", static_cast<float> (effectiveOpacity()));
+ m_program->setUniformValue("qt_Opacity", static_cast<float> (effectiveOpacity()));
if (m_respectsMatrix){
- m_program.setUniformValue("qt_ModelViewProjectionMatrix", matrix);
+ m_program->setUniformValue("qt_ModelViewProjectionMatrix", matrix);
}
QSet<QByteArray>::const_iterator it;
@@ -480,37 +522,37 @@ void ShaderEffectItem::updateEffectState(const QMatrix4x4 &matrix)
switch (v.type()) {
case QVariant::Color:
- m_program.setUniformValue(name.constData(), qvariant_cast<QColor>(v));
+ m_program->setUniformValue(name.constData(), qvariant_cast<QColor>(v));
break;
case QVariant::Double:
- m_program.setUniformValue(name.constData(), (float) qvariant_cast<double>(v));
+ m_program->setUniformValue(name.constData(), (float) qvariant_cast<double>(v));
break;
case QVariant::Transform:
- m_program.setUniformValue(name.constData(), qvariant_cast<QTransform>(v));
+ m_program->setUniformValue(name.constData(), qvariant_cast<QTransform>(v));
break;
case QVariant::Int:
- m_program.setUniformValue(name.constData(), v.toInt());
+ m_program->setUniformValue(name.constData(), GLint(v.toInt()));
break;
case QVariant::Bool:
- m_program.setUniformValue(name.constData(), GLint(v.toBool()));
+ m_program->setUniformValue(name.constData(), GLint(v.toBool()));
break;
case QVariant::Size:
case QVariant::SizeF:
- m_program.setUniformValue(name.constData(), v.toSizeF());
+ m_program->setUniformValue(name.constData(), v.toSizeF());
break;
case QVariant::Point:
case QVariant::PointF:
- m_program.setUniformValue(name.constData(), v.toPointF());
+ m_program->setUniformValue(name.constData(), v.toPointF());
break;
case QVariant::Rect:
case QVariant::RectF:
{
QRectF r = v.toRectF();
- m_program.setUniformValue(name.constData(), r.x(), r.y(), r.width(), r.height());
+ m_program->setUniformValue(name.constData(), r.x(), r.y(), r.width(), r.height());
}
break;
case QVariant::Vector3D:
- m_program.setUniformValue(name.constData(), qvariant_cast<QVector3D>(v));
+ m_program->setUniformValue(name.constData(), qvariant_cast<QVector3D>(v));
break;
default:
break;
@@ -538,6 +580,9 @@ static inline int size_of_type(GLenum type)
void ShaderEffectItem::bindGeometry()
{
+ if (!m_program)
+ return;
+
char const *const *attrNames = m_attributeNames.constData();
int offset = 0;
for (int j = 0; j < m_attributeNames.size(); ++j) {
@@ -554,7 +599,7 @@ void ShaderEffectItem::bindGeometry()
if (normalize)
qWarning() << "ShaderEffectItem::bindGeometry() - non supported attribute type!";
- m_program.setAttributeArray(a.position, (GLfloat*) (((char*) m_geometry.vertexData()) + offset), a.tupleSize, m_geometry.stride());
+ m_program->setAttributeArray(a.position, (GLfloat*) (((char*) m_geometry.vertexData()) + offset), a.tupleSize, m_geometry.stride());
//glVertexAttribPointer(a.position, a.tupleSize, a.type, normalize, m_geometry.stride(), (char *) m_geometry.vertexData() + offset);
offset += a.tupleSize * size_of_type(a.type);
}
@@ -637,6 +682,16 @@ void ShaderEffectItem::setActive(bool enable)
}
}
+ // QGLShaderProgram is deleted when not active (to minimize GPU memory usage).
+#ifdef OBSERVE_GL_CONTEXT_LOSS
+ if (!m_active && m_program) {
+ delete m_program;
+ m_program = 0;
+ delete m_contextObserver;
+ m_contextObserver = 0;
+ }
+#endif
+
emit activeChanged();
markDirty();
}
@@ -756,7 +811,9 @@ void ShaderEffectItem::reset()
{
disconnectPropertySignals();
- m_program.removeAllShaders();
+ if (m_program)
+ m_program->removeAllShaders();
+
m_attributeNames.clear();
m_uniformNames.clear();
for (int i = 0; i < m_sources.size(); ++i) {
@@ -801,6 +858,9 @@ void ShaderEffectItem::updateProperties()
void ShaderEffectItem::updateShaderProgram()
{
+ if (!m_program)
+ return;
+
QString vertexCode = m_vertex_code;
QString fragmentCode = m_fragment_code;
@@ -810,16 +870,16 @@ void ShaderEffectItem::updateShaderProgram()
if (fragmentCode.isEmpty())
fragmentCode = QString::fromLatin1(qt_default_fragment_code);
- m_program.addShaderFromSourceCode(QGLShader::Vertex, vertexCode);
- m_program.addShaderFromSourceCode(QGLShader::Fragment, fragmentCode);
+ m_program->addShaderFromSourceCode(QGLShader::Vertex, vertexCode);
+ m_program->addShaderFromSourceCode(QGLShader::Fragment, fragmentCode);
for (int i = 0; i < m_attributeNames.size(); ++i) {
- m_program.bindAttributeLocation(m_attributeNames.at(i), m_geometry.attributes()[i].position);
+ m_program->bindAttributeLocation(m_attributeNames.at(i), m_geometry.attributes()[i].position);
}
- if (!m_program.link()) {
+ if (!m_program->link()) {
qWarning("ShaderEffectItem: Shader compilation failed:");
- qWarning() << m_program.log();
+ qWarning() << m_program->log();
}
if (!m_attributeNames.contains(qt_postion_attribute_name))
@@ -829,10 +889,10 @@ void ShaderEffectItem::updateShaderProgram()
if (!m_respectsMatrix)
qWarning("ShaderEffectItem: Missing reference to \'qt_ModelViewProjectionMatrix\'.");
- if (m_program.isLinked()) {
- m_program.bind();
+ if (m_program->isLinked()) {
+ m_program->bind();
for (int i = 0; i < m_sources.size(); ++i)
- m_program.setUniformValue(m_sources.at(i).name.constData(), i);
+ m_program->setUniformValue(m_sources.at(i).name.constData(), (GLint) i);
}
m_program_dirty = false;
diff --git a/src/imports/shaders/shadereffectitem.h b/src/imports/shaders/shadereffectitem.h
index aebe897..6c225a2 100644
--- a/src/imports/shaders/shadereffectitem.h
+++ b/src/imports/shaders/shadereffectitem.h
@@ -115,7 +115,7 @@ private:
private:
QString m_fragment_code;
QString m_vertex_code;
- QGLShaderProgram m_program;
+ QGLShaderProgram* m_program;
QVector<const char *> m_attributeNames;
QSet<QByteArray> m_uniformNames;
QSize m_meshResolution;
@@ -143,6 +143,8 @@ private:
bool m_hasShaderPrograms : 1;
bool m_mirrored : 1;
bool m_defaultVertexShader : 1;
+
+ QGLFramebufferObject* m_contextObserver;
};
QT_END_HEADER
diff --git a/src/imports/shaders/shadereffectsource.cpp b/src/imports/shaders/shadereffectsource.cpp
index 7916538..f7a8a93 100644
--- a/src/imports/shaders/shadereffectsource.cpp
+++ b/src/imports/shaders/shadereffectsource.cpp
@@ -160,15 +160,11 @@ void ShaderEffectSource::setSourceRect(const QRectF &rect)
return;
m_sourceRect = rect;
updateSizeAndTexture();
- updateBackbuffer();
emit sourceRectChanged();
emit repaintRequired();
- if (m_sourceItem) {
- ShaderEffect* effect = qobject_cast<ShaderEffect*> (m_sourceItem->graphicsEffect());
- if (effect)
- effect->m_changed = true;
- }
+ m_dirtyTexture = true;
+ markSourceItemDirty();
}
/*!
@@ -192,11 +188,8 @@ void ShaderEffectSource::setTextureSize(const QSize &size)
emit textureSizeChanged();
emit repaintRequired();
- if (m_sourceItem) {
- ShaderEffect* effect = qobject_cast<ShaderEffect*> (m_sourceItem->graphicsEffect());
- if (effect)
- effect->m_changed = true;
- }
+ m_dirtyTexture = true;
+ markSourceItemDirty();
}
/*!
@@ -264,8 +257,10 @@ void ShaderEffectSource::setWrapMode(WrapMode mode)
return;
m_wrapMode = mode;
- updateBackbuffer();
emit wrapModeChanged();
+
+ m_dirtyTexture = true;
+ markSourceItemDirty();
}
/*!
@@ -284,7 +279,7 @@ void ShaderEffectSource::grab()
emit repaintRequired();
}
-void ShaderEffectSource::bind() const
+void ShaderEffectSource::bind()
{
GLint filtering = smooth() ? GL_LINEAR : GL_NEAREST;
GLuint hwrap = (m_wrapMode == Repeat || m_wrapMode == RepeatHorizontally) ? GL_REPEAT : GL_CLAMP_TO_EDGE;
@@ -293,9 +288,13 @@ void ShaderEffectSource::bind() const
#if !defined(QT_OPENGL_ES_2)
glEnable(GL_TEXTURE_2D);
#endif
- if (m_fbo) {
+
+ if (m_fbo && m_fbo->isValid()) {
glBindTexture(GL_TEXTURE_2D, m_fbo->texture());
} else {
+ m_dirtyTexture = true;
+ emit repaintRequired();
+ markSourceItemDirty();
glBindTexture(GL_TEXTURE_2D, 0);
}
@@ -324,7 +323,7 @@ void ShaderEffectSource::derefFromEffectItem()
void ShaderEffectSource::updateBackbuffer()
{
- if (!m_sourceItem)
+ if (!m_sourceItem || !QGLContext::currentContext())
return;
// Multisampling is not (for now) supported.
@@ -340,7 +339,7 @@ void ShaderEffectSource::updateBackbuffer()
if (!m_fbo) {
m_fbo = new ShaderEffectBuffer(size, format);
} else {
- if (m_fbo->size() != size || m_fbo->format().internalTextureFormat() != GLenum(m_format)) {
+ if (!m_fbo->isValid() || m_fbo->size() != size || m_fbo->format().internalTextureFormat() != GLenum(m_format)) {
delete m_fbo;
m_fbo = 0;
m_fbo = new ShaderEffectBuffer(size, format);
@@ -367,6 +366,16 @@ void ShaderEffectSource::markSourceSizeDirty()
emit repaintRequired();
}
+void ShaderEffectSource::markSourceItemDirty()
+{
+ m_dirtyTexture = true;
+ if (m_sourceItem) {
+ ShaderEffect* effect = qobject_cast<ShaderEffect*> (m_sourceItem->graphicsEffect());
+ if (effect)
+ effect->m_changed = true;
+ }
+}
+
void ShaderEffectSource::updateSizeAndTexture()
{
if (m_sourceItem) {
@@ -377,7 +386,7 @@ void ShaderEffectSource::updateSizeAndTexture()
size.setWidth(1);
if (size.height() < 1)
size.setHeight(1);
- if (m_fbo && m_fbo->size() != size) {
+ if (m_fbo && (m_fbo->size() != size || !m_fbo->isValid())) {
delete m_fbo;
m_fbo = 0;
delete m_multisampledFbo;
diff --git a/src/imports/shaders/shadereffectsource.h b/src/imports/shaders/shadereffectsource.h
index 0f03a6a..af8a815 100644
--- a/src/imports/shaders/shadereffectsource.h
+++ b/src/imports/shaders/shadereffectsource.h
@@ -99,7 +99,7 @@ public:
void setWrapMode(WrapMode mode);
bool isActive() const { return m_refs; }
- void bind() const;
+ void bind();
void refFromEffectItem();
void derefFromEffectItem();
void updateBackbuffer();
@@ -124,6 +124,7 @@ Q_SIGNALS:
public Q_SLOTS:
void markSceneGraphDirty();
void markSourceSizeDirty();
+ void markSourceItemDirty();
private:
void updateSizeAndTexture();
diff --git a/src/opengl/qpaintengine_opengl.cpp b/src/opengl/qpaintengine_opengl.cpp
index 71ed690..0f33cab 100644
--- a/src/opengl/qpaintengine_opengl.cpp
+++ b/src/opengl/qpaintengine_opengl.cpp
@@ -4536,11 +4536,14 @@ struct QGLGlyphCoord {
};
struct QGLFontTexture {
+ QGLFontTexture() : data(0) { }
+ ~QGLFontTexture() { free(data); }
int x_offset; // glyph offset within the
int y_offset;
GLuint texture;
int width;
int height;
+ uchar *data;
};
typedef QHash<glyph_t, QGLGlyphCoord*> QGLGlyphHash;
@@ -4563,7 +4566,7 @@ public:
QGLGlyphCoord *lookup(QFontEngine *, glyph_t);
void cacheGlyphs(QGLContext *, QFontEngine *, glyph_t *glyphs, int numGlyphs);
void cleanCache();
- void allocTexture(int width, int height, GLuint texture);
+ void allocTexture(QGLFontTexture *);
public slots:
void cleanupContext(const QGLContext *);
@@ -4681,19 +4684,18 @@ void QGLGlyphCache::cleanCache()
qt_context_cache.clear();
}
-void QGLGlyphCache::allocTexture(int width, int height, GLuint texture)
+void QGLGlyphCache::allocTexture(QGLFontTexture *font_tex)
{
- uchar *tex_data = (uchar *) malloc(width*height*2);
- memset(tex_data, 0, width*height*2);
- glBindTexture(GL_TEXTURE_2D, texture);
+ font_tex->data = (uchar *) malloc(font_tex->width*font_tex->height*2);
+ memset(font_tex->data, 0, font_tex->width*font_tex->height*2);
+ glBindTexture(GL_TEXTURE_2D, font_tex->texture);
#ifndef QT_OPENGL_ES
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE8_ALPHA8,
- width, height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, tex_data);
+ font_tex->width, font_tex->height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, font_tex->data);
#else
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA,
- width, height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, tex_data);
+ font_tex->width, font_tex->height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, font_tex->data);
#endif
- free(tex_data);
}
#if 0
@@ -4777,13 +4779,13 @@ void QGLGlyphCache::cacheGlyphs(QGLContext *context, QFontEngine *fontEngine,
Q_ASSERT(max_tex_size > 0);
if (tex_width > max_tex_size)
tex_width = max_tex_size;
- allocTexture(tex_width, tex_height, font_texture);
font_tex = new QGLFontTexture;
font_tex->texture = font_texture;
font_tex->x_offset = x_margin;
font_tex->y_offset = y_margin;
font_tex->width = tex_width;
font_tex->height = tex_height;
+ allocTexture(font_tex);
// qDebug() << "new font tex - width:" << tex_width << "height:"<< tex_height
// << hex << "tex id:" << font_tex->texture << "key:" << font_key << "num cached:" << qt_font_textures.size();
qt_font_textures.insert(font_key, font_tex);
@@ -4806,21 +4808,19 @@ void QGLGlyphCache::cacheGlyphs(QGLContext *context, QFontEngine *fontEngine,
font_tex->y_offset += strip_height;
if (font_tex->y_offset >= font_tex->height) {
// get hold of the old font texture
- uchar *old_tex_data = (uchar *) malloc(font_tex->width*font_tex->height*2);
+ uchar *old_tex_data = font_tex->data;
int old_tex_height = font_tex->height;
-#ifndef QT_OPENGL_ES
- glGetTexImage(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, old_tex_data);
-#endif
// realloc a larger texture
glDeleteTextures(1, &font_tex->texture);
glGenTextures(1, &font_tex->texture);
font_tex->height = qt_next_power_of_two(font_tex->height + strip_height);
- allocTexture(font_tex->width, font_tex->height, font_tex->texture);
+ allocTexture(font_tex);
// write back the old texture data
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, font_tex->width, old_tex_height,
GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, old_tex_data);
+ memcpy(font_tex->data, old_tex_data, font_tex->width*old_tex_height*2);
free(old_tex_data);
// update the texture coords and the y offset for the existing glyphs in
@@ -4868,8 +4868,10 @@ void QGLGlyphCache::cacheGlyphs(QGLContext *context, QFontEngine *fontEngine,
}
#endif
glyph_im = glyph_im.convertToFormat(QImage::Format_Indexed8);
+ int cacheLineStart = (font_tex->x_offset + font_tex->y_offset*font_tex->width)*2;
for (int y=0; y<glyph_im.height(); ++y) {
uchar *s = (uchar *) glyph_im.scanLine(y);
+ int lineStart = idx;
for (int x=0; x<glyph_im.width(); ++x) {
uchar alpha = is8BitGray ? *s : qAlpha(glyph_im.color(*s));
tex_data[idx] = alpha;
@@ -4879,6 +4881,9 @@ void QGLGlyphCache::cacheGlyphs(QGLContext *context, QFontEngine *fontEngine,
}
if (glyph_im.width()%2 != 0)
idx += 2;
+ // update cache
+ memcpy(font_tex->data+cacheLineStart, tex_data+lineStart, glyph_width*2);
+ cacheLineStart += font_tex->width*2;
}
glTexSubImage2D(GL_TEXTURE_2D, 0, font_tex->x_offset, font_tex->y_offset,
glyph_width, glyph_im.height(),
@@ -4950,7 +4955,7 @@ void QOpenGLPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
bool antialias = !(textItem->fontEngine()->fontDef.styleStrategy & QFont::NoAntialias)
- && (d->matrix.type() > QTransform::TxTranslate);
+ && (d->matrix.type() > QTransform::TxTranslate);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, antialias ? GL_LINEAR : GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, antialias ? GL_LINEAR : GL_NEAREST);
diff --git a/src/plugins/platforms/uikit/README b/src/plugins/platforms/uikit/README
index 795e72a..a8031e6 100644
--- a/src/plugins/platforms/uikit/README
+++ b/src/plugins/platforms/uikit/README
@@ -7,8 +7,8 @@ There have no tests been run whatsoever.
* Open GL ES 1/2 based backend
* Single touch
-* Text/font drawing using font shipped with application
-* Text input (Opening/closing software input panel.
+* Text/font drawing using system fonts (CoreText)
+* Text input (Opening/closing software input panel
Application has to perform necessary layout changes itself.)
* Initial showing/hiding of status bar (as defined in the Info.plist)
* Interface orientations as defined in the Info.plist of the application
@@ -21,7 +21,16 @@ Building/Deploying the application has to be done in Xcode. You need to generate
necessary moc_ files in advance and add these to the Xcode project. More details
on the Xcode setup see below.
-1) Build Qt
+1) Known Issues
+
+* Console message
+ "QEventDispatcherUNIX: internal error, wakeUps.testAndSetRelease(1, 0) failed!"
+ seems to appear sometimes for some people for unknown reasons and
+ unknown effect
+* JavaScript XmlHttpRequest doesn't work reliably even though networking
+ in general seems to
+
+2) Build Qt
The example Xcode project in the examples subdirectory requires that you do shadow
builds of Qt in qt-lighthouse-ios-simulator and qt-lighthouse-ios-device directories
@@ -43,7 +52,7 @@ Device:
-------
configure -qpa -xplatform qpa/macx-iphonedevice-g++ -arch armv7 -no-neon -developer-build -release -opengl es2 -no-accessibility -no-qt3support -no-multimedia -no-phonon-backend -no-webkit -no-scripttools -no-openssl -no-sql-mysql -no-sql-odbc -no-cups -no-iconv -no-dbus -static -nomake tools -nomake demos -nomake docs -nomake examples -nomake translations
-2) XCode setup:
+3) XCode setup:
- there are examples in the examples subdirectory of the platform plugin
- to create something fresh do something like:
- Xcode: Create a "View-based Appplication"
@@ -64,5 +73,5 @@ configure -qpa -xplatform qpa/macx-iphonedevice-g++ -arch armv7 -no-neon -develo
and call Phonon::Factory::setBackend(qt_plugin_instance_phonon_av());
Link to libphonon and to plugins/phonon/phonon_av
-3) Done: Build and Run.
+4) Done: Build and Run.
diff --git a/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo-Info.plist b/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo-Info.plist
index 5bc1ac9..3c45823 100644
--- a/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo-Info.plist
+++ b/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo-Info.plist
@@ -6,6 +6,8 @@
<string>English</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
+ <key>CFBundleDocumentTypes</key>
+ <array/>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
@@ -20,6 +22,8 @@
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
+ <key>CFBundleURLTypes</key>
+ <array/>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
@@ -37,5 +41,9 @@
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
+ <key>UTExportedTypeDeclarations</key>
+ <array/>
+ <key>UTImportedTypeDeclarations</key>
+ <array/>
</dict>
</plist>
diff --git a/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo.xcodeproj/project.pbxproj b/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo.xcodeproj/project.pbxproj
index b564ef9..dedc462 100755
--- a/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo.xcodeproj/project.pbxproj
+++ b/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo.xcodeproj/project.pbxproj
@@ -17,13 +17,14 @@
D307DEB213EBCF5500399BD4 /* libQtOpenGL.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DEA913EBCF5500399BD4 /* libQtOpenGL.a */; };
D307DEB313EBCF5500399BD4 /* libQtScript.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DEAA13EBCF5500399BD4 /* libQtScript.a */; };
D307DEB413EBCF5500399BD4 /* libQtSql.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DEAB13EBCF5500399BD4 /* libQtSql.a */; };
- D307DEB513EBCF5500399BD4 /* libQtXml.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DEAC13EBCF5500399BD4 /* libQtXml.a */; };
D307DEB613EBCF5500399BD4 /* libQtXmlPatterns.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DEAD13EBCF5500399BD4 /* libQtXmlPatterns.a */; };
D307DEB813EBCF6400399BD4 /* libquikit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DEB713EBCF6400399BD4 /* libquikit.a */; };
D333CCF213B88A4D0070E08E /* moc_qmlapplicationviewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D333CCEF13B88A4D0070E08E /* moc_qmlapplicationviewer.cpp */; };
D333CCF313B88A4D0070E08E /* moc_qmlapplicationviewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D333CCEF13B88A4D0070E08E /* moc_qmlapplicationviewer.cpp */; };
D333CCF413B88A4D0070E08E /* qmlapplicationviewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D333CCF013B88A4D0070E08E /* qmlapplicationviewer.cpp */; };
D333CCF513B88A4D0070E08E /* qmlapplicationviewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D333CCF013B88A4D0070E08E /* qmlapplicationviewer.cpp */; };
+ D36D346513F3CD7E00EC5A41 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D36D346413F3CD7E00EC5A41 /* CoreText.framework */; };
+ D36D346613F3CD8800EC5A41 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D36D346413F3CD7E00EC5A41 /* CoreText.framework */; };
D3A51610134B03DE00E30E2F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3A5160F134B03DE00E30E2F /* OpenGLES.framework */; };
D3A51612134B03E900E30E2F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3A51611134B03E900E30E2F /* QuartzCore.framework */; };
D3A51615134B041500E30E2F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3A51611134B03E900E30E2F /* QuartzCore.framework */; };
@@ -36,8 +37,6 @@
D3CAA7F213264F52008BB877 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; };
D3CAA7FA13264F8A008BB877 /* libz.1.2.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D3CAA7F913264F8A008BB877 /* libz.1.2.3.dylib */; };
D3CAA81113264FF0008BB877 /* libz.1.2.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D3CAA7F913264F8A008BB877 /* libz.1.2.3.dylib */; };
- D3CAA88A132652E5008BB877 /* fonts in Resources */ = {isa = PBXBuildFile; fileRef = D3CAA836132652E5008BB877 /* fonts */; };
- D3CAA88B132652E5008BB877 /* fonts in Resources */ = {isa = PBXBuildFile; fileRef = D3CAA836132652E5008BB877 /* fonts */; };
D3D815F31329339300CDE422 /* flickr in Resources */ = {isa = PBXBuildFile; fileRef = D3D815D31329339300CDE422 /* flickr */; };
D3D815F4132933AB00CDE422 /* flickr in Resources */ = {isa = PBXBuildFile; fileRef = D3D815D31329339300CDE422 /* flickr */; };
D3D81758132A184300CDE422 /* libQtCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D81752132A184300CDE422 /* libQtCore.a */; };
@@ -46,7 +45,6 @@
D3D8175B132A184300CDE422 /* libQtNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D81755132A184300CDE422 /* libQtNetwork.a */; };
D3D8175C132A184300CDE422 /* libQtScript.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D81756132A184300CDE422 /* libQtScript.a */; };
D3D8175D132A184300CDE422 /* libQtSql.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D81757132A184300CDE422 /* libQtSql.a */; };
- D3D81760132A185A00CDE422 /* libQtXml.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D8175E132A185A00CDE422 /* libQtXml.a */; };
D3D81761132A185A00CDE422 /* libQtXmlPatterns.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D8175F132A185A00CDE422 /* libQtXmlPatterns.a */; };
D3D81763132A186B00CDE422 /* libquikit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D81762132A186B00CDE422 /* libquikit.a */; };
/* End PBXBuildFile section */
@@ -65,19 +63,18 @@
D307DEA913EBCF5500399BD4 /* libQtOpenGL.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtOpenGL.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtOpenGL.a"; sourceTree = "<group>"; };
D307DEAA13EBCF5500399BD4 /* libQtScript.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtScript.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtScript.a"; sourceTree = "<group>"; };
D307DEAB13EBCF5500399BD4 /* libQtSql.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtSql.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtSql.a"; sourceTree = "<group>"; };
- D307DEAC13EBCF5500399BD4 /* libQtXml.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtXml.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtXml.a"; sourceTree = "<group>"; };
D307DEAD13EBCF5500399BD4 /* libQtXmlPatterns.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtXmlPatterns.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtXmlPatterns.a"; sourceTree = "<group>"; };
D307DEB713EBCF6400399BD4 /* libquikit.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libquikit.a; path = "../../../../../../../qt-lighthouse-ios-simulator/plugins/platforms/libquikit.a"; sourceTree = "<group>"; };
D333CCEF13B88A4D0070E08E /* moc_qmlapplicationviewer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = moc_qmlapplicationviewer.cpp; path = ../share/qmlapplicationviewer/moc_qmlapplicationviewer.cpp; sourceTree = "<group>"; };
D333CCF013B88A4D0070E08E /* qmlapplicationviewer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = qmlapplicationviewer.cpp; path = ../share/qmlapplicationviewer/qmlapplicationviewer.cpp; sourceTree = "<group>"; };
D333CCF113B88A4D0070E08E /* qmlapplicationviewer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = qmlapplicationviewer.h; path = ../share/qmlapplicationviewer/qmlapplicationviewer.h; sourceTree = "<group>"; };
+ D36D346413F3CD7E00EC5A41 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
D3A5160F134B03DE00E30E2F /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
D3A51611134B03E900E30E2F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
D3A51617134B042A00E30E2F /* libQtOpenGL.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtOpenGL.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtOpenGL.a"; sourceTree = "<group>"; };
D3CAA7C713264AAD008BB877 /* main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; };
D3CAA7F613264F52008BB877 /* flickrdemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = flickrdemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
D3CAA7F913264F8A008BB877 /* libz.1.2.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.1.2.3.dylib; path = usr/lib/libz.1.2.3.dylib; sourceTree = SDKROOT; };
- D3CAA836132652E5008BB877 /* fonts */ = {isa = PBXFileReference; lastKnownFileType = folder; name = fonts; path = ../../../../../../lib/fonts; sourceTree = SOURCE_ROOT; };
D3D815D31329339300CDE422 /* flickr */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flickr; path = ../../../../../../demos/declarative/flickr; sourceTree = SOURCE_ROOT; };
D3D81752132A184300CDE422 /* libQtCore.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtCore.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtCore.a"; sourceTree = SOURCE_ROOT; };
D3D81753132A184300CDE422 /* libQtDeclarative.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtDeclarative.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtDeclarative.a"; sourceTree = SOURCE_ROOT; };
@@ -85,7 +82,6 @@
D3D81755132A184300CDE422 /* libQtNetwork.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtNetwork.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtNetwork.a"; sourceTree = SOURCE_ROOT; };
D3D81756132A184300CDE422 /* libQtScript.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtScript.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtScript.a"; sourceTree = SOURCE_ROOT; };
D3D81757132A184300CDE422 /* libQtSql.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtSql.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtSql.a"; sourceTree = SOURCE_ROOT; };
- D3D8175E132A185A00CDE422 /* libQtXml.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtXml.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtXml.a"; sourceTree = SOURCE_ROOT; };
D3D8175F132A185A00CDE422 /* libQtXmlPatterns.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtXmlPatterns.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtXmlPatterns.a"; sourceTree = SOURCE_ROOT; };
D3D81762132A186B00CDE422 /* libquikit.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libquikit.a; path = "../../../../../../../qt-lighthouse-ios-device/plugins/platforms/libquikit.a"; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */
@@ -95,6 +91,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D36D346613F3CD8800EC5A41 /* CoreText.framework in Frameworks */,
D3A51612134B03E900E30E2F /* QuartzCore.framework in Frameworks */,
D3A51610134B03DE00E30E2F /* OpenGLES.framework in Frameworks */,
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
@@ -108,7 +105,6 @@
D307DEB213EBCF5500399BD4 /* libQtOpenGL.a in Frameworks */,
D307DEB313EBCF5500399BD4 /* libQtScript.a in Frameworks */,
D307DEB413EBCF5500399BD4 /* libQtSql.a in Frameworks */,
- D307DEB513EBCF5500399BD4 /* libQtXml.a in Frameworks */,
D307DEB613EBCF5500399BD4 /* libQtXmlPatterns.a in Frameworks */,
D307DEB813EBCF6400399BD4 /* libquikit.a in Frameworks */,
);
@@ -118,6 +114,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D36D346513F3CD7E00EC5A41 /* CoreText.framework in Frameworks */,
D3A51618134B042A00E30E2F /* libQtOpenGL.a in Frameworks */,
D3CAA7F013264F52008BB877 /* Foundation.framework in Frameworks */,
D3CAA7F113264F52008BB877 /* UIKit.framework in Frameworks */,
@@ -131,7 +128,6 @@
D3D8175B132A184300CDE422 /* libQtNetwork.a in Frameworks */,
D3D8175C132A184300CDE422 /* libQtScript.a in Frameworks */,
D3D8175D132A184300CDE422 /* libQtSql.a in Frameworks */,
- D3D81760132A185A00CDE422 /* libQtXml.a in Frameworks */,
D3D81761132A185A00CDE422 /* libQtXmlPatterns.a in Frameworks */,
D3D81763132A186B00CDE422 /* libquikit.a in Frameworks */,
);
@@ -174,7 +170,6 @@
isa = PBXGroup;
children = (
D3D815D31329339300CDE422 /* flickr */,
- D3CAA836132652E5008BB877 /* fonts */,
8D1107310486CEB800E47090 /* flickrdemo-Info.plist */,
);
name = Resources;
@@ -190,6 +185,7 @@
288765A40DF7441C002DB57D /* CoreGraphics.framework */,
D3A51611134B03E900E30E2F /* QuartzCore.framework */,
D3A5160F134B03DE00E30E2F /* OpenGLES.framework */,
+ D36D346413F3CD7E00EC5A41 /* CoreText.framework */,
D3CAA7F913264F8A008BB877 /* libz.1.2.3.dylib */,
);
name = Frameworks;
@@ -216,7 +212,6 @@
D3A51617134B042A00E30E2F /* libQtOpenGL.a */,
D3D81756132A184300CDE422 /* libQtScript.a */,
D3D81757132A184300CDE422 /* libQtSql.a */,
- D3D8175E132A185A00CDE422 /* libQtXml.a */,
D3D8175F132A185A00CDE422 /* libQtXmlPatterns.a */,
);
name = Device;
@@ -233,7 +228,6 @@
D307DEA913EBCF5500399BD4 /* libQtOpenGL.a */,
D307DEAA13EBCF5500399BD4 /* libQtScript.a */,
D307DEAB13EBCF5500399BD4 /* libQtSql.a */,
- D307DEAC13EBCF5500399BD4 /* libQtXml.a */,
D307DEAD13EBCF5500399BD4 /* libQtXmlPatterns.a */,
);
name = Simulator;
@@ -306,7 +300,6 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- D3CAA88A132652E5008BB877 /* fonts in Resources */,
D3D815F31329339300CDE422 /* flickr in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -315,7 +308,6 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- D3CAA88B132652E5008BB877 /* fonts in Resources */,
D3D815F4132933AB00CDE422 /* flickr in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
diff --git a/src/plugins/platforms/uikit/examples/qmltest/qmltest-Info.plist b/src/plugins/platforms/uikit/examples/qmltest/qmltest-Info.plist
index 1566585..531d93d 100644
--- a/src/plugins/platforms/uikit/examples/qmltest/qmltest-Info.plist
+++ b/src/plugins/platforms/uikit/examples/qmltest/qmltest-Info.plist
@@ -6,6 +6,8 @@
<string>English</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
+ <key>CFBundleDocumentTypes</key>
+ <array/>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
@@ -20,9 +22,15 @@
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
+ <key>CFBundleURLTypes</key>
+ <array/>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
+ <key>UTExportedTypeDeclarations</key>
+ <array/>
+ <key>UTImportedTypeDeclarations</key>
+ <array/>
</dict>
</plist>
diff --git a/src/plugins/platforms/uikit/examples/qmltest/qmltest.xcodeproj/project.pbxproj b/src/plugins/platforms/uikit/examples/qmltest/qmltest.xcodeproj/project.pbxproj
index afebcba..021eed2 100755
--- a/src/plugins/platforms/uikit/examples/qmltest/qmltest.xcodeproj/project.pbxproj
+++ b/src/plugins/platforms/uikit/examples/qmltest/qmltest.xcodeproj/project.pbxproj
@@ -18,12 +18,13 @@
D307DED313EBD05900399BD4 /* libQtOpenGL.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DECA13EBD05900399BD4 /* libQtOpenGL.a */; };
D307DED413EBD05900399BD4 /* libQtScript.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DECB13EBD05900399BD4 /* libQtScript.a */; };
D307DED513EBD05900399BD4 /* libQtSql.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DECC13EBD05900399BD4 /* libQtSql.a */; };
- D307DED613EBD05900399BD4 /* libQtXml.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DECD13EBD05900399BD4 /* libQtXml.a */; };
D307DED713EBD05900399BD4 /* libQtXmlPatterns.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DECE13EBD05900399BD4 /* libQtXmlPatterns.a */; };
D333CCF913B88A690070E08E /* moc_qmlapplicationviewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D333CCF613B88A690070E08E /* moc_qmlapplicationviewer.cpp */; };
D333CCFA13B88A690070E08E /* moc_qmlapplicationviewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D333CCF613B88A690070E08E /* moc_qmlapplicationviewer.cpp */; };
D333CCFB13B88A690070E08E /* qmlapplicationviewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D333CCF713B88A690070E08E /* qmlapplicationviewer.cpp */; };
D333CCFC13B88A690070E08E /* qmlapplicationviewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D333CCF713B88A690070E08E /* qmlapplicationviewer.cpp */; };
+ D34F290413F29AF400E4F9AC /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D34F290313F29AF400E4F9AC /* CoreText.framework */; };
+ D34F290713F29B0A00E4F9AC /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D34F290613F29B0300E4F9AC /* CoreText.framework */; };
D35784261345D9940046D202 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D35784251345D9940046D202 /* OpenGLES.framework */; };
D35784281345D9E00046D202 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D35784271345D9E00046D202 /* QuartzCore.framework */; };
D3578436134A09990046D202 /* libQtOpenGL.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3578435134A09990046D202 /* libQtOpenGL.a */; };
@@ -36,8 +37,6 @@
D3CAA7F213264F52008BB877 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; };
D3CAA7FA13264F8A008BB877 /* libz.1.2.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D3CAA7F913264F8A008BB877 /* libz.1.2.3.dylib */; };
D3CAA81113264FF0008BB877 /* libz.1.2.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D3CAA7F913264F8A008BB877 /* libz.1.2.3.dylib */; };
- D3CAA88A132652E5008BB877 /* fonts in Resources */ = {isa = PBXBuildFile; fileRef = D3CAA836132652E5008BB877 /* fonts */; };
- D3CAA88B132652E5008BB877 /* fonts in Resources */ = {isa = PBXBuildFile; fileRef = D3CAA836132652E5008BB877 /* fonts */; };
D3CAA89113265310008BB877 /* qml in Resources */ = {isa = PBXBuildFile; fileRef = D3CAA88E13265310008BB877 /* qml */; };
D3CAA89213265310008BB877 /* qml in Resources */ = {isa = PBXBuildFile; fileRef = D3CAA88E13265310008BB877 /* qml */; };
D3D817B2132A2CFD00CDE422 /* libQtCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D817AA132A2CFD00CDE422 /* libQtCore.a */; };
@@ -46,7 +45,6 @@
D3D817B5132A2CFD00CDE422 /* libQtNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D817AD132A2CFD00CDE422 /* libQtNetwork.a */; };
D3D817B6132A2CFD00CDE422 /* libQtScript.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D817AE132A2CFD00CDE422 /* libQtScript.a */; };
D3D817B7132A2CFD00CDE422 /* libQtSql.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D817AF132A2CFD00CDE422 /* libQtSql.a */; };
- D3D817B8132A2CFD00CDE422 /* libQtXml.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D817B0132A2CFD00CDE422 /* libQtXml.a */; };
D3D817B9132A2CFD00CDE422 /* libQtXmlPatterns.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D817B1132A2CFD00CDE422 /* libQtXmlPatterns.a */; };
D3D817BB132A2D0E00CDE422 /* libquikit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D817BA132A2D0E00CDE422 /* libquikit.a */; };
/* End PBXBuildFile section */
@@ -66,18 +64,18 @@
D307DECA13EBD05900399BD4 /* libQtOpenGL.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtOpenGL.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtOpenGL.a"; sourceTree = "<group>"; };
D307DECB13EBD05900399BD4 /* libQtScript.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtScript.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtScript.a"; sourceTree = "<group>"; };
D307DECC13EBD05900399BD4 /* libQtSql.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtSql.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtSql.a"; sourceTree = "<group>"; };
- D307DECD13EBD05900399BD4 /* libQtXml.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtXml.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtXml.a"; sourceTree = "<group>"; };
D307DECE13EBD05900399BD4 /* libQtXmlPatterns.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtXmlPatterns.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtXmlPatterns.a"; sourceTree = "<group>"; };
D333CCF613B88A690070E08E /* moc_qmlapplicationviewer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = moc_qmlapplicationviewer.cpp; path = ../share/qmlapplicationviewer/moc_qmlapplicationviewer.cpp; sourceTree = "<group>"; };
D333CCF713B88A690070E08E /* qmlapplicationviewer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = qmlapplicationviewer.cpp; path = ../share/qmlapplicationviewer/qmlapplicationviewer.cpp; sourceTree = "<group>"; };
D333CCF813B88A690070E08E /* qmlapplicationviewer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = qmlapplicationviewer.h; path = ../share/qmlapplicationviewer/qmlapplicationviewer.h; sourceTree = "<group>"; };
+ D34F290313F29AF400E4F9AC /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
+ D34F290613F29B0300E4F9AC /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
D35784251345D9940046D202 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
D35784271345D9E00046D202 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
D3578435134A09990046D202 /* libQtOpenGL.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtOpenGL.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtOpenGL.a"; sourceTree = "<group>"; };
D3CAA7C713264AAD008BB877 /* main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; };
D3CAA7F613264F52008BB877 /* qmltest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = qmltest.app; sourceTree = BUILT_PRODUCTS_DIR; };
D3CAA7F913264F8A008BB877 /* libz.1.2.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.1.2.3.dylib; path = usr/lib/libz.1.2.3.dylib; sourceTree = SDKROOT; };
- D3CAA836132652E5008BB877 /* fonts */ = {isa = PBXFileReference; lastKnownFileType = folder; name = fonts; path = ../../../../../../lib/fonts; sourceTree = SOURCE_ROOT; };
D3CAA88E13265310008BB877 /* qml */ = {isa = PBXFileReference; lastKnownFileType = folder; path = qml; sourceTree = SOURCE_ROOT; };
D3D817AA132A2CFD00CDE422 /* libQtCore.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtCore.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtCore.a"; sourceTree = SOURCE_ROOT; };
D3D817AB132A2CFD00CDE422 /* libQtDeclarative.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtDeclarative.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtDeclarative.a"; sourceTree = SOURCE_ROOT; };
@@ -85,7 +83,6 @@
D3D817AD132A2CFD00CDE422 /* libQtNetwork.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtNetwork.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtNetwork.a"; sourceTree = SOURCE_ROOT; };
D3D817AE132A2CFD00CDE422 /* libQtScript.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtScript.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtScript.a"; sourceTree = SOURCE_ROOT; };
D3D817AF132A2CFD00CDE422 /* libQtSql.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtSql.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtSql.a"; sourceTree = SOURCE_ROOT; };
- D3D817B0132A2CFD00CDE422 /* libQtXml.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtXml.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtXml.a"; sourceTree = SOURCE_ROOT; };
D3D817B1132A2CFD00CDE422 /* libQtXmlPatterns.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtXmlPatterns.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtXmlPatterns.a"; sourceTree = SOURCE_ROOT; };
D3D817BA132A2D0E00CDE422 /* libquikit.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libquikit.a; path = "../../../../../../../qt-lighthouse-ios-device/plugins/platforms/libquikit.a"; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */
@@ -95,6 +92,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D34F290413F29AF400E4F9AC /* CoreText.framework in Frameworks */,
D35784281345D9E00046D202 /* QuartzCore.framework in Frameworks */,
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
@@ -108,7 +106,6 @@
D307DED313EBD05900399BD4 /* libQtOpenGL.a in Frameworks */,
D307DED413EBD05900399BD4 /* libQtScript.a in Frameworks */,
D307DED513EBD05900399BD4 /* libQtSql.a in Frameworks */,
- D307DED613EBD05900399BD4 /* libQtXml.a in Frameworks */,
D307DED713EBD05900399BD4 /* libQtXmlPatterns.a in Frameworks */,
D307DEC513EBD04100399BD4 /* libquikit.a in Frameworks */,
);
@@ -118,6 +115,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D34F290713F29B0A00E4F9AC /* CoreText.framework in Frameworks */,
D357843A134A0AB10046D202 /* QuartzCore.framework in Frameworks */,
D3578439134A0AAE0046D202 /* OpenGLES.framework in Frameworks */,
D3CAA7F013264F52008BB877 /* Foundation.framework in Frameworks */,
@@ -130,7 +128,6 @@
D3D817B5132A2CFD00CDE422 /* libQtNetwork.a in Frameworks */,
D3D817B6132A2CFD00CDE422 /* libQtScript.a in Frameworks */,
D3D817B7132A2CFD00CDE422 /* libQtSql.a in Frameworks */,
- D3D817B8132A2CFD00CDE422 /* libQtXml.a in Frameworks */,
D3D817B9132A2CFD00CDE422 /* libQtXmlPatterns.a in Frameworks */,
D3D817BB132A2D0E00CDE422 /* libquikit.a in Frameworks */,
D3578436134A09990046D202 /* libQtOpenGL.a in Frameworks */,
@@ -152,6 +149,7 @@
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
isa = PBXGroup;
children = (
+ D34F290313F29AF400E4F9AC /* CoreText.framework */,
29B97315FDCFA39411CA2CEA /* Other Sources */,
29B97317FDCFA39411CA2CEA /* Resources */,
D3CAA7E213264E8C008BB877 /* QMLApplicationViewer */,
@@ -174,7 +172,6 @@
isa = PBXGroup;
children = (
D3CAA88E13265310008BB877 /* qml */,
- D3CAA836132652E5008BB877 /* fonts */,
8D1107310486CEB800E47090 /* qmltest-Info.plist */,
);
name = Resources;
@@ -190,6 +187,7 @@
288765A40DF7441C002DB57D /* CoreGraphics.framework */,
D35784251345D9940046D202 /* OpenGLES.framework */,
D35784271345D9E00046D202 /* QuartzCore.framework */,
+ D34F290613F29B0300E4F9AC /* CoreText.framework */,
D3CAA7F913264F8A008BB877 /* libz.1.2.3.dylib */,
);
name = Frameworks;
@@ -216,7 +214,6 @@
D3578435134A09990046D202 /* libQtOpenGL.a */,
D3D817AE132A2CFD00CDE422 /* libQtScript.a */,
D3D817AF132A2CFD00CDE422 /* libQtSql.a */,
- D3D817B0132A2CFD00CDE422 /* libQtXml.a */,
D3D817B1132A2CFD00CDE422 /* libQtXmlPatterns.a */,
);
name = Device;
@@ -233,7 +230,6 @@
D307DECA13EBD05900399BD4 /* libQtOpenGL.a */,
D307DECB13EBD05900399BD4 /* libQtScript.a */,
D307DECC13EBD05900399BD4 /* libQtSql.a */,
- D307DECD13EBD05900399BD4 /* libQtXml.a */,
D307DECE13EBD05900399BD4 /* libQtXmlPatterns.a */,
);
name = Simulator;
@@ -306,7 +302,6 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- D3CAA88A132652E5008BB877 /* fonts in Resources */,
D3CAA89113265310008BB877 /* qml in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -315,7 +310,6 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- D3CAA88B132652E5008BB877 /* fonts in Resources */,
D3CAA89213265310008BB877 /* qml in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
diff --git a/src/plugins/platforms/uikit/platform.pro b/src/plugins/platforms/uikit/platform.pro
index 726da06..b5ff62f 100644
--- a/src/plugins/platforms/uikit/platform.pro
+++ b/src/plugins/platforms/uikit/platform.pro
@@ -17,11 +17,19 @@ OBJECTIVE_HEADERS = quikitintegration.h \
quikiteventloop.h \
quikitwindowsurface.h
-HEADERS = quikitsoftwareinputhandler.h
+HEADERS = quikitsoftwareinputhandler.h \
+ qcoretextfontdatabase.h
+
+SOURCES += \
+ qcoretextfontdatabase.cpp
+
+#needed for qcoretextfontengine even if it's not used
+INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/harfbuzz/src
#add libz for freetype.
LIBS += -lz
-include(../fontdatabases/genericunix/genericunix.pri)
target.path += $$[QT_INSTALL_PLUGINS]/platforms
INSTALLS += target
+
+
diff --git a/src/plugins/platforms/uikit/qcoretextfontdatabase.cpp b/src/plugins/platforms/uikit/qcoretextfontdatabase.cpp
new file mode 100644
index 0000000..76ad936
--- /dev/null
+++ b/src/plugins/platforms/uikit/qcoretextfontdatabase.cpp
@@ -0,0 +1,156 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qcoretextfontdatabase.h"
+
+#include <CoreText/CoreText.h>
+
+#include <private/qcore_mac_p.h>
+#include <private/qfontengine_coretext_p.h>
+
+#include <QtDebug>
+
+QT_BEGIN_NAMESPACE
+
+void QCoreTextFontDatabase::populateFontDatabase()
+{
+ QCFType<CTFontCollectionRef> collection = CTFontCollectionCreateFromAvailableFonts(0);
+ if(!collection)
+ return;
+ QCFType<CFArrayRef> fonts = CTFontCollectionCreateMatchingFontDescriptors(collection);
+ if(!fonts)
+ return;
+ QSupportedWritingSystems supportedWritingSystems;
+ for (int i = 0; i < QFontDatabase::WritingSystemsCount; ++i)
+ supportedWritingSystems.setSupported((QFontDatabase::WritingSystem)i, true);
+ QString foundry_name = "CoreText";
+ const int numFonts = CFArrayGetCount(fonts);
+ for(int i = 0; i < numFonts; ++i) {
+ CTFontDescriptorRef font = (CTFontDescriptorRef)CFArrayGetValueAtIndex(fonts, i);
+
+ QCFString family_name = (CFStringRef)CTFontDescriptorCopyAttribute(font, kCTFontFamilyNameAttribute);
+// QCFString style_name = (CFStringRef)CTFontDescriptorCopyAttribute(font, kCTFontStyleNameAttribute);
+
+ QFont::Weight fontWeight = QFont::Normal;
+ QFont::Style fontStyle = QFont::StyleNormal;
+ if(QCFType<CFDictionaryRef> styles = (CFDictionaryRef)CTFontDescriptorCopyAttribute(font, kCTFontTraitsAttribute)) {
+ if(CFNumberRef weight = (CFNumberRef)CFDictionaryGetValue(styles, kCTFontWeightTrait)) {
+ Q_ASSERT(CFNumberIsFloatType(weight));
+ double d;
+ if(CFNumberGetValue(weight, kCFNumberDoubleType, &d)) {
+ if (d > 0.0)
+ fontWeight = QFont::Bold;
+ }
+ }
+ if(CFNumberRef italic = (CFNumberRef)CFDictionaryGetValue(styles, kCTFontSlantTrait)) {
+ Q_ASSERT(CFNumberIsFloatType(italic));
+ double d;
+ if(CFNumberGetValue(italic, kCFNumberDoubleType, &d)) {
+ if (d > 0.0)
+ fontStyle = QFont::StyleItalic;
+ }
+ }
+ }
+
+ int pixelSize = 0;
+ if(QCFType<CFNumberRef> size = (CFNumberRef)CTFontDescriptorCopyAttribute(font, kCTFontSizeAttribute)) {
+ if(CFNumberIsFloatType(size)) {
+ double d;
+ CFNumberGetValue(size, kCFNumberDoubleType, &d);
+ pixelSize = d;
+ } else {
+ CFNumberGetValue(size, kCFNumberIntType, &pixelSize);
+ }
+ }
+ registerFont(QString(family_name),
+ foundry_name,
+ fontWeight,
+ fontStyle,
+ QFont::Unstretched,
+ true,
+ true,
+ pixelSize,
+ supportedWritingSystems,
+ 0);
+ }
+}
+
+QFontEngine *QCoreTextFontDatabase::fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle)
+{
+ Q_UNUSED(script)
+ Q_UNUSED(handle)
+ CTFontSymbolicTraits symbolicTraits = 0;
+ if (fontDef.weight >= QFont::Bold)
+ symbolicTraits |= kCTFontBoldTrait;
+ switch (fontDef.style) {
+ case QFont::StyleNormal:
+ break;
+ case QFont::StyleItalic:
+ case QFont::StyleOblique:
+ symbolicTraits |= kCTFontItalicTrait;
+ break;
+ }
+
+ CGAffineTransform transform = CGAffineTransformIdentity;
+ if (fontDef.stretch != 100) {
+ transform = CGAffineTransformMakeScale(float(fontDef.stretch) / float(100), 1);
+ }
+
+ QCFType<CTFontRef> baseFont = CTFontCreateWithName(QCFString(fontDef.family), fontDef.pixelSize, &transform);
+ QCFType<CTFontRef> ctFont = NULL;
+ // There is a side effect in Core Text: if we apply 0 as symbolic traits to a font in normal weight,
+ // we will get the light version of that font (while the way supposed to work doesn't:
+ // setting kCTFontWeightTrait to some value between -1.0 to 0.0 has no effect on font selection)
+ if (fontDef.weight != QFont::Normal || symbolicTraits)
+ ctFont = CTFontCreateCopyWithSymbolicTraits(baseFont, fontDef.pixelSize, &transform, symbolicTraits, symbolicTraits);
+
+ // CTFontCreateCopyWithSymbolicTraits returns NULL if we ask for a trait that does
+ // not exist for the given font. (for example italic)
+ if (ctFont == 0) {
+ ctFont = baseFont;
+ }
+
+ if (ctFont)
+ return new QCoreTextFontEngine(ctFont, fontDef);
+ return 0;
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/uikit/qcoretextfontdatabase.h b/src/plugins/platforms/uikit/qcoretextfontdatabase.h
new file mode 100644
index 0000000..f4fcb20
--- /dev/null
+++ b/src/plugins/platforms/uikit/qcoretextfontdatabase.h
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QCORETEXTFONTDATABASE_H
+#define QCORETEXTFONTDATABASE_H
+
+#include <QtGui/QPlatformFontDatabase>
+
+QT_BEGIN_NAMESPACE
+
+class QCoreTextFontDatabase : public QPlatformFontDatabase
+{
+public:
+ void populateFontDatabase();
+ QFontEngine *fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle);
+};
+
+QT_END_NAMESPACE
+
+#endif // QCORETEXTFONTDATABASE_H
diff --git a/src/plugins/platforms/uikit/quikiteventloop.mm b/src/plugins/platforms/uikit/quikiteventloop.mm
index 7df7ec8..152a34a 100644
--- a/src/plugins/platforms/uikit/quikiteventloop.mm
+++ b/src/plugins/platforms/uikit/quikiteventloop.mm
@@ -67,7 +67,6 @@
- (id)initWithEventLoopIntegration:(QUIKitEventLoop *)integration;
-- (void)processEvents;
- (void)processEventsAndSchedule;
@end
@@ -160,17 +159,11 @@
return self;
}
-- (void)processEvents
-{
- QPlatformEventLoopIntegration::processEvents();
-}
-
- (void)processEventsAndSchedule
{
QPlatformEventLoopIntegration::processEvents();
- qint64 nextTime = qMin((qint64)33, mIntegration->nextTimerEvent()); // at least 30fps
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
- NSDate *nextDate = [[NSDate date] dateByAddingTimeInterval:((double)nextTime/1000)];
+ NSDate *nextDate = [[NSDate date] dateByAddingTimeInterval:((double)mIntegration->nextTimerEvent()/1000.)];
[mIntegration->mTimer setFireDate:nextDate];
[pool release];
}
@@ -211,7 +204,7 @@ void QUIKitEventLoop::quitEventLoop()
void QUIKitEventLoop::qtNeedsToProcessEvents()
{
- [mHelper performSelectorOnMainThread:@selector(processEvents) withObject:nil waitUntilDone:NO];
+ [mHelper performSelectorOnMainThread:@selector(processEventsAndSchedule) withObject:nil waitUntilDone:NO];
}
static UIReturnKeyType keyTypeForObject(QObject *obj)
diff --git a/src/plugins/platforms/uikit/quikitintegration.mm b/src/plugins/platforms/uikit/quikitintegration.mm
index ca020c9..02da97c 100644
--- a/src/plugins/platforms/uikit/quikitintegration.mm
+++ b/src/plugins/platforms/uikit/quikitintegration.mm
@@ -44,7 +44,7 @@
#include "quikitwindowsurface.h"
#include "quikitscreen.h"
#include "quikiteventloop.h"
-#include "qgenericunixfontdatabase.h"
+#include "qcoretextfontdatabase.h"
#include <QtGui/QApplication>
@@ -56,16 +56,6 @@
QT_BEGIN_NAMESPACE
-class QUIKitFontDatabase : public QGenericUnixFontDatabase
-{
-public:
- virtual QString fontDir() const
- {
- return QString( [[[[NSBundle mainBundle] bundlePath]
- stringByAppendingPathComponent:@"fonts"] UTF8String] );
- }
-};
-
static QUIKitIntegration *m_instance = 0;
QUIKitIntegration * QUIKitIntegration::instance()
@@ -74,7 +64,7 @@ QUIKitIntegration * QUIKitIntegration::instance()
}
QUIKitIntegration::QUIKitIntegration()
- :mFontDb(new QUIKitFontDatabase() )
+ :mFontDb(new QCoreTextFontDatabase)
{
if (!m_instance)
m_instance = this;
diff --git a/src/plugins/platforms/uikit/quikitscreen.mm b/src/plugins/platforms/uikit/quikitscreen.mm
index 3c1e360..6d24193 100644
--- a/src/plugins/platforms/uikit/quikitscreen.mm
+++ b/src/plugins/platforms/uikit/quikitscreen.mm
@@ -63,7 +63,6 @@ QUIKitScreen::QUIKitScreen(int screenIndex)
const qreal inch = 25.4;
qreal dpi = 160.;
int dragDistance = 12;
- int defaultFontPixelSize = 14;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
dpi = 132.;
dragDistance = 10;
@@ -71,8 +70,8 @@ QUIKitScreen::QUIKitScreen(int screenIndex)
m_physicalSize = QSize(qRound(bounds.size.width * inch / dpi), qRound(bounds.size.height * inch / dpi));
qApp->setStartDragDistance(dragDistance);
- QFont font(QLatin1String("Bitstream Vera Sans"));
- font.setPixelSize(defaultFontPixelSize);
+ QFont font; // system font is helvetica, so that is fine already
+ font.setPixelSize([UIFont systemFontSize]);
qApp->setFont(font);
[pool release];
diff --git a/src/plugins/platforms/wayland/wayland.pro b/src/plugins/platforms/wayland/wayland.pro
index 5b20a87..cbd67ea 100644
--- a/src/plugins/platforms/wayland/wayland.pro
+++ b/src/plugins/platforms/wayland/wayland.pro
@@ -33,7 +33,7 @@ INCLUDEPATH += $$QMAKE_INCDIR_WAYLAND
LIBS += $$QMAKE_LIBS_WAYLAND
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_WAYLAND
-!isEmpty(QMAKE_LFLAGS_RPATH) {
+!isEmpty(QMAKE_LFLAGS_RPATH):!contains(QT_CONFIG, no-pkg-config) {
WAYLAND_NEEDS_RPATH = $$system(pkg-config --libs-only-L wayland-client)
!isEmpty(WAYLAND_NEEDS_RPATH) {
!isEmpty(QMAKE_LIBDIR_WAYLAND):QMAKE_LFLAGS += $${QMAKE_LFLAGS_RPATH}$${QMAKE_LIBDIR_WAYLAND}
diff --git a/src/s60installs/bwins/QtCoreu.def b/src/s60installs/bwins/QtCoreu.def
index ff29c0a..35f4e6c 100644
--- a/src/s60installs/bwins/QtCoreu.def
+++ b/src/s60installs/bwins/QtCoreu.def
@@ -4882,4 +4882,6 @@ EXPORTS
?resultsReadyAt@QFutureWatcherBase@@IAEXHH@Z @ 4881 NONAME ; void QFutureWatcherBase::resultsReadyAt(int, int)
?started@QFutureWatcherBase@@IAEXXZ @ 4882 NONAME ; void QFutureWatcherBase::started(void)
?resetInternalData@QAbstractItemModel@@IAEXXZ @ 4883 NONAME ; void QAbstractItemModel::resetInternalData(void)
+ ?toLower@QLocale@@QBE?AVQString@@ABV2@@Z @ 4884 NONAME ; class QString QLocale::toLower(class QString const &) const
+ ?toUpper@QLocale@@QBE?AVQString@@ABV2@@Z @ 4885 NONAME ; class QString QLocale::toUpper(class QString const &) const
diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def
index b763848..e05f0b8 100644
--- a/src/s60installs/bwins/QtGuiu.def
+++ b/src/s60installs/bwins/QtGuiu.def
@@ -14045,4 +14045,57 @@ EXPORTS
?setStyleName@QFont@@QAEXABVQString@@@Z @ 14044 NONAME ; void QFont::setStyleName(class QString const &)
?styleName@QFont@@QBE?AVQString@@XZ @ 14045 NONAME ; class QString QFont::styleName(void) const
?styleName@QFontInfo@@QBE?AVQString@@XZ @ 14046 NONAME ; class QString QFontInfo::styleName(void) const
+ ?initialize@QTreeViewPrivate@@QAEXXZ @ 14047 NONAME ; void QTreeViewPrivate::initialize(void)
+ ?expand@QTreeViewPrivate@@QAEXH_N@Z @ 14048 NONAME ; void QTreeViewPrivate::expand(int, bool)
+ ?removeViewItems@QTreeViewPrivate@@QAEXHH@Z @ 14049 NONAME ; void QTreeViewPrivate::removeViewItems(int, int)
+ ?drawAnimatedOperation@QTreeViewPrivate@@QBEXPAVQPainter@@@Z @ 14050 NONAME ; void QTreeViewPrivate::drawAnimatedOperation(class QPainter *) const
+ ?firstVisibleItem@QTreeViewPrivate@@QBEHPAH@Z @ 14051 NONAME ; int QTreeViewPrivate::firstVisibleItem(int *) const
+ ?hasFamily@QFontDatabase@@QBE_NABVQString@@@Z @ 14052 NONAME ; bool QFontDatabase::hasFamily(class QString const &) const
+ ?insertViewItems@QTreeViewPrivate@@QAEXHHABUQTreeViewItem@@@Z @ 14053 NONAME ; void QTreeViewPrivate::insertViewItems(int, int, struct QTreeViewItem const &)
+ ??0QTreeViewPrivate@@QAE@XZ @ 14054 NONAME ; QTreeViewPrivate::QTreeViewPrivate(void)
+ ??_EQTreeViewPrivate@@UAE@I@Z @ 14055 NONAME ; QTreeViewPrivate::~QTreeViewPrivate(unsigned int)
+ ?q_func@QTreeViewPrivate@@ABEPBVQTreeView@@XZ @ 14056 NONAME ; class QTreeView const * QTreeViewPrivate::q_func(void) const
+ ?viewIndex@QTreeViewPrivate@@QBEHABVQModelIndex@@@Z @ 14057 NONAME ; int QTreeViewPrivate::viewIndex(class QModelIndex const &) const
+ ?q_func@QTreeViewPrivate@@AAEPAVQTreeView@@XZ @ 14058 NONAME ; class QTreeView * QTreeViewPrivate::q_func(void)
+ ?updateScrollBars@QTreeViewPrivate@@QAEXXZ @ 14059 NONAME ; void QTreeViewPrivate::updateScrollBars(void)
+ ?indentationForItem@QTreeViewPrivate@@QBEHH@Z @ 14060 NONAME ; int QTreeViewPrivate::indentationForItem(int) const
+ ?above@QTreeViewPrivate@@QBEHH@Z @ 14061 NONAME ; int QTreeViewPrivate::above(int) const
+ ?_q_columnsRemoved@QTreeViewPrivate@@UAEXABVQModelIndex@@HH@Z @ 14062 NONAME ; void QTreeViewPrivate::_q_columnsRemoved(class QModelIndex const &, int, int)
+ ?columnRanges@QTreeViewPrivate@@QBE?AV?$QList@U?$QPair@HH@@@@ABVQModelIndex@@0@Z @ 14063 NONAME ; class QList<struct QPair<int, int> > QTreeViewPrivate::columnRanges(class QModelIndex const &, class QModelIndex const &) const
+ ?_q_modelDestroyed@QTreeViewPrivate@@UAEXXZ @ 14064 NONAME ; void QTreeViewPrivate::_q_modelDestroyed(void)
+ ?coordinateForItem@QTreeViewPrivate@@QBEHH@Z @ 14065 NONAME ; int QTreeViewPrivate::coordinateForItem(int) const
+ ?accessibleTable2Index@QTreeViewPrivate@@QBEHABVQModelIndex@@@Z @ 14066 NONAME ; int QTreeViewPrivate::accessibleTable2Index(class QModelIndex const &) const
+ ?select@QTreeViewPrivate@@QAEXABVQModelIndex@@0V?$QFlags@W4SelectionFlag@QItemSelectionModel@@@@@Z @ 14067 NONAME ; void QTreeViewPrivate::select(class QModelIndex const &, class QModelIndex const &, class QFlags<enum QItemSelectionModel::SelectionFlag>)
+ ?drawPixmapFragments@QPaintEngineEx@@UAEXPBVQRectF@@0HABVQPixmap@@V?$QFlags@W4PixmapFragmentHint@QPainter@@@@@Z @ 14068 NONAME ; void QPaintEngineEx::drawPixmapFragments(class QRectF const *, class QRectF const *, int, class QPixmap const &, class QFlags<enum QPainter::PixmapFragmentHint>)
+ ?draggablePaintPairs@QTreeViewPrivate@@UBE?AV?$QList@U?$QPair@VQRect@@VQModelIndex@@@@@@ABV?$QList@VQModelIndex@@@@PAVQRect@@@Z @ 14069 NONAME ; class QList<struct QPair<class QRect, class QModelIndex> > QTreeViewPrivate::draggablePaintPairs(class QList<class QModelIndex> const &, class QRect *) const
+ ?beginAnimatedOperation@QTreeViewPrivate@@QAEXXZ @ 14070 NONAME ; void QTreeViewPrivate::beginAnimatedOperation(void)
+ ?columnAt@QTreeViewPrivate@@QBEHH@Z @ 14071 NONAME ; int QTreeViewPrivate::columnAt(int) const
+ ?pageUp@QTreeViewPrivate@@QBEHH@Z @ 14072 NONAME ; int QTreeViewPrivate::pageUp(int) const
+ ?isItemHiddenOrDisabled@QTreeViewPrivate@@QBE_NH@Z @ 14073 NONAME ; bool QTreeViewPrivate::isItemHiddenOrDisabled(int) const
+ ?expandOrCollapseItemAtPos@QTreeViewPrivate@@QAE_NABVQPoint@@@Z @ 14074 NONAME ; bool QTreeViewPrivate::expandOrCollapseItemAtPos(class QPoint const &)
+ ?paintAlternatingRowColors@QTreeViewPrivate@@QBEXPAVQPainter@@PAVQStyleOptionViewItemV4@@HH@Z @ 14075 NONAME ; void QTreeViewPrivate::paintAlternatingRowColors(class QPainter *, class QStyleOptionViewItemV4 *, int, int) const
+ ?drawPixmapFragments@QPainter@@QAEXPBVQRectF@@0HABVQPixmap@@V?$QFlags@W4PixmapFragmentHint@QPainter@@@@@Z @ 14076 NONAME ; void QPainter::drawPixmapFragments(class QRectF const *, class QRectF const *, int, class QPixmap const &, class QFlags<enum QPainter::PixmapFragmentHint>)
+ ?itemDecorationRect@QTreeViewPrivate@@QBE?AVQRect@@ABVQModelIndex@@@Z @ 14077 NONAME ; class QRect QTreeViewPrivate::itemDecorationRect(class QModelIndex const &) const
+ ??1QTreeViewPrivate@@UAE@XZ @ 14078 NONAME ; QTreeViewPrivate::~QTreeViewPrivate(void)
+ ?storeExpanded@QTreeViewPrivate@@QAE_NABVQPersistentModelIndex@@@Z @ 14079 NONAME ; bool QTreeViewPrivate::storeExpanded(class QPersistentModelIndex const &)
+ ?hasVisibleChildren@QTreeViewPrivate@@QBE_NABVQModelIndex@@@Z @ 14080 NONAME ; bool QTreeViewPrivate::hasVisibleChildren(class QModelIndex const &) const
+ ?itemAtCoordinate@QTreeViewPrivate@@QBEHH@Z @ 14081 NONAME ; int QTreeViewPrivate::itemAtCoordinate(int) const
+ ?renderTreeToPixmapForAnimation@QTreeViewPrivate@@QBE?AVQPixmap@@ABVQRect@@@Z @ 14082 NONAME ; class QPixmap QTreeViewPrivate::renderTreeToPixmapForAnimation(class QRect const &) const
+ ?prepareAnimatedOperation@QTreeViewPrivate@@QAEXHW4Direction@QAbstractAnimation@@@Z @ 14083 NONAME ; void QTreeViewPrivate::prepareAnimatedOperation(int, enum QAbstractAnimation::Direction)
+ ?_q_endAnimatedOperation@QTreeViewPrivate@@QAEXXZ @ 14084 NONAME ; void QTreeViewPrivate::_q_endAnimatedOperation(void)
+ ?startAndEndColumns@QTreeViewPrivate@@QBE?AU?$QPair@HH@@ABVQRect@@@Z @ 14085 NONAME ; struct QPair<int, int> QTreeViewPrivate::startAndEndColumns(class QRect const &) const
+ ?invalidateHeightCache@QTreeViewPrivate@@QBEXH@Z @ 14086 NONAME ; void QTreeViewPrivate::invalidateHeightCache(int) const
+ ?isIndexExpanded@QTreeViewPrivate@@QBE_NABVQModelIndex@@@Z @ 14087 NONAME ; bool QTreeViewPrivate::isIndexExpanded(class QModelIndex const &) const
+ ?layout@QTreeViewPrivate@@QAEXH_N0@Z @ 14088 NONAME ; void QTreeViewPrivate::layout(int, bool, bool)
+ ?cancelPasswordEchoTimer@QLineControl@@AAEXXZ @ 14089 NONAME ; void QLineControl::cancelPasswordEchoTimer(void)
+ ?collapse@QTreeViewPrivate@@QAEXH_N@Z @ 14090 NONAME ; void QTreeViewPrivate::collapse(int, bool)
+ ?modelIndex@QTreeViewPrivate@@QBE?AVQModelIndex@@HH@Z @ 14091 NONAME ; class QModelIndex QTreeViewPrivate::modelIndex(int, int) const
+ ?itemHeight@QTreeViewPrivate@@QBEHH@Z @ 14092 NONAME ; int QTreeViewPrivate::itemHeight(int) const
+ ?isRowHidden@QTreeViewPrivate@@QBE_NABVQModelIndex@@@Z @ 14093 NONAME ; bool QTreeViewPrivate::isRowHidden(class QModelIndex const &) const
+ ?_q_sortIndicatorChanged@QTreeViewPrivate@@QAEXHW4SortOrder@Qt@@@Z @ 14094 NONAME ; void QTreeViewPrivate::_q_sortIndicatorChanged(int, enum Qt::SortOrder)
+ ?pageDown@QTreeViewPrivate@@QBEHH@Z @ 14095 NONAME ; int QTreeViewPrivate::pageDown(int) const
+ ?_q_modelAboutToBeReset@QTreeViewPrivate@@QAEXXZ @ 14096 NONAME ; void QTreeViewPrivate::_q_modelAboutToBeReset(void)
+ ?itemDecorationAt@QTreeViewPrivate@@QBEHABVQPoint@@@Z @ 14097 NONAME ; int QTreeViewPrivate::itemDecorationAt(class QPoint const &) const
+ ?below@QTreeViewPrivate@@QBEHH@Z @ 14098 NONAME ; int QTreeViewPrivate::below(int) const
+ ?_q_columnsAboutToBeRemoved@QTreeViewPrivate@@UAEXABVQModelIndex@@HH@Z @ 14099 NONAME ; void QTreeViewPrivate::_q_columnsAboutToBeRemoved(class QModelIndex const &, int, int)
diff --git a/src/s60installs/bwins/QtSqlu.def b/src/s60installs/bwins/QtSqlu.def
index 586850a..3e726e8 100644
--- a/src/s60installs/bwins/QtSqlu.def
+++ b/src/s60installs/bwins/QtSqlu.def
@@ -470,4 +470,5 @@ EXPORTS
?qt_static_metacall@QSqlRelationalTableModel@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z @ 469 NONAME ; void QSqlRelationalTableModel::qt_static_metacall(class QObject *, enum QMetaObject::Call, int, void * *)
?staticMetaObjectExtraData@QSqlRelationalTableModel@@0UQMetaObjectExtraData@@B @ 470 NONAME ; struct QMetaObjectExtraData const QSqlRelationalTableModel::staticMetaObjectExtraData
?qt_static_metacall@QSqlDriverPlugin@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z @ 471 NONAME ; void QSqlDriverPlugin::qt_static_metacall(class QObject *, enum QMetaObject::Call, int, void * *)
+ ?setJoinMode@QSqlRelationalTableModel@@QAEXW4JoinMode@1@@Z @ 472 NONAME ; void QSqlRelationalTableModel::setJoinMode(enum QSqlRelationalTableModel::JoinMode)
diff --git a/src/s60installs/bwins/QtTestu.def b/src/s60installs/bwins/QtTestu.def
index 486984a..5365850 100644
--- a/src/s60installs/bwins/QtTestu.def
+++ b/src/s60installs/bwins/QtTestu.def
@@ -170,4 +170,5 @@ EXPORTS
?qt_static_metacall@QTestEventLoop@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z @ 169 NONAME ; void QTestEventLoop::qt_static_metacall(class QObject *, enum QMetaObject::Call, int, void * *)
?startLogging@QTestLog@@SAXI@Z @ 170 NONAME ; void QTestLog::startLogging(unsigned int)
?staticMetaObjectExtraData@QTestEventLoop@@0UQMetaObjectExtraData@@B @ 171 NONAME ; struct QMetaObjectExtraData const QTestEventLoop::staticMetaObjectExtraData
+ ?printAvailableTags@QTest@@3_NA @ 172 NONAME ; bool QTest::printAvailableTags
diff --git a/src/s60installs/eabi/QtCoreu.def b/src/s60installs/eabi/QtCoreu.def
index f0bf9fc..3abcf98 100644
--- a/src/s60installs/eabi/QtCoreu.def
+++ b/src/s60installs/eabi/QtCoreu.def
@@ -4163,4 +4163,6 @@ EXPORTS
_ZNK5QUuid11toByteArrayEv @ 4162 NONAME
_ZNK5QUuid9toRfc4122Ev @ 4163 NONAME
_ZN18QAbstractItemModel17resetInternalDataEv @ 4164 NONAME
+ _ZNK7QLocale7toLowerERK7QString @ 4165 NONAME
+ _ZNK7QLocale7toUpperERK7QString @ 4166 NONAME
diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def
index 01b3772..38c67b9 100644
--- a/src/s60installs/eabi/QtGuiu.def
+++ b/src/s60installs/eabi/QtGuiu.def
@@ -12758,4 +12758,45 @@ EXPORTS
_ZN5QFont12setStyleNameERK7QString @ 12757 NONAME
_ZNK5QFont9styleNameEv @ 12758 NONAME
_ZNK9QFontInfo9styleNameEv @ 12759 NONAME
+ _ZN14QPaintEngineEx19drawPixmapFragmentsEPK6QRectFS2_iRK7QPixmap6QFlagsIN8QPainter18PixmapFragmentHintEE @ 12760 NONAME
+ _ZN16QTreeViewPrivate10initializeEv @ 12761 NONAME
+ _ZN16QTreeViewPrivate15insertViewItemsEiiRK13QTreeViewItem @ 12762 NONAME
+ _ZN16QTreeViewPrivate15removeViewItemsEii @ 12763 NONAME
+ _ZN16QTreeViewPrivate16updateScrollBarsEv @ 12764 NONAME
+ _ZN16QTreeViewPrivate17_q_columnsRemovedERK11QModelIndexii @ 12765 NONAME
+ _ZN16QTreeViewPrivate17_q_modelDestroyedEv @ 12766 NONAME
+ _ZN16QTreeViewPrivate22_q_modelAboutToBeResetEv @ 12767 NONAME
+ _ZN16QTreeViewPrivate22beginAnimatedOperationEv @ 12768 NONAME
+ _ZN16QTreeViewPrivate23_q_endAnimatedOperationEv @ 12769 NONAME
+ _ZN16QTreeViewPrivate23_q_sortIndicatorChangedEiN2Qt9SortOrderE @ 12770 NONAME
+ _ZN16QTreeViewPrivate24prepareAnimatedOperationEiN18QAbstractAnimation9DirectionE @ 12771 NONAME
+ _ZN16QTreeViewPrivate25expandOrCollapseItemAtPosERK6QPoint @ 12772 NONAME
+ _ZN16QTreeViewPrivate26_q_columnsAboutToBeRemovedERK11QModelIndexii @ 12773 NONAME
+ _ZN16QTreeViewPrivate6expandEib @ 12774 NONAME
+ _ZN16QTreeViewPrivate6layoutEibb @ 12775 NONAME
+ _ZN16QTreeViewPrivate6selectERK11QModelIndexS2_6QFlagsIN19QItemSelectionModel13SelectionFlagEE @ 12776 NONAME
+ _ZN16QTreeViewPrivate8collapseEib @ 12777 NONAME
+ _ZN8QPainter19drawPixmapFragmentsEPK6QRectFS2_iRK7QPixmap6QFlagsINS_18PixmapFragmentHintEE @ 12778 NONAME
+ _ZNK13QFontDatabase9hasFamilyERK7QString @ 12779 NONAME
+ _ZNK16QTreeViewPrivate10itemHeightEi @ 12780 NONAME
+ _ZNK16QTreeViewPrivate10modelIndexEii @ 12781 NONAME
+ _ZNK16QTreeViewPrivate12columnRangesERK11QModelIndexS2_ @ 12782 NONAME
+ _ZNK16QTreeViewPrivate16firstVisibleItemEPi @ 12783 NONAME
+ _ZNK16QTreeViewPrivate16itemAtCoordinateEi @ 12784 NONAME
+ _ZNK16QTreeViewPrivate16itemDecorationAtERK6QPoint @ 12785 NONAME
+ _ZNK16QTreeViewPrivate17coordinateForItemEi @ 12786 NONAME
+ _ZNK16QTreeViewPrivate18hasVisibleChildrenERK11QModelIndex @ 12787 NONAME
+ _ZNK16QTreeViewPrivate18indentationForItemEi @ 12788 NONAME
+ _ZNK16QTreeViewPrivate18itemDecorationRectERK11QModelIndex @ 12789 NONAME
+ _ZNK16QTreeViewPrivate18startAndEndColumnsERK5QRect @ 12790 NONAME
+ _ZNK16QTreeViewPrivate19draggablePaintPairsERK5QListI11QModelIndexEP5QRect @ 12791 NONAME
+ _ZNK16QTreeViewPrivate21drawAnimatedOperationEP8QPainter @ 12792 NONAME
+ _ZNK16QTreeViewPrivate25paintAlternatingRowColorsEP8QPainterP22QStyleOptionViewItemV4ii @ 12793 NONAME
+ _ZNK16QTreeViewPrivate30renderTreeToPixmapForAnimationERK5QRect @ 12794 NONAME
+ _ZNK16QTreeViewPrivate6pageUpEi @ 12795 NONAME
+ _ZNK16QTreeViewPrivate8columnAtEi @ 12796 NONAME
+ _ZNK16QTreeViewPrivate8pageDownEi @ 12797 NONAME
+ _ZNK16QTreeViewPrivate9viewIndexERK11QModelIndex @ 12798 NONAME
+ _ZTI16QTreeViewPrivate @ 12799 NONAME
+ _ZTV16QTreeViewPrivate @ 12800 NONAME
diff --git a/src/s60installs/eabi/QtSqlu.def b/src/s60installs/eabi/QtSqlu.def
index 21782b8..4867d10 100644
--- a/src/s60installs/eabi/QtSqlu.def
+++ b/src/s60installs/eabi/QtSqlu.def
@@ -477,4 +477,5 @@ EXPORTS
_ZN16QSqlDriverPlugin25staticMetaObjectExtraDataE @ 476 NONAME DATA 8
_ZN24QSqlRelationalTableModel18qt_static_metacallEP7QObjectN11QMetaObject4CallEiPPv @ 477 NONAME
_ZN24QSqlRelationalTableModel25staticMetaObjectExtraDataE @ 478 NONAME DATA 8
+ _ZN24QSqlRelationalTableModel11setJoinModeENS_8JoinModeE @ 479 NONAME
diff --git a/src/s60installs/eabi/QtTestu.def b/src/s60installs/eabi/QtTestu.def
index ce98aa6..454292c 100644
--- a/src/s60installs/eabi/QtTestu.def
+++ b/src/s60installs/eabi/QtTestu.def
@@ -166,4 +166,5 @@ EXPORTS
_ZN8QTestLog12startLoggingEj @ 165 NONAME
_ZN14QTestEventLoop18qt_static_metacallEP7QObjectN11QMetaObject4CallEiPPv @ 166 NONAME
_ZN14QTestEventLoop25staticMetaObjectExtraDataE @ 167 NONAME DATA 8
+ _ZN5QTest18printAvailableTagsE @ 168 NONAME DATA 1
diff --git a/src/xmlpatterns/expr/qevaluationcache.cpp b/src/xmlpatterns/expr/qevaluationcache.cpp
index 67109eb..3b6fc92 100644
--- a/src/xmlpatterns/expr/qevaluationcache.cpp
+++ b/src/xmlpatterns/expr/qevaluationcache.cpp
@@ -49,10 +49,9 @@ template<bool IsForGlobal>
EvaluationCache<IsForGlobal>::EvaluationCache(const Expression::Ptr &op,
const VariableDeclaration *varDecl,
const VariableSlotID aSlot) : SingleContainer(op)
- , m_declaration(varDecl)
+ , m_declarationUsedByMany(varDecl->usedByMany())
, m_varSlot(aSlot)
{
- Q_ASSERT(m_declaration);
Q_ASSERT(m_varSlot > -1);
}
@@ -199,7 +198,7 @@ Expression::Ptr EvaluationCache<IsForGlobal>::compress(const StaticContext::Ptr
if(m_operand->is(IDRangeVariableReference))
return m_operand;
- if(m_declaration->usedByMany())
+ if (m_declarationUsedByMany)
{
/* If it's only an atomic value an EvaluationCache is overkill. However,
* it's still needed for functions like fn:current-time() that must adhere to
diff --git a/src/xmlpatterns/expr/qevaluationcache_p.h b/src/xmlpatterns/expr/qevaluationcache_p.h
index 4111634..67ee5c2 100644
--- a/src/xmlpatterns/expr/qevaluationcache_p.h
+++ b/src/xmlpatterns/expr/qevaluationcache_p.h
@@ -125,6 +125,7 @@ namespace QPatternist
private:
static DynamicContext::Ptr topFocusContext(const DynamicContext::Ptr &context);
const VariableDeclaration* m_declaration;
+ bool m_declarationUsedByMany;
/**
* This variable must not be called m_slot. If it so, a compiler bug on
* HP-UX-aCC-64 is triggered in the constructor initializor. See the
diff --git a/tests/auto/declarative/qdeclarativetextedit/data/horizontalAlignment_RightToLeft.qml b/tests/auto/declarative/qdeclarativetextedit/data/horizontalAlignment_RightToLeft.qml
index 43ea8d8..6e739bf 100644
--- a/tests/auto/declarative/qdeclarativetextedit/data/horizontalAlignment_RightToLeft.qml
+++ b/tests/auto/declarative/qdeclarativetextedit/data/horizontalAlignment_RightToLeft.qml
@@ -18,6 +18,7 @@ Rectangle {
objectName: "text"
anchors.fill: parent
text: top.text
+ focus: true
}
}
}
diff --git a/tests/auto/declarative/qdeclarativetextedit/data/mouseselection_false_words.qml b/tests/auto/declarative/qdeclarativetextedit/data/mouseselection_false_words.qml
index 22a9871..f8d2e4e 100644
--- a/tests/auto/declarative/qdeclarativetextedit/data/mouseselection_false_words.qml
+++ b/tests/auto/declarative/qdeclarativetextedit/data/mouseselection_false_words.qml
@@ -1,7 +1,8 @@
-import QtQuick 1.0
+import QtQuick 1.1
TextEdit {
focus: true
- text: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ text: "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"
selectByMouse: false
+ mouseSelectionMode: TextEdit.SelectWords
}
diff --git a/tests/auto/declarative/qdeclarativetextedit/data/mouseselection_true_words.qml b/tests/auto/declarative/qdeclarativetextedit/data/mouseselection_true_words.qml
index d61da46..f58fd45 100644
--- a/tests/auto/declarative/qdeclarativetextedit/data/mouseselection_true_words.qml
+++ b/tests/auto/declarative/qdeclarativetextedit/data/mouseselection_true_words.qml
@@ -1,7 +1,8 @@
-import QtQuick 1.0
+import QtQuick 1.1
TextEdit {
focus: true
- text: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ text: "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"
selectByMouse: true
+ mouseSelectionMode: TextEdit.SelectWords
}
diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp
index 5d6f2a2..fde0588 100644
--- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp
+++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp
@@ -454,6 +454,8 @@ void tst_qdeclarativetextedit::hAlign_RightToLeft()
QVERIFY(textEdit != 0);
canvas->show();
+ const QString rtlText = textEdit->text();
+
// implicit alignment should follow the reading direction of text
QCOMPARE(textEdit->hAlign(), QDeclarativeTextEdit::AlignRight);
QVERIFY(textEdit->positionToRectangle(0).x() > canvas->width()/2);
@@ -530,6 +532,16 @@ void tst_qdeclarativetextedit::hAlign_RightToLeft()
QCOMPARE(textEdit->hAlign(), QDeclarativeTextEdit::AlignLeft);
QVERIFY(textEdit->positionToRectangle(0).x() < canvas->width()/2);
+ QApplication::setActiveWindow(canvas);
+ QTest::qWaitForWindowShown(canvas);
+ QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(canvas));
+
+ textEdit->setText(QString());
+ { QInputMethodEvent ev(rtlText, QList<QInputMethodEvent::Attribute>()); QApplication::sendEvent(canvas, &ev); }
+ QCOMPARE(textEdit->hAlign(), QDeclarativeTextEdit::AlignRight);
+ { QInputMethodEvent ev("Hello world!", QList<QInputMethodEvent::Attribute>()); QApplication::sendEvent(canvas, &ev); }
+ QCOMPARE(textEdit->hAlign(), QDeclarativeTextEdit::AlignLeft);
+
#ifndef Q_OS_MAC // QTBUG-18040
// empty text with implicit alignment follows the system locale-based
// keyboard input direction from QApplication::keyboardInputDirection
@@ -1315,20 +1327,32 @@ void tst_qdeclarativetextedit::moveCursorSelectionSequence()
void tst_qdeclarativetextedit::mouseSelection_data()
{
QTest::addColumn<QString>("qmlfile");
- QTest::addColumn<bool>("expectSelection");
+ QTest::addColumn<int>("from");
+ QTest::addColumn<int>("to");
+ QTest::addColumn<QString>("selectedText");
// import installed
- QTest::newRow("on") << SRCDIR "/data/mouseselection_true.qml" << true;
- QTest::newRow("off") << SRCDIR "/data/mouseselection_false.qml" << false;
- QTest::newRow("default") << SRCDIR "/data/mouseselection_default.qml" << false;
- QTest::newRow("on word selection") << SRCDIR "/data/mouseselection_true_words.qml" << true;
- QTest::newRow("off word selection") << SRCDIR "/data/mouseselection_false_words.qml" << false;
+ QTest::newRow("on") << SRCDIR "/data/mouseselection_true.qml" << 4 << 9 << "45678";
+ QTest::newRow("off") << SRCDIR "/data/mouseselection_false.qml" << 4 << 9 << QString();
+ QTest::newRow("default") << SRCDIR "/data/mouseselection_default.qml" << 4 << 9 << QString();
+ QTest::newRow("off word selection") << SRCDIR "/data/mouseselection_false_words.qml" << 4 << 9 << QString();
+ QTest::newRow("on word selection (4,9)") << SRCDIR "/data/mouseselection_true_words.qml" << 4 << 9 << "0123456789";
+ QTest::newRow("on word selection (2,13)") << SRCDIR "/data/mouseselection_true_words.qml" << 2 << 13 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ QTest::newRow("on word selection (2,30)") << SRCDIR "/data/mouseselection_true_words.qml" << 2 << 30 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ QTest::newRow("on word selection (9,13)") << SRCDIR "/data/mouseselection_true_words.qml" << 9 << 13 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ QTest::newRow("on word selection (9,30)") << SRCDIR "/data/mouseselection_true_words.qml" << 9 << 30 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ QTest::newRow("on word selection (13,2)") << SRCDIR "/data/mouseselection_true_words.qml" << 13 << 2 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ QTest::newRow("on word selection (20,2)") << SRCDIR "/data/mouseselection_true_words.qml" << 20 << 2 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ QTest::newRow("on word selection (12,9)") << SRCDIR "/data/mouseselection_true_words.qml" << 12 << 9 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ QTest::newRow("on word selection (30,9)") << SRCDIR "/data/mouseselection_true_words.qml" << 30 << 9 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
}
void tst_qdeclarativetextedit::mouseSelection()
{
QFETCH(QString, qmlfile);
- QFETCH(bool, expectSelection);
+ QFETCH(int, from);
+ QFETCH(int, to);
+ QFETCH(QString, selectedText);
QDeclarativeView *canvas = createView(qmlfile);
@@ -1342,25 +1366,20 @@ void tst_qdeclarativetextedit::mouseSelection()
QVERIFY(textEditObject != 0);
// press-and-drag-and-release from x1 to x2
- int x1 = 10;
- int x2 = 70;
- int y = textEditObject->height()/2;
- QTest::mousePress(canvas->viewport(), Qt::LeftButton, 0, canvas->mapFromScene(QPoint(x1,y)));
+ QPoint p1 = canvas->mapFromScene(textEditObject->positionToRectangle(from).center());
+ QPoint p2 = canvas->mapFromScene(textEditObject->positionToRectangle(to).center());
+ QTest::mousePress(canvas->viewport(), Qt::LeftButton, 0, p1);
//QTest::mouseMove(canvas->viewport(), canvas->mapFromScene(QPoint(x2,y))); // doesn't work
- QMouseEvent mv(QEvent::MouseMove, canvas->mapFromScene(QPoint(x2,y)), Qt::LeftButton, Qt::LeftButton,Qt::NoModifier);
+ QMouseEvent mv(QEvent::MouseMove, canvas->mapFromScene(p2), Qt::LeftButton, Qt::LeftButton,Qt::NoModifier);
QApplication::sendEvent(canvas->viewport(), &mv);
- QTest::mouseRelease(canvas->viewport(), Qt::LeftButton, 0, canvas->mapFromScene(QPoint(x2,y)));
- QString str = textEditObject->selectedText();
- if (expectSelection)
- QVERIFY(str.length() > 3); // don't reallly care *what* was selected (and it's too sensitive to platform)
- else
- QVERIFY(str.isEmpty());
+ QTest::mouseRelease(canvas->viewport(), Qt::LeftButton, 0, p2);
+ QCOMPARE(textEditObject->selectedText(), selectedText);
// Clicking and shift to clicking between the same points should select the same text.
textEditObject->setCursorPosition(0);
- QTest::mouseClick(canvas->viewport(), Qt::LeftButton, Qt::NoModifier, canvas->mapFromScene(QPoint(x1,y)));
- QTest::mouseClick(canvas->viewport(), Qt::LeftButton, Qt::ShiftModifier, canvas->mapFromScene(QPoint(x2,y)));
- QCOMPARE(textEditObject->selectedText(), str);
+ QTest::mouseClick(canvas->viewport(), Qt::LeftButton, Qt::NoModifier, p1);
+ QTest::mouseClick(canvas->viewport(), Qt::LeftButton, Qt::ShiftModifier, p2);
+ QCOMPARE(textEditObject->selectedText(), selectedText);
delete canvas;
}
diff --git a/tests/auto/declarative/qdeclarativetextinput/data/horizontalAlignment_RightToLeft.qml b/tests/auto/declarative/qdeclarativetextinput/data/horizontalAlignment_RightToLeft.qml
index b11535e..7f27bbe 100644
--- a/tests/auto/declarative/qdeclarativetextinput/data/horizontalAlignment_RightToLeft.qml
+++ b/tests/auto/declarative/qdeclarativetextinput/data/horizontalAlignment_RightToLeft.qml
@@ -18,6 +18,7 @@ Rectangle {
objectName: "text"
anchors.fill: parent
text: top.text
+ focus: true
}
}
}
diff --git a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp
index 280f952..bb895bf 100644
--- a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp
+++ b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp
@@ -1198,6 +1198,8 @@ void tst_qdeclarativetextinput::horizontalAlignment_RightToLeft()
QVERIFY(textInput != 0);
canvas->show();
+ const QString rtlText = textInput->text();
+
QDeclarativeTextInputPrivate *textInputPrivate = QDeclarativeTextInputPrivate::get(textInput);
QVERIFY(textInputPrivate != 0);
QVERIFY(-textInputPrivate->hscroll > canvas->width()/2);
@@ -1262,6 +1264,17 @@ void tst_qdeclarativetextinput::horizontalAlignment_RightToLeft()
QCOMPARE(textInput->hAlign(), QDeclarativeTextInput::AlignLeft);
QVERIFY(-textInputPrivate->hscroll < canvas->width()/2);
+ QApplication::setActiveWindow(canvas);
+ QTest::qWaitForWindowShown(canvas);
+ QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(canvas));
+
+ // If there is no committed text, the preedit text should determine the alignment.
+ textInput->setText(QString());
+ { QInputMethodEvent ev(rtlText, QList<QInputMethodEvent::Attribute>()); QApplication::sendEvent(canvas, &ev); }
+ QCOMPARE(textInput->hAlign(), QDeclarativeTextInput::AlignRight);
+ { QInputMethodEvent ev("Hello world!", QList<QInputMethodEvent::Attribute>()); QApplication::sendEvent(canvas, &ev); }
+ QCOMPARE(textInput->hAlign(), QDeclarativeTextInput::AlignLeft);
+
#ifndef Q_OS_MAC // QTBUG-18040
// empty text with implicit alignment follows the system locale-based
// keyboard input direction from QApplication::keyboardInputDirection
diff --git a/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp b/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp
index 39c3a94..ec22768 100644
--- a/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp
+++ b/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp
@@ -38,6 +38,7 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+#include "../../../shared/util.h"
#include <qtest.h>
#include <QtTest/QSignalSpy>
#include <QStandardItemModel>
@@ -87,6 +88,13 @@ public:
list << "one" << "two" << "three" << "four";
}
+ void emitMove(int sourceFirst, int sourceLast, int destinationChild) {
+ emit beginMoveRows(QModelIndex(), sourceFirst, sourceLast, QModelIndex(), destinationChild);
+ emit endMoveRows();
+ }
+
+ QStringList list;
+
public slots:
void set(int idx, QString string) {
list[idx] = string;
@@ -102,9 +110,6 @@ protected:
return list.at(index.row());
return QVariant();
}
-
-private:
- QStringList list;
};
@@ -122,6 +127,8 @@ private slots:
void singleRole();
void modelProperties();
void noDelegate();
+ void qaimRowsMoved();
+ void qaimRowsMoved_data();
private:
QDeclarativeEngine engine;
@@ -501,6 +508,72 @@ void tst_qdeclarativevisualdatamodel::noDelegate()
}
+void tst_qdeclarativevisualdatamodel::qaimRowsMoved()
+{
+ // Test parameters passed in QAIM::rowsMoved() signal are converted correctly
+ // when translated and emitted as the QListModelInterface::itemsMoved() signal
+ QFETCH(int, sourceFirst);
+ QFETCH(int, sourceLast);
+ QFETCH(int, destinationChild);
+ QFETCH(int, expectFrom);
+ QFETCH(int, expectTo);
+ QFETCH(int, expectCount);
+
+ QDeclarativeEngine engine;
+ QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/visualdatamodel.qml"));
+
+ SingleRoleModel model;
+ model.list.clear();
+ for (int i=0; i<30; i++)
+ model.list << ("item " + i);
+ engine.rootContext()->setContextProperty("myModel", &model);
+
+ QDeclarativeVisualDataModel *obj = qobject_cast<QDeclarativeVisualDataModel*>(c.create());
+ QVERIFY(obj != 0);
+
+ QSignalSpy spy(obj, SIGNAL(itemsMoved(int,int,int)));
+ model.emitMove(sourceFirst, sourceLast, destinationChild);
+ QTRY_COMPARE(spy.count(), 1);
+
+ QCOMPARE(spy[0].count(), 3);
+ QCOMPARE(spy[0][0].toInt(), expectFrom);
+ QCOMPARE(spy[0][1].toInt(), expectTo);
+ QCOMPARE(spy[0][2].toInt(), expectCount);
+
+ delete obj;
+}
+
+void tst_qdeclarativevisualdatamodel::qaimRowsMoved_data()
+{
+ QTest::addColumn<int>("sourceFirst");
+ QTest::addColumn<int>("sourceLast");
+ QTest::addColumn<int>("destinationChild");
+ QTest::addColumn<int>("expectFrom");
+ QTest::addColumn<int>("expectTo");
+ QTest::addColumn<int>("expectCount");
+
+ QTest::newRow("move 1 forward")
+ << 1 << 1 << 6
+ << 1 << 5 << 1;
+
+ QTest::newRow("move 1 backwards")
+ << 4 << 4 << 1
+ << 4 << 1 << 1;
+
+ QTest::newRow("move multiple forwards")
+ << 0 << 2 << 13
+ << 0 << 10 << 3;
+
+ QTest::newRow("move multiple forwards, with same to")
+ << 0 << 1 << 3
+ << 0 << 1 << 2;
+
+ QTest::newRow("move multiple backwards")
+ << 10 << 14 << 1
+ << 10 << 1 << 5;
+}
+
+
template<typename T>
T *tst_qdeclarativevisualdatamodel::findItem(QGraphicsObject *parent, const QString &objectName, int index)
{
diff --git a/tests/auto/qdir/tst_qdir.cpp b/tests/auto/qdir/tst_qdir.cpp
index 0a42a97..419eaae 100644
--- a/tests/auto/qdir/tst_qdir.cpp
+++ b/tests/auto/qdir/tst_qdir.cpp
@@ -444,9 +444,15 @@ void tst_QDir::QDir_default()
void tst_QDir::compare()
{
// operator==
+
+ // Not using QCOMPARE to test result of QDir::operator==
+
QDir dir;
dir.makeAbsolute();
QVERIFY(dir == QDir::currentPath());
+
+ QVERIFY(QDir() == QDir(QDir::currentPath()));
+ QVERIFY(QDir("../") == QDir(QDir::currentPath() + "/.."));
}
static QStringList filterLinks(const QStringList &list)
diff --git a/tests/auto/qlineedit/tst_qlineedit.cpp b/tests/auto/qlineedit/tst_qlineedit.cpp
index 2c88561..6abbdcd 100644
--- a/tests/auto/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/qlineedit/tst_qlineedit.cpp
@@ -1770,13 +1770,6 @@ void tst_QLineEdit::passwordEchoDelay()
QApplication::sendEvent(testWidget, &ev);
QCOMPARE(testWidget->displayText(), QString(7, fillChar) + QLatin1Char('7'));
- testWidget->setCursorPosition(3);
- QCOMPARE(testWidget->displayText(), QString(7, fillChar) + QLatin1Char('7'));
- QTest::keyPress(testWidget, 'a');
- QCOMPARE(testWidget->displayText(), QString(3, fillChar) + QLatin1Char('a') + QString(5, fillChar));
- QTest::keyPress(testWidget, Qt::Key_Backspace);
- QCOMPARE(testWidget->displayText(), QString(8, fillChar));
-
// restore clean state
testWidget->setEchoMode(QLineEdit::Normal);
}
diff --git a/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp b/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp
index 2edb93a..c9d4ba4 100644
--- a/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp
+++ b/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp
@@ -69,13 +69,7 @@
class tst_QTemporaryFile : public QObject
{
Q_OBJECT
-public:
- tst_QTemporaryFile();
- virtual ~tst_QTemporaryFile();
public slots:
- void init();
- void cleanup();
-
void initTestCase();
void cleanupTestCase();
@@ -100,22 +94,17 @@ private slots:
void resetTemplateAfterError();
void setTemplateAfterOpen();
void autoRemoveAfterFailedRename();
-
- void QTBUG_4796_data();
- void QTBUG_4796();
-
-public:
};
void tst_QTemporaryFile::initTestCase()
{
- // For QTBUG_4796
+ // For fileTemplate tests
QVERIFY(QDir("test-XXXXXX").exists() || QDir().mkdir("test-XXXXXX"));
}
void tst_QTemporaryFile::cleanupTestCase()
{
- // From QTBUG_4796
+ // From fileTemplate tests
QVERIFY(QDir().rmdir("test-XXXXXX"));
}
@@ -139,76 +128,6 @@ void tst_QTemporaryFile::getSetCheck()
QCOMPARE(true, obj1.autoRemove());
}
-tst_QTemporaryFile::tst_QTemporaryFile()
-{
-}
-
-tst_QTemporaryFile::~tst_QTemporaryFile()
-{
-
-}
-
-void tst_QTemporaryFile::init()
-{
-// TODO: Add initialization code here.
-// This will be executed immediately before each test is run.
-}
-
-void tst_QTemporaryFile::cleanup()
-{
-// TODO: Add cleanup code here.
-// This will be executed immediately after each test is run.
-}
-
-void tst_QTemporaryFile::fileTemplate_data()
-{
- QTest::addColumn<QString>("constructorTemplate");
- QTest::addColumn<QString>("prefix");
- QTest::addColumn<QString>("suffix");
- QTest::addColumn<QString>("fileTemplate");
-
- QTest::newRow("constructor default") << "" << "." << "" << "";
- QTest::newRow("constructor with xxx sufix") << "qt_XXXXXXxxx" << "qt_" << "xxx" << "";
- QTest::newRow("constructor with xXx sufix") << "qt_XXXXXXxXx" << "qt_" << "xXx" << "";
- QTest::newRow("constructor with no sufix") << "qt_XXXXXX" << "qt_" << "" << "";
- QTest::newRow("constructor with >6 X's and xxx suffix") << "qt_XXXXXXXXXXxxx" << "qt_" << "xxx" << "";
- QTest::newRow("constructor with >6 X's, no suffix") << "qt_XXXXXXXXXX" << "qt_" << "" << "";
-
- QTest::newRow("constructor with XXXX suffix") << "qt_XXXXXX_XXXX" << "qt_" << "_XXXX" << "";
- QTest::newRow("constructor with XXXXX suffix") << "qt_XXXXXX_XXXXX" << "qt_" << "_XXXXX" << "";
- QTest::newRow("constructor with XXXX prefix") << "qt_XXXX" << "qt_XXXX." << "" << "";
- QTest::newRow("constructor with XXXXX prefix") << "qt_XXXXX" << "qt_XXXXX." << "" << "";
- QTest::newRow("constructor with XXXX prefix and suffix") << "qt_XXXX_XXXXXX_XXXX" << "qt_XXXX_" << "_XXXX" << "";
- QTest::newRow("constructor with XXXXX prefix and suffix") << "qt_XXXXX_XXXXXX_XXXXX" << "qt_XXXXX_" << "_XXXXX" << "";
-
- QTest::newRow("set template, no suffix") << "" << "foo" << "" << "foo";
- QTest::newRow("set template, with lowercase XXXXXX") << "" << "qt_" << "xxxxxx" << "qt_XXXXXXxxxxxx";
- QTest::newRow("set template, with xxx") << "" << "qt_" << ".xxx" << "qt_XXXXXX.xxx";
- QTest::newRow("set template, with >6 X's") << "" << "qt_" << ".xxx" << "qt_XXXXXXXXXXXXXX.xxx";
- QTest::newRow("set template, with >6 X's, no suffix") << "" << "qt_" << "" << "qt_XXXXXXXXXXXXXX";
-}
-
-void tst_QTemporaryFile::fileTemplate()
-{
- QFETCH(QString, constructorTemplate);
- QFETCH(QString, prefix);
- QFETCH(QString, suffix);
- QFETCH(QString, fileTemplate);
-
- QTemporaryFile file(constructorTemplate);
- if (!fileTemplate.isEmpty())
- file.setFileTemplate(fileTemplate);
-
- QCOMPARE(file.open(), true);
-
- if (prefix.length())
- QCOMPARE(file.fileName().left(prefix.length()), prefix);
-
- if (suffix.length())
- QCOMPARE(file.fileName().right(suffix.length()), suffix);
-}
-
-
/*
This tests whether the temporary file really gets placed in QDir::tempPath
*/
@@ -411,11 +330,11 @@ void tst_QTemporaryFile::rename()
{
QTemporaryFile file(dir.filePath("temporary-file.XXXXXX"));
- QVERIFY(file.open());
+ QVERIFY2(file.open(), qPrintable(file.errorString()));
tempname = file.fileName();
QVERIFY(dir.exists(tempname));
- QVERIFY(file.rename("temporary-file.txt"));
+ QVERIFY2(file.rename("temporary-file.txt"), qPrintable(file.errorString()));
QVERIFY(!dir.exists(tempname));
QVERIFY(dir.exists("temporary-file.txt"));
QCOMPARE(file.fileName(), QString("temporary-file.txt"));
@@ -622,7 +541,7 @@ void tst_QTemporaryFile::autoRemoveAfterFailedRename()
cleaner.reset();
}
-void tst_QTemporaryFile::QTBUG_4796_data()
+void tst_QTemporaryFile::fileTemplate_data()
{
QTest::addColumn<QString>("prefix");
QTest::addColumn<QString>("suffix");
@@ -631,15 +550,33 @@ void tst_QTemporaryFile::QTBUG_4796_data()
QString unicode = QString::fromUtf8("\xc3\xa5\xc3\xa6\xc3\xb8");
QTest::newRow("<empty>") << QString() << QString() << true;
+
+ QTest::newRow(".") << QString(".") << QString() << true;
+ QTest::newRow("..") << QString("..") << QString() << true;
+
+ QTest::newRow("foo") << QString("foo") << QString() << true;
+ QTest::newRow("qt_ ... xxxxxx") << QString("qt_") << QString("xxxxxx") << true;
+ QTest::newRow("qt_ ... xxx") << QString("qt_") << QString("xxx") << true;
+ QTest::newRow("qt_ ... xXx") << QString("qt_") << QString("xXx") << true;
+ QTest::newRow("qt_ ...") << QString("qt_") << QString() << true;
+ QTest::newRow("qt_ ... _XXXX") << QString("qt_") << QString("_XXXX") << true;
+ QTest::newRow("qt_ ... _XXXXX") << QString("qt_") << QString("_XXXXX") << true;
+ QTest::newRow("qt_XXXX_ ...") << QString("qt_XXXX_") << QString() << true;
+ QTest::newRow("qt_XXXXX_ ...") << QString("qt_XXXXX_") << QString() << true;
+ QTest::newRow("qt_XXXX_ ... _XXXX") << QString("qt_XXXX_") << QString("_XXXX") << true;
+ QTest::newRow("qt_XXXXX_ ... _XXXXX") << QString("qt_XXXXX_") << QString("_XXXXX") << true;
+
QTest::newRow("blaXXXXXX") << QString("bla") << QString() << true;
QTest::newRow("XXXXXXbla") << QString() << QString("bla") << true;
+
QTest::newRow("does-not-exist/qt_temp.XXXXXX") << QString("does-not-exist/qt_temp") << QString() << false;
+
QTest::newRow("XXXXXX<unicode>") << QString() << unicode << true;
QTest::newRow("<unicode>XXXXXX") << unicode << QString() << true;
QTest::newRow("<unicode>XXXXXX<unicode>") << unicode << unicode << true;
}
-void tst_QTemporaryFile::QTBUG_4796()
+void tst_QTemporaryFile::fileTemplate()
{
QVERIFY(QDir("test-XXXXXX").exists());
@@ -665,25 +602,56 @@ void tst_QTemporaryFile::QTBUG_4796()
QFETCH(QString, suffix);
QFETCH(bool, openResult);
+ enum IterationType {
+ UseConstructor,
+ UseSetFileTemplate,
+ Done
+ };
+
+ for (IterationType setFileTemplate = UseConstructor; setFileTemplate != Done;
+ setFileTemplate = IterationType(int(setFileTemplate) + 1))
{
+ Q_FOREACH(QString const &tempName, cleaner.tempNames)
+ QVERIFY( !QFile::exists(tempName) );
+
+ cleaner.reset();
+
QString fileTemplate1 = prefix + QString("XX") + suffix;
QString fileTemplate2 = prefix + QString("XXXX") + suffix;
QString fileTemplate3 = prefix + QString("XXXXXX") + suffix;
QString fileTemplate4 = prefix + QString("XXXXXXXX") + suffix;
- QTemporaryFile file1(fileTemplate1);
- QTemporaryFile file2(fileTemplate2);
- QTemporaryFile file3(fileTemplate3);
- QTemporaryFile file4(fileTemplate4);
- QTemporaryFile file5("test-XXXXXX/" + fileTemplate1);
- QTemporaryFile file6("test-XXXXXX/" + fileTemplate3);
+ QTemporaryFile file1(setFileTemplate ? QString() : fileTemplate1);
+ QTemporaryFile file2(setFileTemplate ? QString() : fileTemplate2);
+ QTemporaryFile file3(setFileTemplate ? QString() : fileTemplate3);
+ QTemporaryFile file4(setFileTemplate ? QString() : fileTemplate4);
+ QTemporaryFile file5(setFileTemplate ? QString() : "test-XXXXXX/" + fileTemplate1);
+ QTemporaryFile file6(setFileTemplate ? QString() : "test-XXXXXX/" + fileTemplate3);
+
+ if (setFileTemplate) {
+ file1.setFileTemplate(fileTemplate1);
+ file2.setFileTemplate(fileTemplate2);
+ file3.setFileTemplate(fileTemplate3);
+ file4.setFileTemplate(fileTemplate4);
+ file5.setFileTemplate("test-XXXXXX/" + fileTemplate1);
+ file6.setFileTemplate("test-XXXXXX/" + fileTemplate3);
+ }
- QCOMPARE(file1.open(), openResult);
- QCOMPARE(file2.open(), openResult);
- QCOMPARE(file3.open(), openResult);
- QCOMPARE(file4.open(), openResult);
- QCOMPARE(file5.open(), openResult);
- QCOMPARE(file6.open(), openResult);
+ if (openResult) {
+ QVERIFY2(file1.open(), qPrintable(file1.errorString()));
+ QVERIFY2(file2.open(), qPrintable(file2.errorString()));
+ QVERIFY2(file3.open(), qPrintable(file3.errorString()));
+ QVERIFY2(file4.open(), qPrintable(file4.errorString()));
+ QVERIFY2(file5.open(), qPrintable(file5.errorString()));
+ QVERIFY2(file6.open(), qPrintable(file6.errorString()));
+ } else {
+ QVERIFY(!file1.open());
+ QVERIFY(!file2.open());
+ QVERIFY(!file3.open());
+ QVERIFY(!file4.open());
+ QVERIFY(!file5.open());
+ QVERIFY(!file6.open());
+ }
QCOMPARE(file1.exists(), openResult);
QCOMPARE(file2.exists(), openResult);
@@ -701,28 +669,31 @@ void tst_QTemporaryFile::QTBUG_4796()
<< file5.fileName()
<< file6.fileName();
- QVERIFY(file1.fileName().startsWith(fileTemplate1 + QLatin1Char('.')));
- QVERIFY(file2.fileName().startsWith(fileTemplate2 + QLatin1Char('.')));
- QVERIFY(file5.fileName().startsWith("test-XXXXXX/" + fileTemplate1 + QLatin1Char('.')));
- QVERIFY(file6.fileName().startsWith("test-XXXXXX/" + prefix));
+ QDir currentDir;
+ QString fileName1 = currentDir.relativeFilePath(file1.fileName());
+ QString fileName2 = currentDir.relativeFilePath(file2.fileName());
+ QString fileName3 = currentDir.relativeFilePath(file3.fileName());
+ QString fileName4 = currentDir.relativeFilePath(file4.fileName());
+ QString fileName5 = currentDir.relativeFilePath(file5.fileName());
+ QString fileName6 = currentDir.relativeFilePath(file6.fileName());
+
+ QVERIFY2(fileName1.startsWith(fileTemplate1 + QLatin1Char('.')), qPrintable(file1.fileName()));
+ QVERIFY2(fileName2.startsWith(fileTemplate2 + QLatin1Char('.')), qPrintable(file2.fileName()));
+ QVERIFY2(fileName5.startsWith("test-XXXXXX/" + fileTemplate1 + QLatin1Char('.')), qPrintable(file5.fileName()));
+ QVERIFY2(fileName6.startsWith("test-XXXXXX/" + prefix), qPrintable(file6.fileName()));
if (!prefix.isEmpty()) {
- QVERIFY(file3.fileName().startsWith(prefix));
- QVERIFY(file4.fileName().startsWith(prefix));
+ QVERIFY2(fileName3.startsWith(prefix), qPrintable(file3.fileName()));
+ QVERIFY2(fileName4.startsWith(prefix), qPrintable(file4.fileName()));
}
if (!suffix.isEmpty()) {
- QVERIFY(file3.fileName().endsWith(suffix));
- QVERIFY(file4.fileName().endsWith(suffix));
- QVERIFY(file6.fileName().endsWith(suffix));
+ QVERIFY2(fileName3.endsWith(suffix), qPrintable(file3.fileName()));
+ QVERIFY2(fileName4.endsWith(suffix), qPrintable(file4.fileName()));
+ QVERIFY2(fileName6.endsWith(suffix), qPrintable(file6.fileName()));
}
}
}
-
- Q_FOREACH(QString const &tempName, cleaner.tempNames)
- QVERIFY( !QFile::exists(tempName) );
-
- cleaner.reset();
}
QTEST_MAIN(tst_QTemporaryFile)
diff --git a/tools/qdoc3/cppcodemarker.cpp b/tools/qdoc3/cppcodemarker.cpp
index f3ec6fd..0fc30bc 100644
--- a/tools/qdoc3/cppcodemarker.cpp
+++ b/tools/qdoc3/cppcodemarker.cpp
@@ -957,7 +957,7 @@ QString CppCodeMarker::addMarkUp(const QString &in,
ident += ch;
finish = i;
readChar();
- } while (ch >= 0 && isalnum(ch) || ch == '_');
+ } while (isalnum(ch) || ch == '_');
if (classRegExp.exactMatch(ident)) {
tag = QLatin1String("type");
diff --git a/tools/qdoc3/cppcodeparser.cpp b/tools/qdoc3/cppcodeparser.cpp
index 5efbcfd..1a4c344 100644
--- a/tools/qdoc3/cppcodeparser.cpp
+++ b/tools/qdoc3/cppcodeparser.cpp
@@ -2349,8 +2349,8 @@ void CppCodeParser::createExampleFileNodes(FakeNode *fake)
proFileName,
userFriendlyFilePath);
if (fullPath.isEmpty()) {
- fake->doc().location().warning(
- tr("Cannot find file '%1' or '%2'").arg(tmp).arg(proFileName));
+ fake->doc().location().warning(tr("Cannot find file '%1' or '%2'").arg(tmp).arg(proFileName));
+ fake->doc().location().warning(tr("EXAMPLE PATH DOES NOT EXIST: %1").arg(examplePath));
return;
}
}
diff --git a/tools/qdoc3/ditaxmlgenerator.cpp b/tools/qdoc3/ditaxmlgenerator.cpp
index ff58733..4393e8d 100644
--- a/tools/qdoc3/ditaxmlgenerator.cpp
+++ b/tools/qdoc3/ditaxmlgenerator.cpp
@@ -3954,6 +3954,70 @@ void DitaXmlGenerator::findAllClasses(const InnerNode* node)
}
}
+/*!
+ For generating the "New Classes... in 4.x" section on the
+ What's New in 4.x" page.
+ */
+void DitaXmlGenerator::findAllSince(const InnerNode* node)
+{
+ NodeList::const_iterator child = node->childNodes().constBegin();
+ while (child != node->childNodes().constEnd()) {
+ QString sinceVersion = (*child)->since();
+ if (((*child)->access() != Node::Private) && !sinceVersion.isEmpty()) {
+ NewSinceMaps::iterator nsmap = newSinceMaps.find(sinceVersion);
+ if (nsmap == newSinceMaps.end())
+ nsmap = newSinceMaps.insert(sinceVersion,NodeMultiMap());
+ NewClassMaps::iterator ncmap = newClassMaps.find(sinceVersion);
+ if (ncmap == newClassMaps.end())
+ ncmap = newClassMaps.insert(sinceVersion,NodeMap());
+ NewClassMaps::iterator nqcmap = newQmlClassMaps.find(sinceVersion);
+ if (nqcmap == newQmlClassMaps.end())
+ nqcmap = newQmlClassMaps.insert(sinceVersion,NodeMap());
+
+ if ((*child)->type() == Node::Function) {
+ FunctionNode *func = static_cast<FunctionNode *>(*child);
+ if ((func->status() > Node::Obsolete) &&
+ (func->metaness() != FunctionNode::Ctor) &&
+ (func->metaness() != FunctionNode::Dtor)) {
+ nsmap.value().insert(func->name(),(*child));
+ }
+ }
+ else if ((*child)->url().isEmpty()) {
+ if ((*child)->type() == Node::Class && !(*child)->doc().isEmpty()) {
+ QString className = (*child)->name();
+ if ((*child)->parent() &&
+ (*child)->parent()->type() == Node::Namespace &&
+ !(*child)->parent()->name().isEmpty())
+ className = (*child)->parent()->name()+"::"+className;
+ nsmap.value().insert(className,(*child));
+ ncmap.value().insert(className,(*child));
+ }
+ else if ((*child)->subType() == Node::QmlClass) {
+ QString className = (*child)->name();
+ if ((*child)->parent() &&
+ (*child)->parent()->type() == Node::Namespace &&
+ !(*child)->parent()->name().isEmpty())
+ className = (*child)->parent()->name()+"::"+className;
+ nsmap.value().insert(className,(*child));
+ nqcmap.value().insert(className,(*child));
+ }
+ }
+ else {
+ QString name = (*child)->name();
+ if ((*child)->parent() &&
+ (*child)->parent()->type() == Node::Namespace &&
+ !(*child)->parent()->name().isEmpty())
+ name = (*child)->parent()->name()+"::"+name;
+ nsmap.value().insert(name,(*child));
+ }
+ if ((*child)->isInnerNode()) {
+ findAllSince(static_cast<InnerNode *>(*child));
+ }
+ }
+ ++child;
+ }
+}
+
void DitaXmlGenerator::findAllFunctions(const InnerNode* node)
{
NodeList::ConstIterator c = node->childNodes().begin();
diff --git a/tools/qdoc3/ditaxmlgenerator.h b/tools/qdoc3/ditaxmlgenerator.h
index d8d3563..408f46c 100644
--- a/tools/qdoc3/ditaxmlgenerator.h
+++ b/tools/qdoc3/ditaxmlgenerator.h
@@ -51,6 +51,12 @@
QT_BEGIN_NAMESPACE
+typedef QMultiMap<QString, Node*> NodeMultiMap;
+typedef QMap<QString, NodeMultiMap> NewSinceMaps;
+typedef QMap<Node*, NodeMultiMap> ParentMaps;
+typedef QMap<QString, const Node*> NodeMap;
+typedef QMap<QString, NodeMap> NewClassMaps;
+
typedef QMap<QString, QString> GuidMap;
typedef QMap<QString, GuidMap*> GuidMaps;
@@ -412,6 +418,7 @@ class DitaXmlGenerator : public PageGenerator
void findAllFunctions(const InnerNode *node);
void findAllLegaleseTexts(const InnerNode *node);
void findAllNamespaces(const InnerNode *node);
+ void findAllSince(const InnerNode *node);
static int hOffset(const Node *node);
static bool isThreeColumnEnumValueTable(const Atom *atom);
virtual QString getLink(const Atom *atom,
@@ -508,6 +515,10 @@ class DitaXmlGenerator : public PageGenerator
#endif
QMap<QString, NodeMap > funcIndex;
QMap<Text, const Node*> legaleseTexts;
+ NewSinceMaps newSinceMaps;
+ static QString sinceTitles[];
+ NewClassMaps newClassMaps;
+ NewClassMaps newQmlClassMaps;
static int id;
static QString ditaTags[];
QStack<QXmlStreamWriter*> xmlWriterStack;
diff --git a/tools/qdoc3/doc.cpp b/tools/qdoc3/doc.cpp
index f1f1418..f0c4264 100644
--- a/tools/qdoc3/doc.cpp
+++ b/tools/qdoc3/doc.cpp
@@ -828,7 +828,7 @@ void DocParser::parse(const QString& source,
append(Atom::AnnotatedList, getArgument());
break;
case CMD_SINCELIST:
- append(Atom::SinceList, getRestOfLine().simplified());
+ append(Atom::SinceList, getArgument());
break;
case CMD_GENERATELIST:
append(Atom::GeneratedList, getArgument());
diff --git a/tools/qdoc3/generator.cpp b/tools/qdoc3/generator.cpp
index c20d2b4..3367301 100644
--- a/tools/qdoc3/generator.cpp
+++ b/tools/qdoc3/generator.cpp
@@ -77,25 +77,6 @@ QString Generator::outDir;
QString Generator::project;
QHash<QString, QString> Generator::outputPrefixes;
-QString Generator::sinceTitles[] =
- {
- " New Namespaces",
- " New Classes",
- " New Member Functions",
- " New Functions in Namespaces",
- " New Global Functions",
- " New Macros",
- " New Enum Types",
- " New Typedefs",
- " New Properties",
- " New Variables",
- " New QML Elements",
- " New QML Properties",
- " New QML Signals",
- " New QML Methods",
- ""
- };
-
static void singularPlural(Text& text, const NodeList& nodes)
{
if (nodes.count() == 1)
@@ -779,18 +760,8 @@ QString Generator::typeString(const Node *node)
case Node::Class:
return "class";
case Node::Fake:
- {
- switch (node->subType()) {
- case Node::QmlClass:
- return "element";
- case Node::QmlPropertyGroup:
- return "property group";
- case Node::QmlBasicType:
- return "type";
- default:
- return "documentation";
- }
- }
+ default:
+ return "documentation";
case Node::Enum:
return "enum";
case Node::Typedef:
@@ -799,8 +770,6 @@ QString Generator::typeString(const Node *node)
return "function";
case Node::Property:
return "property";
- default:
- return "documentation";
}
}
@@ -1122,21 +1091,11 @@ void Generator::generateSince(const Node *node, CodeMarker *marker)
text << " was introduced or modified in ";
else
text << " was introduced in ";
-
- QStringList since = node->since().split(" ");
- if (since.count() == 1) {
- // Handle legacy use of \since <version>.
- if (project.isEmpty())
- text << "version";
- else
- text << project;
- text << " " << since[0];
- } else {
- // Reconstruct the <project> <version> string.
- text << " " << since.join(" ");
- }
-
- text << "." << Atom::ParaRight;
+ if (project.isEmpty())
+ text << "version";
+ else
+ text << project;
+ text << " " << node->since() << "." << Atom::ParaRight;
generateText(text, node, marker);
}
}
@@ -1387,91 +1346,4 @@ QStringList Generator::getMetadataElements(const InnerNode* inner, const QString
return s;
}
-/*!
- For generating the "New Classes... in 4.6" section on the
- What's New in 4.6" page.
- */
-void Generator::findAllSince(const InnerNode *node)
-{
- NodeList::const_iterator child = node->childNodes().constBegin();
-
- // Traverse the tree, starting at the node supplied.
-
- while (child != node->childNodes().constEnd()) {
-
- QString sinceString = (*child)->since();
-
- if (((*child)->access() != Node::Private) && !sinceString.isEmpty()) {
-
- // Insert a new entry into each map for each new since string found.
- NewSinceMaps::iterator nsmap = newSinceMaps.find(sinceString);
- if (nsmap == newSinceMaps.end())
- nsmap = newSinceMaps.insert(sinceString,NodeMultiMap());
-
- NewClassMaps::iterator ncmap = newClassMaps.find(sinceString);
- if (ncmap == newClassMaps.end())
- ncmap = newClassMaps.insert(sinceString,NodeMap());
-
- NewClassMaps::iterator nqcmap = newQmlClassMaps.find(sinceString);
- if (nqcmap == newQmlClassMaps.end())
- nqcmap = newQmlClassMaps.insert(sinceString,NodeMap());
-
- if ((*child)->type() == Node::Function) {
- // Insert functions into the general since map.
- FunctionNode *func = static_cast<FunctionNode *>(*child);
- if ((func->status() > Node::Obsolete) &&
- (func->metaness() != FunctionNode::Ctor) &&
- (func->metaness() != FunctionNode::Dtor)) {
- nsmap.value().insert(func->name(),(*child));
- }
- }
- else if ((*child)->url().isEmpty()) {
- if ((*child)->type() == Node::Class && !(*child)->doc().isEmpty()) {
- // Insert classes into the since and class maps.
- QString className = (*child)->name();
- if ((*child)->parent() &&
- (*child)->parent()->type() == Node::Namespace &&
- !(*child)->parent()->name().isEmpty())
- className = (*child)->parent()->name()+"::"+className;
-
- nsmap.value().insert(className,(*child));
- ncmap.value().insert(className,(*child));
- }
- else if ((*child)->subType() == Node::QmlClass) {
- // Insert QML elements into the since and element maps.
- QString className = (*child)->name();
- if ((*child)->parent() &&
- (*child)->parent()->type() == Node::Namespace &&
- !(*child)->parent()->name().isEmpty())
- className = (*child)->parent()->name()+"::"+className;
-
- nsmap.value().insert(className,(*child));
- nqcmap.value().insert(className,(*child));
- }
- else if ((*child)->type() == Node::QmlProperty) {
- // Insert QML properties into the since map.
- QString propertyName = (*child)->name();
- nsmap.value().insert(propertyName,(*child));
- }
- }
- else {
- // Insert external documents into the general since map.
- QString name = (*child)->name();
- if ((*child)->parent() &&
- (*child)->parent()->type() == Node::Namespace &&
- !(*child)->parent()->name().isEmpty())
- name = (*child)->parent()->name()+"::"+name;
-
- nsmap.value().insert(name,(*child));
- }
-
- // Find child nodes with since commands.
- if ((*child)->isInnerNode()) {
- findAllSince(static_cast<InnerNode *>(*child));
- }
- }
- ++child;
- }
-}
-
QT_END_NAMESPACE
diff --git a/tools/qdoc3/generator.h b/tools/qdoc3/generator.h
index e66915b..bac7c61 100644
--- a/tools/qdoc3/generator.h
+++ b/tools/qdoc3/generator.h
@@ -158,7 +158,6 @@ class Generator
QString getMetadataElement(const InnerNode* inner, const QString& t);
QStringList getMetadataElements(const InnerNode* inner, const QString& t);
- void findAllSince(const InnerNode *node);
private:
void generateReimplementedFrom(const FunctionNode *func,
@@ -187,11 +186,6 @@ class Generator
const NodeList& subs,
CodeMarker *marker);
- static QString sinceTitles[];
- NewSinceMaps newSinceMaps;
- NewClassMaps newClassMaps;
- NewClassMaps newQmlClassMaps;
-
private:
QString amp;
QString lt;
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index a6ba981..e79e180 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -612,18 +612,14 @@ int HtmlGenerator::generateAtom(const Atom *atom,
ncmap = newClassMaps.find(atom->string());
NewClassMaps::const_iterator nqcmap;
nqcmap = newQmlClassMaps.find(atom->string());
-
if ((nsmap != newSinceMaps.constEnd()) && !nsmap.value().isEmpty()) {
QList<Section> sections;
QList<Section>::ConstIterator s;
-
for (int i=0; i<LastSinceType; ++i)
sections.append(Section(sinceTitle(i),QString(),QString(),QString()));
NodeMultiMap::const_iterator n = nsmap.value().constBegin();
-
while (n != nsmap.value().constEnd()) {
-
const Node* node = n.value();
switch (node->type()) {
case Node::Fake:
@@ -1365,7 +1361,6 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
// Generate brief text and status for modules.
generateBrief(fake, marker);
generateStatus(fake, marker);
- generateSince(fake, marker);
if (moduleNamespaceMap.contains(fake->name())) {
out() << "<a name=\"" << registerRef("namespaces") << "\"></a>" << divNavTop << "\n";
@@ -1382,7 +1377,6 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
// Generate brief text and status for modules.
generateBrief(fake, marker);
generateStatus(fake, marker);
- generateSince(fake, marker);
out() << "<ul>\n";
@@ -1414,7 +1408,6 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
generateQmlInherits(qml_cn, marker);
generateQmlInheritedBy(qml_cn, marker);
generateQmlInstantiates(qml_cn, marker);
- generateSince(qml_cn, marker);
QString allQmlMembersLink = generateAllQmlMembersFile(qml_cn, marker);
if (!allQmlMembersLink.isEmpty()) {
@@ -2265,6 +2258,9 @@ void HtmlGenerator::generateCompactList(const Node *relative,
for (int i=0; i<NumParagraphs; i++) // i = 0..36
paragraphOffset[i+1] = paragraphOffset[i] + paragraph[i].count();
+ int curParNr = 0;
+ int curParOffset = 0;
+
/*
Output the alphabet as a row of links.
*/
@@ -2282,12 +2278,8 @@ void HtmlGenerator::generateCompactList(const Node *relative,
Output a <div> element to contain all the <dl> elements.
*/
out() << "<div class=\"flowListDiv\">\n";
- numTableRows = 0;
- int curParNr = 0;
- int curParOffset = 0;
-
- for (int i=0; i<classMap.count(); i++) {
+ for (int i=0; i<classMap.count()-1; i++) {
while ((curParNr < NumParagraphs) &&
(curParOffset == paragraph[curParNr].count())) {
++curParNr;
@@ -2348,9 +2340,7 @@ void HtmlGenerator::generateCompactList(const Node *relative,
out() << "</dd>\n";
curParOffset++;
}
- if (classMap.count() > 0)
- out() << "</dl>\n";
-
+ out() << "</dl>\n";
out() << "</div>\n";
}
@@ -3383,6 +3373,70 @@ void HtmlGenerator::findAllClasses(const InnerNode *node)
}
}
+/*!
+ For generating the "New Classes... in 4.6" section on the
+ What's New in 4.6" page.
+ */
+void HtmlGenerator::findAllSince(const InnerNode *node)
+{
+ NodeList::const_iterator child = node->childNodes().constBegin();
+ while (child != node->childNodes().constEnd()) {
+ QString sinceVersion = (*child)->since();
+ if (((*child)->access() != Node::Private) && !sinceVersion.isEmpty()) {
+ NewSinceMaps::iterator nsmap = newSinceMaps.find(sinceVersion);
+ if (nsmap == newSinceMaps.end())
+ nsmap = newSinceMaps.insert(sinceVersion,NodeMultiMap());
+ NewClassMaps::iterator ncmap = newClassMaps.find(sinceVersion);
+ if (ncmap == newClassMaps.end())
+ ncmap = newClassMaps.insert(sinceVersion,NodeMap());
+ NewClassMaps::iterator nqcmap = newQmlClassMaps.find(sinceVersion);
+ if (nqcmap == newQmlClassMaps.end())
+ nqcmap = newQmlClassMaps.insert(sinceVersion,NodeMap());
+
+ if ((*child)->type() == Node::Function) {
+ FunctionNode *func = static_cast<FunctionNode *>(*child);
+ if ((func->status() > Node::Obsolete) &&
+ (func->metaness() != FunctionNode::Ctor) &&
+ (func->metaness() != FunctionNode::Dtor)) {
+ nsmap.value().insert(func->name(),(*child));
+ }
+ }
+ else if ((*child)->url().isEmpty()) {
+ if ((*child)->type() == Node::Class && !(*child)->doc().isEmpty()) {
+ QString className = (*child)->name();
+ if ((*child)->parent() &&
+ (*child)->parent()->type() == Node::Namespace &&
+ !(*child)->parent()->name().isEmpty())
+ className = (*child)->parent()->name()+"::"+className;
+ nsmap.value().insert(className,(*child));
+ ncmap.value().insert(className,(*child));
+ }
+ else if ((*child)->subType() == Node::QmlClass) {
+ QString className = (*child)->name();
+ if ((*child)->parent() &&
+ (*child)->parent()->type() == Node::Namespace &&
+ !(*child)->parent()->name().isEmpty())
+ className = (*child)->parent()->name()+"::"+className;
+ nsmap.value().insert(className,(*child));
+ nqcmap.value().insert(className,(*child));
+ }
+ }
+ else {
+ QString name = (*child)->name();
+ if ((*child)->parent() &&
+ (*child)->parent()->type() == Node::Namespace &&
+ !(*child)->parent()->name().isEmpty())
+ name = (*child)->parent()->name()+"::"+name;
+ nsmap.value().insert(name,(*child));
+ }
+ if ((*child)->isInnerNode()) {
+ findAllSince(static_cast<InnerNode *>(*child));
+ }
+ }
+ ++child;
+ }
+}
+
void HtmlGenerator::findAllFunctions(const InnerNode *node)
{
NodeList::ConstIterator c = node->childNodes().begin();
diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h
index 62a7f605..70508a0 100644
--- a/tools/qdoc3/htmlgenerator.h
+++ b/tools/qdoc3/htmlgenerator.h
@@ -56,6 +56,12 @@
QT_BEGIN_NAMESPACE
+typedef QMultiMap<QString, Node*> NodeMultiMap;
+typedef QMap<QString, NodeMultiMap> NewSinceMaps;
+typedef QMap<Node*, NodeMultiMap> ParentMaps;
+typedef QMap<QString, const Node*> NodeMap;
+typedef QMap<QString, NodeMap> NewClassMaps;
+
class HelpProjectWriter;
class HtmlGenerator : public PageGenerator
@@ -221,6 +227,7 @@ class HtmlGenerator : public PageGenerator
void findAllFunctions(const InnerNode *node);
void findAllLegaleseTexts(const InnerNode *node);
void findAllNamespaces(const InnerNode *node);
+ void findAllSince(const InnerNode *node);
static int hOffset(const Node *node);
static bool isThreeColumnEnumValueTable(const Atom *atom);
virtual QString getLink(const Atom *atom,
@@ -289,6 +296,10 @@ class HtmlGenerator : public PageGenerator
NodeMap qmlClasses;
QMap<QString, NodeMap > funcIndex;
QMap<Text, const Node *> legaleseTexts;
+ NewSinceMaps newSinceMaps;
+ static QString sinceTitles[];
+ NewClassMaps newClassMaps;
+ NewClassMaps newQmlClassMaps;
static int id;
public:
static bool debugging_on;
diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp
index e8ef397..b1d94e2 100644
--- a/tools/qdoc3/node.cpp
+++ b/tools/qdoc3/node.cpp
@@ -155,16 +155,6 @@ void Node::setLink(LinkType linkType, const QString &link, const QString &desc)
}
/*!
- Sets the information about the project and version a node was introduced
- in. The string is simplified, removing excess whitespace before being
- stored.
-*/
-void Node::setSince(const QString &since)
-{
- sinc = since.simplified();
-}
-
-/*!
Returns a string representing the access specifier.
*/
QString Node::accessString() const
@@ -585,7 +575,8 @@ void InnerNode::removeFromRelated()
*/
void InnerNode::deleteChildren()
{
- qDeleteAll(children);
+ NodeList childrenCopy = children; // `children` will be changed in ~Node()
+ qDeleteAll(childrenCopy);
}
/*!
diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h
index a08151a..3b031b6 100644
--- a/tools/qdoc3/node.h
+++ b/tools/qdoc3/node.h
@@ -159,7 +159,7 @@ class Node
void setDoc(const Doc& doc, bool replace = false);
void setStatus(Status status) { sta = status; }
void setThreadSafeness(ThreadSafeness safeness) { saf = safeness; }
- void setSince(const QString &since);
+ void setSince(const QString &since) { sinc = since; }
void setRelates(InnerNode* pseudoParent);
void setModuleName(const QString &module) { mod = module; }
void setLink(LinkType linkType, const QString &link, const QString &desc);
diff --git a/tools/runonphone/main.cpp b/tools/runonphone/main.cpp
index 868a2a8..af349eb 100644
--- a/tools/runonphone/main.cpp
+++ b/tools/runonphone/main.cpp
@@ -65,7 +65,7 @@ void printUsage(QTextStream& outstream, QString exeName)
<< "-t, --timeout <milliseconds> terminate test if timeout occurs" << endl
<< "-v, --verbose show debugging output" << endl
<< "-q, --quiet hide progress messages" << endl
- << "-u, --upload <local file> upload executable file to phone" << endl
+ << "-u, --upload <local file> <remote file> upload file to phone" << endl
<< "-d, --download <remote file> <local file> copy file from phone to PC after running test" << endl
<< "--nocrashlog Don't capture call stack if test crashes" << endl
<< "--crashlogpath <dir> Path to save crash logs (default=working dir)" << endl
@@ -91,6 +91,7 @@ int main(int argc, char *argv[])
QTextStream outstream(stdout);
QTextStream errstream(stderr);
QString uploadLocalFile;
+ QString uploadRemoteFile;
QString downloadRemoteFile;
QString downloadLocalFile;
int loglevel=1;
@@ -127,10 +128,8 @@ int main(int argc, char *argv[])
errstream << "Executable file (" << uploadLocalFile << ") doesn't exist" << endl;
return 1;
}
- if (!(QFileInfo(uploadLocalFile).suffix() == "exe")) {
- errstream << "File (" << uploadLocalFile << ") must be an executable" << endl;
- return 1;
- }
+ CHECK_PARAMETER_EXISTS
+ uploadRemoteFile = it.next();
}
else if (arg == "--download" || arg == "-d") {
CHECK_PARAMETER_EXISTS
@@ -174,7 +173,8 @@ int main(int argc, char *argv[])
}
}
- if (exeFile.isEmpty() && sisFile.isEmpty() && uploadLocalFile.isEmpty() &&
+ if (exeFile.isEmpty() && sisFile.isEmpty() &&
+ (uploadLocalFile.isEmpty() || uploadRemoteFile.isEmpty()) &&
(downloadLocalFile.isEmpty() || downloadRemoteFile.isEmpty())) {
printUsage(outstream, args[0]);
return 1;
@@ -230,8 +230,7 @@ int main(int argc, char *argv[])
}
else if (!uploadLocalFile.isEmpty() && uploadInfo.exists()) {
codaHandler.setActionType(ActionCopy);
- QString dstName = QString("c:\\sys\\bin\\") + uploadInfo.fileName();
- codaHandler.setCopyFileName(uploadLocalFile, dstName);
+ codaHandler.setCopyFileName(uploadLocalFile, uploadRemoteFile);
}
if (!exeFile.isEmpty()) {
codaHandler.setActionType(ActionRun);
@@ -254,19 +253,20 @@ int main(int argc, char *argv[])
} else {
launcher.reset(new trk::Launcher(trk::Launcher::ActionPingOnly));
+ QStringList srcNames, dstNames;
if (!sisFile.isEmpty()) {
launcher->addStartupActions(trk::Launcher::ActionCopyInstall);
- QStringList srcName(sisFile);
- QStringList dstName("c:\\data\\testtemp.sis");
- launcher->setCopyFileNames(srcName, dstName);
- launcher->setInstallFileNames(dstName);
+ srcNames.append(sisFile);
+ QLatin1String dstName("c:\\data\\testtemp.sis");
+ dstNames.append(dstName);
+ launcher->setInstallFileNames(QStringList(dstName));
}
- else if (!uploadLocalFile.isEmpty() && uploadInfo.exists()) {
+ if (!uploadLocalFile.isEmpty() && uploadInfo.exists()) {
launcher->addStartupActions(trk::Launcher::ActionCopy);
- QStringList srcName(uploadLocalFile);
- QStringList dstName(QString("c:\\sys\\bin\\") + uploadInfo.fileName());
- launcher->setCopyFileNames(srcName, dstName);
+ srcNames.append(uploadLocalFile);
+ dstNames.append(uploadRemoteFile);
}
+ launcher->setCopyFileNames(srcNames, dstNames);
if (!exeFile.isEmpty()) {
launcher->addStartupActions(trk::Launcher::ActionRun);
launcher->setFileName(QString("c:\\sys\\bin\\") + info.fileName());