summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit
diff options
context:
space:
mode:
authorAdemar de Souza Reis Jr <ademar.reis@openbossa.org>2011-08-09 17:04:35 -0300
committerAdemar de Souza Reis Jr <ademar.reis@openbossa.org>2011-08-11 11:43:52 -0300
commitea0cb7ad2066d9c3dc695ab2ebe724249b05ca0f (patch)
tree745c8b9f6713f131bca29daa110f881c643be2ae /src/3rdparty/webkit
parent54fc0f9f4c00ec53339b9c4c6b18e4c066b11a0b (diff)
Updated WebKit to 66b76cdb8ef823f27a8229c5cae2d35e7f2d3c59
Signed-off-by: Ademar de Souza Reis Jr <ademar.reis@openbossa.org>
Diffstat (limited to 'src/3rdparty/webkit')
-rw-r--r--src/3rdparty/webkit/.tag2
-rw-r--r--src/3rdparty/webkit/ChangeLog13
-rw-r--r--src/3rdparty/webkit/Source/JavaScriptCore/ChangeLog157
-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/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.h12
-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/StringStatics.cpp31
-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/ChangeLog746
-rw-r--r--src/3rdparty/webkit/Source/WebCore/WebCore.exp.in8
-rw-r--r--src/3rdparty/webkit/Source/WebCore/WebCore.pri12
-rw-r--r--src/3rdparty/webkit/Source/WebCore/WebCore.pro34
-rw-r--r--src/3rdparty/webkit/Source/WebCore/bindings/generic/ActiveDOMCallback.cpp46
-rw-r--r--src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h86
-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/Range.cpp37
-rw-r--r--src/3rdparty/webkit/Source/WebCore/editing/ReplaceSelectionCommand.cpp2
-rw-r--r--src/3rdparty/webkit/Source/WebCore/editing/TextIterator.cpp3
-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/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/HTMLSourceElement.cpp6
-rw-r--r--src/3rdparty/webkit/Source/WebCore/html/HTMLTrackElement.cpp6
-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/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/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.h10
-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/RenderBlock.cpp2
-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/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/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/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.pri1
-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/qwebview.cpp2
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/ChangeLog249
-rw-r--r--src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro26
-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/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.cpp190
-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
139 files changed, 8663 insertions, 4752 deletions
diff --git a/src/3rdparty/webkit/.tag b/src/3rdparty/webkit/.tag
index f786b789a2..2b42a2026a 100644
--- a/src/3rdparty/webkit/.tag
+++ b/src/3rdparty/webkit/.tag
@@ -1 +1 @@
-a52dbae362a295e0adfb7ee4fdc21734ae4b7b45
+66b76cdb8ef823f27a8229c5cae2d35e7f2d3c59
diff --git a/src/3rdparty/webkit/ChangeLog b/src/3rdparty/webkit/ChangeLog
index 96ef59167e..bc11b4dca3 100644
--- a/src/3rdparty/webkit/ChangeLog
+++ b/src/3rdparty/webkit/ChangeLog
@@ -1,3 +1,16 @@
+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 ae7ef60dc4..3cc612a1c7 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/ChangeLog
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/ChangeLog
@@ -1,3 +1,160 @@
+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 f6d064f82d..d8290cfe4e 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 6ef8e18564..5f63749b47 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 f36c668d9e..5f6d8cf345 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 8742fdcb04..27a508a2ce 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/wtf/ByteArray.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/ByteArray.h
index bdec630b4d..47b1cff43e 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 d414eae638..b181ee2152 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 c0e7bd3f7e..9c4319d2cc 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 eba5b03302..d396379511 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 716d9e1a1b..55f0b58b3a 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
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/StackBounds.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/StackBounds.cpp
index 41e0d60e58..6b61270cc0 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 440700c198..cc451e860d 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/StringStatics.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringStatics.cpp
index ce087286ef..c5a8b43549 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/wtf.pri b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/wtf.pri
index 10b41e4def..5e48f9a501 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) {
+ 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 ece2379f1b..f3356b18ec 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 285bb2a87b..95c3054b85 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 849f4c4b81..faf31cab64 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 ba7ad68ad1..121b2d80e8 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 b955ebf2f9..918eccd19b 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 fae32cb29b..d76ce1398f 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 33f7056346..dc5db8e4da 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 91ebf1e59d..90fbc6d30e 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 568325565c..778d9c90f0 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 4a2aa07837..ca41487bbd 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 f155939ebe..d5f661d905 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 90ef886193..1b052c9a24 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 f155939ebe..d5f661d905 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 90ef886193..1b052c9a24 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 90ef886193..1b052c9a24 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 128c2e3fc3..04c79012ee 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 f112cba844..2e34c2e8ba 100644
--- a/src/3rdparty/webkit/Source/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/Source/WebCore/ChangeLog
@@ -1,3 +1,738 @@
+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 +977,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/WebCore.exp.in b/src/3rdparty/webkit/Source/WebCore/WebCore.exp.in
index 83317a8bde..a183d660fb 100644
--- a/src/3rdparty/webkit/Source/WebCore/WebCore.exp.in
+++ b/src/3rdparty/webkit/Source/WebCore/WebCore.exp.in
@@ -389,6 +389,7 @@ __ZN7WebCore15DatabaseTracker8setQuotaEPNS_14SecurityOriginEy
__ZN7WebCore15DatabaseTracker9setClientEPNS_21DatabaseTrackerClientE
__ZN7WebCore15FocusController10setFocusedEb
__ZN7WebCore15FocusController15setFocusedFrameEN3WTF10PassRefPtrINS_5FrameEEE
+__ZN7WebCore15FocusController14setFocusedNodeEPNS_4NodeEN3WTF10PassRefPtrINS_5FrameEEE
__ZN7WebCore15FocusController15setInitialFocusENS_14FocusDirectionEPNS_13KeyboardEventE
__ZN7WebCore15FocusController9setActiveEb
__ZN7WebCore15GraphicsContext12setFillColorERKNS_5ColorENS_10ColorSpaceE
@@ -1325,6 +1326,8 @@ _wkCopyNSURLResponseStatusLine
_wkCopyRequestWithStorageSession
_wkCreateCTLineWithUniCharProvider
_wkCreateCustomCFReadStream
+_wkCreateMediaUIBackgroundView
+_wkCreateMediaUIControl
_wkCreateNSURLConnectionDelegateProxy
_wkCreatePrivateStorageSession
_wkCreateURLNPasteboardFlavorTypeName
@@ -1394,6 +1397,8 @@ _wkSignalCFReadStreamEnd
_wkSignalCFReadStreamError
_wkSignalCFReadStreamHasBytes
_wkSignedPublicKeyAndChallengeString
+_wkWindowSetAlpha
+_wkWindowSetScaledFrame
#if ENABLE(DOM_STORAGE)
__ZN7WebCore14StorageTracker17initializeTrackerERKN3WTF6StringE
@@ -1800,6 +1805,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.pri b/src/3rdparty/webkit/Source/WebCore/WebCore.pri
index 4ba1117614..97644edaf2 100644
--- a/src/3rdparty/webkit/Source/WebCore/WebCore.pri
+++ b/src/3rdparty/webkit/Source/WebCore/WebCore.pri
@@ -242,26 +242,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 +339,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 107ff351fd..141290dd20 100644
--- a/src/3rdparty/webkit/Source/WebCore/WebCore.pro
+++ b/src/3rdparty/webkit/Source/WebCore/WebCore.pro
@@ -2934,31 +2934,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 +2991,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 ff02a4205f..86bfc56aec 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/JSExceptionBase.h b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h
index a9366ed704..01c6ac24e2 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/css/CSSStyleSelector.h b/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSelector.h
index a9b0c3e5ba..1fe4ea2e95 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 16c2ba890e..37e5c2a96b 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 6e2f5ece5b..0948592d71 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 e7bfbc0f1b..32e47cab42 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/Range.cpp b/src/3rdparty/webkit/Source/WebCore/dom/Range.cpp
index be196c8857..0c247c2e3e 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/editing/ReplaceSelectionCommand.cpp b/src/3rdparty/webkit/Source/WebCore/editing/ReplaceSelectionCommand.cpp
index 279bb35bce..a256bd167b 100644
--- a/src/3rdparty/webkit/Source/WebCore/editing/ReplaceSelectionCommand.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/editing/ReplaceSelectionCommand.cpp
@@ -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/TextIterator.cpp b/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.cpp
index b09c226732..3de365b657 100644
--- a/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.cpp
+++ b/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.cpp
@@ -2563,6 +2563,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/features.pri b/src/3rdparty/webkit/Source/WebCore/features.pri
index c56c9fc520..2db8eb5c9c 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) {
+ 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 1da5e2f85c..df97459281 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 59225d8cf5..2fcae75396 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 945ba7df48..1294a3409b 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 92c75411c8..081d3239b7 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 da31ef88c7..3b09b89e34 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 566700900e..e0a2b4fcc3 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/JSWebGLRenderingContext.cpp b/src/3rdparty/webkit/Source/WebCore/generated/JSWebGLRenderingContext.cpp
index 6f38364fe3..e2a03c21e8 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 dc82e12c6c..4e5cb97687 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 291127260f..fa6a7b3a9c 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/HTMLSourceElement.cpp b/src/3rdparty/webkit/Source/WebCore/html/HTMLSourceElement.cpp
index 59b388262e..0631a200c1 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/HTMLTrackElement.cpp b/src/3rdparty/webkit/Source/WebCore/html/HTMLTrackElement.cpp
index 63f2788b88..4de878bf5e 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/shadow/MediaControlElements.cpp b/src/3rdparty/webkit/Source/WebCore/html/shadow/MediaControlElements.cpp
index ac5d5e2804..c3bfb9a6a8 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 09d1258bf9..c80de510d0 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 75daae56f3..1b046b3a64 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 f2b16d9162..728459cbf8 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 0f205da508..8e5038af76 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 37639ebecf..2812ce76e2 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 d1d60ad7d5..a86c1afeb0 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/FrameView.cpp b/src/3rdparty/webkit/Source/WebCore/page/FrameView.cpp
index b7ff00acd9..3dadbf33a9 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 fc5b1c6e91..b93379a482 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 b52ad456b7..ec48f6e465 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 6c8b3120eb..660ad11b9d 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 873937ab68..aadff475fd 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/platform/graphics/gstreamer/PlatformVideoWindowQt.cpp b/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowQt.cpp
index a442a2b4d0..72707851af 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 c71c411b19..9f5c44e8a8 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 7ebfaabee7..9e0584048f 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 9cc66777da..94191b7fc6 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 0000000000..88df1d6f90
--- /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 0000000000..a943fce9cc
--- /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 0000000000..92bf776a5e
--- /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 0000000000..63f15a223e
--- /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 0000000000..ecf975bdb5
--- /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 0000000000..1b1189497c
--- /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 59cbcbe51d..3541e1ef68 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 bd530de86b..40cb449614 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,8 @@ 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);
}
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.mm b/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.mm
index 3e26671c56..868cbd9f08 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 fd2b0b0fc1..b020946e1b 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/RenderBlock.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlock.cpp
index a212dd4809..a4d666e11d 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);
}
diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlockLineLayout.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlockLineLayout.cpp
index b0b10e3e27..2e928018c7 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 0b33abe8ab..9c2aa48f52 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 258f213d1d..08dc922045 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 b55bd9d442..2a3b32c275 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 366d9e73dd..1ce79d4831 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 5fb86834e6..5bd726dbda 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 32f133c0f3..4b50acb2d6 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 537f08a2b3..44ee43cbe2 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 c27d336591..09a7944f1e 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 d6ebba6642..29fc71c26c 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/RenderThemeWinCE.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderThemeWinCE.cpp
index a56ab3ea47..a22ed8c887 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 894d689a5c..97444cdb4a 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 02a85cea5d..fdfd92d01d 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 1d0043bbe5..8992a2a713 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 42eb8e865e..412172360b 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 f8d818a351..96abd87525 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 6b9c085cb5..0fba66b50f 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 2a8c52f016..f24c16f3e0 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/SVGTextContentElement.cpp b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.cpp
index 4021b4feca..35f04016f3 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 94bba70c80..222a06d6a6 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 cd714c31d0..ebd4789231 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 5e6dadc648..aa8792f795 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 cea8f0d304..d8f9674251 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/xml/XPathFunctions.cpp b/src/3rdparty/webkit/Source/WebCore/xml/XPathFunctions.cpp
index d343a59cd0..1807172451 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 2a6482fe98..d70d30931f 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 1dcde2e7fc..7377509a07 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 309357cbee..00d0db1f60 100644
--- a/src/3rdparty/webkit/Source/WebKit.pri
+++ b/src/3rdparty/webkit/Source/WebKit.pri
@@ -157,6 +157,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 ac05a54450..20f61f5311 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 026a7df4cf..5ea7059132 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/qwebview.cpp b/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebview.cpp
index f4b23f31bb..76b927bace 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 d7021422fd..a9d5e7a176 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog
+++ b/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog
@@ -1,3 +1,252 @@
+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-05 Rafael Brandao <rafael.lobo@openbossa.org>
+
+ [Qt] Fix tst_QWebFrame::setHtmlWithResource() API test
+ https://bugs.webkit.org/show_bug.cgi?id=63235
+
+ Modified baseUrl to be a local file in order to get a security origin
+ that is allowed to request local resources. Removed QSignalSpy from it
+ as loadFinished always happens, and the original test was split into two.
+
+ Reviewed by Benjamin Poulain.
+
+ * tests/qwebframe/tst_qwebframe.cpp:
+ (tst_QWebFrame::setHtmlWithImageResource):
+ (tst_QWebFrame::setHtmlWithStylesheetResource):
+ (tst_QWebFrame::setHtmlWithBaseURL):
+
+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.
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro b/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro
index e07f6990bb..0c5ca2f8a1 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro
+++ b/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro
@@ -218,30 +218,38 @@ 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
+ LIBS+= $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.a
} else {
equals(DARWIN_MAJOR_VERSION, "9") {
- LIBS+= $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceLeopard.a -framework Security
+ 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 ea2c826850..a199f78e87 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 814a192689..f1b7b8eacf 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/FrameLoaderClientQt.cpp b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
index 68aecdacc3..8971fc41c0 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 6cfd9c1ae4..1be365dc59 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 ef97f3aac5..b1a6e0f6e6 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 fda153d07e..06438ea462 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 0000000000..39af1012e3
--- /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 0000000000..5e94442b97
--- /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 7ff2ec8b15..8354af9618 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 6ba13462cc..22ee579dc7 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 f1a545e846..c93213c97e 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 176b9a1832..d948de4a54 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 b01d43f7ac..2a4ee9de32 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 41107c3115..c4b9ae6cbb 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 dd4f6fd4de..38a9fe5486 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 4b0e30ca5c..ee0f64d1b1 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 8957a5d8ae..483e94e1de 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 f2bdcee3ff..b423317649 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
@@ -619,7 +619,8 @@ private slots:
void javaScriptWindowObjectCleared();
void javaScriptWindowObjectClearedOnEvaluate();
void setHtml();
- void setHtmlWithResource();
+ void setHtmlWithImageResource();
+ void setHtmlWithStylesheetResource();
void setHtmlWithBaseURL();
void setHtmlWithJSAlert();
void ipv6HostEncoding();
@@ -658,6 +659,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 +2305,8 @@ class FakeReply : public QNetworkReply {
Q_OBJECT
public:
+ static const QUrl urlFor404ErrorWithoutContents;
+
FakeReply(const QNetworkRequest& request, QObject* parent = 0)
: QNetworkReply(parent)
{
@@ -2320,6 +2326,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 +2361,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 +2374,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);
}
@@ -2488,26 +2500,37 @@ void tst_QWebFrame::setHtml()
QCOMPARE(spy.count(), 1);
}
-void tst_QWebFrame::setHtmlWithResource()
+void tst_QWebFrame::setHtmlWithImageResource()
{
- QString html("<html><body><p>hello world</p><img src='qrc:/image.png'/></body></html>");
+ // 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 and load the local image.
+ QLatin1String html("<html><body><p>hello world</p><img src='qrc:/image.png'/></body></html>");
QWebPage page;
QWebFrame* frame = page.mainFrame();
- // in few seconds, the image should be completey loaded
- QSignalSpy spy(&page, SIGNAL(loadFinished(bool)));
- frame->setHtml(html);
+ frame->setHtml(html, QUrl(QLatin1String("file:///path/to/file")));
waitForSignal(frame, SIGNAL(loadFinished(bool)), 200);
- 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 =
+ // Now we test the opposite: without a baseUrl as a local file, we cannot request local resources.
+
+ frame->setHtml(html);
+ waitForSignal(frame, SIGNAL(loadFinished(bool)), 200);
+ QCOMPARE(frame->evaluateJavaScript("document.images.length").toInt(), 1);
+ QCOMPARE(frame->evaluateJavaScript("document.images[0].width").toInt(), 0);
+ QCOMPARE(frame->evaluateJavaScript("document.images[0].height").toInt(), 0);
+}
+
+void tst_QWebFrame::setHtmlWithStylesheetResource()
+{
+ // 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 be able to download the local stylesheet.
+
+ const char* htmlData =
"<html>"
"<head>"
"<link rel='stylesheet' href='qrc:/style.css' type='text/css' />"
@@ -2516,19 +2539,29 @@ void tst_QWebFrame::setHtmlWithResource()
"<p id='idP'>some text</p>"
"</body>"
"</html>";
+ QLatin1String html(htmlData);
+ QWebPage page;
+ QWebFrame* frame = page.mainFrame();
+ QWebElement webElement;
- // in few seconds, the CSS should be completey loaded
- frame->setHtml(html2);
+ frame->setHtml(html, QUrl(QLatin1String("qrc:///file")));
waitForSignal(frame, SIGNAL(loadFinished(bool)), 200);
- QCOMPARE(spy.size(), 2);
+ webElement = frame->documentElement().findFirst("p");
+ QCOMPARE(webElement.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("red"));
+
+ // Now we test the opposite: without a baseUrl as a local file, we cannot request local resources.
- 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"));
+ frame->setHtml(html, QUrl(QLatin1String("http://www.example.com/")));
+ waitForSignal(frame, SIGNAL(loadFinished(bool)), 200);
+ webElement = frame->documentElement().findFirst("p");
+ QCOMPARE(webElement.styleProperty("color", QWebElement::CascadedStyle), QString());
}
void tst_QWebFrame::setHtmlWithBaseURL()
{
+ // This tests if baseUrl is indeed affecting the relative paths from resources.
+ // As we are using a local file as baseUrl, its security origin should be able to load local resources.
+
if (!QDir(TESTS_SOURCE_DIR).exists())
QSKIP(QString("This test requires access to resources found in '%1'").arg(TESTS_SOURCE_DIR).toLatin1().constData(), SkipAll);
@@ -2898,7 +2931,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 +2947,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 +2955,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
}
@@ -3658,5 +3690,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 359ef05c95..893c284315 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 b6e5afefec..be0c43d9bd 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 32c25e14da..312232670f 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 feb1e5c1f5..1962d8c76c 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 85f9e4f90c..34577525ce 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
+ 66b76cdb8ef823f27a8229c5cae2d35e7f2d3c59