diff options
Diffstat (limited to 'src')
487 files changed, 10533 insertions, 4894 deletions
diff --git a/src/3rdparty/webkit/.tag b/src/3rdparty/webkit/.tag index f786b78..a560e52 100644 --- a/src/3rdparty/webkit/.tag +++ b/src/3rdparty/webkit/.tag @@ -1 +1 @@ -a52dbae362a295e0adfb7ee4fdc21734ae4b7b45 +dda59e50379214c098f365a39c4d64b39ced427e diff --git a/src/3rdparty/webkit/ChangeLog b/src/3rdparty/webkit/ChangeLog index 96ef591..5f97e57 100644 --- a/src/3rdparty/webkit/ChangeLog +++ b/src/3rdparty/webkit/ChangeLog @@ -1,3 +1,39 @@ +2011-08-26 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org> + + [Qt] libwebcore.a source is compiled without -fvisibility=hidden + -fvisibility-inlines-hidden + https://bugs.webkit.org/show_bug.cgi?id=65470 + + Patch by Holger Freyther <zecke@selfish.org> + Rubberstamped by Andreas Kling. + + (qtwebkit-2.2 only by now) + + WTF_USE_EXPORT_MACROS is still not enabled on trunk because there are + pending issues with WebKit2, but it appears to be safe to enable this + on QtWebKit, so this change is being added to the qtwebkit-2.2 branch. + + The patch also adds CONFIG += hide_symbols and on Unix, += + bsymbolic_functions, which should help reduce the library binary size. + + Testing this is quite easy, so if there's any problem we'll soon + know. :-) + + * Source/WebKit.pri: + +2011-08-06 Aron Rosenberg <arosenberg@logitech.com> + + Reviewed by Benjamin Poulain. + + [Qt] Fix build with Intel compiler on Windows + https://bugs.webkit.org/show_bug.cgi?id=65088 + + Disable Intel Compiler warning 873 - function "" has no corresponding operator + delete (to be called if an exception is thrown during initialization of an + allocated object). + + * Source/WebKit.pri: + 2011-06-27 Alexis Menard <alexis.menard@openbossa.org> Reviewed by Kenneth Rohde Christiansen. diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/ChangeLog b/src/3rdparty/webkit/Source/JavaScriptCore/ChangeLog index ae7ef60..010e66a 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/ChangeLog +++ b/src/3rdparty/webkit/Source/JavaScriptCore/ChangeLog @@ -1,3 +1,210 @@ +2011-08-26 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org> + + [Qt] libwebcore.a source is compiled without -fvisibility=hidden + -fvisibility-inlines-hidden + https://bugs.webkit.org/show_bug.cgi?id=65470 + + Patch by Holger Freyther <zecke@selfish.org> + Rubberstamped by Andreas Kling. + + (qtwebkit-2.2 only by now) + + WTF_USE_EXPORT_MACROS is still not enabled on trunk because there are + pending issues with WebKit2, but it appears to be safe to enable this + on QtWebKit, so this change is being added to the qtwebkit-2.2 branch. + + The patch also adds CONFIG += hide_symbols and on Unix, += + bsymbolic_functions, which should help reduce the library binary size. + + Testing this is quite easy, so if there's any problem we'll soon + know. :-) + + * wtf/Platform.h: + +2011-07-08 Chang Shu <cshu@webkit.org> + + Rename "makeSecure" to "fill" and remove the support for displaying last character + to avoid layering violatation. + https://bugs.webkit.org/show_bug.cgi?id=59114 + + Reviewed by Alexey Proskuryakov. + + * JavaScriptCore.exp: + * JavaScriptCore.order: + * wtf/text/StringImpl.cpp: + (WTF::StringImpl::fill): + * wtf/text/StringImpl.h: + * wtf/text/WTFString.h: + (WTF::String::fill): + +2011-08-15 Gavin Barraclough <barraclough@apple.com> + + Crash accessing static property on sealed object + https://bugs.webkit.org/show_bug.cgi?id=66242 + + Reviewed by Sam Weinig. + + * runtime/JSObject.h: + (JSC::JSObject::putDirectInternal): + - should only check isExtensible if checkReadOnly. + +2011-08-06 Aron Rosenberg <arosenberg@logitech.com> + + Reviewed by Benjamin Poulain. + + [Qt] Fix build with Intel compiler on Windows + https://bugs.webkit.org/show_bug.cgi?id=65088 + + Intel compiler needs .lib suffixes instead of .a + Intel compiler doesn't support nullptr + Intel compiler supports unsized arrays + + * JavaScriptCore.pri: + * jsc.cpp: + * wtf/ByteArray.h: + * wtf/NullPtr.h: + +2011-05-15 Gavin Barraclough <barraclough@apple.com> + + Reviewed by Geoff Garen & Michael Saboff. + + https://bugs.webkit.org/show_bug.cgi?id=60860 + Simplify backtracking in YARR JIT + + YARR JIT currently performs a single pass of code generation over the pattern, + with special handling to allow the code generation for some backtracking code + out of line. We can simplify things by moving to a common mechanism whereby all + forwards matching code is generated in one pass, and all backtracking code is + generated in another. Backtracking code can be generated in reverse order, to + optimized the common fall-through case. + + To make it easier to walk over the pattern, we can first convert to a more + byte-code like format before JIT generating. In time we should unify this with + the YARR interpreter to more closely unify the two. + + * yarr/YarrJIT.cpp: + (JSC::Yarr::YarrGenerator::jumpIfNoAvailableInput): + (JSC::Yarr::YarrGenerator::YarrOp::YarrOp): + (JSC::Yarr::YarrGenerator::BacktrackingState::BacktrackingState): + (JSC::Yarr::YarrGenerator::BacktrackingState::append): + (JSC::Yarr::YarrGenerator::BacktrackingState::fallthrough): + (JSC::Yarr::YarrGenerator::BacktrackingState::link): + (JSC::Yarr::YarrGenerator::BacktrackingState::linkTo): + (JSC::Yarr::YarrGenerator::BacktrackingState::takeBacktracksToJumpList): + (JSC::Yarr::YarrGenerator::BacktrackingState::isEmpty): + (JSC::Yarr::YarrGenerator::BacktrackingState::linkDataLabels): + (JSC::Yarr::YarrGenerator::BacktrackingState::ReturnAddressRecord::ReturnAddressRecord): + (JSC::Yarr::YarrGenerator::generateAssertionBOL): + (JSC::Yarr::YarrGenerator::backtrackAssertionBOL): + (JSC::Yarr::YarrGenerator::generateAssertionEOL): + (JSC::Yarr::YarrGenerator::backtrackAssertionEOL): + (JSC::Yarr::YarrGenerator::matchAssertionWordchar): + (JSC::Yarr::YarrGenerator::generateAssertionWordBoundary): + (JSC::Yarr::YarrGenerator::backtrackAssertionWordBoundary): + (JSC::Yarr::YarrGenerator::generatePatternCharacterOnce): + (JSC::Yarr::YarrGenerator::backtrackPatternCharacterOnce): + (JSC::Yarr::YarrGenerator::generatePatternCharacterFixed): + (JSC::Yarr::YarrGenerator::backtrackPatternCharacterFixed): + (JSC::Yarr::YarrGenerator::generatePatternCharacterGreedy): + (JSC::Yarr::YarrGenerator::backtrackPatternCharacterGreedy): + (JSC::Yarr::YarrGenerator::generatePatternCharacterNonGreedy): + (JSC::Yarr::YarrGenerator::backtrackPatternCharacterNonGreedy): + (JSC::Yarr::YarrGenerator::generateCharacterClassOnce): + (JSC::Yarr::YarrGenerator::backtrackCharacterClassOnce): + (JSC::Yarr::YarrGenerator::generateCharacterClassFixed): + (JSC::Yarr::YarrGenerator::backtrackCharacterClassFixed): + (JSC::Yarr::YarrGenerator::generateCharacterClassGreedy): + (JSC::Yarr::YarrGenerator::backtrackCharacterClassGreedy): + (JSC::Yarr::YarrGenerator::generateCharacterClassNonGreedy): + (JSC::Yarr::YarrGenerator::backtrackCharacterClassNonGreedy): + (JSC::Yarr::YarrGenerator::generateTerm): + (JSC::Yarr::YarrGenerator::backtrackTerm): + (JSC::Yarr::YarrGenerator::generate): + (JSC::Yarr::YarrGenerator::backtrack): + (JSC::Yarr::YarrGenerator::opCompileParenthesesSubpattern): + (JSC::Yarr::YarrGenerator::opCompileParentheticalAssertion): + (JSC::Yarr::YarrGenerator::opCompileAlternative): + (JSC::Yarr::YarrGenerator::opCompileBody): + (JSC::Yarr::YarrGenerator::YarrGenerator): + (JSC::Yarr::YarrGenerator::compile): + +2011-06-08 Mikołaj Małecki <m.malecki@samsung.com> + + Reviewed by Pavel Feldman. + + Web Inspector: Crash by buffer overrun crash when serializing inspector object tree. + https://bugs.webkit.org/show_bug.cgi?id=52791 + + No new tests. The problem can be reproduced by trying to create InspectorValue + from 1.0e-100 and call ->toJSONString() on this. + + * JavaScriptCore.exp: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + export 2 functions DecimalNumber::bufferLengthForStringExponential and + DecimalNumber::toStringExponential. + +2011-07-26 Alexis Menard <alexis.menard@openbossa.org> + + Unreviewed build fix for Qt/Linux. + + On platforms with no glib and gstreamer we should not build javascriptcore + with the Glib support. This is related to http://trac.webkit.org/changeset/91752. + + * wtf/wtf.pri: + +2011-07-26 Alexis Menard <alexis.menard@openbossa.org> + + Reviewed by Andreas Kling. + + [Qt] Change default backend to use GStreamer on Linux and QuickTime on Mac. + https://bugs.webkit.org/show_bug.cgi?id=63472 + + Enable the bits needed for GStreamer only when QtMultimedia is not used. + + * wtf/wtf.pri: + +2011-07-12 Hui Huang <Hui.2.Huang@nokia.com> + + Reviewed by Laszlo Gombos. + + [Qt] Fix compiling errors with QtWebkit 2.2 WINSCW build. + https://bugs.webkit.org/show_bug.cgi?id=64391 + + (QtWebKit-2.2 only, patch not in webkit trunk) + + * parser/JSParser.cpp: + * runtime/JSONObject.cpp: + * wtf/PageAllocatorSymbian.h: + * wtf/Platform.h: + * wtf/text/AtomicString.h: + * wtf/text/StringStatics.cpp: + + +2011-07-13 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org> + + Reviewed by Andreas Kling. + + Broken build on QNX + https://bugs.webkit.org/show_bug.cgi?id=63717 + + QNX doesn't support pthread's SA_RESTART (required by + JSC_MULTIPLE_THREADS), JIT is broken at runtime and there a + few minor compilation errors here and there. + + Original patch by Ritt Konstantin <ritt.ks@gmail.com>, also + tested by him on QNX v6.5 (x86) + + * wtf/DateMath.cpp: fix usage of abs/labs + * wtf/Platform.h: Disable JIT and JSC_MULTIPLE_THREADS + * wtf/StackBounds.cpp: Add a couple of missing includes (and sort them) + +2011-07-09 Thouraya Andolsi <thouraya.andolsi@st.com> + + Fix unaligned userspace access for SH4 platforms. + https://bugs.webkit.org/show_bug.cgi?id=62993 + + * wtf/Platform.h: + 2011-05-23 Matthew Delaney <mdelaney@apple.com> Reviewed by Simon Fraser. diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri b/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri index f6d064f..d8290cf 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri +++ b/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri @@ -73,7 +73,7 @@ defineTest(prependJavaScriptCoreLib) { # Argument is the relative path to JavaScriptCore.pro's qmake output pathToJavaScriptCoreOutput = $$ARGS/$$JAVASCRIPTCORE_DESTDIR - win32-msvc*|wince* { + win32-msvc*|wince*|win32-icc { LIBS = -l$$JAVASCRIPTCORE_TARGET $$LIBS LIBS = -L$$pathToJavaScriptCoreOutput $$LIBS POST_TARGETDEPS += $${pathToJavaScriptCoreOutput}$${QMAKE_DIR_SEP}$${JAVASCRIPTCORE_TARGET}.lib diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/jsc.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/jsc.cpp index 6ef8e18..5f63749 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/jsc.cpp +++ b/src/3rdparty/webkit/Source/JavaScriptCore/jsc.cpp @@ -312,7 +312,7 @@ EncodedJSValue JSC_HOST_CALL functionQuit(ExecState* exec) // be in a separate main function because the jscmain function requires object // unwinding. -#if COMPILER(MSVC) && !defined(_DEBUG) && !OS(WINCE) +#if COMPILER(MSVC) && !COMPILER(INTEL) && !defined(_DEBUG) && !OS(WINCE) #define TRY __try { #define EXCEPT(x) } __except (EXCEPTION_EXECUTE_HANDLER) { x; } #else diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/parser/JSParser.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/parser/JSParser.cpp index f36c668..5f6d8cf 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/parser/JSParser.cpp +++ b/src/3rdparty/webkit/Source/JavaScriptCore/parser/JSParser.cpp @@ -215,13 +215,21 @@ private: template <class TreeBuilder> ALWAYS_INLINE TreeExpression parseObjectLiteral(TreeBuilder&); template <class TreeBuilder> ALWAYS_INLINE TreeExpression parseStrictObjectLiteral(TreeBuilder&); template <class TreeBuilder> ALWAYS_INLINE TreeArguments parseArguments(TreeBuilder&); +#if COMPILER(WINSCW) + template <bool strict, class TreeBuilder> ALWAYS_INLINE TreeProperty parseProperty(bool, TreeBuilder&); +#else template <bool strict, class TreeBuilder> ALWAYS_INLINE TreeProperty parseProperty(TreeBuilder&); +#endif template <class TreeBuilder> ALWAYS_INLINE TreeFunctionBody parseFunctionBody(TreeBuilder&); template <class TreeBuilder> ALWAYS_INLINE TreeFormalParameterList parseFormalParameters(TreeBuilder&); template <class TreeBuilder> ALWAYS_INLINE TreeExpression parseVarDeclarationList(TreeBuilder&, int& declarations, const Identifier*& lastIdent, TreeExpression& lastInitializer, int& identStart, int& initStart, int& initEnd); template <class TreeBuilder> ALWAYS_INLINE TreeConstDeclList parseConstDeclarationList(TreeBuilder& context); enum FunctionRequirements { FunctionNoRequirements, FunctionNeedsName }; +#if COMPILER(WINSCW) + template <FunctionRequirements, bool nameIsInContainingScope, class TreeBuilder> bool parseFunctionInfo(FunctionRequirements, bool, TreeBuilder&, const Identifier*&, TreeFormalParameterList&, TreeFunctionBody&, int& openBrace, int& closeBrace, int& bodyStartLine); +#else template <FunctionRequirements, bool nameIsInContainingScope, class TreeBuilder> bool parseFunctionInfo(TreeBuilder&, const Identifier*&, TreeFormalParameterList&, TreeFunctionBody&, int& openBrace, int& closeBrace, int& bodyStartLine); +#endif ALWAYS_INLINE int isBinaryOperator(JSTokenType token); bool allowAutomaticSemicolon(); @@ -1290,7 +1298,11 @@ template <class TreeBuilder> TreeFunctionBody JSParser::parseFunctionBody(TreeBu return context.createFunctionBody(strictMode()); } +#if COMPILER(WINSCW) +template <JSParser::FunctionRequirements, bool, class TreeBuilder> bool JSParser::parseFunctionInfo(JSParser::FunctionRequirements requirements, bool nameIsInContainingScope, TreeBuilder& context, const Identifier*& name, TreeFormalParameterList& parameters, TreeFunctionBody& body, int& openBracePos, int& closeBracePos, int& bodyStartLine) +#else template <JSParser::FunctionRequirements requirements, bool nameIsInContainingScope, class TreeBuilder> bool JSParser::parseFunctionInfo(TreeBuilder& context, const Identifier*& name, TreeFormalParameterList& parameters, TreeFunctionBody& body, int& openBracePos, int& closeBracePos, int& bodyStartLine) +#endif { AutoPopScopeRef functionScope(this, pushScope()); functionScope->setIsFunction(); @@ -1371,7 +1383,11 @@ template <class TreeBuilder> TreeStatement JSParser::parseFunctionDeclaration(Tr int openBracePos = 0; int closeBracePos = 0; int bodyStartLine = 0; +#if COMPILER(WINSCW) + failIfFalse((parseFunctionInfo<FunctionNeedsName, true>(FunctionNeedsName, true, context, name, parameters, body, openBracePos, closeBracePos, bodyStartLine))); +#else failIfFalse((parseFunctionInfo<FunctionNeedsName, true>(context, name, parameters, body, openBracePos, closeBracePos, bodyStartLine))); +#endif failIfFalse(name); failIfFalseIfStrict(declareVariable(name)); return context.createFuncDeclStatement(name, body, parameters, openBracePos, closeBracePos, bodyStartLine, m_lastLine); @@ -1695,8 +1711,11 @@ template <class TreeBuilder> TreeExpression JSParser::parseBinaryExpression(Tree return context.popOperandStack(operandStackDepth); } - +#if COMPILER(WINSCW) +template <bool complete, class TreeBuilder> TreeProperty JSParser::parseProperty(bool complete, TreeBuilder& context) +#else template <bool complete, class TreeBuilder> TreeProperty JSParser::parseProperty(TreeBuilder& context) +#endif { bool wasIdent = false; switch (m_token.m_type) { @@ -1710,7 +1729,14 @@ template <bool complete, class TreeBuilder> TreeProperty JSParser::parseProperty next(); TreeExpression node = parseAssignmentExpression(context); failIfFalse(node); +#if COMPILER(WINSCW) + if (complete) + return context.template createProperty<true>(ident, node, PropertyNode::Constant); + else + return context.template createProperty<false>(ident, node, PropertyNode::Constant); +#else return context.template createProperty<complete>(ident, node, PropertyNode::Constant); +#endif } failIfFalse(wasIdent); matchOrFail(IDENT); @@ -1727,8 +1753,16 @@ template <bool complete, class TreeBuilder> TreeProperty JSParser::parseProperty type = PropertyNode::Setter; else fail(); +#if COMPILER(WINSCW) + failIfFalse((parseFunctionInfo<FunctionNeedsName, false>(FunctionNeedsName, false, context, accessorName, parameters, body, openBracePos, closeBracePos, bodyStartLine))); + if (complete) + return context.template createGetterOrSetterProperty<true>(type, accessorName, parameters, body, openBracePos, closeBracePos, bodyStartLine, m_lastLine); + else + return context.template createGetterOrSetterProperty<false>(type, accessorName, parameters, body, openBracePos, closeBracePos, bodyStartLine, m_lastLine); +#else failIfFalse((parseFunctionInfo<FunctionNeedsName, false>(context, accessorName, parameters, body, openBracePos, closeBracePos, bodyStartLine))); return context.template createGetterOrSetterProperty<complete>(type, accessorName, parameters, body, openBracePos, closeBracePos, bodyStartLine, m_lastLine); +#endif } case NUMBER: { double propertyName = m_token.m_data.doubleValue; @@ -1736,7 +1770,14 @@ template <bool complete, class TreeBuilder> TreeProperty JSParser::parseProperty consumeOrFail(COLON); TreeExpression node = parseAssignmentExpression(context); failIfFalse(node); +#if COMPILER(WINSCW) + if (complete) + return context.template createProperty<true>(m_globalData, propertyName, node, PropertyNode::Constant); + else + return context.template createProperty<false>(m_globalData, propertyName, node, PropertyNode::Constant); +#else return context.template createProperty<complete>(m_globalData, propertyName, node, PropertyNode::Constant); +#endif } default: failIfFalse(m_token.m_type & KeywordTokenFlag); @@ -1754,7 +1795,11 @@ template <class TreeBuilder> TreeExpression JSParser::parseObjectLiteral(TreeBui return context.createObjectLiteral(); } +#if COMPILER(WINSCW) + TreeProperty property = parseProperty<false>(false, context); +#else TreeProperty property = parseProperty<false>(context); +#endif failIfFalse(property); if (!m_syntaxAlreadyValidated && context.getType(property) != PropertyNode::Constant) { m_lexer->setOffset(startOffset); @@ -1768,7 +1813,11 @@ template <class TreeBuilder> TreeExpression JSParser::parseObjectLiteral(TreeBui // allow extra comma, see http://bugs.webkit.org/show_bug.cgi?id=5939 if (match(CLOSEBRACE)) break; +#if COMPILER(WINSCW) + property = parseProperty<false>(false, context); +#else property = parseProperty<false>(context); +#endif failIfFalse(property); if (!m_syntaxAlreadyValidated && context.getType(property) != PropertyNode::Constant) { m_lexer->setOffset(startOffset); @@ -1792,7 +1841,11 @@ template <class TreeBuilder> TreeExpression JSParser::parseStrictObjectLiteral(T return context.createObjectLiteral(); } +#if COMPILER(WINSCW) + TreeProperty property = parseProperty<true>(true, context); +#else TreeProperty property = parseProperty<true>(context); +#endif failIfFalse(property); typedef HashMap<RefPtr<StringImpl>, unsigned, IdentifierRepHash> ObjectValidationMap; @@ -1808,7 +1861,11 @@ template <class TreeBuilder> TreeExpression JSParser::parseStrictObjectLiteral(T // allow extra comma, see http://bugs.webkit.org/show_bug.cgi?id=5939 if (match(CLOSEBRACE)) break; +#if COMPILER(WINSCW) + property = parseProperty<true>(true, context); +#else property = parseProperty<true>(context); +#endif failIfFalse(property); if (!m_syntaxAlreadyValidated) { std::pair<ObjectValidationMap::iterator, bool> propertyEntryIter = objectValidator.add(context.getName(property).impl(), context.getType(property)); @@ -1987,7 +2044,11 @@ template <class TreeBuilder> TreeExpression JSParser::parseMemberExpression(Tree int closeBracePos = 0; int bodyStartLine = 0; next(); +#if COMPILER(WINSCW) + failIfFalse((parseFunctionInfo<FunctionNoRequirements, false>(FunctionNoRequirements, false, context, name, parameters, body, openBracePos, closeBracePos, bodyStartLine))); +#else failIfFalse((parseFunctionInfo<FunctionNoRequirements, false>(context, name, parameters, body, openBracePos, closeBracePos, bodyStartLine))); +#endif base = context.createFunctionExpr(name, body, parameters, openBracePos, closeBracePos, bodyStartLine, m_lastLine); } else base = parsePrimaryExpression(context); diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSONObject.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSONObject.cpp index 8742fdc..27a508a 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSONObject.cpp +++ b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSONObject.cpp @@ -76,8 +76,13 @@ private: class Stringifier { WTF_MAKE_NONCOPYABLE(Stringifier); public: +#if COMPILER(WINSCW) + Stringifier(ExecState*, const Local<Unknown>* replacer, const Local<Unknown>* space); + Local<Unknown> stringify(Handle<Unknown>*); +#else Stringifier(ExecState*, const Local<Unknown>& replacer, const Local<Unknown>& space); Local<Unknown> stringify(Handle<Unknown>); +#endif void visitAggregate(SlotVisitor&); @@ -197,6 +202,15 @@ JSValue PropertyNameForFunctionCall::value(ExecState* exec) const // ------------------------------ Stringifier -------------------------------- +#if COMPILER(WINSCW) +Stringifier::Stringifier(ExecState* exec, const Local<Unknown>* replacer, const Local<Unknown>* space) + : m_exec(exec) + , m_replacer(*replacer) + , m_usingArrayReplacer(false) + , m_arrayReplacerPropertyNames(exec) + , m_replacerCallType(CallTypeNone) + , m_gap(gap(exec, space->get())) +#else Stringifier::Stringifier(ExecState* exec, const Local<Unknown>& replacer, const Local<Unknown>& space) : m_exec(exec) , m_replacer(replacer) @@ -204,6 +218,7 @@ Stringifier::Stringifier(ExecState* exec, const Local<Unknown>& replacer, const , m_arrayReplacerPropertyNames(exec) , m_replacerCallType(CallTypeNone) , m_gap(gap(exec, space.get())) +#endif { if (!m_replacer.isObject()) return; @@ -244,17 +259,29 @@ Stringifier::Stringifier(ExecState* exec, const Local<Unknown>& replacer, const m_replacerCallType = m_replacer.asObject()->getCallData(m_replacerCallData); } +#if COMPILER(WINSCW) +Local<Unknown> Stringifier::stringify(Handle<Unknown>* value) +#else Local<Unknown> Stringifier::stringify(Handle<Unknown> value) +#endif { JSObject* object = constructEmptyObject(m_exec); if (m_exec->hadException()) return Local<Unknown>(m_exec->globalData(), jsNull()); PropertyNameForFunctionCall emptyPropertyName(m_exec->globalData().propertyNames->emptyIdentifier); +#if COMPILER(WINSCW) + object->putDirect(m_exec->globalData(), m_exec->globalData().propertyNames->emptyIdentifier, value->get()); +#else object->putDirect(m_exec->globalData(), m_exec->globalData().propertyNames->emptyIdentifier, value.get()); +#endif UStringBuilder result; +#if COMPILER(WINSCW) + if (appendStringifiedValue(result, value->get(), object, emptyPropertyName) != StringifySucceeded) +#else if (appendStringifiedValue(result, value.get(), object, emptyPropertyName) != StringifySucceeded) +#endif return Local<Unknown>(m_exec->globalData(), jsUndefined()); if (m_exec->hadException()) return Local<Unknown>(m_exec->globalData(), jsNull()); @@ -606,6 +633,15 @@ bool JSONObject::getOwnPropertyDescriptor(ExecState* exec, const Identifier& pro class Walker { public: +#if COMPILER(WINSCW) + Walker(ExecState* exec, Handle<JSObject>* function, CallType callType, CallData callData) + : m_exec(exec) + , m_function(exec->globalData(), *function) + , m_callType(callType) + , m_callData(callData) + { + } +#else Walker(ExecState* exec, Handle<JSObject> function, CallType callType, CallData callData) : m_exec(exec) , m_function(exec->globalData(), function) @@ -613,6 +649,7 @@ public: , m_callData(callData) { } +#endif JSValue walk(JSValue unfiltered); private: JSValue callReviver(JSObject* thisObj, JSValue property, JSValue unfiltered) @@ -829,7 +866,12 @@ EncodedJSValue JSC_HOST_CALL JSONProtoFuncParse(ExecState* exec) CallType callType = getCallData(function, callData); if (callType == CallTypeNone) return JSValue::encode(unfiltered); +#if COMPILER(WINSCW) + Local<JSObject> handle(exec->globalData(), asObject(function)); + return JSValue::encode(Walker(exec, &handle, callType, callData).walk(unfiltered)); +#else return JSValue::encode(Walker(exec, Local<JSObject>(exec->globalData(), asObject(function)), callType, callData).walk(unfiltered)); +#endif } // ECMA-262 v5 15.12.3 @@ -841,13 +883,24 @@ EncodedJSValue JSC_HOST_CALL JSONProtoFuncStringify(ExecState* exec) Local<Unknown> value(exec->globalData(), exec->argument(0)); Local<Unknown> replacer(exec->globalData(), exec->argument(1)); Local<Unknown> space(exec->globalData(), exec->argument(2)); +#if COMPILER(WINSCW) + return JSValue::encode(Stringifier(exec, &replacer, &space).stringify(&value).get()); +#else return JSValue::encode(Stringifier(exec, replacer, space).stringify(value).get()); +#endif } UString JSONStringify(ExecState* exec, JSValue value, unsigned indent) { LocalScope scope(exec->globalData()); +#if COMPILER(WINSCW) + Local<Unknown> replacer(exec->globalData(), jsNull()); + Local<Unknown> space(exec->globalData(), jsNumber(indent)); + Local<Unknown> valueHandle(exec->globalData(), value); + Local<Unknown> result = Stringifier(exec, &replacer, &space).stringify(&valueHandle); +#else Local<Unknown> result = Stringifier(exec, Local<Unknown>(exec->globalData(), jsNull()), Local<Unknown>(exec->globalData(), jsNumber(indent))).stringify(Local<Unknown>(exec->globalData(), value)); +#endif if (result.isUndefinedOrNull()) return UString(); return result.getString(exec); diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.h b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.h index 768c457..1d7d2f7 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.h +++ b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/JSObject.h @@ -587,7 +587,7 @@ inline bool JSObject::putDirectInternal(JSGlobalData& globalData, const Identifi return true; } - if (!isExtensible()) + if (checkReadOnly && !isExtensible()) return false; size_t currentCapacity = m_structure->propertyStorageCapacity(); @@ -651,7 +651,7 @@ inline bool JSObject::putDirectInternal(JSGlobalData& globalData, const Identifi return true; } - if (!isExtensible()) + if (checkReadOnly && !isExtensible()) return false; Structure* structure = Structure::addPropertyTransition(globalData, m_structure.get(), propertyName, attributes, specificFunction, offset); diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/ByteArray.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/ByteArray.h index bdec630..47b1cff 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/ByteArray.h +++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/ByteArray.h @@ -91,7 +91,7 @@ namespace WTF { // MSVC can't handle correctly unsized array. // warning C4200: nonstandard extension used : zero-sized array in struct/union // Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array -#if COMPILER(MSVC) +#if COMPILER(MSVC) && !COMPILER(INTEL) unsigned char m_data[INT_MAX]; #else unsigned char m_data[]; diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/DateMath.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/DateMath.cpp index d414eae..b181ee2 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/DateMath.cpp +++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/DateMath.cpp @@ -692,7 +692,7 @@ double parseES5DateFromNullTerminatedCharacters(const char* dateString) return NaN; if (*postParsePosition != ':' || (postParsePosition - currentPosition) != 2) return NaN; - tzHoursAbs = abs(tzHours); + tzHoursAbs = labs(tzHours); currentPosition = postParsePosition + 1; if (!isASCIIDigit(*currentPosition)) diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/NullPtr.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/NullPtr.h index c0e7bd3..9c4319d 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/NullPtr.h +++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/NullPtr.h @@ -35,7 +35,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define __has_feature(feature) 0 #endif -#if __has_feature(cxx_nullptr) || (GCC_VERSION_AT_LEAST(4, 6, 0) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && _MSC_VER >= 1600) +#if __has_feature(cxx_nullptr) || (GCC_VERSION_AT_LEAST(4, 6, 0) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && _MSC_VER >= 1600 && !COMPILER(INTEL)) #define HAVE_NULLPTR 1 diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/PageAllocatorSymbian.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/PageAllocatorSymbian.h index eba5b03..d396379 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/PageAllocatorSymbian.h +++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/PageAllocatorSymbian.h @@ -68,7 +68,7 @@ public: // Size of the large up-front reservation #if defined(__WINS__) // Emulator has limited virtual address space -const size_t largeReservationSize = 96*1024*1024; +const size_t largeReservationSize = 64*1024*1024; #else // HW has plenty of virtual addresses const size_t largeReservationSize = 256*1024*1024; diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h index 716d9e1..8309acc 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h +++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h @@ -365,7 +365,7 @@ #endif /* ARM */ -#if CPU(ARM) || CPU(MIPS) +#if CPU(ARM) || CPU(MIPS) || CPU(SH4) #define WTF_CPU_NEEDS_ALIGNED_ACCESS 1 #endif @@ -581,7 +581,7 @@ #define WTF_USE_PTHREAD_BASED_QT 1 #endif -#if (PLATFORM(GTK) || PLATFORM(IOS) || PLATFORM(MAC) || PLATFORM(WIN) || (PLATFORM(QT) && (OS(DARWIN) || USE(PTHREAD_BASED_QT)) && !ENABLE(SINGLE_THREADED))) && !defined(ENABLE_JSC_MULTIPLE_THREADS) +#if (PLATFORM(GTK) || PLATFORM(IOS) || PLATFORM(MAC) || PLATFORM(WIN) || (PLATFORM(QT) && (OS(DARWIN) || USE(PTHREAD_BASED_QT)) && !ENABLE(SINGLE_THREADED))) && !OS(QNX) && !defined(ENABLE_JSC_MULTIPLE_THREADS) #define ENABLE_JSC_MULTIPLE_THREADS 1 #endif @@ -1019,11 +1019,17 @@ #define ENABLE_JIT 0 #endif +/* Disable JIT for WINSCW Symbian Emulator */ +#if !defined(ENABLE_JIT) && COMPILER(WINSCW) +#define ENABLE_JIT 0 +#endif + /* The JIT is enabled by default on all x86, x64-64, ARM & MIPS platforms. */ #if !defined(ENABLE_JIT) \ && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(MIPS)) \ && (OS(DARWIN) || !COMPILER(GCC) || GCC_VERSION_AT_LEAST(4, 1, 0)) \ - && !OS(WINCE) + && !OS(WINCE) \ + && !OS(QNX) #define ENABLE_JIT 1 #endif @@ -1215,7 +1221,11 @@ since most ports try to support sub-project independence, adding new headers to WTF causes many ports to break, and so this way we can address the build breakages one port at a time. */ +#if PLATFORM(QT) +#define WTF_USE_EXPORT_MACROS 1 +#else #define WTF_USE_EXPORT_MACROS 0 +#endif #if PLATFORM(QT) || PLATFORM(GTK) #define WTF_USE_UNIX_DOMAIN_SOCKETS 1 diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/StackBounds.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/StackBounds.cpp index 41e0d60..6b61270 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/StackBounds.cpp +++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/StackBounds.cpp @@ -41,10 +41,12 @@ #elif OS(QNX) +#include <errno.h> #include <fcntl.h> -#include <sys/procfs.h> +#include <pthread.h> #include <stdio.h> -#include <errno.h> +#include <string.h> +#include <sys/procfs.h> #elif OS(UNIX) diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.h index 440700c..cc451e8 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.h +++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.h @@ -113,6 +113,16 @@ public: static AtomicString fromUTF8(const char*, size_t); static AtomicString fromUTF8(const char*); +#if COMPILER(WINSCW) + static const AtomicString& nullAtom2(); + static const AtomicString& emptyAtom2(); + static const AtomicString& textAtom2(); + static const AtomicString& commentAtom2(); + static const AtomicString& starAtom2(); + static const AtomicString& xmlAtom2(); + static const AtomicString& xmlnsAtom2(); +#endif + private: String m_string; @@ -155,6 +165,24 @@ inline bool equalIgnoringCase(const String& a, const AtomicString& b) { return e // Define external global variables for the commonly used atomic strings. // These are only usable from the main thread. #ifndef ATOMICSTRING_HIDE_GLOBALS + +#if COMPILER(WINSCW) +extern const JS_EXPORTDATA AtomicString nullAtom1; +extern const JS_EXPORTDATA AtomicString emptyAtom1; +extern const JS_EXPORTDATA AtomicString textAtom1; +extern const JS_EXPORTDATA AtomicString commentAtom1; +extern const JS_EXPORTDATA AtomicString starAtom1; +extern const JS_EXPORTDATA AtomicString xmlAtom1; +extern const JS_EXPORTDATA AtomicString xmlnsAtom1; + +#define nullAtom AtomicString::nullAtom2() +#define emptyAtom AtomicString::emptyAtom2() +#define textAtom AtomicString::textAtom2() +#define commentAtom AtomicString::commentAtom2() +#define starAtom AtomicString::starAtom2() +#define xmlAtom AtomicString::xmlAtom2() +#define xmlnsAtom AtomicString::xmlnsAtom2() +#else extern const JS_EXPORTDATA AtomicString nullAtom; extern const JS_EXPORTDATA AtomicString emptyAtom; extern const JS_EXPORTDATA AtomicString textAtom; @@ -162,6 +190,7 @@ extern const JS_EXPORTDATA AtomicString commentAtom; extern const JS_EXPORTDATA AtomicString starAtom; extern const JS_EXPORTDATA AtomicString xmlAtom; extern const JS_EXPORTDATA AtomicString xmlnsAtom; +#endif inline AtomicString AtomicString::fromUTF8(const char* characters, size_t length) { @@ -190,6 +219,7 @@ template<> struct DefaultHash<AtomicString> { } // namespace WTF +#if !COMPILER(WINSCW) #ifndef ATOMICSTRING_HIDE_GLOBALS using WTF::AtomicString; using WTF::nullAtom; @@ -200,5 +230,6 @@ using WTF::starAtom; using WTF::xmlAtom; using WTF::xmlnsAtom; #endif +#endif #endif // AtomicString_h diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.cpp index 17b4d7d..ea8770a 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.cpp +++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.cpp @@ -270,17 +270,15 @@ PassRefPtr<StringImpl> StringImpl::upper() return newImpl.release(); } -PassRefPtr<StringImpl> StringImpl::secure(UChar character, LastCharacterBehavior behavior) +PassRefPtr<StringImpl> StringImpl::fill(UChar character) { if (!m_length) return this; UChar* data; RefPtr<StringImpl> newImpl = createUninitialized(m_length, data); - unsigned lastCharacterIndex = m_length - 1; - for (unsigned i = 0; i < lastCharacterIndex; ++i) + for (unsigned i = 0; i < m_length; ++i) data[i] = character; - data[lastCharacterIndex] = (behavior == ObscureLastCharacter) ? character : m_data[lastCharacterIndex]; return newImpl.release(); } diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.h index 81911b3..b0ec163 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.h +++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.h @@ -284,9 +284,7 @@ public: PassRefPtr<StringImpl> lower(); PassRefPtr<StringImpl> upper(); - enum LastCharacterBehavior { ObscureLastCharacter, DisplayLastCharacter }; - - PassRefPtr<StringImpl> secure(UChar, LastCharacterBehavior = ObscureLastCharacter); + PassRefPtr<StringImpl> fill(UChar); PassRefPtr<StringImpl> foldCase(); PassRefPtr<StringImpl> stripWhiteSpace(); diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringStatics.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringStatics.cpp index ce08728..c5a8b43 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringStatics.cpp +++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringStatics.cpp @@ -51,6 +51,15 @@ StringImpl* StringImpl::empty() return &emptyString; } +#if COMPILER(WINSCW) +static AtomicString nullAtom1; +static AtomicString emptyAtom1; +static AtomicString textAtom1; +static AtomicString commentAtom1; +static AtomicString starAtom1; +static AtomicString xmlAtom1; +static AtomicString xmlnsAtom1; +#else JS_EXPORTDATA DEFINE_GLOBAL(AtomicString, nullAtom) JS_EXPORTDATA DEFINE_GLOBAL(AtomicString, emptyAtom, "") JS_EXPORTDATA DEFINE_GLOBAL(AtomicString, textAtom, "#text") @@ -58,6 +67,7 @@ JS_EXPORTDATA DEFINE_GLOBAL(AtomicString, commentAtom, "#comment") JS_EXPORTDATA DEFINE_GLOBAL(AtomicString, starAtom, "*") JS_EXPORTDATA DEFINE_GLOBAL(AtomicString, xmlAtom, "xml") JS_EXPORTDATA DEFINE_GLOBAL(AtomicString, xmlnsAtom, "xmlns") +#endif void AtomicString::init() { @@ -67,6 +77,15 @@ void AtomicString::init() ASSERT(isMainThread()); // Use placement new to initialize the globals. +#if COMPILER(WINSCW) + new ((void*)&nullAtom1) AtomicString; + new ((void*)&emptyAtom1) AtomicString(""); + new ((void*)&textAtom1) AtomicString("#text"); + new ((void*)&commentAtom1) AtomicString("#comment"); + new ((void*)&starAtom1) AtomicString("*"); + new ((void*)&xmlAtom1) AtomicString("xml"); + new ((void*)&xmlnsAtom1) AtomicString("xmlns"); +#else new ((void*)&nullAtom) AtomicString; new ((void*)&emptyAtom) AtomicString(""); new ((void*)&textAtom) AtomicString("#text"); @@ -74,9 +93,19 @@ void AtomicString::init() new ((void*)&starAtom) AtomicString("*"); new ((void*)&xmlAtom) AtomicString("xml"); new ((void*)&xmlnsAtom) AtomicString("xmlns"); - +#endif initialized = true; } } +#if COMPILER(WINSCW) +const AtomicString& AtomicString::nullAtom2() { return nullAtom1;} +const AtomicString& AtomicString::emptyAtom2() { return emptyAtom1;} +const AtomicString& AtomicString::textAtom2() { return textAtom1;} +const AtomicString& AtomicString::commentAtom2() { return commentAtom1;} +const AtomicString& AtomicString::starAtom2() { return starAtom1;} +const AtomicString& AtomicString::xmlAtom2() { return xmlAtom1;} +const AtomicString& AtomicString::xmlnsAtom2() { return xmlnsAtom1;} +#endif + } diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/WTFString.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/WTFString.h index b593d20..f29228b 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/WTFString.h +++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/WTFString.h @@ -219,7 +219,7 @@ public: void makeLower() { if (m_impl) m_impl = m_impl->lower(); } void makeUpper() { if (m_impl) m_impl = m_impl->upper(); } - void makeSecure(UChar aChar) { if (m_impl) m_impl = m_impl->secure(aChar); } + void fill(UChar c) { if (m_impl) m_impl = m_impl->fill(c); } void truncate(unsigned len); void remove(unsigned pos, int len = 1); diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/wtf.pri b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/wtf.pri index 10b41e4..5af613e 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/wtf.pri +++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/wtf.pri @@ -41,10 +41,12 @@ SOURCES += \ wtf/unicode/icu/CollatorICU.cpp \ wtf/unicode/UTF8.cpp -contains(DEFINES, USE_GSTREAMER=1) { - DEFINES += ENABLE_GLIB_SUPPORT=1 - PKGCONFIG += glib-2.0 gio-2.0 - CONFIG += link_pkgconfig +linux-*:!contains(DEFINES, USE_QTMULTIMEDIA=1) { + !contains(QT_CONFIG, no-pkg-config):system(pkg-config --exists glib-2.0 gio-2.0 gstreamer-0.10) { + DEFINES += ENABLE_GLIB_SUPPORT=1 + PKGCONFIG += glib-2.0 gio-2.0 + CONFIG += link_pkgconfig + } } unix:!symbian: SOURCES += wtf/OSAllocatorPosix.cpp diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/yarr/YarrJIT.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/yarr/YarrJIT.cpp index ece2379..f3356b1 100644 --- a/src/3rdparty/webkit/Source/JavaScriptCore/yarr/YarrJIT.cpp +++ b/src/3rdparty/webkit/Source/JavaScriptCore/yarr/YarrJIT.cpp @@ -228,9 +228,10 @@ class YarrGenerator : private MacroAssembler { } // Jumps if input not available; will have (incorrectly) incremented already! - Jump jumpIfNoAvailableInput(unsigned countToCheck) + Jump jumpIfNoAvailableInput(unsigned countToCheck = 0) { - add32(Imm32(countToCheck), index); + if (countToCheck) + add32(Imm32(countToCheck), index); return branch32(Above, index, length); } @@ -295,1056 +296,455 @@ class YarrGenerator : private MacroAssembler { jump(Address(stackPointerRegister, frameLocation * sizeof(void*))); } - struct IndirectJumpEntry { - IndirectJumpEntry(int32_t stackOffset) - : m_stackOffset(stackOffset) - { - } - - IndirectJumpEntry(int32_t stackOffset, Jump jump) - : m_stackOffset(stackOffset) - { - addJump(jump); - } - - IndirectJumpEntry(int32_t stackOffset, DataLabelPtr dataLabel) - : m_stackOffset(stackOffset) - { - addDataLabel(dataLabel); - } - - void addJump(Jump jump) - { - m_relJumps.append(jump); - } - - void addDataLabel(DataLabelPtr dataLabel) - { - m_dataLabelPtrVector.append(dataLabel); - } - - int32_t m_stackOffset; - JumpList m_relJumps; - Vector<DataLabelPtr, 16> m_dataLabelPtrVector; + enum YarrOpCode { + // These nodes wrap body alternatives - those in the main disjunction, + // rather than subpatterns or assertions. These are chained together in + // a doubly linked list, with a 'begin' node for the first alternative, + // a 'next' node for each subsequent alternative, and an 'end' node at + // the end. In the case of repeating alternatives, the 'end' node also + // has a reference back to 'begin'. + OpBodyAlternativeBegin, + OpBodyAlternativeNext, + OpBodyAlternativeEnd, + // Similar to the body alternatives, but used for subpatterns with two + // or more alternatives. + OpNestedAlternativeBegin, + OpNestedAlternativeNext, + OpNestedAlternativeEnd, + // Used for alternatives in subpatterns where there is only a single + // alternative (backtrackingis easier in these cases), or for alternatives + // which never need to be backtracked (those in parenthetical assertions, + // terminal subpatterns). + OpSimpleNestedAlternativeBegin, + OpSimpleNestedAlternativeNext, + OpSimpleNestedAlternativeEnd, + // Used to wrap 'Once' subpattern matches (quantityCount == 1). + OpParenthesesSubpatternOnceBegin, + OpParenthesesSubpatternOnceEnd, + // Used to wrap 'Terminal' subpattern matches (at the end of the regexp). + OpParenthesesSubpatternTerminalBegin, + OpParenthesesSubpatternTerminalEnd, + // Used to wrap parenthetical assertions. + OpParentheticalAssertionBegin, + OpParentheticalAssertionEnd, + // Wraps all simple terms (pattern characters, character classes). + OpTerm, + // Where an expression contains only 'once through' body alternatives + // and no repeating ones, this op is used to return match failure. + OpMatchFailed }; - struct AlternativeBacktrackRecord { - DataLabelPtr dataLabel; - Label backtrackLocation; - - AlternativeBacktrackRecord(DataLabelPtr dataLabel, Label backtrackLocation) - : dataLabel(dataLabel) - , backtrackLocation(backtrackLocation) - { - } - }; - - struct ParenthesesTail; - struct TermGenerationState; - - struct GenerationState { - typedef HashMap<int, IndirectJumpEntry*, WTF::IntHash<uint32_t>, UnsignedWithZeroKeyHashTraits<uint32_t> > IndirectJumpHashMap; - - GenerationState() - : m_parenNestingLevel(0) - { - } - - void addIndirectJumpEntry(int32_t stackOffset, Jump jump) - { - IndirectJumpHashMap::iterator result = m_indirectJumpMap.find(stackOffset); - - ASSERT(stackOffset >= 0); - - uint32_t offset = static_cast<uint32_t>(stackOffset); - - if (result == m_indirectJumpMap.end()) - m_indirectJumpMap.add(offset, new IndirectJumpEntry(stackOffset, jump)); - else - result->second->addJump(jump); - } - - void addIndirectJumpEntry(int32_t stackOffset, JumpList jumps) - { - JumpList::JumpVector jumpVector = jumps.jumps(); - size_t size = jumpVector.size(); - for (size_t i = 0; i < size; ++i) - addIndirectJumpEntry(stackOffset, jumpVector[i]); - - jumps.empty(); - } - - void addIndirectJumpEntry(int32_t stackOffset, DataLabelPtr dataLabel) - { - IndirectJumpHashMap::iterator result = m_indirectJumpMap.find(stackOffset); - - ASSERT(stackOffset >= 0); - - uint32_t offset = static_cast<uint32_t>(stackOffset); - - if (result == m_indirectJumpMap.end()) - m_indirectJumpMap.add(offset, new IndirectJumpEntry(stackOffset, dataLabel)); - else - result->second->addDataLabel(dataLabel); - } - - void emitIndirectJumpTable(MacroAssembler* masm) + // This structure is used to hold the compiled opcode information, + // including reference back to the original PatternTerm/PatternAlternatives, + // and JIT compilation data structures. + struct YarrOp { + explicit YarrOp(PatternTerm* term) + : m_op(OpTerm) + , m_term(term) + , m_isDeadCode(false) { - for (IndirectJumpHashMap::iterator iter = m_indirectJumpMap.begin(); iter != m_indirectJumpMap.end(); ++iter) { - IndirectJumpEntry* indJumpEntry = iter->second; - size_t size = indJumpEntry->m_dataLabelPtrVector.size(); - if (size) { - // Link any associated DataLabelPtr's with indirect jump via label - Label hereLabel = masm->label(); - for (size_t i = 0; i < size; ++i) - m_backtrackRecords.append(AlternativeBacktrackRecord(indJumpEntry->m_dataLabelPtrVector[i], hereLabel)); - } - indJumpEntry->m_relJumps.link(masm); - masm->jump(Address(stackPointerRegister, indJumpEntry->m_stackOffset)); - delete indJumpEntry; - } - } - - void incrementParenNestingLevel() - { - ++m_parenNestingLevel; - } - - void decrementParenNestingLevel() - { - --m_parenNestingLevel; - } - - ParenthesesTail* addParenthesesTail(PatternTerm& term, JumpList* jumpListToPriorParen) - { - OwnPtr<ParenthesesTail> tail = adoptPtr(new ParenthesesTail(term, m_parenNestingLevel, jumpListToPriorParen)); - ParenthesesTail* rawTail = tail.get(); - - m_parenTails.append(tail.release()); - m_parenTailsForIteration.append(rawTail); - - return rawTail; } - void emitParenthesesTail(YarrGenerator* generator) + explicit YarrOp(YarrOpCode op) + : m_op(op) + , m_isDeadCode(false) { - unsigned vectorSize = m_parenTails.size(); - bool priorBacktrackFallThrough = false; - - // Emit in reverse order so parentTail N can fall through to N-1 - for (unsigned index = vectorSize; index > 0; --index) { - JumpList jumpsToNext; - priorBacktrackFallThrough = m_parenTails[index-1].get()->generateCode(generator, jumpsToNext, priorBacktrackFallThrough, index > 1); - if (index > 1) - jumpsToNext.linkTo(generator->label(), generator); - else - addJumpsToNextInteration(jumpsToNext); - } - m_parenTails.clear(); } - void addJumpToNextInteration(Jump jump) - { - m_jumpsToNextInteration.append(jump); - } + // The operation, as a YarrOpCode, and also a reference to the PatternTerm. + YarrOpCode m_op; + PatternTerm* m_term; - void addJumpsToNextInteration(JumpList jumps) - { - m_jumpsToNextInteration.append(jumps); - } + // For alternatives, this holds the PatternAlternative and doubly linked + // references to this alternative's siblings. In the case of the + // OpBodyAlternativeEnd node at the end of a section of repeating nodes, + // m_nextOp will reference the OpBodyAlternativeBegin node of the first + // repeating alternative. + PatternAlternative* m_alternative; + size_t m_previousOp; + size_t m_nextOp; - void addDataLabelToNextIteration(DataLabelPtr dataLabel) - { - m_dataPtrsToNextIteration.append(dataLabel); - } + // Used to record a set of Jumps out of the generated code, typically + // used for jumps out to backtracking code, and a single reentry back + // into the code for a node (likely where a backtrack will trigger + // rematching). + Label m_reentry; + JumpList m_jumps; - void linkToNextIteration(Label label) - { - m_nextIteration = label; + // This flag is used to null out the second pattern character, when + // two are fused to match a pair together. + bool m_isDeadCode; - for (unsigned i = 0; i < m_dataPtrsToNextIteration.size(); ++i) - m_backtrackRecords.append(AlternativeBacktrackRecord(m_dataPtrsToNextIteration[i], m_nextIteration)); + // Currently used in the case of some of the more complex management of + // 'm_checked', to cache the offset used in this alternative, to avoid + // recalculating it. + int m_checkAdjust; - m_dataPtrsToNextIteration.clear(); - - for (unsigned i = 0; i < m_parenTailsForIteration.size(); ++i) - m_parenTailsForIteration[i]->setNextIteration(m_nextIteration); - - m_parenTailsForIteration.clear(); - } - - void linkToNextIteration(YarrGenerator* generator) - { - m_jumpsToNextInteration.linkTo(m_nextIteration, generator); - } - - int m_parenNestingLevel; - Vector<AlternativeBacktrackRecord> m_backtrackRecords; - IndirectJumpHashMap m_indirectJumpMap; - Label m_nextIteration; - Vector<OwnPtr<ParenthesesTail> > m_parenTails; - JumpList m_jumpsToNextInteration; - Vector<DataLabelPtr> m_dataPtrsToNextIteration; - Vector<ParenthesesTail*> m_parenTailsForIteration; + // Used by OpNestedAlternativeNext/End to hold the pointer to the + // value that will be pushed into the pattern's frame to return to, + // upon backtracking back into the disjunction. + DataLabelPtr m_returnAddress; }; - struct BacktrackDestination { - typedef enum { - NoBacktrack, - BacktrackLabel, - BacktrackStackOffset, - BacktrackJumpList, - BacktrackLinked - } BacktrackType; - - BacktrackDestination() - : m_backtrackType(NoBacktrack) - , m_backtrackToLabel(0) - , m_subDataLabelPtr(0) - , m_nextBacktrack(0) - , m_backtrackSourceLabel(0) - , m_backtrackSourceJumps(0) + // BacktrackingState + // This class encapsulates information about the state of code generation + // whilst generating the code for backtracking, when a term fails to match. + // Upon entry to code generation of the backtracking code for a given node, + // the Backtracking state will hold references to all control flow sources + // that are outputs in need of further backtracking from the prior node + // generated (which is the subsequent operation in the regular expression, + // and in the m_ops Vector, since we generated backtracking backwards). + // These references to control flow take the form of: + // - A jump list of jumps, to be linked to code that will backtrack them + // further. + // - A set of DataLabelPtr values, to be populated with values to be + // treated effectively as return addresses backtracking into complex + // subpatterns. + // - A flag indicating that the current sequence of generated code up to + // this point requires backtracking. + class BacktrackingState { + public: + BacktrackingState() + : m_pendingFallthrough(false) { } - BacktrackDestination(int32_t stackOffset) - : m_backtrackType(BacktrackStackOffset) - , m_backtrackStackOffset(stackOffset) - , m_backtrackToLabel(0) - , m_subDataLabelPtr(0) - , m_nextBacktrack(0) - , m_backtrackSourceLabel(0) - , m_backtrackSourceJumps(0) + // Add a jump or jumps, a return address, or set the flag indicating + // that the current 'fallthrough' control flow requires backtracking. + void append(const Jump& jump) { + m_laterFailures.append(jump); } - - BacktrackDestination(Label label) - : m_backtrackType(BacktrackLabel) - , m_backtrackLabel(label) - , m_backtrackToLabel(0) - , m_subDataLabelPtr(0) - , m_nextBacktrack(0) - , m_backtrackSourceLabel(0) - , m_backtrackSourceJumps(0) + void append(JumpList& jumpList) { + m_laterFailures.append(jumpList); } - - void clear(bool doDataLabelClear = true) + void append(const DataLabelPtr& returnAddress) { - m_backtrackType = NoBacktrack; - if (doDataLabelClear) - clearDataLabel(); - m_nextBacktrack = 0; + m_pendingReturns.append(returnAddress); } - - void clearDataLabel() + void fallthrough() { - m_dataLabelPtr = DataLabelPtr(); + ASSERT(!m_pendingFallthrough); + m_pendingFallthrough = true; } - bool hasDestination() + // These methods clear the backtracking state, either linking to the + // current location, a provided label, or copying the backtracking out + // to a JumpList. All actions may require code generation to take place, + // and as such are passed a pointer to the assembler. + void link(MacroAssembler* assembler) { - return (m_backtrackType != NoBacktrack); - } - - bool isStackOffset() - { - return (m_backtrackType == BacktrackStackOffset); - } - - bool isLabel() - { - return (m_backtrackType == BacktrackLabel); - } - - bool isJumpList() - { - return (m_backtrackType == BacktrackJumpList); - } - - bool hasDataLabel() - { - return m_dataLabelPtr.isSet(); - } - - void copyTarget(BacktrackDestination& rhs, bool copyDataLabel = true) - { - m_backtrackType = rhs.m_backtrackType; - if (m_backtrackType == BacktrackStackOffset) - m_backtrackStackOffset = rhs.m_backtrackStackOffset; - else if (m_backtrackType == BacktrackLabel) - m_backtrackLabel = rhs.m_backtrackLabel; - if (copyDataLabel) - m_dataLabelPtr = rhs.m_dataLabelPtr; - m_backtrackSourceJumps = rhs.m_backtrackSourceJumps; - m_backtrackSourceLabel = rhs.m_backtrackSourceLabel; - } - - void copyTo(BacktrackDestination& lhs) - { - lhs.m_backtrackType = m_backtrackType; - if (m_backtrackType == BacktrackStackOffset) - lhs.m_backtrackStackOffset = m_backtrackStackOffset; - else if (m_backtrackType == BacktrackLabel) - lhs.m_backtrackLabel = m_backtrackLabel; - lhs.m_backtrackSourceJumps = m_backtrackSourceJumps; - lhs.m_backtrackSourceLabel = m_backtrackSourceLabel; - lhs.m_dataLabelPtr = m_dataLabelPtr; - lhs.m_backTrackJumps = m_backTrackJumps; - } - - void addBacktrackJump(Jump jump) - { - m_backTrackJumps.append(jump); - } - - void setStackOffset(int32_t stackOffset) - { - m_backtrackType = BacktrackStackOffset; - m_backtrackStackOffset = stackOffset; - } - - void setLabel(Label label) - { - m_backtrackType = BacktrackLabel; - m_backtrackLabel = label; - } - - void setNextBacktrackLabel(Label label) - { - if (m_nextBacktrack) - m_nextBacktrack->setLabel(label); - } - - void propagateBacktrackToLabel(const BacktrackDestination& rhs) - { - if (!m_backtrackToLabel && rhs.m_backtrackToLabel) - m_backtrackToLabel = rhs.m_backtrackToLabel; - } - - void setBacktrackToLabel(Label* backtrackToLabel) - { - if (!m_backtrackToLabel) - m_backtrackToLabel = backtrackToLabel; - } - - bool hasBacktrackToLabel() - { - return m_backtrackToLabel; - } - - void setBacktrackJumpList(JumpList* jumpList) - { - m_backtrackType = BacktrackJumpList; - m_backtrackSourceJumps = jumpList; - } - - void setBacktrackSourceLabel(Label* backtrackSourceLabel) - { - m_backtrackSourceLabel = backtrackSourceLabel; - } - - void setDataLabel(DataLabelPtr dp) - { - if (m_subDataLabelPtr) { - *m_subDataLabelPtr = dp; - m_subDataLabelPtr = 0; - } else { - ASSERT(!hasDataLabel()); - m_dataLabelPtr = dp; + if (m_pendingReturns.size()) { + Label here(assembler); + for (unsigned i = 0; i < m_pendingReturns.size(); ++i) + m_backtrackRecords.append(ReturnAddressRecord(m_pendingReturns[i], here)); + m_pendingReturns.clear(); } + m_laterFailures.link(assembler); + m_laterFailures.clear(); + m_pendingFallthrough = false; } - - void clearSubDataLabelPtr() - { - m_subDataLabelPtr = 0; - } - - void setSubDataLabelPtr(DataLabelPtr* subDataLabelPtr) + void linkTo(Label label, MacroAssembler* assembler) { - m_subDataLabelPtr = subDataLabelPtr; - } - - void linkToNextBacktrack(BacktrackDestination* nextBacktrack) - { - m_nextBacktrack = nextBacktrack; - } - - int32_t getStackOffset() - { - ASSERT(m_backtrackType == BacktrackStackOffset); - return m_backtrackStackOffset; - } - - Label getLabel() - { - ASSERT(m_backtrackType == BacktrackLabel); - return m_backtrackLabel; - } - - JumpList& getBacktrackJumps() - { - return m_backTrackJumps; - } - - DataLabelPtr& getDataLabel() - { - return m_dataLabelPtr; - } - - void jumpToBacktrack(MacroAssembler* masm) - { - if (isJumpList()) { - if (m_backtrackSourceLabel && (m_backtrackSourceLabel->isSet())) - masm->jump().linkTo(*m_backtrackSourceLabel, masm); - else - m_backtrackSourceJumps->append(masm->jump()); - } else if (isStackOffset()) - masm->jump(Address(stackPointerRegister, m_backtrackStackOffset)); - else if (isLabel()) - masm->jump().linkTo(m_backtrackLabel, masm); - else - m_backTrackJumps.append(masm->jump()); - } - - void jumpToBacktrack(YarrGenerator* generator, Jump jump) - { - if (isJumpList()) { - if (m_backtrackSourceLabel && (m_backtrackSourceLabel->isSet())) - jump.linkTo(*m_backtrackSourceLabel, generator); - else - m_backtrackSourceJumps->append(jump); - } else if (isStackOffset()) - generator->m_expressionState.addIndirectJumpEntry(getStackOffset(), jump); - else if (isLabel()) - jump.linkTo(getLabel(), generator); - else - m_backTrackJumps.append(jump); - } - - void jumpToBacktrack(YarrGenerator* generator, JumpList& jumps) - { - if (isJumpList()) { - if (m_backtrackSourceLabel && (m_backtrackSourceLabel->isSet())) - jumps.linkTo(*m_backtrackSourceLabel, generator); - else - m_backtrackSourceJumps->append(jumps); - } else if (isStackOffset()) - generator->m_expressionState.addIndirectJumpEntry(getStackOffset(), jumps); - else if (isLabel()) - jumps.linkTo(getLabel(), generator); - else - m_backTrackJumps.append(jumps); - } - - bool plantJumpToBacktrackIfExists(YarrGenerator* generator) - { - if (isJumpList()) { - if (m_backtrackSourceLabel && (m_backtrackSourceLabel->isSet())) - generator->jump(*m_backtrackSourceLabel); - else - m_backtrackSourceJumps->append(generator->jump()); - - return true; - } - - if (isStackOffset()) { - generator->jump(Address(stackPointerRegister, getStackOffset())); - return true; + if (m_pendingReturns.size()) { + for (unsigned i = 0; i < m_pendingReturns.size(); ++i) + m_backtrackRecords.append(ReturnAddressRecord(m_pendingReturns[i], label)); + m_pendingReturns.clear(); } - - if (isLabel()) { - generator->jump(getLabel()); - if (hasDataLabel()) { - generator->m_expressionState.m_backtrackRecords.append(AlternativeBacktrackRecord(getDataLabel(), getLabel())); - clearDataLabel(); - } - return true; + if (m_pendingFallthrough) + assembler->jump(label); + m_laterFailures.linkTo(label, assembler); + m_laterFailures.clear(); + m_pendingFallthrough = false; + } + void takeBacktracksToJumpList(JumpList& jumpList, MacroAssembler* assembler) + { + if (m_pendingReturns.size()) { + Label here(assembler); + for (unsigned i = 0; i < m_pendingReturns.size(); ++i) + m_backtrackRecords.append(ReturnAddressRecord(m_pendingReturns[i], here)); + m_pendingReturns.clear(); + m_pendingFallthrough = true; } - - return false; + if (m_pendingFallthrough) + jumpList.append(assembler->jump()); + jumpList.append(m_laterFailures); + m_laterFailures.clear(); + m_pendingFallthrough = false; } - void linkBacktrackToLabel(Label backtrackLabel) + bool isEmpty() { - if (m_backtrackToLabel) - *m_backtrackToLabel = backtrackLabel; + return m_laterFailures.empty() && m_pendingReturns.isEmpty() && !m_pendingFallthrough; } - void linkAlternativeBacktracks(YarrGenerator* generator, bool nextIteration = false) + // Called at the end of code generation to link all return addresses. + void linkDataLabels(LinkBuffer& linkBuffer) { - Label hereLabel = generator->label(); - - if (m_backtrackToLabel) { - *m_backtrackToLabel = hereLabel; - m_backtrackToLabel = 0; - } - - m_backTrackJumps.link(generator); - - if (nextIteration) - generator->m_expressionState.linkToNextIteration(hereLabel); - - if (hasDataLabel()) { - generator->m_expressionState.m_backtrackRecords.append(AlternativeBacktrackRecord(getDataLabel(), hereLabel)); - // data label cleared as a result of the clear() below - } - - clear(); - } - - void linkAlternativeBacktracksTo(YarrGenerator* generator, Label label, bool nextIteration = false) - { - m_backTrackJumps.linkTo(label, generator); - - if (nextIteration) - generator->m_expressionState.linkToNextIteration(label); - - if (hasDataLabel()) { - generator->m_expressionState.m_backtrackRecords.append(AlternativeBacktrackRecord(getDataLabel(), label)); - clearDataLabel(); - } + ASSERT(isEmpty()); + for (unsigned i = 0; i < m_backtrackRecords.size(); ++i) + linkBuffer.patch(m_backtrackRecords[i].m_dataLabel, linkBuffer.locationOf(m_backtrackRecords[i].m_backtrackLocation)); } private: - BacktrackType m_backtrackType; - int32_t m_backtrackStackOffset; - Label m_backtrackLabel; - DataLabelPtr m_dataLabelPtr; - Label* m_backtrackToLabel; - DataLabelPtr* m_subDataLabelPtr; - BacktrackDestination* m_nextBacktrack; - Label* m_backtrackSourceLabel; - JumpList* m_backtrackSourceJumps; - JumpList m_backTrackJumps; - }; - - struct TermGenerationState { - TermGenerationState(PatternDisjunction* disjunction, unsigned checkedTotal) - : disjunction(disjunction) - , checkedTotal(checkedTotal) - , m_subParenNum(0) - , m_linkedBacktrack(0) - , m_jumpList(0) - { - } - - void resetAlternative() - { - m_backtrack.clear(); - alt = 0; - } - bool alternativeValid() - { - return alt < disjunction->m_alternatives.size(); - } - void nextAlternative() - { - ++alt; - } - PatternAlternative* alternative() - { - return disjunction->m_alternatives[alt]; - } - bool isLastAlternative() - { - return (alt + 1) == disjunction->m_alternatives.size(); - } - - void resetTerm() - { - ASSERT(alternativeValid()); - t = 0; - m_subParenNum = 0; - } - bool termValid() - { - ASSERT(alternativeValid()); - return t < alternative()->m_terms.size(); - } - void nextTerm() - { - ASSERT(alternativeValid()); - ++t; - } - PatternTerm& term() - { - ASSERT(alternativeValid()); - return alternative()->m_terms[t]; - } - bool isLastTerm() - { - ASSERT(alternativeValid()); - return (t + 1) == alternative()->m_terms.size(); - } - unsigned getSubParenNum() - { - return m_subParenNum++; - } - bool isMainDisjunction() - { - return !disjunction->m_parent; - } - - void setJumpListToPriorParen(JumpList* jumpList) - { - m_jumpList = jumpList; - } - - JumpList* getJumpListToPriorParen() - { - return m_jumpList; - } - - PatternTerm& lookaheadTerm() - { - ASSERT(alternativeValid()); - ASSERT((t + 1) < alternative()->m_terms.size()); - return alternative()->m_terms[t + 1]; - } - bool isSinglePatternCharacterLookaheadTerm() - { - ASSERT(alternativeValid()); - return ((t + 1) < alternative()->m_terms.size()) - && (lookaheadTerm().type == PatternTerm::TypePatternCharacter) - && (lookaheadTerm().quantityType == QuantifierFixedCount) - && (lookaheadTerm().quantityCount == 1); - } - - int inputOffset() - { - return term().inputPosition - checkedTotal; - } - - void clearBacktrack() - { - m_backtrack.clear(false); - m_linkedBacktrack = 0; - } - - void jumpToBacktrack(MacroAssembler* masm) - { - m_backtrack.jumpToBacktrack(masm); - } - - void jumpToBacktrack(YarrGenerator* generator, Jump jump) - { - m_backtrack.jumpToBacktrack(generator, jump); - } - - void jumpToBacktrack(YarrGenerator* generator, JumpList& jumps) - { - m_backtrack.jumpToBacktrack(generator, jumps); - } - - bool plantJumpToBacktrackIfExists(YarrGenerator* generator) - { - return m_backtrack.plantJumpToBacktrackIfExists(generator); - } - - void linkDataLabelToBacktrackIfExists(YarrGenerator* generator, DataLabelPtr dataLabel) - { - // If we have a stack offset backtrack destination, use it directly - if (m_backtrack.isStackOffset()) { - generator->m_expressionState.addIndirectJumpEntry(m_backtrack.getStackOffset(), dataLabel); - m_backtrack.clearSubDataLabelPtr(); - } else { - // If we have a backtrack label, connect the datalabel to it directly. - if (m_backtrack.isLabel()) { - generator->m_expressionState.m_backtrackRecords.append(AlternativeBacktrackRecord(dataLabel, m_backtrack.getLabel())); - m_backtrack.clearSubDataLabelPtr(); - } else - setBacktrackDataLabel(dataLabel); + struct ReturnAddressRecord { + ReturnAddressRecord(DataLabelPtr dataLabel, Label backtrackLocation) + : m_dataLabel(dataLabel) + , m_backtrackLocation(backtrackLocation) + { } - } - - void addBacktrackJump(Jump jump) - { - m_backtrack.addBacktrackJump(jump); - } - - void setBacktrackDataLabel(DataLabelPtr dp) - { - m_backtrack.setDataLabel(dp); - } - - void setBackTrackStackOffset(int32_t stackOffset) - { - m_backtrack.setStackOffset(stackOffset); - } - - void setBacktrackLabel(Label label) - { - m_backtrack.setLabel(label); - } - - void linkAlternativeBacktracks(YarrGenerator* generator, bool nextIteration = false) - { - m_backtrack.linkAlternativeBacktracks(generator, nextIteration); - m_linkedBacktrack = 0; - } - - void linkAlternativeBacktracksTo(YarrGenerator* generator, Label label, bool nextIteration = false) - { - m_backtrack.linkAlternativeBacktracksTo(generator, label, nextIteration); - } - - void setBacktrackLink(BacktrackDestination* linkedBacktrack) - { - m_linkedBacktrack = linkedBacktrack; - } - - void chainBacktracks(BacktrackDestination* followonBacktrack) - { - if (m_linkedBacktrack) - m_linkedBacktrack->linkToNextBacktrack(followonBacktrack); - } - BacktrackDestination& getBacktrackDestination() - { - return m_backtrack; - } - - void propagateBacktrackingFrom(YarrGenerator* generator, BacktrackDestination& backtrack, bool doJump = true) - { - if (doJump) - m_backtrack.jumpToBacktrack(generator, backtrack.getBacktrackJumps()); - - if (m_backtrack.isLabel() && backtrack.hasBacktrackToLabel()) - backtrack.linkBacktrackToLabel(m_backtrack.getLabel()); - - if (backtrack.hasDestination()) { - if (m_backtrack.hasDataLabel()) - generator->m_expressionState.addDataLabelToNextIteration(m_backtrack.getDataLabel()); + DataLabelPtr m_dataLabel; + Label m_backtrackLocation; + }; - m_backtrack.copyTarget(backtrack, doJump); - } - } - - PatternDisjunction* disjunction; - int checkedTotal; - private: - unsigned alt; - unsigned t; - unsigned m_subParenNum; - BacktrackDestination m_backtrack; - BacktrackDestination* m_linkedBacktrack; - JumpList* m_jumpList; + JumpList m_laterFailures; + bool m_pendingFallthrough; + Vector<DataLabelPtr, 4> m_pendingReturns; + Vector<ReturnAddressRecord, 4> m_backtrackRecords; }; - struct ParenthesesTail { - ParenthesesTail(PatternTerm& term, int nestingLevel, JumpList* jumpListToPriorParen) - : m_term(term) - , m_nestingLevel(nestingLevel) - , m_subParenIndex(0) - , m_jumpListToPriorParen(jumpListToPriorParen) - { - } - - void processBacktracks(YarrGenerator* generator, TermGenerationState& state, TermGenerationState& parenthesesState, Label nonGreedyTryParentheses, Label fallThrough) - { - m_nonGreedyTryParentheses = nonGreedyTryParentheses; - m_fallThrough = fallThrough; - - m_subParenIndex = state.getSubParenNum(); - parenthesesState.getBacktrackDestination().copyTo(m_parenBacktrack); - state.chainBacktracks(&m_backtrack); - BacktrackDestination& stateBacktrack = state.getBacktrackDestination(); - stateBacktrack.copyTo(m_backtrack); - stateBacktrack.setBacktrackToLabel(&m_backtrackToLabel); - state.setBacktrackLink(&m_backtrack); - stateBacktrack.setSubDataLabelPtr(&m_dataAfterLabelPtr); - - m_doDirectBacktrack = m_parenBacktrack.hasDestination(); - - if ((m_term.quantityType == QuantifierGreedy) || (m_term.quantityType == QuantifierNonGreedy)) - m_doDirectBacktrack = false; - - if (m_doDirectBacktrack) - state.propagateBacktrackingFrom(generator, m_parenBacktrack, false); - else { - stateBacktrack.setBacktrackJumpList(&m_afterBacktrackJumps); - stateBacktrack.setBacktrackSourceLabel(&m_backtrackFromAfterParens); - } - } - - void setNextIteration(Label nextIteration) - { - if (!m_nestingLevel && !m_backtrackToLabel.isSet()) - m_backtrackToLabel = nextIteration; - } - - void addAfterParenJump(Jump jump) - { - m_afterBacktrackJumps.append(jump); - } + // Generation methods: + // =================== - bool generateCode(YarrGenerator* generator, JumpList& jumpsToNext, bool priorBackTrackFallThrough, bool nextBacktrackFallThrough) - { - const RegisterID indexTemporary = regT0; - unsigned parenthesesFrameLocation = m_term.frameLocation; - Jump fromPriorBacktrack; - bool needJumpForPriorParenTail = false; - - if (priorBackTrackFallThrough - && ((m_term.quantityType == QuantifierGreedy) - || (m_term.quantityType == QuantifierNonGreedy) - || (!m_doDirectBacktrack && m_parenBacktrack.hasDestination()))) { - // If the prior paren tail code assumed that it could fall through, - // but we need to generate after paren backtrack code, then provide - // a jump around that code for the prior paren tail code. - // A regular expressing like ((xxx)...)? needs this. - fromPriorBacktrack = generator->jump(); - needJumpForPriorParenTail = true; - } - - if (!m_backtrack.hasDestination()) { - if (m_backtrackToLabel.isSet()) { - m_backtrack.setLabel(m_backtrackToLabel); - nextBacktrackFallThrough = false; - } else if (m_jumpListToPriorParen) { - // If we don't have a destination, go back to either the prior paren or the next outer paren. - m_backtrack.setBacktrackJumpList(m_jumpListToPriorParen); - nextBacktrackFallThrough = false; - } else - m_backtrack.setBacktrackJumpList(&jumpsToNext); - } else - nextBacktrackFallThrough = false; - - // A failure AFTER the parens jumps here - Backtrack to this paren - m_backtrackFromAfterParens = generator->label(); - - if (m_dataAfterLabelPtr.isSet()) - generator->m_expressionState.m_backtrackRecords.append(AlternativeBacktrackRecord(m_dataAfterLabelPtr, m_backtrackFromAfterParens)); - - m_afterBacktrackJumps.link(generator); - - if (m_term.quantityType == QuantifierGreedy) { - // If this is -1 we have now tested with both with and without the parens. - generator->loadFromFrame(parenthesesFrameLocation, indexTemporary); - m_backtrack.jumpToBacktrack(generator, generator->branch32(Equal, indexTemporary, TrustedImm32(-1))); - } else if (m_term.quantityType == QuantifierNonGreedy) { - // If this is -1 we have now tested with both with and without the parens. - generator->loadFromFrame(parenthesesFrameLocation, indexTemporary); - generator->branch32(Equal, indexTemporary, TrustedImm32(-1)).linkTo(m_nonGreedyTryParentheses, generator); - } - - if (!m_doDirectBacktrack) - m_parenBacktrack.plantJumpToBacktrackIfExists(generator); - - // A failure WITHIN the parens jumps here - if (needJumpForPriorParenTail) - fromPriorBacktrack.link(generator); - m_parenBacktrack.linkAlternativeBacktracks(generator); - m_withinBacktrackJumps.link(generator); - - if (m_term.capture()) - generator->store32(TrustedImm32(-1), Address(output, (m_term.parentheses.subpatternId << 1) * sizeof(int))); - - if (m_term.quantityType == QuantifierGreedy) { - generator->storeToFrame(TrustedImm32(-1), parenthesesFrameLocation); - generator->jump().linkTo(m_fallThrough, generator); - nextBacktrackFallThrough = false; - } else if (!nextBacktrackFallThrough) - m_backtrack.jumpToBacktrack(generator); - - if (!m_doDirectBacktrack) - m_backtrack.setNextBacktrackLabel(m_backtrackFromAfterParens); - - return nextBacktrackFallThrough; - } - - PatternTerm& m_term; - int m_nestingLevel; - unsigned m_subParenIndex; - JumpList* m_jumpListToPriorParen; - Label m_nonGreedyTryParentheses; - Label m_fallThrough; - Label m_backtrackToLabel; - Label m_backtrackFromAfterParens; - DataLabelPtr m_dataAfterLabelPtr; - JumpList m_withinBacktrackJumps; - JumpList m_afterBacktrackJumps; - BacktrackDestination m_parenBacktrack; - BacktrackDestination m_backtrack; - bool m_doDirectBacktrack; - }; + // This method provides a default implementation of backtracking common + // to many terms; terms commonly jump out of the forwards matching path + // on any failed conditions, and add these jumps to the m_jumps list. If + // no special handling is required we can often just backtrack to m_jumps. + void backtrackTermDefault(size_t opIndex) + { + YarrOp& op = m_ops[opIndex]; + m_backtrackingState.append(op.m_jumps); + } - void generateAssertionBOL(TermGenerationState& state) + void generateAssertionBOL(size_t opIndex) { - PatternTerm& term = state.term(); + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; if (m_pattern.m_multiline) { const RegisterID character = regT0; JumpList matchDest; - if (!term.inputPosition) - matchDest.append(branch32(Equal, index, Imm32(state.checkedTotal))); + if (!term->inputPosition) + matchDest.append(branch32(Equal, index, Imm32(m_checked))); - readCharacter(state.inputOffset() - 1, character); + readCharacter((term->inputPosition - m_checked) - 1, character); matchCharacterClass(character, matchDest, m_pattern.newlineCharacterClass()); - state.jumpToBacktrack(this); + op.m_jumps.append(jump()); matchDest.link(this); } else { // Erk, really should poison out these alternatives early. :-/ - if (term.inputPosition) - state.jumpToBacktrack(this); + if (term->inputPosition) + op.m_jumps.append(jump()); else - state.jumpToBacktrack(this, branch32(NotEqual, index, Imm32(state.checkedTotal))); + op.m_jumps.append(branch32(NotEqual, index, Imm32(m_checked))); } } + void backtrackAssertionBOL(size_t opIndex) + { + backtrackTermDefault(opIndex); + } - void generateAssertionEOL(TermGenerationState& state) + void generateAssertionEOL(size_t opIndex) { - PatternTerm& term = state.term(); + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; if (m_pattern.m_multiline) { const RegisterID character = regT0; JumpList matchDest; - if (term.inputPosition == state.checkedTotal) + if (term->inputPosition == m_checked) matchDest.append(atEndOfInput()); - readCharacter(state.inputOffset(), character); + readCharacter((term->inputPosition - m_checked), character); matchCharacterClass(character, matchDest, m_pattern.newlineCharacterClass()); - state.jumpToBacktrack(this); + op.m_jumps.append(jump()); matchDest.link(this); } else { - if (term.inputPosition == state.checkedTotal) - state.jumpToBacktrack(this, notAtEndOfInput()); + if (term->inputPosition == m_checked) + op.m_jumps.append(notAtEndOfInput()); // Erk, really should poison out these alternatives early. :-/ else - state.jumpToBacktrack(this); + op.m_jumps.append(jump()); } } + void backtrackAssertionEOL(size_t opIndex) + { + backtrackTermDefault(opIndex); + } // Also falls though on nextIsNotWordChar. - void matchAssertionWordchar(TermGenerationState& state, JumpList& nextIsWordChar, JumpList& nextIsNotWordChar) + void matchAssertionWordchar(size_t opIndex, JumpList& nextIsWordChar, JumpList& nextIsNotWordChar) { + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; + const RegisterID character = regT0; - PatternTerm& term = state.term(); - if (term.inputPosition == state.checkedTotal) + if (term->inputPosition == m_checked) nextIsNotWordChar.append(atEndOfInput()); - readCharacter(state.inputOffset(), character); + readCharacter((term->inputPosition - m_checked), character); matchCharacterClass(character, nextIsWordChar, m_pattern.wordcharCharacterClass()); } - void generateAssertionWordBoundary(TermGenerationState& state) + void generateAssertionWordBoundary(size_t opIndex) { + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; + const RegisterID character = regT0; - PatternTerm& term = state.term(); Jump atBegin; JumpList matchDest; - if (!term.inputPosition) - atBegin = branch32(Equal, index, Imm32(state.checkedTotal)); - readCharacter(state.inputOffset() - 1, character); + if (!term->inputPosition) + atBegin = branch32(Equal, index, Imm32(m_checked)); + readCharacter((term->inputPosition - m_checked) - 1, character); matchCharacterClass(character, matchDest, m_pattern.wordcharCharacterClass()); - if (!term.inputPosition) + if (!term->inputPosition) atBegin.link(this); // We fall through to here if the last character was not a wordchar. JumpList nonWordCharThenWordChar; JumpList nonWordCharThenNonWordChar; - if (term.invert()) { - matchAssertionWordchar(state, nonWordCharThenNonWordChar, nonWordCharThenWordChar); + if (term->invert()) { + matchAssertionWordchar(opIndex, nonWordCharThenNonWordChar, nonWordCharThenWordChar); nonWordCharThenWordChar.append(jump()); } else { - matchAssertionWordchar(state, nonWordCharThenWordChar, nonWordCharThenNonWordChar); + matchAssertionWordchar(opIndex, nonWordCharThenWordChar, nonWordCharThenNonWordChar); nonWordCharThenNonWordChar.append(jump()); } - state.jumpToBacktrack(this, nonWordCharThenNonWordChar); + op.m_jumps.append(nonWordCharThenNonWordChar); // We jump here if the last character was a wordchar. matchDest.link(this); JumpList wordCharThenWordChar; JumpList wordCharThenNonWordChar; - if (term.invert()) { - matchAssertionWordchar(state, wordCharThenNonWordChar, wordCharThenWordChar); + if (term->invert()) { + matchAssertionWordchar(opIndex, wordCharThenNonWordChar, wordCharThenWordChar); wordCharThenWordChar.append(jump()); } else { - matchAssertionWordchar(state, wordCharThenWordChar, wordCharThenNonWordChar); + matchAssertionWordchar(opIndex, wordCharThenWordChar, wordCharThenNonWordChar); // This can fall-though! } - state.jumpToBacktrack(this, wordCharThenWordChar); + op.m_jumps.append(wordCharThenWordChar); nonWordCharThenWordChar.link(this); wordCharThenNonWordChar.link(this); } + void backtrackAssertionWordBoundary(size_t opIndex) + { + backtrackTermDefault(opIndex); + } - void generatePatternCharacterSingle(TermGenerationState& state) + void generatePatternCharacterOnce(size_t opIndex) { + YarrOp& op = m_ops[opIndex]; + + // m_ops always ends with a OpBodyAlternativeEnd or OpMatchFailed + // node, so there must always be at least one more node. + ASSERT(opIndex + 1 < m_ops.size()); + YarrOp& nextOp = m_ops[opIndex + 1]; + + if (op.m_isDeadCode) + return; + + PatternTerm* term = op.m_term; + UChar ch = term->patternCharacter; + const RegisterID character = regT0; - UChar ch = state.term().patternCharacter; + + if (nextOp.m_op == OpTerm) { + PatternTerm* nextTerm = nextOp.m_term; + if (nextTerm->type == PatternTerm::TypePatternCharacter + && nextTerm->quantityType == QuantifierFixedCount + && nextTerm->quantityCount == 1 + && nextTerm->inputPosition == (term->inputPosition + 1)) { + + UChar ch2 = nextTerm->patternCharacter; + + int mask = 0; + int chPair = ch | (ch2 << 16); + + if (m_pattern.m_ignoreCase) { + if (isASCIIAlpha(ch)) + mask |= 32; + if (isASCIIAlpha(ch2)) + mask |= 32 << 16; + } + + BaseIndex address(input, index, TimesTwo, (term->inputPosition - m_checked) * sizeof(UChar)); + if (mask) { + load32WithUnalignedHalfWords(address, character); + or32(Imm32(mask), character); + op.m_jumps.append(branch32(NotEqual, character, Imm32(chPair | mask))); + } else + op.m_jumps.append(branch32WithUnalignedHalfWords(NotEqual, address, Imm32(chPair))); + + nextOp.m_isDeadCode = true; + return; + } + } if (m_pattern.m_ignoreCase && isASCIIAlpha(ch)) { - readCharacter(state.inputOffset(), character); + readCharacter(term->inputPosition - m_checked, character); or32(TrustedImm32(32), character); - state.jumpToBacktrack(this, branch32(NotEqual, character, Imm32(Unicode::toLower(ch)))); + op.m_jumps.append(branch32(NotEqual, character, Imm32(Unicode::toLower(ch)))); } else { ASSERT(!m_pattern.m_ignoreCase || (Unicode::toLower(ch) == Unicode::toUpper(ch))); - state.jumpToBacktrack(this, jumpIfCharNotEquals(ch, state.inputOffset())); + op.m_jumps.append(jumpIfCharNotEquals(ch, term->inputPosition - m_checked)); } } - - void generatePatternCharacterPair(TermGenerationState& state) + void backtrackPatternCharacterOnce(size_t opIndex) { - const RegisterID character = regT0; - UChar ch1 = state.term().patternCharacter; - UChar ch2 = state.lookaheadTerm().patternCharacter; - - int mask = 0; - int chPair = ch1 | (ch2 << 16); - - if (m_pattern.m_ignoreCase) { - if (isASCIIAlpha(ch1)) - mask |= 32; - if (isASCIIAlpha(ch2)) - mask |= 32 << 16; - } - - if (mask) { - load32WithUnalignedHalfWords(BaseIndex(input, index, TimesTwo, state.inputOffset() * sizeof(UChar)), character); - or32(Imm32(mask), character); - state.jumpToBacktrack(this, branch32(NotEqual, character, Imm32(chPair | mask))); - } else - state.jumpToBacktrack(this, branch32WithUnalignedHalfWords(NotEqual, BaseIndex(input, index, TimesTwo, state.inputOffset() * sizeof(UChar)), Imm32(chPair))); + backtrackTermDefault(opIndex); } - void generatePatternCharacterFixed(TermGenerationState& state) + void generatePatternCharacterFixed(size_t opIndex) { + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; + UChar ch = term->patternCharacter; + const RegisterID character = regT0; const RegisterID countRegister = regT1; - PatternTerm& term = state.term(); - UChar ch = term.patternCharacter; move(index, countRegister); - sub32(Imm32(term.quantityCount), countRegister); + sub32(Imm32(term->quantityCount), countRegister); Label loop(this); + BaseIndex address(input, countRegister, TimesTwo, (term->inputPosition - m_checked + term->quantityCount) * sizeof(UChar)); + if (m_pattern.m_ignoreCase && isASCIIAlpha(ch)) { - load16(BaseIndex(input, countRegister, TimesTwo, (state.inputOffset() + term.quantityCount) * sizeof(UChar)), character); + load16(address, character); or32(TrustedImm32(32), character); - state.jumpToBacktrack(this, branch32(NotEqual, character, Imm32(Unicode::toLower(ch)))); + op.m_jumps.append(branch32(NotEqual, character, Imm32(Unicode::toLower(ch)))); } else { ASSERT(!m_pattern.m_ignoreCase || (Unicode::toLower(ch) == Unicode::toUpper(ch))); - state.jumpToBacktrack(this, branch16(NotEqual, BaseIndex(input, countRegister, TimesTwo, (state.inputOffset() + term.quantityCount) * sizeof(UChar)), Imm32(ch))); + op.m_jumps.append(branch16(NotEqual, address, Imm32(ch))); } add32(TrustedImm32(1), countRegister); branch32(NotEqual, countRegister, index).linkTo(loop, this); } + void backtrackPatternCharacterFixed(size_t opIndex) + { + backtrackTermDefault(opIndex); + } - void generatePatternCharacterGreedy(TermGenerationState& state) + void generatePatternCharacterGreedy(size_t opIndex) { + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; + UChar ch = term->patternCharacter; + const RegisterID character = regT0; const RegisterID countRegister = regT1; - PatternTerm& term = state.term(); - UChar ch = term.patternCharacter; move(TrustedImm32(0), countRegister); @@ -1352,121 +752,152 @@ class YarrGenerator : private MacroAssembler { Label loop(this); failures.append(atEndOfInput()); if (m_pattern.m_ignoreCase && isASCIIAlpha(ch)) { - readCharacter(state.inputOffset(), character); + readCharacter(term->inputPosition - m_checked, character); or32(TrustedImm32(32), character); failures.append(branch32(NotEqual, character, Imm32(Unicode::toLower(ch)))); } else { ASSERT(!m_pattern.m_ignoreCase || (Unicode::toLower(ch) == Unicode::toUpper(ch))); - failures.append(jumpIfCharNotEquals(ch, state.inputOffset())); + failures.append(jumpIfCharNotEquals(ch, term->inputPosition - m_checked)); } add32(TrustedImm32(1), countRegister); add32(TrustedImm32(1), index); - if (term.quantityCount != quantifyInfinite) { - branch32(NotEqual, countRegister, Imm32(term.quantityCount)).linkTo(loop, this); - failures.append(jump()); - } else + if (term->quantityCount == quantifyInfinite) jump(loop); - - Label backtrackBegin(this); - loadFromFrame(term.frameLocation, countRegister); - state.jumpToBacktrack(this, branchTest32(Zero, countRegister)); - sub32(TrustedImm32(1), countRegister); - sub32(TrustedImm32(1), index); + else + branch32(NotEqual, countRegister, Imm32(term->quantityCount)).linkTo(loop, this); failures.link(this); + op.m_reentry = label(); - storeToFrame(countRegister, term.frameLocation); + storeToFrame(countRegister, term->frameLocation); - state.setBacktrackLabel(backtrackBegin); } + void backtrackPatternCharacterGreedy(size_t opIndex) + { + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; + + const RegisterID countRegister = regT1; - void generatePatternCharacterNonGreedy(TermGenerationState& state) + m_backtrackingState.link(this); + + loadFromFrame(term->frameLocation, countRegister); + m_backtrackingState.append(branchTest32(Zero, countRegister)); + sub32(TrustedImm32(1), countRegister); + sub32(TrustedImm32(1), index); + jump(op.m_reentry); + } + + void generatePatternCharacterNonGreedy(size_t opIndex) { - const RegisterID character = regT0; + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; + const RegisterID countRegister = regT1; - PatternTerm& term = state.term(); - UChar ch = term.patternCharacter; move(TrustedImm32(0), countRegister); + op.m_reentry = label(); + storeToFrame(countRegister, term->frameLocation); + } + void backtrackPatternCharacterNonGreedy(size_t opIndex) + { + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; + UChar ch = term->patternCharacter; + + const RegisterID character = regT0; + const RegisterID countRegister = regT1; - Jump firstTimeDoNothing = jump(); + JumpList nonGreedyFailures; - Label hardFail(this); - sub32(countRegister, index); - state.jumpToBacktrack(this); + m_backtrackingState.link(this); - Label backtrackBegin(this); - loadFromFrame(term.frameLocation, countRegister); + loadFromFrame(term->frameLocation, countRegister); - atEndOfInput().linkTo(hardFail, this); - if (term.quantityCount != quantifyInfinite) - branch32(Equal, countRegister, Imm32(term.quantityCount), hardFail); + nonGreedyFailures.append(atEndOfInput()); + if (term->quantityCount != quantifyInfinite) + nonGreedyFailures.append(branch32(Equal, countRegister, Imm32(term->quantityCount))); if (m_pattern.m_ignoreCase && isASCIIAlpha(ch)) { - readCharacter(state.inputOffset(), character); + readCharacter(term->inputPosition - m_checked, character); or32(TrustedImm32(32), character); - branch32(NotEqual, character, Imm32(Unicode::toLower(ch))).linkTo(hardFail, this); + nonGreedyFailures.append(branch32(NotEqual, character, Imm32(Unicode::toLower(ch)))); } else { ASSERT(!m_pattern.m_ignoreCase || (Unicode::toLower(ch) == Unicode::toUpper(ch))); - jumpIfCharNotEquals(ch, state.inputOffset()).linkTo(hardFail, this); + nonGreedyFailures.append(jumpIfCharNotEquals(ch, term->inputPosition - m_checked)); } add32(TrustedImm32(1), countRegister); add32(TrustedImm32(1), index); - firstTimeDoNothing.link(this); - storeToFrame(countRegister, term.frameLocation); + jump(op.m_reentry); - state.setBacktrackLabel(backtrackBegin); + nonGreedyFailures.link(this); + sub32(countRegister, index); + m_backtrackingState.fallthrough(); } - void generateCharacterClassSingle(TermGenerationState& state) + void generateCharacterClassOnce(size_t opIndex) { + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; + const RegisterID character = regT0; - PatternTerm& term = state.term(); JumpList matchDest; - readCharacter(state.inputOffset(), character); - matchCharacterClass(character, matchDest, term.characterClass); + readCharacter((term->inputPosition - m_checked), character); + matchCharacterClass(character, matchDest, term->characterClass); - if (term.invert()) - state.jumpToBacktrack(this, matchDest); + if (term->invert()) + op.m_jumps.append(matchDest); else { - state.jumpToBacktrack(this); + op.m_jumps.append(jump()); matchDest.link(this); } } + void backtrackCharacterClassOnce(size_t opIndex) + { + backtrackTermDefault(opIndex); + } - void generateCharacterClassFixed(TermGenerationState& state) + void generateCharacterClassFixed(size_t opIndex) { + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; + const RegisterID character = regT0; const RegisterID countRegister = regT1; - PatternTerm& term = state.term(); move(index, countRegister); - sub32(Imm32(term.quantityCount), countRegister); + sub32(Imm32(term->quantityCount), countRegister); Label loop(this); JumpList matchDest; - load16(BaseIndex(input, countRegister, TimesTwo, (state.inputOffset() + term.quantityCount) * sizeof(UChar)), character); - matchCharacterClass(character, matchDest, term.characterClass); + load16(BaseIndex(input, countRegister, TimesTwo, (term->inputPosition - m_checked + term->quantityCount) * sizeof(UChar)), character); + matchCharacterClass(character, matchDest, term->characterClass); - if (term.invert()) - state.jumpToBacktrack(this, matchDest); + if (term->invert()) + op.m_jumps.append(matchDest); else { - state.jumpToBacktrack(this); + op.m_jumps.append(jump()); matchDest.link(this); } add32(TrustedImm32(1), countRegister); branch32(NotEqual, countRegister, index).linkTo(loop, this); } + void backtrackCharacterClassFixed(size_t opIndex) + { + backtrackTermDefault(opIndex); + } - void generateCharacterClassGreedy(TermGenerationState& state) + void generateCharacterClassGreedy(size_t opIndex) { + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; + const RegisterID character = regT0; const RegisterID countRegister = regT1; - PatternTerm& term = state.term(); move(TrustedImm32(0), countRegister); @@ -1474,692 +905,1356 @@ class YarrGenerator : private MacroAssembler { Label loop(this); failures.append(atEndOfInput()); - if (term.invert()) { - readCharacter(state.inputOffset(), character); - matchCharacterClass(character, failures, term.characterClass); + if (term->invert()) { + readCharacter(term->inputPosition - m_checked, character); + matchCharacterClass(character, failures, term->characterClass); } else { JumpList matchDest; - readCharacter(state.inputOffset(), character); - matchCharacterClass(character, matchDest, term.characterClass); + readCharacter(term->inputPosition - m_checked, character); + matchCharacterClass(character, matchDest, term->characterClass); failures.append(jump()); matchDest.link(this); } add32(TrustedImm32(1), countRegister); add32(TrustedImm32(1), index); - if (term.quantityCount != quantifyInfinite) { - branch32(NotEqual, countRegister, Imm32(term.quantityCount)).linkTo(loop, this); + if (term->quantityCount != quantifyInfinite) { + branch32(NotEqual, countRegister, Imm32(term->quantityCount)).linkTo(loop, this); failures.append(jump()); } else jump(loop); - Label backtrackBegin(this); - loadFromFrame(term.frameLocation, countRegister); - state.jumpToBacktrack(this, branchTest32(Zero, countRegister)); - sub32(TrustedImm32(1), countRegister); - sub32(TrustedImm32(1), index); - failures.link(this); + op.m_reentry = label(); + + storeToFrame(countRegister, term->frameLocation); + } + void backtrackCharacterClassGreedy(size_t opIndex) + { + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; - storeToFrame(countRegister, term.frameLocation); + const RegisterID countRegister = regT1; + + m_backtrackingState.link(this); - state.setBacktrackLabel(backtrackBegin); + loadFromFrame(term->frameLocation, countRegister); + m_backtrackingState.append(branchTest32(Zero, countRegister)); + sub32(TrustedImm32(1), countRegister); + sub32(TrustedImm32(1), index); + jump(op.m_reentry); } - void generateCharacterClassNonGreedy(TermGenerationState& state) + void generateCharacterClassNonGreedy(size_t opIndex) { - const RegisterID character = regT0; + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; + const RegisterID countRegister = regT1; - PatternTerm& term = state.term(); move(TrustedImm32(0), countRegister); + op.m_reentry = label(); + storeToFrame(countRegister, term->frameLocation); + } + void backtrackCharacterClassNonGreedy(size_t opIndex) + { + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; - Jump firstTimeDoNothing = jump(); + const RegisterID character = regT0; + const RegisterID countRegister = regT1; - Label hardFail(this); - sub32(countRegister, index); - state.jumpToBacktrack(this); + JumpList nonGreedyFailures; + + m_backtrackingState.link(this); Label backtrackBegin(this); - loadFromFrame(term.frameLocation, countRegister); + loadFromFrame(term->frameLocation, countRegister); - atEndOfInput().linkTo(hardFail, this); - branch32(Equal, countRegister, Imm32(term.quantityCount), hardFail); + nonGreedyFailures.append(atEndOfInput()); + nonGreedyFailures.append(branch32(Equal, countRegister, Imm32(term->quantityCount))); JumpList matchDest; - readCharacter(state.inputOffset(), character); - matchCharacterClass(character, matchDest, term.characterClass); + readCharacter(term->inputPosition - m_checked, character); + matchCharacterClass(character, matchDest, term->characterClass); - if (term.invert()) - matchDest.linkTo(hardFail, this); + if (term->invert()) + nonGreedyFailures.append(matchDest); else { - jump(hardFail); + nonGreedyFailures.append(jump()); matchDest.link(this); } add32(TrustedImm32(1), countRegister); add32(TrustedImm32(1), index); - firstTimeDoNothing.link(this); - storeToFrame(countRegister, term.frameLocation); + jump(op.m_reentry); - state.setBacktrackLabel(backtrackBegin); + nonGreedyFailures.link(this); + sub32(countRegister, index); + m_backtrackingState.fallthrough(); } - void generateParenthesesDisjunction(PatternTerm& parenthesesTerm, TermGenerationState& state, unsigned alternativeFrameLocation) + // Code generation/backtracking for simple terms + // (pattern characters, character classes, and assertions). + // These methods farm out work to the set of functions above. + void generateTerm(size_t opIndex) { - ASSERT((parenthesesTerm.type == PatternTerm::TypeParenthesesSubpattern) || (parenthesesTerm.type == PatternTerm::TypeParentheticalAssertion)); - ASSERT(parenthesesTerm.quantityCount == 1); + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; - PatternDisjunction* disjunction = parenthesesTerm.parentheses.disjunction; - unsigned preCheckedCount = ((parenthesesTerm.quantityType == QuantifierFixedCount) && (parenthesesTerm.type != PatternTerm::TypeParentheticalAssertion)) ? disjunction->m_minimumSize : 0; + switch (term->type) { + case PatternTerm::TypePatternCharacter: + switch (term->quantityType) { + case QuantifierFixedCount: + if (term->quantityCount == 1) + generatePatternCharacterOnce(opIndex); + else + generatePatternCharacterFixed(opIndex); + break; + case QuantifierGreedy: + generatePatternCharacterGreedy(opIndex); + break; + case QuantifierNonGreedy: + generatePatternCharacterNonGreedy(opIndex); + break; + } + break; - if (disjunction->m_alternatives.size() == 1) { - state.resetAlternative(); - ASSERT(state.alternativeValid()); - PatternAlternative* alternative = state.alternative(); - optimizeAlternative(alternative); + case PatternTerm::TypeCharacterClass: + switch (term->quantityType) { + case QuantifierFixedCount: + if (term->quantityCount == 1) + generateCharacterClassOnce(opIndex); + else + generateCharacterClassFixed(opIndex); + break; + case QuantifierGreedy: + generateCharacterClassGreedy(opIndex); + break; + case QuantifierNonGreedy: + generateCharacterClassNonGreedy(opIndex); + break; + } + break; - int countToCheck = alternative->m_minimumSize - preCheckedCount; - if (countToCheck) { - ASSERT((parenthesesTerm.type == PatternTerm::TypeParentheticalAssertion) || (parenthesesTerm.quantityType != QuantifierFixedCount)); + case PatternTerm::TypeAssertionBOL: + generateAssertionBOL(opIndex); + break; - // FIXME: This is quite horrible. The call to 'plantJumpToBacktrackIfExists' - // will be forced to always trampoline into here, just to decrement the index. - // Ick. - Jump skip = jump(); + case PatternTerm::TypeAssertionEOL: + generateAssertionEOL(opIndex); + break; - Label backtrackBegin(this); - sub32(Imm32(countToCheck), index); - state.addBacktrackJump(jump()); + case PatternTerm::TypeAssertionWordBoundary: + generateAssertionWordBoundary(opIndex); + break; - skip.link(this); + case PatternTerm::TypeForwardReference: + break; - state.setBacktrackLabel(backtrackBegin); + case PatternTerm::TypeParenthesesSubpattern: + case PatternTerm::TypeParentheticalAssertion: + ASSERT_NOT_REACHED(); + case PatternTerm::TypeBackReference: + m_shouldFallBack = true; + break; + } + } + void backtrackTerm(size_t opIndex) + { + YarrOp& op = m_ops[opIndex]; + PatternTerm* term = op.m_term; - state.jumpToBacktrack(this, jumpIfNoAvailableInput(countToCheck)); - state.checkedTotal += countToCheck; + switch (term->type) { + case PatternTerm::TypePatternCharacter: + switch (term->quantityType) { + case QuantifierFixedCount: + if (term->quantityCount == 1) + backtrackPatternCharacterOnce(opIndex); + else + backtrackPatternCharacterFixed(opIndex); + break; + case QuantifierGreedy: + backtrackPatternCharacterGreedy(opIndex); + break; + case QuantifierNonGreedy: + backtrackPatternCharacterNonGreedy(opIndex); + break; } + break; - for (state.resetTerm(); state.termValid(); state.nextTerm()) - generateTerm(state); - - state.checkedTotal -= countToCheck; - } else { - JumpList successes; - bool propogateBacktrack = false; - - // Save current state's paren jump list for use with each alternative - JumpList* outerJumpList = state.getJumpListToPriorParen(); + case PatternTerm::TypeCharacterClass: + switch (term->quantityType) { + case QuantifierFixedCount: + if (term->quantityCount == 1) + backtrackCharacterClassOnce(opIndex); + else + backtrackCharacterClassFixed(opIndex); + break; + case QuantifierGreedy: + backtrackCharacterClassGreedy(opIndex); + break; + case QuantifierNonGreedy: + backtrackCharacterClassNonGreedy(opIndex); + break; + } + break; - for (state.resetAlternative(); state.alternativeValid(); state.nextAlternative(), state.setJumpListToPriorParen(outerJumpList)) { - PatternAlternative* alternative = state.alternative(); - optimizeAlternative(alternative); + case PatternTerm::TypeAssertionBOL: + backtrackAssertionBOL(opIndex); + break; - ASSERT(alternative->m_minimumSize >= preCheckedCount); - int countToCheck = alternative->m_minimumSize - preCheckedCount; - if (countToCheck) { - state.addBacktrackJump(jumpIfNoAvailableInput(countToCheck)); - state.checkedTotal += countToCheck; - } + case PatternTerm::TypeAssertionEOL: + backtrackAssertionEOL(opIndex); + break; - for (state.resetTerm(); state.termValid(); state.nextTerm()) - generateTerm(state); + case PatternTerm::TypeAssertionWordBoundary: + backtrackAssertionWordBoundary(opIndex); + break; - // Matched an alternative. - DataLabelPtr dataLabel = storeToFrameWithPatch(alternativeFrameLocation); + case PatternTerm::TypeForwardReference: + break; - if (!state.isLastAlternative() || countToCheck) - successes.append(jump()); + case PatternTerm::TypeParenthesesSubpattern: + case PatternTerm::TypeParentheticalAssertion: + ASSERT_NOT_REACHED(); + case PatternTerm::TypeBackReference: + m_shouldFallBack = true; + break; + } + } - // Alternative did not match. + void generate() + { + // Forwards generate the matching code. + ASSERT(m_ops.size()); + size_t opIndex = 0; - // Do we have a backtrack destination? - // if so, link the data label to it. - state.linkDataLabelToBacktrackIfExists(this, dataLabel); + do { + YarrOp& op = m_ops[opIndex]; + switch (op.m_op) { - if (!state.isLastAlternative() || countToCheck) - state.linkAlternativeBacktracks(this); + case OpTerm: + generateTerm(opIndex); + break; - if (countToCheck) { - sub32(Imm32(countToCheck), index); - state.checkedTotal -= countToCheck; - } else if (state.isLastAlternative()) - propogateBacktrack = true; + // OpBodyAlternativeBegin/Next/End + // + // These nodes wrap the set of alternatives in the body of the regular expression. + // There may be either one or two chains of OpBodyAlternative nodes, one representing + // the 'once through' sequence of alternatives (if any exist), and one representing + // the repeating alternatives (again, if any exist). + // + // Upon normal entry to the Begin alternative, we will check that input is available. + // Reentry to the Begin alternative will take place after the check has taken place, + // and will assume that the input position has already been progressed as appropriate. + // + // Entry to subsequent Next/End alternatives occurs when the prior alternative has + // successfully completed a match - return a success state from JIT code. + // + // Next alternatives allow for reentry optimized to suit backtracking from its + // preceding alternative. It expects the input position to still be set to a position + // appropriate to its predecessor, and it will only perform an input check if the + // predecessor had a minimum size less than its own. + // + // In the case 'once through' expressions, the End node will also have a reentry + // point to jump to when the last alternative fails. Again, this expects the input + // position to still reflect that expected by the prior alternative. + case OpBodyAlternativeBegin: { + PatternAlternative* alternative = op.m_alternative; + + // Upon entry at the head of the set of alternatives, check if input is available + // to run the first alternative. (This progresses the input position). + op.m_jumps.append(jumpIfNoAvailableInput(alternative->m_minimumSize)); + // We will reenter after the check, and assume the input position to have been + // set as appropriate to this alternative. + op.m_reentry = label(); + + m_checked += alternative->m_minimumSize; + break; } - // We fall through to here when the last alternative fails. - // Add a backtrack out of here for the parenthese handling code to link up. - if (!propogateBacktrack) - state.addBacktrackJump(jump()); - - // Save address on stack for the parens code to backtrack to, to retry the - // next alternative. - state.setBackTrackStackOffset(alternativeFrameLocation * sizeof(void*)); - - successes.link(this); - } - } + case OpBodyAlternativeNext: + case OpBodyAlternativeEnd: { + PatternAlternative* priorAlternative = m_ops[op.m_previousOp].m_alternative; + PatternAlternative* alternative = op.m_alternative; + + // If we get here, the prior alternative matched - return success. + + // Adjust the stack pointer to remove the pattern's frame. + if (m_pattern.m_body->m_callFrameSize) + addPtr(Imm32(m_pattern.m_body->m_callFrameSize * sizeof(void*)), stackPointerRegister); + + // Load appropriate values into the return register and the first output + // slot, and return. In the case of pattern with a fixed size, we will + // not have yet set the value in the first + ASSERT(index != returnRegister); + if (m_pattern.m_body->m_hasFixedSize) { + move(index, returnRegister); + if (priorAlternative->m_minimumSize) + sub32(Imm32(priorAlternative->m_minimumSize), returnRegister); + store32(returnRegister, output); + } else + load32(Address(output), returnRegister); + store32(index, Address(output, 4)); + generateReturn(); + + // This is the divide between the tail of the prior alternative, above, and + // the head of the subsequent alternative, below. + + if (op.m_op == OpBodyAlternativeNext) { + // This is the reentry point for the Next alternative. We expect any code + // that jumps here to do so with the input position matching that of the + // PRIOR alteranative, and we will only check input availability if we + // need to progress it forwards. + op.m_reentry = label(); + if (int delta = alternative->m_minimumSize - priorAlternative->m_minimumSize) { + add32(Imm32(delta), index); + if (delta > 0) + op.m_jumps.append(jumpIfNoAvailableInput()); + } + } else if (op.m_nextOp == notFound) { + // This is the reentry point for the End of 'once through' alternatives, + // jumped to when the las alternative fails to match. + op.m_reentry = label(); + sub32(Imm32(priorAlternative->m_minimumSize), index); + } - void generateParenthesesSingle(TermGenerationState& state) - { - const RegisterID indexTemporary = regT0; - PatternTerm& term = state.term(); - PatternDisjunction* disjunction = term.parentheses.disjunction; - ASSERT(term.quantityCount == 1); + if (op.m_op == OpBodyAlternativeNext) + m_checked += alternative->m_minimumSize; + m_checked -= priorAlternative->m_minimumSize; + break; + } - unsigned preCheckedCount = (term.quantityType == QuantifierFixedCount) ? disjunction->m_minimumSize : 0; + // OpSimpleNestedAlternativeBegin/Next/End + // OpNestedAlternativeBegin/Next/End + // + // These nodes are used to handle sets of alternatives that are nested within + // subpatterns and parenthetical assertions. The 'simple' forms are used where + // we do not need to be able to backtrack back into any alternative other than + // the last, the normal forms allow backtracking into any alternative. + // + // Each Begin/Next node is responsible for planting an input check to ensure + // sufficient input is available on entry. Next nodes additionally need to + // jump to the end - Next nodes use the End node's m_jumps list to hold this + // set of jumps. + // + // In the non-simple forms, successful alternative matches must store a + // 'return address' using a DataLabelPtr, used to store the address to jump + // to when backtracking, to get to the code for the appropriate alternative. + case OpSimpleNestedAlternativeBegin: + case OpNestedAlternativeBegin: { + PatternTerm* term = op.m_term; + PatternAlternative* alternative = op.m_alternative; + PatternDisjunction* disjunction = term->parentheses.disjunction; + + // Calculate how much input we need to check for, and if non-zero check. + op.m_checkAdjust = alternative->m_minimumSize; + if ((term->quantityType == QuantifierFixedCount) && (term->type != PatternTerm::TypeParentheticalAssertion)) + op.m_checkAdjust -= disjunction->m_minimumSize; + if (op.m_checkAdjust) + op.m_jumps.append(jumpIfNoAvailableInput(op.m_checkAdjust)); + + m_checked += op.m_checkAdjust; + break; + } + case OpSimpleNestedAlternativeNext: + case OpNestedAlternativeNext: { + PatternTerm* term = op.m_term; + PatternAlternative* alternative = op.m_alternative; + PatternDisjunction* disjunction = term->parentheses.disjunction; + + // In the non-simple case, store a 'return address' so we can backtrack correctly. + if (op.m_op == OpNestedAlternativeNext) { + unsigned parenthesesFrameLocation = term->frameLocation; + unsigned alternativeFrameLocation = parenthesesFrameLocation; + if (term->quantityType != QuantifierFixedCount) + alternativeFrameLocation += YarrStackSpaceForBackTrackInfoParenthesesOnce; + op.m_returnAddress = storeToFrameWithPatch(alternativeFrameLocation); + } - unsigned parenthesesFrameLocation = term.frameLocation; - unsigned alternativeFrameLocation = parenthesesFrameLocation; - if (term.quantityType != QuantifierFixedCount) - alternativeFrameLocation += YarrStackSpaceForBackTrackInfoParenthesesOnce; + // If we reach here then the last alternative has matched - jump to the + // End node, to skip over any further alternatives. + // + // FIXME: this is logically O(N^2) (though N can be expected to be very + // small). We could avoid this either by adding an extra jump to the JIT + // data structures, or by making backtracking code that jumps to Next + // alternatives are responsible for checking that input is available (if + // we didn't need to plant the input checks, then m_jumps would be free). + YarrOp* endOp = &m_ops[op.m_nextOp]; + while (endOp->m_nextOp != notFound) { + ASSERT(endOp->m_op == OpSimpleNestedAlternativeNext || endOp->m_op == OpNestedAlternativeNext); + endOp = &m_ops[endOp->m_nextOp]; + } + ASSERT(endOp->m_op == OpSimpleNestedAlternativeEnd || endOp->m_op == OpNestedAlternativeEnd); + endOp->m_jumps.append(jump()); + + // This is the entry point for the next alternative. + op.m_reentry = label(); + + // Calculate how much input we need to check for, and if non-zero check. + op.m_checkAdjust = alternative->m_minimumSize; + if ((term->quantityType == QuantifierFixedCount) && (term->type != PatternTerm::TypeParentheticalAssertion)) + op.m_checkAdjust -= disjunction->m_minimumSize; + if (op.m_checkAdjust) + op.m_jumps.append(jumpIfNoAvailableInput(op.m_checkAdjust)); + + YarrOp& lastOp = m_ops[op.m_previousOp]; + m_checked -= lastOp.m_checkAdjust; + m_checked += op.m_checkAdjust; + break; + } + case OpSimpleNestedAlternativeEnd: + case OpNestedAlternativeEnd: { + PatternTerm* term = op.m_term; + + // In the non-simple case, store a 'return address' so we can backtrack correctly. + if (op.m_op == OpNestedAlternativeEnd) { + unsigned parenthesesFrameLocation = term->frameLocation; + unsigned alternativeFrameLocation = parenthesesFrameLocation; + if (term->quantityType != QuantifierFixedCount) + alternativeFrameLocation += YarrStackSpaceForBackTrackInfoParenthesesOnce; + op.m_returnAddress = storeToFrameWithPatch(alternativeFrameLocation); + } - // optimized case - no capture & no quantifier can be handled in a light-weight manner. - if (!term.capture() && (term.quantityType == QuantifierFixedCount)) { - m_expressionState.incrementParenNestingLevel(); + // If this set of alternatives contains more than one alternative, + // then the Next nodes will have planted jumps to the End, and added + // them to this node's m_jumps list. + op.m_jumps.link(this); + op.m_jumps.clear(); - TermGenerationState parenthesesState(disjunction, state.checkedTotal); + YarrOp& lastOp = m_ops[op.m_previousOp]; + m_checked -= lastOp.m_checkAdjust; + break; + } - // Use the current state's jump list for the nested parentheses. - parenthesesState.setJumpListToPriorParen(state.getJumpListToPriorParen()); + // OpParenthesesSubpatternOnceBegin/End + // + // These nodes support (optionally) capturing subpatterns, that have a + // quantity count of 1 (this covers fixed once, and ?/?? quantifiers). + case OpParenthesesSubpatternOnceBegin: { + PatternTerm* term = op.m_term; + unsigned parenthesesFrameLocation = term->frameLocation; + const RegisterID indexTemporary = regT0; + ASSERT(term->quantityCount == 1); + + // Upon entry to a Greedy quantified set of parenthese store the index. + // We'll use this for two purposes: + // - To indicate which iteration we are on of mathing the remainder of + // the expression after the parentheses - the first, including the + // match within the parentheses, or the second having skipped over them. + // - To check for empty matches, which must be rejected. + // + // At the head of a NonGreedy set of parentheses we'll immediately set the + // value on the stack to -1 (indicating a match skipping the subpattern), + // and plant a jump to the end. We'll also plant a label to backtrack to + // to reenter the subpattern later, with a store to set up index on the + // second iteration. + // + // FIXME: for capturing parens, could use the index in the capture array? + if (term->quantityType == QuantifierGreedy) + storeToFrame(index, parenthesesFrameLocation); + else if (term->quantityType == QuantifierNonGreedy) { + storeToFrame(TrustedImm32(-1), parenthesesFrameLocation); + op.m_jumps.append(jump()); + op.m_reentry = label(); + storeToFrame(index, parenthesesFrameLocation); + } - generateParenthesesDisjunction(state.term(), parenthesesState, alternativeFrameLocation); - // this expects that any backtracks back out of the parentheses will be in the - // parenthesesState's m_backTrackJumps vector, and that if they need backtracking - // they will have set an entry point on the parenthesesState's m_backtrackLabel. - BacktrackDestination& parenthesesBacktrack = parenthesesState.getBacktrackDestination(); - BacktrackDestination& stateBacktrack = state.getBacktrackDestination(); + // If the parenthese are capturing, store the starting index value to the + // captures array, offsetting as necessary. + // + // FIXME: could avoid offsetting this value in JIT code, apply + // offsets only afterwards, at the point the results array is + // being accessed. + if (term->capture()) { + int offsetId = term->parentheses.subpatternId << 1; + int inputOffset = term->inputPosition - m_checked; + if (term->quantityType == QuantifierFixedCount) + inputOffset -= term->parentheses.disjunction->m_minimumSize; + if (inputOffset) { + move(index, indexTemporary); + add32(Imm32(inputOffset), indexTemporary); + store32(indexTemporary, Address(output, offsetId * sizeof(int))); + } else + store32(index, Address(output, offsetId * sizeof(int))); + } + break; + } + case OpParenthesesSubpatternOnceEnd: { + PatternTerm* term = op.m_term; + unsigned parenthesesFrameLocation = term->frameLocation; + const RegisterID indexTemporary = regT0; + ASSERT(term->quantityCount == 1); + + // For Greedy/NonGreedy quantified parentheses, we must reject zero length + // matches. If the minimum size is know to be non-zero we need not check. + if (term->quantityType != QuantifierFixedCount && !term->parentheses.disjunction->m_minimumSize) + op.m_jumps.append(branch32(Equal, index, Address(stackPointerRegister, parenthesesFrameLocation * sizeof(void*)))); + + // If the parenthese are capturing, store the ending index value to the + // captures array, offsetting as necessary. + // + // FIXME: could avoid offsetting this value in JIT code, apply + // offsets only afterwards, at the point the results array is + // being accessed. + if (term->capture()) { + int offsetId = (term->parentheses.subpatternId << 1) + 1; + int inputOffset = term->inputPosition - m_checked; + if (inputOffset) { + move(index, indexTemporary); + add32(Imm32(inputOffset), indexTemporary); + store32(indexTemporary, Address(output, offsetId * sizeof(int))); + } else + store32(index, Address(output, offsetId * sizeof(int))); + } - state.propagateBacktrackingFrom(this, parenthesesBacktrack); - stateBacktrack.propagateBacktrackToLabel(parenthesesBacktrack); + // If the parentheses are quantified Greedy then add a label to jump back + // to if get a failed match from after the parentheses. For NonGreedy + // parentheses, link the jump from before the subpattern to here. + if (term->quantityType == QuantifierGreedy) + op.m_reentry = label(); + else if (term->quantityType == QuantifierNonGreedy) { + YarrOp& beginOp = m_ops[op.m_previousOp]; + beginOp.m_jumps.link(this); + } + break; + } - state.setJumpListToPriorParen(parenthesesState.getJumpListToPriorParen()); + // OpParenthesesSubpatternTerminalBegin/End + case OpParenthesesSubpatternTerminalBegin: { + PatternTerm* term = op.m_term; + ASSERT(term->quantityType == QuantifierGreedy); + ASSERT(term->quantityCount == quantifyInfinite); + ASSERT(!term->capture()); - m_expressionState.decrementParenNestingLevel(); - } else { - Jump nonGreedySkipParentheses; - Label nonGreedyTryParentheses; - if (term.quantityType == QuantifierGreedy) - storeToFrame(index, parenthesesFrameLocation); - else if (term.quantityType == QuantifierNonGreedy) { - storeToFrame(TrustedImm32(-1), parenthesesFrameLocation); - nonGreedySkipParentheses = jump(); - nonGreedyTryParentheses = label(); - storeToFrame(index, parenthesesFrameLocation); - } + // Upon entry set a label to loop back to. + op.m_reentry = label(); - // store the match start index - if (term.capture()) { - int inputOffset = state.inputOffset() - preCheckedCount; - if (inputOffset) { - move(index, indexTemporary); - add32(Imm32(inputOffset), indexTemporary); - store32(indexTemporary, Address(output, (term.parentheses.subpatternId << 1) * sizeof(int))); - } else - store32(index, Address(output, (term.parentheses.subpatternId << 1) * sizeof(int))); + // Store the start index of the current match; we need to reject zero + // length matches. + storeToFrame(index, term->frameLocation); + break; } + case OpParenthesesSubpatternTerminalEnd: { + PatternTerm* term = op.m_term; - ParenthesesTail* parenthesesTail = m_expressionState.addParenthesesTail(term, state.getJumpListToPriorParen()); + // Check for zero length matches - if the match is non-zero, then we + // can accept it & loop back up to the head of the subpattern. + YarrOp& beginOp = m_ops[op.m_previousOp]; + branch32(NotEqual, index, Address(stackPointerRegister, term->frameLocation * sizeof(void*)), beginOp.m_reentry); - m_expressionState.incrementParenNestingLevel(); + // Reject the match - backtrack back into the subpattern. + op.m_jumps.append(jump()); - TermGenerationState parenthesesState(disjunction, state.checkedTotal); + // This is the entry point to jump to when we stop matching - we will + // do so once the subpattern cannot match any more. + op.m_reentry = label(); + break; + } - // Save the parenthesesTail for backtracking from nested parens to this one. - parenthesesState.setJumpListToPriorParen(&parenthesesTail->m_withinBacktrackJumps); + // OpParentheticalAssertionBegin/End + case OpParentheticalAssertionBegin: { + PatternTerm* term = op.m_term; - // generate the body of the parentheses - generateParenthesesDisjunction(state.term(), parenthesesState, alternativeFrameLocation); + // Store the current index - assertions should not update index, so + // we will need to restore it upon a successful match. + unsigned parenthesesFrameLocation = term->frameLocation; + storeToFrame(index, parenthesesFrameLocation); - // For non-fixed counts, backtrack if we didn't match anything. - if (term.quantityType != QuantifierFixedCount) - parenthesesTail->addAfterParenJump(branch32(Equal, index, Address(stackPointerRegister, (parenthesesFrameLocation * sizeof(void*))))); + // Check + op.m_checkAdjust = m_checked - term->inputPosition; + if (op.m_checkAdjust) + sub32(Imm32(op.m_checkAdjust), index); - // store the match end index - if (term.capture()) { - int inputOffset = state.inputOffset(); - if (inputOffset) { - move(index, indexTemporary); - add32(Imm32(state.inputOffset()), indexTemporary); - store32(indexTemporary, Address(output, ((term.parentheses.subpatternId << 1) + 1) * sizeof(int))); - } else - store32(index, Address(output, ((term.parentheses.subpatternId << 1) + 1) * sizeof(int))); + m_checked -= op.m_checkAdjust; + break; } + case OpParentheticalAssertionEnd: { + PatternTerm* term = op.m_term; + + // Restore the input index value. + unsigned parenthesesFrameLocation = term->frameLocation; + loadFromFrame(parenthesesFrameLocation, index); + + // If inverted, a successful match of the assertion must be treated + // as a failure, so jump to backtracking. + if (term->invert()) { + op.m_jumps.append(jump()); + op.m_reentry = label(); + } - m_expressionState.decrementParenNestingLevel(); - - parenthesesTail->processBacktracks(this, state, parenthesesState, nonGreedyTryParentheses, label()); + YarrOp& lastOp = m_ops[op.m_previousOp]; + m_checked += lastOp.m_checkAdjust; + break; + } - state.setJumpListToPriorParen(&parenthesesTail->m_afterBacktrackJumps); - - parenthesesState.getBacktrackDestination().clear(); + case OpMatchFailed: + if (m_pattern.m_body->m_callFrameSize) + addPtr(Imm32(m_pattern.m_body->m_callFrameSize * sizeof(void*)), stackPointerRegister); + move(TrustedImm32(-1), returnRegister); + generateReturn(); + break; + } - if (term.quantityType == QuantifierNonGreedy) - nonGreedySkipParentheses.link(this); - } + ++opIndex; + } while (opIndex < m_ops.size()); } - void generateParenthesesGreedyNoBacktrack(TermGenerationState& state) + void backtrack() { - PatternTerm& parenthesesTerm = state.term(); - PatternDisjunction* disjunction = parenthesesTerm.parentheses.disjunction; - ASSERT(parenthesesTerm.type == PatternTerm::TypeParenthesesSubpattern); - ASSERT(parenthesesTerm.quantityCount != 1); // Handled by generateParenthesesSingle. + // Backwards generate the backtracking code. + size_t opIndex = m_ops.size(); + ASSERT(opIndex); - TermGenerationState parenthesesState(disjunction, state.checkedTotal); + do { + --opIndex; + YarrOp& op = m_ops[opIndex]; + switch (op.m_op) { - Label matchAgain(this); + case OpTerm: + backtrackTerm(opIndex); + break; - storeToFrame(index, parenthesesTerm.frameLocation); // Save the current index to check for zero len matches later. + // OpBodyAlternativeBegin/Next/End + // + // For each Begin/Next node representing an alternative, we need to decide what to do + // in two circumstances: + // - If we backtrack back into this node, from within the alternative. + // - If the input check at the head of the alternative fails (if this exists). + // + // We treat these two cases differently since in the former case we have slightly + // more information - since we are backtracking out of a prior alternative we know + // that at least enough input was available to run it. For example, given the regular + // expression /a|b/, if we backtrack out of the first alternative (a failed pattern + // character match of 'a'), then we need not perform an additional input availability + // check before running the second alternative. + // + // Backtracking required differs for the last alternative, which in the case of the + // repeating set of alternatives must loop. The code generated for the last alternative + // will also be used to handle all input check failures from any prior alternatives - + // these require similar functionality, in seeking the next available alternative for + // which there is sufficient input. + // + // Since backtracking of all other alternatives simply requires us to link backtracks + // to the reentry point for the subsequent alternative, we will only be generating any + // code when backtracking the last alternative. + case OpBodyAlternativeBegin: + case OpBodyAlternativeNext: { + PatternAlternative* alternative = op.m_alternative; + + if (op.m_op == OpBodyAlternativeNext) { + PatternAlternative* priorAlternative = m_ops[op.m_previousOp].m_alternative; + m_checked += priorAlternative->m_minimumSize; + } + m_checked -= alternative->m_minimumSize; - for (parenthesesState.resetAlternative(); parenthesesState.alternativeValid(); parenthesesState.nextAlternative()) { + // Is this the last alternative? If not, then if we backtrack to this point we just + // need to jump to try to match the next alternative. + if (m_ops[op.m_nextOp].m_op != OpBodyAlternativeEnd) { + m_backtrackingState.linkTo(m_ops[op.m_nextOp].m_reentry, this); + break; + } + YarrOp& endOp = m_ops[op.m_nextOp]; - PatternAlternative* alternative = parenthesesState.alternative(); - optimizeAlternative(alternative); + YarrOp* beginOp = &op; + while (beginOp->m_op != OpBodyAlternativeBegin) { + ASSERT(beginOp->m_op == OpBodyAlternativeNext); + beginOp = &m_ops[beginOp->m_previousOp]; + } - int countToCheck = alternative->m_minimumSize; - if (countToCheck) { - parenthesesState.addBacktrackJump(jumpIfNoAvailableInput(countToCheck)); - parenthesesState.checkedTotal += countToCheck; - } + bool onceThrough = endOp.m_nextOp == notFound; + + // First, generate code to handle cases where we backtrack out of an attempted match + // of the last alternative. If this is a 'once through' set of alternatives then we + // have nothing to do - link this straight through to the End. + if (onceThrough) + m_backtrackingState.linkTo(endOp.m_reentry, this); + else { + // Okay, we're going to need to loop. Calculate the delta between where the input + // position was, and where we want it to be allowing for the fact that we need to + // increment by 1. E.g. for the regexp /a|x/ we need to increment the position by + // 1 between loop iterations, but for /abcd|xyz/ we need to increment by two when + // looping from the last alternative to the first, for /a|xyz/ we need to decrement + // by 1, and for /a|xy/ we don't need to move the input position at all. + int deltaLastAlternativeToFirstAlternativePlusOne = (beginOp->m_alternative->m_minimumSize - alternative->m_minimumSize) + 1; + + // If we don't need to move the input poistion, and the pattern has a fixed size + // (in which case we omit the store of the start index until the pattern has matched) + // then we can just link the backtrack out of the last alternative straight to the + // head of the first alternative. + if (!deltaLastAlternativeToFirstAlternativePlusOne && m_pattern.m_body->m_hasFixedSize) + m_backtrackingState.linkTo(beginOp->m_reentry, this); + else { + // We need to generate a trampoline of code to execute before looping back + // around to the first alternative. + m_backtrackingState.link(this); + + // If the pattern size is not fixed, then store the start index, for use if we match. + if (!m_pattern.m_body->m_hasFixedSize) { + if (alternative->m_minimumSize == 1) + store32(index, Address(output)); + else { + move(index, regT0); + if (alternative->m_minimumSize) + sub32(Imm32(alternative->m_minimumSize - 1), regT0); + else + add32(Imm32(1), regT0); + store32(regT0, Address(output)); + } + } + + if (deltaLastAlternativeToFirstAlternativePlusOne) + add32(Imm32(deltaLastAlternativeToFirstAlternativePlusOne), index); + + // Loop. Since this code is only reached when we backtrack out of the last + // alternative (and NOT linked to from the input check upon entry to the + // last alternative) we know that there must be at least enough input as + // required by the last alternative. As such, we only need to check if the + // first will require more to run - if the same or less is required we can + // unconditionally jump. + if (deltaLastAlternativeToFirstAlternativePlusOne > 0) + checkInput().linkTo(beginOp->m_reentry, this); + else + jump(beginOp->m_reentry); + } + } - for (parenthesesState.resetTerm(); parenthesesState.termValid(); parenthesesState.nextTerm()) - generateTerm(parenthesesState); + // We can reach this point in the code in two ways: + // - Fallthrough from the code above (a repeating alternative backtracked out of its + // last alternative, and did not have sufficent input to run the first). + // - We will loop back up to the following label when a releating alternative loops, + // following a failed input check. + // + // Either way, we have just failed the input check for the first alternative. + Label firstInputCheckFailed(this); + + // Generate code to handle input check failures from alternatives except the last. + // prevOp is the alternative we're handling a bail out from (initially Begin), and + // nextOp is the alternative we will be attempting to reenter into. + // + // We will link input check failures from the forwards matching path back to the code + // that can handle them. + YarrOp* prevOp = beginOp; + YarrOp* nextOp = &m_ops[beginOp->m_nextOp]; + while (nextOp->m_op != OpBodyAlternativeEnd) { + prevOp->m_jumps.link(this); + + int delta = nextOp->m_alternative->m_minimumSize - prevOp->m_alternative->m_minimumSize; + if (delta) + add32(Imm32(delta), index); + + // We only get here if an input check fails, it is only worth checking again + // if the next alternative has a minimum size less than the last. + if (delta < 0) { + // FIXME: if we added an extra label to YarrOp, we could avoid needing to + // subtract delta back out, and reduce this code. Should performance test + // the benefit of this. + Jump fail = jumpIfNoAvailableInput(); + sub32(Imm32(delta), index); + jump(nextOp->m_reentry); + fail.link(this); + } + prevOp = nextOp; + nextOp = &m_ops[nextOp->m_nextOp]; + } - // If we get here, we matched! If the index advanced then try to match more since limit isn't supported yet. - branch32(NotEqual, index, Address(stackPointerRegister, (parenthesesTerm.frameLocation * sizeof(void*))), matchAgain); + // We fall through to here if there is insufficient input to run the last alternative. - // If we get here we matched, but we matched "" - cannot accept this alternative as is, so either backtrack, - // or fall through to try the next alternative if no backtrack is available. - parenthesesState.plantJumpToBacktrackIfExists(this); + // If there is insufficient input to run the last alternative, then for 'once through' + // alternatives we are done - just jump back up into the forwards matching path at the End. + if (onceThrough) { + op.m_jumps.linkTo(endOp.m_reentry, this); + jump(endOp.m_reentry); + break; + } - parenthesesState.linkAlternativeBacktracks(this); + // For repeating alternatives, link any input check failure from the last alternative to + // this point. + op.m_jumps.link(this); - // We get here if the alternative fails to match - fall through to the next iteration, or out of the loop. + bool needsToUpdateMatchStart = !m_pattern.m_body->m_hasFixedSize; - if (countToCheck) { - sub32(Imm32(countToCheck), index); - parenthesesState.checkedTotal -= countToCheck; - } - } + // Check for cases where input position is already incremented by 1 for the last + // alternative (this is particularly useful where the minimum size of the body + // disjunction is 0, e.g. /a*|b/). + if (needsToUpdateMatchStart && alternative->m_minimumSize == 1) { + // index is already incremented by 1, so just store it now! + store32(index, Address(output)); + needsToUpdateMatchStart = false; + } - // If the last alternative falls through to here, we have a failed match... - // Which means that we match whatever we have matched up to this point (even if nothing). - } + // Check whether there is sufficient input to loop. Increment the input position by + // one, and check. Also add in the minimum disjunction size before checking - there + // is no point in looping if we're just going to fail all the input checks around + // the next iteration. + int deltaLastAlternativeToBodyMinimumPlusOne = (m_pattern.m_body->m_minimumSize + 1) - alternative->m_minimumSize; + if (deltaLastAlternativeToBodyMinimumPlusOne) + add32(Imm32(deltaLastAlternativeToBodyMinimumPlusOne), index); + Jump matchFailed = jumpIfNoAvailableInput(); + + if (needsToUpdateMatchStart) { + if (!m_pattern.m_body->m_minimumSize) + store32(index, Address(output)); + else { + move(index, regT0); + sub32(Imm32(m_pattern.m_body->m_minimumSize), regT0); + store32(regT0, Address(output)); + } + } - void generateParentheticalAssertion(TermGenerationState& state) - { - PatternTerm& term = state.term(); - PatternDisjunction* disjunction = term.parentheses.disjunction; - ASSERT(term.quantityCount == 1); - ASSERT(term.quantityType == QuantifierFixedCount); + // Calculate how much more input the first alternative requires than the minimum + // for the body as a whole. If no more is needed then we dont need an additional + // input check here - jump straight back up to the start of the first alternative. + int deltaBodyMinimumToFirstAlternative = beginOp->m_alternative->m_minimumSize - m_pattern.m_body->m_minimumSize; + if (!deltaBodyMinimumToFirstAlternative) + jump(beginOp->m_reentry); + else { + add32(Imm32(deltaBodyMinimumToFirstAlternative), index); + checkInput().linkTo(beginOp->m_reentry, this); + jump(firstInputCheckFailed); + } - unsigned parenthesesFrameLocation = term.frameLocation; - unsigned alternativeFrameLocation = parenthesesFrameLocation + YarrStackSpaceForBackTrackInfoParentheticalAssertion; + // We jump to here if we iterate to the point that there is insufficient input to + // run any matches, and need to return a failure state from JIT code. + matchFailed.link(this); - int countCheckedAfterAssertion = state.checkedTotal - term.inputPosition; + if (m_pattern.m_body->m_callFrameSize) + addPtr(Imm32(m_pattern.m_body->m_callFrameSize * sizeof(void*)), stackPointerRegister); + move(TrustedImm32(-1), returnRegister); + generateReturn(); + break; + } + case OpBodyAlternativeEnd: { + // We should never backtrack back into a body disjunction. + ASSERT(m_backtrackingState.isEmpty()); - if (term.invert()) { - // Inverted case - storeToFrame(index, parenthesesFrameLocation); + PatternAlternative* priorAlternative = m_ops[op.m_previousOp].m_alternative; + m_checked += priorAlternative->m_minimumSize; + break; + } - state.checkedTotal -= countCheckedAfterAssertion; - if (countCheckedAfterAssertion) - sub32(Imm32(countCheckedAfterAssertion), index); + // OpSimpleNestedAlternativeBegin/Next/End + // OpNestedAlternativeBegin/Next/End + // + // Generate code for when we backtrack back out of an alternative into + // a Begin or Next node, or when the entry input count check fails. If + // there are more alternatives we need to jump to the next alternative, + // if not we backtrack back out of the current set of parentheses. + // + // In the case of non-simple nested assertions we need to also link the + // 'return address' appropriately to backtrack back out into the correct + // alternative. + case OpSimpleNestedAlternativeBegin: + case OpSimpleNestedAlternativeNext: + case OpNestedAlternativeBegin: + case OpNestedAlternativeNext: { + YarrOp& nextOp = m_ops[op.m_nextOp]; + bool isBegin = op.m_previousOp == notFound; + bool isLastAlternative = nextOp.m_nextOp == notFound; + ASSERT(isBegin == (op.m_op == OpSimpleNestedAlternativeBegin || op.m_op == OpNestedAlternativeBegin)); + ASSERT(isLastAlternative == (nextOp.m_op == OpSimpleNestedAlternativeEnd || nextOp.m_op == OpNestedAlternativeEnd)); + + // Treat an input check failure the same as a failed match. + m_backtrackingState.append(op.m_jumps); + + // Set the backtracks to jump to the appropriate place. We may need + // to link the backtracks in one of three different way depending on + // the type of alternative we are dealing with: + // - A single alternative, with no simplings. + // - The last alternative of a set of two or more. + // - An alternative other than the last of a set of two or more. + // + // In the case of a single alternative on its own, we don't need to + // jump anywhere - if the alternative fails to match we can just + // continue to backtrack out of the parentheses without jumping. + // + // In the case of the last alternative in a set of more than one, we + // need to jump to return back out to the beginning. We'll do so by + // adding a jump to the End node's m_jumps list, and linking this + // when we come to generate the Begin node. For alternatives other + // than the last, we need to jump to the next alternative. + // + // If the alternative had adjusted the input position we must link + // backtracking to here, correct, and then jump on. If not we can + // link the backtracks directly to their destination. + if (op.m_checkAdjust) { + // Handle the cases where we need to link the backtracks here. + m_backtrackingState.link(this); + sub32(Imm32(op.m_checkAdjust), index); + if (!isLastAlternative) { + // An alternative that is not the last should jump to its successor. + jump(nextOp.m_reentry); + } else if (!isBegin) { + // The last of more than one alternatives must jump back to the begnning. + nextOp.m_jumps.append(jump()); + } else { + // A single alternative on its own can fall through. + m_backtrackingState.fallthrough(); + } + } else { + // Handle the cases where we can link the backtracks directly to their destinations. + if (!isLastAlternative) { + // An alternative that is not the last should jump to its successor. + m_backtrackingState.linkTo(nextOp.m_reentry, this); + } else if (!isBegin) { + // The last of more than one alternatives must jump back to the begnning. + m_backtrackingState.takeBacktracksToJumpList(nextOp.m_jumps, this); + } + // In the case of a single alternative on its own do nothing - it can fall through. + } - TermGenerationState parenthesesState(disjunction, state.checkedTotal); - generateParenthesesDisjunction(state.term(), parenthesesState, alternativeFrameLocation); - // Success! - which means - Fail! - loadFromFrame(parenthesesFrameLocation, index); - state.jumpToBacktrack(this); + // At this point we've handled the backtracking back into this node. + // Now link any backtracks that need to jump to here. + + // For non-simple alternatives, link the alternative's 'return address' + // so that we backtrack back out into the previous alternative. + if (op.m_op == OpNestedAlternativeNext) + m_backtrackingState.append(op.m_returnAddress); + + // If there is more than one alternative, then the last alternative will + // have planted a jump to be linked to the end. This jump was added to the + // End node's m_jumps list. If we are back at the beginning, link it here. + if (isBegin) { + YarrOp* endOp = &m_ops[op.m_nextOp]; + while (endOp->m_nextOp != notFound) { + ASSERT(endOp->m_op == OpSimpleNestedAlternativeNext || endOp->m_op == OpNestedAlternativeNext); + endOp = &m_ops[endOp->m_nextOp]; + } + ASSERT(endOp->m_op == OpSimpleNestedAlternativeEnd || endOp->m_op == OpNestedAlternativeEnd); + m_backtrackingState.append(endOp->m_jumps); + } - // And fail means success. - parenthesesState.linkAlternativeBacktracks(this); + if (!isBegin) { + YarrOp& lastOp = m_ops[op.m_previousOp]; + m_checked += lastOp.m_checkAdjust; + } + m_checked -= op.m_checkAdjust; + break; + } + case OpSimpleNestedAlternativeEnd: + case OpNestedAlternativeEnd: { + PatternTerm* term = op.m_term; + + // If we backtrack into the end of a simple subpattern do nothing; + // just continue through into the last alternative. If we backtrack + // into the end of a non-simple set of alterntives we need to jump + // to the backtracking return address set up during generation. + if (op.m_op == OpNestedAlternativeEnd) { + m_backtrackingState.link(this); + + // Plant a jump to the return address. + unsigned parenthesesFrameLocation = term->frameLocation; + unsigned alternativeFrameLocation = parenthesesFrameLocation; + if (term->quantityType != QuantifierFixedCount) + alternativeFrameLocation += YarrStackSpaceForBackTrackInfoParenthesesOnce; + loadFromFrameAndJump(alternativeFrameLocation); + + // Link the DataLabelPtr associated with the end of the last + // alternative to this point. + m_backtrackingState.append(op.m_returnAddress); + } - loadFromFrame(parenthesesFrameLocation, index); + YarrOp& lastOp = m_ops[op.m_previousOp]; + m_checked += lastOp.m_checkAdjust; + break; + } - state.checkedTotal += countCheckedAfterAssertion; - } else { - // Normal case - storeToFrame(index, parenthesesFrameLocation); + // OpParenthesesSubpatternOnceBegin/End + // + // When we are backtracking back out of a capturing subpattern we need + // to clear the start index in the matches output array, to record that + // this subpattern has not been captured. + // + // When backtracking back out of a Greedy quantified subpattern we need + // to catch this, and try running the remainder of the alternative after + // the subpattern again, skipping the parentheses. + // + // Upon backtracking back into a quantified set of parentheses we need to + // check whether we were currently skipping the subpattern. If not, we + // can backtrack into them, if we were we need to either backtrack back + // out of the start of the parentheses, or jump back to the forwards + // matching start, depending of whether the match is Greedy or NonGreedy. + case OpParenthesesSubpatternOnceBegin: { + PatternTerm* term = op.m_term; + ASSERT(term->quantityCount == 1); + + // We only need to backtrack to thispoint if capturing or greedy. + if (term->capture() || term->quantityType == QuantifierGreedy) { + m_backtrackingState.link(this); + + // If capturing, clear the capture (we only need to reset start). + if (term->capture()) + store32(TrustedImm32(-1), Address(output, (term->parentheses.subpatternId << 1) * sizeof(int))); + + // If Greedy, jump to the end. + if (term->quantityType == QuantifierGreedy) { + // Clear the flag in the stackframe indicating we ran through the subpattern. + unsigned parenthesesFrameLocation = term->frameLocation; + storeToFrame(TrustedImm32(-1), parenthesesFrameLocation); + // Jump to after the parentheses, skipping the subpattern. + jump(m_ops[op.m_nextOp].m_reentry); + // A backtrack from after the parentheses, when skipping the subpattern, + // will jump back to here. + op.m_jumps.link(this); + } - state.checkedTotal -= countCheckedAfterAssertion; - if (countCheckedAfterAssertion) - sub32(Imm32(countCheckedAfterAssertion), index); + m_backtrackingState.fallthrough(); + } + break; + } + case OpParenthesesSubpatternOnceEnd: { + PatternTerm* term = op.m_term; + + if (term->quantityType != QuantifierFixedCount) { + m_backtrackingState.link(this); + + // Check whether we should backtrack back into the parentheses, or if we + // are currently in a state where we had skipped over the subpattern + // (in which case the flag value on the stack will be -1). + unsigned parenthesesFrameLocation = term->frameLocation; + Jump hadSkipped = branch32(Equal, Address(stackPointerRegister, parenthesesFrameLocation * sizeof(void*)), TrustedImm32(-1)); + + if (term->quantityType == QuantifierGreedy) { + // For Greedy parentheses, we skip after having already tried going + // through the subpattern, so if we get here we're done. + YarrOp& beginOp = m_ops[op.m_previousOp]; + beginOp.m_jumps.append(hadSkipped); + } else { + // For NonGreedy parentheses, we try skipping the subpattern first, + // so if we get here we need to try running through the subpattern + // next. Jump back to the start of the parentheses in the forwards + // matching path. + ASSERT(term->quantityType == QuantifierNonGreedy); + YarrOp& beginOp = m_ops[op.m_previousOp]; + hadSkipped.linkTo(beginOp.m_reentry, this); + } - TermGenerationState parenthesesState(disjunction, state.checkedTotal); - generateParenthesesDisjunction(state.term(), parenthesesState, alternativeFrameLocation); - // Success! - which means - Success! - loadFromFrame(parenthesesFrameLocation, index); - Jump success = jump(); + m_backtrackingState.fallthrough(); + } - parenthesesState.linkAlternativeBacktracks(this); + m_backtrackingState.append(op.m_jumps); + break; + } - loadFromFrame(parenthesesFrameLocation, index); - state.jumpToBacktrack(this); + // OpParenthesesSubpatternTerminalBegin/End + // + // Terminal subpatterns will always match - there is nothing after them to + // force a backtrack, and they have a minimum count of 0, and as such will + // always produce an acceptable result. + case OpParenthesesSubpatternTerminalBegin: { + // We will backtrack to this point once the subpattern cannot match any + // more. Since no match is accepted as a successful match (we are Greedy + // quantified with a minimum of zero) jump back to the forwards matching + // path at the end. + YarrOp& endOp = m_ops[op.m_nextOp]; + m_backtrackingState.linkTo(endOp.m_reentry, this); + break; + } + case OpParenthesesSubpatternTerminalEnd: + // We should never be backtracking to here (hence the 'terminal' in the name). + ASSERT(m_backtrackingState.isEmpty()); + m_backtrackingState.append(op.m_jumps); + break; - success.link(this); + // OpParentheticalAssertionBegin/End + case OpParentheticalAssertionBegin: { + PatternTerm* term = op.m_term; + YarrOp& endOp = m_ops[op.m_nextOp]; - state.checkedTotal += countCheckedAfterAssertion; - } - } + // We need to handle the backtracks upon backtracking back out + // of a parenthetical assertion if either we need to correct + // the input index, or the assertion was inverted. + if (op.m_checkAdjust || term->invert()) { + m_backtrackingState.link(this); - void generateTerm(TermGenerationState& state) - { - PatternTerm& term = state.term(); + if (op.m_checkAdjust) + add32(Imm32(op.m_checkAdjust), index); - switch (term.type) { - case PatternTerm::TypeAssertionBOL: - generateAssertionBOL(state); - break; + // In an inverted assertion failure to match the subpattern + // is treated as a successful match - jump to the end of the + // subpattern. We already have adjusted the input position + // back to that before the assertion, which is correct. + if (term->invert()) + jump(endOp.m_reentry); - case PatternTerm::TypeAssertionEOL: - generateAssertionEOL(state); - break; + m_backtrackingState.fallthrough(); + } - case PatternTerm::TypeAssertionWordBoundary: - generateAssertionWordBoundary(state); - break; + // The End node's jump list will contain any backtracks into + // the end of the assertion. Also, if inverted, we will have + // added the failure caused by a successful match to this. + m_backtrackingState.append(endOp.m_jumps); - case PatternTerm::TypePatternCharacter: - switch (term.quantityType) { - case QuantifierFixedCount: - if (term.quantityCount == 1) { - if (state.isSinglePatternCharacterLookaheadTerm() && (state.lookaheadTerm().inputPosition == (term.inputPosition + 1))) { - generatePatternCharacterPair(state); - state.nextTerm(); - } else - generatePatternCharacterSingle(state); - } else - generatePatternCharacterFixed(state); - break; - case QuantifierGreedy: - generatePatternCharacterGreedy(state); - break; - case QuantifierNonGreedy: - generatePatternCharacterNonGreedy(state); + m_checked += op.m_checkAdjust; break; } - break; + case OpParentheticalAssertionEnd: { + // FIXME: We should really be clearing any nested subpattern + // matches on bailing out from after the pattern. Firefox has + // this bug too (presumably because they use YARR!) - case PatternTerm::TypeCharacterClass: - switch (term.quantityType) { - case QuantifierFixedCount: - if (term.quantityCount == 1) - generateCharacterClassSingle(state); - else - generateCharacterClassFixed(state); - break; - case QuantifierGreedy: - generateCharacterClassGreedy(state); - break; - case QuantifierNonGreedy: - generateCharacterClassNonGreedy(state); + // Never backtrack into an assertion; later failures bail to before the begin. + m_backtrackingState.takeBacktracksToJumpList(op.m_jumps, this); + + YarrOp& lastOp = m_ops[op.m_previousOp]; + m_checked -= lastOp.m_checkAdjust; break; } - break; - case PatternTerm::TypeBackReference: - m_shouldFallBack = true; - break; - - case PatternTerm::TypeForwardReference: - break; - - case PatternTerm::TypeParenthesesSubpattern: - if (term.quantityCount == 1 && !term.parentheses.isCopy) - generateParenthesesSingle(state); - else if (term.parentheses.isTerminal) - generateParenthesesGreedyNoBacktrack(state); - else - m_shouldFallBack = true; - break; + case OpMatchFailed: + break; + } - case PatternTerm::TypeParentheticalAssertion: - generateParentheticalAssertion(state); - break; - } + } while (opIndex); } - void generateDisjunction(PatternDisjunction* disjunction) + // Compilation methods: + // ==================== + + // opCompileParenthesesSubpattern + // Emits ops for a subpattern (set of parentheses). These consist + // of a set of alternatives wrapped in an outer set of nodes for + // the parentheses. + // Supported types of parentheses are 'Once' (quantityCount == 1) + // and 'Terminal' (non-capturing parentheses quantified as greedy + // and infinite). + // Alternatives will use the 'Simple' set of ops if either the + // subpattern is terminal (in which case we will never need to + // backtrack), or if the subpattern only contains one alternative. + void opCompileParenthesesSubpattern(PatternTerm* term) { - TermGenerationState state(disjunction, 0); - state.resetAlternative(); - - // check availability for the next alternative - int countCheckedForCurrentAlternative = 0; - int countToCheckForFirstAlternative = 0; - bool hasShorterAlternatives = false; - bool setRepeatAlternativeLabels = false; - JumpList notEnoughInputForPreviousAlternative; - Label firstAlternative; - Label firstAlternativeInputChecked; - - // The label 'firstAlternative' is used to plant a check to see if there is - // sufficient input available to run the first repeating alternative. - // The label 'firstAlternativeInputChecked' will jump directly to matching - // the first repeating alternative having skipped this check. - - if (state.alternativeValid()) { - PatternAlternative* alternative = state.alternative(); - if (!alternative->onceThrough()) { - firstAlternative = Label(this); - setRepeatAlternativeLabels = true; + YarrOpCode parenthesesBeginOpCode; + YarrOpCode parenthesesEndOpCode; + YarrOpCode alternativeBeginOpCode = OpSimpleNestedAlternativeBegin; + YarrOpCode alternativeNextOpCode = OpSimpleNestedAlternativeNext; + YarrOpCode alternativeEndOpCode = OpSimpleNestedAlternativeEnd; + + // We can currently only compile quantity 1 subpatterns that are + // not copies. We generate a copy in the case of a range quantifier, + // e.g. /(?:x){3,9}/, or /(?:x)+/ (These are effectively expanded to + // /(?:x){3,3}(?:x){0,6}/ and /(?:x)(?:x)*/ repectively). The problem + // comes where the subpattern is capturing, in which case we would + // need to restore the capture from the first subpattern upon a + // failure in the second. + if (term->quantityCount == 1 && !term->parentheses.isCopy) { + // Select the 'Once' nodes. + parenthesesBeginOpCode = OpParenthesesSubpatternOnceBegin; + parenthesesEndOpCode = OpParenthesesSubpatternOnceEnd; + + // If there is more than one alternative we cannot use the 'simple' nodes. + if (term->parentheses.disjunction->m_alternatives.size() != 1) { + alternativeBeginOpCode = OpNestedAlternativeBegin; + alternativeNextOpCode = OpNestedAlternativeNext; + alternativeEndOpCode = OpNestedAlternativeEnd; } - countToCheckForFirstAlternative = alternative->m_minimumSize; - state.checkedTotal += countToCheckForFirstAlternative; - if (countToCheckForFirstAlternative) - notEnoughInputForPreviousAlternative.append(jumpIfNoAvailableInput(countToCheckForFirstAlternative)); - countCheckedForCurrentAlternative = countToCheckForFirstAlternative; + } else if (term->parentheses.isTerminal) { + // Select the 'Terminal' nodes. + parenthesesBeginOpCode = OpParenthesesSubpatternTerminalBegin; + parenthesesEndOpCode = OpParenthesesSubpatternTerminalEnd; + } else { + // This subpattern is not supported by the JIT. + m_shouldFallBack = true; + return; } - if (setRepeatAlternativeLabels) - firstAlternativeInputChecked = Label(this); - - while (state.alternativeValid()) { - PatternAlternative* alternative = state.alternative(); - optimizeAlternative(alternative); + size_t parenBegin = m_ops.size(); + m_ops.append(parenthesesBeginOpCode); - // Track whether any alternatives are shorter than the first one. - if (!alternative->onceThrough()) - hasShorterAlternatives = hasShorterAlternatives || (countCheckedForCurrentAlternative < countToCheckForFirstAlternative); + m_ops.append(alternativeBeginOpCode); + m_ops.last().m_previousOp = notFound; + m_ops.last().m_term = term; + Vector<PatternAlternative*>& alternatives = term->parentheses.disjunction->m_alternatives; + for (unsigned i = 0; i < alternatives.size(); ++i) { + size_t lastOpIndex = m_ops.size() - 1; - for (state.resetTerm(); state.termValid(); state.nextTerm()) - generateTerm(state); + PatternAlternative* nestedAlternative = alternatives[i]; + opCompileAlternative(nestedAlternative); - // If we get here, the alternative matched. - if (m_pattern.m_body->m_callFrameSize) - addPtr(Imm32(m_pattern.m_body->m_callFrameSize * sizeof(void*)), stackPointerRegister); + size_t thisOpIndex = m_ops.size(); + m_ops.append(YarrOp(alternativeNextOpCode)); - ASSERT(index != returnRegister); - if (m_pattern.m_body->m_hasFixedSize) { - move(index, returnRegister); - if (alternative->m_minimumSize) - sub32(Imm32(alternative->m_minimumSize), returnRegister); - - store32(returnRegister, output); - } else - load32(Address(output), returnRegister); + YarrOp& lastOp = m_ops[lastOpIndex]; + YarrOp& thisOp = m_ops[thisOpIndex]; - store32(index, Address(output, 4)); - - generateReturn(); - - state.nextAlternative(); - if (alternative->onceThrough() && state.alternativeValid()) - state.clearBacktrack(); - - // if there are any more alternatives, plant the check for input before looping. - if (state.alternativeValid()) { - state.setJumpListToPriorParen(0); - PatternAlternative* nextAlternative = state.alternative(); - if (!setRepeatAlternativeLabels && !nextAlternative->onceThrough()) { - // We have handled non-repeating alternatives, jump to next iteration - // and loop over repeating alternatives. - state.jumpToBacktrack(this); - - countToCheckForFirstAlternative = nextAlternative->m_minimumSize; + lastOp.m_alternative = nestedAlternative; + lastOp.m_nextOp = thisOpIndex; + thisOp.m_previousOp = lastOpIndex; + thisOp.m_term = term; + } + YarrOp& lastOp = m_ops.last(); + ASSERT(lastOp.m_op == alternativeNextOpCode); + lastOp.m_op = alternativeEndOpCode; + lastOp.m_alternative = 0; + lastOp.m_nextOp = notFound; - // If we get here, there the last input checked failed. - notEnoughInputForPreviousAlternative.link(this); + size_t parenEnd = m_ops.size(); + m_ops.append(parenthesesEndOpCode); - state.linkAlternativeBacktracks(this); + m_ops[parenBegin].m_term = term; + m_ops[parenBegin].m_previousOp = notFound; + m_ops[parenBegin].m_nextOp = parenEnd; + m_ops[parenEnd].m_term = term; + m_ops[parenEnd].m_previousOp = parenBegin; + m_ops[parenEnd].m_nextOp = notFound; + } - // Back up to start the looping alternatives. - if (countCheckedForCurrentAlternative) - sub32(Imm32(countCheckedForCurrentAlternative), index); + // opCompileParentheticalAssertion + // Emits ops for a parenthetical assertion. These consist of an + // OpSimpleNestedAlternativeBegin/Next/End set of nodes wrapping + // the alternatives, with these wrapped by an outer pair of + // OpParentheticalAssertionBegin/End nodes. + // We can always use the OpSimpleNestedAlternative nodes in the + // case of parenthetical assertions since these only ever match + // once, and will never backtrack back into the assertion. + void opCompileParentheticalAssertion(PatternTerm* term) + { + size_t parenBegin = m_ops.size(); + m_ops.append(OpParentheticalAssertionBegin); + + m_ops.append(OpSimpleNestedAlternativeBegin); + m_ops.last().m_previousOp = notFound; + m_ops.last().m_term = term; + Vector<PatternAlternative*>& alternatives = term->parentheses.disjunction->m_alternatives; + for (unsigned i = 0; i < alternatives.size(); ++i) { + size_t lastOpIndex = m_ops.size() - 1; + + PatternAlternative* nestedAlternative = alternatives[i]; + opCompileAlternative(nestedAlternative); + + size_t thisOpIndex = m_ops.size(); + m_ops.append(YarrOp(OpSimpleNestedAlternativeNext)); + + YarrOp& lastOp = m_ops[lastOpIndex]; + YarrOp& thisOp = m_ops[thisOpIndex]; + + lastOp.m_alternative = nestedAlternative; + lastOp.m_nextOp = thisOpIndex; + thisOp.m_previousOp = lastOpIndex; + thisOp.m_term = term; + } + YarrOp& lastOp = m_ops.last(); + ASSERT(lastOp.m_op == OpSimpleNestedAlternativeNext); + lastOp.m_op = OpSimpleNestedAlternativeEnd; + lastOp.m_alternative = 0; + lastOp.m_nextOp = notFound; + + size_t parenEnd = m_ops.size(); + m_ops.append(OpParentheticalAssertionEnd); + + m_ops[parenBegin].m_term = term; + m_ops[parenBegin].m_previousOp = notFound; + m_ops[parenBegin].m_nextOp = parenEnd; + m_ops[parenEnd].m_term = term; + m_ops[parenEnd].m_previousOp = parenBegin; + m_ops[parenEnd].m_nextOp = notFound; + } - firstAlternative = Label(this); + // opCompileAlternative + // Called to emit nodes for all terms in an alternative. + void opCompileAlternative(PatternAlternative* alternative) + { + optimizeAlternative(alternative); - state.checkedTotal = countToCheckForFirstAlternative; - if (countToCheckForFirstAlternative) - notEnoughInputForPreviousAlternative.append(jumpIfNoAvailableInput(countToCheckForFirstAlternative)); + for (unsigned i = 0; i < alternative->m_terms.size(); ++i) { + PatternTerm* term = &alternative->m_terms[i]; - countCheckedForCurrentAlternative = countToCheckForFirstAlternative; + switch (term->type) { + case PatternTerm::TypeParenthesesSubpattern: + opCompileParenthesesSubpattern(term); + break; - firstAlternativeInputChecked = Label(this); + case PatternTerm::TypeParentheticalAssertion: + opCompileParentheticalAssertion(term); + break; - setRepeatAlternativeLabels = true; - } else { - int countToCheckForNextAlternative = nextAlternative->m_minimumSize; - - if (countCheckedForCurrentAlternative > countToCheckForNextAlternative) { // CASE 1: current alternative was longer than the next one. - // If we get here, then the last input checked failed. - notEnoughInputForPreviousAlternative.link(this); - - // Check if sufficent input available to run the next alternative - notEnoughInputForPreviousAlternative.append(jumpIfNoAvailableInput(countToCheckForNextAlternative - countCheckedForCurrentAlternative)); - // We are now in the correct state to enter the next alternative; this add is only required - // to mirror and revert operation of the sub32, just below. - add32(Imm32(countCheckedForCurrentAlternative - countToCheckForNextAlternative), index); - - // If we get here, then the last input checked passed. - state.linkAlternativeBacktracks(this); - - // No need to check if we can run the next alternative, since it is shorter - - // just update index. - sub32(Imm32(countCheckedForCurrentAlternative - countToCheckForNextAlternative), index); - } else if (countCheckedForCurrentAlternative < countToCheckForNextAlternative) { // CASE 2: next alternative is longer than the current one. - // If we get here, then the last input checked failed. - // If there is insufficient input to run the current alternative, and the next alternative is longer, - // then there is definitely not enough input to run it - don't even check. Just adjust index, as if - // we had checked. - notEnoughInputForPreviousAlternative.link(this); - add32(Imm32(countToCheckForNextAlternative - countCheckedForCurrentAlternative), index); - notEnoughInputForPreviousAlternative.append(jump()); - - // The next alternative is longer than the current one; check the difference. - state.linkAlternativeBacktracks(this); - - notEnoughInputForPreviousAlternative.append(jumpIfNoAvailableInput(countToCheckForNextAlternative - countCheckedForCurrentAlternative)); - } else { // CASE 3: Both alternatives are the same length. - ASSERT(countCheckedForCurrentAlternative == countToCheckForNextAlternative); - - // If the next alterative is the same length as this one, then no need to check the input - - // if there was sufficent input to run the current alternative then there is sufficient - // input to run the next one; if not, there isn't. - state.linkAlternativeBacktracks(this); - } - state.checkedTotal -= countCheckedForCurrentAlternative; - countCheckedForCurrentAlternative = countToCheckForNextAlternative; - state.checkedTotal += countCheckedForCurrentAlternative; - } + default: + m_ops.append(term); } } + } - // If we get here, all Alternatives failed... + // opCompileBody + // This method compiles the body disjunction of the regular expression. + // The body consists of two sets of alternatives - zero or more 'once + // through' (BOL anchored) alternatives, followed by zero or more + // repeated alternatives. + // For each of these two sets of alteratives, if not empty they will be + // wrapped in a set of OpBodyAlternativeBegin/Next/End nodes (with the + // 'begin' node referencing the first alternative, and 'next' nodes + // referencing any further alternatives. The begin/next/end nodes are + // linked together in a doubly linked list. In the case of repeating + // alternatives, the end node is also linked back to the beginning. + // If no repeating alternatives exist, then a OpMatchFailed node exists + // to return the failing result. + void opCompileBody(PatternDisjunction* disjunction) + { + Vector<PatternAlternative*>& alternatives = disjunction->m_alternatives; + size_t currentAlternativeIndex = 0; - state.checkedTotal -= countCheckedForCurrentAlternative; + // Emit the 'once through' alternatives. + if (alternatives.size() && alternatives[0]->onceThrough()) { + m_ops.append(YarrOp(OpBodyAlternativeBegin)); + m_ops.last().m_previousOp = notFound; - if (!setRepeatAlternativeLabels) { - // If there are no alternatives that need repeating (all are marked 'onceThrough') then just link - // the match failures to this point, and fall through to the return below. - state.linkAlternativeBacktracks(this, true); + do { + size_t lastOpIndex = m_ops.size() - 1; + PatternAlternative* alternative = alternatives[currentAlternativeIndex]; + opCompileAlternative(alternative); - notEnoughInputForPreviousAlternative.link(this); - } else { - // How much more input need there be to be able to retry from the first alternative? - // examples: - // /yarr_jit/ or /wrec|pcre/ - // In these examples we need check for one more input before looping. - // /yarr_jit|pcre/ - // In this case we need check for 5 more input to loop (+4 to allow for the first alterative - // being four longer than the last alternative checked, and another +1 to effectively move - // the start position along by one). - // /yarr|rules/ or /wrec|notsomuch/ - // In these examples, provided that there was sufficient input to have just been matching for - // the second alternative we can loop without checking for available input (since the second - // alternative is longer than the first). In the latter example we need to decrement index - // (by 4) so the start position is only progressed by 1 from the last iteration. - int incrementForNextIter = (countToCheckForFirstAlternative - countCheckedForCurrentAlternative) + 1; - - // First, deal with the cases where there was sufficient input to try the last alternative. - if (incrementForNextIter > 0) // We need to check for more input anyway, fall through to the checking below. - state.linkAlternativeBacktracks(this, true); - else if (m_pattern.m_body->m_hasFixedSize && !incrementForNextIter) // No need to update anything, link these backtracks straight to the to pof the loop! - state.linkAlternativeBacktracksTo(this, firstAlternativeInputChecked, true); - else { // no need to check the input, but we do have some bookkeeping to do first. - state.linkAlternativeBacktracks(this, true); - - // Where necessary update our preserved start position. - if (!m_pattern.m_body->m_hasFixedSize) { - move(index, regT0); - sub32(Imm32(countCheckedForCurrentAlternative - 1), regT0); - store32(regT0, Address(output)); - } + size_t thisOpIndex = m_ops.size(); + m_ops.append(YarrOp(OpBodyAlternativeNext)); - // Update index if necessary, and loop (without checking). - if (incrementForNextIter) - add32(Imm32(incrementForNextIter), index); - jump().linkTo(firstAlternativeInputChecked, this); - } + YarrOp& lastOp = m_ops[lastOpIndex]; + YarrOp& thisOp = m_ops[thisOpIndex]; - notEnoughInputForPreviousAlternative.link(this); - // Update our idea of the start position, if we're tracking this. - if (!m_pattern.m_body->m_hasFixedSize) { - if (countCheckedForCurrentAlternative - 1) { - move(index, regT0); - sub32(Imm32(countCheckedForCurrentAlternative - 1), regT0); - store32(regT0, Address(output)); - } else - store32(index, Address(output)); - } + lastOp.m_alternative = alternative; + lastOp.m_nextOp = thisOpIndex; + thisOp.m_previousOp = lastOpIndex; + + ++currentAlternativeIndex; + } while (currentAlternativeIndex < alternatives.size() && alternatives[currentAlternativeIndex]->onceThrough()); - // Check if there is sufficent input to run the first alternative again. - jumpIfAvailableInput(incrementForNextIter).linkTo(firstAlternativeInputChecked, this); - // No - insufficent input to run the first alteranative, are there any other alternatives we - // might need to check? If so, the last check will have left the index incremented by - // (countToCheckForFirstAlternative + 1), so we need test whether countToCheckForFirstAlternative - // LESS input is available, to have the effect of just progressing the start position by 1 - // from the last iteration. If this check passes we can just jump up to the check associated - // with the first alternative in the loop. This is a bit sad, since we'll end up trying the - // first alternative again, and this check will fail (otherwise the check planted just above - // here would have passed). This is a bit sad, however it saves trying to do something more - // complex here in compilation, and in the common case we should end up coallescing the checks. - // - // FIXME: a nice improvement here may be to stop trying to match sooner, based on the least - // of the minimum-alternative-lengths. E.g. if I have two alternatives of length 200 and 150, - // and a string of length 100, we'll end up looping index from 0 to 100, checking whether there - // is sufficient input to run either alternative (constantly failing). If there had been only - // one alternative, or if the shorter alternative had come first, we would have terminated - // immediately. :-/ - if (hasShorterAlternatives) - jumpIfAvailableInput(-countToCheckForFirstAlternative).linkTo(firstAlternative, this); - // index will now be a bit garbled (depending on whether 'hasShorterAlternatives' is true, - // it has either been incremented by 1 or by (countToCheckForFirstAlternative + 1) ... - // but since we're about to return a failure this doesn't really matter!) + YarrOp& lastOp = m_ops.last(); + + ASSERT(lastOp.m_op == OpBodyAlternativeNext); + lastOp.m_op = OpBodyAlternativeEnd; + lastOp.m_alternative = 0; + lastOp.m_nextOp = notFound; } - if (m_pattern.m_body->m_callFrameSize) - addPtr(Imm32(m_pattern.m_body->m_callFrameSize * sizeof(void*)), stackPointerRegister); + if (currentAlternativeIndex == alternatives.size()) { + m_ops.append(YarrOp(OpMatchFailed)); + return; + } - move(TrustedImm32(-1), returnRegister); + // Emit the repeated alternatives. + size_t repeatLoop = m_ops.size(); + m_ops.append(YarrOp(OpBodyAlternativeBegin)); + m_ops.last().m_previousOp = notFound; + do { + size_t lastOpIndex = m_ops.size() - 1; + PatternAlternative* alternative = alternatives[currentAlternativeIndex]; + ASSERT(!alternative->onceThrough()); + opCompileAlternative(alternative); + + size_t thisOpIndex = m_ops.size(); + m_ops.append(YarrOp(OpBodyAlternativeNext)); - generateReturn(); + YarrOp& lastOp = m_ops[lastOpIndex]; + YarrOp& thisOp = m_ops[thisOpIndex]; - m_expressionState.emitParenthesesTail(this); - m_expressionState.emitIndirectJumpTable(this); - m_expressionState.linkToNextIteration(this); + lastOp.m_alternative = alternative; + lastOp.m_nextOp = thisOpIndex; + thisOp.m_previousOp = lastOpIndex; + + ++currentAlternativeIndex; + } while (currentAlternativeIndex < alternatives.size()); + YarrOp& lastOp = m_ops.last(); + ASSERT(lastOp.m_op == OpBodyAlternativeNext); + lastOp.m_op = OpBodyAlternativeEnd; + lastOp.m_alternative = 0; + lastOp.m_nextOp = repeatLoop; } void generateEnter() @@ -2230,10 +2325,11 @@ public: YarrGenerator(YarrPattern& pattern) : m_pattern(pattern) , m_shouldFallBack(false) + , m_checked(0) { } - void generate() + void compile(JSGlobalData* globalData, YarrCodeBlock& jitObject) { generateEnter(); @@ -2243,26 +2339,50 @@ public: if (m_pattern.m_body->m_callFrameSize) subPtr(Imm32(m_pattern.m_body->m_callFrameSize * sizeof(void*)), stackPointerRegister); - generateDisjunction(m_pattern.m_body); - } - - void compile(JSGlobalData* globalData, YarrCodeBlock& jitObject) - { - generate(); + // Compile the pattern to the internal 'YarrOp' representation. + opCompileBody(m_pattern.m_body); - LinkBuffer patchBuffer(this, globalData->regexAllocator); + // If we encountered anything we can't handle in the JIT code + // (e.g. backreferences) then return early. + if (m_shouldFallBack) { + jitObject.setFallBack(true); + return; + } - for (unsigned i = 0; i < m_expressionState.m_backtrackRecords.size(); ++i) - patchBuffer.patch(m_expressionState.m_backtrackRecords[i].dataLabel, patchBuffer.locationOf(m_expressionState.m_backtrackRecords[i].backtrackLocation)); + generate(); + backtrack(); - jitObject.set(patchBuffer.finalizeCode()); + // Link & finalize the code. + LinkBuffer linkBuffer(this, globalData->regexAllocator); + m_backtrackingState.linkDataLabels(linkBuffer); + jitObject.set(linkBuffer.finalizeCode()); jitObject.setFallBack(m_shouldFallBack); } private: YarrPattern& m_pattern; + + // Used to detect regular expression constructs that are not currently + // supported in the JIT; fall back to the interpreter when this is detected. bool m_shouldFallBack; - GenerationState m_expressionState; + + // The regular expression expressed as a linear sequence of operations. + Vector<YarrOp, 128> m_ops; + + // This records the current input offset being applied due to the current + // set of alternatives we are nested within. E.g. when matching the + // character 'b' within the regular expression /abc/, we will know that + // the minimum size for the alternative is 3, checked upon entry to the + // alternative, and that 'b' is at offset 1 from the start, and as such + // when matching 'b' we need to apply an offset of -2 to the load. + // + // FIXME: This should go away. Rather than tracking this value throughout + // code generation, we should gather this information up front & store it + // on the YarrOp structure. + int m_checked; + + // This class records state whilst generating the backtracking path of code. + BacktrackingState m_backtrackingState; }; void jitCompile(YarrPattern& pattern, JSGlobalData* globalData, YarrCodeBlock& jitObject) diff --git a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.cbproj b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.cbproj index 285bb2a..95c3054 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.cbproj +++ b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.cbproj @@ -1,138 +1,138 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <ProjectGuid>{bca37a72-5b07-46cf-b44e-89f8e06451a2}</ProjectGuid> - <Config Condition="'$(Config)'==''">Release</Config> - </PropertyGroup> - <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''"> - <Base>true</Base> - </PropertyGroup> - <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''"> - <Base>true</Base> - <Cfg_1>true</Cfg_1> - <CfgParent>Base</CfgParent> - </PropertyGroup> - <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''"> - <Base>true</Base> - <Cfg_2>true</Cfg_2> - <CfgParent>Base</CfgParent> - </PropertyGroup> - <PropertyGroup Condition="'$(Base)'!=''"> - <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed> - <OutputExt>lib</OutputExt> - <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput> - <Defines>NO_STRICT</Defines> - <DynamicRTL>true</DynamicRTL> - <UsePackages>true</UsePackages> - <ProjectType>CppStaticLibrary</ProjectType> - <BCC_CPPCompileAlways>true</BCC_CPPCompileAlways> - <PackageImports>rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;dclZipForged11.bpi;vclZipForged11.bpi;GR32_BDS2006.bpi;GR32_DSGN_BDS2006.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi;CExceptionExpert11.bpi</PackageImports> - <BCC_wpar>false</BCC_wpar> - <IncludePath>$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</IncludePath> - <AllPackageLibs>rtl.lib;vcl.lib</AllPackageLibs> - <TLIB_PageSize>32</TLIB_PageSize> - <ILINK_LibraryPath>$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</ILINK_LibraryPath> - </PropertyGroup> - <PropertyGroup Condition="'$(Cfg_1)'!=''"> - <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed> - <DCC_Optimize>false</DCC_Optimize> - <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe> - <Defines>_DEBUG;$(Defines)</Defines> - <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo> - <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion> - <ILINK_DisableIncrementalLinking>true</ILINK_DisableIncrementalLinking> - <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables> - <DCC_Define>DEBUG</DCC_Define> - <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers> - <IntermediateOutputDir>Debug</IntermediateOutputDir> - <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines> - <BCC_StackFrames>true</BCC_StackFrames> - <BCC_DisableOptimizations>true</BCC_DisableOptimizations> - <ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath> - <TASM_Debugging>Full</TASM_Debugging> - <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn> - </PropertyGroup> - <PropertyGroup Condition="'$(Cfg_2)'!=''"> - <Defines>NDEBUG;$(Defines)</Defines> - <IntermediateOutputDir>Release</IntermediateOutputDir> - <ILINK_LibraryPath>$(BDS)\lib\release;$(ILINK_LibraryPath)</ILINK_LibraryPath> - <TASM_Debugging>None</TASM_Debugging> - </PropertyGroup> - <ProjectExtensions> - <Borland.Personality>CPlusPlusBuilder.Personality</Borland.Personality> - <Borland.ProjectType>CppStaticLibrary</Borland.ProjectType> - <BorlandProject> -<BorlandProject><CPlusPlusBuilder.Personality><VersionInfo><VersionInfo Name="IncludeVerInfo">False</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1033</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Debugging><Debugging Name="DebugSourceDirs"></Debugging></Debugging><Parameters><Parameters Name="RunParams"></Parameters><Parameters Name="Launcher"></Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="DebugCWD"></Parameters><Parameters Name="HostApplication"></Parameters><Parameters Name="RemoteHost"></Parameters><Parameters Name="RemotePath"></Parameters><Parameters Name="RemoteParams"></Parameters><Parameters Name="RemoteLauncher"></Parameters><Parameters Name="UseRemoteLauncher">False</Parameters><Parameters Name="RemoteCWD"></Parameters><Parameters Name="RemoteDebug">False</Parameters><Parameters Name="Debug Symbols Search Path"></Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Excluded_Packages> - - - <Excluded_Packages Name="$(BDS)\bin\bcboffice2k100.bpl">CodeGear C++Builder Office 2000 Servers Package</Excluded_Packages> - <Excluded_Packages Name="$(BDS)\bin\bcbofficexp100.bpl">CodeGear C++Builder Office XP Servers Package</Excluded_Packages> - </Excluded_Packages><Linker><Linker Name="LibPrefix"></Linker><Linker Name="LibSuffix"></Linker><Linker Name="LibVersion"></Linker></Linker><ProjectProperties><ProjectProperties Name="AutoShowDeps">False</ProjectProperties><ProjectProperties Name="ManagePaths">True</ProjectProperties><ProjectProperties Name="VerifyPackages">True</ProjectProperties></ProjectProperties><HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Count">3</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item0">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item1">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item2">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\src;..\include</HistoryLists_hlIncludePath></HistoryLists_hlIncludePath><HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Count">1</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item0">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</HistoryLists_hlILINK_LibraryPath></HistoryLists_hlILINK_LibraryPath><HistoryLists_hlDefines><HistoryLists_hlDefines Name="Count">1</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item0">NO_STRICT</HistoryLists_hlDefines></HistoryLists_hlDefines><HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Count">1</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item0">32</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item1">16</HistoryLists_hlTLIB_PageSize></HistoryLists_hlTLIB_PageSize></CPlusPlusBuilder.Personality></BorlandProject></BorlandProject> - </ProjectExtensions> - <Import Project="$(MSBuildBinPath)\Borland.Cpp.Targets" /> - <ItemGroup> - <None Include="..\include\gtest\gtest-death-test.h"> - <BuildOrder>3</BuildOrder> - </None> - <None Include="..\include\gtest\gtest-message.h"> - <BuildOrder>4</BuildOrder> - </None> - <None Include="..\include\gtest\gtest-param-test.h"> - <BuildOrder>5</BuildOrder> - </None> - <None Include="..\include\gtest\gtest-spi.h"> - <BuildOrder>6</BuildOrder> - </None> - <None Include="..\include\gtest\gtest-test-part.h"> - <BuildOrder>7</BuildOrder> - </None> - <None Include="..\include\gtest\gtest-typed-test.h"> - <BuildOrder>8</BuildOrder> - </None> - <None Include="..\include\gtest\gtest.h"> - <BuildOrder>0</BuildOrder> - </None> - <None Include="..\include\gtest\gtest_pred_impl.h"> - <BuildOrder>1</BuildOrder> - </None> - <None Include="..\include\gtest\gtest_prod.h"> - <BuildOrder>2</BuildOrder> - </None> - <None Include="..\include\gtest\internal\gtest-death-test-internal.h"> - <BuildOrder>9</BuildOrder> - </None> - <None Include="..\include\gtest\internal\gtest-filepath.h"> - <BuildOrder>10</BuildOrder> - </None> - <None Include="..\include\gtest\internal\gtest-internal.h"> - <BuildOrder>11</BuildOrder> - </None> - <None Include="..\include\gtest\internal\gtest-linked_ptr.h"> - <BuildOrder>12</BuildOrder> - </None> - <None Include="..\include\gtest\internal\gtest-param-util-generated.h"> - <BuildOrder>14</BuildOrder> - </None> - <None Include="..\include\gtest\internal\gtest-param-util.h"> - <BuildOrder>13</BuildOrder> - </None> - <None Include="..\include\gtest\internal\gtest-port.h"> - <BuildOrder>15</BuildOrder> - </None> - <None Include="..\include\gtest\internal\gtest-string.h"> - <BuildOrder>16</BuildOrder> - </None> - <None Include="..\include\gtest\internal\gtest-type-util.h"> - <BuildOrder>17</BuildOrder> - </None> - <CppCompile Include="gtest_all.cc"> - <BuildOrder>18</BuildOrder> - </CppCompile> - <BuildConfiguration Include="Debug"> - <Key>Cfg_1</Key> - </BuildConfiguration> - <BuildConfiguration Include="Release"> - <Key>Cfg_2</Key> - </BuildConfiguration> - </ItemGroup> +<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <ProjectGuid>{bca37a72-5b07-46cf-b44e-89f8e06451a2}</ProjectGuid>
+ <Config Condition="'$(Config)'==''">Release</Config>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
+ <Base>true</Base>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
+ <Base>true</Base>
+ <Cfg_1>true</Cfg_1>
+ <CfgParent>Base</CfgParent>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
+ <Base>true</Base>
+ <Cfg_2>true</Cfg_2>
+ <CfgParent>Base</CfgParent>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Base)'!=''">
+ <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed>
+ <OutputExt>lib</OutputExt>
+ <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput>
+ <Defines>NO_STRICT</Defines>
+ <DynamicRTL>true</DynamicRTL>
+ <UsePackages>true</UsePackages>
+ <ProjectType>CppStaticLibrary</ProjectType>
+ <BCC_CPPCompileAlways>true</BCC_CPPCompileAlways>
+ <PackageImports>rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;dclZipForged11.bpi;vclZipForged11.bpi;GR32_BDS2006.bpi;GR32_DSGN_BDS2006.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi;CExceptionExpert11.bpi</PackageImports>
+ <BCC_wpar>false</BCC_wpar>
+ <IncludePath>$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</IncludePath>
+ <AllPackageLibs>rtl.lib;vcl.lib</AllPackageLibs>
+ <TLIB_PageSize>32</TLIB_PageSize>
+ <ILINK_LibraryPath>$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</ILINK_LibraryPath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Cfg_1)'!=''">
+ <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed>
+ <DCC_Optimize>false</DCC_Optimize>
+ <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
+ <Defines>_DEBUG;$(Defines)</Defines>
+ <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo>
+ <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion>
+ <ILINK_DisableIncrementalLinking>true</ILINK_DisableIncrementalLinking>
+ <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables>
+ <DCC_Define>DEBUG</DCC_Define>
+ <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers>
+ <IntermediateOutputDir>Debug</IntermediateOutputDir>
+ <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines>
+ <BCC_StackFrames>true</BCC_StackFrames>
+ <BCC_DisableOptimizations>true</BCC_DisableOptimizations>
+ <ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+ <TASM_Debugging>Full</TASM_Debugging>
+ <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Cfg_2)'!=''">
+ <Defines>NDEBUG;$(Defines)</Defines>
+ <IntermediateOutputDir>Release</IntermediateOutputDir>
+ <ILINK_LibraryPath>$(BDS)\lib\release;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+ <TASM_Debugging>None</TASM_Debugging>
+ </PropertyGroup>
+ <ProjectExtensions>
+ <Borland.Personality>CPlusPlusBuilder.Personality</Borland.Personality>
+ <Borland.ProjectType>CppStaticLibrary</Borland.ProjectType>
+ <BorlandProject>
+<BorlandProject><CPlusPlusBuilder.Personality><VersionInfo><VersionInfo Name="IncludeVerInfo">False</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1033</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Debugging><Debugging Name="DebugSourceDirs"></Debugging></Debugging><Parameters><Parameters Name="RunParams"></Parameters><Parameters Name="Launcher"></Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="DebugCWD"></Parameters><Parameters Name="HostApplication"></Parameters><Parameters Name="RemoteHost"></Parameters><Parameters Name="RemotePath"></Parameters><Parameters Name="RemoteParams"></Parameters><Parameters Name="RemoteLauncher"></Parameters><Parameters Name="UseRemoteLauncher">False</Parameters><Parameters Name="RemoteCWD"></Parameters><Parameters Name="RemoteDebug">False</Parameters><Parameters Name="Debug Symbols Search Path"></Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Excluded_Packages>
+
+
+ <Excluded_Packages Name="$(BDS)\bin\bcboffice2k100.bpl">CodeGear C++Builder Office 2000 Servers Package</Excluded_Packages>
+ <Excluded_Packages Name="$(BDS)\bin\bcbofficexp100.bpl">CodeGear C++Builder Office XP Servers Package</Excluded_Packages>
+ </Excluded_Packages><Linker><Linker Name="LibPrefix"></Linker><Linker Name="LibSuffix"></Linker><Linker Name="LibVersion"></Linker></Linker><ProjectProperties><ProjectProperties Name="AutoShowDeps">False</ProjectProperties><ProjectProperties Name="ManagePaths">True</ProjectProperties><ProjectProperties Name="VerifyPackages">True</ProjectProperties></ProjectProperties><HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Count">3</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item0">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item1">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item2">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\src;..\include</HistoryLists_hlIncludePath></HistoryLists_hlIncludePath><HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Count">1</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item0">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</HistoryLists_hlILINK_LibraryPath></HistoryLists_hlILINK_LibraryPath><HistoryLists_hlDefines><HistoryLists_hlDefines Name="Count">1</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item0">NO_STRICT</HistoryLists_hlDefines></HistoryLists_hlDefines><HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Count">1</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item0">32</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item1">16</HistoryLists_hlTLIB_PageSize></HistoryLists_hlTLIB_PageSize></CPlusPlusBuilder.Personality></BorlandProject></BorlandProject>
+ </ProjectExtensions>
+ <Import Project="$(MSBuildBinPath)\Borland.Cpp.Targets" />
+ <ItemGroup>
+ <None Include="..\include\gtest\gtest-death-test.h">
+ <BuildOrder>3</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\gtest-message.h">
+ <BuildOrder>4</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\gtest-param-test.h">
+ <BuildOrder>5</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\gtest-spi.h">
+ <BuildOrder>6</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\gtest-test-part.h">
+ <BuildOrder>7</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\gtest-typed-test.h">
+ <BuildOrder>8</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\gtest.h">
+ <BuildOrder>0</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\gtest_pred_impl.h">
+ <BuildOrder>1</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\gtest_prod.h">
+ <BuildOrder>2</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-death-test-internal.h">
+ <BuildOrder>9</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-filepath.h">
+ <BuildOrder>10</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-internal.h">
+ <BuildOrder>11</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-linked_ptr.h">
+ <BuildOrder>12</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-param-util-generated.h">
+ <BuildOrder>14</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-param-util.h">
+ <BuildOrder>13</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-port.h">
+ <BuildOrder>15</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-string.h">
+ <BuildOrder>16</BuildOrder>
+ </None>
+ <None Include="..\include\gtest\internal\gtest-type-util.h">
+ <BuildOrder>17</BuildOrder>
+ </None>
+ <CppCompile Include="gtest_all.cc">
+ <BuildOrder>18</BuildOrder>
+ </CppCompile>
+ <BuildConfiguration Include="Debug">
+ <Key>Cfg_1</Key>
+ </BuildConfiguration>
+ <BuildConfiguration Include="Release">
+ <Key>Cfg_2</Key>
+ </BuildConfiguration>
+ </ItemGroup>
</Project>
\ No newline at end of file diff --git a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.groupproj b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.groupproj index 849f4c4..faf31ca 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.groupproj +++ b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest.groupproj @@ -1,54 +1,54 @@ -<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <ProjectGuid>{c1d923e0-6cba-4332-9b6f-3420acbf5091}</ProjectGuid> - </PropertyGroup> - <ItemGroup /> - <ItemGroup> - <Projects Include="gtest.cbproj" /> - <Projects Include="gtest_main.cbproj" /> - <Projects Include="gtest_unittest.cbproj" /> - </ItemGroup> - <ProjectExtensions> - <Borland.Personality>Default.Personality</Borland.Personality> - <Borland.ProjectType /> - <BorlandProject> -<BorlandProject xmlns=""><Default.Personality></Default.Personality></BorlandProject></BorlandProject> - </ProjectExtensions> - <Target Name="gtest"> - <MSBuild Projects="gtest.cbproj" Targets="" /> - </Target> - <Target Name="gtest:Clean"> - <MSBuild Projects="gtest.cbproj" Targets="Clean" /> - </Target> - <Target Name="gtest:Make"> - <MSBuild Projects="gtest.cbproj" Targets="Make" /> - </Target> - <Target Name="gtest_main"> - <MSBuild Projects="gtest_main.cbproj" Targets="" /> - </Target> - <Target Name="gtest_main:Clean"> - <MSBuild Projects="gtest_main.cbproj" Targets="Clean" /> - </Target> - <Target Name="gtest_main:Make"> - <MSBuild Projects="gtest_main.cbproj" Targets="Make" /> - </Target> - <Target Name="gtest_unittest"> - <MSBuild Projects="gtest_unittest.cbproj" Targets="" /> - </Target> - <Target Name="gtest_unittest:Clean"> - <MSBuild Projects="gtest_unittest.cbproj" Targets="Clean" /> - </Target> - <Target Name="gtest_unittest:Make"> - <MSBuild Projects="gtest_unittest.cbproj" Targets="Make" /> - </Target> - <Target Name="Build"> - <CallTarget Targets="gtest;gtest_main;gtest_unittest" /> - </Target> - <Target Name="Clean"> - <CallTarget Targets="gtest:Clean;gtest_main:Clean;gtest_unittest:Clean" /> - </Target> - <Target Name="Make"> - <CallTarget Targets="gtest:Make;gtest_main:Make;gtest_unittest:Make" /> - </Target> - <Import Condition="Exists('$(MSBuildBinPath)\Borland.Group.Targets')" Project="$(MSBuildBinPath)\Borland.Group.Targets" /> +<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <ProjectGuid>{c1d923e0-6cba-4332-9b6f-3420acbf5091}</ProjectGuid>
+ </PropertyGroup>
+ <ItemGroup />
+ <ItemGroup>
+ <Projects Include="gtest.cbproj" />
+ <Projects Include="gtest_main.cbproj" />
+ <Projects Include="gtest_unittest.cbproj" />
+ </ItemGroup>
+ <ProjectExtensions>
+ <Borland.Personality>Default.Personality</Borland.Personality>
+ <Borland.ProjectType />
+ <BorlandProject>
+<BorlandProject xmlns=""><Default.Personality></Default.Personality></BorlandProject></BorlandProject>
+ </ProjectExtensions>
+ <Target Name="gtest">
+ <MSBuild Projects="gtest.cbproj" Targets="" />
+ </Target>
+ <Target Name="gtest:Clean">
+ <MSBuild Projects="gtest.cbproj" Targets="Clean" />
+ </Target>
+ <Target Name="gtest:Make">
+ <MSBuild Projects="gtest.cbproj" Targets="Make" />
+ </Target>
+ <Target Name="gtest_main">
+ <MSBuild Projects="gtest_main.cbproj" Targets="" />
+ </Target>
+ <Target Name="gtest_main:Clean">
+ <MSBuild Projects="gtest_main.cbproj" Targets="Clean" />
+ </Target>
+ <Target Name="gtest_main:Make">
+ <MSBuild Projects="gtest_main.cbproj" Targets="Make" />
+ </Target>
+ <Target Name="gtest_unittest">
+ <MSBuild Projects="gtest_unittest.cbproj" Targets="" />
+ </Target>
+ <Target Name="gtest_unittest:Clean">
+ <MSBuild Projects="gtest_unittest.cbproj" Targets="Clean" />
+ </Target>
+ <Target Name="gtest_unittest:Make">
+ <MSBuild Projects="gtest_unittest.cbproj" Targets="Make" />
+ </Target>
+ <Target Name="Build">
+ <CallTarget Targets="gtest;gtest_main;gtest_unittest" />
+ </Target>
+ <Target Name="Clean">
+ <CallTarget Targets="gtest:Clean;gtest_main:Clean;gtest_unittest:Clean" />
+ </Target>
+ <Target Name="Make">
+ <CallTarget Targets="gtest:Make;gtest_main:Make;gtest_unittest:Make" />
+ </Target>
+ <Import Condition="Exists('$(MSBuildBinPath)\Borland.Group.Targets')" Project="$(MSBuildBinPath)\Borland.Group.Targets" />
</Project>
\ No newline at end of file diff --git a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_all.cc b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_all.cc index ba7ad68..121b2d8 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_all.cc +++ b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_all.cc @@ -1,38 +1,38 @@ -// Copyright 2009, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: Josh Kelley (joshkel@gmail.com) -// -// Google C++ Testing Framework (Google Test) -// -// C++Builder's IDE cannot build a static library from files with hyphens -// in their name. See http://qc.codegear.com/wc/qcmain.aspx?d=70977 . -// This file serves as a workaround. - -#include "src/gtest-all.cc" +// Copyright 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: Josh Kelley (joshkel@gmail.com)
+//
+// Google C++ Testing Framework (Google Test)
+//
+// C++Builder's IDE cannot build a static library from files with hyphens
+// in their name. See http://qc.codegear.com/wc/qcmain.aspx?d=70977 .
+// This file serves as a workaround.
+
+#include "src/gtest-all.cc"
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_link.cc b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_link.cc index b955ebf..918eccd 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_link.cc +++ b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_link.cc @@ -1,40 +1,40 @@ -// Copyright 2009, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: Josh Kelley (joshkel@gmail.com) -// -// Google C++ Testing Framework (Google Test) -// -// Links gtest.lib and gtest_main.lib into the current project in C++Builder. -// This means that these libraries can't be renamed, but it's the only way to -// ensure that Debug versus Release test builds are linked against the -// appropriate Debug or Release build of the libraries. - -#pragma link "gtest.lib" -#pragma link "gtest_main.lib" +// Copyright 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: Josh Kelley (joshkel@gmail.com)
+//
+// Google C++ Testing Framework (Google Test)
+//
+// Links gtest.lib and gtest_main.lib into the current project in C++Builder.
+// This means that these libraries can't be renamed, but it's the only way to
+// ensure that Debug versus Release test builds are linked against the
+// appropriate Debug or Release build of the libraries.
+
+#pragma link "gtest.lib"
+#pragma link "gtest_main.lib"
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_main.cbproj b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_main.cbproj index fae32cb..d76ce13 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_main.cbproj +++ b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_main.cbproj @@ -1,82 +1,82 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <ProjectGuid>{bca37a72-5b07-46cf-b44e-89f8e06451a2}</ProjectGuid> - <Config Condition="'$(Config)'==''">Release</Config> - </PropertyGroup> - <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''"> - <Base>true</Base> - </PropertyGroup> - <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''"> - <Base>true</Base> - <Cfg_1>true</Cfg_1> - <CfgParent>Base</CfgParent> - </PropertyGroup> - <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''"> - <Base>true</Base> - <Cfg_2>true</Cfg_2> - <CfgParent>Base</CfgParent> - </PropertyGroup> - <PropertyGroup Condition="'$(Base)'!=''"> - <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed> - <OutputExt>lib</OutputExt> - <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput> - <Defines>NO_STRICT</Defines> - <DynamicRTL>true</DynamicRTL> - <UsePackages>true</UsePackages> - <ProjectType>CppStaticLibrary</ProjectType> - <BCC_CPPCompileAlways>true</BCC_CPPCompileAlways> - <PackageImports>rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;dclZipForged11.bpi;vclZipForged11.bpi;GR32_BDS2006.bpi;GR32_DSGN_BDS2006.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi;CExceptionExpert11.bpi</PackageImports> - <BCC_wpar>false</BCC_wpar> - <IncludePath>$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</IncludePath> - <AllPackageLibs>rtl.lib;vcl.lib</AllPackageLibs> - <TLIB_PageSize>32</TLIB_PageSize> - <ILINK_LibraryPath>$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</ILINK_LibraryPath> - </PropertyGroup> - <PropertyGroup Condition="'$(Cfg_1)'!=''"> - <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed> - <DCC_Optimize>false</DCC_Optimize> - <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe> - <Defines>_DEBUG;$(Defines)</Defines> - <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo> - <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion> - <ILINK_DisableIncrementalLinking>true</ILINK_DisableIncrementalLinking> - <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables> - <DCC_Define>DEBUG</DCC_Define> - <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers> - <IntermediateOutputDir>Debug</IntermediateOutputDir> - <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines> - <BCC_StackFrames>true</BCC_StackFrames> - <BCC_DisableOptimizations>true</BCC_DisableOptimizations> - <ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath> - <TASM_Debugging>Full</TASM_Debugging> - <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn> - </PropertyGroup> - <PropertyGroup Condition="'$(Cfg_2)'!=''"> - <Defines>NDEBUG;$(Defines)</Defines> - <IntermediateOutputDir>Release</IntermediateOutputDir> - <ILINK_LibraryPath>$(BDS)\lib\release;$(ILINK_LibraryPath)</ILINK_LibraryPath> - <TASM_Debugging>None</TASM_Debugging> - </PropertyGroup> - <ProjectExtensions> - <Borland.Personality>CPlusPlusBuilder.Personality</Borland.Personality> - <Borland.ProjectType>CppStaticLibrary</Borland.ProjectType> - <BorlandProject> -<BorlandProject><CPlusPlusBuilder.Personality><VersionInfo><VersionInfo Name="IncludeVerInfo">False</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1033</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Debugging><Debugging Name="DebugSourceDirs"></Debugging></Debugging><Parameters><Parameters Name="RunParams"></Parameters><Parameters Name="Launcher"></Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="DebugCWD"></Parameters><Parameters Name="HostApplication"></Parameters><Parameters Name="RemoteHost"></Parameters><Parameters Name="RemotePath"></Parameters><Parameters Name="RemoteParams"></Parameters><Parameters Name="RemoteLauncher"></Parameters><Parameters Name="UseRemoteLauncher">False</Parameters><Parameters Name="RemoteCWD"></Parameters><Parameters Name="RemoteDebug">False</Parameters><Parameters Name="Debug Symbols Search Path"></Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Excluded_Packages> - <Excluded_Packages Name="$(BDS)\bin\bcboffice2k100.bpl">CodeGear C++Builder Office 2000 Servers Package</Excluded_Packages> - <Excluded_Packages Name="$(BDS)\bin\bcbofficexp100.bpl">CodeGear C++Builder Office XP Servers Package</Excluded_Packages> - </Excluded_Packages><Linker><Linker Name="LibPrefix"></Linker><Linker Name="LibSuffix"></Linker><Linker Name="LibVersion"></Linker></Linker><ProjectProperties><ProjectProperties Name="AutoShowDeps">False</ProjectProperties><ProjectProperties Name="ManagePaths">True</ProjectProperties><ProjectProperties Name="VerifyPackages">True</ProjectProperties></ProjectProperties><HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Count">3</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item0">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item1">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item2">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\src;..\include</HistoryLists_hlIncludePath></HistoryLists_hlIncludePath><HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Count">1</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item0">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</HistoryLists_hlILINK_LibraryPath></HistoryLists_hlILINK_LibraryPath><HistoryLists_hlDefines><HistoryLists_hlDefines Name="Count">1</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item0">NO_STRICT</HistoryLists_hlDefines></HistoryLists_hlDefines><HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Count">1</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item0">32</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item1">16</HistoryLists_hlTLIB_PageSize></HistoryLists_hlTLIB_PageSize></CPlusPlusBuilder.Personality></BorlandProject></BorlandProject> - </ProjectExtensions> - <Import Project="$(MSBuildBinPath)\Borland.Cpp.Targets" /> - <ItemGroup> - <CppCompile Include="..\src\gtest_main.cc"> - <BuildOrder>0</BuildOrder> - </CppCompile> - <BuildConfiguration Include="Debug"> - <Key>Cfg_1</Key> - </BuildConfiguration> - <BuildConfiguration Include="Release"> - <Key>Cfg_2</Key> - </BuildConfiguration> - </ItemGroup> -</Project> +<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <ProjectGuid>{bca37a72-5b07-46cf-b44e-89f8e06451a2}</ProjectGuid>
+ <Config Condition="'$(Config)'==''">Release</Config>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
+ <Base>true</Base>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
+ <Base>true</Base>
+ <Cfg_1>true</Cfg_1>
+ <CfgParent>Base</CfgParent>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
+ <Base>true</Base>
+ <Cfg_2>true</Cfg_2>
+ <CfgParent>Base</CfgParent>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Base)'!=''">
+ <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed>
+ <OutputExt>lib</OutputExt>
+ <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput>
+ <Defines>NO_STRICT</Defines>
+ <DynamicRTL>true</DynamicRTL>
+ <UsePackages>true</UsePackages>
+ <ProjectType>CppStaticLibrary</ProjectType>
+ <BCC_CPPCompileAlways>true</BCC_CPPCompileAlways>
+ <PackageImports>rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;dclZipForged11.bpi;vclZipForged11.bpi;GR32_BDS2006.bpi;GR32_DSGN_BDS2006.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi;CExceptionExpert11.bpi</PackageImports>
+ <BCC_wpar>false</BCC_wpar>
+ <IncludePath>$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</IncludePath>
+ <AllPackageLibs>rtl.lib;vcl.lib</AllPackageLibs>
+ <TLIB_PageSize>32</TLIB_PageSize>
+ <ILINK_LibraryPath>$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</ILINK_LibraryPath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Cfg_1)'!=''">
+ <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed>
+ <DCC_Optimize>false</DCC_Optimize>
+ <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
+ <Defines>_DEBUG;$(Defines)</Defines>
+ <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo>
+ <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion>
+ <ILINK_DisableIncrementalLinking>true</ILINK_DisableIncrementalLinking>
+ <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables>
+ <DCC_Define>DEBUG</DCC_Define>
+ <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers>
+ <IntermediateOutputDir>Debug</IntermediateOutputDir>
+ <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines>
+ <BCC_StackFrames>true</BCC_StackFrames>
+ <BCC_DisableOptimizations>true</BCC_DisableOptimizations>
+ <ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+ <TASM_Debugging>Full</TASM_Debugging>
+ <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Cfg_2)'!=''">
+ <Defines>NDEBUG;$(Defines)</Defines>
+ <IntermediateOutputDir>Release</IntermediateOutputDir>
+ <ILINK_LibraryPath>$(BDS)\lib\release;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+ <TASM_Debugging>None</TASM_Debugging>
+ </PropertyGroup>
+ <ProjectExtensions>
+ <Borland.Personality>CPlusPlusBuilder.Personality</Borland.Personality>
+ <Borland.ProjectType>CppStaticLibrary</Borland.ProjectType>
+ <BorlandProject>
+<BorlandProject><CPlusPlusBuilder.Personality><VersionInfo><VersionInfo Name="IncludeVerInfo">False</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1033</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Debugging><Debugging Name="DebugSourceDirs"></Debugging></Debugging><Parameters><Parameters Name="RunParams"></Parameters><Parameters Name="Launcher"></Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="DebugCWD"></Parameters><Parameters Name="HostApplication"></Parameters><Parameters Name="RemoteHost"></Parameters><Parameters Name="RemotePath"></Parameters><Parameters Name="RemoteParams"></Parameters><Parameters Name="RemoteLauncher"></Parameters><Parameters Name="UseRemoteLauncher">False</Parameters><Parameters Name="RemoteCWD"></Parameters><Parameters Name="RemoteDebug">False</Parameters><Parameters Name="Debug Symbols Search Path"></Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Excluded_Packages>
+ <Excluded_Packages Name="$(BDS)\bin\bcboffice2k100.bpl">CodeGear C++Builder Office 2000 Servers Package</Excluded_Packages>
+ <Excluded_Packages Name="$(BDS)\bin\bcbofficexp100.bpl">CodeGear C++Builder Office XP Servers Package</Excluded_Packages>
+ </Excluded_Packages><Linker><Linker Name="LibPrefix"></Linker><Linker Name="LibSuffix"></Linker><Linker Name="LibVersion"></Linker></Linker><ProjectProperties><ProjectProperties Name="AutoShowDeps">False</ProjectProperties><ProjectProperties Name="ManagePaths">True</ProjectProperties><ProjectProperties Name="VerifyPackages">True</ProjectProperties></ProjectProperties><HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Count">3</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item0">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item1">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item2">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\src;..\include</HistoryLists_hlIncludePath></HistoryLists_hlIncludePath><HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Count">1</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item0">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</HistoryLists_hlILINK_LibraryPath></HistoryLists_hlILINK_LibraryPath><HistoryLists_hlDefines><HistoryLists_hlDefines Name="Count">1</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item0">NO_STRICT</HistoryLists_hlDefines></HistoryLists_hlDefines><HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Count">1</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item0">32</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item1">16</HistoryLists_hlTLIB_PageSize></HistoryLists_hlTLIB_PageSize></CPlusPlusBuilder.Personality></BorlandProject></BorlandProject>
+ </ProjectExtensions>
+ <Import Project="$(MSBuildBinPath)\Borland.Cpp.Targets" />
+ <ItemGroup>
+ <CppCompile Include="..\src\gtest_main.cc">
+ <BuildOrder>0</BuildOrder>
+ </CppCompile>
+ <BuildConfiguration Include="Debug">
+ <Key>Cfg_1</Key>
+ </BuildConfiguration>
+ <BuildConfiguration Include="Release">
+ <Key>Cfg_2</Key>
+ </BuildConfiguration>
+ </ItemGroup>
+</Project>
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_unittest.cbproj b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_unittest.cbproj index 33f7056..dc5db8e 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_unittest.cbproj +++ b/src/3rdparty/webkit/Source/ThirdParty/gtest/codegear/gtest_unittest.cbproj @@ -1,88 +1,88 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <ProjectGuid>{eea63393-5ac5-4b9c-8909-d75fef2daa41}</ProjectGuid> - <Config Condition="'$(Config)'==''">Release</Config> - </PropertyGroup> - <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''"> - <Base>true</Base> - </PropertyGroup> - <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''"> - <Base>true</Base> - <Cfg_1>true</Cfg_1> - <CfgParent>Base</CfgParent> - </PropertyGroup> - <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''"> - <Base>true</Base> - <Cfg_2>true</Cfg_2> - <CfgParent>Base</CfgParent> - </PropertyGroup> - <PropertyGroup Condition="'$(Base)'!=''"> - <OutputExt>exe</OutputExt> - <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed> - <Defines>NO_STRICT</Defines> - <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput> - <DynamicRTL>true</DynamicRTL> - <ILINK_ObjectSearchPath>..\test</ILINK_ObjectSearchPath> - <UsePackages>true</UsePackages> - <ProjectType>CppConsoleApplication</ProjectType> - <NoVCL>true</NoVCL> - <BCC_CPPCompileAlways>true</BCC_CPPCompileAlways> - <PackageImports>rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi</PackageImports> - <BCC_wpar>false</BCC_wpar> - <IncludePath>$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test;..</IncludePath> - <ILINK_LibraryPath>$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test</ILINK_LibraryPath> - <Multithreaded>true</Multithreaded> - </PropertyGroup> - <PropertyGroup Condition="'$(Cfg_1)'!=''"> - <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed> - <DCC_Optimize>false</DCC_Optimize> - <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe> - <Defines>_DEBUG;$(Defines)</Defines> - <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo> - <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion> - <ILINK_DisableIncrementalLinking>true</ILINK_DisableIncrementalLinking> - <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables> - <DCC_Define>DEBUG</DCC_Define> - <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers> - <IntermediateOutputDir>Debug</IntermediateOutputDir> - <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines> - <BCC_StackFrames>true</BCC_StackFrames> - <BCC_DisableOptimizations>true</BCC_DisableOptimizations> - <ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath> - <TASM_Debugging>Full</TASM_Debugging> - <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn> - </PropertyGroup> - <PropertyGroup Condition="'$(Cfg_2)'!=''"> - <Defines>NDEBUG;$(Defines)</Defines> - <IntermediateOutputDir>Release</IntermediateOutputDir> - <ILINK_LibraryPath>$(BDS)\lib\release;$(ILINK_LibraryPath)</ILINK_LibraryPath> - <TASM_Debugging>None</TASM_Debugging> - </PropertyGroup> - <ProjectExtensions> - <Borland.Personality>CPlusPlusBuilder.Personality</Borland.Personality> - <Borland.ProjectType>CppConsoleApplication</Borland.ProjectType> - <BorlandProject> -<BorlandProject><CPlusPlusBuilder.Personality><VersionInfo><VersionInfo Name="IncludeVerInfo">False</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1033</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Debugging><Debugging Name="DebugSourceDirs"></Debugging></Debugging><Parameters><Parameters Name="RunParams"></Parameters><Parameters Name="Launcher"></Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="DebugCWD"></Parameters><Parameters Name="HostApplication"></Parameters><Parameters Name="RemoteHost"></Parameters><Parameters Name="RemotePath"></Parameters><Parameters Name="RemoteParams"></Parameters><Parameters Name="RemoteLauncher"></Parameters><Parameters Name="UseRemoteLauncher">False</Parameters><Parameters Name="RemoteCWD"></Parameters><Parameters Name="RemoteDebug">False</Parameters><Parameters Name="Debug Symbols Search Path"></Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Excluded_Packages> - - - <Excluded_Packages Name="$(BDS)\bin\bcboffice2k100.bpl">CodeGear C++Builder Office 2000 Servers Package</Excluded_Packages> - <Excluded_Packages Name="$(BDS)\bin\bcbofficexp100.bpl">CodeGear C++Builder Office XP Servers Package</Excluded_Packages> - </Excluded_Packages><Linker><Linker Name="LibPrefix"></Linker><Linker Name="LibSuffix"></Linker><Linker Name="LibVersion"></Linker></Linker><ProjectProperties><ProjectProperties Name="AutoShowDeps">False</ProjectProperties><ProjectProperties Name="ManagePaths">True</ProjectProperties><ProjectProperties Name="VerifyPackages">True</ProjectProperties></ProjectProperties><HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Count">3</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item0">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item1">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item2">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include</HistoryLists_hlIncludePath></HistoryLists_hlIncludePath><HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Count">1</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item0">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item1">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item2">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;$(OUTPUTDIR);..\test</HistoryLists_hlILINK_LibraryPath></HistoryLists_hlILINK_LibraryPath><HistoryLists_hlDefines><HistoryLists_hlDefines Name="Count">2</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item0">NO_STRICT</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item1">STRICT</HistoryLists_hlDefines></HistoryLists_hlDefines></CPlusPlusBuilder.Personality></BorlandProject></BorlandProject> - </ProjectExtensions> - <Import Project="$(MSBuildBinPath)\Borland.Cpp.Targets" /> - <ItemGroup> - <CppCompile Include="..\test\gtest_unittest.cc"> - <BuildOrder>0</BuildOrder> - </CppCompile> - <CppCompile Include="gtest_link.cc"> - <BuildOrder>1</BuildOrder> - </CppCompile> - <BuildConfiguration Include="Debug"> - <Key>Cfg_1</Key> - </BuildConfiguration> - <BuildConfiguration Include="Release"> - <Key>Cfg_2</Key> - </BuildConfiguration> - </ItemGroup> +<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <ProjectGuid>{eea63393-5ac5-4b9c-8909-d75fef2daa41}</ProjectGuid>
+ <Config Condition="'$(Config)'==''">Release</Config>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
+ <Base>true</Base>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
+ <Base>true</Base>
+ <Cfg_1>true</Cfg_1>
+ <CfgParent>Base</CfgParent>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
+ <Base>true</Base>
+ <Cfg_2>true</Cfg_2>
+ <CfgParent>Base</CfgParent>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Base)'!=''">
+ <OutputExt>exe</OutputExt>
+ <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed>
+ <Defines>NO_STRICT</Defines>
+ <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput>
+ <DynamicRTL>true</DynamicRTL>
+ <ILINK_ObjectSearchPath>..\test</ILINK_ObjectSearchPath>
+ <UsePackages>true</UsePackages>
+ <ProjectType>CppConsoleApplication</ProjectType>
+ <NoVCL>true</NoVCL>
+ <BCC_CPPCompileAlways>true</BCC_CPPCompileAlways>
+ <PackageImports>rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi</PackageImports>
+ <BCC_wpar>false</BCC_wpar>
+ <IncludePath>$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test;..</IncludePath>
+ <ILINK_LibraryPath>$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test</ILINK_LibraryPath>
+ <Multithreaded>true</Multithreaded>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Cfg_1)'!=''">
+ <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed>
+ <DCC_Optimize>false</DCC_Optimize>
+ <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
+ <Defines>_DEBUG;$(Defines)</Defines>
+ <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo>
+ <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion>
+ <ILINK_DisableIncrementalLinking>true</ILINK_DisableIncrementalLinking>
+ <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables>
+ <DCC_Define>DEBUG</DCC_Define>
+ <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers>
+ <IntermediateOutputDir>Debug</IntermediateOutputDir>
+ <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines>
+ <BCC_StackFrames>true</BCC_StackFrames>
+ <BCC_DisableOptimizations>true</BCC_DisableOptimizations>
+ <ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+ <TASM_Debugging>Full</TASM_Debugging>
+ <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Cfg_2)'!=''">
+ <Defines>NDEBUG;$(Defines)</Defines>
+ <IntermediateOutputDir>Release</IntermediateOutputDir>
+ <ILINK_LibraryPath>$(BDS)\lib\release;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+ <TASM_Debugging>None</TASM_Debugging>
+ </PropertyGroup>
+ <ProjectExtensions>
+ <Borland.Personality>CPlusPlusBuilder.Personality</Borland.Personality>
+ <Borland.ProjectType>CppConsoleApplication</Borland.ProjectType>
+ <BorlandProject>
+<BorlandProject><CPlusPlusBuilder.Personality><VersionInfo><VersionInfo Name="IncludeVerInfo">False</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1033</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Debugging><Debugging Name="DebugSourceDirs"></Debugging></Debugging><Parameters><Parameters Name="RunParams"></Parameters><Parameters Name="Launcher"></Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="DebugCWD"></Parameters><Parameters Name="HostApplication"></Parameters><Parameters Name="RemoteHost"></Parameters><Parameters Name="RemotePath"></Parameters><Parameters Name="RemoteParams"></Parameters><Parameters Name="RemoteLauncher"></Parameters><Parameters Name="UseRemoteLauncher">False</Parameters><Parameters Name="RemoteCWD"></Parameters><Parameters Name="RemoteDebug">False</Parameters><Parameters Name="Debug Symbols Search Path"></Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Excluded_Packages>
+
+
+ <Excluded_Packages Name="$(BDS)\bin\bcboffice2k100.bpl">CodeGear C++Builder Office 2000 Servers Package</Excluded_Packages>
+ <Excluded_Packages Name="$(BDS)\bin\bcbofficexp100.bpl">CodeGear C++Builder Office XP Servers Package</Excluded_Packages>
+ </Excluded_Packages><Linker><Linker Name="LibPrefix"></Linker><Linker Name="LibSuffix"></Linker><Linker Name="LibVersion"></Linker></Linker><ProjectProperties><ProjectProperties Name="AutoShowDeps">False</ProjectProperties><ProjectProperties Name="ManagePaths">True</ProjectProperties><ProjectProperties Name="VerifyPackages">True</ProjectProperties></ProjectProperties><HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Count">3</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item0">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item1">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item2">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include</HistoryLists_hlIncludePath></HistoryLists_hlIncludePath><HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Count">1</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item0">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item1">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item2">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;$(OUTPUTDIR);..\test</HistoryLists_hlILINK_LibraryPath></HistoryLists_hlILINK_LibraryPath><HistoryLists_hlDefines><HistoryLists_hlDefines Name="Count">2</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item0">NO_STRICT</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item1">STRICT</HistoryLists_hlDefines></HistoryLists_hlDefines></CPlusPlusBuilder.Personality></BorlandProject></BorlandProject>
+ </ProjectExtensions>
+ <Import Project="$(MSBuildBinPath)\Borland.Cpp.Targets" />
+ <ItemGroup>
+ <CppCompile Include="..\test\gtest_unittest.cc">
+ <BuildOrder>0</BuildOrder>
+ </CppCompile>
+ <CppCompile Include="gtest_link.cc">
+ <BuildOrder>1</BuildOrder>
+ </CppCompile>
+ <BuildConfiguration Include="Debug">
+ <Key>Cfg_1</Key>
+ </BuildConfiguration>
+ <BuildConfiguration Include="Release">
+ <Key>Cfg_2</Key>
+ </BuildConfiguration>
+ </ItemGroup>
</Project>
\ No newline at end of file diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/gyp.bat b/src/3rdparty/webkit/Source/ThirdParty/gyp/gyp.bat index 91ebf1e..90fbc6d 100755 --- a/src/3rdparty/webkit/Source/ThirdParty/gyp/gyp.bat +++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/gyp.bat @@ -1,5 +1,5 @@ -@rem Copyright (c) 2009 Google Inc. All rights reserved. -@rem Use of this source code is governed by a BSD-style license that can be -@rem found in the LICENSE file. - -@python "%~dp0/gyp" %* +@rem Copyright (c) 2009 Google Inc. All rights reserved.
+@rem Use of this source code is governed by a BSD-style license that can be
+@rem found in the LICENSE file.
+
+@python "%~dp0/gyp" %*
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/samples/samples.bat b/src/3rdparty/webkit/Source/ThirdParty/gyp/samples/samples.bat index 5683255..778d9c9 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/gyp/samples/samples.bat +++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/samples/samples.bat @@ -1,5 +1,5 @@ -@rem Copyright (c) 2009 Google Inc. All rights reserved. -@rem Use of this source code is governed by a BSD-style license that can be -@rem found in the LICENSE file. - -@python %~dp0/samples %* +@rem Copyright (c) 2009 Google Inc. All rights reserved.
+@rem Use of this source code is governed by a BSD-style license that can be
+@rem found in the LICENSE file.
+
+@python %~dp0/samples %*
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/gyptest-errors.py b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/gyptest-errors.py index 4a2aa07..ca41487 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/gyptest-errors.py +++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/gyptest-errors.py @@ -1,24 +1,24 @@ -#!/usr/bin/env python +#!/usr/bin/env python
# Copyright (c) 2009 Google Inc. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. - -""" -Verifies behavior for different action configuration errors: -exit status of 1, and the expected error message must be in stderr. -""" - -import TestGyp - -test = TestGyp.TestGyp() - - -test.run_gyp('action_missing_name.gyp', chdir='src', status=1, stderr=None) -expect = [ - "Anonymous action in target broken_actions2. An action must have an 'action_name' field.", -] -test.must_contain_all_lines(test.stderr(), expect) - - -test.pass_test() +
+"""
+Verifies behavior for different action configuration errors:
+exit status of 1, and the expected error message must be in stderr.
+"""
+
+import TestGyp
+
+test = TestGyp.TestGyp()
+
+
+test.run_gyp('action_missing_name.gyp', chdir='src', status=1, stderr=None)
+expect = [
+ "Anonymous action in target broken_actions2. An action must have an 'action_name' field.",
+]
+test.must_contain_all_lines(test.stderr(), expect)
+
+
+test.pass_test()
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/src/subdir1/program.c b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/src/subdir1/program.c index f155939..d5f661d 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/src/subdir1/program.c +++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/actions/src/subdir1/program.c @@ -1,12 +1,12 @@ -#include <stdio.h> - -extern void prog1(void); -extern void prog2(void); - -int main(int argc, char *argv[]) -{ - printf("Hello from program.c\n"); - prog1(); - prog2(); - return 0; -} +#include <stdio.h>
+
+extern void prog1(void);
+extern void prog2(void);
+
+int main(int argc, char *argv[])
+{
+ printf("Hello from program.c\n");
+ prog1();
+ prog2();
+ return 0;
+}
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/actions-out/README.txt b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/actions-out/README.txt index 90ef886..1b052c9 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/actions-out/README.txt +++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/actions-out/README.txt @@ -1,4 +1,4 @@ -A place-holder for this Xcode build output directory, so that the -test script can verify that .xcodeproj files are not created in -their normal location by making the src/ read-only, and then -selectively making this build directory writable. +A place-holder for this Xcode build output directory, so that the
+test script can verify that .xcodeproj files are not created in
+their normal location by making the src/ read-only, and then
+selectively making this build directory writable.
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/program.c b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/program.c index f155939..d5f661d 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/program.c +++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir1/program.c @@ -1,12 +1,12 @@ -#include <stdio.h> - -extern void prog1(void); -extern void prog2(void); - -int main(int argc, char *argv[]) -{ - printf("Hello from program.c\n"); - prog1(); - prog2(); - return 0; -} +#include <stdio.h>
+
+extern void prog1(void);
+extern void prog2(void);
+
+int main(int argc, char *argv[])
+{
+ printf("Hello from program.c\n");
+ prog1();
+ prog2();
+ return 0;
+}
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir2/actions-out/README.txt b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir2/actions-out/README.txt index 90ef886..1b052c9 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir2/actions-out/README.txt +++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/actions/subdir2/actions-out/README.txt @@ -1,4 +1,4 @@ -A place-holder for this Xcode build output directory, so that the -test script can verify that .xcodeproj files are not created in -their normal location by making the src/ read-only, and then -selectively making this build directory writable. +A place-holder for this Xcode build output directory, so that the
+test script can verify that .xcodeproj files are not created in
+their normal location by making the src/ read-only, and then
+selectively making this build directory writable.
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/rules/subdir2/rules-out/README.txt b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/rules/subdir2/rules-out/README.txt index 90ef886..1b052c9 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/rules/subdir2/rules-out/README.txt +++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/test/generator-output/rules/subdir2/rules-out/README.txt @@ -1,4 +1,4 @@ -A place-holder for this Xcode build output directory, so that the -test script can verify that .xcodeproj files are not created in -their normal location by making the src/ read-only, and then -selectively making this build directory writable. +A place-holder for this Xcode build output directory, so that the
+test script can verify that .xcodeproj files are not created in
+their normal location by making the src/ read-only, and then
+selectively making this build directory writable.
diff --git a/src/3rdparty/webkit/Source/ThirdParty/gyp/tools/pretty_gyp.py b/src/3rdparty/webkit/Source/ThirdParty/gyp/tools/pretty_gyp.py index 128c2e3..04c7901 100644 --- a/src/3rdparty/webkit/Source/ThirdParty/gyp/tools/pretty_gyp.py +++ b/src/3rdparty/webkit/Source/ThirdParty/gyp/tools/pretty_gyp.py @@ -1,142 +1,142 @@ -#!/usr/bin/env python -# Copyright (c) 2009 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -# This file pretty-prints the contents of a GYP file. - -import sys -import re - -input = [] -if len(sys.argv) > 1: - input_file = open(sys.argv[1]) - input = input_file.read().splitlines() - input_file.close() -else: - input = sys.stdin.read().splitlines() - -# This is used to remove comments when we're counting braces. -comment_re = re.compile(r'\s*#.*') - -# This is used to remove quoted strings when we're counting braces. -# It takes into account quoted quotes, and makes sure that the quotes -# match. -# NOTE: It does not handle quotes that span more than one line, or -# cases where an escaped quote is preceeded by an escaped backslash. -quote_re_str = r'(?P<q>[\'"])(.*?)(?<![^\\][\\])(?P=q)' -quote_re = re.compile(quote_re_str) - -def comment_replace(matchobj): - return matchobj.group(1) + matchobj.group(2) + '#' * len(matchobj.group(3)) - -def mask_comments(input): - # This is used to mask the quoted strings so we skip braces inside - # quoted strings. - search_re = re.compile(r'(.*?)(#)(.*)') - return [search_re.sub(comment_replace, line) for line in input] - -def quote_replace(matchobj): - return "%s%s%s%s" % (matchobj.group(1), - matchobj.group(2), - 'x'*len(matchobj.group(3)), - matchobj.group(2)) - -def mask_quotes(input): - # This is used to mask the quoted strings so we skip braces inside - # quoted strings. - search_re = re.compile(r'(.*?)' + quote_re_str) - return [search_re.sub(quote_replace, line) for line in input] - -def do_split(input, masked_input, search_re): - output = [] - mask_output = [] - for (line, masked_line) in zip(input, masked_input): - m = search_re.match(masked_line) - while m: - split = len(m.group(1)) - line = line[:split] + r'\n' + line[split:] - masked_line = masked_line[:split] + r'\n' + masked_line[split:] - m = search_re.match(masked_line) - output.extend(line.split(r'\n')) - mask_output.extend(masked_line.split(r'\n')) - return (output, mask_output) - -# This masks out the quotes and comments, and then splits appropriate -# lines (lines that matche the double_*_brace re's above) before -# indenting them below. -def split_double_braces(input): - # These are used to split lines which have multiple braces on them, so - # that the indentation looks prettier when all laid out (e.g. closing - # braces make a nice diagonal line). - double_open_brace_re = re.compile(r'(.*?[\[\{\(,])(\s*)([\[\{\(])') - double_close_brace_re = re.compile(r'(.*?[\]\}\)],?)(\s*)([\]\}\)])') - - masked_input = mask_quotes(input) - masked_input = mask_comments(masked_input) - - (output, mask_output) = do_split(input, masked_input, double_open_brace_re) - (output, mask_output) = do_split(output, mask_output, double_close_brace_re) - - return output - -# This keeps track of the number of braces on a given line and returns -# the result. It starts at zero and subtracts for closed braces, and -# adds for open braces. -def count_braces(line): - open_braces = ['[', '(', '{'] - close_braces = [']', ')', '}'] - closing_prefix_re = re.compile(r'(.*?[^\s\]\}\)]+.*?)([\]\}\)],?)\s*$') - cnt = 0 - stripline = comment_re.sub(r'', line) - stripline = quote_re.sub(r"''", stripline) - for char in stripline: - for brace in open_braces: - if char == brace: - cnt += 1 - for brace in close_braces: - if char == brace: - cnt -= 1 - - after = False - if cnt > 0: - after = True - - # This catches the special case of a closing brace having something - # other than just whitespace ahead of it -- we don't want to - # unindent that until after this line is printed so it stays with - # the previous indentation level. - if cnt < 0 and closing_prefix_re.match(stripline): - after = True - return (cnt, after) - -# This does the main work of indenting the input based on the brace counts. -def prettyprint_input(lines): - indent = 0 - basic_offset = 2 - last_line = "" - for line in lines: - if comment_re.match(line): - print line - else: - line = line.strip('\r\n\t ') # Otherwise doesn't strip \r on Unix. - if len(line) > 0: - (brace_diff, after) = count_braces(line) - if brace_diff != 0: - if after: - print " " * (basic_offset * indent) + line - indent += brace_diff - else: - indent += brace_diff - print " " * (basic_offset * indent) + line - else: - print " " * (basic_offset * indent) + line - else: - print "" - last_line = line - -# Split up the double braces. -lines = split_double_braces(input) - -# Indent and print the output. -prettyprint_input(lines) +#!/usr/bin/env python
+# Copyright (c) 2009 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This file pretty-prints the contents of a GYP file.
+
+import sys
+import re
+
+input = []
+if len(sys.argv) > 1:
+ input_file = open(sys.argv[1])
+ input = input_file.read().splitlines()
+ input_file.close()
+else:
+ input = sys.stdin.read().splitlines()
+
+# This is used to remove comments when we're counting braces.
+comment_re = re.compile(r'\s*#.*')
+
+# This is used to remove quoted strings when we're counting braces.
+# It takes into account quoted quotes, and makes sure that the quotes
+# match.
+# NOTE: It does not handle quotes that span more than one line, or
+# cases where an escaped quote is preceeded by an escaped backslash.
+quote_re_str = r'(?P<q>[\'"])(.*?)(?<![^\\][\\])(?P=q)'
+quote_re = re.compile(quote_re_str)
+
+def comment_replace(matchobj):
+ return matchobj.group(1) + matchobj.group(2) + '#' * len(matchobj.group(3))
+
+def mask_comments(input):
+ # This is used to mask the quoted strings so we skip braces inside
+ # quoted strings.
+ search_re = re.compile(r'(.*?)(#)(.*)')
+ return [search_re.sub(comment_replace, line) for line in input]
+
+def quote_replace(matchobj):
+ return "%s%s%s%s" % (matchobj.group(1),
+ matchobj.group(2),
+ 'x'*len(matchobj.group(3)),
+ matchobj.group(2))
+
+def mask_quotes(input):
+ # This is used to mask the quoted strings so we skip braces inside
+ # quoted strings.
+ search_re = re.compile(r'(.*?)' + quote_re_str)
+ return [search_re.sub(quote_replace, line) for line in input]
+
+def do_split(input, masked_input, search_re):
+ output = []
+ mask_output = []
+ for (line, masked_line) in zip(input, masked_input):
+ m = search_re.match(masked_line)
+ while m:
+ split = len(m.group(1))
+ line = line[:split] + r'\n' + line[split:]
+ masked_line = masked_line[:split] + r'\n' + masked_line[split:]
+ m = search_re.match(masked_line)
+ output.extend(line.split(r'\n'))
+ mask_output.extend(masked_line.split(r'\n'))
+ return (output, mask_output)
+
+# This masks out the quotes and comments, and then splits appropriate
+# lines (lines that matche the double_*_brace re's above) before
+# indenting them below.
+def split_double_braces(input):
+ # These are used to split lines which have multiple braces on them, so
+ # that the indentation looks prettier when all laid out (e.g. closing
+ # braces make a nice diagonal line).
+ double_open_brace_re = re.compile(r'(.*?[\[\{\(,])(\s*)([\[\{\(])')
+ double_close_brace_re = re.compile(r'(.*?[\]\}\)],?)(\s*)([\]\}\)])')
+
+ masked_input = mask_quotes(input)
+ masked_input = mask_comments(masked_input)
+
+ (output, mask_output) = do_split(input, masked_input, double_open_brace_re)
+ (output, mask_output) = do_split(output, mask_output, double_close_brace_re)
+
+ return output
+
+# This keeps track of the number of braces on a given line and returns
+# the result. It starts at zero and subtracts for closed braces, and
+# adds for open braces.
+def count_braces(line):
+ open_braces = ['[', '(', '{']
+ close_braces = [']', ')', '}']
+ closing_prefix_re = re.compile(r'(.*?[^\s\]\}\)]+.*?)([\]\}\)],?)\s*$')
+ cnt = 0
+ stripline = comment_re.sub(r'', line)
+ stripline = quote_re.sub(r"''", stripline)
+ for char in stripline:
+ for brace in open_braces:
+ if char == brace:
+ cnt += 1
+ for brace in close_braces:
+ if char == brace:
+ cnt -= 1
+
+ after = False
+ if cnt > 0:
+ after = True
+
+ # This catches the special case of a closing brace having something
+ # other than just whitespace ahead of it -- we don't want to
+ # unindent that until after this line is printed so it stays with
+ # the previous indentation level.
+ if cnt < 0 and closing_prefix_re.match(stripline):
+ after = True
+ return (cnt, after)
+
+# This does the main work of indenting the input based on the brace counts.
+def prettyprint_input(lines):
+ indent = 0
+ basic_offset = 2
+ last_line = ""
+ for line in lines:
+ if comment_re.match(line):
+ print line
+ else:
+ line = line.strip('\r\n\t ') # Otherwise doesn't strip \r on Unix.
+ if len(line) > 0:
+ (brace_diff, after) = count_braces(line)
+ if brace_diff != 0:
+ if after:
+ print " " * (basic_offset * indent) + line
+ indent += brace_diff
+ else:
+ indent += brace_diff
+ print " " * (basic_offset * indent) + line
+ else:
+ print " " * (basic_offset * indent) + line
+ else:
+ print ""
+ last_line = line
+
+# Split up the double braces.
+lines = split_double_braces(input)
+
+# Indent and print the output.
+prettyprint_input(lines)
diff --git a/src/3rdparty/webkit/Source/WebCore/ChangeLog b/src/3rdparty/webkit/Source/WebCore/ChangeLog index f112cba..41d2ba7 100644 --- a/src/3rdparty/webkit/Source/WebCore/ChangeLog +++ b/src/3rdparty/webkit/Source/WebCore/ChangeLog @@ -1,3 +1,1047 @@ +2011-08-25 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org> + + [Qt] Enable password echo on Symbian builds + https://bugs.webkit.org/show_bug.cgi?id=66954 + + Reviewed by Chang Shu. + + No tests, as this is just a build change. + + * config.h: + +2011-08-23 Chang Shu <cshu@webkit.org> + + Added support for momentarily revealing last typed character in password input. + Code change was partially based on Apple's iOS code and Samuel Nevala's work. + https://bugs.webkit.org/show_bug.cgi?id=32509 + + Reviewed by Alexey Proskuryakov. + + * editing/InsertIntoTextNodeCommand.cpp: + (WebCore::InsertIntoTextNodeCommand::doApply): + * rendering/RenderText.cpp: + (WebCore::SecureTextTimer::SecureTextTimer): + (WebCore::SecureTextTimer::restartWithNewText): + (WebCore::SecureTextTimer::invalidate): + (WebCore::SecureTextTimer::lastTypedCharacterOffset): + (WebCore::SecureTextTimer::fired): + (WebCore::RenderText::willBeDestroyed): + (WebCore::RenderText::setTextInternal): + (WebCore::RenderText::secureText): + (WebCore::RenderText::momentarilyRevealLastTypedCharacter): + * rendering/RenderText.h: + (WebCore::RenderText::isSecure): + * testing/Internals.cpp: + (WebCore::Internals::setPasswordEchoEnabled): Fixed some silly coding in Internals. + (WebCore::Internals::setPasswordEchoDurationInSeconds): + (WebCore::Internals::reset): + +2011-07-08 Chang Shu <cshu@webkit.org> + + Update calling sites after function renamed. + https://bugs.webkit.org/show_bug.cgi?id=59114 + + Reviewed by Alexey Proskuryakov. + + No new tests, just refactoring. + + * editing/visible_units.cpp: + (WebCore::previousBoundary): + (WebCore::nextBoundary): + * rendering/RenderText.cpp: + (WebCore::RenderText::setTextInternal): + +2011-08-18 Chang Shu <cshu@webkit.org> + + Add support of setPasswordEchoEnabled and setPasswordEchoDuration for password echo feature + https://bugs.webkit.org/show_bug.cgi?id=66052 + + Reviewed by Alexey Proskuryakov. + + Added runtime settings in WebCore. + Added support in window.internals for testing. + + Tests: editing/input/password-echo-passnode.html + editing/input/password-echo-passnode2.html + editing/input/password-echo-passnode3.html + editing/input/password-echo-textnode.html + + * page/Settings.cpp: + (WebCore::Settings::Settings): + * page/Settings.h: + (WebCore::Settings::setPasswordEchoEnabled): + (WebCore::Settings::passwordEchoEnabled): + (WebCore::Settings::setPasswordEchoDurationInSeconds): + (WebCore::Settings::passwordEchoDurationInSeconds): + * testing/Internals.cpp: + (WebCore::Internals::Internals): + (WebCore::Internals::setPasswordEchoEnabled): + (WebCore::Internals::setPasswordEchoDurationInSeconds): + (WebCore::Internals::reset): + * testing/Internals.h: + * testing/Internals.idl: + +2011-08-16 Chang Shu <cshu@webkit.org> + + Support reset in WebCore::Internals + https://bugs.webkit.org/show_bug.cgi?id=66307 + + Reviewed by Dimitri Glazkov. + + New tests will be added when function reset is implemented. + + Added framework code in WebCoreTestSupport. The real implementation of + Internals::reset() depends on the need from the settings that require a reset. + + * testing/Internals.cpp: + (WebCore::Internals::reset): + * testing/Internals.h: + * testing/js/WebCoreTestSupport.cpp: + (WebCoreTestSupport::resetInternalsObject): + * testing/js/WebCoreTestSupport.h: + * testing/v8/WebCoreTestSupport.cpp: + (WebCoreTestSupport::resetInternalsObject): + * testing/v8/WebCoreTestSupport.h: + +2011-06-09 Robert Hogan <robert@webkit.org> + + Reviewed by Andreas Kling. + + Teach Qt about window.internals + https://bugs.webkit.org/show_bug.cgi?id=61074 + + A weakness of the Qt DRT setup is that things like JSContextRef are abstracted + away from the QtWebKit API so we need DumpRenderTreeSupportQt to access WebCore internals. + Since the window.internals object requires JSContextRef we need to implement it in DumpRenderTreeSupportQt + where we can access it. DumpRenderTreeSupportQt cannot be compiled outside Qt's WebCore and as it + is our only possible route into the WebCoreTestSupport class neither can the new window.internals plumbing. + Likewise we can't put the accessor in WebCoreTestSupport because it would then need to know about QWebFrame + and others. The only alternative seems like a compile time guard which we would have to teach the bots about. + + * CodeGenerators.pri: + * WebCore.pri: + * WebCore.pro: + +2011-06-02 Dimitri Glazkov <dglazkov@chromium.org> + + Reviewed by Darin Adler. + + Add build logistics and plumbing for window.internals object. + https://bugs.webkit.org/show_bug.cgi?id=60313 + + Test: fast/harness/internals-object.html + + * Configurations/WebCoreTestSupport.xcconfig: Added. + * DerivedSources.make: Added support for generating from Internals.idl. + * WebCore.gyp/WebCore.gyp: Added new webcore_test_support library. + * WebCore.gypi: Ditto. + * WebCore.xcodeproj/project.pbxproj: Added WebCoreTestSupport library. + * testing/Internals.cpp: Added. + * testing/Internals.h: Added. + * testing/Internals.idl: Added. + * testing/js/WebCoreTestSupport.cpp: Added. + * testing/js/WebCoreTestSupport.h: Added. + * testing/v8/WebCoreTestSupport.cpp: Added. + * testing/v8/WebCoreTestSupport.h: Added. + +2011-08-22 Abhishek Arya <inferno@chromium.org> + + Crash in FocusController::advanceFocusInDocumentOrder + https://bugs.webkit.org/show_bug.cgi?id=66678 + + RefPtr the focusable node to prevent getting deleted by mutation + event. + + Reviewed by Dave Hyatt. + + Test: fast/frames/focus-controller-crash-change-event.html + + * page/FocusController.cpp: + (WebCore::FocusController::advanceFocusInDocumentOrder): + +2011-08-18 Ryosuke Niwa <rniwa@webkit.org> + + SimplifiedBackwardsTextIterator returns incorrect offset with first-letter rule + https://bugs.webkit.org/show_bug.cgi?id=66086 + + Reviewed by Darin Adler. + + The bug was caused by SimplifiedBackwardsTextIterator's not taking care of first-letter at all. + Fixing the bug by detecting RenderTextFragment in handleTextNode. + + Also added m_shouldHandleFirstLetter to SimplifiedBackwardsTextIterator to keep track of whether or not + the next call to handleTextNode needs to process the first-letter part of the text fragment. + + Test: editing/text-iterator/backward-textiterator-first-letter-crash.html + + * editing/TextIterator.cpp: + (WebCore::firstRenderTextInFirstLetter): Extracted from handleTextNodeFirstLetter. + (WebCore::TextIterator::handleTextNodeFirstLetter): Calls firstRenderTextInFirstLetter. + (WebCore::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator): + (WebCore::SimplifiedBackwardsTextIterator::handleTextNode): + (WebCore::SimplifiedBackwardsTextIterator::handleFirstLetter): Added. + * editing/TextIterator.h: + +2011-08-23 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> + + [Qt] Fix build on Lion + + https://bugs.webkit.org/show_bug.cgi?id=66770 + + Reviewed by Andreas Kling. + + We were mistakenly picking up mac/WebCoreSystemInterface.h instead of + the Qt one, and building on Lion revealed this when a typedef for + IOSurfaceRef was wrapped in PLATFORM(MAC). + + For now we fix this by including WebCoreSystemInterface using + brackets, so that we'll pick up the right file based on the + include paths. This also means exposing a few missing enums + in our own version of the file, so those were added. + + Lasty, we need to link against the right system interface library + on Lion. + + * platform/mac/WebVideoFullscreenHUDWindowController.mm: + * platform/qt/WebCoreSystemInterface.h: + +2011-08-08 Cris Neckar <cdn@chromium.org> + + Remove counter nodes from the tree and fix-up children when they are removed from the counter map. + https://bugs.webkit.org/show_bug.cgi?id=65346 + + Reviewed by Adam Barth. + + Covered by existing CSS counter tests. + + * rendering/CounterNode.cpp: + (WebCore::CounterNode::~CounterNode): + +2011-08-17 Oliver Hunt <oliver@apple.com> + + Move towards supporting user controlled prototypes on CanvasPixelArray + https://bugs.webkit.org/show_bug.cgi?id=66429 + + Reviewed by Gavin Barraclough. + + Start using a per-global object structure for canvas pixel array. + + * bindings/js/JSImageDataCustom.cpp: + (WebCore::toJS): + +2011-08-17 Abhishek Arya <inferno@chromium.org> + + Crash in Document::recalcStyleSelector + https://bugs.webkit.org/show_bug.cgi?id=66335 + + Reviewed by Simon Fraser. + + When node is getting destroyed and its removedFromDocument + is not called due to entire document structure torn down(using + removeAllChildren), make sure to clear out the stylesheet + candidate node from document's structures in its destructor. + + Test: svg/dom/stylesheet-candidate-node-crash-main.html + + * dom/ProcessingInstruction.cpp: + (WebCore::ProcessingInstruction::~ProcessingInstruction): + * html/HTMLLinkElement.cpp: + (WebCore::HTMLLinkElement::~HTMLLinkElement): + * html/HTMLStyleElement.cpp: + (WebCore::HTMLStyleElement::~HTMLStyleElement): + * svg/SVGStyleElement.cpp: + (WebCore::SVGStyleElement::~SVGStyleElement): + +2011-08-12 Abhishek Arya <inferno@chromium.org> + + Crash in WebCore::editingIgnoresContent + https://bugs.webkit.org/show_bug.cgi?id=66125 + + Reviewed by Ryosuke Niwa. + + RefPtr a few nodes in case they get blown away in + dispatchEvent calls. + + Test: editing/selection/select-start-remove-root-crash.html + + * editing/FrameSelection.cpp: + (WebCore::FrameSelection::selectAll): + * editing/ReplaceSelectionCommand.cpp: + (WebCore::ReplacementFragment::ReplacementFragment): + +2011-08-13 Abhishek Arya <inferno@chromium.org> + + Crash in HTMLTreeBuilder::processAnyOtherEndTagForInBody + https://bugs.webkit.org/show_bug.cgi?id=66187 + + Reviewed by Adam Barth. + + RefPtr a few ContainerNodes to prevent premature deletion. + + Test: fast/html/process-end-tag-for-inbody-crash.html + + * html/parser/HTMLTreeBuilder.cpp: + (WebCore::HTMLTreeBuilder::processCloseWhenNestedTag): + (WebCore::HTMLTreeBuilder::processAnyOtherEndTagForInBody): + (WebCore::HTMLTreeBuilder::callTheAdoptionAgency): + +2011-08-10 Abhishek Arya <inferno@chromium.org> + + Check that we do not need layout before trying to dirty + m_originatingLine for our floats. + https://bugs.webkit.org/show_bug.cgi?id=65938 + + Reviewed by Dave Hyatt. + + Test: fast/block/float/float-originating-line-deleted-crash.html + + * rendering/RenderBlock.cpp: + (WebCore::RenderBlock::removeFloatingObject): + (WebCore::RenderBlock::clearFloats): + +2011-08-11 Alexis Menard <alexis.menard@openbossa.org> + + Unreviewed build fix for Qt. + + Make sure we build when Qt is namespaced. + + * platform/graphics/gstreamer/PlatformVideoWindowPrivate.h: + +2011-08-06 Aron Rosenberg <arosenberg@logitech.com> + + Reviewed by Benjamin Poulain. + + [Qt] Fix build with Intel compiler on Windows + https://bugs.webkit.org/show_bug.cgi?id=65088 + + Intel compiler needs .lib suffixes instead of .a + + * WebCore.pri: + +2011-08-03 Kent Tamura <tkent@chromium.org> + + Fix incorrect checks for HTMLMediaElement + https://bugs.webkit.org/show_bug.cgi?id=65590 + + Reviewed by Dimitri Glazkov. + + <video> and <audio> can be an HTMLElement instance instead of + HTMLMediaElement if MediaPlayer::isAvailable() returns false or + the media feature is disabled at runtime. + + * html/HTMLSourceElement.cpp: + (WebCore::HTMLSourceElement::insertedIntoTree): + (WebCore::HTMLSourceElement::willRemove): + * html/HTMLTrackElement.cpp: + (WebCore::HTMLTrackElement::insertedIntoTree): + (WebCore::HTMLTrackElement::willRemove): + * html/shadow/MediaControlElements.cpp: + (WebCore::toParentMediaElement): + * page/FrameView.cpp: + (WebCore::FrameView::updateWidget): + * platform/efl/RenderThemeEfl.cpp: + (WebCore::RenderThemeEfl::paintMediaMuteButton): + * platform/gtk/RenderThemeGtk.cpp: + (WebCore::getMediaElementFromRenderObject): + * rendering/RenderThemeMac.mm: + (WebCore::RenderThemeMac::paintMediaSliderTrack): + * rendering/RenderThemeWinCE.cpp: + (WebCore::mediaElementParent): + +2011-07-28 Abhishek Arya <inferno@chromium.org> + + Regression(82144): Crash in TrailingObjects::updateMidpointsForTrailingBoxes + https://bugs.webkit.org/show_bug.cgi?id=65137 + + Fix the looping condition to prevent trailingSpaceMidpoint from becoming negative. + + Reviewed by Dave Hyatt. + + Test: fast/block/update-midpoints-for-trailing-boxes-crash.html + + * rendering/RenderBlockLineLayout.cpp: + (WebCore::TrailingObjects::updateMidpointsForTrailingBoxes): + +2011-08-01 Jochen Eisinger <jochen@chromium.org> + + Never override the policy URL on form submissions. + https://bugs.webkit.org/show_bug.cgi?id=61809 + + Reviewed by Adam Barth. + + Tests: http/tests/security/cookies/third-party-cookie-blocking-main-frame.html + http/tests/security/cookies/third-party-cookie-blocking-user-action.html + http/tests/security/cookies/third-party-cookie-blocking.html + + * loader/FrameLoader.cpp: + (WebCore::FrameLoader::loadURL): + (WebCore::FrameLoader::addExtraFieldsToSubresourceRequest): + (WebCore::FrameLoader::addExtraFieldsToMainResourceRequest): + (WebCore::FrameLoader::addExtraFieldsToRequest): + (WebCore::FrameLoader::loadPostRequest): + (WebCore::FrameLoader::loadDifferentDocumentItem): + * loader/FrameLoader.h: + + +2011-07-27 Alexis Menard <alexis.menard@openbossa.org> + + [Qt] Unreviewed build fix for mac. + + QtKit is now our default media player, the define is WTF_USE_QTKIT and it's not part + of the options passed to build-webkit, therefore DerivedSources should now generate the + includes when it's mac. + + * DerivedSources.pro: + * WebCore.pro: + +2011-07-07 Julien Chaffraix <jchaffraix@webkit.org> + + Reviewed by David Hyatt. + + Partial layout when a flex-box has visibility: collapse + https://bugs.webkit.org/show_bug.cgi?id=63776 + + Tests: fast/flexbox/crash-button-input-autofocus.html + fast/flexbox/crash-button-keygen.html + fast/flexbox/crash-button-relayout.html + + The issue is that FlexBoxIterator would skip any child if it has visibility: collapsed. + However if one of the child is anonymous, it may wrap some other child that would be skipped. + Now FlexBoxIterator is called during the layout phase and thus some nodes would not relayouted + as expected. + + * rendering/RenderDeprecatedFlexibleBox.cpp: + (WebCore::FlexBoxIterator::next): When iterating, don't skip anonymous content as there may + be real content hiding below. + +2011-06-30 Julien Chaffraix <jchaffraix@webkit.org> + + Reviewed by Nikolas Zimmermann. + + Update SVG position values on SVG DOM updates + https://bugs.webkit.org/show_bug.cgi?id=62439 + + Test: svg/custom/crash-textPath-attributes.html + + * rendering/svg/RenderSVGInline.cpp: + (WebCore::RenderSVGInline::destroy): Notify our containing RenderSVGText that it needs + to update its positioning information. + + * rendering/svg/SVGInlineFlowBox.cpp: + (WebCore::SVGInlineFlowBox::calculateBoundaries): Check the type of the InlineBox + like the rest of the code (fixes an ASSERT_NOT_REACHED in InlineBox::calculateBoudaries). + + * rendering/svg/SVGTextLayoutAttributesBuilder.cpp: + (WebCore::SVGTextLayoutAttributesBuilder::buildLayoutAttributesForTextSubtree): Clear + our cached layout attributes every time we invalidate them. This avoids keeping stale + attribute that have a backpointer to a RenderObject. + +2011-07-13 John Knottenbelt <jknotten@chromium.org> + + Reference Geolocation object from GeoNotifier and Geolocation::setIsAllowed. + https://bugs.webkit.org/show_bug.cgi?id=64363 + + Reviewed by Tony Gentilcore. + + Test: fast/dom/Geolocation/remove-remote-context-in-error-callback-crash.html + + * page/Geolocation.cpp: + (WebCore::Geolocation::setIsAllowed): + * page/Geolocation.h: + +2011-06-26 Adam Barth <abarth@webkit.org> + + Reviewed by Kent Tamura. + + m_formElementsWithFormAttribute doesn't ref the objects it holds + https://bugs.webkit.org/show_bug.cgi?id=62956 + + Test: fast/forms/form-associated-element-crash3.html + + * dom/Document.h: + +2011-05-26 David Levin <levin@chromium.org> + + Reviewed by Dmitry Titov. + + WebKit's font notification has problems when the WebKit main thread != UI thread. + https://bugs.webkit.org/show_bug.cgi?id=61391 + + This doesn't happen in DumpRenderTree, so it needs a unit test which is taking me + some time to write correctly. In the meantime, this issues happens to be causing + some crashes in Chrome so here's the fix alone for the time being. + + * platform/graphics/mac/FontCacheMac.mm: + (WebCore::invalidateFontCache): Ensure that FontCache::invalidate is only called on WebKit's main thread. + (WebCore::fontCacheRegisteredFontsChangedNotificationCallback): Call common function for font cache invalidation. + Note that the call to fontCache() is fine since the singleton is initialized well before calling this function. Theoretically, + there could be a problem due to a lack of a memory barrier but that is highly unlikely and this is debug only code. + (WebCore::fontCacheATSNotificationCallback): Ditto. + +2011-07-07 Gavin Peters <gavinp@chromium.org> + + Reviewed by Alexey Proskuryakov. + + fast/dom/HTMLLinkElement/link-and-subresource-test.html is flaky on chromium debug bots + https://bugs.webkit.org/show_bug.cgi?id=60097 + + The culprit was that CachedResource:stopLoading() was using *this + after a call to checkNotify(), which isn't kosher. This patch + uses a CachedResourceHandle to keep the CachedResource alive. + + The test is a very close copy of the eponymous + link-and-subresource-test.html, only substituting invalid + resources for the valid ones in that test. The reproduction is + timing related, and happens much more consistantly with an invalid + resource for whatever reason. + Test: fast/dom/HTMLLinkElement/link-and-subresource-test-nonexistent.html + + * loader/cache/CachedResource.cpp: + (WebCore::CachedResource::stopLoading): + +2011-06-08 Mikołaj Małecki <m.malecki@samsung.com> + + Reviewed by Pavel Feldman. + + Web Inspector: Crash by buffer overrun crash when serializing inspector object tree. + https://bugs.webkit.org/show_bug.cgi?id=52791 + + No new tests. The problem can be reproduced by trying to create InspectorValue + from 1.0e-100 and call ->toJSONString() on this. + + * inspector/InspectorValues.cpp: + (WebCore::InspectorBasicValue::writeJSON): + Added checking the predicted buffer size and choosing exponential format, or + eventually "NaN" if the buffer is too small for decimal format. + +2011-07-26 Alexis Menard <alexis.menard@openbossa.org> + + [Qt] Disable video support on linux if the dependencies are not found. + + If we can't find the necessary dependencies to build the GStreamer media player + we disable the video support. This is related to http://trac.webkit.org/changeset/91752. + + Reviewed by Holger Freyther. + + No new tests, it's a build fix. + + * features.pri: + +2011-07-26 Alexis Menard <alexis.menard@openbossa.org> + + Reviewed by Andreas Kling. + + [Qt] Change default backend to use GStreamer on Linux and QuickTime on Mac. + https://bugs.webkit.org/show_bug.cgi?id=63472 + + Enable the GStreamer backend and the QuickTime backend as default media players + for the Qt port on Mac and Linux. QtMultimedia is now a fallback option that you + can enable by passing DEFINES+=USE_QT_MULTIMEDIA=1 to enforce its usage. + + No new tests. The media layout tests are disabled on the Qt port but hopefully with this + switch we can enable them again. + + * WebCore.pri: + * WebCore.pro: + * features.pri: + +2011-06-23 Alexis Menard <alexis.menard@openbossa.org> + + Reviewed by Eric Carlson. + + [Qt] Implement fullscreen support on Mac with the QuickTime backend. + https://bugs.webkit.org/show_bug.cgi?id=61728 + + Implement fullscreen support for Qt when using the QuickTime backend. + We mostly use what is already done for the Mac port. + + * DerivedSources.pro: We use the mac files and they have <WebCore/x> type + of includes. We need to generate those headers. + * WebCore.pro: + * platform/mac/WebVideoFullscreenController.h: + * platform/mac/WebVideoFullscreenController.mm: + * platform/mac/WebVideoFullscreenHUDWindowController.h: + * platform/mac/WebVideoFullscreenHUDWindowController.mm: + * platform/qt/WebCoreSystemInterface.h: + * platform/qt/WebCoreSystemInterface.mm: + +2011-06-21 Alexey Proskuryakov <ap@apple.com> + + Fix Mac build in some configurations. + + * platform/mac/WebCoreSystemInterface.h: Added an enum matching WKSI one, since we cannot use + WKSI in WebCore. + + * platform/mac/WebVideoFullscreenHUDWindowController.mm: Removed an include of WebKitSystemInterface.h. + It's not meant to be used from WebCore, and if included, a wrong copy may be used. + (createControlWithMediaUIControlType): Added a FIXME about problems with Leopard build. + (-[WebVideoFullscreenHUDWindowController windowDidLoad]): Ditto. Switched enum values to + WCSI style (lower level "wk"). + +2011-06-20 Jer Noble <jer.noble@apple.com> + + Unreviewed build fix; Fix Leopard WebCore build. + + * platform/mac/WebVideoFullscreenHUDWindowController.mm: On Leopard, NSWindowDelegate + is a category, not a protocol. + +2011-06-20 Jer Noble <jer.noble@apple.com> + + Unreviewed build fix; Fix 32-bit build. + + Code recently moved from WebKit -> WebCore does not pass WebCore's more strict compiler warnings. Use + CGFloat, and float constants wherever possible, and use narrowPrecisionToFloat() where not. + + * WebCore.xcodeproj/project.pbxproj: Add '-Wno-undef' flag for WebVideoFullScreenController.mm + * platform/mac/WebVideoFullscreenController.mm: + (constrainFrameToRatioOfFrame): Use CGFloat instead of Double. + (-[WebVideoFullscreenWindow animateFromRect:toRect:withSubAnimation:controllerAction:]): Use float constant. + * platform/mac/WebVideoFullscreenHUDWindowController.mm: + (-[WebVideoFullscreenHUDWindowController updateVolume]): Use float for volume. + (-[WebVideoFullscreenHUDWindowController maxVolume]): Ditto. + (-[WebVideoFullscreenHUDWindowController volumeChanged:]): Ditto. + (-[WebVideoFullscreenHUDWindowController decrementVolume]): Ditto. + (-[WebVideoFullscreenHUDWindowController incrementVolume]): Ditto. + (-[WebVideoFullscreenHUDWindowController volume]): Ditto. + (-[WebVideoFullscreenHUDWindowController setVolume:]): Ditto. + (timeToString): Narrow precision to float when converting to seconds. + * platform/mac/WebWindowAnimation.mm: + (scaledRect): Use CGFloat. + (-[WebWindowScaleAnimation init]): Use float constant. + (-[WebWindowScaleAnimation currentValue]): Ditto. + (-[WebWindowScaleAnimation additionalDurationNeededToReachFinalFrame]): Ditto. + (-[WebWindowFadeAnimation currentAlpha]): Ditto. + +2011-06-01 Jer Noble <jer.noble@apple.com> + + Reviewed by Eric Carlson. + + Move Full Screen Controllers into WebCore. + + Remove dependency on QTKit from wekitExitFullscreen() + https://bugs.webkit.org/show_bug.cgi?id=61843 + + No new tests; the existing media full screen tests are sufficient. + + * WebCore.exp.in: Add new exports. + * WebCore.xcodeproj/project.pbxproj: Add references to moved files. + * platform/mac/WebCoreSystemInterface.h: Add new WCSI interfaces to WKSI functions. + * platform/mac/WebCoreSystemInterface.mm: + * platform/mac/WebVideoFullscreenController.h: Renamed from Source/WebKit/mac/WebView/WebVideoFullscreenController.h. + * platform/mac/WebVideoFullscreenController.mm: Renamed from Source/WebKit/mac/WebView/WebVideoFullscreenController.mm. + + The following functions have had UNUSED_PARAM added: + (-[WebVideoFullscreenController applicationDidResignActive:]): + (-[WebVideoFullscreenController applicationDidChangeScreenParameters:]): + (-[WebVideoFullscreenWindow mouseMoved:]): + +Source/WebKit/mac/WebView/WebVideoFullscreenHUDWindowController.h. + * platform/mac/WebVideoFullscreenHUDWindowController.mm: Renamed from Source/WebKit/mac/WebView/WebVideoFullscreenHUDWindowController.mm. + + The following functions have had UNUSED_PARAM added: + (-[WebVideoFullscreenHUDWindow cancelOperation:]): + (-[WebVideoFullscreenHUDWindowController timelinePositionChanged:]): + (-[WebVideoFullscreenHUDWindowController setVolumeToZero:]): + (-[WebVideoFullscreenHUDWindowController setVolumeToMaximum:]): + (-[WebVideoFullscreenHUDWindowController togglePlaying:]): + (-[WebVideoFullscreenHUDWindowController mouseEntered:]): + (-[WebVideoFullscreenHUDWindowController mouseExited:]): + (-[WebVideoFullscreenHUDWindowController rewind:]): + (-[WebVideoFullscreenHUDWindowController fastForward:]): + (-[WebVideoFullscreenHUDWindowController windowDidExpose:]): + (-[WebVideoFullscreenHUDWindowController windowDidClose:]): + + The following functions have had WKSI calls converted to WCSI ones: + (createControlWithMediaUIControlType): + (createTimeTextField): + + * platform/mac/WebWindowAnimation.h: Renamed from Source/WebKit/mac/WebView/WebWindowAnimation.h. + * platform/mac/WebWindowAnimation.mm: Renamed from Source/WebKit/mac/WebView/WebWindowAnimation.m. + (WebWindowAnimationDurationFromDuration): + + The following functions have had WKSI calls converted to WCSI ones: + (-[WebWindowScaleAnimation setCurrentProgress:]): + (-[WebWindowFadeAnimation initWithDuration:window:initialAlpha:finalAlpha:]): + +2011-07-27 Ryosuke Niwa <rniwa@webkit.org> + + Calling window.find immediately after mutating the document crashes WebKit. + https://bugs.webkit.org/show_bug.cgi?id=65296 + + Reviewed by Darin Adler. + + Don't forget to layout first. + + Test: editing/text-iterator/find-after-mutation.html + + * editing/TextIterator.cpp: + (WebCore::findPlainText): + +2011-07-27 MORITA Hajime <morrita@google.com> + + Inconsistent state of TreeScope reference. + https://bugs.webkit.org/show_bug.cgi?id=65235 + + The tree scope pointers on shadow tree nodes didn't cleared. + even when the tree scope (shadow root) is destroyed. + This change clear these poitners before detaching the shadow root. + + Reviewed by Dimitri Glazkov. + + Test: fast/dom/shadow/tree-scope-crash.html + + * dom/Element.cpp: + (WebCore::Element::removeShadowRoot): + +2011-05-22 Dominic Cooney <dominicc@chromium.org> + + Reviewed by Dimitri Glazkov. + + When removing a shadow root, also remove it from the render tree. + https://bugs.webkit.org/show_bug.cgi?id=61245 + + Test: existing fast/dom/shadow/layout-tests-can-access-shadow.html + + * dom/Element.cpp: + (WebCore::Element::removeShadowRoot): Call detach if attached. + +2011-07-22 Sergey Glazunov <serg.glazunov@gmail.com> + + Perform the JavaScript navigation check on a complete URL + https://bugs.webkit.org/show_bug.cgi?id=65038 + + Reviewed by Adam Barth. + + Test: http/tests/security/xss-DENIED-document-baseURI-javascript.html + + * page/DOMWindow.cpp: + (WebCore::DOMWindow::setLocation): + (WebCore::DOMWindow::createWindow): + (WebCore::DOMWindow::open): + +2011-07-22 David Grogan <dgrogan@chromium.org> + + Fix crash in IDBRequest::abort + https://bugs.webkit.org/show_bug.cgi?id=64740 + + Reviewed by Nate Chapin. + + Tested manually with the testcase in the bug. + + * storage/IDBRequest.cpp: + (WebCore::IDBRequest::~IDBRequest): + (WebCore::IDBRequest::abort): + +2011-07-25 Daniel Bates <dbates@rim.com> + + REGRESSION (r85964): Improper relayout of some nested positioned elements + https://bugs.webkit.org/show_bug.cgi?id=64286 + + Reviewed by David Hyatt. + + Fixes an issue when traversing up the containing block hierarchy after skipping + relatively positioned inlines. + + When processing a positioned element we skip any intermediate inlines to get to + to enclosing block B, but don't use the containing block for B (call this P_B) to + properly continue traversing up the containing block hierarchy. So, B may be + considered again instead of looking at P_B. Hence, we don't set the correct dirty + bits for P_B and may not schedule a relayout with respect to the correct layout node. + + Test: fast/block/positioning/relayout-nested-positioned-elements-crash.html + + * rendering/RenderObject.h: + (WebCore::RenderObject::markContainingBlocksForLayout): + +2011-07-26 David Hyatt <hyatt@apple.com> + + https://bugs.webkit.org/show_bug.cgi?id=60778 + + Use after free because of line box culling optimization regression. + + In the case of a child with no line box being removed (typically + a <br> in quirks mode), if there is no previous sibling with a line + box, then we have a potential problem with the culling optimization. + + The culled inline may still have other leaf line box children, but + they may follow the removed <br>. In this case we can't rely on + them, since we need a line box that comes before the <br>. + + The fix is to simply recur up to the parent if we are a culled inline + and could not find a previous line box. + + Reviewed by Dan Bernstein. + + Added editing/execCommand/crash-line-break-after-outdent.html + + * rendering/RenderLineBoxList.cpp: + (WebCore::RenderLineBoxList::dirtyLinesFromChangedChild): + +2011-07-19 Abhishek Arya <inferno@chromium.org> + + Crash when removing unrenderered nodes in replacement fragment. + https://bugs.webkit.org/show_bug.cgi?id=64801 + + Reviewed by Ryosuke Niwa. + + Test: editing/pasteboard/replacement-fragment-remove-unrendered-node-crash.html + + * editing/ReplaceSelectionCommand.cpp: + (WebCore::ReplacementFragment::removeUnrenderedNodes): + +2011-07-21 Gavin Peters <gavinp@chromium.org> + + Extend the protector of a CSS style sheet. Because checkLoaded() can recursively delete + parent style elements, the protector should be extended to include the parent call. + + https://bugs.webkit.org/show_bug.cgi?id=64736 + + Reviewed by Simon Fraser. + + Test: fast/css/css-imports-2.html + + * css/CSSStyleSheet.cpp: + (WebCore::CSSStyleSheet::checkLoaded): + +2011-07-20 Tony Chang <tony@chromium.org> + + Stale pointer due to floats not removed (flexible box display) + https://bugs.webkit.org/show_bug.cgi?id=64603 + + Reviewed by David Hyatt. + + Flexbox items should avoid floats. + + Test: fast/flexbox/horizontal-box-float-crash.html + + * rendering/RenderBox.cpp: + (WebCore::RenderBox::avoidsFloats): + * rendering/RenderBox.h: + (WebCore::RenderBox::isDeprecatedFlexItem): + +2011-07-12 Hui Huang <Hui.2.Huang@nokia.com> + + Reviewed by Laszlo Gombos. + + [Qt] Fix compiling errors with QtWebkit 2.2 WINSCW build. + https://bugs.webkit.org/show_bug.cgi?id=64391 + + (QtWebKit-2.2 only, patch not in webkit trunk) + + * bindings/generic/ActiveDOMCallback.cpp: + * css/CSSStyleSelector.h: + * page/PrintContext.cpp: + * page/PrintContext.h: + * platform/network/HTTPHeaderMap.cpp: + * xml/XPathFunctions.cpp: + * xml/XPathPredicate.cpp: + * xml/XPathResult.cpp: + +2011-07-16 Sergey Glazunov <serg.glazunov@gmail.com> + + DOMWindow::open performs a security check on a wrong window + https://bugs.webkit.org/show_bug.cgi?id=64651 + + Reviewed by Adam Barth. + + Test: http/tests/security/xss-DENIED-window-open-parent.html + + * page/DOMWindow.cpp: + (WebCore::DOMWindow::open): + +2011-07-14 Adam Barth <abarth@webkit.org> + + The beforeload event allows tracking URI changes in a frame + https://bugs.webkit.org/show_bug.cgi?id=64482 + + Reviewed by Nate Chapin. + + Tests: http/tests/security/beforeload-iframe-client-redirect.html + http/tests/security/beforeload-iframe-server-redirect.html + + Only dispatch the beforeload event for a frame if we haven't yet + committed our first real load. The URL that we send to our parent will + be the same URL the parent seens in the src attribute. + + * loader/FrameLoader.cpp: + (WebCore::FrameLoader::loadWithDocumentLoader): + +2011-07-14 Tim Horton <timothy_horton@apple.com> + + Clear SVGElementInstance's children immediately upon detachment + https://bugs.webkit.org/show_bug.cgi?id=63739 + <rdar://problem/9705708> + + Reviewed by Nikolas Zimmermann. + + In addition to clearing the instance's children in the destructor, + clear them when the instance is detached from its <use>. This way, + we won't attempt to use them after we're detached but before the + destructor has been called. + + Test: svg/custom/use-crash-using-children-before-destroy.svg + + * svg/SVGElementInstance.cpp: + (WebCore::SVGElementInstance::~SVGElementInstance): + (WebCore::SVGElementInstance::clearChildren): + * svg/SVGElementInstance.h: + * svg/SVGUseElement.cpp: + (WebCore::SVGUseElement::detachInstance): + +2011-06-20 Andras Becsi <abecsi@webkit.org> + + Reviewed by Csaba Osztrogonác. + + make-hash-tools.pl: Perl 5.14 compatibility + https://bugs.webkit.org/show_bug.cgi?id=61890 + + No new tests needed. + + * make-hash-tools.pl: Use if/elsif instead of switch/case. + +2011-07-13 Abhishek Arya <inferno@chromium.org> + + Reviewed by Adam Barth. + + Issue with Frame lifetime due to deletion in beforeload event. + https://bugs.webkit.org/show_bug.cgi?id=64457 + + Copy the Frame protector higher in the stack from loadWithDocumentLoader + to loadFrameRequest since any of loadPostRequest or loadURL can call + loadWithDocumentLoader, thereby dispatching the beforeload event and + blowing away the frame. This deleted frame will be later accessed in + the loadFrameRequest function causing a crash. + + Test: fast/events/form-iframe-target-before-load-crash2.html + + * loader/FrameLoader.cpp: + (WebCore::FrameLoader::loadFrameRequest): + (WebCore::FrameLoader::loadWithDocumentLoader): + +2011-06-03 Yael Aharon <yael.aharon@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + Frame flattening is broken with nested frames + https://bugs.webkit.org/show_bug.cgi?id=61491 + + Do not flatten offscreen iframes during frame flattening, as flattening might make them visible. + + Test: fast/frames/flattening/iframe-flattening-out-of-view.html + fast/frames/flattening/iframe-flattening-out-of-view-and-scroll.html + fast/frames/flattening/iframe-flattening-out-of-view-scroll-and-relayout.html + + * rendering/RenderIFrame.cpp: + (WebCore::RenderIFrame::flattenFrame): + +2011-06-23 Robert Hogan <robert@webkit.org> + + Reviewed by Simon Hausmann. + + [Qt] Windowless Plugins : <input> cursor blinks even after transferring focus to plugin + https://bugs.webkit.org/show_bug.cgi?id=30355 + + Test: plugins/mouse-click-plugin-clears-selection.html + + PluginView needs to use page->focusController()->setFocusedNode() when focusing a plugin + in order to clear the FrameSelection in the currently focused node. In its platform-specific + code Chromium already does this (WebPluginContainerImpl.cpp). + + * WebCore.exp.in: Add symbol for FocusController::setFocusedNode + * plugins/PluginView.cpp: + (WebCore::PluginView::focusPluginElement): Using FocusController::setFocusedNode() makes + the call to FocusController:setFocusedFrame() and Document::setFocusedNode() + redundant, since it calls both. + +2011-06-30 Julien Chaffraix <jchaffraix@webkit.org> + + Reviewed by Nikolas Zimmermann. + + Assertion failure in RenderSVGInlineText::characterStartsNewTextChunk + https://bugs.webkit.org/show_bug.cgi?id=63076 + + Tests: svg/custom/crash-text-in-textpath.svg + svg/custom/text-node-in-text-invalidated.svg + + The problem was that we did not call setNeedsPositionUpdate on RenderSVGText. When + doing our layout, we would not update the attributes on our SVGRenderInlineText as + we would not lay it out. + + This was caused by childrenChanged being overridden on SVGTextPositioningElement but + not on SVGTextPathElement. + + As both classes shared the same mother class, it made sense to move the logic here. + There should be no other side effects as SVGTextPathElement and SVGTextPositioningElement + are the only classes deriving from SVGTextContentElement. + + * svg/SVGTextContentElement.cpp: + (WebCore::SVGTextContentElement::childrenChanged): Moved this method from SVGTextPositioningElement. + * svg/SVGTextContentElement.h: + * svg/SVGTextPositioningElement.cpp: + (WebCore::SVGTextPositioningElement::svgAttributeChanged): Updated after updatePositioningValuesInRenderer + removal, replaced by RenderSVGText::locateRenderSVGTextAncestor. + * svg/SVGTextPositioningElement.h: + +2011-06-30 Abhishek Arya <inferno@chromium.org> + + Reviewed by Ryosuke Niwa. + + Crash when calling DOMSubtreeModified event when extracting range + contents. + https://bugs.webkit.org/show_bug.cgi?id=63650 + + Convert a few nodes to RefPtrs and add commonRoot verification checks + for Range::processContents. + + Tests: fast/dom/Range/range-extract-contents-event-fire-crash.html + fast/dom/Range/range-extract-contents-event-fire-crash2.html + + * dom/Range.cpp: + (WebCore::childOfCommonRootBeforeOffset): + (WebCore::Range::processContents): + (WebCore::Range::processContentsBetweenOffsets): + (WebCore::Range::processAncestorsAndTheirSiblings): + +2011-06-23 Abhishek Arya <inferno@chromium.org> + + Reviewed by James Robinson. + + In RenderBlock, RenderWidget and RenderReplaced destroy functions, + call dirtyLinesFromChangedChild to tell our parent that we are going away. + https://bugs.webkit.org/show_bug.cgi?id=60307 + + Test: fast/block/child-not-removed-from-parent-lineboxes-crash.html + fast/block/block-not-removed-from-parent-lineboxes-crash.html + + * rendering/RenderBlock.cpp: + (WebCore::RenderBlock::destroy): + * rendering/RenderReplaced.cpp: + (WebCore::RenderReplaced::destroy): + * rendering/RenderReplaced.h: + * rendering/RenderWidget.cpp: + (WebCore::RenderWidget::destroy): + +2011-05-05 David Hyatt <hyatt@apple.com> + + Reviewed by Darin Adler. + + <rdar://problem/9354979> REGRESSION (r83070-r83126): Conversation takes 10 seconds to load and makes mail unresponsive + + Culled inlines were triggering some pathological line box tree groveling that isn't even necessary. + Removed the ancient code (that used to be in RenderFlow), since it made no sense in the RenderBlock case + (it was running for inline blocks, which was definitely not even the intent) or in the RenderInline case + (the object being removed has no effect on any lines). + + Also tweaked culledInlineFirstLineBox and culledInlineLastLineBox to avoid bailing if the first replaced object that + is encountered has a null inlineBoxWrapper(). Just a slight speed optimization to avoid an extra null check. + + * rendering/RenderBlock.cpp: + (WebCore::RenderBlock::destroy): + * rendering/RenderInline.cpp: + (WebCore::RenderInline::destroy): + (WebCore::RenderInline::culledInlineFirstLineBox): + (WebCore::RenderInline::culledInlineLastLineBox): + 2011-06-28 Roland Steiner <rolandsteiner@chromium.org> Reviewed by Eric Seidel. @@ -242,17 +1286,6 @@ * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::detachFromFrame): Rollout the fix for bug 62764. -2011-06-24 Alexis Menard <alexis.menard@openbossa.org> - - Unreviewed build fix. - - Build fix on Linux when using the GStreamer backend. - - No new tests, just a build fix. - - * platform/graphics/gstreamer/PlatformVideoWindowQt.cpp: - (FullScreenVideoWindow::keyPressEvent): - 2011-06-23 Abhishek Arya <inferno@chromium.org> Reviewed by Adam Barth. diff --git a/src/3rdparty/webkit/Source/WebCore/CodeGenerators.pri b/src/3rdparty/webkit/Source/WebCore/CodeGenerators.pri index cc29660..db6f7af 100644 --- a/src/3rdparty/webkit/Source/WebCore/CodeGenerators.pri +++ b/src/3rdparty/webkit/Source/WebCore/CodeGenerators.pri @@ -509,6 +509,7 @@ IDL_BINDINGS += \ svg/SVGUseElement.idl \ svg/SVGViewElement.idl \ svg/SVGVKernElement.idl \ + testing/Internals.idl \ webaudio/AudioBuffer.idl \ webaudio/AudioBufferSourceNode.idl \ webaudio/AudioChannelMerger.idl \ @@ -613,6 +614,7 @@ idl.commands = perl -I$$PWD/bindings/scripts $$idl.wkScript \ --include $$PWD/svg \ --include $$PWD/storage \ --include $$PWD/css \ + --include $$PWD/testing \ --include $$PWD/webaudio \ --include $$PWD/workers \ --outputDir $$WC_GENERATED_SOURCES_DIR \ diff --git a/src/3rdparty/webkit/Source/WebCore/WebCore.exp.in b/src/3rdparty/webkit/Source/WebCore/WebCore.exp.in index 83317a8..982a8ef 100644 --- a/src/3rdparty/webkit/Source/WebCore/WebCore.exp.in +++ b/src/3rdparty/webkit/Source/WebCore/WebCore.exp.in @@ -263,6 +263,7 @@ __ZN7WebCore12IconDatabase27checkIntegrityBeforeOpeningEv __ZN7WebCore12IconDatabase5closeEv __ZN7WebCore12IconDatabase9setClientEPNS_18IconDatabaseClientE __ZN7WebCore12IconDatabaseC1Ev +__ZN7WebCore12JSDOMWrapper34virtualFunctionToPreventWeakVtableEv __ZN7WebCore12PopupMenuMacC1EPNS_15PopupMenuClientE __ZN7WebCore12PrintContext12pagePropertyEPNS_5FrameEPKci __ZN7WebCore12PrintContext13numberOfPagesEPNS_5FrameERKNS_9FloatSizeE @@ -389,6 +390,7 @@ __ZN7WebCore15DatabaseTracker8setQuotaEPNS_14SecurityOriginEy __ZN7WebCore15DatabaseTracker9setClientEPNS_21DatabaseTrackerClientE __ZN7WebCore15FocusController10setFocusedEb __ZN7WebCore15FocusController15setFocusedFrameEN3WTF10PassRefPtrINS_5FrameEEE +__ZN7WebCore15FocusController14setFocusedNodeEPNS_4NodeEN3WTF10PassRefPtrINS_5FrameEEE __ZN7WebCore15FocusController15setInitialFocusENS_14FocusDirectionEPNS_13KeyboardEventE __ZN7WebCore15FocusController9setActiveEb __ZN7WebCore15GraphicsContext12setFillColorERKNS_5ColorENS_10ColorSpaceE @@ -1010,6 +1012,8 @@ __ZN7WebCore9makeRangeERKNS_15VisiblePositionES2_ __ZN7WebCore9pageCacheEv __ZN7WebCore9plainTextEPKNS_5RangeENS_20TextIteratorBehaviorE __ZN7WebCore9toElementEN3JSC7JSValueE +__ZN7WebCore17cacheDOMStructureEPNS_17JSDOMGlobalObjectEPN3JSC9StructureEPKNS2_9ClassInfoE +__ZN7WebCore21getCachedDOMStructureEPNS_17JSDOMGlobalObjectEPKN3JSC9ClassInfoE __ZNK3JSC8Bindings10RootObject12globalObjectEv __ZNK3WTF6String14createCFStringEv __ZNK7WebCore5Frame26getDocumentBackgroundColorEv @@ -1303,6 +1307,7 @@ __ZNK7WebCore9FrameView28isEnclosedInCompositingLayerEv __ZNK7WebCore9PageCache10frameCountEv __ZNK7WebCore9PageCache21autoreleasedPageCountEv __ZTVN7WebCore12ChromeClientE +__ZTVN7WebCore12JSDOMWrapperE __ZTVN7WebCore16IconDatabaseBaseE __ZTVN7WebCore17FileChooserClientE __ZTVN7WebCore17FrameLoaderClientE @@ -1325,6 +1330,8 @@ _wkCopyNSURLResponseStatusLine _wkCopyRequestWithStorageSession _wkCreateCTLineWithUniCharProvider _wkCreateCustomCFReadStream +_wkCreateMediaUIBackgroundView +_wkCreateMediaUIControl _wkCreateNSURLConnectionDelegateProxy _wkCreatePrivateStorageSession _wkCreateURLNPasteboardFlavorTypeName @@ -1394,6 +1401,8 @@ _wkSignalCFReadStreamEnd _wkSignalCFReadStreamError _wkSignalCFReadStreamHasBytes _wkSignedPublicKeyAndChallengeString +_wkWindowSetAlpha +_wkWindowSetScaledFrame #if ENABLE(DOM_STORAGE) __ZN7WebCore14StorageTracker17initializeTrackerERKN3WTF6StringE @@ -1631,8 +1640,6 @@ __ZN3JSC8Bindings8InstanceC2EN3WTF10PassRefPtrINS0_10RootObjectEEE __ZN3JSC8Bindings8InstanceD2Ev __ZN7WebCore13IdentifierRep7isValidEPS0_ __ZN7WebCore16ScriptController16createRootObjectEPv -__ZN7WebCore17cacheDOMStructureEPNS_17JSDOMGlobalObjectEPN3JSC9StructureEPKNS2_9ClassInfoE -__ZN7WebCore21getCachedDOMStructureEPNS_17JSDOMGlobalObjectEPKN3JSC9ClassInfoE __ZNK3JSC8Bindings13RuntimeObject12defaultValueEPNS_9ExecStateENS_22PreferredPrimitiveTypeE __ZTVN3JSC13RuntimeMethodE #endif @@ -1800,6 +1807,9 @@ __ZNK7WebCore16HTMLMediaElement6volumeEv __ZNK7WebCore16HTMLMediaElement7canPlayEv __ZNK7WebCore16HTMLMediaElement12playbackRateEv __ZNK7WebCore16HTMLMediaElement8durationEv +__ZN7WebCore16HTMLMediaElement16returnToRealtimeEv +__ZNK7WebCore16HTMLMediaElement12isFullscreenEv +.objc_class_name_WebVideoFullscreenController #endif #if ENABLE(PLUGIN_PROXY_FOR_VIDEO) diff --git a/src/3rdparty/webkit/Source/WebCore/WebCore.gypi b/src/3rdparty/webkit/Source/WebCore/WebCore.gypi index e418f7f..7383db1 100644 --- a/src/3rdparty/webkit/Source/WebCore/WebCore.gypi +++ b/src/3rdparty/webkit/Source/WebCore/WebCore.gypi @@ -6054,6 +6054,17 @@ 'xml/XSLTUnicodeSort.cpp', 'xml/XSLTUnicodeSort.h', ], + 'webcore_test_support_idl_files': [ + 'testing/Internals.idl', + ], + 'webcore_test_support_files': [ + 'testing/v8/WebCoreTestSupport.cpp', + 'testing/v8/WebCoreTestSupport.h', + 'testing/js/WebCoreTestSupport.cpp', + 'testing/js/WebCoreTestSupport.h', + 'testing/Internals.cpp', + 'testing/Internals.h', + ], 'webcore_resource_files': [ 'English.lproj/Localizable.strings', 'English.lproj/localizedStrings.js', diff --git a/src/3rdparty/webkit/Source/WebCore/WebCore.pri b/src/3rdparty/webkit/Source/WebCore/WebCore.pri index 4ba1117..82311d2 100644 --- a/src/3rdparty/webkit/Source/WebCore/WebCore.pri +++ b/src/3rdparty/webkit/Source/WebCore/WebCore.pri @@ -48,14 +48,16 @@ v8 { $$SOURCE_DIR/WebCore/bindings/v8 \ $$SOURCE_DIR/WebCore/bindings/v8/custom \ $$SOURCE_DIR/WebCore/bindings/v8/specialization \ - $$SOURCE_DIR/WebCore/bridge/qt/v8 + $$SOURCE_DIR/WebCore/bridge/qt/v8 \ + $$SOURCE_DIR/WebCore/testing/v8 } else { WEBCORE_INCLUDEPATH = \ $$SOURCE_DIR/WebCore/bridge/jsc \ $$SOURCE_DIR/WebCore/bindings/js \ $$SOURCE_DIR/WebCore/bindings/js/specialization \ - $$SOURCE_DIR/WebCore/bridge/c + $$SOURCE_DIR/WebCore/bridge/c \ + $$SOURCE_DIR/WebCore/testing/js } WEBCORE_INCLUDEPATH = \ @@ -110,6 +112,7 @@ WEBCORE_INCLUDEPATH = \ $$SOURCE_DIR/WebCore/svg/graphics \ $$SOURCE_DIR/WebCore/svg/graphics/filters \ $$SOURCE_DIR/WebCore/svg/properties \ + $$SOURCE_DIR/WebCore/testing \ $$SOURCE_DIR/WebCore/webaudio \ $$SOURCE_DIR/WebCore/websockets \ $$SOURCE_DIR/WebCore/wml \ @@ -242,26 +245,22 @@ contains(DEFINES, WTF_USE_QT_BEARER=1) { } contains(DEFINES, ENABLE_VIDEO=1) { - contains(DEFINES, USE_QTKIT=1) { - DEFINES += WTF_USE_QTKIT=1 - + contains(DEFINES, WTF_USE_QTKIT=1) { INCLUDEPATH += $$PWD/platform/graphics/mac LIBS += -framework AppKit -framework AudioUnit \ -framework AudioToolbox -framework CoreAudio \ -framework QuartzCore -framework QTKit - } else:contains(DEFINES, USE_GSTREAMER=1) { - DEFINES += WTF_USE_GSTREAMER=1 + } else:contains(DEFINES, WTF_USE_GSTREAMER=1) { DEFINES += ENABLE_GLIB_SUPPORT=1 INCLUDEPATH += $$PWD/platform/graphics/gstreamer PKGCONFIG += glib-2.0 gio-2.0 gstreamer-0.10 gstreamer-app-0.10 gstreamer-base-0.10 gstreamer-interfaces-0.10 gstreamer-pbutils-0.10 gstreamer-plugins-base-0.10 gstreamer-video-0.10 - } else:contains(MOBILITY_CONFIG, multimedia) { + } else:contains(DEFINES, WTF_USE_QT_MULTIMEDIA=1) { CONFIG *= mobility MOBILITY *= multimedia - DEFINES += WTF_USE_QT_MULTIMEDIA=1 } } @@ -343,7 +342,7 @@ use_qt_mobile_theme: DEFINES += WTF_USE_QT_MOBILE_THEME=1 defineTest(prependWebCoreLib) { pathToWebCoreOutput = $$ARGS/$$WEBCORE_DESTDIR - win32-msvc*|wince* { + win32-msvc*|wince*|win32-icc { LIBS = -l$$WEBCORE_TARGET $$LIBS LIBS = -L$$pathToWebCoreOutput $$LIBS POST_TARGETDEPS += $${pathToWebCoreOutput}$${QMAKE_DIR_SEP}$${WEBCORE_TARGET}.lib diff --git a/src/3rdparty/webkit/Source/WebCore/WebCore.pro b/src/3rdparty/webkit/Source/WebCore/WebCore.pro index 107ff35..a305549 100644 --- a/src/3rdparty/webkit/Source/WebCore/WebCore.pro +++ b/src/3rdparty/webkit/Source/WebCore/WebCore.pro @@ -222,7 +222,8 @@ v8 { bindings/v8/custom/V8NotificationCenterCustom.cpp \ bindings/v8/custom/V8ConsoleCustom.cpp \ bindings/v8/custom/V8SQLTransactionSyncCustom.cpp \ - bindings/v8/V8WorkerContextErrorHandler.cpp + bindings/v8/V8WorkerContextErrorHandler.cpp \ + testing/v8/WebCoreTestSupport.cpp } else { SOURCES += \ bindings/ScriptControllerBase.cpp \ @@ -374,7 +375,8 @@ v8 { bridge/runtime_array.cpp \ bridge/runtime_method.cpp \ bridge/runtime_object.cpp \ - bridge/runtime_root.cpp + bridge/runtime_root.cpp \ + testing/js/WebCoreTestSupport.cpp } SOURCES += \ @@ -1173,6 +1175,7 @@ SOURCES += \ rendering/style/StyleSurroundData.cpp \ rendering/style/StyleTransformData.cpp \ rendering/style/StyleVisualData.cpp \ + testing/Internals.cpp \ xml/DOMParser.cpp \ xml/XMLHttpRequest.cpp \ xml/XMLHttpRequestProgressEventThrottle.cpp \ @@ -2420,6 +2423,7 @@ HEADERS += \ svg/SVGVKernElement.h \ svg/SVGZoomAndPan.h \ svg/SVGZoomEvent.h \ + testing/Internals.h \ workers/AbstractWorker.h \ workers/DedicatedWorkerContext.h \ workers/DedicatedWorkerThread.h \ @@ -2934,31 +2938,43 @@ contains(DEFINES, ENABLE_VIDEO=1) { bindings/js/JSAudioConstructor.cpp } - contains(DEFINES, USE_QTKIT=1) { + contains(DEFINES, WTF_USE_QTKIT=1) { + INCLUDEPATH += \ + $$SOURCE_DIR/../WebKitLibraries/ + HEADERS += \ platform/graphics/mac/MediaPlayerPrivateQTKit.h \ platform/mac/WebCoreObjCExtras.h \ platform/qt/WebCoreSystemInterface.h \ platform/mac/BlockExceptions.h \ - platform/mac/WebCoreObjCExtras.h + platform/mac/WebCoreObjCExtras.h \ + platform/mac/WebVideoFullscreenController.h \ + platform/mac/WebVideoFullscreenHUDWindowController.h \ + platform/mac/WebWindowAnimation.h + SOURCES += \ + platform/graphics/cg/IntRectCG.cpp \ + platform/graphics/cg/FloatSizeCG.cpp \ + platform/cf/SharedBufferCF.cpp \ + platform/cf/KURLCFNet.cpp + + OBJECTIVE_SOURCES += \ + platform/qt/WebCoreSystemInterface.mm \ + platform/mac/BlockExceptions.mm \ + platform/mac/WebCoreObjCExtras.mm \ platform/graphics/mac/MediaPlayerPrivateQTKit.mm \ platform/mac/SharedBufferMac.mm \ platform/mac/KURLMac.mm \ platform/text/mac/StringMac.mm \ platform/graphics/mac/FloatSizeMac.mm \ platform/graphics/mac/IntRectMac.mm \ - platform/graphics/cg/IntRectCG.cpp \ - platform/graphics/cg/FloatSizeCG.cpp \ - platform/cf/SharedBufferCF.cpp \ - platform/cf/KURLCFNet.cpp \ - platform/qt/WebCoreSystemInterface.mm \ - platform/mac/BlockExceptions.mm \ - platform/mac/WebCoreObjCExtras.mm + platform/mac/WebVideoFullscreenController.mm \ + platform/mac/WebVideoFullscreenHUDWindowController.mm \ + platform/mac/WebWindowAnimation.mm DEFINES+=NSGEOMETRY_TYPES_SAME_AS_CGGEOMETRY_TYPES - } else: contains(DEFINES, USE_GSTREAMER=1) { + } else: contains(DEFINES, WTF_USE_GSTREAMER=1) { HEADERS += \ platform/graphics/gstreamer/GOwnPtrGStreamer.h \ platform/graphics/gstreamer/GRefPtrGStreamer.h \ @@ -2979,7 +2995,7 @@ contains(DEFINES, ENABLE_VIDEO=1) { platform/graphics/gstreamer/PlatformVideoWindowQt.cpp \ platform/graphics/gstreamer/ImageGStreamerQt.cpp - } else:contains(MOBILITY_CONFIG, multimedia) { + } else:contains(DEFINES, WTF_USE_QT_MULTIMEDIA=1) { HEADERS += \ platform/graphics/qt/MediaPlayerPrivateQt.h diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/generic/ActiveDOMCallback.cpp b/src/3rdparty/webkit/Source/WebCore/bindings/generic/ActiveDOMCallback.cpp index ff02a42..86bfc56 100644 --- a/src/3rdparty/webkit/Source/WebCore/bindings/generic/ActiveDOMCallback.cpp +++ b/src/3rdparty/webkit/Source/WebCore/bindings/generic/ActiveDOMCallback.cpp @@ -38,29 +38,6 @@ namespace WebCore { -static void destroyOnContextThread(PassOwnPtr<ActiveDOMObjectCallbackImpl>); - -class DestroyOnContextThreadTask : public ScriptExecutionContext::Task { -public: - static PassOwnPtr<DestroyOnContextThreadTask> create(PassOwnPtr<ActiveDOMObjectCallbackImpl> impl) - { - return adoptPtr(new DestroyOnContextThreadTask(impl)); - } - - virtual void performTask(ScriptExecutionContext*) - { - destroyOnContextThread(m_impl.release()); - } - -private: - DestroyOnContextThreadTask(PassOwnPtr<ActiveDOMObjectCallbackImpl> impl) - : m_impl(impl) - { - } - - OwnPtr<ActiveDOMObjectCallbackImpl> m_impl; -}; - class ActiveDOMObjectCallbackImpl : public ActiveDOMObject { public: ActiveDOMObjectCallbackImpl(ScriptExecutionContext* context) @@ -109,6 +86,29 @@ private: bool m_stopped; }; +static void destroyOnContextThread(PassOwnPtr<ActiveDOMObjectCallbackImpl>); + +class DestroyOnContextThreadTask : public ScriptExecutionContext::Task { +public: + static PassOwnPtr<DestroyOnContextThreadTask> create(PassOwnPtr<ActiveDOMObjectCallbackImpl> impl) + { + return adoptPtr(new DestroyOnContextThreadTask(impl)); + } + + virtual void performTask(ScriptExecutionContext*) + { + destroyOnContextThread(m_impl.release()); + } + +private: + DestroyOnContextThreadTask(PassOwnPtr<ActiveDOMObjectCallbackImpl> impl) + : m_impl(impl) + { + } + + OwnPtr<ActiveDOMObjectCallbackImpl> m_impl; +}; + static void destroyOnContextThread(PassOwnPtr<ActiveDOMObjectCallbackImpl> impl) { OwnPtr<ActiveDOMObjectCallbackImpl> implOwnPtr = impl; diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.cpp b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.cpp index 60c0ed1..d54fe74 100644 --- a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.cpp +++ b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.cpp @@ -32,12 +32,9 @@ using namespace JSC; namespace WebCore { -#ifndef NDEBUG - -JSDOMWrapper::~JSDOMWrapper() +void JSDOMWrapper::virtualFunctionToPreventWeakVtable() { + ASSERT_NOT_REACHED(); } -#endif - } // namespace WebCore diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.h b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.h index 2f5bebd..9a4aca5 100644 --- a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.h +++ b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSDOMWrapper.h @@ -48,6 +48,10 @@ public: } protected: + // An inline function cannot be the first non-abstract virtual function declared + // in the class as it results in the vtable being generated as a weak symbol. + virtual void virtualFunctionToPreventWeakVtable(); + explicit JSDOMWrapper(JSC::Structure* structure, JSC::JSGlobalObject* globalObject) : JSObjectWithGlobalObject(globalObject, structure) { @@ -56,10 +60,6 @@ protected: // needing to reach through the frame to get to the Document*. See bug 27640. // ASSERT(globalObject->scriptExecutionContext()); } - -#ifndef NDEBUG - virtual ~JSDOMWrapper(); -#endif }; } // namespace WebCore diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h index a9366ed..01c6ac2 100644 --- a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h +++ b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h @@ -1,43 +1,43 @@ -/* - * Copyright (C) 2009 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef JSExceptionBase_h -#define JSExceptionBase_h - -namespace JSC { - -class JSValue; - -} // namespace JSC - -namespace WebCore { - -class ExceptionBase; - -ExceptionBase* toExceptionBase(JSC::JSValue); - -} // namespace WebCore - -#endif // JSExceptionBase_h +/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef JSExceptionBase_h
+#define JSExceptionBase_h
+
+namespace JSC {
+
+class JSValue;
+
+} // namespace JSC
+
+namespace WebCore {
+
+class ExceptionBase;
+
+ExceptionBase* toExceptionBase(JSC::JSValue);
+
+} // namespace WebCore
+
+#endif // JSExceptionBase_h
diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSImageDataCustom.cpp b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSImageDataCustom.cpp index 420b60c..6e242b0 100644 --- a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSImageDataCustom.cpp +++ b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSImageDataCustom.cpp @@ -48,8 +48,10 @@ JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, ImageData* imageD wrapper = CREATE_DOM_WRAPPER(exec, globalObject, ImageData, imageData); Identifier dataName(exec, "data"); static const ClassInfo cpaClassInfo = { "CanvasPixelArray", &JSByteArray::Base::s_info, 0, 0 }; - DEFINE_STATIC_LOCAL(Strong<Structure>, cpaStructure, (exec->globalData(), JSByteArray::createStructure(exec->globalData(), jsNull(), &cpaClassInfo))); - wrapper->putDirect(exec->globalData(), dataName, new (exec) JSByteArray(exec, cpaStructure.get(), imageData->data()->data()), DontDelete | ReadOnly); + Structure* cpaStructure = getCachedDOMStructure(globalObject, &cpaClassInfo); + if (!cpaStructure) + cpaStructure = cacheDOMStructure(globalObject, JSByteArray::createStructure(exec->globalData(), jsNull(), &cpaClassInfo), &cpaClassInfo); + wrapper->putDirect(exec->globalData(), dataName, new (exec) JSByteArray(exec, cpaStructure, imageData->data()->data()), DontDelete | ReadOnly); exec->heap()->reportExtraMemoryCost(imageData->data()->length()); return wrapper; diff --git a/src/3rdparty/webkit/Source/WebCore/config.h b/src/3rdparty/webkit/Source/WebCore/config.h index 001753e..a7ddcee 100644 --- a/src/3rdparty/webkit/Source/WebCore/config.h +++ b/src/3rdparty/webkit/Source/WebCore/config.h @@ -197,6 +197,7 @@ #if OS(SYMBIAN) #define USE_SYSTEM_MALLOC 1 +#define ENABLE_PASSWORD_ECHO 1 #endif #if OS(UNIX) || OS(WINDOWS) diff --git a/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSelector.h b/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSelector.h index a9b0c3e..1fe4ea2 100644 --- a/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSelector.h +++ b/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSelector.h @@ -209,7 +209,7 @@ public: bool checkSelector(const RuleData&); - template <bool firstPass> + template <bool applyFirst> void applyDeclarations(bool important, int startIndex, int endIndex); void matchPageRules(RuleSet*, bool isLeftPage, bool isFirstPage, const String& pageName); diff --git a/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSheet.cpp b/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSheet.cpp index 16c2ba8..37e5c2a 100644 --- a/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSheet.cpp +++ b/src/3rdparty/webkit/Source/WebCore/css/CSSStyleSheet.cpp @@ -220,13 +220,13 @@ void CSSStyleSheet::checkLoaded() { if (isLoading()) return; - if (parent()) - parent()->checkLoaded(); // Avoid |this| being deleted by scripts that run via // ScriptableDocumentParser::executeScriptsWaitingForStylesheets(). // See <rdar://problem/6622300>. RefPtr<CSSStyleSheet> protector(this); + if (parent()) + parent()->checkLoaded(); m_loadCompleted = ownerNode() ? ownerNode()->sheetLoaded() : true; } diff --git a/src/3rdparty/webkit/Source/WebCore/dom/Document.h b/src/3rdparty/webkit/Source/WebCore/dom/Document.h index 6e2f5ec..0948592 100644 --- a/src/3rdparty/webkit/Source/WebCore/dom/Document.h +++ b/src/3rdparty/webkit/Source/WebCore/dom/Document.h @@ -1227,7 +1227,7 @@ private: typedef ListHashSet<Element*, 64> FormElementListHashSet; FormElementListHashSet m_formElementsWithState; - typedef ListHashSet<FormAssociatedElement*, 32> FormAssociatedElementListHashSet; + typedef ListHashSet<RefPtr<FormAssociatedElement>, 32> FormAssociatedElementListHashSet; FormAssociatedElementListHashSet m_formElementsWithFormAttribute; typedef HashMap<FormElementKey, Vector<String>, FormElementKeyHash, FormElementKeyHashTraits> FormElementStateMap; diff --git a/src/3rdparty/webkit/Source/WebCore/dom/Element.cpp b/src/3rdparty/webkit/Source/WebCore/dom/Element.cpp index e7bfbc0..32e47ca 100644 --- a/src/3rdparty/webkit/Source/WebCore/dom/Element.cpp +++ b/src/3rdparty/webkit/Source/WebCore/dom/Element.cpp @@ -1208,7 +1208,13 @@ void Element::removeShadowRoot() InspectorInstrumentation::willRemoveDOMNode(document(), this); data->m_shadowRoot = 0; document()->removeFocusedNodeOfSubtree(oldRoot.get()); + + // Remove from rendering tree + if (oldRoot->attached()) + oldRoot->detach(); + oldRoot->setShadowHost(0); + oldRoot->setTreeScopeRecursively(document()); if (oldRoot->inDocument()) oldRoot->removedFromDocument(); else diff --git a/src/3rdparty/webkit/Source/WebCore/dom/ProcessingInstruction.cpp b/src/3rdparty/webkit/Source/WebCore/dom/ProcessingInstruction.cpp index 30111d8..f7dcfd2 100644 --- a/src/3rdparty/webkit/Source/WebCore/dom/ProcessingInstruction.cpp +++ b/src/3rdparty/webkit/Source/WebCore/dom/ProcessingInstruction.cpp @@ -62,6 +62,9 @@ ProcessingInstruction::~ProcessingInstruction() if (m_cachedSheet) m_cachedSheet->removeClient(this); + + if (inDocument()) + document()->removeStyleSheetCandidateNode(this); } void ProcessingInstruction::setData(const String& data, ExceptionCode&) diff --git a/src/3rdparty/webkit/Source/WebCore/dom/Range.cpp b/src/3rdparty/webkit/Source/WebCore/dom/Range.cpp index be196c8..0c247c2 100644 --- a/src/3rdparty/webkit/Source/WebCore/dom/Range.cpp +++ b/src/3rdparty/webkit/Source/WebCore/dom/Range.cpp @@ -621,7 +621,9 @@ static inline Node* childOfCommonRootBeforeOffset(Node* container, unsigned offs { ASSERT(container); ASSERT(commonRoot); - ASSERT(commonRoot->contains(container)); + + if (!commonRoot->contains(container)) + return 0; if (container == commonRoot) { container = container->firstChild(); @@ -675,7 +677,7 @@ PassRefPtr<DocumentFragment> Range::processContents(ActionType action, Exception if (ec) return 0; - Node* commonRoot = commonAncestorContainer(ec); + RefPtr<Node> commonRoot = commonAncestorContainer(ec); if (ec) return 0; ASSERT(commonRoot); @@ -686,8 +688,8 @@ PassRefPtr<DocumentFragment> Range::processContents(ActionType action, Exception } // what is the highest node that partially selects the start / end of the range? - Node* partialStart = highestAncestorUnderCommonRoot(m_start.container(), commonRoot); - Node* partialEnd = highestAncestorUnderCommonRoot(m_end.container(), commonRoot); + RefPtr<Node> partialStart = highestAncestorUnderCommonRoot(m_start.container(), commonRoot.get()); + RefPtr<Node> partialEnd = highestAncestorUnderCommonRoot(m_end.container(), commonRoot.get()); // Start and end containers are different. // There are three possibilities here: @@ -706,29 +708,32 @@ PassRefPtr<DocumentFragment> Range::processContents(ActionType action, Exception // // These are deleted, cloned, or extracted (i.e. both) depending on action. + // Note that we are verifying that our common root hierarchy is still intact + // after any DOM mutation event, at various stages below. See webkit bug 60350. + RefPtr<Node> leftContents; - if (m_start.container() != commonRoot) { + if (m_start.container() != commonRoot && commonRoot->contains(m_start.container())) { leftContents = processContentsBetweenOffsets(action, 0, m_start.container(), m_start.offset(), lengthOfContentsInNode(m_start.container()), ec); - leftContents = processAncestorsAndTheirSiblings(action, m_start.container(), ProcessContentsForward, leftContents, commonRoot, ec); + leftContents = processAncestorsAndTheirSiblings(action, m_start.container(), ProcessContentsForward, leftContents, commonRoot.get(), ec); } RefPtr<Node> rightContents; - if (m_end.container() != commonRoot) { + if (m_end.container() != commonRoot && commonRoot->contains(m_end.container())) { rightContents = processContentsBetweenOffsets(action, 0, m_end.container(), 0, m_end.offset(), ec); - rightContents = processAncestorsAndTheirSiblings(action, m_end.container(), ProcessContentsBackward, rightContents, commonRoot, ec); + rightContents = processAncestorsAndTheirSiblings(action, m_end.container(), ProcessContentsBackward, rightContents, commonRoot.get(), ec); } // delete all children of commonRoot between the start and end container - Node* processStart = childOfCommonRootBeforeOffset(m_start.container(), m_start.offset(), commonRoot); - if (m_start.container() != commonRoot) // processStart contains nodes before m_start. + RefPtr<Node> processStart = childOfCommonRootBeforeOffset(m_start.container(), m_start.offset(), commonRoot.get()); + if (processStart && m_start.container() != commonRoot) // processStart contains nodes before m_start. processStart = processStart->nextSibling(); - Node* processEnd = childOfCommonRootBeforeOffset(m_end.container(), m_end.offset(), commonRoot); + RefPtr<Node> processEnd = childOfCommonRootBeforeOffset(m_end.container(), m_end.offset(), commonRoot.get()); // Collapse the range, making sure that the result is not within a node that was partially selected. if (action == EXTRACT_CONTENTS || action == DELETE_CONTENTS) { - if (partialStart) + if (partialStart && commonRoot->contains(partialStart.get())) setStart(partialStart->parentNode(), partialStart->nodeIndex() + 1, ec); - else if (partialEnd) + else if (partialEnd && commonRoot->contains(partialEnd.get())) setStart(partialEnd->parentNode(), partialEnd->nodeIndex(), ec); if (ec) return 0; @@ -743,7 +748,7 @@ PassRefPtr<DocumentFragment> Range::processContents(ActionType action, Exception if (processStart) { NodeVector nodes; - for (Node* n = processStart; n && n != processEnd; n = n->nextSibling()) + for (Node* n = processStart.get(); n && n != processEnd; n = n->nextSibling()) nodes.append(n); processNodes(action, nodes, commonRoot, fragment, ec); } @@ -834,7 +839,7 @@ PassRefPtr<Node> Range::processContentsBetweenOffsets(ActionType action, PassRef break; } - return result; + return result.release(); } void Range::processNodes(ActionType action, Vector<RefPtr<Node> >& nodes, PassRefPtr<Node> oldContainer, PassRefPtr<Node> newContainer, ExceptionCode& ec) @@ -899,7 +904,7 @@ PassRefPtr<Node> Range::processAncestorsAndTheirSiblings(ActionType action, Node firstChildInAncestorToProcess = direction == ProcessContentsForward ? ancestor->nextSibling() : ancestor->previousSibling(); } - return clonedContainer; + return clonedContainer.release(); } PassRefPtr<DocumentFragment> Range::extractContents(ExceptionCode& ec) diff --git a/src/3rdparty/webkit/Source/WebCore/dom/StyleElement.cpp b/src/3rdparty/webkit/Source/WebCore/dom/StyleElement.cpp index 5b0e2ad..3bed5ae 100644 --- a/src/3rdparty/webkit/Source/WebCore/dom/StyleElement.cpp +++ b/src/3rdparty/webkit/Source/WebCore/dom/StyleElement.cpp @@ -84,6 +84,15 @@ void StyleElement::removedFromDocument(Document* document, Element* element) document->styleSelectorChanged(DeferRecalcStyle); } +void StyleElement::clearDocumentData(Document* document, Element* element) +{ + if (m_sheet) + m_sheet->clearOwnerNode(); + + if (element->inDocument()) + document->removeStyleSheetCandidateNode(element); +} + void StyleElement::childrenChanged(Element* element) { ASSERT(element); diff --git a/src/3rdparty/webkit/Source/WebCore/dom/StyleElement.h b/src/3rdparty/webkit/Source/WebCore/dom/StyleElement.h index 4356c17..1f50c6e 100644 --- a/src/3rdparty/webkit/Source/WebCore/dom/StyleElement.h +++ b/src/3rdparty/webkit/Source/WebCore/dom/StyleElement.h @@ -44,6 +44,7 @@ protected: void insertedIntoDocument(Document*, Element*); void removedFromDocument(Document*, Element*); + void clearDocumentData(Document*, Element*); void childrenChanged(Element*); void finishParsingChildren(Element*); diff --git a/src/3rdparty/webkit/Source/WebCore/editing/InsertIntoTextNodeCommand.cpp b/src/3rdparty/webkit/Source/WebCore/editing/InsertIntoTextNodeCommand.cpp index b1a455b..0fbc2af 100644 --- a/src/3rdparty/webkit/Source/WebCore/editing/InsertIntoTextNodeCommand.cpp +++ b/src/3rdparty/webkit/Source/WebCore/editing/InsertIntoTextNodeCommand.cpp @@ -27,6 +27,8 @@ #include "InsertIntoTextNodeCommand.h" #include "AXObjectCache.h" +#include "RenderText.h" +#include "Settings.h" #include "Text.h" namespace WebCore { @@ -46,7 +48,13 @@ void InsertIntoTextNodeCommand::doApply() { if (!m_node->rendererIsEditable()) return; - + + if (document()->settings() && document()->settings()->passwordEchoEnabled()) { + RenderText* renderText = toRenderText(m_node->renderer()); + if (renderText && renderText->isSecure()) + renderText->momentarilyRevealLastTypedCharacter(m_offset + m_text.length() - 1); + } + ExceptionCode ec; m_node->insertData(m_offset, m_text, ec); diff --git a/src/3rdparty/webkit/Source/WebCore/editing/ReplaceSelectionCommand.cpp b/src/3rdparty/webkit/Source/WebCore/editing/ReplaceSelectionCommand.cpp index 279bb35..d1aa6da 100644 --- a/src/3rdparty/webkit/Source/WebCore/editing/ReplaceSelectionCommand.cpp +++ b/src/3rdparty/webkit/Source/WebCore/editing/ReplaceSelectionCommand.cpp @@ -138,7 +138,7 @@ ReplacementFragment::ReplacementFragment(Document* document, DocumentFragment* f if (!m_fragment->firstChild()) return; - Element* editableRoot = selection.rootEditableElement(); + RefPtr<Element> editableRoot = selection.rootEditableElement(); ASSERT(editableRoot); if (!editableRoot) return; @@ -153,8 +153,8 @@ ReplacementFragment::ReplacementFragment(Document* document, DocumentFragment* f return; } - Node* styleNode = selection.base().deprecatedNode(); - RefPtr<StyledElement> holder = insertFragmentForTestRendering(styleNode); + RefPtr<Node> styleNode = selection.base().deprecatedNode(); + RefPtr<StyledElement> holder = insertFragmentForTestRendering(styleNode.get()); if (!holder) { removeInterchangeNodes(m_fragment.get()); return; @@ -174,7 +174,7 @@ ReplacementFragment::ReplacementFragment(Document* document, DocumentFragment* f m_fragment = createFragmentFromText(selection.toNormalizedRange().get(), evt->text()); if (!m_fragment->firstChild()) return; - holder = insertFragmentForTestRendering(styleNode); + holder = insertFragmentForTestRendering(styleNode.get()); } removeInterchangeNodes(holder.get()); @@ -291,7 +291,7 @@ void ReplacementFragment::restoreTestRenderingNodesToFragment(StyledElement* hol void ReplacementFragment::removeUnrenderedNodes(Node* holder) { - Vector<Node*> unrendered; + Vector<RefPtr<Node> > unrendered; for (Node* node = holder->firstChild(); node; node = node->traverseNextNode(holder)) if (!isNodeRendered(node) && !isTableStructureNode(node)) diff --git a/src/3rdparty/webkit/Source/WebCore/editing/SelectionController.cpp b/src/3rdparty/webkit/Source/WebCore/editing/SelectionController.cpp index 879cb82..ba95ede 100644 --- a/src/3rdparty/webkit/Source/WebCore/editing/SelectionController.cpp +++ b/src/3rdparty/webkit/Source/WebCore/editing/SelectionController.cpp @@ -1401,7 +1401,7 @@ void SelectionController::selectAll() return; } - Node* root = 0; + RefPtr<Node> root = 0; if (isContentEditable()) root = highestEditableRoot(m_selection.start()); else { @@ -1411,7 +1411,7 @@ void SelectionController::selectAll() } if (!root) return; - VisibleSelection newSelection(VisibleSelection::selectionFromContentsOfNode(root)); + VisibleSelection newSelection(VisibleSelection::selectionFromContentsOfNode(root.get())); if (shouldChangeSelection(newSelection)) setSelection(newSelection); selectFrameElementInParentIfFullySelected(); diff --git a/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.cpp b/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.cpp index b09c226..38ade02 100644 --- a/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.cpp +++ b/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.cpp @@ -602,21 +602,30 @@ void TextIterator::handleTextBox() } } +static inline RenderText* firstRenderTextInFirstLetter(RenderObject* firstLetter) +{ + if (!firstLetter) + return 0; + + // FIXME: Should this check descendent objects? + for (RenderObject* current = firstLetter->firstChild(); current; current = current->nextSibling()) { + if (current->isText()) + return toRenderText(current); + } + return 0; +} + void TextIterator::handleTextNodeFirstLetter(RenderTextFragment* renderer) { if (renderer->firstLetter()) { RenderObject* r = renderer->firstLetter(); if (r->style()->visibility() != VISIBLE && !m_ignoresStyleVisibility) return; - for (RenderObject *currChild = r->firstChild(); currChild; currChild->nextSibling()) { - if (currChild->isText()) { - RenderText* firstLetter = toRenderText(currChild); - m_handledFirstLetter = true; - m_remainingTextBox = m_textBox; - m_textBox = firstLetter->firstTextBox(); - m_firstLetterText = firstLetter; - return; - } + if (RenderText* firstLetter = firstRenderTextInFirstLetter(r)) { + m_handledFirstLetter = true; + m_remainingTextBox = m_textBox; + m_textBox = firstLetter->firstTextBox(); + m_firstLetterText = firstLetter; } } m_handledFirstLetter = true; @@ -1042,14 +1051,46 @@ Node* TextIterator::node() const SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator() : m_behavior(TextIteratorDefaultBehavior) , m_node(0) + , m_offset(0) + , m_handledNode(false) + , m_handledChildren(false) + , m_startNode(0) + , m_startOffset(0) + , m_endNode(0) + , m_endOffset(0) , m_positionNode(0) + , m_positionStartOffset(0) + , m_positionEndOffset(0) + , m_textCharacters(0) + , m_textLength(0) + , m_lastTextNode(0) + , m_lastCharacter(0) + , m_singleCharacterBuffer(0) + , m_havePassedStartNode(false) + , m_shouldHandleFirstLetter(false) { } SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator(const Range* r, TextIteratorBehavior behavior) : m_behavior(behavior) , m_node(0) + , m_offset(0) + , m_handledNode(false) + , m_handledChildren(false) + , m_startNode(0) + , m_startOffset(0) + , m_endNode(0) + , m_endOffset(0) , m_positionNode(0) + , m_positionStartOffset(0) + , m_positionEndOffset(0) + , m_textCharacters(0) + , m_textLength(0) + , m_lastTextNode(0) + , m_lastCharacter(0) + , m_singleCharacterBuffer(0) + , m_havePassedStartNode(false) + , m_shouldHandleFirstLetter(false) { ASSERT(m_behavior == TextIteratorDefaultBehavior); @@ -1177,23 +1218,62 @@ bool SimplifiedBackwardsTextIterator::handleTextNode() { m_lastTextNode = m_node; - RenderText* renderer = toRenderText(m_node->renderer()); - String str = renderer->text(); + int startOffset; + int offsetInNode; + RenderText* renderer = handleFirstLetter(startOffset, offsetInNode); + if (!renderer) + return true; - if (!renderer->firstTextBox() && str.length() > 0) + String text = renderer->text(); + if (!renderer->firstTextBox() && text.length() > 0) return true; m_positionEndOffset = m_offset; - - m_offset = (m_node == m_startNode) ? m_startOffset : 0; + m_offset = startOffset + offsetInNode; m_positionNode = m_node; m_positionStartOffset = m_offset; + + ASSERT(0 <= m_positionStartOffset - offsetInNode && m_positionStartOffset - offsetInNode <= static_cast<int>(text.length())); + ASSERT(1 <= m_positionEndOffset - offsetInNode && m_positionEndOffset - offsetInNode <= static_cast<int>(text.length())); + ASSERT(m_positionStartOffset <= m_positionEndOffset); + m_textLength = m_positionEndOffset - m_positionStartOffset; - m_textCharacters = str.characters() + m_positionStartOffset; + m_textCharacters = text.characters() + (m_positionStartOffset - offsetInNode); + ASSERT(m_textCharacters >= text.characters()); + ASSERT(m_textCharacters + m_textLength <= text.characters() + static_cast<int>(text.length())); - m_lastCharacter = str[m_positionEndOffset - 1]; + m_lastCharacter = text[m_positionEndOffset - 1]; - return true; + return !m_shouldHandleFirstLetter; +} + +RenderText* SimplifiedBackwardsTextIterator::handleFirstLetter(int& startOffset, int& offsetInNode) +{ + RenderText* renderer = toRenderText(m_node->renderer()); + startOffset = (m_node == m_startNode) ? m_startOffset : 0; + + if (!renderer->isTextFragment()) { + offsetInNode = 0; + return renderer; + } + + RenderTextFragment* fragment = toRenderTextFragment(renderer); + int offsetAfterFirstLetter = fragment->start(); + if (startOffset >= offsetAfterFirstLetter) { + ASSERT(!m_shouldHandleFirstLetter); + offsetInNode = offsetAfterFirstLetter; + return renderer; + } + + if (!m_shouldHandleFirstLetter && offsetAfterFirstLetter < m_offset) { + m_shouldHandleFirstLetter = true; + offsetInNode = offsetAfterFirstLetter; + return renderer; + } + + m_shouldHandleFirstLetter = false; + offsetInNode = 0; + return firstRenderTextInFirstLetter(fragment->firstLetter()); } bool SimplifiedBackwardsTextIterator::handleReplacedElement() @@ -2563,6 +2643,9 @@ tryAgain: PassRefPtr<Range> findPlainText(const Range* range, const String& target, FindOptions options) { + // CharacterIterator requires renderers to be up-to-date + range->ownerDocument()->updateLayout(); + // First, find the text. size_t matchStart; size_t matchLength; diff --git a/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.h b/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.h index 9fe4ceb..8820388 100644 --- a/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.h +++ b/src/3rdparty/webkit/Source/WebCore/editing/TextIterator.h @@ -203,6 +203,7 @@ public: private: void exitNode(); bool handleTextNode(); + RenderText* handleFirstLetter(int& startOffset, int& offsetInNode); bool handleReplacedElement(); bool handleNonTextNode(); void emitCharacter(UChar, Node*, int startOffset, int endOffset); @@ -240,6 +241,9 @@ private: // Whether m_node has advanced beyond the iteration range (i.e. m_startNode). bool m_havePassedStartNode; + + // Should handle first-letter renderer in the next call to handleTextNode. + bool m_shouldHandleFirstLetter; }; // Builds on the text iterator, adding a character position so we can walk one diff --git a/src/3rdparty/webkit/Source/WebCore/editing/visible_units.cpp b/src/3rdparty/webkit/Source/WebCore/editing/visible_units.cpp index ff683a5..b2b52f3 100644 --- a/src/3rdparty/webkit/Source/WebCore/editing/visible_units.cpp +++ b/src/3rdparty/webkit/Source/WebCore/editing/visible_units.cpp @@ -101,7 +101,7 @@ static VisiblePosition previousBoundary(const VisiblePosition& c, BoundarySearch else { // Treat bullets used in the text security mode as regular characters when looking for boundaries String iteratorString(it.characters(), it.length()); - iteratorString = iteratorString.impl()->secure('x'); + iteratorString.fill('x'); string.prepend(iteratorString.characters(), iteratorString.length()); } next = searchFunction(string.data(), string.size(), string.size() - suffixLength, MayHaveMoreContext, needMoreContext); @@ -176,7 +176,7 @@ static VisiblePosition nextBoundary(const VisiblePosition& c, BoundarySearchFunc else { // Treat bullets used in the text security mode as regular characters when looking for boundaries String iteratorString(it.characters(), it.length()); - iteratorString = iteratorString.impl()->secure('x'); + iteratorString.fill('x'); string.append(iteratorString.characters(), iteratorString.length()); } next = searchFunction(string.data(), string.size(), prefixLength, MayHaveMoreContext, needMoreContext); diff --git a/src/3rdparty/webkit/Source/WebCore/features.pri b/src/3rdparty/webkit/Source/WebCore/features.pri index c56c9fc..3e397a1 100644 --- a/src/3rdparty/webkit/Source/WebCore/features.pri +++ b/src/3rdparty/webkit/Source/WebCore/features.pri @@ -162,17 +162,23 @@ symbian|maemo5|maemo6 { DEFINES -= ENABLE_VIDEO=1 DEFINES += ENABLE_VIDEO=0 - contains(DEFINES, USE_QTKIT=1) { + mac:!contains(DEFINES, USE_QTMULTIMEDIA=1) { DEFINES -= ENABLE_VIDEO=0 DEFINES += ENABLE_VIDEO=1 - DEFINES -= WTF_USE_QT_MULTIMEDIA=1 - DEFINES += WTF_USE_QT_MULTIMEDIA=0 - } else: contains(DEFINES, USE_GSTREAMER=1) { - DEFINES -= ENABLE_VIDEO=0 - DEFINES += ENABLE_VIDEO=1 - DEFINES -= WTF_USE_QT_MULTIMEDIA=1 - DEFINES += WTF_USE_QT_MULTIMEDIA=0 - } else:contains(MOBILITY_CONFIG, multimedia) { + DEFINES += WTF_USE_QTKIT=1 + DEFINES -= WTF_USE_QTKIT=0 + } else: linux-*:!contains(DEFINES, USE_QTMULTIMEDIA=1) { + !contains(QT_CONFIG, no-pkg-config):system(pkg-config --exists glib-2.0 gio-2.0 gstreamer-0.10) { + DEFINES -= ENABLE_VIDEO=0 + DEFINES += ENABLE_VIDEO=1 + DEFINES += WTF_USE_GSTREAMER=1 + DEFINES -= WTF_USE_GSTREAMER=0 + } else { + message("Disabling video due the lack of GLib/Gio/GStreamer.") + DEFINES -= ENABLE_VIDEO=1 + DEFINES += ENABLE_VIDEO=0 + } + } else: contains(MOBILITY_CONFIG, multimedia) { DEFINES -= ENABLE_VIDEO=0 DEFINES += ENABLE_VIDEO=1 DEFINES -= WTF_USE_QT_MULTIMEDIA=0 diff --git a/src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.cpp b/src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.cpp index 1da5e2f..df97459 100644 --- a/src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.cpp +++ b/src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.cpp @@ -1,8 +1,10 @@ -/* A Bison parser, made by GNU Bison 2.5. */ -/* Bison implementation for Yacc-like parsers in C +/* A Bison parser, made by GNU Bison 2.4.1. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +46,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.5" +#define YYBISON_VERSION "2.4.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -73,7 +75,7 @@ /* Copy the first part of user declarations. */ -/* Line 268 of yacc.c */ +/* Line 189 of yacc.c */ #line 1 "../Source/WebCore/css/CSSGrammar.y" @@ -135,8 +137,8 @@ using namespace HTMLNames; -/* Line 268 of yacc.c */ -#line 140 "/Source/WebCore/generated/CSSGrammar.tab.c" +/* Line 189 of yacc.c */ +#line 142 "/Source/WebCore/generated/CSSGrammar.tab.c" /* Enabling traces. */ #ifndef YYDEBUG @@ -252,7 +254,7 @@ using namespace HTMLNames; typedef union YYSTYPE { -/* Line 293 of yacc.c */ +/* Line 214 of yacc.c */ #line 63 "../Source/WebCore/css/CSSGrammar.y" bool boolean; @@ -280,8 +282,8 @@ typedef union YYSTYPE -/* Line 293 of yacc.c */ -#line 285 "/Source/WebCore/generated/CSSGrammar.tab.c" +/* Line 214 of yacc.c */ +#line 287 "/Source/WebCore/generated/CSSGrammar.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -291,7 +293,7 @@ typedef union YYSTYPE /* Copy the second part of user declarations. */ -/* Line 343 of yacc.c */ +/* Line 264 of yacc.c */ #line 88 "../Source/WebCore/css/CSSGrammar.y" @@ -307,8 +309,8 @@ static int cssyylex(YYSTYPE* yylval, void* parser) -/* Line 343 of yacc.c */ -#line 312 "/Source/WebCore/generated/CSSGrammar.tab.c" +/* Line 264 of yacc.c */ +#line 314 "/Source/WebCore/generated/CSSGrammar.tab.c" #ifdef short # undef short @@ -358,7 +360,7 @@ typedef short int yytype_int16; #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS +# if YYENABLE_NLS # if ENABLE_NLS # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) @@ -411,11 +413,11 @@ YYID (yyi) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 +# ifndef _STDLIB_H +# define _STDLIB_H 1 # endif # endif # endif @@ -438,24 +440,24 @@ YYID (yyi) # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif -# if (defined __cplusplus && ! defined EXIT_SUCCESS \ +# if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 +# ifndef _STDLIB_H +# define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif @@ -484,7 +486,23 @@ union yyalloc ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) -# define YYCOPY_NEEDED 1 +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of @@ -504,26 +522,6 @@ union yyalloc #endif -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (YYID (0)) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - /* YYFINAL -- State number of the termination state. */ #define YYFINAL 21 /* YYLAST -- Last index in YYTABLE. */ @@ -898,8 +896,8 @@ static const yytype_uint8 yyr2[] = 3 }; -/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE doesn't specify something else to do. Zero +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint16 yydefact[] = { @@ -1054,7 +1052,8 @@ static const yytype_int16 yypgoto[] = /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF, syntax error. */ + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -276 static const yytype_int16 yytable[] = { @@ -1228,12 +1227,6 @@ static const yytype_int16 yytable[] = 87, 88, 0, 0, 90, 91, 92 }; -#define yypact_value_is_default(yystate) \ - ((yystate) == (-305)) - -#define yytable_value_is_error(yytable_value) \ - YYID (0) - static const yytype_int16 yycheck[] = { 0, 87, 127, 37, 243, 212, 5, 250, 8, 9, @@ -1479,18 +1472,9 @@ static const yytype_uint8 yystos[] = /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. However, - YYFAIL appears to be in use. Nevertheless, it is formally deprecated - in Bison 2.4.2's NEWS entry, where a plan to phase it out is - discussed. */ + Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab -#if defined YYFAIL - /* This is here to suppress warnings from the GCC cpp's - -Wunused-macros. Normally we don't worry about that warning, but - some users do, and we want to make it easy for users to remove - YYFAIL uses, which will produce warnings from Bison 2.5. */ -#endif #define YYRECOVERING() (!!yyerrstatus) @@ -1500,6 +1484,7 @@ do \ { \ yychar = (Token); \ yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ @@ -1541,10 +1526,19 @@ while (YYID (0)) #endif -/* This macro is provided for backward compatibility. */ +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif #endif @@ -1736,6 +1730,7 @@ int yydebug; # define YYMAXDEPTH 10000 #endif + #if YYERROR_VERBOSE @@ -1838,142 +1833,115 @@ yytnamerr (char *yyres, const char *yystr) } # endif -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) { - YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - YYSIZE_T yysize1; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = 0; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - Assume YYFAIL is not used. It's too flawed to consider. See - <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html> - for details. YYERROR is fine as it does not invoke this - function. - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (0, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - } - } + int yyn = yypact[yystate]; - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } - yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } + if (yysize_overflow) + return YYSIZE_MAXIMUM; - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } } #endif /* YYERROR_VERBOSE */ + /*-----------------------------------------------. | Release the memory associated to this symbol. | @@ -2006,7 +1974,6 @@ yydestruct (yymsg, yytype, yyvaluep) } } - /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus @@ -2023,9 +1990,12 @@ int yyparse (); #endif /* ! YYPARSE_PARAM */ -/*----------. -| yyparse. | -`----------*/ + + + +/*-------------------------. +| yyparse or yypush_parse. | +`-------------------------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ @@ -2212,7 +2182,7 @@ yybackup: /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) + if (yyn == YYPACT_NINF) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ @@ -2243,8 +2213,8 @@ yybackup: yyn = yytable[yyn]; if (yyn <= 0) { - if (yytable_value_is_error (yyn)) - goto yyerrlab; + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; yyn = -yyn; goto yyreduce; } @@ -2299,34 +2269,34 @@ yyreduce: { case 9: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 303 "../Source/WebCore/css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->m_rule = (yyvsp[(4) - (6)].rule); - } + ;} break; case 10: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 309 "../Source/WebCore/css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->m_keyframe = (yyvsp[(4) - (6)].keyframeRule); - } + ;} break; case 11: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 315 "../Source/WebCore/css/CSSGrammar.y" { /* can be empty */ - } + ;} break; case 12: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 321 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); @@ -2338,22 +2308,22 @@ yyreduce: delete p->m_valueList; p->m_valueList = 0; } - } + ;} break; case 13: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 335 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); p->m_mediaQuery = p->sinkFloatingMediaQuery((yyvsp[(4) - (5)].mediaQuery)); - } + ;} break; case 14: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 342 "../Source/WebCore/css/CSSGrammar.y" { if ((yyvsp[(4) - (5)].selectorList)) { @@ -2361,94 +2331,94 @@ yyreduce: if (p->m_selectorListForParseSelector) p->m_selectorListForParseSelector->adoptSelectorVector(*(yyvsp[(4) - (5)].selectorList)); } - } + ;} break; case 21: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 364 "../Source/WebCore/css/CSSGrammar.y" { - } + ;} break; case 24: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 374 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.rule) = static_cast<CSSParser*>(parser)->createCharsetRule((yyvsp[(3) - (5)].string)); if ((yyval.rule) && p->m_styleSheet) p->m_styleSheet->append((yyval.rule)); - } + ;} break; case 25: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 380 "../Source/WebCore/css/CSSGrammar.y" { - } + ;} break; case 26: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 382 "../Source/WebCore/css/CSSGrammar.y" { - } + ;} break; case 27: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 387 "../Source/WebCore/css/CSSGrammar.y" { // Ignore any @charset rule not at the beginning of the style sheet. (yyval.rule) = 0; - } + ;} break; case 29: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 395 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); if ((yyvsp[(2) - (3)].rule) && p->m_styleSheet) p->m_styleSheet->append((yyvsp[(2) - (3)].rule)); - } + ;} break; case 30: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 403 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = (yyvsp[(2) - (2)].rule); - } + ;} break; case 37: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 415 "../Source/WebCore/css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->m_hadSyntacticallyValidCSSRule = true; - } + ;} break; case 41: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 424 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.ruleList) = 0; } + { (yyval.ruleList) = 0; ;} break; case 42: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 425 "../Source/WebCore/css/CSSGrammar.y" { (yyval.ruleList) = (yyvsp[(1) - (3)].ruleList); @@ -2457,357 +2427,357 @@ yyreduce: (yyval.ruleList) = static_cast<CSSParser*>(parser)->createRuleList(); (yyval.ruleList)->append((yyvsp[(2) - (3)].rule)); } - } + ;} break; case 53: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 453 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createImportRule((yyvsp[(3) - (6)].string), (yyvsp[(5) - (6)].mediaList)); - } + ;} break; case 54: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 456 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = 0; - } + ;} break; case 55: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 459 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = 0; - } + ;} break; case 56: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 462 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = 0; - } + ;} break; case 57: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 468 "../Source/WebCore/css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->addNamespace((yyvsp[(3) - (6)].string), (yyvsp[(4) - (6)].string)); (yyval.rule) = 0; -} +;} break; case 58: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 472 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = 0; -} +;} break; case 59: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 475 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = 0; -} +;} break; case 60: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 478 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = 0; -} +;} break; case 61: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 484 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.string).characters = 0; } + { (yyval.string).characters = 0; ;} break; case 62: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 485 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.string) = (yyvsp[(1) - (2)].string); } + { (yyval.string) = (yyvsp[(1) - (2)].string); ;} break; case 65: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 494 "../Source/WebCore/css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); - } + ;} break; case 66: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 500 "../Source/WebCore/css/CSSGrammar.y" { (yyval.valueList) = 0; - } + ;} break; case 67: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 503 "../Source/WebCore/css/CSSGrammar.y" { (yyval.valueList) = (yyvsp[(3) - (4)].valueList); - } + ;} break; case 68: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 509 "../Source/WebCore/css/CSSGrammar.y" { (yyvsp[(3) - (7)].string).lower(); (yyval.mediaQueryExp) = static_cast<CSSParser*>(parser)->createFloatingMediaQueryExp((yyvsp[(3) - (7)].string), (yyvsp[(5) - (7)].valueList)); - } + ;} break; case 69: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 516 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.mediaQueryExpList) = p->createFloatingMediaQueryExpList(); (yyval.mediaQueryExpList)->append(p->sinkFloatingMediaQueryExp((yyvsp[(1) - (1)].mediaQueryExp))); - } + ;} break; case 70: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 521 "../Source/WebCore/css/CSSGrammar.y" { (yyval.mediaQueryExpList) = (yyvsp[(1) - (5)].mediaQueryExpList); (yyval.mediaQueryExpList)->append(static_cast<CSSParser*>(parser)->sinkFloatingMediaQueryExp((yyvsp[(5) - (5)].mediaQueryExp))); - } + ;} break; case 71: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 528 "../Source/WebCore/css/CSSGrammar.y" { (yyval.mediaQueryExpList) = static_cast<CSSParser*>(parser)->createFloatingMediaQueryExpList(); - } + ;} break; case 72: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 531 "../Source/WebCore/css/CSSGrammar.y" { (yyval.mediaQueryExpList) = (yyvsp[(3) - (3)].mediaQueryExpList); - } + ;} break; case 73: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 537 "../Source/WebCore/css/CSSGrammar.y" { (yyval.mediaQueryRestrictor) = MediaQuery::None; - } + ;} break; case 74: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 540 "../Source/WebCore/css/CSSGrammar.y" { (yyval.mediaQueryRestrictor) = MediaQuery::Only; - } + ;} break; case 75: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 543 "../Source/WebCore/css/CSSGrammar.y" { (yyval.mediaQueryRestrictor) = MediaQuery::Not; - } + ;} break; case 76: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 549 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.mediaQuery) = p->createFloatingMediaQuery(p->sinkFloatingMediaQueryExpList((yyvsp[(1) - (1)].mediaQueryExpList))); - } + ;} break; case 77: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 554 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyvsp[(3) - (4)].string).lower(); (yyval.mediaQuery) = p->createFloatingMediaQuery((yyvsp[(1) - (4)].mediaQueryRestrictor), (yyvsp[(3) - (4)].string), p->sinkFloatingMediaQueryExpList((yyvsp[(4) - (4)].mediaQueryExpList))); - } + ;} break; case 78: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 562 "../Source/WebCore/css/CSSGrammar.y" { (yyval.mediaList) = static_cast<CSSParser*>(parser)->createMediaList(); - } + ;} break; case 80: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 569 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.mediaList) = p->createMediaList(); (yyval.mediaList)->appendMediaQuery(p->sinkFloatingMediaQuery((yyvsp[(1) - (1)].mediaQuery))); - } + ;} break; case 81: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 574 "../Source/WebCore/css/CSSGrammar.y" { (yyval.mediaList) = (yyvsp[(1) - (4)].mediaList); if ((yyval.mediaList)) (yyval.mediaList)->appendMediaQuery(static_cast<CSSParser*>(parser)->sinkFloatingMediaQuery((yyvsp[(4) - (4)].mediaQuery))); - } + ;} break; case 82: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 579 "../Source/WebCore/css/CSSGrammar.y" { (yyval.mediaList) = 0; - } + ;} break; case 83: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 585 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createMediaRule((yyvsp[(3) - (7)].mediaList), (yyvsp[(6) - (7)].ruleList)); - } + ;} break; case 84: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 588 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createMediaRule(0, (yyvsp[(5) - (6)].ruleList)); - } + ;} break; case 85: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 594 "../Source/WebCore/css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); - } + ;} break; case 86: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 600 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = (yyvsp[(7) - (8)].keyframesRule); (yyvsp[(7) - (8)].keyframesRule)->setNameInternal((yyvsp[(3) - (8)].string)); - } + ;} break; case 89: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 612 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.keyframesRule) = static_cast<CSSParser*>(parser)->createKeyframesRule(); } + { (yyval.keyframesRule) = static_cast<CSSParser*>(parser)->createKeyframesRule(); ;} break; case 90: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 613 "../Source/WebCore/css/CSSGrammar.y" { (yyval.keyframesRule) = (yyvsp[(1) - (3)].keyframesRule); if ((yyvsp[(2) - (3)].keyframeRule)) (yyval.keyframesRule)->append((yyvsp[(2) - (3)].keyframeRule)); - } + ;} break; case 91: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 621 "../Source/WebCore/css/CSSGrammar.y" { (yyval.keyframeRule) = static_cast<CSSParser*>(parser)->createKeyframeRule((yyvsp[(1) - (6)].valueList)); - } + ;} break; case 92: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 627 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.valueList) = p->createFloatingValueList(); (yyval.valueList)->addValue(p->sinkFloatingValue((yyvsp[(1) - (1)].value))); - } + ;} break; case 93: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 632 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.valueList) = (yyvsp[(1) - (5)].valueList); if ((yyval.valueList)) (yyval.valueList)->addValue(p->sinkFloatingValue((yyvsp[(5) - (5)].value))); - } + ;} break; case 94: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 641 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).isInt = false; (yyval.value).fValue = (yyvsp[(1) - (1)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; } + { (yyval.value).id = 0; (yyval.value).isInt = false; (yyval.value).fValue = (yyvsp[(1) - (1)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; ;} break; case 95: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 642 "../Source/WebCore/css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).isInt = false; (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; @@ -2818,12 +2788,12 @@ yyreduce: (yyval.value).fValue = 100; else YYERROR; - } + ;} break; case 96: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 656 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); @@ -2835,42 +2805,42 @@ yyreduce: // Also clear margin at-rules here once we fully implement margin at-rules parsing. (yyval.rule) = 0; } - } + ;} break; case 97: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 667 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = 0; - } + ;} break; case 98: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 670 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = 0; - } + ;} break; case 99: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 676 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.selector) = p->createFloatingSelector(); (yyval.selector)->setTag(QualifiedName(nullAtom, (yyvsp[(1) - (1)].string), p->m_defaultNamespace)); (yyval.selector)->setForPage(); - } + ;} break; case 100: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 682 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); @@ -2879,312 +2849,312 @@ yyreduce: (yyval.selector)->setTag(QualifiedName(nullAtom, (yyvsp[(1) - (2)].string), p->m_defaultNamespace)); (yyval.selector)->setForPage(); } - } + ;} break; case 101: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 690 "../Source/WebCore/css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(1) - (1)].selector); if ((yyval.selector)) (yyval.selector)->setForPage(); - } + ;} break; case 102: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 695 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.selector) = p->createFloatingSelector(); (yyval.selector)->setForPage(); - } + ;} break; case 105: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 708 "../Source/WebCore/css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->startDeclarationsForMarginBox(); - } + ;} break; case 106: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 710 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createMarginAtRule((yyvsp[(1) - (7)].marginBox)); - } + ;} break; case 107: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 716 "../Source/WebCore/css/CSSGrammar.y" { (yyval.marginBox) = CSSSelector::TopLeftCornerMarginBox; - } + ;} break; case 108: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 719 "../Source/WebCore/css/CSSGrammar.y" { (yyval.marginBox) = CSSSelector::TopLeftMarginBox; - } + ;} break; case 109: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 722 "../Source/WebCore/css/CSSGrammar.y" { (yyval.marginBox) = CSSSelector::TopCenterMarginBox; - } + ;} break; case 110: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 725 "../Source/WebCore/css/CSSGrammar.y" { (yyval.marginBox) = CSSSelector::TopRightMarginBox; - } + ;} break; case 111: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 728 "../Source/WebCore/css/CSSGrammar.y" { (yyval.marginBox) = CSSSelector::TopRightCornerMarginBox; - } + ;} break; case 112: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 731 "../Source/WebCore/css/CSSGrammar.y" { (yyval.marginBox) = CSSSelector::BottomLeftCornerMarginBox; - } + ;} break; case 113: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 734 "../Source/WebCore/css/CSSGrammar.y" { (yyval.marginBox) = CSSSelector::BottomLeftMarginBox; - } + ;} break; case 114: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 737 "../Source/WebCore/css/CSSGrammar.y" { (yyval.marginBox) = CSSSelector::BottomCenterMarginBox; - } + ;} break; case 115: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 740 "../Source/WebCore/css/CSSGrammar.y" { (yyval.marginBox) = CSSSelector::BottomRightMarginBox; - } + ;} break; case 116: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 743 "../Source/WebCore/css/CSSGrammar.y" { (yyval.marginBox) = CSSSelector::BottomRightCornerMarginBox; - } + ;} break; case 117: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 746 "../Source/WebCore/css/CSSGrammar.y" { (yyval.marginBox) = CSSSelector::LeftTopMarginBox; - } + ;} break; case 118: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 749 "../Source/WebCore/css/CSSGrammar.y" { (yyval.marginBox) = CSSSelector::LeftMiddleMarginBox; - } + ;} break; case 119: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 752 "../Source/WebCore/css/CSSGrammar.y" { (yyval.marginBox) = CSSSelector::LeftBottomMarginBox; - } + ;} break; case 120: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 755 "../Source/WebCore/css/CSSGrammar.y" { (yyval.marginBox) = CSSSelector::RightTopMarginBox; - } + ;} break; case 121: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 758 "../Source/WebCore/css/CSSGrammar.y" { (yyval.marginBox) = CSSSelector::RightMiddleMarginBox; - } + ;} break; case 122: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 761 "../Source/WebCore/css/CSSGrammar.y" { (yyval.marginBox) = CSSSelector::RightBottomMarginBox; - } + ;} break; case 123: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 768 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createFontFaceRule(); - } + ;} break; case 124: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 771 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = 0; - } + ;} break; case 125: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 774 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = 0; - } + ;} break; case 126: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 780 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.relation) = CSSSelector::DirectAdjacent; } + { (yyval.relation) = CSSSelector::DirectAdjacent; ;} break; case 127: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 781 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.relation) = CSSSelector::IndirectAdjacent; } + { (yyval.relation) = CSSSelector::IndirectAdjacent; ;} break; case 128: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 782 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.relation) = CSSSelector::Child; } + { (yyval.relation) = CSSSelector::Child; ;} break; case 129: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 786 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.integer) = (yyvsp[(1) - (1)].integer); } + { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; case 130: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 787 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.integer) = 1; } + { (yyval.integer) = 1; ;} break; case 131: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 791 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.integer) = -1; } + { (yyval.integer) = -1; ;} break; case 132: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 792 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.integer) = 1; } + { (yyval.integer) = 1; ;} break; case 133: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 796 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); p->markPropertyStart(); - } + ;} break; case 134: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 803 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); p->markSelectorListStart(); - } + ;} break; case 135: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 810 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); p->markSelectorListEnd(); - } + ;} break; case 136: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 817 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.rule) = p->createStyleRule((yyvsp[(1) - (6)].selectorList)); - } + ;} break; case 137: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 824 "../Source/WebCore/css/CSSGrammar.y" { if ((yyvsp[(1) - (1)].selector)) { @@ -3194,12 +3164,12 @@ yyreduce: (yyval.selectorList)->append(p->sinkFloatingSelector((yyvsp[(1) - (1)].selector))); p->updateLastSelectorLineAndPosition(); } - } + ;} break; case 138: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 833 "../Source/WebCore/css/CSSGrammar.y" { if ((yyvsp[(1) - (4)].selectorList) && (yyvsp[(4) - (4)].selector)) { @@ -3209,48 +3179,48 @@ yyreduce: p->updateLastSelectorLineAndPosition(); } else (yyval.selectorList) = 0; - } + ;} break; case 139: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 842 "../Source/WebCore/css/CSSGrammar.y" { (yyval.selectorList) = 0; - } + ;} break; case 140: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 848 "../Source/WebCore/css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(1) - (2)].selector); - } + ;} break; case 141: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 854 "../Source/WebCore/css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(1) - (1)].selector); - } + ;} break; case 142: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 858 "../Source/WebCore/css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(1) - (1)].selector); - } + ;} break; case 143: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 862 "../Source/WebCore/css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(2) - (2)].selector); @@ -3264,12 +3234,12 @@ yyreduce: end->setRelation(CSSSelector::Descendant); end->setTagHistory(p->sinkFloatingSelector((yyvsp[(1) - (2)].selector))); } - } + ;} break; case 144: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 875 "../Source/WebCore/css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(3) - (3)].selector); @@ -3283,75 +3253,75 @@ yyreduce: end->setRelation((yyvsp[(2) - (3)].relation)); end->setTagHistory(p->sinkFloatingSelector((yyvsp[(1) - (3)].selector))); } - } + ;} break; case 145: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 888 "../Source/WebCore/css/CSSGrammar.y" { (yyval.selector) = 0; - } + ;} break; case 146: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 894 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.string).characters = 0; (yyval.string).length = 0; } + { (yyval.string).characters = 0; (yyval.string).length = 0; ;} break; case 147: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 895 "../Source/WebCore/css/CSSGrammar.y" - { static UChar star = '*'; (yyval.string).characters = ☆ (yyval.string).length = 1; } + { static UChar star = '*'; (yyval.string).characters = ☆ (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 = ☆ (yyval.string).length = 1; - } + ;} break; case 160: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 976 "../Source/WebCore/css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(1) - (1)].selector); - } + ;} break; case 161: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 979 "../Source/WebCore/css/CSSGrammar.y" { if (!(yyvsp[(2) - (2)].selector)) (yyval.selector) = 0; else if ((yyvsp[(1) - (2)].selector)) (yyval.selector) = static_cast<CSSParser*>(parser)->updateSpecifiers((yyvsp[(1) - (2)].selector), (yyvsp[(2) - (2)].selector)); - } + ;} break; case 162: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 985 "../Source/WebCore/css/CSSGrammar.y" { (yyval.selector) = 0; - } + ;} break; case 163: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 991 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); @@ -3490,12 +3460,12 @@ yyreduce: if (!p->m_strict) (yyvsp[(1) - (1)].string).lower(); (yyval.selector)->setValue((yyvsp[(1) - (1)].string)); - } + ;} break; case 164: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 999 "../Source/WebCore/css/CSSGrammar.y" { if ((yyvsp[(1) - (1)].string).characters[0] >= '0' && (yyvsp[(1) - (1)].string).characters[0] <= '9') { @@ -3508,12 +3478,12 @@ yyreduce: (yyvsp[(1) - (1)].string).lower(); (yyval.selector)->setValue((yyvsp[(1) - (1)].string)); } - } + ;} break; case 168: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1017 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); @@ -3522,12 +3492,12 @@ yyreduce: if (!p->m_strict) (yyvsp[(2) - (2)].string).lower(); (yyval.selector)->setValue((yyvsp[(2) - (2)].string)); - } + ;} break; case 169: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1028 "../Source/WebCore/css/CSSGrammar.y" { CSSParserString& str = (yyvsp[(1) - (2)].string); @@ -3536,35 +3506,35 @@ yyreduce: if (doc && doc->isHTMLDocument()) str.lower(); (yyval.string) = str; - } + ;} break; case 170: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1039 "../Source/WebCore/css/CSSGrammar.y" { (yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector(); (yyval.selector)->setAttribute(QualifiedName(nullAtom, (yyvsp[(3) - (4)].string), nullAtom)); (yyval.selector)->setMatch(CSSSelector::Set); - } + ;} break; case 171: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1044 "../Source/WebCore/css/CSSGrammar.y" { (yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector(); (yyval.selector)->setAttribute(QualifiedName(nullAtom, (yyvsp[(3) - (8)].string), nullAtom)); (yyval.selector)->setMatch((CSSSelector::Match)(yyvsp[(4) - (8)].integer)); (yyval.selector)->setValue((yyvsp[(6) - (8)].string)); - } + ;} break; case 172: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1050 "../Source/WebCore/css/CSSGrammar.y" { AtomicString namespacePrefix = (yyvsp[(3) - (5)].string); @@ -3573,12 +3543,12 @@ yyreduce: (yyval.selector)->setAttribute(QualifiedName(namespacePrefix, (yyvsp[(4) - (5)].string), p->m_styleSheet->determineNamespace(namespacePrefix))); (yyval.selector)->setMatch(CSSSelector::Set); - } + ;} break; case 173: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1058 "../Source/WebCore/css/CSSGrammar.y" { AtomicString namespacePrefix = (yyvsp[(3) - (9)].string); @@ -3588,66 +3558,66 @@ yyreduce: p->m_styleSheet->determineNamespace(namespacePrefix))); (yyval.selector)->setMatch((CSSSelector::Match)(yyvsp[(5) - (9)].integer)); (yyval.selector)->setValue((yyvsp[(7) - (9)].string)); - } + ;} break; case 174: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1070 "../Source/WebCore/css/CSSGrammar.y" { (yyval.integer) = CSSSelector::Exact; - } + ;} break; case 175: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1073 "../Source/WebCore/css/CSSGrammar.y" { (yyval.integer) = CSSSelector::List; - } + ;} break; case 176: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1076 "../Source/WebCore/css/CSSGrammar.y" { (yyval.integer) = CSSSelector::Hyphen; - } + ;} break; case 177: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1079 "../Source/WebCore/css/CSSGrammar.y" { (yyval.integer) = CSSSelector::Begin; - } + ;} break; case 178: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1082 "../Source/WebCore/css/CSSGrammar.y" { (yyval.integer) = CSSSelector::End; - } + ;} break; case 179: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1085 "../Source/WebCore/css/CSSGrammar.y" { (yyval.integer) = CSSSelector::Contain; - } + ;} break; case 182: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1096 "../Source/WebCore/css/CSSGrammar.y" { (yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector(); @@ -3657,12 +3627,12 @@ yyreduce: CSSSelector::PseudoType type = (yyval.selector)->pseudoType(); if (type == CSSSelector::PseudoUnknown) (yyval.selector) = 0; - } + ;} break; case 183: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1107 "../Source/WebCore/css/CSSGrammar.y" { (yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector(); @@ -3672,12 +3642,12 @@ yyreduce: CSSSelector::PseudoType type = (yyval.selector)->pseudoType(); if (type == CSSSelector::PseudoUnknown) (yyval.selector) = 0; - } + ;} break; case 184: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1116 "../Source/WebCore/css/CSSGrammar.y" { (yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector(); @@ -3686,12 +3656,12 @@ yyreduce: (yyval.selector)->setValue((yyvsp[(3) - (3)].string)); // FIXME: This call is needed to force selector to compute the pseudoType early enough. (yyval.selector)->pseudoType(); - } + ;} break; case 185: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1129 "../Source/WebCore/css/CSSGrammar.y" { if ((yyvsp[(4) - (6)].selectorList)) { @@ -3706,12 +3676,12 @@ yyreduce: (yyval.selector) = 0; } else (yyval.selector) = 0; - } + ;} break; case 186: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1144 "../Source/WebCore/css/CSSGrammar.y" { CSSParser *p = static_cast<CSSParser*>(parser); @@ -3722,12 +3692,12 @@ yyreduce: CSSSelector::PseudoType type = (yyval.selector)->pseudoType(); if (type == CSSSelector::PseudoUnknown) (yyval.selector) = 0; - } + ;} break; case 187: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1155 "../Source/WebCore/css/CSSGrammar.y" { CSSParser *p = static_cast<CSSParser*>(parser); @@ -3738,12 +3708,12 @@ yyreduce: CSSSelector::PseudoType type = (yyval.selector)->pseudoType(); if (type == CSSSelector::PseudoUnknown) (yyval.selector) = 0; - } + ;} break; case 188: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1166 "../Source/WebCore/css/CSSGrammar.y" { CSSParser *p = static_cast<CSSParser*>(parser); @@ -3762,12 +3732,12 @@ yyreduce: if (!isValidNthToken((yyvsp[(4) - (6)].string))) (yyval.selector) = 0; } - } + ;} break; case 189: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1185 "../Source/WebCore/css/CSSGrammar.y" { if (!(yyvsp[(4) - (6)].selector) || !(yyvsp[(4) - (6)].selector)->isSimple()) @@ -3784,126 +3754,126 @@ yyreduce: (yyvsp[(2) - (6)].string).lower(); (yyval.selector)->setValue((yyvsp[(2) - (6)].string)); } - } + ;} break; case 190: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1204 "../Source/WebCore/css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (1)].boolean); - } + ;} break; case 191: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1207 "../Source/WebCore/css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (2)].boolean); if ( (yyvsp[(2) - (2)].boolean) ) (yyval.boolean) = (yyvsp[(2) - (2)].boolean); - } + ;} break; case 192: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1212 "../Source/WebCore/css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (1)].boolean); - } + ;} break; case 193: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1215 "../Source/WebCore/css/CSSGrammar.y" { (yyval.boolean) = false; - } + ;} break; case 194: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1218 "../Source/WebCore/css/CSSGrammar.y" { (yyval.boolean) = false; - } + ;} break; case 195: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1221 "../Source/WebCore/css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (2)].boolean); - } + ;} break; case 196: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1224 "../Source/WebCore/css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (2)].boolean); - } + ;} break; case 197: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1230 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); p->markPropertyStart(); (yyval.boolean) = (yyvsp[(1) - (3)].boolean); - } + ;} break; case 198: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1235 "../Source/WebCore/css/CSSGrammar.y" { (yyval.boolean) = false; - } + ;} break; case 199: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1238 "../Source/WebCore/css/CSSGrammar.y" { (yyval.boolean) = false; - } + ;} break; case 200: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1241 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); p->markPropertyStart(); (yyval.boolean) = false; - } + ;} break; case 201: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1246 "../Source/WebCore/css/CSSGrammar.y" { (yyval.boolean) = false; - } + ;} break; case 202: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1249 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); @@ -3911,34 +3881,34 @@ yyreduce: (yyval.boolean) = (yyvsp[(1) - (4)].boolean); if ((yyvsp[(2) - (4)].boolean)) (yyval.boolean) = (yyvsp[(2) - (4)].boolean); - } + ;} break; case 203: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1256 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); p->markPropertyStart(); (yyval.boolean) = (yyvsp[(1) - (4)].boolean); - } + ;} break; case 204: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1261 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); p->markPropertyStart(); (yyval.boolean) = (yyvsp[(1) - (6)].boolean); - } + ;} break; case 205: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1269 "../Source/WebCore/css/CSSGrammar.y" { (yyval.boolean) = false; @@ -3956,21 +3926,21 @@ yyreduce: p->m_valueList = 0; } p->markPropertyEnd((yyvsp[(5) - (5)].boolean), isPropertyParsed); - } + ;} break; case 206: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1287 "../Source/WebCore/css/CSSGrammar.y" { (yyval.boolean) = false; - } + ;} break; case 207: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1291 "../Source/WebCore/css/CSSGrammar.y" { /* The default movable type template has letter-spacing: .none; Handle this by looking for @@ -3979,102 +3949,102 @@ yyreduce: CSSParser* p = static_cast<CSSParser*>(parser); p->markPropertyEnd(false, false); (yyval.boolean) = false; - } + ;} break; case 208: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1300 "../Source/WebCore/css/CSSGrammar.y" { /* When we encounter something like p {color: red !important fail;} we should drop the declaration */ CSSParser* p = static_cast<CSSParser*>(parser); p->markPropertyEnd(false, false); (yyval.boolean) = false; - } + ;} break; case 209: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1307 "../Source/WebCore/css/CSSGrammar.y" { /* Handle this case: div { text-align: center; !important } Just reduce away the stray !important. */ (yyval.boolean) = false; - } + ;} break; case 210: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1312 "../Source/WebCore/css/CSSGrammar.y" { /* div { font-family: } Just reduce away this property with no value. */ CSSParser* p = static_cast<CSSParser*>(parser); p->markPropertyEnd(false, false); (yyval.boolean) = false; - } + ;} break; case 211: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1319 "../Source/WebCore/css/CSSGrammar.y" { /* if we come across rules with invalid values like this case: p { weight: *; }, just discard the rule */ CSSParser* p = static_cast<CSSParser*>(parser); p->markPropertyEnd(false, false); (yyval.boolean) = false; - } + ;} break; case 212: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1326 "../Source/WebCore/css/CSSGrammar.y" { /* if we come across: div { color{;color:maroon} }, ignore everything within curly brackets */ (yyval.boolean) = false; - } + ;} break; case 213: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1333 "../Source/WebCore/css/CSSGrammar.y" { (yyval.integer) = cssPropertyID((yyvsp[(1) - (2)].string)); - } + ;} break; case 214: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1339 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.boolean) = true; } + { (yyval.boolean) = true; ;} break; case 215: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1340 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.boolean) = false; } + { (yyval.boolean) = false; ;} break; case 216: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1344 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.valueList) = p->createFloatingValueList(); (yyval.valueList)->addValue(p->sinkFloatingValue((yyvsp[(1) - (1)].value))); - } + ;} break; case 217: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1349 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); @@ -4089,316 +4059,316 @@ yyreduce: } (yyval.valueList)->addValue(p->sinkFloatingValue((yyvsp[(3) - (3)].value))); } - } + ;} break; case 218: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1363 "../Source/WebCore/css/CSSGrammar.y" { (yyval.valueList) = 0; - } + ;} break; case 219: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1366 "../Source/WebCore/css/CSSGrammar.y" { (yyval.valueList) = 0; - } + ;} break; case 220: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1369 "../Source/WebCore/css/CSSGrammar.y" { (yyval.valueList) = 0; - } + ;} break; case 221: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1375 "../Source/WebCore/css/CSSGrammar.y" { (yyval.character) = '/'; - } + ;} break; case 222: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1378 "../Source/WebCore/css/CSSGrammar.y" { (yyval.character) = ','; - } + ;} break; case 223: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1381 "../Source/WebCore/css/CSSGrammar.y" { (yyval.character) = 0; - } + ;} break; case 224: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1387 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value) = (yyvsp[(1) - (1)].value); } + { (yyval.value) = (yyvsp[(1) - (1)].value); ;} break; case 225: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1388 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value) = (yyvsp[(2) - (2)].value); (yyval.value).fValue *= (yyvsp[(1) - (2)].integer); } + { (yyval.value) = (yyvsp[(2) - (2)].value); (yyval.value).fValue *= (yyvsp[(1) - (2)].integer); ;} break; case 226: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1389 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_STRING; } + { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_STRING; ;} break; case 227: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1390 "../Source/WebCore/css/CSSGrammar.y" { (yyval.value).id = cssValueKeywordID((yyvsp[(1) - (2)].string)); (yyval.value).unit = CSSPrimitiveValue::CSS_IDENT; (yyval.value).string = (yyvsp[(1) - (2)].string); - } + ;} break; case 228: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1396 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_DIMENSION; } + { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_DIMENSION; ;} break; case 229: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1397 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(2) - (3)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_DIMENSION; } + { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(2) - (3)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_DIMENSION; ;} break; case 230: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1398 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_URI; } + { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_URI; ;} break; case 231: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1399 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_UNICODE_RANGE; } + { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_UNICODE_RANGE; ;} break; case 232: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1400 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_PARSER_HEXCOLOR; } + { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_PARSER_HEXCOLOR; ;} break; case 233: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1401 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).string = CSSParserString(); (yyval.value).unit = CSSPrimitiveValue::CSS_PARSER_HEXCOLOR; } + { (yyval.value).id = 0; (yyval.value).string = CSSParserString(); (yyval.value).unit = CSSPrimitiveValue::CSS_PARSER_HEXCOLOR; ;} break; case 234: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1403 "../Source/WebCore/css/CSSGrammar.y" { (yyval.value) = (yyvsp[(1) - (1)].value); - } + ;} break; case 235: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1406 "../Source/WebCore/css/CSSGrammar.y" { (yyval.value) = (yyvsp[(1) - (1)].value); - } + ;} break; case 236: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1409 "../Source/WebCore/css/CSSGrammar.y" { (yyval.value) = (yyvsp[(1) - (1)].value); - } + ;} break; case 237: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1412 "../Source/WebCore/css/CSSGrammar.y" { /* Handle width: %; */ (yyval.value).id = 0; (yyval.value).unit = 0; - } + ;} break; case 238: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1418 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).isInt = true; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; } + { (yyval.value).id = 0; (yyval.value).isInt = true; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; ;} break; case 239: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1419 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).isInt = false; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; } + { (yyval.value).id = 0; (yyval.value).isInt = false; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; ;} break; case 240: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1420 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PERCENTAGE; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PERCENTAGE; ;} break; case 241: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1421 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PX; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PX; ;} break; case 242: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1422 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_CM; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_CM; ;} break; case 243: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1423 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_MM; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_MM; ;} break; case 244: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1424 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_IN; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_IN; ;} break; case 245: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1425 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PT; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PT; ;} break; case 246: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1426 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PC; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PC; ;} break; case 247: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1427 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_DEG; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_DEG; ;} break; case 248: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1428 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_RAD; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_RAD; ;} break; case 249: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1429 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_GRAD; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_GRAD; ;} break; case 250: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1430 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_TURN; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_TURN; ;} break; case 251: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1431 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_MS; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_MS; ;} break; case 252: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1432 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_S; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_S; ;} break; case 253: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1433 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_HZ; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_HZ; ;} break; case 254: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1434 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_KHZ; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_KHZ; ;} break; case 255: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1435 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_EMS; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_EMS; ;} break; case 256: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1436 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSParserValue::Q_EMS; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSParserValue::Q_EMS; ;} break; case 257: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1437 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_EXS; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_EXS; ;} break; case 258: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1438 "../Source/WebCore/css/CSSGrammar.y" { (yyval.value).id = 0; @@ -4407,12 +4377,12 @@ yyreduce: CSSParser* p = static_cast<CSSParser*>(parser); if (Document* doc = p->document()) doc->setUsesRemUnits(true); - } + ;} break; case 259: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1449 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); @@ -4422,12 +4392,12 @@ yyreduce: (yyval.value).id = 0; (yyval.value).unit = CSSParserValue::Function; (yyval.value).function = f; - } + ;} break; case 260: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1458 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); @@ -4437,74 +4407,74 @@ yyreduce: (yyval.value).id = 0; (yyval.value).unit = CSSParserValue::Function; (yyval.value).function = f; - } + ;} break; case 261: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1470 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value) = (yyvsp[(1) - (1)].value); } + { (yyval.value) = (yyvsp[(1) - (1)].value); ;} break; case 262: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1471 "../Source/WebCore/css/CSSGrammar.y" - { (yyval.value) = (yyvsp[(2) - (2)].value); (yyval.value).fValue *= (yyvsp[(1) - (2)].integer); } + { (yyval.value) = (yyvsp[(2) - (2)].value); (yyval.value).fValue *= (yyvsp[(1) - (2)].integer); ;} break; case 263: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1475 "../Source/WebCore/css/CSSGrammar.y" { (yyval.character) = '+'; - } + ;} break; case 264: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1478 "../Source/WebCore/css/CSSGrammar.y" { (yyval.character) = '-'; - } + ;} break; case 265: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1481 "../Source/WebCore/css/CSSGrammar.y" { (yyval.character) = '*'; - } + ;} break; case 266: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1484 "../Source/WebCore/css/CSSGrammar.y" { (yyval.character) = '/'; - } + ;} break; case 267: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1487 "../Source/WebCore/css/CSSGrammar.y" { if (equalIgnoringCase("mod", (yyvsp[(1) - (2)].string).characters, (yyvsp[(1) - (2)].string).length)) (yyval.character) = '%'; else (yyval.character) = 0; - } + ;} break; case 268: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1496 "../Source/WebCore/css/CSSGrammar.y" { if ((yyvsp[(3) - (6)].valueList)) { @@ -4518,23 +4488,23 @@ yyreduce: (yyval.valueList)->addValue(v); } else (yyval.valueList) = 0; - } + ;} break; case 269: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1511 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.valueList) = p->createFloatingValueList(); (yyval.valueList)->addValue(p->sinkFloatingValue((yyvsp[(1) - (2)].value))); - } + ;} break; case 270: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1516 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); @@ -4549,12 +4519,12 @@ yyreduce: } else (yyval.valueList) = 0; - } + ;} break; case 271: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1530 "../Source/WebCore/css/CSSGrammar.y" { if ((yyvsp[(1) - (3)].valueList) && (yyvsp[(2) - (3)].character) && (yyvsp[(3) - (3)].valueList)) { @@ -4567,30 +4537,30 @@ yyreduce: (yyval.valueList)->extend(*((yyvsp[(3) - (3)].valueList))); } else (yyval.valueList) = 0; - } + ;} break; case 273: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1543 "../Source/WebCore/css/CSSGrammar.y" { (yyval.valueList) = 0; - } + ;} break; case 274: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1549 "../Source/WebCore/css/CSSGrammar.y" { (yyval.valueList) = (yyvsp[(1) - (1)].valueList); - } + ;} break; case 275: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1552 "../Source/WebCore/css/CSSGrammar.y" { if ((yyvsp[(1) - (4)].valueList) && (yyvsp[(4) - (4)].valueList)) { @@ -4603,12 +4573,12 @@ yyreduce: (yyval.valueList)->extend(*((yyvsp[(4) - (4)].valueList))); } else (yyval.valueList) = 0; - } + ;} break; case 276: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1567 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); @@ -4618,39 +4588,39 @@ yyreduce: (yyval.value).id = 0; (yyval.value).unit = CSSParserValue::Function; (yyval.value).function = f; - } + ;} break; case 277: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1576 "../Source/WebCore/css/CSSGrammar.y" { YYERROR; - } + ;} break; case 278: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1583 "../Source/WebCore/css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (1)].string); - } + ;} break; case 279: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1586 "../Source/WebCore/css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (1)].string); - } + ;} break; case 280: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1592 "../Source/WebCore/css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); @@ -4660,98 +4630,87 @@ yyreduce: (yyval.value).id = 0; (yyval.value).unit = CSSParserValue::Function; (yyval.value).function = f; - } + ;} break; case 281: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1601 "../Source/WebCore/css/CSSGrammar.y" { YYERROR; - } + ;} break; case 282: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1609 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = 0; - } + ;} break; case 283: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1612 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = 0; - } + ;} break; case 284: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1618 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = 0; - } + ;} break; case 285: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1621 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = 0; - } + ;} break; case 286: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1627 "../Source/WebCore/css/CSSGrammar.y" { (yyval.rule) = 0; - } + ;} break; case 287: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1645 "../Source/WebCore/css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->invalidBlockHit(); - } + ;} break; case 288: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 1648 "../Source/WebCore/css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->invalidBlockHit(); - } + ;} break; -/* Line 1806 of yacc.c */ -#line 4742 "/Source/WebCore/generated/CSSGrammar.tab.c" +/* Line 1455 of yacc.c */ +#line 4712 "/Source/WebCore/generated/CSSGrammar.tab.c" default: break; } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); @@ -4779,10 +4738,6 @@ yyreduce: | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { @@ -4790,36 +4745,37 @@ yyerrlab: #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } } -# undef YYSYNTAX_ERROR #endif } @@ -4878,7 +4834,7 @@ yyerrlab1: for (;;) { yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) + if (yyn != YYPACT_NINF) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) @@ -4937,13 +4893,8 @@ yyexhaustedlab: yyreturn: if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - } + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); @@ -4968,7 +4919,7 @@ yyreturn: -/* Line 2067 of yacc.c */ +/* Line 1675 of yacc.c */ #line 1658 "../Source/WebCore/css/CSSGrammar.y" diff --git a/src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.h b/src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.h index 59225d8..2fcae75 100644 --- a/src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.h +++ b/src/3rdparty/webkit/Source/WebCore/generated/CSSGrammar.h @@ -1,10 +1,12 @@ #ifndef CSSGRAMMAR_H #define CSSGRAMMAR_H -/* A Bison parser, made by GNU Bison 2.5. */ -/* Bison interface for Yacc-like parsers in C +/* A Bison parser, made by GNU Bison 2.4.1. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -128,7 +130,7 @@ typedef union YYSTYPE { -/* Line 2068 of yacc.c */ +/* Line 1676 of yacc.c */ #line 63 "../Source/WebCore/css/CSSGrammar.y" bool boolean; @@ -156,8 +158,8 @@ typedef union YYSTYPE -/* Line 2068 of yacc.c */ -#line 159 "/Source/WebCore/generated/CSSGrammar.tab.h" +/* Line 1676 of yacc.c */ +#line 161 "/Source/WebCore/generated/CSSGrammar.tab.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/src/3rdparty/webkit/Source/WebCore/generated/CSSPropertyNames.cpp b/src/3rdparty/webkit/Source/WebCore/generated/CSSPropertyNames.cpp index 945ba7d..1294a34 100644 --- a/src/3rdparty/webkit/Source/WebCore/generated/CSSPropertyNames.cpp +++ b/src/3rdparty/webkit/Source/WebCore/generated/CSSPropertyNames.cpp @@ -1,4 +1,4 @@ -/* C++ code produced by gperf version 3.0.4 */ +/* C++ code produced by gperf version 3.0.3 */ /* Command-line: gperf --key-positions='*' -D -n -s 2 CSSPropertyNames.gperf */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ diff --git a/src/3rdparty/webkit/Source/WebCore/generated/CSSValueKeywords.cpp b/src/3rdparty/webkit/Source/WebCore/generated/CSSValueKeywords.cpp index 92c7541..081d323 100644 --- a/src/3rdparty/webkit/Source/WebCore/generated/CSSValueKeywords.cpp +++ b/src/3rdparty/webkit/Source/WebCore/generated/CSSValueKeywords.cpp @@ -1,4 +1,4 @@ -/* C++ code produced by gperf version 3.0.4 */ +/* C++ code produced by gperf version 3.0.3 */ /* Command-line: gperf --key-positions='*' -D -n -s 2 CSSValueKeywords.gperf */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ diff --git a/src/3rdparty/webkit/Source/WebCore/generated/ColorData.cpp b/src/3rdparty/webkit/Source/WebCore/generated/ColorData.cpp index da31ef8..3b09b89 100644 --- a/src/3rdparty/webkit/Source/WebCore/generated/ColorData.cpp +++ b/src/3rdparty/webkit/Source/WebCore/generated/ColorData.cpp @@ -1,4 +1,4 @@ -/* C++ code produced by gperf version 3.0.4 */ +/* C++ code produced by gperf version 3.0.3 */ /* Command-line: gperf --key-positions='*' -D -s 2 /Source/WebCore/platform/ColorData.gperf */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ diff --git a/src/3rdparty/webkit/Source/WebCore/generated/DocTypeStrings.cpp b/src/3rdparty/webkit/Source/WebCore/generated/DocTypeStrings.cpp index 5667009..e0a2b4f 100644 --- a/src/3rdparty/webkit/Source/WebCore/generated/DocTypeStrings.cpp +++ b/src/3rdparty/webkit/Source/WebCore/generated/DocTypeStrings.cpp @@ -1,4 +1,4 @@ -/* C++ code produced by gperf version 3.0.4 */ +/* C++ code produced by gperf version 3.0.3 */ /* Command-line: gperf --key-positions='*' -s 2 /Source/WebCore/html/DocTypeStrings.gperf */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ diff --git a/src/3rdparty/webkit/Source/WebCore/generated/JSInternals.cpp b/src/3rdparty/webkit/Source/WebCore/generated/JSInternals.cpp new file mode 100644 index 0000000..1a29b36 --- /dev/null +++ b/src/3rdparty/webkit/Source/WebCore/generated/JSInternals.cpp @@ -0,0 +1,134 @@ +/* + This file is part of the WebKit open source project. + This file has been generated by generate-bindings.pl. DO NOT MODIFY! + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "config.h" +#include "JSInternals.h" + +#include "ExceptionCode.h" +#include "Internals.h" +#include "JSDOMBinding.h" +#include "JSDocument.h" +#include <runtime/Error.h> +#include <wtf/GetPtr.h> + +using namespace JSC; + +namespace WebCore { + +ASSERT_CLASS_FITS_IN_CELL(JSInternals); + +/* Hash table for prototype */ +#if ENABLE(JIT) +#define THUNK_GENERATOR(generator) , generator +#else +#define THUNK_GENERATOR(generator) +#endif + +static const HashTableValue JSInternalsPrototypeTableValues[3] = +{ + { "setPasswordEchoEnabled", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsInternalsPrototypeFunctionSetPasswordEchoEnabled), (intptr_t)2 THUNK_GENERATOR(0) }, + { "setPasswordEchoDurationInSeconds", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsInternalsPrototypeFunctionSetPasswordEchoDurationInSeconds), (intptr_t)2 THUNK_GENERATOR(0) }, + { 0, 0, 0, 0 THUNK_GENERATOR(0) } +}; + +#undef THUNK_GENERATOR +static JSC_CONST_HASHTABLE HashTable JSInternalsPrototypeTable = { 5, 3, JSInternalsPrototypeTableValues, 0 }; +const ClassInfo JSInternalsPrototype::s_info = { "InternalsPrototype", &JSC::JSObjectWithGlobalObject::s_info, &JSInternalsPrototypeTable, 0 }; + +JSObject* JSInternalsPrototype::self(ExecState* exec, JSGlobalObject* globalObject) +{ + return getDOMPrototype<JSInternals>(exec, globalObject); +} + +bool JSInternalsPrototype::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot) +{ + return getStaticFunctionSlot<JSObject>(exec, &JSInternalsPrototypeTable, this, propertyName, slot); +} + +bool JSInternalsPrototype::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor) +{ + return getStaticFunctionDescriptor<JSObject>(exec, &JSInternalsPrototypeTable, this, propertyName, descriptor); +} + +const ClassInfo JSInternals::s_info = { "Internals", &JSDOMWrapper::s_info, 0, 0 }; + +JSInternals::JSInternals(Structure* structure, JSDOMGlobalObject* globalObject, PassRefPtr<Internals> impl) + : JSDOMWrapper(structure, globalObject) + , m_impl(impl) +{ + ASSERT(inherits(&s_info)); +} + +JSObject* JSInternals::createPrototype(ExecState* exec, JSGlobalObject* globalObject) +{ + return new (exec) JSInternalsPrototype(exec->globalData(), globalObject, JSInternalsPrototype::createStructure(globalObject->globalData(), globalObject->objectPrototype())); +} + +EncodedJSValue JSC_HOST_CALL jsInternalsPrototypeFunctionSetPasswordEchoEnabled(ExecState* exec) +{ + JSValue thisValue = exec->hostThisValue(); + if (!thisValue.inherits(&JSInternals::s_info)) + return throwVMTypeError(exec); + JSInternals* castedThis = static_cast<JSInternals*>(asObject(thisValue)); + Internals* imp = static_cast<Internals*>(castedThis->impl()); + ExceptionCode ec = 0; + Document* document(toDocument(exec->argument(0))); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + bool enabled(exec->argument(1).toBoolean(exec)); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + + imp->setPasswordEchoEnabled(document, enabled, ec); + setDOMException(exec, ec); + return JSValue::encode(jsUndefined()); +} + +EncodedJSValue JSC_HOST_CALL jsInternalsPrototypeFunctionSetPasswordEchoDurationInSeconds(ExecState* exec) +{ + JSValue thisValue = exec->hostThisValue(); + if (!thisValue.inherits(&JSInternals::s_info)) + return throwVMTypeError(exec); + JSInternals* castedThis = static_cast<JSInternals*>(asObject(thisValue)); + Internals* imp = static_cast<Internals*>(castedThis->impl()); + ExceptionCode ec = 0; + Document* document(toDocument(exec->argument(0))); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + double durationInSeconds(exec->argument(1).toNumber(exec)); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + + imp->setPasswordEchoDurationInSeconds(document, durationInSeconds, ec); + setDOMException(exec, ec); + return JSValue::encode(jsUndefined()); +} + +JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, Internals* impl) +{ + return wrap<JSInternals>(exec, globalObject, impl); +} + +Internals* toInternals(JSC::JSValue value) +{ + return value.inherits(&JSInternals::s_info) ? static_cast<JSInternals*>(asObject(value))->impl() : 0; +} + +} diff --git a/src/3rdparty/webkit/Source/WebCore/generated/JSInternals.h b/src/3rdparty/webkit/Source/WebCore/generated/JSInternals.h new file mode 100644 index 0000000..08e2751 --- /dev/null +++ b/src/3rdparty/webkit/Source/WebCore/generated/JSInternals.h @@ -0,0 +1,79 @@ +/* + This file is part of the WebKit open source project. + This file has been generated by generate-bindings.pl. DO NOT MODIFY! + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef JSInternals_h +#define JSInternals_h + +#include "JSDOMBinding.h" +#include <runtime/JSGlobalObject.h> +#include <runtime/JSObjectWithGlobalObject.h> +#include <runtime/ObjectPrototype.h> + +namespace WebCore { + +class Internals; + +class JSInternals : public JSDOMWrapper { + typedef JSDOMWrapper Base; +public: + JSInternals(JSC::Structure*, JSDOMGlobalObject*, PassRefPtr<Internals>); + static JSC::JSObject* createPrototype(JSC::ExecState*, JSC::JSGlobalObject*); + static const JSC::ClassInfo s_info; + + static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype) + { + return JSC::Structure::create(globalData, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info); + } + + Internals* impl() const { return m_impl.get(); } + +private: + RefPtr<Internals> m_impl; +protected: + static const unsigned StructureFlags = Base::StructureFlags; +}; + +JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, Internals*); +Internals* toInternals(JSC::JSValue); + +class JSInternalsPrototype : public JSC::JSObjectWithGlobalObject { + typedef JSC::JSObjectWithGlobalObject Base; +public: + static JSC::JSObject* self(JSC::ExecState*, JSC::JSGlobalObject*); + static const JSC::ClassInfo s_info; + virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&); + virtual bool getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier&, JSC::PropertyDescriptor&); + static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype) + { + return JSC::Structure::create(globalData, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info); + } + JSInternalsPrototype(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) : JSC::JSObjectWithGlobalObject(globalData, globalObject, structure) { } +protected: + static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags; +}; + +// Functions + +JSC::EncodedJSValue JSC_HOST_CALL jsInternalsPrototypeFunctionSetPasswordEchoEnabled(JSC::ExecState*); +JSC::EncodedJSValue JSC_HOST_CALL jsInternalsPrototypeFunctionSetPasswordEchoDurationInSeconds(JSC::ExecState*); + +} // namespace WebCore + +#endif diff --git a/src/3rdparty/webkit/Source/WebCore/generated/JSWebGLRenderingContext.cpp b/src/3rdparty/webkit/Source/WebCore/generated/JSWebGLRenderingContext.cpp index 6f38364..e2a03c2 100644 --- a/src/3rdparty/webkit/Source/WebCore/generated/JSWebGLRenderingContext.cpp +++ b/src/3rdparty/webkit/Source/WebCore/generated/JSWebGLRenderingContext.cpp @@ -30,6 +30,7 @@ #include "JSDOMBinding.h" #include "JSHTMLCanvasElement.h" #include "JSHTMLImageElement.h" +#include "JSHTMLVideoElement.h" #include "JSImageData.h" #include "JSWebGLActiveInfo.h" #include "JSWebGLBuffer.h" @@ -2985,6 +2986,40 @@ static EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionTexI return JSValue::encode(jsUndefined()); } +static EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionTexImage2D5(ExecState* exec) +{ + JSValue thisValue = exec->hostThisValue(); + if (!thisValue.inherits(&JSWebGLRenderingContext::s_info)) + return throwVMTypeError(exec); + JSWebGLRenderingContext* castedThis = static_cast<JSWebGLRenderingContext*>(asObject(thisValue)); + WebGLRenderingContext* imp = static_cast<WebGLRenderingContext*>(castedThis->impl()); + ExceptionCode ec = 0; + unsigned target(exec->argument(0).toUInt32(exec)); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + int level(exec->argument(1).toInt32(exec)); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + unsigned internalformat(exec->argument(2).toUInt32(exec)); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + unsigned format(exec->argument(3).toUInt32(exec)); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + unsigned type(exec->argument(4).toUInt32(exec)); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + if (exec->argumentCount() > 5 && !exec->argument(5).isUndefinedOrNull() && !exec->argument(5).inherits(&JSHTMLVideoElement::s_info)) + return throwVMTypeError(exec); + HTMLVideoElement* video(toHTMLVideoElement(exec->argument(5))); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + + imp->texImage2D(target, level, internalformat, format, type, video, ec); + setDOMException(exec, ec); + return JSValue::encode(jsUndefined()); +} + EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionTexImage2D(ExecState* exec) { if ((exec->argumentCount() == 9 && (exec->argument(8).isNull() || (exec->argument(8).isObject() && asObject(exec->argument(8))->inherits(&JSArrayBufferView::s_info))))) @@ -2995,6 +3030,8 @@ EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionTexImage2D( return jsWebGLRenderingContextPrototypeFunctionTexImage2D3(exec); if ((exec->argumentCount() == 6 && (exec->argument(5).isNull() || (exec->argument(5).isObject() && asObject(exec->argument(5))->inherits(&JSHTMLCanvasElement::s_info))))) return jsWebGLRenderingContextPrototypeFunctionTexImage2D4(exec); + if ((exec->argumentCount() == 6 && (exec->argument(5).isNull() || (exec->argument(5).isObject() && asObject(exec->argument(5))->inherits(&JSHTMLVideoElement::s_info))))) + return jsWebGLRenderingContextPrototypeFunctionTexImage2D5(exec); return throwVMTypeError(exec); } @@ -3152,6 +3189,43 @@ static EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionTexS return JSValue::encode(jsUndefined()); } +static EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionTexSubImage2D5(ExecState* exec) +{ + JSValue thisValue = exec->hostThisValue(); + if (!thisValue.inherits(&JSWebGLRenderingContext::s_info)) + return throwVMTypeError(exec); + JSWebGLRenderingContext* castedThis = static_cast<JSWebGLRenderingContext*>(asObject(thisValue)); + WebGLRenderingContext* imp = static_cast<WebGLRenderingContext*>(castedThis->impl()); + ExceptionCode ec = 0; + unsigned target(exec->argument(0).toUInt32(exec)); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + int level(exec->argument(1).toInt32(exec)); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + int xoffset(exec->argument(2).toInt32(exec)); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + int yoffset(exec->argument(3).toInt32(exec)); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + unsigned format(exec->argument(4).toUInt32(exec)); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + unsigned type(exec->argument(5).toUInt32(exec)); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + if (exec->argumentCount() > 6 && !exec->argument(6).isUndefinedOrNull() && !exec->argument(6).inherits(&JSHTMLVideoElement::s_info)) + return throwVMTypeError(exec); + HTMLVideoElement* video(toHTMLVideoElement(exec->argument(6))); + if (exec->hadException()) + return JSValue::encode(jsUndefined()); + + imp->texSubImage2D(target, level, xoffset, yoffset, format, type, video, ec); + setDOMException(exec, ec); + return JSValue::encode(jsUndefined()); +} + EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionTexSubImage2D(ExecState* exec) { if ((exec->argumentCount() == 9 && (exec->argument(8).isNull() || (exec->argument(8).isObject() && asObject(exec->argument(8))->inherits(&JSArrayBufferView::s_info))))) @@ -3162,6 +3236,8 @@ EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionTexSubImage return jsWebGLRenderingContextPrototypeFunctionTexSubImage2D3(exec); if ((exec->argumentCount() == 7 && (exec->argument(6).isNull() || (exec->argument(6).isObject() && asObject(exec->argument(6))->inherits(&JSHTMLCanvasElement::s_info))))) return jsWebGLRenderingContextPrototypeFunctionTexSubImage2D4(exec); + if ((exec->argumentCount() == 7 && (exec->argument(6).isNull() || (exec->argument(6).isObject() && asObject(exec->argument(6))->inherits(&JSHTMLVideoElement::s_info))))) + return jsWebGLRenderingContextPrototypeFunctionTexSubImage2D5(exec); return throwVMTypeError(exec); } diff --git a/src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.cpp b/src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.cpp index dc82e12..4e5cb97 100644 --- a/src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.cpp +++ b/src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.cpp @@ -1,8 +1,10 @@ -/* A Bison parser, made by GNU Bison 2.5. */ -/* Bison implementation for Yacc-like parsers in C +/* A Bison parser, made by GNU Bison 2.4.1. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +46,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.5" +#define YYBISON_VERSION "2.4.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -73,7 +75,7 @@ /* Copy the first part of user declarations. */ -/* Line 268 of yacc.c */ +/* Line 189 of yacc.c */ #line 28 "../Source/WebCore/xml/XPathGrammar.y" @@ -104,8 +106,8 @@ using namespace XPath; -/* Line 268 of yacc.c */ -#line 109 "/Source/WebCore/generated/XPathGrammar.tab.c" +/* Line 189 of yacc.c */ +#line 111 "/Source/WebCore/generated/XPathGrammar.tab.c" /* Enabling traces. */ #ifndef YYDEBUG @@ -159,7 +161,7 @@ using namespace XPath; typedef union YYSTYPE { -/* Line 293 of yacc.c */ +/* Line 214 of yacc.c */ #line 60 "../Source/WebCore/xml/XPathGrammar.y" Step::Axis axis; @@ -175,8 +177,8 @@ typedef union YYSTYPE -/* Line 293 of yacc.c */ -#line 180 "/Source/WebCore/generated/XPathGrammar.tab.c" +/* Line 214 of yacc.c */ +#line 182 "/Source/WebCore/generated/XPathGrammar.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -186,7 +188,7 @@ typedef union YYSTYPE /* Copy the second part of user declarations. */ -/* Line 343 of yacc.c */ +/* Line 264 of yacc.c */ #line 73 "../Source/WebCore/xml/XPathGrammar.y" @@ -195,8 +197,8 @@ static void xpathyyerror(const char*) { } -/* Line 343 of yacc.c */ -#line 200 "/Source/WebCore/generated/XPathGrammar.tab.c" +/* Line 264 of yacc.c */ +#line 202 "/Source/WebCore/generated/XPathGrammar.tab.c" #ifdef short # undef short @@ -246,7 +248,7 @@ typedef short int yytype_int16; #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS +# if YYENABLE_NLS # if ENABLE_NLS # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) @@ -299,11 +301,11 @@ YYID (yyi) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 +# ifndef _STDLIB_H +# define _STDLIB_H 1 # endif # endif # endif @@ -326,24 +328,24 @@ YYID (yyi) # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif -# if (defined __cplusplus && ! defined EXIT_SUCCESS \ +# if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 +# ifndef _STDLIB_H +# define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif @@ -372,7 +374,23 @@ union yyalloc ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) -# define YYCOPY_NEEDED 1 +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of @@ -392,26 +410,6 @@ union yyalloc #endif -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (YYID (0)) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - /* YYFINAL -- State number of the termination state. */ #define YYFINAL 47 /* YYLAST -- Last index in YYTABLE. */ @@ -570,8 +568,8 @@ static const yytype_uint8 yyr2[] = 1, 2 }; -/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE doesn't specify something else to do. Zero +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { @@ -622,7 +620,8 @@ static const yytype_int8 yypgoto[] = /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF, syntax error. */ + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -1 static const yytype_uint8 yytable[] = { @@ -641,12 +640,6 @@ static const yytype_uint8 yytable[] = 15 }; -#define yypact_value_is_default(yystate) \ - ((yystate) == (-44)) - -#define yytable_value_is_error(yytable_value) \ - YYID (0) - static const yytype_int8 yycheck[] = { 1, 12, 0, 19, 22, 48, 49, 43, 10, 11, @@ -692,18 +685,9 @@ static const yytype_uint8 yystos[] = /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. However, - YYFAIL appears to be in use. Nevertheless, it is formally deprecated - in Bison 2.4.2's NEWS entry, where a plan to phase it out is - discussed. */ + Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab -#if defined YYFAIL - /* This is here to suppress warnings from the GCC cpp's - -Wunused-macros. Normally we don't worry about that warning, but - some users do, and we want to make it easy for users to remove - YYFAIL uses, which will produce warnings from Bison 2.5. */ -#endif #define YYRECOVERING() (!!yyerrstatus) @@ -713,6 +697,7 @@ do \ { \ yychar = (Token); \ yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ @@ -754,10 +739,19 @@ while (YYID (0)) #endif -/* This macro is provided for backward compatibility. */ +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif #endif @@ -949,6 +943,7 @@ int yydebug; # define YYMAXDEPTH 10000 #endif + #if YYERROR_VERBOSE @@ -1051,142 +1046,115 @@ yytnamerr (char *yyres, const char *yystr) } # endif -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) { - YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - YYSIZE_T yysize1; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = 0; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - Assume YYFAIL is not used. It's too flawed to consider. See - <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html> - for details. YYERROR is fine as it does not invoke this - function. - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (0, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - } - } + int yyn = yypact[yystate]; - switch (yycount) + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } - yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } + if (yysize_overflow) + return YYSIZE_MAXIMUM; - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } } #endif /* YYERROR_VERBOSE */ + /*-----------------------------------------------. | Release the memory associated to this symbol. | @@ -1219,7 +1187,6 @@ yydestruct (yymsg, yytype, yyvaluep) } } - /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus @@ -1236,9 +1203,12 @@ int yyparse (); #endif /* ! YYPARSE_PARAM */ -/*----------. -| yyparse. | -`----------*/ + + + +/*-------------------------. +| yyparse or yypush_parse. | +`-------------------------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ @@ -1425,7 +1395,7 @@ yybackup: /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) + if (yyn == YYPACT_NINF) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ @@ -1456,8 +1426,8 @@ yybackup: yyn = yytable[yyn]; if (yyn <= 0) { - if (yytable_value_is_error (yyn)) - goto yyerrlab; + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; yyn = -yyn; goto yyreduce; } @@ -1512,98 +1482,98 @@ yyreduce: { case 2: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 122 "../Source/WebCore/xml/XPathGrammar.y" { PARSER->m_topExpr = (yyvsp[(1) - (1)].expr); - } + ;} break; case 3: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 129 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.locationPath)->setAbsolute(false); - } + ;} break; case 4: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 134 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.locationPath)->setAbsolute(true); - } + ;} break; case 5: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 141 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.locationPath) = new LocationPath; PARSER->registerParseNode((yyval.locationPath)); - } + ;} break; case 6: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 147 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.locationPath) = (yyvsp[(2) - (2)].locationPath); - } + ;} break; case 7: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 152 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.locationPath) = (yyvsp[(2) - (2)].locationPath); (yyval.locationPath)->insertFirstStep((yyvsp[(1) - (2)].step)); PARSER->unregisterParseNode((yyvsp[(1) - (2)].step)); - } + ;} break; case 8: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 161 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.locationPath) = new LocationPath; (yyval.locationPath)->appendStep((yyvsp[(1) - (1)].step)); PARSER->unregisterParseNode((yyvsp[(1) - (1)].step)); PARSER->registerParseNode((yyval.locationPath)); - } + ;} break; case 9: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 169 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.locationPath)->appendStep((yyvsp[(3) - (3)].step)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].step)); - } + ;} break; case 10: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 175 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.locationPath)->appendStep((yyvsp[(2) - (3)].step)); (yyval.locationPath)->appendStep((yyvsp[(3) - (3)].step)); PARSER->unregisterParseNode((yyvsp[(2) - (3)].step)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].step)); - } + ;} break; case 11: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 185 "../Source/WebCore/xml/XPathGrammar.y" { if ((yyvsp[(2) - (2)].predList)) { @@ -1613,12 +1583,12 @@ yyreduce: (yyval.step) = new Step(Step::ChildAxis, *(yyvsp[(1) - (2)].nodeTest)); PARSER->deleteNodeTest((yyvsp[(1) - (2)].nodeTest)); PARSER->registerParseNode((yyval.step)); - } + ;} break; case 12: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 196 "../Source/WebCore/xml/XPathGrammar.y" { String localName; @@ -1635,12 +1605,12 @@ yyreduce: (yyval.step) = new Step(Step::ChildAxis, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI)); PARSER->deleteString((yyvsp[(1) - (2)].str)); PARSER->registerParseNode((yyval.step)); - } + ;} break; case 13: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 214 "../Source/WebCore/xml/XPathGrammar.y" { if ((yyvsp[(3) - (3)].predList)) { @@ -1650,12 +1620,12 @@ yyreduce: (yyval.step) = new Step((yyvsp[(1) - (3)].axis), *(yyvsp[(2) - (3)].nodeTest)); PARSER->deleteNodeTest((yyvsp[(2) - (3)].nodeTest)); PARSER->registerParseNode((yyval.step)); - } + ;} break; case 14: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 225 "../Source/WebCore/xml/XPathGrammar.y" { String localName; @@ -1672,21 +1642,21 @@ yyreduce: (yyval.step) = new Step((yyvsp[(1) - (3)].axis), Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI)); PARSER->deleteString((yyvsp[(2) - (3)].str)); PARSER->registerParseNode((yyval.step)); - } + ;} break; case 17: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 249 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.axis) = Step::AttributeAxis; - } + ;} break; case 18: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 256 "../Source/WebCore/xml/XPathGrammar.y" { if (*(yyvsp[(1) - (3)].str) == "node") @@ -1698,147 +1668,147 @@ yyreduce: PARSER->deleteString((yyvsp[(1) - (3)].str)); PARSER->registerNodeTest((yyval.nodeTest)); - } + ;} break; case 19: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 269 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.nodeTest) = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest); PARSER->deleteString((yyvsp[(1) - (3)].str)); PARSER->registerNodeTest((yyval.nodeTest)); - } + ;} break; case 20: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 276 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.nodeTest) = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest, (yyvsp[(3) - (4)].str)->stripWhiteSpace()); PARSER->deleteString((yyvsp[(1) - (4)].str)); PARSER->deleteString((yyvsp[(3) - (4)].str)); PARSER->registerNodeTest((yyval.nodeTest)); - } + ;} break; case 21: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 286 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.predList) = 0; - } + ;} break; case 23: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 295 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.predList) = new Vector<Predicate*>; (yyval.predList)->append(new Predicate((yyvsp[(1) - (1)].expr))); PARSER->unregisterParseNode((yyvsp[(1) - (1)].expr)); PARSER->registerPredicateVector((yyval.predList)); - } + ;} break; case 24: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 303 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.predList)->append(new Predicate((yyvsp[(2) - (2)].expr))); PARSER->unregisterParseNode((yyvsp[(2) - (2)].expr)); - } + ;} break; case 25: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 311 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = (yyvsp[(2) - (3)].expr); - } + ;} break; case 26: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 318 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.step) = new Step(Step::DescendantOrSelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); PARSER->registerParseNode((yyval.step)); - } + ;} break; case 27: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 326 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.step) = new Step(Step::SelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); PARSER->registerParseNode((yyval.step)); - } + ;} break; case 28: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 332 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.step) = new Step(Step::ParentAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); PARSER->registerParseNode((yyval.step)); - } + ;} break; case 29: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 340 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = new VariableReference(*(yyvsp[(1) - (1)].str)); PARSER->deleteString((yyvsp[(1) - (1)].str)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; case 30: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 347 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = (yyvsp[(2) - (3)].expr); - } + ;} break; case 31: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 352 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = new StringExpression(*(yyvsp[(1) - (1)].str)); PARSER->deleteString((yyvsp[(1) - (1)].str)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; case 32: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 359 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = new Number((yyvsp[(1) - (1)].str)->toDouble()); PARSER->deleteString((yyvsp[(1) - (1)].str)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; case 34: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 370 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = createFunction(*(yyvsp[(1) - (3)].str)); @@ -1846,12 +1816,12 @@ yyreduce: YYABORT; PARSER->deleteString((yyvsp[(1) - (3)].str)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; case 35: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 379 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = createFunction(*(yyvsp[(1) - (4)].str), *(yyvsp[(3) - (4)].argList)); @@ -1860,34 +1830,34 @@ yyreduce: PARSER->deleteString((yyvsp[(1) - (4)].str)); PARSER->deleteExpressionVector((yyvsp[(3) - (4)].argList)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; case 36: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 391 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.argList) = new Vector<Expression*>; (yyval.argList)->append((yyvsp[(1) - (1)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (1)].expr)); PARSER->registerExpressionVector((yyval.argList)); - } + ;} break; case 37: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 399 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.argList)->append((yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr)); - } + ;} break; case 40: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 413 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = new Union; @@ -1896,21 +1866,21 @@ yyreduce: PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; case 41: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 425 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = (yyvsp[(1) - (1)].locationPath); - } + ;} break; case 43: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 432 "../Source/WebCore/xml/XPathGrammar.y" { (yyvsp[(3) - (3)].locationPath)->setAbsolute(true); @@ -1918,12 +1888,12 @@ yyreduce: PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].locationPath)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; case 44: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 441 "../Source/WebCore/xml/XPathGrammar.y" { (yyvsp[(3) - (3)].locationPath)->insertFirstStep((yyvsp[(2) - (3)].step)); @@ -1933,134 +1903,123 @@ yyreduce: PARSER->unregisterParseNode((yyvsp[(2) - (3)].step)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].locationPath)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; case 46: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 456 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = new Filter((yyvsp[(1) - (2)].expr), *(yyvsp[(2) - (2)].predList)); PARSER->unregisterParseNode((yyvsp[(1) - (2)].expr)); PARSER->deletePredicateVector((yyvsp[(2) - (2)].predList)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; case 48: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 468 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = new LogicalOp(LogicalOp::OP_Or, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; case 50: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 480 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = new LogicalOp(LogicalOp::OP_And, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; case 52: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 492 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = new EqTestOp((yyvsp[(2) - (3)].eqop), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; case 54: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 504 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = new EqTestOp((yyvsp[(2) - (3)].eqop), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; case 56: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 516 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = new NumericOp(NumericOp::OP_Add, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; case 57: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 524 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = new NumericOp(NumericOp::OP_Sub, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; case 59: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 536 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = new NumericOp((yyvsp[(2) - (3)].numop), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; case 61: -/* Line 1806 of yacc.c */ +/* Line 1455 of yacc.c */ #line 548 "../Source/WebCore/xml/XPathGrammar.y" { (yyval.expr) = new Negative; (yyval.expr)->addSubExpression((yyvsp[(2) - (2)].expr)); PARSER->unregisterParseNode((yyvsp[(2) - (2)].expr)); PARSER->registerParseNode((yyval.expr)); - } + ;} break; -/* Line 1806 of yacc.c */ -#line 2051 "/Source/WebCore/generated/XPathGrammar.tab.c" +/* Line 1455 of yacc.c */ +#line 2021 "/Source/WebCore/generated/XPathGrammar.tab.c" default: break; } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); @@ -2088,10 +2047,6 @@ yyreduce: | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { @@ -2099,36 +2054,37 @@ yyerrlab: #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } } -# undef YYSYNTAX_ERROR #endif } @@ -2187,7 +2143,7 @@ yyerrlab1: for (;;) { yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) + if (yyn != YYPACT_NINF) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) @@ -2246,13 +2202,8 @@ yyexhaustedlab: yyreturn: if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - } + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); @@ -2277,7 +2228,7 @@ yyreturn: -/* Line 2067 of yacc.c */ +/* Line 1675 of yacc.c */ #line 556 "../Source/WebCore/xml/XPathGrammar.y" diff --git a/src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.h b/src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.h index 2911272..fa6a7b3 100644 --- a/src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.h +++ b/src/3rdparty/webkit/Source/WebCore/generated/XPathGrammar.h @@ -1,8 +1,10 @@ -/* A Bison parser, made by GNU Bison 2.5. */ -/* Bison interface for Yacc-like parsers in C +/* A Bison parser, made by GNU Bison 2.4.1. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -64,7 +66,7 @@ typedef union YYSTYPE { -/* Line 2068 of yacc.c */ +/* Line 1676 of yacc.c */ #line 60 "../Source/WebCore/xml/XPathGrammar.y" Step::Axis axis; @@ -80,8 +82,8 @@ typedef union YYSTYPE -/* Line 2068 of yacc.c */ -#line 85 "/Source/WebCore/generated/XPathGrammar.tab.h" +/* Line 1676 of yacc.c */ +#line 87 "/Source/WebCore/generated/XPathGrammar.tab.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/src/3rdparty/webkit/Source/WebCore/html/HTMLLinkElement.cpp b/src/3rdparty/webkit/Source/WebCore/html/HTMLLinkElement.cpp index 633dd1e..d7ca918 100644 --- a/src/3rdparty/webkit/Source/WebCore/html/HTMLLinkElement.cpp +++ b/src/3rdparty/webkit/Source/WebCore/html/HTMLLinkElement.cpp @@ -83,6 +83,9 @@ HTMLLinkElement::~HTMLLinkElement() if (m_cachedLinkResource) m_cachedLinkResource->removeClient(this); #endif + + if (inDocument()) + document()->removeStyleSheetCandidateNode(this); } void HTMLLinkElement::setDisabled(bool disabled) diff --git a/src/3rdparty/webkit/Source/WebCore/html/HTMLSourceElement.cpp b/src/3rdparty/webkit/Source/WebCore/html/HTMLSourceElement.cpp index 59b3882..0631a20 100644 --- a/src/3rdparty/webkit/Source/WebCore/html/HTMLSourceElement.cpp +++ b/src/3rdparty/webkit/Source/WebCore/html/HTMLSourceElement.cpp @@ -57,13 +57,15 @@ PassRefPtr<HTMLSourceElement> HTMLSourceElement::create(const QualifiedName& tag void HTMLSourceElement::insertedIntoTree(bool deep) { HTMLElement::insertedIntoTree(deep); - if (parentNode() && (parentNode()->hasTagName(audioTag) || parentNode()->hasTagName(videoTag))) + Element* parent = parentElement(); + if (parent && parent->isMediaElement()) static_cast<HTMLMediaElement*>(parentNode())->sourceWasAdded(this); } void HTMLSourceElement::willRemove() { - if (parentNode() && (parentNode()->hasTagName(audioTag) || parentNode()->hasTagName(videoTag))) + Element* parent = parentElement(); + if (parent && parent->isMediaElement()) static_cast<HTMLMediaElement*>(parentNode())->sourceWillBeRemoved(this); HTMLElement::willRemove(); } diff --git a/src/3rdparty/webkit/Source/WebCore/html/HTMLStyleElement.cpp b/src/3rdparty/webkit/Source/WebCore/html/HTMLStyleElement.cpp index 0f256e1..0213f40 100644 --- a/src/3rdparty/webkit/Source/WebCore/html/HTMLStyleElement.cpp +++ b/src/3rdparty/webkit/Source/WebCore/html/HTMLStyleElement.cpp @@ -44,8 +44,7 @@ inline HTMLStyleElement::HTMLStyleElement(const QualifiedName& tagName, Document HTMLStyleElement::~HTMLStyleElement() { - if (m_sheet) - m_sheet->clearOwnerNode(); + StyleElement::clearDocumentData(document(), this); } PassRefPtr<HTMLStyleElement> HTMLStyleElement::create(const QualifiedName& tagName, Document* document, bool createdByParser) diff --git a/src/3rdparty/webkit/Source/WebCore/html/HTMLTrackElement.cpp b/src/3rdparty/webkit/Source/WebCore/html/HTMLTrackElement.cpp index 63f2788..4de878b 100644 --- a/src/3rdparty/webkit/Source/WebCore/html/HTMLTrackElement.cpp +++ b/src/3rdparty/webkit/Source/WebCore/html/HTMLTrackElement.cpp @@ -53,7 +53,8 @@ PassRefPtr<HTMLTrackElement> HTMLTrackElement::create(const QualifiedName& tagNa void HTMLTrackElement::insertedIntoTree(bool deep) { HTMLElement::insertedIntoTree(deep); - if (parentNode() && (parentNode()->hasTagName(audioTag) || parentNode()->hasTagName(videoTag))) { + Element* parent = parentElement(); + if (parent && parent->isMediaElement()) { // TODO(annacc): // static_cast<HTMLMediaElement*>(parentNode())->trackWasAdded(this); } @@ -61,7 +62,8 @@ void HTMLTrackElement::insertedIntoTree(bool deep) void HTMLTrackElement::willRemove() { - if (parentNode() && (parentNode()->hasTagName(audioTag) || parentNode()->hasTagName(videoTag))) { + Element* parent = parentElement(); + if (parent && parent->isMediaElement()) { // TODO(annacc): // static_cast<HTMLMediaElement*>(parentNode())->trackWillBeRemoved(this); } diff --git a/src/3rdparty/webkit/Source/WebCore/html/parser/HTMLTreeBuilder.cpp b/src/3rdparty/webkit/Source/WebCore/html/parser/HTMLTreeBuilder.cpp index 054f766..4492dd2 100644 --- a/src/3rdparty/webkit/Source/WebCore/html/parser/HTMLTreeBuilder.cpp +++ b/src/3rdparty/webkit/Source/WebCore/html/parser/HTMLTreeBuilder.cpp @@ -603,13 +603,13 @@ void HTMLTreeBuilder::processCloseWhenNestedTag(AtomicHTMLToken& token) m_framesetOk = false; HTMLElementStack::ElementRecord* nodeRecord = m_tree.openElements()->topRecord(); while (1) { - ContainerNode* node = nodeRecord->node(); - if (shouldClose(node)) { + RefPtr<ContainerNode> node = nodeRecord->node(); + if (shouldClose(node.get())) { ASSERT(node->isElementNode()); - processFakeEndTag(toElement(node)->tagQName()); + processFakeEndTag(toElement(node.get())->tagQName()); break; } - if (isSpecialNode(node) && !node->hasTagName(addressTag) && !node->hasTagName(divTag) && !node->hasTagName(pTag)) + if (isSpecialNode(node.get()) && !node->hasTagName(addressTag) && !node->hasTagName(divTag) && !node->hasTagName(pTag)) break; nodeRecord = nodeRecord->next(); } @@ -1554,7 +1554,7 @@ void HTMLTreeBuilder::processAnyOtherEndTagForInBody(AtomicHTMLToken& token) ASSERT(token.type() == HTMLToken::EndTag); HTMLElementStack::ElementRecord* record = m_tree.openElements()->topRecord(); while (1) { - ContainerNode* node = record->node(); + RefPtr<ContainerNode> node = record->node(); if (node->hasLocalName(token.name())) { m_tree.generateImpliedEndTags(); // FIXME: The ElementRecord pointed to by record might be deleted by @@ -1568,13 +1568,13 @@ void HTMLTreeBuilder::processAnyOtherEndTagForInBody(AtomicHTMLToken& token) // http://www.w3.org/Bugs/Public/show_bug.cgi?id=10080 // We might have already popped the node for the token in // generateImpliedEndTags, just abort. - if (!m_tree.openElements()->contains(toElement(node))) + if (!m_tree.openElements()->contains(toElement(node.get()))) return; } - m_tree.openElements()->popUntilPopped(toElement(node)); + m_tree.openElements()->popUntilPopped(toElement(node.get())); return; } - if (isSpecialNode(node)) { + if (isSpecialNode(node.get())) { parseError(token); return; } @@ -1631,7 +1631,7 @@ void HTMLTreeBuilder::callTheAdoptionAgency(AtomicHTMLToken& token) } // 4. ASSERT(furthestBlock->isAbove(formattingElementRecord)); - ContainerNode* commonAncestor = formattingElementRecord->next()->node(); + RefPtr<ContainerNode> commonAncestor = formattingElementRecord->next()->node(); // 5. HTMLFormattingElementList::Bookmark bookmark = m_tree.activeFormattingElements()->bookmarkFor(formattingElement); // 6. diff --git a/src/3rdparty/webkit/Source/WebCore/html/shadow/MediaControlElements.cpp b/src/3rdparty/webkit/Source/WebCore/html/shadow/MediaControlElements.cpp index ac5d5e2..c3bfb9a 100644 --- a/src/3rdparty/webkit/Source/WebCore/html/shadow/MediaControlElements.cpp +++ b/src/3rdparty/webkit/Source/WebCore/html/shadow/MediaControlElements.cpp @@ -57,7 +57,7 @@ HTMLMediaElement* toParentMediaElement(RenderObject* o) { Node* node = o->node(); Node* mediaNode = node ? node->shadowAncestorNode() : 0; - if (!mediaNode || (!mediaNode->hasTagName(HTMLNames::videoTag) && !mediaNode->hasTagName(HTMLNames::audioTag))) + if (!mediaNode || !mediaNode->isElementNode() || !static_cast<Element*>(mediaNode)->isMediaElement()) return 0; return static_cast<HTMLMediaElement*>(mediaNode); diff --git a/src/3rdparty/webkit/Source/WebCore/inspector/InspectorValues.cpp b/src/3rdparty/webkit/Source/WebCore/inspector/InspectorValues.cpp index 09d1258..c80de51 100644 --- a/src/3rdparty/webkit/Source/WebCore/inspector/InspectorValues.cpp +++ b/src/3rdparty/webkit/Source/WebCore/inspector/InspectorValues.cpp @@ -620,7 +620,18 @@ void InspectorBasicValue::writeJSON(Vector<UChar>* output) const output->append(falseString, 5); } else if (type() == TypeNumber) { NumberToStringBuffer buffer; - unsigned length = DecimalNumber(m_doubleValue).toStringDecimal(buffer, WTF::NumberToStringBufferLength); + DecimalNumber decimal = m_doubleValue; + unsigned length = 0; + if (decimal.bufferLengthForStringDecimal() > WTF::NumberToStringBufferLength) { + // Not enough room for decimal. Use exponential format. + if (decimal.bufferLengthForStringExponential() > WTF::NumberToStringBufferLength) { + // Fallback for an abnormal case if it's too little even for exponential. + output->append("NaN", 3); + return; + } + length = decimal.toStringExponential(buffer, WTF::NumberToStringBufferLength); + } else + length = decimal.toStringDecimal(buffer, WTF::NumberToStringBufferLength); output->append(buffer, length); } } diff --git a/src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.cpp b/src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.cpp index 75daae5..1b046b3 100644 --- a/src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.cpp +++ b/src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.cpp @@ -1331,6 +1331,9 @@ static bool isFeedWithNestedProtocolInHTTPFamily(const KURL& url) void FrameLoader::loadFrameRequest(const FrameLoadRequest& request, bool lockHistory, bool lockBackForwardList, PassRefPtr<Event> event, PassRefPtr<FormState> formState, ReferrerPolicy referrerPolicy) { + // Protect frame from getting blown away inside dispatchBeforeLoadEvent in loadWithDocumentLoader. + RefPtr<Frame> protect(m_frame); + KURL url = request.resourceRequest().url(); ASSERT(m_frame->document()); @@ -1388,7 +1391,7 @@ void FrameLoader::loadURL(const KURL& newURL, const String& referrer, const Stri RefPtr<SecurityOrigin> referrerOrigin = SecurityOrigin::createFromString(referrer); addHTTPOriginIfNeeded(request, referrerOrigin->toString()); } - addExtraFieldsToRequest(request, newLoadType, true, event || isFormSubmission); + addExtraFieldsToRequest(request, newLoadType, true); if (newLoadType == FrameLoadTypeReload || newLoadType == FrameLoadTypeReloadFromOrigin) request.setCachePolicy(ReloadIgnoringCacheData); @@ -1567,7 +1570,13 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t loader->setTriggeringAction(NavigationAction(newURL, policyChecker()->loadType(), isFormSubmission)); if (Element* ownerElement = m_frame->ownerElement()) { - if (!ownerElement->dispatchBeforeLoadEvent(loader->request().url().string())) { + // We skip dispatching the beforeload event if we've already + // committed a real document load because the event would leak + // subsequent activity by the frame which the parent frame isn't + // supposed to learn. For example, if the child frame navigated to + // a new URL, the parent frame shouldn't learn the URL. + if (!m_stateMachine.committedFirstRealDocumentLoad() + && !ownerElement->dispatchBeforeLoadEvent(loader->request().url().string())) { continueLoadAfterNavigationPolicy(loader->request(), formState, false); return; } @@ -2700,20 +2709,20 @@ void FrameLoader::detachViewsAndDocumentLoader() void FrameLoader::addExtraFieldsToSubresourceRequest(ResourceRequest& request) { - addExtraFieldsToRequest(request, m_loadType, false, false); + addExtraFieldsToRequest(request, m_loadType, false); } void FrameLoader::addExtraFieldsToMainResourceRequest(ResourceRequest& request) { - addExtraFieldsToRequest(request, m_loadType, true, false); + addExtraFieldsToRequest(request, m_loadType, true); } -void FrameLoader::addExtraFieldsToRequest(ResourceRequest& request, FrameLoadType loadType, bool mainResource, bool cookiePolicyURLFromRequest) +void FrameLoader::addExtraFieldsToRequest(ResourceRequest& request, FrameLoadType loadType, bool mainResource) { // Don't set the cookie policy URL if it's already been set. // But make sure to set it on all requests, as it has significance beyond the cookie policy for all protocols (<rdar://problem/6616664>). if (request.firstPartyForCookies().isEmpty()) { - if (mainResource && (isLoadingMainFrame() || cookiePolicyURLFromRequest)) + if (mainResource && isLoadingMainFrame()) request.setFirstPartyForCookies(request.url()); else if (Document* document = m_frame->document()) request.setFirstPartyForCookies(document->firstPartyForCookies()); @@ -2812,7 +2821,7 @@ void FrameLoader::loadPostRequest(const ResourceRequest& inRequest, const String workingResourceRequest.setHTTPMethod("POST"); workingResourceRequest.setHTTPBody(formData); workingResourceRequest.setHTTPContentType(contentType); - addExtraFieldsToRequest(workingResourceRequest, loadType, true, true); + addExtraFieldsToRequest(workingResourceRequest, loadType, true); NavigationAction action(url, loadType, true, event); @@ -3286,7 +3295,7 @@ void FrameLoader::loadDifferentDocumentItem(HistoryItem* item, FrameLoadType loa // Make sure to add extra fields to the request after the Origin header is added for the FormData case. // See https://bugs.webkit.org/show_bug.cgi?id=22194 for more discussion. - addExtraFieldsToRequest(request, m_loadType, true, formData); + addExtraFieldsToRequest(request, m_loadType, true); addedExtraFields = true; // FIXME: Slight hack to test if the NSURL cache contains the page we're going to. @@ -3329,7 +3338,7 @@ void FrameLoader::loadDifferentDocumentItem(HistoryItem* item, FrameLoadType loa } if (!addedExtraFields) - addExtraFieldsToRequest(request, m_loadType, true, formData); + addExtraFieldsToRequest(request, m_loadType, true); loadWithNavigationAction(request, action, false, loadType, 0); } diff --git a/src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.h b/src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.h index f2b16d9..728459c 100644 --- a/src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.h +++ b/src/3rdparty/webkit/Source/WebCore/loader/FrameLoader.h @@ -356,7 +356,7 @@ private: void updateFirstPartyForCookies(); void setFirstPartyForCookies(const KURL&); - void addExtraFieldsToRequest(ResourceRequest&, FrameLoadType loadType, bool isMainResource, bool cookiePolicyURLFromRequest); + void addExtraFieldsToRequest(ResourceRequest&, FrameLoadType, bool isMainResource); // Also not cool. void stopLoadingSubframes(ClearProvisionalItemPolicy); diff --git a/src/3rdparty/webkit/Source/WebCore/loader/cache/CachedResource.cpp b/src/3rdparty/webkit/Source/WebCore/loader/cache/CachedResource.cpp index 0f205da..8e5038a 100644 --- a/src/3rdparty/webkit/Source/WebCore/loader/cache/CachedResource.cpp +++ b/src/3rdparty/webkit/Source/WebCore/loader/cache/CachedResource.cpp @@ -250,6 +250,8 @@ void CachedResource::setRequest(CachedResourceRequest* request) m_status = Pending; m_request = request; + CachedResourceHandle<CachedResource> protect(this); + // All loads finish with data(allDataReceived = true) or error(), except for // canceled loads, which silently set our request to 0. Be sure to notify our // client in that case, so we don't seem to continue loading forever. @@ -258,9 +260,6 @@ void CachedResource::setRequest(CachedResourceRequest* request) setStatus(Canceled); checkNotify(); } - - if (canDelete() && !inCache()) - delete this; } void CachedResource::addClient(CachedResourceClient* client) diff --git a/src/3rdparty/webkit/Source/WebCore/make-hash-tools.pl b/src/3rdparty/webkit/Source/WebCore/make-hash-tools.pl index 37639eb..2812ce7 100644 --- a/src/3rdparty/webkit/Source/WebCore/make-hash-tools.pl +++ b/src/3rdparty/webkit/Source/WebCore/make-hash-tools.pl @@ -20,7 +20,6 @@ # Boston, MA 02110-1301, USA. use strict; -use Switch; use File::Basename; my $outdir = $ARGV[0]; @@ -28,9 +27,7 @@ shift; my $option = basename($ARGV[0],".gperf"); -switch ($option) { - -case "DocTypeStrings" { +if ($option eq "DocTypeStrings") { my $docTypeStringsGenerated = "$outdir/DocTypeStrings.cpp"; my $docTypeStringsGperf = $ARGV[0]; @@ -38,9 +35,7 @@ case "DocTypeStrings" { system("gperf --key-positions=\"*\" -s 2 $docTypeStringsGperf > $docTypeStringsGenerated") == 0 || die "calling gperf failed: $?"; -} # case "DocTypeStrings" - -case "ColorData" { +} elsif ($option eq "ColorData") { my $colorDataGenerated = "$outdir/ColorData.cpp"; my $colorDataGperf = $ARGV[0]; @@ -48,6 +43,6 @@ case "ColorData" { system("gperf --key-positions=\"*\" -D -s 2 $colorDataGperf > $colorDataGenerated") == 0 || die "calling gperf failed: $?"; -} # case "ColorData" - -} # switch ($option) +} else { + die "Unknown option."; +} diff --git a/src/3rdparty/webkit/Source/WebCore/page/DOMWindow.cpp b/src/3rdparty/webkit/Source/WebCore/page/DOMWindow.cpp index d1d60ad..a86c1af 100644 --- a/src/3rdparty/webkit/Source/WebCore/page/DOMWindow.cpp +++ b/src/3rdparty/webkit/Source/WebCore/page/DOMWindow.cpp @@ -1667,7 +1667,7 @@ void DOMWindow::setLocation(const String& urlString, DOMWindow* activeWindow, DO if (completedURL.isNull()) return; - if (isInsecureScriptAccess(activeWindow, urlString)) + if (isInsecureScriptAccess(activeWindow, completedURL)) return; // We want a new history item if we are processing a user gesture. @@ -1746,7 +1746,7 @@ Frame* DOMWindow::createWindow(const String& urlString, const AtomicString& fram newFrame->loader()->setOpener(openerFrame); newFrame->page()->setOpenedByDOM(); - if (newFrame->domWindow()->isInsecureScriptAccess(activeWindow, urlString)) + if (newFrame->domWindow()->isInsecureScriptAccess(activeWindow, completedURL)) return newFrame; if (function) @@ -1796,7 +1796,9 @@ PassRefPtr<DOMWindow> DOMWindow::open(const String& urlString, const AtomicStrin if (!activeFrame->loader()->shouldAllowNavigation(targetFrame)) return 0; - if (isInsecureScriptAccess(activeWindow, urlString)) + KURL completedURL = firstFrame->document()->completeURL(urlString); + + if (targetFrame->domWindow()->isInsecureScriptAccess(activeWindow, completedURL)) return targetFrame->domWindow(); if (urlString.isEmpty()) @@ -1805,7 +1807,7 @@ PassRefPtr<DOMWindow> DOMWindow::open(const String& urlString, const AtomicStrin // For whatever reason, Firefox uses the first window rather than the active window to // determine the outgoing referrer. We replicate that behavior here. targetFrame->navigationScheduler()->scheduleLocationChange(activeFrame->document()->securityOrigin(), - firstFrame->document()->completeURL(urlString).string(), + completedURL, firstFrame->loader()->outgoingReferrer(), !activeFrame->script()->anyPageIsProcessingUserGesture(), false); diff --git a/src/3rdparty/webkit/Source/WebCore/page/FocusController.cpp b/src/3rdparty/webkit/Source/WebCore/page/FocusController.cpp index 5b91eeb..e7a44ca 100644 --- a/src/3rdparty/webkit/Source/WebCore/page/FocusController.cpp +++ b/src/3rdparty/webkit/Source/WebCore/page/FocusController.cpp @@ -214,7 +214,7 @@ bool FocusController::advanceFocusInDocumentOrder(FocusDirection direction, Keyb document->updateLayoutIgnorePendingStylesheets(); - Node* node = (direction == FocusDirectionForward) + RefPtr<Node> node = (direction == FocusDirectionForward) ? document->nextFocusableNode(currentNode, event) : document->previousFocusableNode(currentNode, event); @@ -237,7 +237,7 @@ bool FocusController::advanceFocusInDocumentOrder(FocusDirection direction, Keyb frame = parentFrame; } - node = deepFocusableNode(direction, node, event); + node = deepFocusableNode(direction, node.get(), event); if (!node) { // We didn't find a node to focus, so we should try to pass focus to Chrome. @@ -254,7 +254,7 @@ bool FocusController::advanceFocusInDocumentOrder(FocusDirection direction, Keyb ? d->nextFocusableNode(0, event) : d->previousFocusableNode(0, event); - node = deepFocusableNode(direction, node, event); + node = deepFocusableNode(direction, node.get(), event); if (!node) return false; @@ -273,7 +273,7 @@ bool FocusController::advanceFocusInDocumentOrder(FocusDirection direction, Keyb if (node->isFrameOwnerElement()) { // We focus frames rather than frame owners. // FIXME: We should not focus frames that have no scrollbars, as focusing them isn't useful to the user. - HTMLFrameOwnerElement* owner = static_cast<HTMLFrameOwnerElement*>(node); + HTMLFrameOwnerElement* owner = static_cast<HTMLFrameOwnerElement*>(node.get()); if (!owner->contentFrame()) return false; @@ -296,13 +296,13 @@ bool FocusController::advanceFocusInDocumentOrder(FocusDirection direction, Keyb setFocusedFrame(newDocument->frame()); if (caretBrowsing) { - Position position = firstPositionInOrBeforeNode(node); + Position position = firstPositionInOrBeforeNode(node.get()); VisibleSelection newSelection(position, position, DOWNSTREAM); if (frame->selection()->shouldChangeSelection(newSelection)) frame->selection()->setSelection(newSelection); } - static_cast<Element*>(node)->focus(false); + static_cast<Element*>(node.get())->focus(false); return true; } diff --git a/src/3rdparty/webkit/Source/WebCore/page/FrameView.cpp b/src/3rdparty/webkit/Source/WebCore/page/FrameView.cpp index b7ff00a..3dadbf3 100644 --- a/src/3rdparty/webkit/Source/WebCore/page/FrameView.cpp +++ b/src/3rdparty/webkit/Source/WebCore/page/FrameView.cpp @@ -1938,7 +1938,7 @@ void FrameView::updateWidget(RenderEmbeddedObject* object) static_cast<HTMLPlugInImageElement*>(ownerElement)->updateWidget(CreateAnyWidgetType); // FIXME: It is not clear that Media elements need or want this updateWidget() call. #if ENABLE(PLUGIN_PROXY_FOR_VIDEO) - else if (ownerElement->hasTagName(videoTag) || ownerElement->hasTagName(audioTag)) + else if (ownerElement->isMediaElement()) static_cast<HTMLMediaElement*>(ownerElement)->updateWidget(CreateAnyWidgetType); #endif else diff --git a/src/3rdparty/webkit/Source/WebCore/page/Geolocation.cpp b/src/3rdparty/webkit/Source/WebCore/page/Geolocation.cpp index fc5b1c6..b93379a 100644 --- a/src/3rdparty/webkit/Source/WebCore/page/Geolocation.cpp +++ b/src/3rdparty/webkit/Source/WebCore/page/Geolocation.cpp @@ -441,6 +441,9 @@ void Geolocation::resume() void Geolocation::setIsAllowed(bool allowed) { + // Protect the Geolocation object from garbage collection during a callback. + RefPtr<Geolocation> protect(this); + // This may be due to either a new position from the service, or a cached // position. m_allowGeolocation = allowed ? Yes : No; diff --git a/src/3rdparty/webkit/Source/WebCore/page/Geolocation.h b/src/3rdparty/webkit/Source/WebCore/page/Geolocation.h index b52ad45..ec48f6e 100644 --- a/src/3rdparty/webkit/Source/WebCore/page/Geolocation.h +++ b/src/3rdparty/webkit/Source/WebCore/page/Geolocation.h @@ -100,7 +100,7 @@ private: void startTimerIfNeeded(); void timerFired(Timer<GeoNotifier>*); - Geolocation* m_geolocation; + RefPtr<Geolocation> m_geolocation; RefPtr<PositionCallback> m_successCallback; RefPtr<PositionErrorCallback> m_errorCallback; RefPtr<PositionOptions> m_options; diff --git a/src/3rdparty/webkit/Source/WebCore/page/PrintContext.cpp b/src/3rdparty/webkit/Source/WebCore/page/PrintContext.cpp index 6c8b312..660ad11 100644 --- a/src/3rdparty/webkit/Source/WebCore/page/PrintContext.cpp +++ b/src/3rdparty/webkit/Source/WebCore/page/PrintContext.cpp @@ -55,6 +55,13 @@ PrintContext::~PrintContext() end(); } +#if COMPILER(WINSCW) +const IntRect& PrintContext::pageRect(size_t pageNumber) const +{ + return m_pageRects[pageNumber]; +} +#endif + void PrintContext::computePageRects(const FloatRect& printRect, float headerHeight, float footerHeight, float userScaleFactor, float& outPageHeight, bool allowHorizontalTiling) { m_pageRects.clear(); diff --git a/src/3rdparty/webkit/Source/WebCore/page/PrintContext.h b/src/3rdparty/webkit/Source/WebCore/page/PrintContext.h index 873937a..aadff47 100644 --- a/src/3rdparty/webkit/Source/WebCore/page/PrintContext.h +++ b/src/3rdparty/webkit/Source/WebCore/page/PrintContext.h @@ -51,7 +51,11 @@ public: // These are only valid after page rects are computed. size_t pageCount() const { return m_pageRects.size(); } +#if COMPILER(WINSCW) + const IntRect& pageRect(size_t pageNumber) const; +#else const IntRect& pageRect(size_t pageNumber) const { return m_pageRects[pageNumber]; } +#endif const Vector<IntRect>& pageRects() const { return m_pageRects; } float computeAutomaticScaleFactor(const FloatSize& availablePaperSize); diff --git a/src/3rdparty/webkit/Source/WebCore/page/Settings.cpp b/src/3rdparty/webkit/Source/WebCore/page/Settings.cpp index 2b9e8b7..2025bd0 100644 --- a/src/3rdparty/webkit/Source/WebCore/page/Settings.cpp +++ b/src/3rdparty/webkit/Source/WebCore/page/Settings.cpp @@ -89,6 +89,7 @@ Settings::Settings(Page* page) : m_page(page) , m_editableLinkBehavior(EditableLinkDefaultBehavior) , m_textDirectionSubmenuInclusionBehavior(TextDirectionSubmenuAutomaticallyIncluded) + , m_passwordEchoDurationInSeconds(1) , m_minimumFontSize(0) , m_minimumLogicalFontSize(0) , m_defaultFontSize(0) @@ -182,6 +183,7 @@ Settings::Settings(Page* page) , m_shouldInjectUserScriptsInInitialEmptyDocument(false) , m_allowDisplayOfInsecureContent(true) , m_allowRunningOfInsecureContent(true) + , m_passwordEchoEnabled(false) { // A Frame may not have been created yet, so we initialize the AtomicString // hash before trying to use it. diff --git a/src/3rdparty/webkit/Source/WebCore/page/Settings.h b/src/3rdparty/webkit/Source/WebCore/page/Settings.h index ffe1037..1d2a138 100644 --- a/src/3rdparty/webkit/Source/WebCore/page/Settings.h +++ b/src/3rdparty/webkit/Source/WebCore/page/Settings.h @@ -407,6 +407,12 @@ namespace WebCore { void setAllowRunningOfInsecureContent(bool flag) { m_allowRunningOfInsecureContent = flag; } bool allowRunningOfInsecureContent() const { return m_allowRunningOfInsecureContent; } + void setPasswordEchoEnabled(bool flag) { m_passwordEchoEnabled = flag; } + bool passwordEchoEnabled() const { return m_passwordEchoEnabled; } + + void setPasswordEchoDurationInSeconds(double durationInSeconds) { m_passwordEchoDurationInSeconds = durationInSeconds; } + double passwordEchoDurationInSeconds() const { return m_passwordEchoDurationInSeconds; } + private: Page* m_page; @@ -422,6 +428,7 @@ namespace WebCore { AtomicString m_fantasyFontFamily; EditableLinkBehavior m_editableLinkBehavior; TextDirectionSubmenuInclusionBehavior m_textDirectionSubmenuInclusionBehavior; + double m_passwordEchoDurationInSeconds; int m_minimumFontSize; int m_minimumLogicalFontSize; int m_defaultFontSize; @@ -513,6 +520,7 @@ namespace WebCore { bool m_shouldInjectUserScriptsInInitialEmptyDocument : 1; bool m_allowDisplayOfInsecureContent : 1; bool m_allowRunningOfInsecureContent : 1; + bool m_passwordEchoEnabled : 1; #if USE(AVFOUNDATION) static bool gAVFoundationEnabled; diff --git a/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowPrivate.h b/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowPrivate.h index 7b441f4..eeb08c2 100644 --- a/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowPrivate.h +++ b/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowPrivate.h @@ -23,7 +23,9 @@ #include <QTimer> #include <QWidget> +QT_BEGIN_NAMESPACE class QKeyEvent; +QT_END_NAMESPACE namespace WebCore { diff --git a/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowQt.cpp b/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowQt.cpp index a442a2b..7270785 100644 --- a/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowQt.cpp +++ b/src/3rdparty/webkit/Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowQt.cpp @@ -61,9 +61,9 @@ void FullScreenVideoWindow::keyPressEvent(QKeyEvent* ev) { if (m_mediaElement && ev->key() == Qt::Key_Space) { if (!m_mediaElement->paused()) - m_mediaElement->pause(); + m_mediaElement->pause(true); else - m_mediaElement->play(); + m_mediaElement->play(true); } else if (ev->key() == Qt::Key_Escape) emit closed(); QWidget::keyPressEvent(ev); diff --git a/src/3rdparty/webkit/Source/WebCore/platform/graphics/mac/FontCacheMac.mm b/src/3rdparty/webkit/Source/WebCore/platform/graphics/mac/FontCacheMac.mm index c71c411..9f5c44e 100644 --- a/src/3rdparty/webkit/Source/WebCore/platform/graphics/mac/FontCacheMac.mm +++ b/src/3rdparty/webkit/Source/WebCore/platform/graphics/mac/FontCacheMac.mm @@ -36,22 +36,33 @@ #import "WebCoreSystemInterface.h" #import "WebFontCache.h" #import <AppKit/AppKit.h> +#import <wtf/MainThread.h> #import <wtf/StdLibExtras.h> namespace WebCore { +// The "void*" parameter makes the function match the prototype for callbacks from callOnMainThread. +static void invalidateFontCache(void*) +{ + if (!isMainThread()) { + callOnMainThread(&invalidateFontCache, 0); + return; + } + fontCache()->invalidate(); +} + #if !defined(BUILDING_ON_LEOPARD) static void fontCacheRegisteredFontsChangedNotificationCallback(CFNotificationCenterRef, void* observer, CFStringRef name, const void *, CFDictionaryRef) { ASSERT_UNUSED(observer, observer == fontCache()); ASSERT_UNUSED(name, CFEqual(name, kCTFontManagerRegisteredFontsChangedNotification)); - fontCache()->invalidate(); + invalidateFontCache(0); } #else static void fontCacheATSNotificationCallback(ATSFontNotificationInfoRef, void*) { - fontCache()->invalidate(); + invalidateFontCache(0); } #endif diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.h b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.h index 7ebfaab..9e05840 100644 --- a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.h +++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.h @@ -70,6 +70,7 @@ typedef struct _NSRect NSRect; @class AVAsset; @class NSArray; @class NSButtonCell; +@class NSControl; @class NSData; @class NSDate; @class NSEvent; @@ -85,12 +86,14 @@ typedef struct _NSRect NSRect; @class NSURLRequest; @class NSURLResponse; @class NSView; +@class NSWindow; @class QTMovie; @class QTMovieView; #else class AVAsset; class NSArray; class NSButtonCell; +class NSControl; class NSData; class NSDate; class NSEvent; @@ -107,6 +110,7 @@ class NSTextFieldCell; class NSURLConnection; class NSURLResponse; class NSView; +class NSWindow; class QTMovie; class QTMovieView; #endif @@ -151,6 +155,22 @@ extern BOOL (*wkGetNSURLResponseMustRevalidate)(NSURLResponse *response); extern void (*wkGetWheelEventDeltas)(NSEvent*, float* deltaX, float* deltaY, BOOL* continuous); extern BOOL (*wkHitTestMediaUIPart)(int part, int themeStyle, CGRect bounds, CGPoint point); extern void (*wkMeasureMediaUIPart)(int part, int themeStyle, CGRect *bounds, CGSize *naturalSize); +extern NSView *(*wkCreateMediaUIBackgroundView)(void); + +typedef enum { + wkMediaUIControlTimeline, + wkMediaUIControlSlider, + wkMediaUIControlPlayPauseButton, + wkMediaUIControlExitFullscreenButton, + wkMediaUIControlRewindButton, + wkMediaUIControlFastForwardButton, + wkMediaUIControlVolumeUpButton, + wkMediaUIControlVolumeDownButton +}; +extern NSControl *(*wkCreateMediaUIControl)(int); + +extern void (*wkWindowSetAlpha)(NSWindow *, float); +extern void (*wkWindowSetScaledFrame)(NSWindow *, NSRect, NSRect); extern BOOL (*wkMediaControllerThemeAvailable)(int themeStyle); extern void (*wkPopupMenu)(NSMenu*, NSPoint location, float width, NSView*, int selectedItem, NSFont*); extern unsigned (*wkQTIncludeOnlyModernMediaFileTypes)(void); diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.mm b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.mm index 9cc6677..94191b7 100644 --- a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.mm +++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreSystemInterface.mm @@ -46,6 +46,10 @@ void (*wkDrawMediaSliderTrack)(int themeStyle, CGContextRef context, CGRect rect BOOL (*wkHitTestMediaUIPart)(int part, int themeStyle, CGRect bounds, CGPoint point); void (*wkDrawMediaUIPart)(int part, int themeStyle, CGContextRef context, CGRect rect, unsigned state); void (*wkMeasureMediaUIPart)(int part, int themeStyle, CGRect *bounds, CGSize *naturalSize); +NSView *(*wkCreateMediaUIBackgroundView)(void); +NSControl *(*wkCreateMediaUIControl)(int); +void (*wkWindowSetAlpha)(NSWindow *, float); +void (*wkWindowSetScaledFrame)(NSWindow *, NSRect, NSRect); BOOL (*wkMediaControllerThemeAvailable)(int themeStyle); NSString* (*wkGetPreferredExtensionForMIMEType)(NSString*); CFStringRef (*wkSignedPublicKeyAndChallengeString)(unsigned keySize, CFStringRef challenge, CFStringRef keyDescription); diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenController.h b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenController.h new file mode 100644 index 0000000..88df1d6 --- /dev/null +++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenController.h @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2009 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if ENABLE(VIDEO) + +#import <Cocoa/Cocoa.h> +#import <wtf/RefPtr.h> + +namespace WebCore { + class HTMLMediaElement; +} + +@protocol WebVideoFullscreenControllerDelegate; +@class WebVideoFullscreenHUDWindowController; +@class WebWindowFadeAnimation; +@class QTMovieLayer; + +@interface WebVideoFullscreenController : NSWindowController { +@private + RefPtr<WebCore::HTMLMediaElement> _mediaElement; // (retain) + id <WebVideoFullscreenControllerDelegate> _delegate; // (assign) + + NSWindow *_backgroundFullscreenWindow; // (retain) + WebVideoFullscreenHUDWindowController *_hudController; // (retain) + + WebWindowFadeAnimation *_fadeAnimation; // (retain) + + BOOL _isEndingFullscreen; + BOOL _isWindowLoaded; + BOOL _forceDisableAnimation; + uint32_t _idleDisplaySleepAssertion; + uint32_t _idleSystemSleepAssertion; + NSTimer *_tickleTimer; + uint32_t _savedUIMode; + uint32_t _savedUIOptions; +} + +- (id <WebVideoFullscreenControllerDelegate>)delegate; +- (void)setDelegate:(id <WebVideoFullscreenControllerDelegate>)delegate; + +- (void)setupVideoOverlay:(QTMovieLayer*)layer; +- (void)setMediaElement:(WebCore::HTMLMediaElement*)mediaElement; +- (WebCore::HTMLMediaElement*)mediaElement; + +- (void)enterFullscreen:(NSScreen *)screen; +- (void)exitFullscreen; + +@end + +#endif // ENABLE(VIDEO) diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenController.mm b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenController.mm new file mode 100644 index 0000000..a943fce --- /dev/null +++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenController.mm @@ -0,0 +1,617 @@ +/* + * Copyright (C) 2009 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import "config.h" + +#if ENABLE(VIDEO) + +#import "WebVideoFullscreenController.h" + +#import "WebVideoFullscreenHUDWindowController.h" +#import "WebWindowAnimation.h" +#import <Carbon/Carbon.h> +#import <IOKit/pwr_mgt/IOPMLib.h> +#import <QTKit/QTKit.h> +#import <WebCore/HTMLMediaElement.h> +#import <WebCore/SoftLinking.h> +#import <objc/objc-runtime.h> +#import <wtf/UnusedParam.h> + +#if USE(GSTREAMER) +#import <WebCore/GStreamerGWorld.h> +#endif + +SOFT_LINK_FRAMEWORK(QTKit) +SOFT_LINK_CLASS(QTKit, QTMovieLayer) + +SOFT_LINK_POINTER(QTKit, QTMovieRateDidChangeNotification, NSString *) + +#define QTMovieRateDidChangeNotification getQTMovieRateDidChangeNotification() +static const NSTimeInterval tickleTimerInterval = 1.0; + +@interface WebVideoFullscreenWindow : NSWindow +#ifndef BUILDING_ON_LEOPARD +<NSAnimationDelegate> +#endif +{ + SEL _controllerActionOnAnimationEnd; + WebWindowScaleAnimation *_fullscreenAnimation; // (retain) +} +- (void)animateFromRect:(NSRect)startRect toRect:(NSRect)endRect withSubAnimation:(NSAnimation *)subAnimation controllerAction:(SEL)controllerAction; +@end + +@interface WebVideoFullscreenController(HUDWindowControllerDelegate) <WebVideoFullscreenHUDWindowControllerDelegate> +- (void)requestExitFullscreenWithAnimation:(BOOL)animation; +- (void)updateMenuAndDockForFullscreen; +- (void)updatePowerAssertions; +@end + +@interface NSWindow(IsOnActiveSpaceAdditionForTigerAndLeopard) +- (BOOL)isOnActiveSpace; +@end + +@implementation WebVideoFullscreenController +- (id)init +{ + // Do not defer window creation, to make sure -windowNumber is created (needed by WebWindowScaleAnimation). + NSWindow *window = [[WebVideoFullscreenWindow alloc] initWithContentRect:NSZeroRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO]; + self = [super initWithWindow:window]; + [window release]; + if (!self) + return nil; + [self windowDidLoad]; + return self; + +} +- (void)dealloc +{ + ASSERT(!_backgroundFullscreenWindow); + ASSERT(!_fadeAnimation); + [_tickleTimer invalidate]; + [_tickleTimer release]; + _tickleTimer = nil; + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [super dealloc]; +} + +- (WebVideoFullscreenWindow *)fullscreenWindow +{ + return (WebVideoFullscreenWindow *)[super window]; +} + +- (void)setupVideoOverlay:(QTMovieLayer*)layer +{ + WebVideoFullscreenWindow *window = [self fullscreenWindow]; +#if USE(GSTREAMER) + if (_mediaElement && _mediaElement->platformMedia().type == WebCore::PlatformMedia::GStreamerGWorldType) { + WebCore::GStreamerGWorld* gstGworld = _mediaElement->platformMedia().media.gstreamerGWorld; + if (gstGworld->enterFullscreen()) + [window setContentView:gstGworld->platformVideoWindow()->window()]; + } +#else + [[window contentView] setLayer:layer]; + [[window contentView] setWantsLayer:YES]; + if (_mediaElement && _mediaElement->platformMedia().type == WebCore::PlatformMedia::QTMovieType) + [layer setMovie:_mediaElement->platformMedia().media.qtMovie]; +#endif +} + +- (void)windowDidLoad +{ + WebVideoFullscreenWindow *window = [self fullscreenWindow]; + [window setHasShadow:YES]; // This is nicer with a shadow. + [window setLevel:NSPopUpMenuWindowLevel-1]; + + QTMovieLayer *layer = [[getQTMovieLayerClass() alloc] init]; + [self setupVideoOverlay:layer]; + [layer release]; + +#if !USE(GSTREAMER) + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidResignActive:) name:NSApplicationDidResignActiveNotification object:NSApp]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidChangeScreenParameters:) name:NSApplicationDidChangeScreenParametersNotification object:NSApp]; +#endif +} + +- (WebCore::HTMLMediaElement*)mediaElement +{ + return _mediaElement.get(); +} + +- (void)setMediaElement:(WebCore::HTMLMediaElement*)mediaElement +{ + _mediaElement = mediaElement; + if ([self isWindowLoaded]) { + QTMovieLayer *movieLayer = (QTMovieLayer *)[[[self fullscreenWindow] contentView] layer]; + + ASSERT(movieLayer && [movieLayer isKindOfClass:[getQTMovieLayerClass() class]]); + [self setupVideoOverlay:movieLayer]; +#if !USE(GSTREAMER) + ASSERT([movieLayer movie]); + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(rateChanged:) + name:QTMovieRateDidChangeNotification + object:[movieLayer movie]]; +#endif + } +} + +- (id <WebVideoFullscreenControllerDelegate>)delegate +{ + return _delegate; +} + +- (void)setDelegate:(id <WebVideoFullscreenControllerDelegate>)delegate +{ + _delegate = delegate; +} + +- (CGFloat)clearFadeAnimation +{ + [_fadeAnimation stopAnimation]; + CGFloat previousAlpha = [_fadeAnimation currentAlpha]; + [_fadeAnimation setWindow:nil]; + [_fadeAnimation release]; + _fadeAnimation = nil; + return previousAlpha; +} + +- (void)windowDidExitFullscreen +{ +#if USE(GSTREAMER) + if (_mediaElement && _mediaElement->platformMedia().type == WebCore::PlatformMedia::GStreamerGWorldType) + _mediaElement->platformMedia().media.gstreamerGWorld->exitFullscreen(); +#endif + [self clearFadeAnimation]; + [[self window] close]; + [self setWindow:nil]; + [self updateMenuAndDockForFullscreen]; + [self updatePowerAssertions]; + [_hudController setDelegate:nil]; + [_hudController release]; + _hudController = nil; + [_backgroundFullscreenWindow close]; + [_backgroundFullscreenWindow release]; + _backgroundFullscreenWindow = nil; + + [self autorelease]; // Associated -retain is in -exitFullscreen. + _isEndingFullscreen = NO; +} + +- (void)windowDidEnterFullscreen +{ + [self clearFadeAnimation]; + + ASSERT(!_hudController); + _hudController = [[WebVideoFullscreenHUDWindowController alloc] init]; + [_hudController setDelegate:self]; + + [self updateMenuAndDockForFullscreen]; + [self updatePowerAssertions]; + [NSCursor setHiddenUntilMouseMoves:YES]; + + // Give the HUD keyboard focus initially + [_hudController fadeWindowIn]; +} + +- (NSRect)mediaElementRect +{ + return _mediaElement->screenRect(); +} + +- (void)applicationDidResignActive:(NSNotification*)notification +{ + UNUSED_PARAM(notification); + // Check to see if the fullscreenWindow is on the active space; this function is available + // on 10.6 and later, so default to YES if the function is not available: + NSWindow* fullscreenWindow = [self fullscreenWindow]; + BOOL isOnActiveSpace = ([fullscreenWindow respondsToSelector:@selector(isOnActiveSpace)] ? [fullscreenWindow isOnActiveSpace] : YES); + + // Replicate the QuickTime Player (X) behavior when losing active application status: + // Is the fullscreen screen the main screen? (Note: this covers the case where only a + // single screen is available.) Is the fullscreen screen on the current space? IFF so, + // then exit fullscreen mode. + if ([fullscreenWindow screen] == [[NSScreen screens] objectAtIndex:0] && isOnActiveSpace) + [self requestExitFullscreenWithAnimation:NO]; +} + + +// MARK: - +// MARK: Exposed Interface + +static void constrainFrameToRatioOfFrame(NSRect *frameToConstrain, const NSRect *frame) +{ + // Keep a constrained aspect ratio for the destination window + CGFloat originalRatio = frame->size.width / frame->size.height; + CGFloat newRatio = frameToConstrain->size.width / frameToConstrain->size.height; + if (newRatio > originalRatio) { + CGFloat newWidth = originalRatio * frameToConstrain->size.height; + CGFloat diff = frameToConstrain->size.width - newWidth; + frameToConstrain->size.width = newWidth; + frameToConstrain->origin.x += diff / 2; + } else { + CGFloat newHeight = frameToConstrain->size.width / originalRatio; + CGFloat diff = frameToConstrain->size.height - newHeight; + frameToConstrain->size.height = newHeight; + frameToConstrain->origin.y += diff / 2; + } +} + +static NSWindow *createBackgroundFullscreenWindow(NSRect frame, int level) +{ + NSWindow *window = [[NSWindow alloc] initWithContentRect:frame styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO]; + [window setOpaque:YES]; + [window setBackgroundColor:[NSColor blackColor]]; + [window setLevel:level]; + [window setReleasedWhenClosed:NO]; + return window; +} + +- (void)setupFadeAnimationIfNeededAndFadeIn:(BOOL)fadeIn +{ + CGFloat initialAlpha = fadeIn ? 0 : 1; + if (_fadeAnimation) { + // Make sure we support queuing animation if the previous one isn't over yet + initialAlpha = [self clearFadeAnimation]; + } + if (!_forceDisableAnimation) + _fadeAnimation = [[WebWindowFadeAnimation alloc] initWithDuration:0.2 window:_backgroundFullscreenWindow initialAlpha:initialAlpha finalAlpha:fadeIn ? 1 : 0]; +} + +- (void)enterFullscreen:(NSScreen *)screen +{ + if (!screen) + screen = [NSScreen mainScreen]; + + NSRect frame = [self mediaElementRect]; + NSRect endFrame = [screen frame]; + constrainFrameToRatioOfFrame(&endFrame, &frame); + + // Create a black window if needed + if (!_backgroundFullscreenWindow) + _backgroundFullscreenWindow = createBackgroundFullscreenWindow([screen frame], [[self window] level]-1); + else + [_backgroundFullscreenWindow setFrame:[screen frame] display:NO]; + + [self setupFadeAnimationIfNeededAndFadeIn:YES]; + if (_forceDisableAnimation) { + // This will disable scale animation + frame = NSZeroRect; + } + [[self fullscreenWindow] animateFromRect:frame toRect:endFrame withSubAnimation:_fadeAnimation controllerAction:@selector(windowDidEnterFullscreen)]; + + [_backgroundFullscreenWindow orderWindow:NSWindowBelow relativeTo:[[self fullscreenWindow] windowNumber]]; +} + +- (void)exitFullscreen +{ + if (_isEndingFullscreen) + return; + _isEndingFullscreen = YES; + [_hudController closeWindow]; + + NSRect endFrame = [self mediaElementRect]; + + [self setupFadeAnimationIfNeededAndFadeIn:NO]; + if (_forceDisableAnimation) { + // This will disable scale animation + endFrame = NSZeroRect; + } + + // We have to retain ourselves because we want to be alive for the end of the animation. + // If our owner releases us we could crash if this is not the case. + // Balanced in windowDidExitFullscreen + [self retain]; + + [[self fullscreenWindow] animateFromRect:[[self window] frame] toRect:endFrame withSubAnimation:_fadeAnimation controllerAction:@selector(windowDidExitFullscreen)]; +} + +- (void)applicationDidChangeScreenParameters:(NSNotification*)notification +{ + UNUSED_PARAM(notification); + // The user may have changed the main screen by moving the menu bar, or they may have changed + // the Dock's size or location, or they may have changed the fullscreen screen's dimensions. + // Update our presentation parameters, and ensure that the full screen window occupies the + // entire screen: + [self updateMenuAndDockForFullscreen]; + [[self window] setFrame:[[[self window] screen] frame] display:YES]; +} + +- (void)updateMenuAndDockForFullscreen +{ + // NSApplicationPresentationOptions is available on > 10.6 only: +#ifndef BUILDING_ON_LEOPARD + NSApplicationPresentationOptions options = NSApplicationPresentationDefault; + NSScreen* fullscreenScreen = [[self window] screen]; + + if (!_isEndingFullscreen) { + // Auto-hide the menu bar if the fullscreenScreen contains the menu bar: + // NOTE: if the fullscreenScreen contains the menu bar but not the dock, we must still + // auto-hide the dock, or an exception will be thrown. + if ([[NSScreen screens] objectAtIndex:0] == fullscreenScreen) + options |= (NSApplicationPresentationAutoHideMenuBar | NSApplicationPresentationAutoHideDock); + // Check if the current screen contains the dock by comparing the screen's frame to its + // visibleFrame; if a dock is present, the visibleFrame will differ. If the current screen + // contains the dock, hide it. + else if (!NSEqualRects([fullscreenScreen frame], [fullscreenScreen visibleFrame])) + options |= NSApplicationPresentationAutoHideDock; + } + + if ([NSApp respondsToSelector:@selector(setPresentationOptions:)]) + [NSApp setPresentationOptions:options]; + else +#endif + SetSystemUIMode(_isEndingFullscreen ? kUIModeNormal : kUIModeAllHidden, 0); +} + +- (void)_disableIdleDisplaySleep +{ + if (_idleDisplaySleepAssertion == kIOPMNullAssertionID) +#if defined(BUILDING_ON_LEOPARD) // IOPMAssertionCreateWithName is not defined in the 10.5 SDK + IOPMAssertionCreate(kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn, &_idleDisplaySleepAssertion); +#else // IOPMAssertionCreate is depreciated in > 10.5 + IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn, CFSTR("WebKit playing a video fullscreen."), &_idleDisplaySleepAssertion); +#endif +} + +- (void)_enableIdleDisplaySleep +{ + if (_idleDisplaySleepAssertion != kIOPMNullAssertionID) { + IOPMAssertionRelease(_idleDisplaySleepAssertion); + _idleDisplaySleepAssertion = kIOPMNullAssertionID; + } +} + +- (void)_disableIdleSystemSleep +{ + if (_idleSystemSleepAssertion == kIOPMNullAssertionID) +#if defined(BUILDING_ON_LEOPARD) // IOPMAssertionCreateWithName is not defined in the 10.5 SDK + IOPMAssertionCreate(kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn, &_idleSystemSleepAssertion); +#else // IOPMAssertionCreate is depreciated in > 10.5 + IOPMAssertionCreateWithName(kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn, CFSTR("WebKit playing a video fullscreen."), &_idleSystemSleepAssertion); +#endif +} + +- (void)_enableIdleSystemSleep +{ + if (_idleSystemSleepAssertion != kIOPMNullAssertionID) { + IOPMAssertionRelease(_idleSystemSleepAssertion); + _idleSystemSleepAssertion = kIOPMNullAssertionID; + } +} + +- (void)_enableTickleTimer +{ + [_tickleTimer invalidate]; + [_tickleTimer release]; + _tickleTimer = [[NSTimer scheduledTimerWithTimeInterval:tickleTimerInterval target:self selector:@selector(_tickleTimerFired) userInfo:nil repeats:YES] retain]; +} + +- (void)_disableTickleTimer +{ + [_tickleTimer invalidate]; + [_tickleTimer release]; + _tickleTimer = nil; +} + +- (void)_tickleTimerFired +{ + UpdateSystemActivity(OverallAct); +} + +- (void)updatePowerAssertions +{ + float rate = 0; + if (_mediaElement && _mediaElement->platformMedia().type == WebCore::PlatformMedia::QTMovieType) + rate = [_mediaElement->platformMedia().media.qtMovie rate]; + + if (rate && !_isEndingFullscreen) { + [self _disableIdleSystemSleep]; + [self _disableIdleDisplaySleep]; + [self _enableTickleTimer]; + } else { + [self _enableIdleSystemSleep]; + [self _enableIdleDisplaySleep]; + [self _disableTickleTimer]; + } +} + +// MARK: - +// MARK: Window callback + +- (void)_requestExit +{ + if (_mediaElement) + _mediaElement->exitFullscreen(); + _forceDisableAnimation = NO; +} + +- (void)requestExitFullscreenWithAnimation:(BOOL)animation +{ + if (_isEndingFullscreen) + return; + + _forceDisableAnimation = !animation; + [self performSelector:@selector(_requestExit) withObject:nil afterDelay:0]; + +} + +- (void)requestExitFullscreen +{ + [self requestExitFullscreenWithAnimation:YES]; +} + +- (void)fadeHUDIn +{ + [_hudController fadeWindowIn]; +} + +// MARK: - +// MARK: QTMovie callbacks + +- (void)rateChanged:(NSNotification *)unusedNotification +{ + UNUSED_PARAM(unusedNotification); + [_hudController updateRate]; + [self updatePowerAssertions]; +} + +@end + +@implementation WebVideoFullscreenWindow + +- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag +{ + UNUSED_PARAM(aStyle); + self = [super initWithContentRect:contentRect styleMask:NSBorderlessWindowMask backing:bufferingType defer:flag]; + if (!self) + return nil; + [self setOpaque:NO]; + [self setBackgroundColor:[NSColor clearColor]]; + [self setIgnoresMouseEvents:NO]; + [self setAcceptsMouseMovedEvents:YES]; + return self; +} + +- (void)dealloc +{ + ASSERT(!_fullscreenAnimation); + [super dealloc]; +} + +- (BOOL)resignFirstResponder +{ + return NO; +} + +- (BOOL)canBecomeKeyWindow +{ + return NO; +} + +- (void)mouseDown:(NSEvent *)theEvent +{ + UNUSED_PARAM(theEvent); +} + +- (void)cancelOperation:(id)sender +{ + UNUSED_PARAM(sender); + [[self windowController] requestExitFullscreen]; +} + +- (void)animatedResizeDidEnd +{ + // Call our windowController. + if (_controllerActionOnAnimationEnd) + [[self windowController] performSelector:_controllerActionOnAnimationEnd]; + _controllerActionOnAnimationEnd = NULL; +} + +// +// This function will animate a change of frame rectangle +// We support queuing animation, that means that we'll correctly +// interrupt the running animation, and queue the next one. +// +- (void)animateFromRect:(NSRect)startRect toRect:(NSRect)endRect withSubAnimation:(NSAnimation *)subAnimation controllerAction:(SEL)controllerAction +{ + _controllerActionOnAnimationEnd = controllerAction; + + BOOL wasAnimating = NO; + if (_fullscreenAnimation) { + wasAnimating = YES; + + // Interrupt any running animation. + [_fullscreenAnimation stopAnimation]; + + // Save the current rect to ensure a smooth transition. + startRect = [_fullscreenAnimation currentFrame]; + [_fullscreenAnimation release]; + _fullscreenAnimation = nil; + } + + if (NSIsEmptyRect(startRect) || NSIsEmptyRect(endRect)) { + // Fakely end the subanimation. + [subAnimation setCurrentProgress:1]; + // And remove the weak link to the window. + [subAnimation stopAnimation]; + + [self setFrame:endRect display:NO]; + [self makeKeyAndOrderFront:self]; + [self animatedResizeDidEnd]; + return; + } + + if (!wasAnimating) { + // We'll downscale the window during the animation based on the higher resolution rect + BOOL higherResolutionIsEndRect = startRect.size.width < endRect.size.width && startRect.size.height < endRect.size.height; + [self setFrame:higherResolutionIsEndRect ? endRect : startRect display:NO]; + } + + ASSERT(!_fullscreenAnimation); + _fullscreenAnimation = [[WebWindowScaleAnimation alloc] initWithHintedDuration:0.2 window:self initalFrame:startRect finalFrame:endRect]; + [_fullscreenAnimation setSubAnimation:subAnimation]; + [_fullscreenAnimation setDelegate:self]; + + // Make sure the animation has scaled the window before showing it. + [_fullscreenAnimation setCurrentProgress:0]; + [self makeKeyAndOrderFront:self]; + + [_fullscreenAnimation startAnimation]; +} + +- (void)animationDidEnd:(NSAnimation *)animation +{ + if (![NSThread isMainThread]) { + [self performSelectorOnMainThread:@selector(animationDidEnd:) withObject:animation waitUntilDone:NO]; + return; + } + if (animation != _fullscreenAnimation) + return; + + // The animation is not really over and was interrupted + // Don't send completion events. + if ([animation currentProgress] < 1.0) + return; + + // Ensure that animation (and subanimation) don't keep + // the weak reference to the window ivar that may be destroyed from + // now on. + [_fullscreenAnimation setWindow:nil]; + + [_fullscreenAnimation autorelease]; + _fullscreenAnimation = nil; + + [self animatedResizeDidEnd]; +} + +- (void)mouseMoved:(NSEvent *)theEvent +{ + UNUSED_PARAM(theEvent); + [[self windowController] fadeHUDIn]; +} + +@end + +#endif /* ENABLE(VIDEO) */ diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.h b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.h new file mode 100644 index 0000000..92bf776 --- /dev/null +++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.h @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2009 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if ENABLE(VIDEO) + +#import <Cocoa/Cocoa.h> + +namespace WebCore { + class HTMLMediaElement; +} + +@protocol WebVideoFullscreenHUDWindowControllerDelegate; + +@interface WebVideoFullscreenHUDWindowController : NSWindowController +{ + id <WebVideoFullscreenHUDWindowControllerDelegate> _delegate; + NSTimer *_timelineUpdateTimer; + NSTrackingArea *_area; + BOOL _mouseIsInHUD; + BOOL _isEndingFullscreen; + BOOL _isScrubbing; + + NSControl *_timeline; + NSTextField *_remainingTimeText; + NSTextField *_elapsedTimeText; + NSControl *_volumeSlider; + NSButton *_playButton; +} + +- (id <WebVideoFullscreenHUDWindowControllerDelegate>)delegate; +- (void)setDelegate:(id <WebVideoFullscreenHUDWindowControllerDelegate>)delegate; +- (void)fadeWindowIn; +- (void)fadeWindowOut; +- (void)closeWindow; +- (void)updateRate; + +@end + +@protocol WebVideoFullscreenHUDWindowControllerDelegate <NSObject> +- (void)requestExitFullscreen; +- (WebCore::HTMLMediaElement*)mediaElement; +@end + +#endif diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm new file mode 100644 index 0000000..1637c1c --- /dev/null +++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm @@ -0,0 +1,679 @@ +/* + * Copyright (C) 2009 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import "config.h" + +#if ENABLE(VIDEO) + +#import "WebVideoFullscreenHUDWindowController.h" + +#import "FloatConversion.h" +#import <WebCoreSystemInterface.h> +#import <WebCore/HTMLMediaElement.h> +#import <wtf/RetainPtr.h> +#import <wtf/UnusedParam.h> + +using namespace WebCore; +using namespace std; + +static inline CGFloat webkit_CGFloor(CGFloat value) +{ + if (sizeof(value) == sizeof(float)) + return floorf(value); + return floor(value); +} + +#define HAVE_MEDIA_CONTROL (!defined(BUILDING_ON_LEOPARD)) + +@interface WebVideoFullscreenHUDWindowController (Private) +#if !defined(BUILDING_ON_LEOPARD) +<NSWindowDelegate> +#endif + +- (void)updateTime; +- (void)timelinePositionChanged:(id)sender; +- (float)currentTime; +- (void)setCurrentTime:(float)currentTime; +- (double)duration; + +- (void)volumeChanged:(id)sender; +- (float)maxVolume; +- (float)volume; +- (void)setVolume:(float)volume; +- (void)decrementVolume; +- (void)incrementVolume; + +- (void)updatePlayButton; +- (void)togglePlaying:(id)sender; +- (BOOL)playing; +- (void)setPlaying:(BOOL)playing; + +- (void)rewind:(id)sender; +- (void)fastForward:(id)sender; + +- (NSString *)remainingTimeText; +- (NSString *)elapsedTimeText; + +- (void)exitFullscreen:(id)sender; +@end + +@interface WebVideoFullscreenHUDWindow : NSWindow +@end + +@implementation WebVideoFullscreenHUDWindow + +- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag +{ + UNUSED_PARAM(aStyle); + self = [super initWithContentRect:contentRect styleMask:NSBorderlessWindowMask backing:bufferingType defer:flag]; + if (!self) + return nil; + + [self setOpaque:NO]; + [self setBackgroundColor:[NSColor clearColor]]; + [self setLevel:NSPopUpMenuWindowLevel]; + [self setAcceptsMouseMovedEvents:YES]; + [self setIgnoresMouseEvents:NO]; + [self setMovableByWindowBackground:YES]; + + return self; +} + +- (BOOL)canBecomeKeyWindow +{ + return YES; +} + +- (void)cancelOperation:(id)sender +{ + UNUSED_PARAM(sender); + [[self windowController] exitFullscreen:self]; +} + +- (void)center +{ + NSRect hudFrame = [self frame]; + NSRect screenFrame = [[NSScreen mainScreen] frame]; + [self setFrameTopLeftPoint:NSMakePoint(screenFrame.origin.x + (screenFrame.size.width - hudFrame.size.width) / 2, + screenFrame.origin.y + (screenFrame.size.height - hudFrame.size.height) / 6)]; +} + +- (void)keyDown:(NSEvent *)event +{ + [super keyDown:event]; + [[self windowController] fadeWindowIn]; +} + +- (BOOL)resignFirstResponder +{ + return NO; +} + +- (BOOL)performKeyEquivalent:(NSEvent *)event +{ + // Block all command key events while the fullscreen window is up. + if ([event type] != NSKeyDown) + return NO; + + if (!([event modifierFlags] & NSCommandKeyMask)) + return NO; + + return YES; +} + +@end + +static const CGFloat windowHeight = 59; +static const CGFloat windowWidth = 438; + +static const NSTimeInterval HUDWindowFadeOutDelay = 3; + +@implementation WebVideoFullscreenHUDWindowController + +- (id)init +{ + NSWindow *window = [[WebVideoFullscreenHUDWindow alloc] initWithContentRect:NSMakeRect(0, 0, windowWidth, windowHeight) + styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO]; + self = [super initWithWindow:window]; + [window setDelegate:self]; + [window release]; + if (!self) + return nil; + [self windowDidLoad]; + return self; +} + +- (void)dealloc +{ + ASSERT(!_timelineUpdateTimer); + ASSERT(!_area); + ASSERT(!_isScrubbing); + [_timeline release]; + [_remainingTimeText release]; + [_elapsedTimeText release]; + [_volumeSlider release]; + [_playButton release]; + [super dealloc]; +} + +- (void)setArea:(NSTrackingArea *)area +{ + if (area == _area) + return; + [_area release]; + _area = [area retain]; +} + +- (void)keyDown:(NSEvent *)event +{ + NSString *charactersIgnoringModifiers = [event charactersIgnoringModifiers]; + if ([charactersIgnoringModifiers length] == 1) { + switch ([charactersIgnoringModifiers characterAtIndex:0]) { + case ' ': + [self togglePlaying:nil]; + return; + case NSUpArrowFunctionKey: + if ([event modifierFlags] & NSAlternateKeyMask) + [self setVolume:[self maxVolume]]; + else + [self incrementVolume]; + return; + case NSDownArrowFunctionKey: + if ([event modifierFlags] & NSAlternateKeyMask) + [self setVolume:0]; + else + [self decrementVolume]; + return; + default: + break; + } + } + + [super keyDown:event]; +} + +- (id <WebVideoFullscreenHUDWindowControllerDelegate>)delegate +{ + return _delegate; +} + +- (void)setDelegate:(id <WebVideoFullscreenHUDWindowControllerDelegate>)delegate +{ + _delegate = delegate; +} + +- (void)scheduleTimeUpdate +{ + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(unscheduleTimeUpdate) object:self]; + + // First, update right away, then schedule future update + [self updateTime]; + [self updatePlayButton]; + + [_timelineUpdateTimer invalidate]; + [_timelineUpdateTimer release]; + + // Note that this creates a retain cycle between the window and us. + _timelineUpdateTimer = [[NSTimer timerWithTimeInterval:0.25 target:self selector:@selector(updateTime) userInfo:nil repeats:YES] retain]; + [[NSRunLoop currentRunLoop] addTimer:_timelineUpdateTimer forMode:NSRunLoopCommonModes]; +} + +- (void)unscheduleTimeUpdate +{ + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(unscheduleTimeUpdate) object:nil]; + + [_timelineUpdateTimer invalidate]; + [_timelineUpdateTimer release]; + _timelineUpdateTimer = nil; +} + +- (void)fadeWindowIn +{ + NSWindow *window = [self window]; + if (![window isVisible]) + [window setAlphaValue:0]; + + [window makeKeyAndOrderFront:self]; + [[window animator] setAlphaValue:1]; + [self scheduleTimeUpdate]; + + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(fadeWindowOut) object:nil]; + if (!_mouseIsInHUD && [self playing]) // Don't fade out when paused. + [self performSelector:@selector(fadeWindowOut) withObject:nil afterDelay:HUDWindowFadeOutDelay]; +} + +- (void)fadeWindowOut +{ + [NSCursor setHiddenUntilMouseMoves:YES]; + [[[self window] animator] setAlphaValue:0]; + [self performSelector:@selector(unscheduleTimeUpdate) withObject:nil afterDelay:1]; +} + +- (void)closeWindow +{ + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(fadeWindowOut) object:nil]; + [self unscheduleTimeUpdate]; + NSWindow *window = [self window]; + [[window contentView] removeTrackingArea:_area]; + [self setArea:nil]; + [window close]; + [window setDelegate:nil]; + [self setWindow:nil]; +} + +#ifndef HAVE_MEDIA_CONTROL +// FIXME: This code is never compiled, because HAVE_MEDIA_CONTROL is always defined to something, even on Leopard. +// FIXME: Values in this enum have a different order than ones in WKMediaUIControlType. +enum { + WKMediaUIControlPlayPauseButton, + WKMediaUIControlRewindButton, + WKMediaUIControlFastForwardButton, + WKMediaUIControlExitFullscreenButton, + WKMediaUIControlVolumeDownButton, + WKMediaUIControlSlider, + WKMediaUIControlVolumeUpButton, + WKMediaUIControlTimeline +}; +#endif + +static NSControl *createControlWithMediaUIControlType(int controlType, NSRect frame) +{ +#ifdef HAVE_MEDIA_CONTROL + NSControl *control = wkCreateMediaUIControl(controlType); + [control setFrame:frame]; + return control; +#else + // FIXME: This code is never compiled, because HAVE_MEDIA_CONTROL is always defined to something, even on Leopard. + if (controlType == wkMediaUIControlSlider) + return [[NSSlider alloc] initWithFrame:frame]; + return [[NSControl alloc] initWithFrame:frame]; +#endif +} + +static NSTextField *createTimeTextField(NSRect frame) +{ + NSTextField *textField = [[NSTextField alloc] initWithFrame:frame]; + [textField setTextColor:[NSColor whiteColor]]; + [textField setBordered:NO]; + [textField setFont:[NSFont boldSystemFontOfSize:10]]; + [textField setDrawsBackground:NO]; + [textField setBezeled:NO]; + [textField setEditable:NO]; + [textField setSelectable:NO]; + return textField; +} + +- (void)windowDidLoad +{ + static const CGFloat horizontalMargin = 10; + static const CGFloat playButtonWidth = 41; + static const CGFloat playButtonHeight = 35; + static const CGFloat playButtonTopMargin = 4; + static const CGFloat volumeSliderWidth = 50; + static const CGFloat volumeSliderHeight = 13; + static const CGFloat volumeButtonWidth = 18; + static const CGFloat volumeButtonHeight = 16; + static const CGFloat volumeUpButtonLeftMargin = 4; + static const CGFloat volumeControlsTopMargin = 13; + static const CGFloat exitFullscreenButtonWidth = 25; + static const CGFloat exitFullscreenButtonHeight = 21; + static const CGFloat exitFullscreenButtonTopMargin = 11; + static const CGFloat timelineWidth = 315; + static const CGFloat timelineHeight = 14; + static const CGFloat timelineBottomMargin = 7; + static const CGFloat timeTextFieldWidth = 54; + static const CGFloat timeTextFieldHeight = 13; + static const CGFloat timeTextFieldHorizontalMargin = 7; + + NSWindow *window = [self window]; + ASSERT(window); + +#ifdef HAVE_MEDIA_CONTROL + NSView *background = wkCreateMediaUIBackgroundView(); +#else + // FIXME: This code is never compiled, because HAVE_MEDIA_CONTROL is always defined to something, even on Leopard. + NSView *background = [[NSView alloc] init]; +#endif + [window setContentView:background]; + _area = [[NSTrackingArea alloc] initWithRect:[background bounds] options:NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways owner:self userInfo:nil]; + [background addTrackingArea:_area]; + [background release]; + + NSView *contentView = [window contentView]; + + CGFloat center = webkit_CGFloor((windowWidth - playButtonWidth) / 2); + _playButton = (NSButton *)createControlWithMediaUIControlType(wkMediaUIControlPlayPauseButton, NSMakeRect(center, windowHeight - playButtonTopMargin - playButtonHeight, playButtonWidth, playButtonHeight)); + ASSERT([_playButton isKindOfClass:[NSButton class]]); + [_playButton setTarget:self]; + [_playButton setAction:@selector(togglePlaying:)]; + [contentView addSubview:_playButton]; + + CGFloat closeToRight = windowWidth - horizontalMargin - exitFullscreenButtonWidth; + NSControl *exitFullscreenButton = createControlWithMediaUIControlType(wkMediaUIControlExitFullscreenButton, NSMakeRect(closeToRight, windowHeight - exitFullscreenButtonTopMargin - exitFullscreenButtonHeight, exitFullscreenButtonWidth, exitFullscreenButtonHeight)); + [exitFullscreenButton setAction:@selector(exitFullscreen:)]; + [exitFullscreenButton setTarget:self]; + [contentView addSubview:exitFullscreenButton]; + [exitFullscreenButton release]; + + CGFloat volumeControlsBottom = windowHeight - volumeControlsTopMargin - volumeButtonHeight; + CGFloat left = horizontalMargin; + NSControl *volumeDownButton = createControlWithMediaUIControlType(wkMediaUIControlVolumeDownButton, NSMakeRect(left, volumeControlsBottom, volumeButtonWidth, volumeButtonHeight)); + [contentView addSubview:volumeDownButton]; + [volumeDownButton setTarget:self]; + [volumeDownButton setAction:@selector(setVolumeToZero:)]; + [volumeDownButton release]; + + left += volumeButtonWidth; + _volumeSlider = createControlWithMediaUIControlType(wkMediaUIControlSlider, NSMakeRect(left, volumeControlsBottom + webkit_CGFloor((volumeButtonHeight - volumeSliderHeight) / 2), volumeSliderWidth, volumeSliderHeight)); + [_volumeSlider setValue:[NSNumber numberWithDouble:[self maxVolume]] forKey:@"maxValue"]; + [_volumeSlider setTarget:self]; + [_volumeSlider setAction:@selector(volumeChanged:)]; + [contentView addSubview:_volumeSlider]; + + left += volumeSliderWidth + volumeUpButtonLeftMargin; + NSControl *volumeUpButton = createControlWithMediaUIControlType(wkMediaUIControlVolumeUpButton, NSMakeRect(left, volumeControlsBottom, volumeButtonWidth, volumeButtonHeight)); + [volumeUpButton setTarget:self]; + [volumeUpButton setAction:@selector(setVolumeToMaximum:)]; + [contentView addSubview:volumeUpButton]; + [volumeUpButton release]; + +#ifdef HAVE_MEDIA_CONTROL + _timeline = wkCreateMediaUIControl(wkMediaUIControlTimeline); +#else + // FIXME: This code is never compiled, because HAVE_MEDIA_CONTROL is always defined to something, even on Leopard. + _timeline = [[NSSlider alloc] init]; +#endif + [_timeline setTarget:self]; + [_timeline setAction:@selector(timelinePositionChanged:)]; + [_timeline setFrame:NSMakeRect(webkit_CGFloor((windowWidth - timelineWidth) / 2), timelineBottomMargin, timelineWidth, timelineHeight)]; + [contentView addSubview:_timeline]; + + _elapsedTimeText = createTimeTextField(NSMakeRect(timeTextFieldHorizontalMargin, timelineBottomMargin, timeTextFieldWidth, timeTextFieldHeight)); + [_elapsedTimeText setAlignment:NSLeftTextAlignment]; + [contentView addSubview:_elapsedTimeText]; + + _remainingTimeText = createTimeTextField(NSMakeRect(windowWidth - timeTextFieldHorizontalMargin - timeTextFieldWidth, timelineBottomMargin, timeTextFieldWidth, timeTextFieldHeight)); + [_remainingTimeText setAlignment:NSRightTextAlignment]; + [contentView addSubview:_remainingTimeText]; + + [window recalculateKeyViewLoop]; + [window setInitialFirstResponder:_playButton]; + [window center]; +} + +- (void)updateVolume +{ + [_volumeSlider setFloatValue:[self volume]]; +} + +- (void)updateTime +{ + [self updateVolume]; + + [_timeline setFloatValue:[self currentTime]]; + [_timeline setValue:[NSNumber numberWithDouble:[self duration]] forKey:@"maxValue"]; + + [_remainingTimeText setStringValue:[self remainingTimeText]]; + [_elapsedTimeText setStringValue:[self elapsedTimeText]]; +} + +- (void)endScrubbing +{ + ASSERT(_isScrubbing); + _isScrubbing = NO; + if (HTMLMediaElement* mediaElement = [_delegate mediaElement]) + mediaElement->endScrubbing(); +} + +- (void)timelinePositionChanged:(id)sender +{ + UNUSED_PARAM(sender); + [self setCurrentTime:[_timeline floatValue]]; + if (!_isScrubbing) { + _isScrubbing = YES; + if (HTMLMediaElement* mediaElement = [_delegate mediaElement]) + mediaElement->beginScrubbing(); + static NSArray *endScrubbingModes = [[NSArray alloc] initWithObjects:NSDefaultRunLoopMode, NSModalPanelRunLoopMode, nil]; + // Schedule -endScrubbing for when leaving mouse tracking mode. + [[NSRunLoop currentRunLoop] performSelector:@selector(endScrubbing) target:self argument:nil order:0 modes:endScrubbingModes]; + } +} + +- (float)currentTime +{ + return [_delegate mediaElement] ? [_delegate mediaElement]->currentTime() : 0; +} + +- (void)setCurrentTime:(float)currentTime +{ + if (![_delegate mediaElement]) + return; + WebCore::ExceptionCode e; + [_delegate mediaElement]->setCurrentTime(currentTime, e); + [self updateTime]; +} + +- (double)duration +{ + return [_delegate mediaElement] ? [_delegate mediaElement]->duration() : 0; +} + +- (float)maxVolume +{ + // Set the volume slider resolution + return 100; +} + +- (void)volumeChanged:(id)sender +{ + UNUSED_PARAM(sender); + [self setVolume:[_volumeSlider floatValue]]; +} + +- (void)setVolumeToZero:(id)sender +{ + UNUSED_PARAM(sender); + [self setVolume:0]; +} + +- (void)setVolumeToMaximum:(id)sender +{ + UNUSED_PARAM(sender); + [self setVolume:[self maxVolume]]; +} + +- (void)decrementVolume +{ + if (![_delegate mediaElement]) + return; + + float volume = [self volume] - 10; + [self setVolume:MAX(volume, 0)]; +} + +- (void)incrementVolume +{ + if (![_delegate mediaElement]) + return; + + float volume = [self volume] + 10; + [self setVolume:min(volume, [self maxVolume])]; +} + +- (float)volume +{ + return [_delegate mediaElement] ? [_delegate mediaElement]->volume() * [self maxVolume] : 0; +} + +- (void)setVolume:(float)volume +{ + if (![_delegate mediaElement]) + return; + WebCore::ExceptionCode e; + if ([_delegate mediaElement]->muted()) + [_delegate mediaElement]->setMuted(false); + [_delegate mediaElement]->setVolume(volume / [self maxVolume], e); + [self updateVolume]; +} + +- (void)updatePlayButton +{ + [_playButton setIntValue:[self playing]]; +} + +- (void)updateRate +{ + BOOL playing = [self playing]; + + // Keep the HUD visible when paused. + if (!playing) + [self fadeWindowIn]; + else if (!_mouseIsInHUD) { + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(fadeWindowOut) object:nil]; + [self performSelector:@selector(fadeWindowOut) withObject:nil afterDelay:HUDWindowFadeOutDelay]; + } + [self updatePlayButton]; +} + +- (void)togglePlaying:(id)sender +{ + UNUSED_PARAM(sender); + [self setPlaying:![self playing]]; +} + +- (BOOL)playing +{ + HTMLMediaElement* mediaElement = [_delegate mediaElement]; + if (!mediaElement) + return NO; + + return !mediaElement->canPlay(); +} + +- (void)setPlaying:(BOOL)playing +{ + HTMLMediaElement* mediaElement = [_delegate mediaElement]; + + if (!mediaElement) + return; + + if (playing) + mediaElement->play(mediaElement->processingUserGesture()); + else + mediaElement->pause(mediaElement->processingUserGesture()); +} + +static NSString *timeToString(double time) +{ + ASSERT_ARG(time, time >= 0); + + if (!isfinite(time)) + time = 0; + + int seconds = narrowPrecisionToFloat(abs(time)); + int hours = seconds / (60 * 60); + int minutes = (seconds / 60) % 60; + seconds %= 60; + + if (hours) + return [NSString stringWithFormat:@"%d:%02d:%02d", hours, minutes, seconds]; + + return [NSString stringWithFormat:@"%02d:%02d", minutes, seconds]; +} + +- (NSString *)remainingTimeText +{ + HTMLMediaElement* mediaElement = [_delegate mediaElement]; + if (!mediaElement) + return @""; + + return [@"-" stringByAppendingString:timeToString(mediaElement->duration() - mediaElement->currentTime())]; +} + +- (NSString *)elapsedTimeText +{ + if (![_delegate mediaElement]) + return @""; + + return timeToString([_delegate mediaElement]->currentTime()); +} + +// MARK: NSResponder + +- (void)mouseEntered:(NSEvent *)theEvent +{ + UNUSED_PARAM(theEvent); + // Make sure the HUD won't be hidden from now + _mouseIsInHUD = YES; + [self fadeWindowIn]; +} + +- (void)mouseExited:(NSEvent *)theEvent +{ + UNUSED_PARAM(theEvent); + _mouseIsInHUD = NO; + [self fadeWindowIn]; +} + +- (void)rewind:(id)sender +{ + UNUSED_PARAM(sender); + if (![_delegate mediaElement]) + return; + [_delegate mediaElement]->rewind(30); +} + +- (void)fastForward:(id)sender +{ + UNUSED_PARAM(sender); + if (![_delegate mediaElement]) + return; +} + +- (void)exitFullscreen:(id)sender +{ + UNUSED_PARAM(sender); + if (_isEndingFullscreen) + return; + _isEndingFullscreen = YES; + [_delegate requestExitFullscreen]; +} + +// MARK: NSWindowDelegate + +- (void)windowDidExpose:(NSNotification *)notification +{ + UNUSED_PARAM(notification); + [self scheduleTimeUpdate]; +} + +- (void)windowDidClose:(NSNotification *)notification +{ + UNUSED_PARAM(notification); + [self unscheduleTimeUpdate]; +} + +@end + +#endif diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebWindowAnimation.h b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebWindowAnimation.h new file mode 100644 index 0000000..ecf975b --- /dev/null +++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebWindowAnimation.h @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2009 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import <Cocoa/Cocoa.h> + +@interface WebWindowScaleAnimation : NSAnimation { +@private + NSRect _initialFrame, _finalFrame, _realFrame; + NSWindow *_window; // (assign) + NSAnimation *_subAnimation; // (retain) + NSTimeInterval _hintedDuration; +} +- (id)initWithHintedDuration:(NSTimeInterval)duration window:(NSWindow *)window initalFrame:(NSRect)initialFrame finalFrame:(NSRect)finalFrame; + +- (void)setSubAnimation:(NSAnimation *)animation; + +- (NSRect)currentFrame; + +// Be sure to call setWindow:nil to clear the weak link _window when appropriate +- (void)setWindow:(NSWindow *)window; +@end + + +@interface WebWindowFadeAnimation : NSAnimation { +@private + CGFloat _initialAlpha, _finalAlpha; + NSWindow *_window; // (assign) + BOOL _isStopped; + +} +- (id)initWithDuration:(NSTimeInterval)duration window:(NSWindow *)window initialAlpha:(CGFloat)initialAlpha finalAlpha:(CGFloat)finalAlpha; + +- (CGFloat)currentAlpha; + +// Be sure to call setWindow:nil to clear the weak link _window when appropriate +- (void)setWindow:(NSWindow *)window; +@end diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebWindowAnimation.mm b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebWindowAnimation.mm new file mode 100644 index 0000000..1b11894 --- /dev/null +++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebWindowAnimation.mm @@ -0,0 +1,234 @@ +/* + * Copyright (C) 2009 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import "config.h" + +#import "WebWindowAnimation.h" + +#import "FloatConversion.h" +#import "WebCoreSystemInterface.h" +#import <wtf/Assertions.h> +#import <wtf/UnusedParam.h> + +using namespace WebCore; + +static const CGFloat slowMotionFactor = 10; + +static NSTimeInterval WebWindowAnimationDurationFromDuration(NSTimeInterval duration) +{ + return ([[NSApp currentEvent] modifierFlags] & NSShiftKeyMask) ? duration * slowMotionFactor : duration; +} + +static NSRect scaledRect(NSRect _initialFrame, NSRect _finalFrame, CGFloat factor) +{ + NSRect currentRect = _initialFrame; + currentRect.origin.x += (NSMinX(_finalFrame) - NSMinX(_initialFrame)) * factor; + currentRect.origin.y += (NSMinY(_finalFrame) - NSMinY(_initialFrame)) * factor; + currentRect.size.width += (NSWidth(_finalFrame) - NSWidth(_initialFrame)) * factor; + currentRect.size.height += (NSHeight(_finalFrame) - NSHeight(_initialFrame)) * factor; + return currentRect; +} + +static CGFloat squaredDistance(NSPoint point1, NSPoint point2) +{ + CGFloat deltaX = point1.x - point2.x; + CGFloat deltaY = point1.y - point2.y; + return deltaX * deltaX + deltaY * deltaY; +} + +@implementation WebWindowScaleAnimation + +- (id)init +{ + self = [super init]; + if (!self) + return nil; + [self setAnimationBlockingMode:NSAnimationNonblockingThreaded]; + [self setFrameRate:60]; + return self; +} + +- (id)initWithHintedDuration:(NSTimeInterval)duration window:(NSWindow *)window initalFrame:(NSRect)initialFrame finalFrame:(NSRect)finalFrame +{ + self = [self init]; + if (!self) + return nil; + _hintedDuration = duration; + _window = window; + _initialFrame = initialFrame; + _finalFrame = finalFrame; + _realFrame = [window frame]; + return self; +} + +- (void) dealloc +{ + [_subAnimation release]; + [super dealloc]; +} + +- (void)setDuration:(NSTimeInterval)duration +{ + [super setDuration:WebWindowAnimationDurationFromDuration(duration)]; +} + +- (void)setWindow:(NSWindow *)window +{ + _window = window; +} + +- (float)currentValue +{ + return narrowPrecisionToFloat(0.5 - 0.5 * cos(M_PI * (1 - [self currentProgress]))); +} + +- (NSRect)currentFrame +{ + return scaledRect(_finalFrame, _initialFrame, [self currentValue]); +} + +- (void)setCurrentProgress:(NSAnimationProgress)progress +{ + if (!_window) + return; + + [super setCurrentProgress:progress]; + + NSRect currentRect = [self currentFrame]; + wkWindowSetScaledFrame(_window, currentRect, _realFrame); + [_subAnimation setCurrentProgress:progress]; +} + +- (void)setSubAnimation:(NSAnimation *)animation +{ + id oldAnimation = _subAnimation; + _subAnimation = [animation retain]; + [oldAnimation release]; +} + +- (NSTimeInterval)additionalDurationNeededToReachFinalFrame +{ + static const CGFloat maxAdditionalDuration = 1; + static const CGFloat speedFactor = 0.0001f; + + CGFloat maxDist = squaredDistance(_initialFrame.origin, _finalFrame.origin); + CGFloat dist; + + dist = squaredDistance(NSMakePoint(NSMaxX(_initialFrame), NSMinY(_initialFrame)), NSMakePoint(NSMaxX(_finalFrame), NSMinY(_finalFrame))); + if (dist > maxDist) + maxDist = dist; + + dist = squaredDistance(NSMakePoint(NSMaxX(_initialFrame), NSMaxY(_initialFrame)), NSMakePoint(NSMaxX(_finalFrame), NSMaxY(_finalFrame))); + if (dist > maxDist) + maxDist = dist; + + dist = squaredDistance(NSMakePoint(NSMinX(_initialFrame), NSMinY(_initialFrame)), NSMakePoint(NSMinX(_finalFrame), NSMinY(_finalFrame))); + if (dist > maxDist) + maxDist = dist; + + return MIN(sqrt(maxDist) * speedFactor, maxAdditionalDuration); +} + +- (void)startAnimation +{ + // Compute extra time + if (_hintedDuration) + [self setDuration:_hintedDuration + [self additionalDurationNeededToReachFinalFrame]]; + [super startAnimation]; +} + +- (void)stopAnimation +{ + _window = nil; + [super stopAnimation]; + [_subAnimation stopAnimation]; +} + +@end + +@implementation WebWindowFadeAnimation + +- (id)init +{ + self = [super init]; + if (!self) + return nil; + [self setAnimationBlockingMode:NSAnimationNonblockingThreaded]; + [self setFrameRate:60]; + [self setAnimationCurve:NSAnimationEaseInOut]; + return self; +} + +- (id)initWithDuration:(NSTimeInterval)duration window:(NSWindow *)window initialAlpha:(CGFloat)initialAlpha finalAlpha:(CGFloat)finalAlpha +{ + UNUSED_PARAM(duration); + self = [self init]; + if (!self) + return nil; + _window = window; + _initialAlpha = initialAlpha; + _finalAlpha = finalAlpha; + return self; +} + +- (void)setDuration:(NSTimeInterval)duration +{ + [super setDuration:WebWindowAnimationDurationFromDuration(duration)]; +} + +- (CGFloat)currentAlpha +{ + return MAX(0, MIN(1, _initialAlpha + [self currentValue] * (_finalAlpha - _initialAlpha))); +} + +- (void)setCurrentProgress:(NSAnimationProgress)progress +{ + if (_isStopped) + return; + + ASSERT(_window); + [super setCurrentProgress:progress]; + + wkWindowSetAlpha(_window, [self currentAlpha]); +} + +- (void)setWindow:(NSWindow*)window +{ + _window = window; +} + +- (void)stopAnimation +{ + // This is relevant when we are a sub animation of a scale animation. + // In this case we are hosted in the animated thread of the parent + // and even after [super stopAnimation], the parent might call + // setCurrrentProgress. + _isStopped = YES; + + [super stopAnimation]; +} + +@end + diff --git a/src/3rdparty/webkit/Source/WebCore/platform/network/HTTPHeaderMap.cpp b/src/3rdparty/webkit/Source/WebCore/platform/network/HTTPHeaderMap.cpp index 59cbcbe..3541e1e 100644 --- a/src/3rdparty/webkit/Source/WebCore/platform/network/HTTPHeaderMap.cpp +++ b/src/3rdparty/webkit/Source/WebCore/platform/network/HTTPHeaderMap.cpp @@ -97,20 +97,32 @@ struct CaseFoldingCStringTranslator { String HTTPHeaderMap::get(const char* name) const { +#if COMPILER(WINSCW) + return HashMap::get((AtomicString)(name)); +#else const_iterator i = find<const char*, CaseFoldingCStringTranslator>(name); if (i == end()) return String(); return i->second; +#endif } bool HTTPHeaderMap::contains(const char* name) const { +#if COMPILER(WINSCW) + return HashMap::contains((AtomicString)(name)); +#else return find<const char*, CaseFoldingCStringTranslator>(name) != end(); +#endif } pair<HTTPHeaderMap::iterator, bool> HTTPHeaderMap::add(const char* name, const String& value) { +#if COMPILER(WINSCW) + return HashMap::add((AtomicString)(name), value); +#else return HashMap<AtomicString, String, CaseFoldingHash>::add<const char*, CaseFoldingCStringTranslator>(name, value); +#endif } } // namespace WebCore diff --git a/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.h b/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.h index bd530de..e82a6fc 100644 --- a/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.h +++ b/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.h @@ -38,14 +38,20 @@ typedef struct _NSRect NSRect; #ifdef __OBJC__ @class NSArray; +@class NSControl; @class NSString; @class NSURL; +@class NSView; +@class NSWindow; @class QTMovie; @class QTMovieView; #else class NSArray; +class NSControl; class NSString; class NSURL; +class NSView; +class NSWindow; class QTMovie; class QTMovieView; #endif @@ -53,6 +59,8 @@ class QTMovieView; extern "C" { // In alphabetical order. +extern NSView *(*wkCreateMediaUIBackgroundView)(void); +extern NSControl *(*wkCreateMediaUIControl)(int); extern unsigned (*wkQTIncludeOnlyModernMediaFileTypes)(void); extern int (*wkQTMovieDataRate)(QTMovie*); extern void (*wkQTMovieDisableComponent)(uint32_t[5]); @@ -68,6 +76,19 @@ extern void (*wkQTMovieViewSetDrawSynchronously)(QTMovieView*, BOOL); extern NSArray *(*wkQTGetSitesInMediaDownloadCache)(); extern void (*wkQTClearMediaDownloadCacheForSite)(NSString *site); extern void (*wkQTClearMediaDownloadCache)(); +extern void (*wkWindowSetAlpha)(NSWindow *, float); +extern void (*wkWindowSetScaledFrame)(NSWindow *, NSRect, NSRect); + +typedef enum { + wkMediaUIControlTimeline, + wkMediaUIControlSlider, + wkMediaUIControlPlayPauseButton, + wkMediaUIControlExitFullscreenButton, + wkMediaUIControlRewindButton, + wkMediaUIControlFastForwardButton, + wkMediaUIControlVolumeUpButton, + wkMediaUIControlVolumeDownButton +} wkMediaUIControlType; } diff --git a/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.mm b/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.mm index 3e26671..868cbd9 100644 --- a/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.mm +++ b/src/3rdparty/webkit/Source/WebCore/platform/qt/WebCoreSystemInterface.mm @@ -27,6 +27,8 @@ #import "WebCoreSystemInterface.h" #import <Foundation/Foundation.h> +NSView *(*wkCreateMediaUIBackgroundView)(void); +NSControl *(*wkCreateMediaUIControl)(int); unsigned (*wkQTIncludeOnlyModernMediaFileTypes)(void); int (*wkQTMovieDataRate)(QTMovie*); void (*wkQTMovieDisableComponent)(uint32_t[5]); @@ -42,4 +44,6 @@ void (*wkQTMovieViewSetDrawSynchronously)(QTMovieView*, BOOL); NSArray *(*wkQTGetSitesInMediaDownloadCache)(); void (*wkQTClearMediaDownloadCacheForSite)(NSString *site); void (*wkQTClearMediaDownloadCache)(); +void (*wkWindowSetAlpha)(NSWindow *, float); +void (*wkWindowSetScaledFrame)(NSWindow *, NSRect, NSRect); diff --git a/src/3rdparty/webkit/Source/WebCore/plugins/PluginView.cpp b/src/3rdparty/webkit/Source/WebCore/plugins/PluginView.cpp index fd2b0b0..b020946 100644 --- a/src/3rdparty/webkit/Source/WebCore/plugins/PluginView.cpp +++ b/src/3rdparty/webkit/Source/WebCore/plugins/PluginView.cpp @@ -909,8 +909,9 @@ void PluginView::focusPluginElement() { // Focus the plugin if (Page* page = m_parentFrame->page()) - page->focusController()->setFocusedFrame(m_parentFrame); - m_parentFrame->document()->setFocusedNode(m_element); + page->focusController()->setFocusedNode(m_element, m_parentFrame); + else + m_parentFrame->document()->setFocusedNode(m_element); } void PluginView::didReceiveResponse(const ResourceResponse& response) diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/CounterNode.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/CounterNode.cpp index 323f5db..8a88fc9 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/CounterNode.cpp +++ b/src/3rdparty/webkit/Source/WebCore/rendering/CounterNode.cpp @@ -44,6 +44,49 @@ CounterNode::CounterNode(RenderObject* o, bool hasResetType, int value) CounterNode::~CounterNode() { + // Ideally this would be an assert and this would never be reached. In reality this happens a lot + // so we need to handle these cases. The node is still connected to the tree so we need to detach it. + if (m_parent || m_previousSibling || m_nextSibling || m_firstChild || m_lastChild) { + CounterNode* oldParent = 0; + CounterNode* oldPreviousSibling = 0; + // Instead of calling removeChild() we do this safely as the tree is likely broken if we get here. + if (m_parent) { + if (m_parent->m_firstChild == this) + m_parent->m_firstChild = m_nextSibling; + if (m_parent->m_lastChild == this) + m_parent->m_lastChild = m_previousSibling; + oldParent = m_parent; + m_parent = 0; + } + if (m_previousSibling) { + if (m_previousSibling->m_nextSibling == this) + m_previousSibling->m_nextSibling = m_nextSibling; + oldPreviousSibling = m_previousSibling; + m_previousSibling = 0; + } + if (m_nextSibling) { + if (m_nextSibling->m_previousSibling == this) + m_nextSibling->m_previousSibling = oldPreviousSibling; + m_nextSibling = 0; + } + if (m_firstChild) { + // The node's children are reparented to the old parent. + for (CounterNode* child = m_firstChild; child; ) { + CounterNode* nextChild = child->m_nextSibling; + CounterNode* nextSibling = 0; + child->m_parent = oldParent; + if (oldPreviousSibling) { + nextSibling = oldPreviousSibling->m_nextSibling; + child->m_previousSibling = oldPreviousSibling; + oldPreviousSibling->m_nextSibling = child; + child->m_nextSibling = nextSibling; + nextSibling->m_previousSibling = child; + oldPreviousSibling = child; + } + child = nextChild; + } + } + } resetRenderers(); } diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlock.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlock.cpp index a212dd4..39c0469 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlock.cpp +++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlock.cpp @@ -184,7 +184,7 @@ void RenderBlock::destroy() childBox->remove(); } } - } else if (isInline() && parent()) + } else if (parent()) parent()->dirtyLinesFromChangedChild(this); } @@ -3204,8 +3204,10 @@ void RenderBlock::removeFloatingObject(RenderBox* o) logicalBottom = max(logicalBottom, logicalTop + 1); } if (r->m_originatingLine) { - ASSERT(r->m_originatingLine->renderer() == this); - r->m_originatingLine->markDirty(); + if (!selfNeedsLayout()) { + ASSERT(r->m_originatingLine->renderer() == this); + r->m_originatingLine->markDirty(); + } #if !ASSERT_DISABLED r->m_originatingLine = 0; #endif @@ -3668,7 +3670,7 @@ void RenderBlock::clearFloats() } floatMap.remove(f->m_renderer); - if (oldFloatingObject->m_originatingLine) { + if (oldFloatingObject->m_originatingLine && !selfNeedsLayout()) { ASSERT(oldFloatingObject->m_originatingLine->renderer() == this); oldFloatingObject->m_originatingLine->markDirty(); } diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlockLineLayout.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlockLineLayout.cpp index b0b10e3..2e92801 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlockLineLayout.cpp +++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBlockLineLayout.cpp @@ -1768,7 +1768,7 @@ void TrailingObjects::updateMidpointsForTrailingBoxes(LineMidpointState& lineMid if (lineMidpointState.numMidpoints % 2) { // Find the trailing space object's midpoint. int trailingSpaceMidpoint = lineMidpointState.numMidpoints - 1; - for ( ; trailingSpaceMidpoint >= 0 && lineMidpointState.midpoints[trailingSpaceMidpoint].m_obj != m_whitespace; --trailingSpaceMidpoint) { } + for ( ; trailingSpaceMidpoint > 0 && lineMidpointState.midpoints[trailingSpaceMidpoint].m_obj != m_whitespace; --trailingSpaceMidpoint) { } ASSERT(trailingSpaceMidpoint >= 0); if (collapseFirstSpace == CollapseFirstSpace) lineMidpointState.midpoints[trailingSpaceMidpoint].m_pos--; diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.cpp index 0b33abe..9c2aa48 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.cpp +++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.cpp @@ -3200,7 +3200,7 @@ bool RenderBox::shrinkToAvoidFloats() const bool RenderBox::avoidsFloats() const { - return isReplaced() || hasOverflowClip() || isHR() || isLegend() || isWritingModeRoot(); + return isReplaced() || hasOverflowClip() || isHR() || isLegend() || isWritingModeRoot() || isDeprecatedFlexItem(); } void RenderBox::addShadowOverflow() diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.h b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.h index 258f213..08dc922 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.h +++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderBox.h @@ -378,6 +378,8 @@ public: virtual void markForPaginationRelayoutIfNeeded() { } bool isWritingModeRoot() const { return !parent() || parent()->style()->writingMode() != style()->writingMode(); } + + bool isDeprecatedFlexItem() const { return !isInline() && !isFloatingOrPositioned() && parent() && parent()->isFlexibleBox(); } virtual int lineHeight(bool firstLine, LineDirectionMode, LinePositionMode = PositionOnContainingLine) const; virtual int baselinePosition(FontBaseline, bool firstLine, LineDirectionMode, LinePositionMode = PositionOnContainingLine) const; diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderFlexibleBox.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderFlexibleBox.cpp index b55bd9d..2a3b32c 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderFlexibleBox.cpp +++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderFlexibleBox.cpp @@ -90,8 +90,8 @@ public: current = forward ? current->nextSiblingBox() : current->previousSiblingBox(); if (current && current->style()->boxOrdinalGroup() > lastOrdinal) lastOrdinal = current->style()->boxOrdinalGroup(); - } while (!current || current->style()->boxOrdinalGroup() != currentOrdinal || - current->style()->visibility() == COLLAPSE); + } while (!current || (!current->isAnonymous() + && (current->style()->boxOrdinalGroup() != currentOrdinal || current->style()->visibility() == COLLAPSE))); return current; } diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderIFrame.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderIFrame.cpp index 366d9e7..1ce79d4 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderIFrame.cpp +++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderIFrame.cpp @@ -102,8 +102,9 @@ bool RenderIFrame::flattenFrame() if (!view) return false; - // Do not flatten offscreen inner frames during frame flattening. - return absoluteBoundingBoxRect().intersects(IntRect(IntPoint(0, 0), view->contentsSize())); + // Do not flatten offscreen inner frames during frame flattening, as flattening might make them visible. + IntRect boundingRect = absoluteBoundingBoxRect(); + return boundingRect.maxX() > 0 && boundingRect.maxY() > 0; } void RenderIFrame::layout() diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderInline.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderInline.cpp index 5fb8683..5bd726d 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderInline.cpp +++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderInline.cpp @@ -99,8 +99,7 @@ void RenderInline::destroy() for (InlineFlowBox* box = firstLineBox(); box; box = box->nextLineBox()) box->remove(); } - } else if (isInline() && parent()) - parent()->dirtyLinesFromChangedChild(this); + } } m_lineBoxes.deleteLineBoxes(renderArena()); @@ -845,11 +844,9 @@ InlineBox* RenderInline::culledInlineFirstLineBox() const // We want to get the margin box in the inline direction, and then use our font ascent/descent in the block // direction (aligned to the root box's baseline). - if (curr->isBox()) { - RenderBox* currBox = toRenderBox(curr); - if (currBox->inlineBoxWrapper()) - return currBox->inlineBoxWrapper(); - } else if (curr->isRenderInline()) { + if (curr->isBox()) + return toRenderBox(curr)->inlineBoxWrapper(); + if (curr->isRenderInline()) { RenderInline* currInline = toRenderInline(curr); InlineBox* result = currInline->firstLineBoxIncludingCulling(); if (result) @@ -871,11 +868,9 @@ InlineBox* RenderInline::culledInlineLastLineBox() const // We want to get the margin box in the inline direction, and then use our font ascent/descent in the block // direction (aligned to the root box's baseline). - if (curr->isBox()) { - RenderBox* currBox = toRenderBox(curr); - if (currBox->inlineBoxWrapper()) - return currBox->inlineBoxWrapper(); - } else if (curr->isRenderInline()) { + if (curr->isBox()) + return toRenderBox(curr)->inlineBoxWrapper(); + if (curr->isRenderInline()) { RenderInline* currInline = toRenderInline(curr); InlineBox* result = currInline->lastLineBoxIncludingCulling(); if (result) diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderLineBoxList.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderLineBoxList.cpp index 32f133c..4b50acb 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderLineBoxList.cpp +++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderLineBoxList.cpp @@ -355,8 +355,21 @@ void RenderLineBoxList::dirtyLinesFromChangedChild(RenderObject* container, Rend if (box) break; } - if (!box) + if (!box) { + if (inlineContainer && !inlineContainer->alwaysCreateLineBoxes()) { + // https://bugs.webkit.org/show_bug.cgi?id=60778 + // We may have just removed a <br> with no line box that was our first child. In this case + // we won't find a previous sibling, but firstBox can be pointing to a following sibling. + // This isn't good enough, since we won't locate the root line box that encloses the removed + // <br>. We have to just over-invalidate a bit and go up to our parent. + if (!inlineContainer->parent()->selfNeedsLayout()) { + inlineContainer->parent()->dirtyLinesFromChangedChild(inlineContainer); + inlineContainer->setNeedsLayout(true); // Mark the container as needing layout to avoid dirtying the same lines again across multiple destroy() calls of the same subtree. + } + return; + } box = firstBox->root(); + } // If we found a line box, then dirty it. if (box) { diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderObject.h b/src/3rdparty/webkit/Source/WebCore/rendering/RenderObject.h index 537f08a..44ee43c 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderObject.h +++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderObject.h @@ -1022,10 +1022,13 @@ inline void RenderObject::markContainingBlocksForLayout(bool scheduleRelayout, R if (!container && !o->isRenderView()) return; if (!last->isText() && (last->style()->position() == FixedPosition || last->style()->position() == AbsolutePosition)) { + bool willSkipRelativelyPositionedInlines = !o->isRenderBlock(); while (o && !o->isRenderBlock()) // Skip relatively positioned inlines and get to the enclosing RenderBlock. o = o->container(); if (!o || o->m_posChildNeedsLayout) return; + if (willSkipRelativelyPositionedInlines) + container = o->container(); o->m_posChildNeedsLayout = true; simplifiedNormalFlowLayout = true; ASSERT(!o->isSetNeedsLayoutForbidden()); diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.cpp index c27d336..09a7944 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.cpp +++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.cpp @@ -57,6 +57,14 @@ RenderReplaced::~RenderReplaced() { } +void RenderReplaced::destroy() +{ + if (!documentBeingDestroyed() && parent()) + parent()->dirtyLinesFromChangedChild(this); + + RenderBox::destroy(); +} + void RenderReplaced::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle) { RenderBox::styleDidChange(diff, oldStyle); diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.h b/src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.h index d6ebba6..29fc71c 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.h +++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderReplaced.h @@ -32,6 +32,8 @@ public: RenderReplaced(Node*, const IntSize& intrinsicSize); virtual ~RenderReplaced(); + virtual void destroy(); + protected: virtual void layout(); diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderText.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderText.cpp index 3d20df4..556379e 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderText.cpp +++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderText.cpp @@ -37,6 +37,7 @@ #include "RenderCombineText.h" #include "RenderLayer.h" #include "RenderView.h" +#include "Settings.h" #include "Text.h" #include "TextBreakIterator.h" #include "TextResourceDecoder.h" @@ -53,6 +54,37 @@ using namespace Unicode; namespace WebCore { +class SecureTextTimer; +typedef HashMap<RenderText*, SecureTextTimer*> SecureTextTimerMap; +static SecureTextTimerMap* gSecureTextTimers = 0; + +class SecureTextTimer : public TimerBase { +public: + SecureTextTimer(RenderText* renderText) + : m_renderText(renderText) + , m_lastTypedCharacterOffset(-1) + { + } + + void restartWithNewText(unsigned lastTypedCharacterOffset) + { + m_lastTypedCharacterOffset = lastTypedCharacterOffset; + startOneShot(m_renderText->document()->settings()->passwordEchoDurationInSeconds()); + } + void invalidate() { m_lastTypedCharacterOffset = -1; } + unsigned lastTypedCharacterOffset() { return m_lastTypedCharacterOffset; } + +private: + virtual void fired() + { + ASSERT(gSecureTextTimers->contains(m_renderText)); + m_renderText->setText(m_renderText->text(), true /* forcing setting text as it may be masked later */); + } + + RenderText* m_renderText; + int m_lastTypedCharacterOffset; +}; + static void makeCapitalized(String* string, UChar previous) { if (string->isNull()) @@ -196,6 +228,9 @@ void RenderText::removeAndDestroyTextBoxes() void RenderText::destroy() { + if (SecureTextTimer* secureTextTimer = gSecureTextTimers ? gSecureTextTimers->take(this) : 0) + delete secureTextTimer; + removeAndDestroyTextBoxes(); RenderObject::destroy(); } @@ -1158,13 +1193,13 @@ void RenderText::setTextInternal(PassRefPtr<StringImpl> text) case TSNONE: break; case TSCIRCLE: - m_text.makeSecure(whiteBullet); + secureText(whiteBullet); break; case TSDISC: - m_text.makeSecure(bullet); + secureText(bullet); break; case TSSQUARE: - m_text.makeSecure(blackSquare); + secureText(blackSquare); } } @@ -1174,6 +1209,28 @@ void RenderText::setTextInternal(PassRefPtr<StringImpl> text) m_isAllASCII = m_text.containsOnlyASCII(); } +void RenderText::secureText(UChar mask) +{ + if (!m_text.length()) + return; + + int lastTypedCharacterOffsetToReveal = -1; + String revealedText; + SecureTextTimer* secureTextTimer = gSecureTextTimers ? gSecureTextTimers->get(this) : 0; + if (secureTextTimer && secureTextTimer->isActive()) { + lastTypedCharacterOffsetToReveal = secureTextTimer->lastTypedCharacterOffset(); + if (lastTypedCharacterOffsetToReveal >= 0) + revealedText.append(m_text[lastTypedCharacterOffsetToReveal]); + } + + m_text.fill(mask); + if (lastTypedCharacterOffsetToReveal >= 0) { + m_text.replace(lastTypedCharacterOffsetToReveal, 1, revealedText); + // m_text may be updated later before timer fires. We invalidate the lastTypedCharacterOffset to avoid inconsistency. + secureTextTimer->invalidate(); + } +} + void RenderText::setText(PassRefPtr<StringImpl> text, bool force) { ASSERT(text); @@ -1597,4 +1654,17 @@ void RenderText::checkConsistency() const #endif +void RenderText::momentarilyRevealLastTypedCharacter(unsigned lastTypedCharacterOffset) +{ + if (!gSecureTextTimers) + gSecureTextTimers = new SecureTextTimerMap; + + SecureTextTimer* secureTextTimer = gSecureTextTimers->get(this); + if (!secureTextTimer) { + secureTextTimer = new SecureTextTimer(this); + gSecureTextTimers->add(this, secureTextTimer); + } + secureTextTimer->restartWithNewText(lastTypedCharacterOffset); +} + } // namespace WebCore diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderText.h b/src/3rdparty/webkit/Source/WebCore/rendering/RenderText.h index 2008dad..f89a762 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderText.h +++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderText.h @@ -117,6 +117,9 @@ public: bool containsReversedText() const { return m_containsReversedText; } + bool isSecure() const { return style()->textSecurity() != TSNONE; } + void momentarilyRevealLastTypedCharacter(unsigned lastTypedCharacterOffset); + InlineTextBox* findNextInlineTextBox(int offset, int& pos) const; bool allowTabs() const { return !style()->collapseWhiteSpace(); } @@ -158,6 +161,7 @@ private: void updateNeedsTranscoding(); inline void transformText(String&) const; + void secureText(UChar mask); float m_minWidth; // here to minimize padding in 64-bit. diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderThemeWinCE.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderThemeWinCE.cpp index a56ab3e..a22ed8c 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderThemeWinCE.cpp +++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderThemeWinCE.cpp @@ -479,7 +479,7 @@ static HTMLMediaElement* mediaElementParent(Node* node) if (!node) return 0; Node* mediaNode = node->shadowAncestorNode(); - if (!mediaNode || (!mediaNode->hasTagName(HTMLNames::videoTag) && !mediaNode->hasTagName(HTMLNames::audioTag))) + if (!mediaNode || !mediaNode->isElementNode() || !static_cast<Element*>(mediaNode)->isMediaElement()) return 0; return static_cast<HTMLMediaElement*>(mediaNode); diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/RenderWidget.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/RenderWidget.cpp index 894d689..97444cd 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/RenderWidget.cpp +++ b/src/3rdparty/webkit/Source/WebCore/rendering/RenderWidget.cpp @@ -125,6 +125,10 @@ void RenderWidget::destroy() document()->axObjectCache()->childrenChanged(this->parent()); document()->axObjectCache()->remove(this); } + + if (!documentBeingDestroyed() && parent()) + parent()->dirtyLinesFromChangedChild(this); + remove(); if (m_hasCounterNodeMap) diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/svg/RenderSVGInline.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/svg/RenderSVGInline.cpp index 02a85ce..fdfd92d 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/svg/RenderSVGInline.cpp +++ b/src/3rdparty/webkit/Source/WebCore/rendering/svg/RenderSVGInline.cpp @@ -95,6 +95,9 @@ void RenderSVGInline::absoluteQuads(Vector<FloatQuad>& quads) void RenderSVGInline::destroy() { + if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(this)) + textRenderer->setNeedsPositioningValuesUpdate(); + SVGResourcesCache::clientDestroyed(this); RenderInline::destroy(); } diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGInlineFlowBox.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGInlineFlowBox.cpp index 1d0043b..8992a2a 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGInlineFlowBox.cpp +++ b/src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGInlineFlowBox.cpp @@ -74,8 +74,11 @@ void SVGInlineFlowBox::paint(PaintInfo& paintInfo, int, int, int, int) IntRect SVGInlineFlowBox::calculateBoundaries() const { IntRect childRect; - for (InlineBox* child = firstChild(); child; child = child->nextOnLine()) + for (InlineBox* child = firstChild(); child; child = child->nextOnLine()) { + if (!child->isSVGInlineTextBox() && !child->isSVGInlineFlowBox()) + continue; childRect.unite(child->calculateBoundaries()); + } return childRect; } diff --git a/src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.cpp b/src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.cpp index 42eb8e8..4121723 100644 --- a/src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.cpp +++ b/src/3rdparty/webkit/Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.cpp @@ -39,7 +39,11 @@ void SVGTextLayoutAttributesBuilder::buildLayoutAttributesForTextSubtree(RenderS { ASSERT(textRoot); - // Build list of x/y/dx/dy/rotate values for each subtree element that may define these values (tspan/textPath etc). + // We always clear our current attribute as we don't want to keep any stale ones that could survive DOM modification. + Vector<SVGTextLayoutAttributes>& allAttributes = textRoot->layoutAttributes(); + allAttributes.clear(); + + // Build list of x/y/dx/dy/rotate values for each subtree element that may define these values (tspan/textPath etc). unsigned atCharacter = 0; UChar lastCharacter = '\0'; collectTextPositioningElements(textRoot, atCharacter, lastCharacter); @@ -51,8 +55,6 @@ void SVGTextLayoutAttributesBuilder::buildLayoutAttributesForTextSubtree(RenderS buildLayoutAttributesForAllCharacters(textRoot, atCharacter); // Propagate layout attributes to each RenderSVGInlineText object, and the whole list to the RenderSVGText root. - Vector<SVGTextLayoutAttributes>& allAttributes = textRoot->layoutAttributes(); - allAttributes.clear(); atCharacter = 0; lastCharacter = '\0'; propagateLayoutAttributes(textRoot, allAttributes, atCharacter, lastCharacter); diff --git a/src/3rdparty/webkit/Source/WebCore/storage/IDBRequest.cpp b/src/3rdparty/webkit/Source/WebCore/storage/IDBRequest.cpp index f8d818a..96abd87 100644 --- a/src/3rdparty/webkit/Source/WebCore/storage/IDBRequest.cpp +++ b/src/3rdparty/webkit/Source/WebCore/storage/IDBRequest.cpp @@ -66,7 +66,7 @@ IDBRequest::IDBRequest(ScriptExecutionContext* context, PassRefPtr<IDBAny> sourc IDBRequest::~IDBRequest() { - ASSERT(m_readyState == DONE || m_readyState == EarlyDeath); + ASSERT(m_readyState == DONE || m_readyState == EarlyDeath || !scriptExecutionContext()); if (m_transaction) m_transaction->unregisterRequest(this); } @@ -149,8 +149,11 @@ void IDBRequest::abort() ASSERT(m_readyState == DONE); return; } + // FIXME: Remove isDocument check when + // https://bugs.webkit.org/show_bug.cgi?id=57789 is resolved. + if (!scriptExecutionContext() || !scriptExecutionContext()->isDocument()) + return; - ASSERT(scriptExecutionContext()->isDocument()); EventQueue* eventQueue = static_cast<Document*>(scriptExecutionContext())->eventQueue(); for (size_t i = 0; i < m_enqueuedEvents.size(); ++i) { bool removed = eventQueue->cancelEvent(m_enqueuedEvents[i].get()); diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.cpp b/src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.cpp index 6b9c085..0fba66b 100644 --- a/src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.cpp +++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.cpp @@ -70,6 +70,11 @@ SVGElementInstance::~SVGElementInstance() // Deregister as instance for passed element. m_element->removeInstanceMapping(this); + clearChildren(); +} + +void SVGElementInstance::clearChildren() +{ removeAllChildrenInContainer<SVGElementInstance, SVGElementInstance>(this); } @@ -105,8 +110,10 @@ void SVGElementInstance::invalidateAllInstancesOfElement(SVGElement* element) const HashSet<SVGElementInstance*>::const_iterator end = set.end(); for (HashSet<SVGElementInstance*>::const_iterator it = set.begin(); it != end; ++it) { ASSERT((*it)->correspondingElement() == element); - if (SVGUseElement* element = (*it)->correspondingUseElement()) + if (SVGUseElement* element = (*it)->correspondingUseElement()) { + ASSERT(element->inDocument()); element->invalidateShadowTree(); + } } // Be sure to rebuild use trees, if needed diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.h b/src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.h index 2a8c52f..f24c16f 100644 --- a/src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.h +++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGElementInstance.h @@ -59,6 +59,7 @@ public: SVGUseElement* correspondingUseElement() const { return m_correspondingUseElement; } SVGUseElement* directUseElement() const { return m_directUseElement; } SVGElement* shadowTreeElement() const { return m_shadowTreeElement.get(); } + void clearChildren(); void clearUseElements() { m_directUseElement = 0; diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGStyleElement.cpp b/src/3rdparty/webkit/Source/WebCore/svg/SVGStyleElement.cpp index 042af1c..01adb35 100644 --- a/src/3rdparty/webkit/Source/WebCore/svg/SVGStyleElement.cpp +++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGStyleElement.cpp @@ -42,8 +42,7 @@ inline SVGStyleElement::SVGStyleElement(const QualifiedName& tagName, Document* SVGStyleElement::~SVGStyleElement() { - if (m_sheet) - m_sheet->clearOwnerNode(); + StyleElement::clearDocumentData(document(), this); } PassRefPtr<SVGStyleElement> SVGStyleElement::create(const QualifiedName& tagName, Document* document, bool createdByParser) diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.cpp b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.cpp index 4021b4f..35f0401 100644 --- a/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.cpp +++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.cpp @@ -28,6 +28,7 @@ #include "Frame.h" #include "RenderObject.h" #include "RenderSVGResource.h" +#include "RenderSVGText.h" #include "SVGDocumentExtensions.h" #include "SVGNames.h" #include "SVGTextQuery.h" @@ -292,6 +293,17 @@ SVGTextContentElement* SVGTextContentElement::elementFromRenderer(RenderObject* return static_cast<SVGTextContentElement*>(node); } +void SVGTextContentElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) +{ + SVGStyledElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); + + if (changedByParser || !renderer()) + return; + + if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(renderer())) + textRenderer->setNeedsPositioningValuesUpdate(); +} + } #endif // ENABLE(SVG) diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.h b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.h index 94bba70..222a06d 100644 --- a/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.h +++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextContentElement.h @@ -71,6 +71,7 @@ protected: void fillPassedAttributeToPropertyTypeMap(AttributeToPropertyTypeMap&); virtual bool selfHasRelativeLengths() const; + virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0); private: virtual bool isTextContent() const { return true; } diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.cpp b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.cpp index cd714c3..ebd4789 100644 --- a/src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.cpp +++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.cpp @@ -75,30 +75,6 @@ void SVGTextPositioningElement::parseMappedAttribute(Attribute* attr) SVGTextContentElement::parseMappedAttribute(attr); } -static inline void updatePositioningValuesInRenderer(RenderObject* renderer) -{ - RenderSVGText* textRenderer = 0; - - if (renderer->isSVGText()) - textRenderer = toRenderSVGText(renderer); - else { - // Locate RenderSVGText parent renderer. - RenderObject* parent = renderer->parent(); - while (parent && !parent->isSVGText()) - parent = parent->parent(); - - if (parent) { - ASSERT(parent->isSVGText()); - textRenderer = toRenderSVGText(parent); - } - } - - if (!textRenderer) - return; - - textRenderer->setNeedsPositioningValuesUpdate(); -} - void SVGTextPositioningElement::svgAttributeChanged(const QualifiedName& attrName) { SVGTextContentElement::svgAttributeChanged(attrName); @@ -116,23 +92,13 @@ void SVGTextPositioningElement::svgAttributeChanged(const QualifiedName& attrNam return; if (updateRelativeLengths || attrName == SVGNames::rotateAttr) { - updatePositioningValuesInRenderer(renderer); + if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(renderer)) + textRenderer->setNeedsPositioningValuesUpdate(); RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer); return; } } -void SVGTextPositioningElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) -{ - SVGTextContentElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); - - if (changedByParser) - return; - - if (RenderObject* object = renderer()) - updatePositioningValuesInRenderer(object); -} - void SVGTextPositioningElement::synchronizeProperty(const QualifiedName& attrName) { SVGTextContentElement::synchronizeProperty(attrName); diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.h b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.h index 5e6dadc..aa8792f 100644 --- a/src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.h +++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGTextPositioningElement.h @@ -36,7 +36,6 @@ protected: SVGTextPositioningElement(const QualifiedName&, Document*); virtual void parseMappedAttribute(Attribute*); - virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0); virtual void svgAttributeChanged(const QualifiedName&); virtual void synchronizeProperty(const QualifiedName&); void fillPassedAttributeToPropertyTypeMap(AttributeToPropertyTypeMap&); diff --git a/src/3rdparty/webkit/Source/WebCore/svg/SVGUseElement.cpp b/src/3rdparty/webkit/Source/WebCore/svg/SVGUseElement.cpp index cea8f0d..d8f9674 100644 --- a/src/3rdparty/webkit/Source/WebCore/svg/SVGUseElement.cpp +++ b/src/3rdparty/webkit/Source/WebCore/svg/SVGUseElement.cpp @@ -644,6 +644,7 @@ void SVGUseElement::detachInstance() if (!m_targetElementInstance) return; m_targetElementInstance->clearUseElements(); + m_targetElementInstance->clearChildren(); m_targetElementInstance = 0; } diff --git a/src/3rdparty/webkit/Source/WebCore/testing/Internals.cpp b/src/3rdparty/webkit/Source/WebCore/testing/Internals.cpp new file mode 100644 index 0000000..caa1274 --- /dev/null +++ b/src/3rdparty/webkit/Source/WebCore/testing/Internals.cpp @@ -0,0 +1,97 @@ +/* + * Copyright (C) 2011 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "Internals.h" + +#include "Document.h" +#include "ExceptionCode.h" +#include "Settings.h" + +namespace WebCore { + +const char* Internals::internalsId = "internals"; + +PassRefPtr<Internals> Internals::create() +{ + return adoptRef(new Internals); +} + +Internals::~Internals() +{ +} + +Internals::Internals() + : passwordEchoDurationInSecondsBackedUp(false) + , passwordEchoEnabledBackedUp(false) +{ +} + +void Internals::setPasswordEchoEnabled(Document* document, bool enabled, ExceptionCode& ec) +{ + if (!document || !document->settings()) { + ec = INVALID_ACCESS_ERR; + return; + } + + if (!passwordEchoEnabledBackedUp) { + passwordEchoEnabledBackup = document->settings()->passwordEchoEnabled(); + passwordEchoEnabledBackedUp = true; + } + document->settings()->setPasswordEchoEnabled(enabled); +} + +void Internals::setPasswordEchoDurationInSeconds(Document* document, double durationInSeconds, ExceptionCode& ec) +{ + if (!document || !document->settings()) { + ec = INVALID_ACCESS_ERR; + return; + } + + if (!passwordEchoDurationInSecondsBackedUp) { + passwordEchoDurationInSecondsBackup = document->settings()->passwordEchoDurationInSeconds(); + passwordEchoDurationInSecondsBackedUp = true; + } + document->settings()->setPasswordEchoDurationInSeconds(durationInSeconds); +} + +void Internals::reset(Document* document) +{ + if (!document || !document->settings()) + return; + + if (passwordEchoDurationInSecondsBackedUp) { + document->settings()->setPasswordEchoDurationInSeconds(passwordEchoDurationInSecondsBackup); + passwordEchoDurationInSecondsBackedUp = false; + } + + if (passwordEchoEnabledBackedUp) { + document->settings()->setPasswordEchoEnabled(passwordEchoEnabledBackup); + passwordEchoEnabledBackedUp = false; + } +} + +} + diff --git a/src/3rdparty/webkit/Source/WebCore/testing/Internals.h b/src/3rdparty/webkit/Source/WebCore/testing/Internals.h new file mode 100644 index 0000000..a56240a --- /dev/null +++ b/src/3rdparty/webkit/Source/WebCore/testing/Internals.h @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2011 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef Internals_h +#define Internals_h + +#include "ExceptionCode.h" +#include <wtf/PassRefPtr.h> +#include <wtf/RefCounted.h> + +namespace WebCore { + +class Document; + +class Internals : public RefCounted<Internals> { +public: + static PassRefPtr<Internals> create(); + virtual ~Internals(); + + void reset(Document*); + + void setPasswordEchoEnabled(Document*, bool enabled, ExceptionCode&); + void setPasswordEchoDurationInSeconds(Document*, double durationInSeconds, ExceptionCode&); + + static const char* internalsId; + +private: + Internals(); + + double passwordEchoDurationInSecondsBackup; + bool passwordEchoEnabledBackup : 1; + bool passwordEchoDurationInSecondsBackedUp : 1; + bool passwordEchoEnabledBackedUp : 1; +}; + +} // namespace WebCore + +#endif diff --git a/src/3rdparty/webkit/Source/WebCore/testing/Internals.idl b/src/3rdparty/webkit/Source/WebCore/testing/Internals.idl new file mode 100644 index 0000000..e647c9c --- /dev/null +++ b/src/3rdparty/webkit/Source/WebCore/testing/Internals.idl @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2011 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +module window { + interface [OmitConstructor] Internals { + void setPasswordEchoEnabled(in Document document, in boolean enabled) raises(DOMException); + void setPasswordEchoDurationInSeconds(in Document document, in double durationInSeconds) raises(DOMException); + }; +} diff --git a/src/3rdparty/webkit/Source/WebCore/testing/js/WebCoreTestSupport.cpp b/src/3rdparty/webkit/Source/WebCore/testing/js/WebCoreTestSupport.cpp new file mode 100644 index 0000000..8a795bf --- /dev/null +++ b/src/3rdparty/webkit/Source/WebCore/testing/js/WebCoreTestSupport.cpp @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2011 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "WebCoreTestSupport.h" + +#include "Internals.h" +#include "JSDOMGlobalObject.h" +#include "JSDocument.h" +#include "JSInternals.h" +#include <JavaScriptCore/APICast.h> +#include <interpreter/CallFrame.h> + +using namespace JSC; +using namespace WebCore; + +namespace WebCoreTestSupport { + +void injectInternalsObject(JSContextRef context) +{ + JSLock lock(SilenceAssertionsOnly); + ExecState* exec = toJS(context); + JSDOMGlobalObject* globalObject = static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()); + globalObject->putDirect(exec->globalData(), Identifier(exec, Internals::internalsId), toJS(exec, globalObject, Internals::create())); +} + +void resetInternalsObject(JSContextRef context) +{ + JSLock lock(SilenceAssertionsOnly); + ExecState* exec = toJS(context); + JSDOMGlobalObject* globalObject = static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()); + Internals * internals = toInternals(globalObject->getDirect(exec->globalData(), Identifier(exec, Internals::internalsId))); + if (internals) { + ScriptExecutionContext* scriptContext = globalObject->scriptExecutionContext(); + if (scriptContext->isDocument()) + internals->reset(static_cast<Document*>(scriptContext)); + } +} + +} diff --git a/src/3rdparty/webkit/Source/WebCore/testing/js/WebCoreTestSupport.h b/src/3rdparty/webkit/Source/WebCore/testing/js/WebCoreTestSupport.h new file mode 100644 index 0000000..bfd8a8b --- /dev/null +++ b/src/3rdparty/webkit/Source/WebCore/testing/js/WebCoreTestSupport.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2011 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef WebCoreTestSupport_h +#define WebCoreTestSupport_h + +typedef const struct OpaqueJSContext* JSContextRef; + +namespace WebCoreTestSupport { + +void injectInternalsObject(JSContextRef); +void resetInternalsObject(JSContextRef); + +} // namespace WebCore + +#endif diff --git a/src/3rdparty/webkit/Source/WebCore/testing/v8/WebCoreTestSupport.cpp b/src/3rdparty/webkit/Source/WebCore/testing/v8/WebCoreTestSupport.cpp new file mode 100644 index 0000000..1f2c2e5 --- /dev/null +++ b/src/3rdparty/webkit/Source/WebCore/testing/v8/WebCoreTestSupport.cpp @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2011 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "WebCoreTestSupport.h" + +#include "Document.h" +#include "Internals.h" +#include "ScriptExecutionContext.h" +#include "V8Internals.h" + +#include <v8.h> + +using namespace WebCore; + +namespace WebCoreTestSupport { + +void injectInternalsObject(v8::Local<v8::Context> context) +{ + v8::Context::Scope contextScope(context); + v8::HandleScope scope; + + context->Global()->Set(v8::String::New(Internals::internalsId), toV8(Internals::create())); +} + +void resetInternalsObject(v8::Local<v8::Context> context) +{ + v8::Context::Scope contextScope(context); + v8::HandleScope scope; + + v8::Handle<v8::Object> object = v8::Handle<v8::Object>::Cast(context->Global()->Get(v8::String::New(Internals::internalsId))); + Internals * internals = V8Internals::toNative(object); + if (internals) { + ScriptExecutionContext* scriptContext = getScriptExecutionContext(); + if (scriptContext->isDocument()) + internals->reset(static_cast<Document*>(scriptContext)); + } +} + +} diff --git a/src/3rdparty/webkit/Source/WebCore/testing/v8/WebCoreTestSupport.h b/src/3rdparty/webkit/Source/WebCore/testing/v8/WebCoreTestSupport.h new file mode 100644 index 0000000..fa49c60 --- /dev/null +++ b/src/3rdparty/webkit/Source/WebCore/testing/v8/WebCoreTestSupport.h @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2011 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef WebCoreTestSupport_h +#define WebCoreTestSupport_h + +namespace v8 { +class Context; +template <class T> class Local; +} + +namespace WebCoreTestSupport { + +void injectInternalsObject(v8::Local<v8::Context>); +void resetInternalsObject(v8::Local<v8::Context>); + +} // namespace WebCore + +#endif diff --git a/src/3rdparty/webkit/Source/WebCore/xml/XPathFunctions.cpp b/src/3rdparty/webkit/Source/WebCore/xml/XPathFunctions.cpp index d343a59..1807172 100644 --- a/src/3rdparty/webkit/Source/WebCore/xml/XPathFunctions.cpp +++ b/src/3rdparty/webkit/Source/WebCore/xml/XPathFunctions.cpp @@ -39,6 +39,12 @@ #include "XPathValue.h" #include <wtf/MathExtras.h> +#if COMPILER(WINSCW) +#define BOOL_TO_VALUE_CAST (unsigned long) +#else +#define BOOL_TO_VALUE_CAST +#endif + namespace WebCore { namespace XPath { @@ -453,9 +459,9 @@ Value FunStartsWith::evaluate() const String s2 = arg(1)->evaluate().toString(); if (s2.isEmpty()) - return true; + return BOOL_TO_VALUE_CAST true; - return s1.startsWith(s2); + return BOOL_TO_VALUE_CAST (s1.startsWith(s2)); } Value FunContains::evaluate() const @@ -463,10 +469,10 @@ Value FunContains::evaluate() const String s1 = arg(0)->evaluate().toString(); String s2 = arg(1)->evaluate().toString(); - if (s2.isEmpty()) - return true; + if (s2.isEmpty()) + return BOOL_TO_VALUE_CAST true; - return s1.contains(s2) != 0; + return BOOL_TO_VALUE_CAST (s1.contains(s2) != 0); } Value FunSubstringBefore::evaluate() const @@ -571,17 +577,17 @@ Value FunTranslate::evaluate() const Value FunBoolean::evaluate() const { - return arg(0)->evaluate().toBoolean(); + return BOOL_TO_VALUE_CAST (arg(0)->evaluate().toBoolean()); } Value FunNot::evaluate() const { - return !arg(0)->evaluate().toBoolean(); + return BOOL_TO_VALUE_CAST (!arg(0)->evaluate().toBoolean()); } Value FunTrue::evaluate() const { - return true; + return BOOL_TO_VALUE_CAST true; } Value FunLang::evaluate() const @@ -600,12 +606,12 @@ Value FunLang::evaluate() const } if (!languageAttribute) - return false; + return BOOL_TO_VALUE_CAST false; String langValue = languageAttribute->value(); while (true) { if (equalIgnoringCase(langValue, lang)) - return true; + return BOOL_TO_VALUE_CAST true; // Remove suffixes one by one. size_t index = langValue.reverseFind('-'); @@ -614,12 +620,12 @@ Value FunLang::evaluate() const langValue = langValue.left(index); } - return false; + return BOOL_TO_VALUE_CAST false; } Value FunFalse::evaluate() const { - return false; + return BOOL_TO_VALUE_CAST false; } Value FunNumber::evaluate() const diff --git a/src/3rdparty/webkit/Source/WebCore/xml/XPathPredicate.cpp b/src/3rdparty/webkit/Source/WebCore/xml/XPathPredicate.cpp index 2a6482f..d70d309 100644 --- a/src/3rdparty/webkit/Source/WebCore/xml/XPathPredicate.cpp +++ b/src/3rdparty/webkit/Source/WebCore/xml/XPathPredicate.cpp @@ -38,6 +38,12 @@ #include <math.h> #include <wtf/MathExtras.h> +#if COMPILER(WINSCW) +#define BOOL_TO_VALUE_CAST (unsigned long) +#else +#define BOOL_TO_VALUE_CAST +#endif + namespace WebCore { namespace XPath { @@ -142,7 +148,7 @@ bool EqTestOp::compare(const Value& lhs, const Value& rhs) const // If one object to be compared is a node-set and the other is a boolean, then the comparison will be true // if and only if the result of performing the comparison on the boolean and on the result of converting // the node-set to a boolean using the boolean function is true. - return compare(lhs.toBoolean(), rhs); + return compare(BOOL_TO_VALUE_CAST (lhs.toBoolean()), rhs); } ASSERT(0); } @@ -161,7 +167,7 @@ bool EqTestOp::compare(const Value& lhs, const Value& rhs) const return false; } if (lhs.isBoolean()) - return compare(lhs, rhs.toBoolean()); + return compare(lhs, BOOL_TO_VALUE_CAST (rhs.toBoolean())); ASSERT(0); } @@ -198,7 +204,7 @@ Value EqTestOp::evaluate() const Value lhs(subExpr(0)->evaluate()); Value rhs(subExpr(1)->evaluate()); - return compare(lhs, rhs); + return BOOL_TO_VALUE_CAST compare(lhs, rhs); } LogicalOp::LogicalOp(Opcode opcode, Expression* lhs, Expression* rhs) @@ -224,9 +230,9 @@ Value LogicalOp::evaluate() const // dictates that we must do short-circuit evaluation bool lhsBool = lhs.toBoolean(); if (lhsBool == shortCircuitOn()) - return lhsBool; + return BOOL_TO_VALUE_CAST lhsBool; - return subExpr(1)->evaluate().toBoolean(); + return BOOL_TO_VALUE_CAST (subExpr(1)->evaluate().toBoolean()); } Value Union::evaluate() const diff --git a/src/3rdparty/webkit/Source/WebCore/xml/XPathResult.cpp b/src/3rdparty/webkit/Source/WebCore/xml/XPathResult.cpp index 1dcde2e..7377509 100644 --- a/src/3rdparty/webkit/Source/WebCore/xml/XPathResult.cpp +++ b/src/3rdparty/webkit/Source/WebCore/xml/XPathResult.cpp @@ -35,6 +35,12 @@ #include "XPathEvaluator.h" #include "XPathException.h" +#if COMPILER(WINSCW) +#define BOOL_TO_VALUE_CAST (unsigned long) +#else +#define BOOL_TO_VALUE_CAST +#endif + namespace WebCore { using namespace XPath; @@ -84,7 +90,7 @@ void XPathResult::convertTo(unsigned short type, ExceptionCode& ec) break; case BOOLEAN_TYPE: m_resultType = type; - m_value = m_value.toBoolean(); + m_value = BOOL_TO_VALUE_CAST (m_value.toBoolean()); break; case UNORDERED_NODE_ITERATOR_TYPE: case UNORDERED_NODE_SNAPSHOT_TYPE: diff --git a/src/3rdparty/webkit/Source/WebKit.pri b/src/3rdparty/webkit/Source/WebKit.pri index 309357c..be1c7b7 100644 --- a/src/3rdparty/webkit/Source/WebKit.pri +++ b/src/3rdparty/webkit/Source/WebKit.pri @@ -2,6 +2,9 @@ contains(QT_CONFIG, qpa)|contains(QT_CONFIG, embedded): CONFIG += embedded +contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols +unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions + # Detect that we are building as a standalone package by the presence of # either the generated files directory or as part of the Qt package through # QTDIR_build @@ -71,6 +74,7 @@ CONFIG(release, debug|release) { INCLUDEPATH += \ $$PWD \ + $$PWD/../include \ $$OUTPUT_DIR/include/QtWebKit \ $$OUTPUT_DIR/include \ $$QT.script.includes @@ -157,6 +161,7 @@ disable_uitools: DEFINES *= QT_NO_UITOOLS # Disable a few warnings on Windows. The warnings are also # disabled in WebKitLibraries/win/tools/vsprops/common.vsprops win32-msvc*|wince*: QMAKE_CXXFLAGS += -wd4291 -wd4344 -wd4396 -wd4503 -wd4800 -wd4819 -wd4996 +win32-icc: QMAKE_CXXFLAGS += -wd873 CONFIG(qt_minimal) { DEFINES *= QT_NO_ANIMATION diff --git a/src/3rdparty/webkit/Source/WebKit/ChangeLog b/src/3rdparty/webkit/Source/WebKit/ChangeLog index ac05a54..20f61f5 100644 --- a/src/3rdparty/webkit/Source/WebKit/ChangeLog +++ b/src/3rdparty/webkit/Source/WebKit/ChangeLog @@ -1,3 +1,29 @@ +2011-06-01 Jer Noble <jer.noble@apple.com> + + Reviewed by Eric Carlson. + + Move Full Screen Controllers into WebCore. + + Remove dependency on QTKit from wekitExitFullscreen() + https://bugs.webkit.org/show_bug.cgi?id=61843 + + WebVideoFullscreenController, WebVideoFullscreenHUDController, and WebWindowAnimation + have been moved into WebCore. + + * WebKit.xcodeproj/project.pbxproj: + +2011-06-30 Leandro Pereira <leandro@profusion.mobi> + + Reviewed by Simon Hausmann. + + generate-webkitversion.pl should not "use Switch" + https://bugs.webkit.org/show_bug.cgi?id=63628 + + Switch got deprecated on recent Perl versions and the script wasn't + using the switch statement. + + * scripts/generate-webkitversion.pl: Remove "use Switch;" line. + 2011-04-18 Timothy Hatcher <timothy@apple.com> Make update-webkit-localizable-strings put WebKit/win strings in WebCore diff --git a/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebframe.cpp b/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebframe.cpp index 026a7df..5ea7059 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebframe.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebframe.cpp @@ -751,8 +751,10 @@ QMultiMap<QString, QString> QWebFrame::metaData() const static inline void clearCoreFrame(WebCore::Frame* frame) { - frame->loader()->activeDocumentLoader()->writer()->begin(); - frame->loader()->activeDocumentLoader()->writer()->end(); + WebCore::DocumentLoader* documentLoader = frame->loader()->activeDocumentLoader(); + Q_ASSERT(documentLoader); + documentLoader->writer()->begin(); + documentLoader->writer()->end(); } static inline bool isCoreFrameClear(WebCore::Frame* frame) diff --git a/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebsettings.cpp b/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebsettings.cpp index 3606764..9123ede 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebsettings.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebsettings.cpp @@ -273,6 +273,11 @@ void QWebSettingsPrivate::apply() settings->setNeedsSiteSpecificQuirks(value); settings->setUsesPageCache(WebCore::pageCache()->capacity()); + +#if ENABLE(PASSWORD_ECHO) + settings->setPasswordEchoEnabled(true); + settings->setPasswordEchoDurationInSeconds(1); +#endif } else { QList<QWebSettingsPrivate*> settings = *::allSettings(); for (int i = 0; i < settings.count(); ++i) diff --git a/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebview.cpp b/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebview.cpp index f4b23f3..76b927b 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebview.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebview.cpp @@ -372,7 +372,7 @@ void QWebViewPrivate::detachCurrentPage() Makes \a page the new web page of the web view. The parent QObject of the provided page remains the owner - of the object. If the current document is a child of the web + of the object. If the current page is a child of the web view, it will be deleted. \sa page() diff --git a/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog b/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog index d702142..0bca4b2 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog +++ b/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog @@ -1,3 +1,306 @@ +2011-08-25 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org> + + Unreviewed QtWebKit.pro fix for when building inside Qt + + Patch by Simo Fält <simo.falt@nokia.com> + + The QtWebKit version was being overwritten by a global Qt version when + QtWebKit was built inside Qt. Fixed by moving the version + definition after the inclusion of qbase.pri. + + * QtWebKit.pro: + +2011-08-18 Chang Shu <cshu@webkit.org> + + Add support of setPasswordEchoEnabled and setPasswordEchoDuration for password echo feature + https://bugs.webkit.org/show_bug.cgi?id=66052 + + Reviewed by Alexey Proskuryakov. + + Enable password echo under the build flag. + + * Api/qwebsettings.cpp: + (QWebSettingsPrivate::apply): + +2011-08-16 Chang Shu <cshu@webkit.org> + + Support reset in WebCore::Internals + https://bugs.webkit.org/show_bug.cgi?id=66307 + + Reviewed by Dimitri Glazkov. + + Added framework code in WebKit. + + * WebCoreSupport/DumpRenderTreeSupportQt.cpp: + (DumpRenderTreeSupportQt::resetInternalsObject): + * WebCoreSupport/DumpRenderTreeSupportQt.h: + +2011-06-09 Robert Hogan <robert@webkit.org> + + Reviewed by Andreas Kling. + + Teach Qt about window.internals + https://bugs.webkit.org/show_bug.cgi?id=61074 + + * WebCoreSupport/DumpRenderTreeSupportQt.cpp: + (DumpRenderTreeSupportQt::injectInternalsObject): + * WebCoreSupport/DumpRenderTreeSupportQt.h: + +2011-08-23 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> + + [Qt] Fix build on Lion + + https://bugs.webkit.org/show_bug.cgi?id=66770 + + Reviewed by Andreas Kling. + + We were mistakenly picking up mac/WebCoreSystemInterface.h instead of + the Qt one, and building on Lion revealed this when a typedef for + IOSurfaceRef was wrapped in PLATFORM(MAC). + + For now we fix this by including WebCoreSystemInterface using + brackets, so that we'll pick up the right file based on the + include paths. This also means exposing a few missing enums + in our own version of the file, so those were added. + + Lasty, we need to link against the right system interface library + on Lion. + + * QtWebKit.pro: + +2011-08-05 Dawit Alemayehu <adawit@kde.org> + + Reviewed by Andreas Kling. + + Reverted commit r87797, http://trac.webkit.org/changeset/87797, because it + causes the regression reported under bug# 63582. + + [Qt] REGRESSION(r87797): Broke KDEWebKit's custom QNAM. + https://bugs.webkit.org/show_bug.cgi?id=63582 + + * WebCoreSupport/FrameLoaderClientQt.cpp: + (WebCore::FrameLoaderClientQt::setFrame): + +2011-07-26 Alexis Menard <alexis.menard@openbossa.org> + + Reviewed by Andreas Kling. + + [Qt] Change default backend to use GStreamer on Linux and QuickTime on Mac. + https://bugs.webkit.org/show_bug.cgi?id=63472 + + Use the flag WTF_USE_QTKIT=1 rather than USE_QTKIT=1 because that flag doesn't + exist anymore, it's the default. Ditto for GStreamer. + + * QtWebKit.pro: + +2011-06-23 Alexis Menard <alexis.menard@openbossa.org> + + Reviewed by Eric Carlson. + + [Qt] Implement fullscreen support on Mac with the QuickTime backend. + https://bugs.webkit.org/show_bug.cgi?id=61728 + + Implement fullscreen support for Qt when using the QuickTime backend. + We mostly use what is already done for the Mac port. + + * QtWebKit.pro: + * WebCoreSupport/ChromeClientQt.cpp: + (WebCore::ChromeClientQt::ChromeClientQt): + (WebCore::ChromeClientQt::~ChromeClientQt): + * WebCoreSupport/ChromeClientQt.h: + * WebCoreSupport/FullScreenVideoQt.cpp: + (WebCore::FullScreenVideoQt::FullScreenVideoQt): + (WebCore::FullScreenVideoQt::~FullScreenVideoQt): + (WebCore::FullScreenVideoQt::enterFullScreenForNode): + (WebCore::FullScreenVideoQt::exitFullScreenForNode): + (WebCore::FullScreenVideoQt::requiresFullScreenForVideoPlayback): + (WebCore::FullScreenVideoQt::isValid): + * WebCoreSupport/FullScreenVideoQt.h: + * WebCoreSupport/QTKitFullScreenVideoHandler.h: Added. + * WebCoreSupport/QTKitFullScreenVideoHandler.mm: Added. + (QTKitFullScreenVideoHandler::QTKitFullScreenVideoHandler): + (QTKitFullScreenVideoHandler::~QTKitFullScreenVideoHandler): + (QTKitFullScreenVideoHandler::enterFullScreen): + (QTKitFullScreenVideoHandler::exitFullScreen): + * WebCoreSupport/WebSystemInterface.mm: + (InitWebCoreSystemInterface): + +2011-07-27 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> + + [Qt] QtWebkit never finishes loading sites when they are loaded after an initial QUrl fails to load. + https://bugs.webkit.org/show_bug.cgi?id=61328 + + Reviewed by Andreas Kling. + + Change the hooks in FrameLoaderClient we use for emitting signals. Instead of + emitting signals in the progress notification functions, we use the + dispatchDid{Start,Finish,Fail}* functions. The main reason behind this change is + that loading code is prepared to handle load() when inside those functions. + + The crash was being caused by setUrl() (and load()) being called when + loadFinished(false) was emitted. The problem here is that when + postProgressFinishedNotification the FrameLoader wasn't ready for taking a load() + call again, because it was still the ProvisionalLoadState but with the + provisionalDocumentLoader already removed. + + To emulate the same behavior that QtWebKit had when using + postProgressFinishedNotification, we now keep track of the frame originating the + load, and emit the signals when this frame's client is called. + + The patch keeps the existing semantics for QWebPage signals, but we now emit the + QWebFrame signals everytime, not only when they are the originating frame for + loading. + + * Api/qwebframe.cpp: + (clearCoreFrame): Document our assumption that activeDocumentLoader will exist. + + * WebCoreSupport/FrameLoaderClientQt.h: Remove m_loadError, add a boolean to keep + track whether the frame is originating the load. Remove the signals from + FrameLoaderClientQt since we will emit QWebFrame and QWebPage signals directly. + + * WebCoreSupport/FrameLoaderClientQt.cpp: + (WebCore::FrameLoaderClientQt::FrameLoaderClientQt): Initialize m_isOriginatingLoad. + + (WebCore::FrameLoaderClientQt::setFrame): Do not connect QWebFrame and QWebPage + signals to our signals for load/finished, signal emission will be done manually. + + (WebCore::FrameLoaderClientQt::dispatchDidStartProvisionalLoad): Emit + loadStarted() signal and make the first notification of estimation change, that + Qt API tests expect to exist and notify 10%. + + (WebCore::FrameLoaderClientQt::dispatchDidFinishLoad): Remove reference to + m_loadError and emit loadFinished() signal. + + (WebCore::FrameLoaderClientQt::postProgressStartedNotification): Remove signal + emission and mark the originating load as true, since only the originating frame + gets this call in its client. + + (WebCore::FrameLoaderClientQt::postProgressFinishedNotification): Remove signal + emission. + + (WebCore::FrameLoaderClientQt::callErrorPageExtension): Return whether the call + was successful or not. This wasn't necessary before because a successful call for + error page would lead to a load(), that cleared the m_loadError. + (WebCore::FrameLoaderClientQt::dispatchDidFailProvisionalLoad): Remove reference + to m_loadError and emit finished signal indicating error if ErrorPage extension + doesn't handle it. + (WebCore::FrameLoaderClientQt::dispatchDidFailLoad): Ditto. + + (WebCore::FrameLoaderClientQt::emitLoadStarted): Emit the loadStarted() signal + for the QWebFrame, and if the originating load also do for the QWebPage. + + (WebCore::FrameLoaderClientQt::emitLoadFinished): Same as before but for + loadFinished(). Take care to reset the originating load flag before the signals + are emitted, since they might want to set it back again. + + * tests/qwebframe/tst_qwebframe.cpp: + (URLSetter::URLSetter): Object that sets the url using either load() or setUrl() + when a certain signal is emitted in the frame. + + (URLSetter::execute): + (tst_QWebFrame::loadInSignalHandlers_data): + (tst_QWebFrame::loadInSignalHandlers): New test inspired by the bug test case. This test + crashes without this patch applied. + +2011-07-25 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> + + [Qt] Add more tests to cover the behavior of loadFinished() signal + https://bugs.webkit.org/show_bug.cgi?id=63490 + + Reviewed by Benjamin Poulain. + + * tests/qwebframe/tst_qwebframe.cpp: + (FakeReply::FakeReply): + (FakeNetworkManager::createRequest): Add a fake reply that gives 404 error code. + + (tst_QWebFrame::loadFinishedAfterNotFoundError): Verify that we get loadFinished(false) + after a 404 error without contents. + + * tests/qwebpage/tst_qwebpage.cpp: + (tst_QWebPage::errorPageExtensionLoadFinished): Verify if the argument of loadFinished() + is true when we use error page extension to produce our own error pages. + +2011-07-12 Hui Huang <Hui.2.Huang@nokia.com> + + Reviewed by Laszlo Gombos. + + [Qt] Fix compiling errors with QtWebkit 2.2 WINSCW build. + https://bugs.webkit.org/show_bug.cgi?id=64391 + + (QtWebKit-2.2 only, patch not in webkit trunk) + + * symbian/bwins/QtWebKitu.def: + +2011-07-19 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> + + [Qt] Improve documentation of QWebView::setPage() + https://bugs.webkit.org/show_bug.cgi?id=64827 + + Reviewed by Noam Rosenthal. + + * Api/qwebview.cpp: Use the word 'page' to refer to a QWebPage instead of 'document'. + +2011-05-16 Robert Hogan <robert@webkit.org> + + Reviewed by Kenneth Rohde Christiansen. + + plugins/invalidate_rect.html fails on linux ports + + Add ChromeClientQt::allowsAcceleratedCompositing(). + + https://bugs.webkit.org/show_bug.cgi?id=54051 + + * WebCoreSupport/ChromeClientQt.cpp: + (WebCore::ChromeClientQt::allowsAcceleratedCompositing): + * WebCoreSupport/ChromeClientQt.h: + +2011-07-01 Jade Han <jade.han@nokia.com> + + [Qt][Symbian] Update .def file for Symbian to build Tools + https://bugs.webkit.org/show_bug.cgi?id=61200 + + Reviewed by Laszlo Gombos. + + Add newly introduced symbols to fix building the Tools directory for Symbian. + + * symbian/eabi/QtWebKitu.def: + +2011-06-30 Rafael Brandao <rafael.lobo@openbossa.org> + + Reviewed by Benjamin Poulain. + + [Qt] Fix tst_QWebFrame::renderGeometry() API test + https://bugs.webkit.org/show_bug.cgi?id=63236 + + This test required a security origin with granted permission to request local resources. + By default, only local files can load local resources. So modified baseUrl to be a local file. + + * tests/qwebframe/tst_qwebframe.cpp: + (tst_QWebFrame::renderGeometry): + +2011-07-01 Jade Han <jade.han@nokia.com> + + Reviewed by Laszlo Gombos. + + [Qt][Symbian] Update .def file for Symbian + https://bugs.webkit.org/show_bug.cgi?id=61200 + + Add newly introduced symbols to fix the Symbian build. + + * symbian/eabi/QtWebKitu.def: + +2011-06-30 Fabrizio Machado <fabrizio.machado@nokia.com> + + Reviewed by Benjamin Poulain. + + [Qt] QML Webview causes performance drops + https://bugs.webkit.org/show_bug.cgi?id=57554 + + Remove tiledBackingStoreEnabled from QML WebView. + + * declarative/qdeclarativewebview.cpp: + (QDeclarativeWebView::setPage): + 2011-06-29 Alexis Menard <alexis.menard@openbossa.org> Reviewed by Benjamin Poulain. @@ -17,23 +320,6 @@ Rubber-stamped by Andreas Kling. - [Qt] Fix tst_QWebFrame::setHtmlWithResource() API test - https://bugs.webkit.org/show_bug.cgi?id=63235 - - [Qt] Fix tst_QWebFrame::renderGeometry() API test - https://bugs.webkit.org/show_bug.cgi?id=63236 - - [Qt] Fix tst_QWebFrame::setUrlWithPendingLoads() API test - https://bugs.webkit.org/show_bug.cgi?id=63237 - - * tests/qwebframe/tst_qwebframe.cpp: Mark failing test cases as expected fails until real fix. - (tst_QWebFrame::setHtmlWithResource): - (tst_QWebFrame::renderGeometry): - -2011-06-23 Csaba Osztrogonác <ossy@webkit.org> - - Rubber-stamped by Andreas Kling. - [Qt] Fix tst_QWebPage::showModalDialog() API test https://bugs.webkit.org/show_bug.cgi?id=63244 diff --git a/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro b/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro index e07f699..41b0d39 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro +++ b/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro @@ -42,10 +42,6 @@ win32*:!win32-msvc* { contains(DEFINES, ENABLE_WEBGL=1)|contains(CONFIG, texmap): LIBS += $$QMAKE_LIBS_OPENGL } -moduleFile=$$PWD/qt_webkit_version.pri -isEmpty(QT_BUILD_TREE):include($$moduleFile) -VERSION = $${QT_WEBKIT_MAJOR_VERSION}.$${QT_WEBKIT_MINOR_VERSION}.$${QT_WEBKIT_PATCH_VERSION} - include_webinspector: RESOURCES += $$SOURCE_DIR/WebCore/inspector/front-end/WebKit.qrc $$WC_GENERATED_SOURCES_DIR/InspectorBackendStub.qrc # Extract sources to build from the generator definitions @@ -87,6 +83,9 @@ CONFIG(QTDIR_build) { symbian: TARGET =$$TARGET$${QT_LIBINFIX} } +moduleFile=$$PWD/qt_webkit_version.pri +isEmpty(QT_BUILD_TREE):include($$moduleFile) +VERSION = $${QT_WEBKIT_MAJOR_VERSION}.$${QT_WEBKIT_MINOR_VERSION}.$${QT_WEBKIT_PATCH_VERSION} symbian { TARGET.EPOCALLOWDLLDATA=1 @@ -218,31 +217,39 @@ contains(DEFINES, ENABLE_NETSCAPE_PLUGIN_API=1) { } contains(DEFINES, ENABLE_VIDEO=1) { - !contains(DEFINES, USE_QTKIT=1):!contains(DEFINES, USE_GSTREAMER=1):contains(MOBILITY_CONFIG, multimedia) { + !contains(DEFINES, WTF_USE_QTKIT=1):!contains(DEFINES, WTF_USE_GSTREAMER=1):contains(DEFINES, WTF_USE_QT_MULTIMEDIA=1) { HEADERS += $$PWD/WebCoreSupport/FullScreenVideoWidget.h SOURCES += $$PWD/WebCoreSupport/FullScreenVideoWidget.cpp } - contains(DEFINES, USE_GSTREAMER=1) | contains(MOBILITY_CONFIG, multimedia) { + contains(DEFINES, WTF_USE_QTKIT=1) | contains(DEFINES, WTF_USE_GSTREAMER=1) | contains(DEFINES, WTF_USE_QT_MULTIMEDIA=1) { HEADERS += $$PWD/WebCoreSupport/FullScreenVideoQt.h SOURCES += $$PWD/WebCoreSupport/FullScreenVideoQt.cpp } - contains(DEFINES, USE_QTKIT=1) { - INCLUDEPATH += $$SOURCE_DIR/WebCore/platform/qt/ - INCLUDEPATH += $$SOURCE_DIR/../WebKitLibraries/ + contains(DEFINES, WTF_USE_QTKIT=1) { + INCLUDEPATH += $$SOURCE_DIR/WebCore/platform/qt/ \ + $$SOURCE_DIR/WebCore/platform/mac/ \ + $$SOURCE_DIR/../WebKitLibraries/ + DEFINES+=NSGEOMETRY_TYPES_SAME_AS_CGGEOMETRY_TYPES - HEADERS += $$PWD/WebCoreSupport/WebSystemInterface.h - SOURCES += $$PWD/WebCoreSupport/WebSystemInterface.mm + + HEADERS += $$PWD/WebCoreSupport/WebSystemInterface.h \ + $$PWD/WebCoreSupport/QTKitFullScreenVideoHandler.h + + OBJECTIVE_SOURCES += $$PWD/WebCoreSupport/WebSystemInterface.mm \ + $$PWD/WebCoreSupport/QTKitFullScreenVideoHandler.mm + + LIBS+= -framework Security -framework IOKit # We can know the Mac OS version by using the Darwin major version DARWIN_VERSION = $$split(QMAKE_HOST.version, ".") DARWIN_MAJOR_VERSION = $$first(DARWIN_VERSION) - equals(DARWIN_MAJOR_VERSION, "10") { - LIBS+= $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.a -framework Security - } else { - equals(DARWIN_MAJOR_VERSION, "9") { - LIBS+= $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceLeopard.a -framework Security - } + equals(DARWIN_MAJOR_VERSION, "11") { + LIBS += $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceLion.a + } else:equals(DARWIN_MAJOR_VERSION, "10") { + LIBS += $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.a + } else:equals(DARWIN_MAJOR_VERSION, "9") { + LIBS += $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceLeopard.a } } } diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp index ea2c826..a199f78 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp @@ -75,7 +75,7 @@ #include <qtooltip.h> #include <wtf/OwnPtr.h> -#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA)) +#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA) || USE(QTKIT)) #include "FullScreenVideoQt.h" #include "HTMLMediaElement.h" #include "HTMLNames.h" @@ -92,7 +92,7 @@ bool ChromeClientQt::dumpVisitedLinksCallbacks = false; ChromeClientQt::ChromeClientQt(QWebPage* webPage) : m_webPage(webPage) , m_eventLoop(0) -#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA)) +#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA) || USE(QTKIT)) , m_fullScreenVideo(0) #endif { @@ -104,7 +104,7 @@ ChromeClientQt::~ChromeClientQt() if (m_eventLoop) m_eventLoop->exit(); -#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA)) +#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA) || USE(QTKIT)) delete m_fullScreenVideo; #endif } @@ -129,6 +129,13 @@ FloatRect ChromeClientQt::windowRect() return platformPageClient()->windowRect(); } +bool ChromeClientQt::allowsAcceleratedCompositing() const +{ + if (!platformPageClient()) + return false; + return platformPageClient()->allowsAcceleratedCompositing(); +} + FloatRect ChromeClientQt::pageRect() { if (!m_webPage) @@ -661,7 +668,7 @@ IntRect ChromeClientQt::visibleRectForTiledBackingStore() const } #endif -#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA)) +#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA) || USE(QTKIT)) FullScreenVideoQt* ChromeClientQt::fullScreenVideo() { if (!m_fullScreenVideo) diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.h b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.h index 814a192..f1b7b8e 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.h +++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.h @@ -155,6 +155,7 @@ public: virtual void scheduleCompositingLayerSync(); virtual CompositingTriggerFlags allowedCompositingTriggers() const; #endif + virtual bool allowsAcceleratedCompositing() const; #if ENABLE(TILED_BACKING_STORE) virtual IntRect visibleRectForTiledBackingStore() const; @@ -164,7 +165,7 @@ public: virtual void needTouchEvents(bool) { } #endif -#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA)) +#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA) || USE(QTKIT)) virtual bool supportsFullscreenForNode(const Node*); virtual void enterFullscreenForNode(Node*); virtual void exitFullscreenForNode(Node*); @@ -203,7 +204,7 @@ public: bool menuBarVisible; QEventLoop* m_eventLoop; -#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA)) +#if ENABLE(VIDEO) && (USE(GSTREAMER) || USE(QT_MULTIMEDIA) || USE(QTKIT)) FullScreenVideoQt* m_fullScreenVideo; #endif diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp index 9d0b4f9..2fc8e84 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp @@ -23,6 +23,9 @@ #include "config.h" #include "DumpRenderTreeSupportQt.h" +#if USE(JSC) +#include "APICast.h" +#endif #include "ApplicationCacheStorage.h" #include "CSSComputedStyleDeclaration.h" #include "ChromeClientQt.h" @@ -74,6 +77,7 @@ #include "SVGSMILElement.h" #endif #include "TextIterator.h" +#include "WebCoreTestSupport.h" #include "WorkerThread.h" #include <wtf/CurrentTime.h> @@ -1109,6 +1113,44 @@ void DumpRenderTreeSupportQt::removeShadowRoot(const QWebElement& element) webElement->removeShadowRoot(); } +void DumpRenderTreeSupportQt::injectInternalsObject(QWebFrame* frame) +{ + WebCore::Frame* coreFrame = QWebFramePrivate::core(frame); +#if USE(JSC) + JSC::JSLock lock(JSC::SilenceAssertionsOnly); + + JSDOMWindow* window = toJSDOMWindow(coreFrame, mainThreadNormalWorld()); + Q_ASSERT(window); + + JSC::ExecState* exec = window->globalExec(); + Q_ASSERT(exec); + + JSContextRef context = toRef(exec); + WebCoreTestSupport::injectInternalsObject(context); +#elif USE(V8) + WebCoreTestSupport::injectInternalsObject(V8Proxy::mainWorldContext(coreFrame)); +#endif +} + +void DumpRenderTreeSupportQt::resetInternalsObject(QWebFrame* frame) +{ + WebCore::Frame* coreFrame = QWebFramePrivate::core(frame); +#if USE(JSC) + JSC::JSLock lock(JSC::SilenceAssertionsOnly); + + JSDOMWindow* window = toJSDOMWindow(coreFrame, mainThreadNormalWorld()); + Q_ASSERT(window); + + JSC::ExecState* exec = window->globalExec(); + Q_ASSERT(exec); + + JSContextRef context = toRef(exec); + WebCoreTestSupport::resetInternalsObject(context); +#elif USE(V8) + WebCoreTestSupport::resetInternalsObject(V8Proxy::mainWorldContext(coreFrame)); +#endif +} + // Provide a backward compatibility with previously exported private symbols as of QtWebKit 4.6 release void QWEBKIT_EXPORT qt_resumeActiveDOMObjects(QWebFrame* frame) diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h index c93942c..7040ea1 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h +++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h @@ -218,6 +218,7 @@ public: static QString layerTreeAsText(QWebFrame*); static void injectInternalsObject(QWebFrame*); + static void resetInternalsObject(QWebFrame*); }; #endif diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp index 68aecda..8971fc4 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp @@ -210,7 +210,7 @@ FrameLoaderClientQt::FrameLoaderClientQt() , m_pluginView(0) , m_hasSentResponseToPlugin(false) , m_hasRepresentation(false) - , m_loadError(ResourceError()) + , m_isOriginatingLoad(false) { } @@ -229,22 +229,12 @@ void FrameLoaderClientQt::setFrame(QWebFrame* webFrame, Frame* frame) return; } - connect(this, SIGNAL(loadStarted()), - m_webFrame->page(), SIGNAL(loadStarted())); - connect(this, SIGNAL(loadStarted()), - m_webFrame, SIGNAL(loadStarted())); connect(this, SIGNAL(loadProgress(int)), m_webFrame->page(), SIGNAL(loadProgress(int))); - connect(this, SIGNAL(loadFinished(bool)), - m_webFrame->page(), SIGNAL(loadFinished(bool))); - // FIXME: The queued connection here is needed because of a problem with QNetworkAccessManager. - // See http://bugreports.qt.nokia.com/browse/QTBUG-18718 connect(this, SIGNAL(unsupportedContent(QNetworkReply*)), - m_webFrame->page(), SIGNAL(unsupportedContent(QNetworkReply*)), Qt::QueuedConnection); + m_webFrame->page(), SIGNAL(unsupportedContent(QNetworkReply*))); - connect(this, SIGNAL(loadFinished(bool)), - m_webFrame, SIGNAL(loadFinished(bool))); connect(this, SIGNAL(titleChanged(QString)), m_webFrame, SIGNAL(titleChanged(QString))); } @@ -448,8 +438,11 @@ void FrameLoaderClientQt::dispatchDidStartProvisionalLoad() m_lastRequestedUrl = m_frame->loader()->activeDocumentLoader()->requestURL(); - if (m_webFrame) - emit m_webFrame->provisionalLoad(); + if (!m_webFrame) + return; + emitLoadStarted(); + postProgressEstimateChangedNotification(); + emit m_webFrame->provisionalLoad(); } @@ -526,12 +519,11 @@ void FrameLoaderClientQt::dispatchDidFinishLoad() if (dumpFrameLoaderCallbacks) printf("%s - didFinishLoadForFrame\n", qPrintable(drtDescriptionSuitableForTestResult(m_frame))); - // Clears the previous error. - m_loadError = ResourceError(); - if (!m_webFrame) return; + m_webFrame->page()->d->updateNavigationActions(); + emitLoadFinished(true); } @@ -579,12 +571,8 @@ void FrameLoaderClientQt::revertToProvisionalState(DocumentLoader*) void FrameLoaderClientQt::postProgressStartedNotification() { - if (m_webFrame && m_frame->page()) { - // As a new load have started, clear the previous error. - m_loadError = ResourceError(); - emit loadStarted(); - postProgressEstimateChangedNotification(); - } + if (m_webFrame && m_frame->page()) + m_isOriginatingLoad = true; if (m_frame->tree()->parent() || !m_webFrame) return; m_webFrame->page()->d->updateNavigationActions(); @@ -611,9 +599,6 @@ void FrameLoaderClientQt::postProgressFinishedNotification() } } } - - if (m_webFrame && m_frame->page()) - emit loadFinished(m_loadError.isNull()); } void FrameLoaderClientQt::setMainFrameDocumentReady(bool) @@ -1133,38 +1118,39 @@ bool FrameLoaderClientQt::dispatchDidLoadResourceFromMemoryCache(WebCore::Docume return false; } -void FrameLoaderClientQt::callErrorPageExtension(const WebCore::ResourceError& error) +bool FrameLoaderClientQt::callErrorPageExtension(const WebCore::ResourceError& error) { QWebPage* page = m_webFrame->page(); - if (page->supportsExtension(QWebPage::ErrorPageExtension)) { - QWebPage::ErrorPageExtensionOption option; - - if (error.domain() == "QtNetwork") - option.domain = QWebPage::QtNetwork; - else if (error.domain() == "HTTP") - option.domain = QWebPage::Http; - else if (error.domain() == "WebKit") - option.domain = QWebPage::WebKit; - else - return; + if (!page->supportsExtension(QWebPage::ErrorPageExtension)) + return false; + + QWebPage::ErrorPageExtensionOption option; + if (error.domain() == "QtNetwork") + option.domain = QWebPage::QtNetwork; + else if (error.domain() == "HTTP") + option.domain = QWebPage::Http; + else if (error.domain() == "WebKit") + option.domain = QWebPage::WebKit; + else + return false; - option.url = QUrl(error.failingURL()); - option.frame = m_webFrame; - option.error = error.errorCode(); - option.errorString = error.localizedDescription(); + option.url = QUrl(error.failingURL()); + option.frame = m_webFrame; + option.error = error.errorCode(); + option.errorString = error.localizedDescription(); - QWebPage::ErrorPageExtensionReturn output; - if (!page->extension(QWebPage::ErrorPageExtension, &option, &output)) - return; + QWebPage::ErrorPageExtensionReturn output; + if (!page->extension(QWebPage::ErrorPageExtension, &option, &output)) + return false; - KURL baseUrl(output.baseUrl); - KURL failingUrl(option.url); + KURL baseUrl(output.baseUrl); + KURL failingUrl(option.url); - WebCore::ResourceRequest request(baseUrl); - WTF::RefPtr<WebCore::SharedBuffer> buffer = WebCore::SharedBuffer::create(output.content.constData(), output.content.length()); - WebCore::SubstituteData substituteData(buffer, output.contentType, output.encoding, failingUrl); - m_frame->loader()->load(request, substituteData, false); - } + WebCore::ResourceRequest request(baseUrl); + WTF::RefPtr<WebCore::SharedBuffer> buffer = WebCore::SharedBuffer::create(output.content.constData(), output.content.length()); + WebCore::SubstituteData substituteData(buffer, output.contentType, output.encoding, failingUrl); + m_frame->loader()->load(request, substituteData, false); + return true; } void FrameLoaderClientQt::dispatchDidFailProvisionalLoad(const WebCore::ResourceError& error) @@ -1172,9 +1158,13 @@ void FrameLoaderClientQt::dispatchDidFailProvisionalLoad(const WebCore::Resource if (dumpFrameLoaderCallbacks) printf("%s - didFailProvisionalLoadWithError\n", qPrintable(drtDescriptionSuitableForTestResult(m_frame))); - m_loadError = error; - if (!error.isNull() && !error.isCancellation()) - callErrorPageExtension(error); + if (!error.isNull() && !error.isCancellation()) { + if (callErrorPageExtension(error)) + return; + } + + if (m_webFrame) + emitLoadFinished(false); } void FrameLoaderClientQt::dispatchDidFailLoad(const WebCore::ResourceError& error) @@ -1182,9 +1172,13 @@ void FrameLoaderClientQt::dispatchDidFailLoad(const WebCore::ResourceError& erro if (dumpFrameLoaderCallbacks) printf("%s - didFailLoadWithError\n", qPrintable(drtDescriptionSuitableForTestResult(m_frame))); - m_loadError = error; - if (!error.isNull() && !error.isCancellation()) - callErrorPageExtension(error); + if (!error.isNull() && !error.isCancellation()) { + if (callErrorPageExtension(error)) + return; + } + + if (m_webFrame) + emitLoadFinished(false); } WebCore::Frame* FrameLoaderClientQt::dispatchCreatePage(const WebCore::NavigationAction&) @@ -1682,6 +1676,26 @@ PassRefPtr<FrameNetworkingContext> FrameLoaderClientQt::createNetworkingContext( return FrameNetworkingContextQt::create(m_frame, m_webFrame, !MIMESniffingDisabled, m_webFrame->page()->networkAccessManager()); } +void FrameLoaderClientQt::emitLoadStarted() +{ + QWebPage* webPage = m_webFrame->page(); + if (m_isOriginatingLoad && webPage) + emit webPage->loadStarted(); + emit m_webFrame->loadStarted(); +} + +void FrameLoaderClientQt::emitLoadFinished(bool ok) +{ + // Signal handlers can lead to a new load, that will use the member again. + const bool wasOriginatingLoad = m_isOriginatingLoad; + m_isOriginatingLoad = false; + + QWebPage* webPage = m_webFrame->page(); + if (wasOriginatingLoad && webPage) + emit webPage->loadFinished(ok); + emit m_webFrame->loadFinished(ok); +} + } #include "moc_FrameLoaderClientQt.cpp" diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h index 6cfd9c1..1be365d 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h +++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h @@ -67,11 +67,10 @@ class FrameLoaderClientQt : public QObject, public FrameLoaderClient { friend class ::QWebFrame; void callPolicyFunction(FramePolicyFunction function, PolicyAction action); - void callErrorPageExtension(const ResourceError&); + bool callErrorPageExtension(const ResourceError&); + signals: - void loadStarted(); void loadProgress(int d); - void loadFinished(bool); void titleChanged(const QString& title); void unsupportedContent(QNetworkReply*); @@ -265,6 +264,9 @@ private slots: void onIconLoadedForPageURL(const QString&); private: + void emitLoadStarted(); + void emitLoadFinished(bool ok); + Frame *m_frame; QWebFrame *m_webFrame; ResourceResponse m_response; @@ -279,7 +281,7 @@ private: bool m_hasRepresentation; KURL m_lastRequestedUrl; - ResourceError m_loadError; + bool m_isOriginatingLoad; }; } diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp index ef97f3a..b1a6e0f 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp @@ -35,6 +35,10 @@ #include "PlatformVideoWindowPrivate.h" #endif +#if USE(QTKIT) +#include "QTKitFullScreenVideoHandler.h" +#endif + #if USE(QT_MULTIMEDIA) #include <QGraphicsVideoItem> #include <QMediaPlayer> @@ -147,6 +151,10 @@ FullScreenVideoQt::FullScreenVideoQt(ChromeClientQt* chromeClient) #if USE(GSTREAMER) m_FullScreenVideoHandlerGStreamer = new GStreamerFullScreenVideoHandler; #endif + +#if USE(QTKIT) + m_FullScreenVideoHandlerQTKit = new QTKitFullScreenVideoHandler; +#endif } FullScreenVideoQt::~FullScreenVideoQt() @@ -157,6 +165,9 @@ FullScreenVideoQt::~FullScreenVideoQt() #if USE(GSTREAMER) delete m_FullScreenVideoHandlerGStreamer; #endif +#if USE(QTKIT) + delete m_FullScreenVideoHandlerQTKit; +#endif } void FullScreenVideoQt::enterFullScreenForNode(Node* node) @@ -185,6 +196,10 @@ void FullScreenVideoQt::enterFullScreenForNode(Node* node) m_FullScreenVideoHandlerGStreamer->setVideoElement(m_videoElement); m_FullScreenVideoHandlerGStreamer->enterFullScreen(); #endif + +#if USE(QTKIT) + m_FullScreenVideoHandlerQTKit->enterFullScreen(m_videoElement); +#endif } void FullScreenVideoQt::exitFullScreenForNode(Node* node) @@ -211,6 +226,11 @@ void FullScreenVideoQt::exitFullScreenForNode(Node* node) #if USE(GSTREAMER) m_FullScreenVideoHandlerGStreamer->exitFullScreen(); #endif + +#if USE(QTKIT) + m_FullScreenVideoHandlerQTKit->exitFullScreen(); +#endif + } void FullScreenVideoQt::aboutToClose() @@ -232,9 +252,6 @@ bool FullScreenVideoQt::requiresFullScreenForVideoPlayback() { #if USE(QT_MULTIMEDIA) return m_FullScreenVideoHandler ? m_FullScreenVideoHandler->requiresFullScreenForVideoPlayback() : false; -#endif -#if USE(GSTREAMER) - return false; #else return false; #endif @@ -247,6 +264,8 @@ bool FullScreenVideoQt::isValid() const #endif #if USE(GSTREAMER) return m_FullScreenVideoHandlerGStreamer; +#elif USE(QTKIT) + return m_FullScreenVideoHandlerQTKit; #else return 0; #endif diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h index fda153d..06438ea 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h +++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h @@ -38,6 +38,9 @@ class Node; #if USE(QT_MULTIMEDIA) class MediaPlayerPrivateQt; #endif +#if USE(QTKIT) +class QTKitFullScreenVideoHandler; +#endif // We do not use ENABLE or USE because moc does not expand these macros. #if defined(WTF_USE_GSTREAMER) && WTF_USE_GSTREAMER @@ -109,6 +112,9 @@ private: #if USE(GSTREAMER) GStreamerFullScreenVideoHandler* m_FullScreenVideoHandlerGStreamer; #endif +#if USE(QTKIT) + QTKitFullScreenVideoHandler* m_FullScreenVideoHandlerQTKit; +#endif }; } diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QTKitFullScreenVideoHandler.h b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QTKitFullScreenVideoHandler.h new file mode 100644 index 0000000..39af101 --- /dev/null +++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QTKitFullScreenVideoHandler.h @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef QTKitFullScreenVideoHandler_h +#define QTKitFullScreenVideoHandler_h + +#include <OwnPtr.h> + +namespace WebCore { + +class HTMLVideoElement; + +class QTKitFullScreenVideoHandler { + class QTKitFullScreenVideoHandlerPrivate; +public: + QTKitFullScreenVideoHandler(); + ~QTKitFullScreenVideoHandler(); + void enterFullScreen(HTMLVideoElement*); + void exitFullScreen(); + +private: + OwnPtr<QTKitFullScreenVideoHandlerPrivate> privateData; +}; + +} + +#endif // QTKitFullScreenVideoHandler_h diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QTKitFullScreenVideoHandler.mm b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QTKitFullScreenVideoHandler.mm new file mode 100644 index 0000000..5e94442 --- /dev/null +++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QTKitFullScreenVideoHandler.mm @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#include "config.h" + +#include "QTKitFullScreenVideoHandler.h" + +#import <Cocoa/Cocoa.h> + +#include "HTMLVideoElement.h" +#include "WebVideoFullscreenController.h" + +using namespace WebCore; + +class QTKitFullScreenVideoHandler::QTKitFullScreenVideoHandlerPrivate { +public : + WebVideoFullscreenController* m_FullScreenController; +}; + +QTKitFullScreenVideoHandler::QTKitFullScreenVideoHandler() + : privateData (adoptPtr(new QTKitFullScreenVideoHandlerPrivate)) +{ + privateData->m_FullScreenController = nil; +} + +QTKitFullScreenVideoHandler::~QTKitFullScreenVideoHandler() +{ + exitFullScreen(); +} + +void QTKitFullScreenVideoHandler::enterFullScreen(HTMLVideoElement* videoElement) +{ + if (privateData->m_FullScreenController) { + // First exit fullscreen for the old mediaElement. + exitFullScreen(); + ASSERT(!privateData->m_FullScreenController); + } + if (!privateData->m_FullScreenController) { + privateData->m_FullScreenController = [[WebVideoFullscreenController alloc] init]; + [privateData->m_FullScreenController setMediaElement:videoElement]; + NSScreen* currentScreen = [NSScreen mainScreen]; + [privateData->m_FullScreenController enterFullscreen:currentScreen]; + } +} + +void QTKitFullScreenVideoHandler::exitFullScreen() +{ + [privateData->m_FullScreenController exitFullscreen]; + [privateData->m_FullScreenController release]; + privateData->m_FullScreenController = nil; +} diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/WebSystemInterface.mm b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/WebSystemInterface.mm index 7ff2ec8..8354af9 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/WebSystemInterface.mm +++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/WebSystemInterface.mm @@ -57,6 +57,10 @@ void InitWebCoreSystemInterface(void) INIT(QTGetSitesInMediaDownloadCache); INIT(QTClearMediaDownloadCacheForSite); INIT(QTClearMediaDownloadCache); + INIT(CreateMediaUIBackgroundView); + INIT(CreateMediaUIControl); + INIT(WindowSetAlpha); + INIT(WindowSetScaledFrame); didInit = true; } diff --git a/src/3rdparty/webkit/Source/WebKit/qt/declarative/qdeclarativewebview.cpp b/src/3rdparty/webkit/Source/WebKit/qt/declarative/qdeclarativewebview.cpp index 6ba1346..22ee579d 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/declarative/qdeclarativewebview.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/declarative/qdeclarativewebview.cpp @@ -782,7 +782,9 @@ void QDeclarativeWebView::setPage(QWebPage* page) connect(page->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(windowObjectCleared())); +#if !defined(Q_OS_SYMBIAN) page->settings()->setAttribute(QWebSettings::TiledBackingStoreEnabled, true); +#endif } diff --git a/src/3rdparty/webkit/Source/WebKit/qt/symbian/bwins/QtWebKitu.def b/src/3rdparty/webkit/Source/WebKit/qt/symbian/bwins/QtWebKitu.def index f1a545e..c93213c 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/symbian/bwins/QtWebKitu.def +++ b/src/3rdparty/webkit/Source/WebKit/qt/symbian/bwins/QtWebKitu.def @@ -368,7 +368,7 @@ EXPORTS ?qWebKitMinorVersion@@YAHXZ @ 367 NONAME ; int qWebKitMinorVersion(void) ?qWebKitVersion@@YA?AVQString@@XZ @ 368 NONAME ; class QString qWebKitVersion(void) ?qt_drt_clearFrameName@@YAXPAVQWebFrame@@@Z @ 369 NONAME ; void qt_drt_clearFrameName(class QWebFrame *) - ?qt_drt_counterValueForElementById@@YA?AVQString@@PAVQWebFrame@@ABV1@@Z @ 370 NONAME ; class QString qt_drt_counterValueForElementById(class QWebFrame *, class QString const &) + ?qt_drt_counterValueForElementById@@YA?AVQString@@PAVQWebFrame@@ABV1@@Z @ 370 NONAME ABSENT ; class QString qt_drt_counterValueForElementById(class QWebFrame *, class QString const &) ?qt_drt_garbageCollector_collect@@YAXXZ @ 371 NONAME ; void qt_drt_garbageCollector_collect(void) ?qt_drt_garbageCollector_collectOnAlternateThread@@YAX_N@Z @ 372 NONAME ; void qt_drt_garbageCollector_collectOnAlternateThread(bool) ?qt_drt_javaScriptObjectsCount@@YAHXZ @ 373 NONAME ; int qt_drt_javaScriptObjectsCount(void) @@ -628,21 +628,21 @@ EXPORTS ?inspectorUrl@QWebSettings@@QBE?AVQUrl@@XZ @ 627 NONAME ABSENT ; class QUrl QWebSettings::inspectorUrl(void) const ?isTiledBackingStoreFrozen@QGraphicsWebView@@QBE_NXZ @ 628 NONAME ; bool QGraphicsWebView::isTiledBackingStoreFrozen(void) const ?pageChanged@QWebFrame@@IAEXXZ @ 629 NONAME ; void QWebFrame::pageChanged(void) - ?qt_drt_enableCaretBrowsing@@YAXPAVQWebPage@@_N@Z @ 630 NONAME ; void qt_drt_enableCaretBrowsing(class QWebPage *, bool) - ?qt_drt_evaluateScriptInIsolatedWorld@@YAXPAVQWebFrame@@HABVQString@@@Z @ 631 NONAME ; void qt_drt_evaluateScriptInIsolatedWorld(class QWebFrame *, int, class QString const &) - ?qt_drt_hasDocumentElement@@YA_NPAVQWebFrame@@@Z @ 632 NONAME ; bool qt_drt_hasDocumentElement(class QWebFrame *) - ?qt_drt_numberOfPages@@YAHPAVQWebFrame@@MM@Z @ 633 NONAME ; int qt_drt_numberOfPages(class QWebFrame *, float, float) - ?qt_drt_pageNumberForElementById@@YAHPAVQWebFrame@@ABVQString@@MM@Z @ 634 NONAME ; int qt_drt_pageNumberForElementById(class QWebFrame *, class QString const &, float, float) - ?qt_drt_pauseSVGAnimation@@YA_NPAVQWebFrame@@ABVQString@@N1@Z @ 635 NONAME ; bool qt_drt_pauseSVGAnimation(class QWebFrame *, class QString const &, double, class QString const &) - ?qt_drt_setDomainRelaxationForbiddenForURLScheme@@YAX_NABVQString@@@Z @ 636 NONAME ; void qt_drt_setDomainRelaxationForbiddenForURLScheme(bool, class QString const &) - ?qt_drt_setFrameFlatteningEnabled@@YAXPAVQWebPage@@_N@Z @ 637 NONAME ; void qt_drt_setFrameFlatteningEnabled(class QWebPage *, bool) - ?qt_drt_setMediaType@@YAXPAVQWebFrame@@ABVQString@@@Z @ 638 NONAME ; void qt_drt_setMediaType(class QWebFrame *, class QString const &) - ?qt_drt_setTimelineProfilingEnabled@@YAXPAVQWebPage@@_N@Z @ 639 NONAME ; void qt_drt_setTimelineProfilingEnabled(class QWebPage *, bool) - ?qt_drt_webinspector_close@@YAXPAVQWebPage@@@Z @ 640 NONAME ; void qt_drt_webinspector_close(class QWebPage *) - ?qt_drt_webinspector_executeScript@@YAXPAVQWebPage@@JABVQString@@@Z @ 641 NONAME ; void qt_drt_webinspector_executeScript(class QWebPage *, long, class QString const &) - ?qt_drt_webinspector_show@@YAXPAVQWebPage@@@Z @ 642 NONAME ; void qt_drt_webinspector_show(class QWebPage *) - ?qt_drt_workerThreadCount@@YAHXZ @ 643 NONAME ; int qt_drt_workerThreadCount(void) - ?qt_wrt_setViewMode@@YAXPAVQWebPage@@ABVQString@@@Z @ 644 NONAME ; void qt_wrt_setViewMode(class QWebPage *, class QString const &) + ?qt_drt_enableCaretBrowsing@@YAXPAVQWebPage@@_N@Z @ 630 NONAME ABSENT ; void qt_drt_enableCaretBrowsing(class QWebPage *, bool) + ?qt_drt_evaluateScriptInIsolatedWorld@@YAXPAVQWebFrame@@HABVQString@@@Z @ 631 NONAME ABSENT ; void qt_drt_evaluateScriptInIsolatedWorld(class QWebFrame *, int, class QString const &) + ?qt_drt_hasDocumentElement@@YA_NPAVQWebFrame@@@Z @ 632 NONAME ABSENT ; bool qt_drt_hasDocumentElement(class QWebFrame *) + ?qt_drt_numberOfPages@@YAHPAVQWebFrame@@MM@Z @ 633 NONAME ABSENT ; int qt_drt_numberOfPages(class QWebFrame *, float, float) + ?qt_drt_pageNumberForElementById@@YAHPAVQWebFrame@@ABVQString@@MM@Z @ 634 NONAME ABSENT ; int qt_drt_pageNumberForElementById(class QWebFrame *, class QString const &, float, float) + ?qt_drt_pauseSVGAnimation@@YA_NPAVQWebFrame@@ABVQString@@N1@Z @ 635 NONAME ABSENT ; bool qt_drt_pauseSVGAnimation(class QWebFrame *, class QString const &, double, class QString const &) + ?qt_drt_setDomainRelaxationForbiddenForURLScheme@@YAX_NABVQString@@@Z @ 636 NONAME ABSENT ; void qt_drt_setDomainRelaxationForbiddenForURLScheme(bool, class QString const &) + ?qt_drt_setFrameFlatteningEnabled@@YAXPAVQWebPage@@_N@Z @ 637 NONAME ABSENT ; void qt_drt_setFrameFlatteningEnabled(class QWebPage *, bool) + ?qt_drt_setMediaType@@YAXPAVQWebFrame@@ABVQString@@@Z @ 638 NONAME ABSENT ; void qt_drt_setMediaType(class QWebFrame *, class QString const &) + ?qt_drt_setTimelineProfilingEnabled@@YAXPAVQWebPage@@_N@Z @ 639 NONAME ABSENT ; void qt_drt_setTimelineProfilingEnabled(class QWebPage *, bool) + ?qt_drt_webinspector_close@@YAXPAVQWebPage@@@Z @ 640 NONAME ABSENT ; void qt_drt_webinspector_close(class QWebPage *) + ?qt_drt_webinspector_executeScript@@YAXPAVQWebPage@@JABVQString@@@Z @ 641 NONAME ABSENT ; void qt_drt_webinspector_executeScript(class QWebPage *, long, class QString const &) + ?qt_drt_webinspector_show@@YAXPAVQWebPage@@@Z @ 642 NONAME ABSENT ; void qt_drt_webinspector_show(class QWebPage *) + ?qt_drt_workerThreadCount@@YAHXZ @ 643 NONAME ABSENT ; int qt_drt_workerThreadCount(void) + ?qt_wrt_setViewMode@@YAXPAVQWebPage@@ABVQString@@@Z @ 644 NONAME ABSENT ; void qt_wrt_setViewMode(class QWebPage *, class QString const &) ?qtwebkit_webframe_scrollRecursively@@YAXPAVQWebFrame@@HHABVQPoint@@@Z @ 645 NONAME ; void qtwebkit_webframe_scrollRecursively(class QWebFrame *, int, int, class QPoint const &) ?resizesToContents@QGraphicsWebView@@QBE_NXZ @ 646 NONAME ; bool QGraphicsWebView::resizesToContents(void) const ?scrollToAnchor@QWebFrame@@QAEXABVQString@@@Z @ 647 NONAME ; void QWebFrame::scrollToAnchor(class QString const &) @@ -650,4 +650,148 @@ EXPORTS ?setResizesToContents@QGraphicsWebView@@QAEX_N@Z @ 649 NONAME ; void QGraphicsWebView::setResizesToContents(bool) ?setTiledBackingStoreFrozen@QGraphicsWebView@@QAEX_N@Z @ 650 NONAME ; void QGraphicsWebView::setTiledBackingStoreFrozen(bool) ?qtwebkit_webframe_scrollOverflow@@YA_NPAVQWebFrame@@HHABVQPoint@@@Z @ 651 NONAME ; bool qtwebkit_webframe_scrollOverflow(QWebFrame *, int, int, const QPoint&) - ?qtwebkit_setPluginCreatedCallback@@YAXP6AXPAVQWebFrame@@PAX1@Z@Z @ 652 NONAME ; void qtwebkit_setPluginCreatedCallback(void (*)(class QWebFrame *, void *, void *)) + ?qtwebkit_setPluginCreatedCallback@@YAXP6AXPAVQWebFrame@@PAX1@Z@Z @ 652 NONAME ; void qtwebkit_setPluginCreatedCallback(void (*)(class QWebFrame *, void *, void *)) + ?mediaContentUrlByElementId@DumpRenderTreeSupportQt@@SA?AVQUrl@@PAVQWebFrame@@ABVQString@@@Z @ 653 NONAME ; class QUrl DumpRenderTreeSupportQt::mediaContentUrlByElementId(QWebFrame *, const QString &) + ?webPageSetGroupName@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@ABVQString@@@Z @ 654 NONAME ; void DumpRenderTreeSupportQt::webPageSetGroupName(class QWebPage *, class QString const &) + ?webPageGroupName@DumpRenderTreeSupportQt@@SA?AVQString@@PAVQWebPage@@@Z @ 655 NONAME ; class QString DumpRenderTreeSupportQt::webPageGroupName(class QWebPage *) + ?renderHints@QGraphicsWebView@@QBE?AV?$QFlags@W4RenderHint@QPainter@@@@XZ @ 656 NONAME ; class QFlags<enum QPainter::RenderHint> QGraphicsWebView::renderHints(void) const + ?setRenderHint@QGraphicsWebView@@QAEXW4RenderHint@QPainter@@_N@Z @ 657 NONAME ; void QGraphicsWebView::setRenderHint(enum QPainter::RenderHint, bool) + ?selectedHtml@QWebPage@@QBE?AVQString@@XZ @ 658 NONAME ; class QString QWebPage::selectedHtml(void) const + ?hasSelection@QWebPage@@QBE_NXZ @ 659 NONAME ; bool QWebPage::hasSelection(void) const + ?garbageCollectorCollect@DumpRenderTreeSupportQt@@SAXXZ @ 660 NONAME ; void DumpRenderTreeSupportQt::garbageCollectorCollect(void) + ?supportedContentTypes@QWebPage@@QBE?AVQStringList@@XZ @ 661 NONAME ; class QStringList QWebPage::supportedContentTypes(void) const + ?supportsContentType@QWebPage@@QBE_NABVQString@@@Z @ 662 NONAME ; bool QWebPage::supportsContentType(class QString const &) const + ?setFeaturePermission@QWebPage@@QAEXPAVQWebFrame@@W4Feature@1@W4PermissionPolicy@1@@Z @ 663 NONAME ; void QWebPage::setFeaturePermission(class QWebFrame *, enum QWebPage::Feature, enum QWebPage::PermissionPolicy) + strnstr @ 664 NONAME + ??1QWebScriptWorld@@QAE@XZ @ 665 NONAME ; QWebScriptWorld::~QWebScriptWorld(void) + ??_EQWebSettings@@QAE@I@Z @ 666 NONAME ; QWebSettings::~QWebSettings(unsigned int) + ?setSelectTrailingWhitespaceEnabled@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@_N@Z @ 667 NONAME ; void DumpRenderTreeSupportQt::setSelectTrailingWhitespaceEnabled(class QWebPage *, bool) + ?webInspectorShow@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@@Z @ 668 NONAME ; void DumpRenderTreeSupportQt::webInspectorShow(class QWebPage *) + ?firstRectForCharacterRange@DumpRenderTreeSupportQt@@SA?AV?$QList@VQVariant@@@@PAVQWebPage@@HH@Z @ 669 NONAME ; class QList<class QVariant> DumpRenderTreeSupportQt::firstRectForCharacterRange(class QWebPage *, int, int) + ?whiteListAccessFromOrigin@DumpRenderTreeSupportQt@@SAXABVQString@@00_N@Z @ 670 NONAME ; void DumpRenderTreeSupportQt::whiteListAccessFromOrigin(class QString const &, class QString const &, class QString const &, bool) + ?dumpResourceLoadCallbacks@DumpRenderTreeSupportQt@@SAX_N@Z @ 671 NONAME ; void DumpRenderTreeSupportQt::dumpResourceLoadCallbacks(bool) + ?setWillSendRequestClearHeaders@DumpRenderTreeSupportQt@@SAXABVQStringList@@@Z @ 672 NONAME ; void DumpRenderTreeSupportQt::setWillSendRequestClearHeaders(class QStringList const &) + ?dumpResourceLoadCallbacksPath@DumpRenderTreeSupportQt@@SAXABVQString@@@Z @ 673 NONAME ; void DumpRenderTreeSupportQt::dumpResourceLoadCallbacksPath(class QString const &) + ?featurePermissionRequestCanceled@QWebPage@@IAEXPAVQWebFrame@@W4Feature@1@@Z @ 674 NONAME ; void QWebPage::featurePermissionRequestCanceled(class QWebFrame *, enum QWebPage::Feature) + ??0ViewportAttributes@QWebPage@@QAE@ABV01@@Z @ 675 NONAME ; QWebPage::ViewportAttributes::ViewportAttributes(class QWebPage::ViewportAttributes const &) + ?getChildHistoryItems@DumpRenderTreeSupportQt@@SA?AV?$QMap@VQString@@VQWebHistoryItem@@@@ABVQWebHistoryItem@@@Z @ 676 NONAME ; class QMap<class QString, class QWebHistoryItem> DumpRenderTreeSupportQt::getChildHistoryItems(class QWebHistoryItem const &) + ??_EQWebHistoryItem@@QAE@I@Z @ 677 NONAME ; QWebHistoryItem::~QWebHistoryItem(unsigned int) + ?viewportAttributesForSize@QWebPage@@QBE?AVViewportAttributes@1@ABVQSize@@@Z @ 678 NONAME ; class QWebPage::ViewportAttributes QWebPage::viewportAttributesForSize(class QSize const &) const + ?selectedRange@DumpRenderTreeSupportQt@@SA?AV?$QList@VQVariant@@@@PAVQWebPage@@@Z @ 679 NONAME ; class QList<class QVariant> DumpRenderTreeSupportQt::selectedRange(class QWebPage *) + ?selectedHtml@QWebView@@QBE?AVQString@@XZ @ 680 NONAME ; class QString QWebView::selectedHtml(void) const + ?pageNumberForElementById@DumpRenderTreeSupportQt@@SAHPAVQWebFrame@@ABVQString@@MM@Z @ 681 NONAME ; int DumpRenderTreeSupportQt::pageNumberForElementById(class QWebFrame *, class QString const &, float, float) + ??1ViewportAttributes@QWebPage@@QAE@XZ @ 682 NONAME ; QWebPage::ViewportAttributes::~ViewportAttributes(void) + ?resumeActiveDOMObjects@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@@Z @ 683 NONAME ; void DumpRenderTreeSupportQt::resumeActiveDOMObjects(class QWebFrame *) + ?suspendAnimations@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@@Z @ 684 NONAME ; void DumpRenderTreeSupportQt::suspendAnimations(class QWebFrame *) + ?initialScaleFactor@ViewportAttributes@QWebPage@@QBEMXZ @ 685 NONAME ; float QWebPage::ViewportAttributes::initialScaleFactor(void) const + ?setSmartInsertDeleteEnabled@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@_N@Z @ 686 NONAME ; void DumpRenderTreeSupportQt::setSmartInsertDeleteEnabled(class QWebPage *, bool) + ?nodesFromRect@DumpRenderTreeSupportQt@@SA?AV?$QList@VQVariant@@@@ABVQWebElement@@HHIIII_N@Z @ 687 NONAME ; class QList<class QVariant> DumpRenderTreeSupportQt::nodesFromRect(class QWebElement const &, int, int, unsigned int, unsigned int, unsigned int, unsigned int, bool) + ?setJavaScriptProfilingEnabled@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@_N@Z @ 688 NONAME ; void DumpRenderTreeSupportQt::setJavaScriptProfilingEnabled(class QWebFrame *, bool) + ?shouldClose@DumpRenderTreeSupportQt@@SA_NPAVQWebFrame@@@Z @ 689 NONAME ; bool DumpRenderTreeSupportQt::shouldClose(class QWebFrame *) + ?clearOpener@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@@Z @ 690 NONAME ; void DumpRenderTreeSupportQt::clearOpener(class QWebFrame *) + ?isTargetItem@DumpRenderTreeSupportQt@@SA_NABVQWebHistoryItem@@@Z @ 691 NONAME ; bool DumpRenderTreeSupportQt::isTargetItem(class QWebHistoryItem const &) + ?setWillSendRequestReturnsNullOnRedirect@DumpRenderTreeSupportQt@@SAX_N@Z @ 692 NONAME ; void DumpRenderTreeSupportQt::setWillSendRequestReturnsNullOnRedirect(bool) + ??0DumpRenderTreeSupportQt@@QAE@XZ @ 693 NONAME ; DumpRenderTreeSupportQt::DumpRenderTreeSupportQt(void) + ?isUserScalable@ViewportAttributes@QWebPage@@QBE_NXZ @ 694 NONAME ; bool QWebPage::ViewportAttributes::isUserScalable(void) const + ?clearFrameName@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@@Z @ 695 NONAME ; void DumpRenderTreeSupportQt::clearFrameName(class QWebFrame *) + ??0QWebScriptWorld@@QAE@XZ @ 696 NONAME ; QWebScriptWorld::QWebScriptWorld(void) + ??4ViewportAttributes@QWebPage@@QAEAAV01@ABV01@@Z @ 697 NONAME ; class QWebPage::ViewportAttributes & QWebPage::ViewportAttributes::operator=(class QWebPage::ViewportAttributes const &) + ?dumpNotification@DumpRenderTreeSupportQt@@SAX_N@Z @ 698 NONAME ; void DumpRenderTreeSupportQt::dumpNotification(bool) + ?setDeferMainResourceDataLoad@DumpRenderTreeSupportQt@@SAX_N@Z @ 699 NONAME ; void DumpRenderTreeSupportQt::setDeferMainResourceDataLoad(bool) + ?webInspectorClose@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@@Z @ 700 NONAME ; void DumpRenderTreeSupportQt::webInspectorClose(class QWebPage *) + ?defaultMinimumTimerInterval@DumpRenderTreeSupportQt@@SANXZ @ 701 NONAME ; double DumpRenderTreeSupportQt::defaultMinimumTimerInterval(void) + ??0ViewportAttributes@QWebPage@@QAE@XZ @ 702 NONAME ; QWebPage::ViewportAttributes::ViewportAttributes(void) + ?counterValueForElementById@DumpRenderTreeSupportQt@@SA?AVQString@@PAVQWebFrame@@ABV2@@Z @ 703 NONAME ; class QString DumpRenderTreeSupportQt::counterValueForElementById(class QWebFrame *, class QString const &) + ??_EQWebElement@@QAE@I@Z @ 704 NONAME ; QWebElement::~QWebElement(unsigned int) + ?setMinimumTimerInterval@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@N@Z @ 705 NONAME ; void DumpRenderTreeSupportQt::setMinimumTimerInterval(class QWebPage *, double) + ?activeMockDeviceOrientationClient@DumpRenderTreeSupportQt@@SAX_N@Z @ 706 NONAME ; void DumpRenderTreeSupportQt::activeMockDeviceOrientationClient(bool) + ?addUserStyleSheet@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@ABVQString@@@Z @ 707 NONAME ; void DumpRenderTreeSupportQt::addUserStyleSheet(class QWebPage *, class QString const &) + ?devicePixelRatio@ViewportAttributes@QWebPage@@QBEMXZ @ 708 NONAME ; float QWebPage::ViewportAttributes::devicePixelRatio(void) const + ?setMockDeviceOrientation@DumpRenderTreeSupportQt@@SAX_NN0N0N@Z @ 709 NONAME ; void DumpRenderTreeSupportQt::setMockDeviceOrientation(bool, double, bool, double, bool, double) + ?size@ViewportAttributes@QWebPage@@QBE?AVQSize@@XZ @ 710 NONAME ; class QSize QWebPage::ViewportAttributes::size(void) const + ?setCustomPolicyDelegate@DumpRenderTreeSupportQt@@SAX_N0@Z @ 711 NONAME ; void DumpRenderTreeSupportQt::setCustomPolicyDelegate(bool, bool) + ?viewportChangeRequested@QWebPage@@IAEXXZ @ 712 NONAME ; void QWebPage::viewportChangeRequested(void) + ?hasDocumentElement@DumpRenderTreeSupportQt@@SA_NPAVQWebFrame@@@Z @ 713 NONAME ; bool DumpRenderTreeSupportQt::hasDocumentElement(class QWebFrame *) + ?numberOfPages@DumpRenderTreeSupportQt@@SAHPAVQWebFrame@@MM@Z @ 714 NONAME ; int DumpRenderTreeSupportQt::numberOfPages(class QWebFrame *, float, float) + ?numberOfActiveAnimations@DumpRenderTreeSupportQt@@SAHPAVQWebFrame@@@Z @ 715 NONAME ; int DumpRenderTreeSupportQt::numberOfActiveAnimations(class QWebFrame *) + ?contextMenu@DumpRenderTreeSupportQt@@SA?AVQStringList@@PAVQWebPage@@@Z @ 716 NONAME ; class QStringList DumpRenderTreeSupportQt::contextMenu(class QWebPage *) + ?setWillSendRequestReturnsNull@DumpRenderTreeSupportQt@@SAX_N@Z @ 717 NONAME ; void DumpRenderTreeSupportQt::setWillSendRequestReturnsNull(bool) + ?resumeAnimations@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@@Z @ 718 NONAME ; void DumpRenderTreeSupportQt::resumeAnimations(class QWebFrame *) + ?addURLToRedirect@DumpRenderTreeSupportQt@@SAXABVQString@@0@Z @ 719 NONAME ; void DumpRenderTreeSupportQt::addURLToRedirect(class QString const &, class QString const &) + ??_EQWebDatabase@@QAE@I@Z @ 720 NONAME ; QWebDatabase::~QWebDatabase(unsigned int) + ?workerThreadCount@DumpRenderTreeSupportQt@@SAHXZ @ 721 NONAME ; int DumpRenderTreeSupportQt::workerThreadCount(void) + ?render@QWebElement@@QAEXPAVQPainter@@ABVQRect@@@Z @ 722 NONAME ; void QWebElement::render(class QPainter *, class QRect const &) + ?setFrameFlatteningEnabled@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@_N@Z @ 723 NONAME ; void DumpRenderTreeSupportQt::setFrameFlatteningEnabled(class QWebPage *, bool) + ?dumpResourceResponseMIMETypes@DumpRenderTreeSupportQt@@SAX_N@Z @ 724 NONAME ; void DumpRenderTreeSupportQt::dumpResourceResponseMIMETypes(bool) + ?pageProperty@DumpRenderTreeSupportQt@@SA?AVQString@@PAVQWebFrame@@ABV2@H@Z @ 725 NONAME ; class QString DumpRenderTreeSupportQt::pageProperty(class QWebFrame *, class QString const &, int) + ??0QDRTNode@@QAE@XZ @ 726 NONAME ; QDRTNode::QDRTNode(void) + ?hasSelection@QWebView@@QBE_NXZ @ 727 NONAME ; bool QWebView::hasSelection(void) const + ??_EQDRTNode@@QAE@I@Z @ 728 NONAME ; QDRTNode::~QDRTNode(unsigned int) + ?garbageCollectorCollectOnAlternateThread@DumpRenderTreeSupportQt@@SAX_N@Z @ 729 NONAME ; void DumpRenderTreeSupportQt::garbageCollectorCollectOnAlternateThread(bool) + ?setRenderHints@QGraphicsWebView@@QAEXV?$QFlags@W4RenderHint@QPainter@@@@@Z @ 730 NONAME ; void QGraphicsWebView::setRenderHints(class QFlags<enum QPainter::RenderHint>) + ?setAlternateHtml@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@ABVQString@@ABVQUrl@@2@Z @ 731 NONAME ; void DumpRenderTreeSupportQt::setAlternateHtml(class QWebFrame *, class QString const &, class QUrl const &, class QUrl const &) + ?webInspectorExecuteScript@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@JABVQString@@@Z @ 732 NONAME ; void DumpRenderTreeSupportQt::webInspectorExecuteScript(class QWebPage *, long, class QString const &) + ?pauseTransitionOfProperty@DumpRenderTreeSupportQt@@SA_NPAVQWebFrame@@ABVQString@@N1@Z @ 733 NONAME ; bool DumpRenderTreeSupportQt::pauseTransitionOfProperty(class QWebFrame *, class QString const &, double, class QString const &) + ?numberOfPendingGeolocationPermissionRequests@DumpRenderTreeSupportQt@@SAHPAVQWebPage@@@Z @ 734 NONAME ; int DumpRenderTreeSupportQt::numberOfPendingGeolocationPermissionRequests(class QWebPage *) + ?setEditingBehavior@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@ABVQString@@@Z @ 735 NONAME ; void DumpRenderTreeSupportQt::setEditingBehavior(class QWebPage *, class QString const &) + ?findString@DumpRenderTreeSupportQt@@SA_NPAVQWebPage@@ABVQString@@ABVQStringList@@@Z @ 736 NONAME ; bool DumpRenderTreeSupportQt::findString(class QWebPage *, class QString const &, class QStringList const &) + ?setCaretBrowsingEnabled@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@_N@Z @ 737 NONAME ; void DumpRenderTreeSupportQt::setCaretBrowsingEnabled(class QWebPage *, bool) + ?historyItemTarget@DumpRenderTreeSupportQt@@SA?AVQString@@ABVQWebHistoryItem@@@Z @ 738 NONAME ; class QString DumpRenderTreeSupportQt::historyItemTarget(class QWebHistoryItem const &) + ??1QDRTNode@@QAE@XZ @ 739 NONAME ; QDRTNode::~QDRTNode(void) + ?clearAllApplicationCaches@DumpRenderTreeSupportQt@@SAXXZ @ 740 NONAME ; void DumpRenderTreeSupportQt::clearAllApplicationCaches(void) + ?isValid@ViewportAttributes@QWebPage@@QBE_NXZ @ 741 NONAME ; bool QWebPage::ViewportAttributes::isValid(void) const + ?dumpVisitedLinksCallbacks@DumpRenderTreeSupportQt@@SAX_N@Z @ 742 NONAME ; void DumpRenderTreeSupportQt::dumpVisitedLinksCallbacks(bool) + ?resetOriginAccessWhiteLists@DumpRenderTreeSupportQt@@SAXXZ @ 743 NONAME ; void DumpRenderTreeSupportQt::resetOriginAccessWhiteLists(void) + ??_EQWebSecurityOrigin@@QAE@I@Z @ 744 NONAME ; QWebSecurityOrigin::~QWebSecurityOrigin(unsigned int) + ?dumpFrameLoader@DumpRenderTreeSupportQt@@SAX_N@Z @ 745 NONAME ; void DumpRenderTreeSupportQt::dumpFrameLoader(bool) + ?markerTextForListItem@DumpRenderTreeSupportQt@@SA?AVQString@@ABVQWebElement@@@Z @ 746 NONAME ; class QString DumpRenderTreeSupportQt::markerTextForListItem(class QWebElement const &) + ?elementDoesAutoCompleteForElementWithId@DumpRenderTreeSupportQt@@SA_NPAVQWebFrame@@ABVQString@@@Z @ 747 NONAME ; bool DumpRenderTreeSupportQt::elementDoesAutoCompleteForElementWithId(class QWebFrame *, class QString const &) + ?applicationCacheQuotaExceeded@QWebPage@@IAEXPAVQWebSecurityOrigin@@_K@Z @ 748 NONAME ; void QWebPage::applicationCacheQuotaExceeded(class QWebSecurityOrigin *, unsigned long long) + ?setTimelineProfilingEnabled@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@_N@Z @ 749 NONAME ; void DumpRenderTreeSupportQt::setTimelineProfilingEnabled(class QWebPage *, bool) + ??0QDRTNode@@AAE@PAVNode@WebCore@@@Z @ 750 NONAME ; QDRTNode::QDRTNode(class WebCore::Node *) + ?setMockGeolocationPermission@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@_N@Z @ 751 NONAME ; void DumpRenderTreeSupportQt::setMockGeolocationPermission(class QWebPage *, bool) + ?setMockGeolocationError@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@HABVQString@@@Z @ 752 NONAME ; void DumpRenderTreeSupportQt::setMockGeolocationError(class QWebPage *, int, class QString const &) + ?clearScriptWorlds@DumpRenderTreeSupportQt@@SAXXZ @ 753 NONAME ; void DumpRenderTreeSupportQt::clearScriptWorlds(void) + ?maximumScaleFactor@ViewportAttributes@QWebPage@@QBEMXZ @ 754 NONAME ; float QWebPage::ViewportAttributes::maximumScaleFactor(void) const + ?dumpHistoryCallbacks@DumpRenderTreeSupportQt@@SAX_N@Z @ 755 NONAME ; void DumpRenderTreeSupportQt::dumpHistoryCallbacks(bool) + ??0MimeType@QWebPluginFactory@@QAE@XZ @ 756 NONAME ; QWebPluginFactory::MimeType::MimeType(void) + ?pauseSVGAnimation@DumpRenderTreeSupportQt@@SA_NPAVQWebFrame@@ABVQString@@N1@Z @ 757 NONAME ; bool DumpRenderTreeSupportQt::pauseSVGAnimation(class QWebFrame *, class QString const &, double, class QString const &) + ?featurePermissionRequested@QWebPage@@IAEXPAVQWebFrame@@W4Feature@1@@Z @ 758 NONAME ; void QWebPage::featurePermissionRequested(class QWebFrame *, enum QWebPage::Feature) + ?removeShadowRoot@DumpRenderTreeSupportQt@@SAXABVQWebElement@@@Z @ 759 NONAME ; void DumpRenderTreeSupportQt::removeShadowRoot(class QWebElement const &) + ??_EQWebPluginInfo@@QAE@I@Z @ 760 NONAME ; QWebPluginInfo::~QWebPluginInfo(unsigned int) + ?pageSizeAndMarginsInPixels@DumpRenderTreeSupportQt@@SA?AVQString@@PAVQWebFrame@@HHHHHHH@Z @ 761 NONAME ; class QString DumpRenderTreeSupportQt::pageSizeAndMarginsInPixels(class QWebFrame *, int, int, int, int, int, int, int) + ?suspendActiveDOMObjects@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@@Z @ 762 NONAME ; void DumpRenderTreeSupportQt::suspendActiveDOMObjects(class QWebFrame *) + ?dumpUserGestureInFrameLoader@DumpRenderTreeSupportQt@@SAX_N@Z @ 763 NONAME ; void DumpRenderTreeSupportQt::dumpUserGestureInFrameLoader(bool) + ??0QWebScriptWorld@@QAE@ABV0@@Z @ 764 NONAME ; QWebScriptWorld::QWebScriptWorld(class QWebScriptWorld const &) + ?setDumpRenderTreeModeEnabled@DumpRenderTreeSupportQt@@SAX_N@Z @ 765 NONAME ; void DumpRenderTreeSupportQt::setDumpRenderTreeModeEnabled(bool) + ?evaluateScriptInIsolatedWorld@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@HABVQString@@@Z @ 766 NONAME ; void DumpRenderTreeSupportQt::evaluateScriptInIsolatedWorld(class QWebFrame *, int, class QString const &) + ?setApplicationCacheQuota@QWebSecurityOrigin@@QAEX_J@Z @ 767 NONAME ; void QWebSecurityOrigin::setApplicationCacheQuota(long long) + ?plainText@DumpRenderTreeSupportQt@@SA?AVQString@@ABVQVariant@@@Z @ 768 NONAME ; class QString DumpRenderTreeSupportQt::plainText(class QVariant const &) + ??1DumpRenderTreeSupportQt@@QAE@XZ @ 769 NONAME ; DumpRenderTreeSupportQt::~DumpRenderTreeSupportQt(void) + ?viewportAsText@DumpRenderTreeSupportQt@@SA?AVQString@@PAVQWebPage@@HABVQSize@@1@Z @ 770 NONAME ; class QString DumpRenderTreeSupportQt::viewportAsText(class QWebPage *, int, class QSize const &, class QSize const &) + ?setDomainRelaxationForbiddenForURLScheme@DumpRenderTreeSupportQt@@SAX_NABVQString@@@Z @ 771 NONAME ; void DumpRenderTreeSupportQt::setDomainRelaxationForbiddenForURLScheme(bool, class QString const &) + ?setMediaType@DumpRenderTreeSupportQt@@SAXPAVQWebFrame@@ABVQString@@@Z @ 772 NONAME ; void DumpRenderTreeSupportQt::setMediaType(class QWebFrame *, class QString const &) + ?computedStyleIncludingVisitedInfo@DumpRenderTreeSupportQt@@SA?AV?$QMap@VQString@@VQVariant@@@@ABVQWebElement@@@Z @ 773 NONAME ; class QMap<class QString, class QVariant> DumpRenderTreeSupportQt::computedStyleIncludingVisitedInfo(class QWebElement const &) + ?overwritePluginDirectories@DumpRenderTreeSupportQt@@SAXXZ @ 774 NONAME ; void DumpRenderTreeSupportQt::overwritePluginDirectories(void) + ?minimumScaleFactor@ViewportAttributes@QWebPage@@QBEMXZ @ 775 NONAME ; float QWebPage::ViewportAttributes::minimumScaleFactor(void) const + ?setAutofilled@DumpRenderTreeSupportQt@@SAXABVQWebElement@@_N@Z @ 776 NONAME ; void DumpRenderTreeSupportQt::setAutofilled(class QWebElement const &, bool) + ?dumpSetAcceptsEditing@DumpRenderTreeSupportQt@@SAX_N@Z @ 777 NONAME ; void DumpRenderTreeSupportQt::dumpSetAcceptsEditing(bool) + ?pauseAnimation@DumpRenderTreeSupportQt@@SA_NPAVQWebFrame@@ABVQString@@N1@Z @ 778 NONAME ; bool DumpRenderTreeSupportQt::pauseAnimation(class QWebFrame *, class QString const &, double, class QString const &) + ?isPageBoxVisible@DumpRenderTreeSupportQt@@SA_NPAVQWebFrame@@H@Z @ 779 NONAME ; bool DumpRenderTreeSupportQt::isPageBoxVisible(class QWebFrame *, int) + ?shadowRoot@DumpRenderTreeSupportQt@@SA?AVQVariant@@ABVQWebElement@@@Z @ 780 NONAME ; class QVariant DumpRenderTreeSupportQt::shadowRoot(class QWebElement const &) + ??4QDRTNode@@QAEAAV0@ABV0@@Z @ 781 NONAME ; class QDRTNode & QDRTNode::operator=(class QDRTNode const &) + ?responseMimeType@DumpRenderTreeSupportQt@@SA?AVQString@@PAVQWebFrame@@@Z @ 782 NONAME ; class QString DumpRenderTreeSupportQt::responseMimeType(class QWebFrame *) + ?setMockGeolocationPosition@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@NNN@Z @ 783 NONAME ; void DumpRenderTreeSupportQt::setMockGeolocationPosition(class QWebPage *, double, double, double) + ?isCommandEnabled@DumpRenderTreeSupportQt@@SA_NPAVQWebPage@@ABVQString@@@Z @ 784 NONAME ; bool DumpRenderTreeSupportQt::isCommandEnabled(class QWebPage *, class QString const &) + ?dumpEditingCallbacks@DumpRenderTreeSupportQt@@SAX_N@Z @ 785 NONAME ; void DumpRenderTreeSupportQt::dumpEditingCallbacks(bool) + ?setActualVisibleContentRect@QWebPage@@QBEXABVQRect@@@Z @ 786 NONAME ; void QWebPage::setActualVisibleContentRect(class QRect const &) const + ?executeCoreCommandByName@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@ABVQString@@1@Z @ 787 NONAME ; void DumpRenderTreeSupportQt::executeCoreCommandByName(class QWebPage *, class QString const &, class QString const &) + ?resetGeolocationMock@DumpRenderTreeSupportQt@@SAXPAVQWebPage@@@Z @ 788 NONAME ; void DumpRenderTreeSupportQt::resetGeolocationMock(class QWebPage *) + ?removeWhiteListAccessFromOrigin@DumpRenderTreeSupportQt@@SAXABVQString@@00_N@Z @ 789 NONAME ; void DumpRenderTreeSupportQt::removeWhiteListAccessFromOrigin(class QString const &, class QString const &, class QString const &, bool) + ??0QDRTNode@@QAE@ABV0@@Z @ 790 NONAME ; QDRTNode::QDRTNode(class QDRTNode const &) + ?removeMockDeviceOrientation@DumpRenderTreeSupportQt@@SAXXZ @ 791 NONAME ; void DumpRenderTreeSupportQt::removeMockDeviceOrientation(void) + ??4QWebScriptWorld@@QAEAAV0@ABV0@@Z @ 792 NONAME ; class QWebScriptWorld & QWebScriptWorld::operator=(class QWebScriptWorld const &) + ?javaScriptObjectsCount@DumpRenderTreeSupportQt@@SAHXZ @ 793 NONAME ; int DumpRenderTreeSupportQt::javaScriptObjectsCount(void) + ?world@QWebScriptWorld@@QBEPAVDOMWrapperWorld@WebCore@@XZ @ 794 NONAME ; class WebCore::DOMWrapperWorld * QWebScriptWorld::world(void) const + ?simulateDesktopNotificationClick@DumpRenderTreeSupportQt@@SAXABVQString@@@Z @ 795 NONAME ; void DumpRenderTreeSupportQt::simulateDesktopNotificationClick(class QString const &) + ?ensureShadowRoot@DumpRenderTreeSupportQt@@SA?AVQVariant@@ABVQWebElement@@@Z @ 796 NONAME ; class QVariant DumpRenderTreeSupportQt::ensureShadowRoot(class QWebElement const &)
\ No newline at end of file diff --git a/src/3rdparty/webkit/Source/WebKit/qt/symbian/eabi/QtWebKitu.def b/src/3rdparty/webkit/Source/WebKit/qt/symbian/eabi/QtWebKitu.def index 176b9a1..d948de4 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/symbian/eabi/QtWebKitu.def +++ b/src/3rdparty/webkit/Source/WebKit/qt/symbian/eabi/QtWebKitu.def @@ -1,847 +1,880 @@ -EXPORTS - _Z10qt_drt_runb @ 1 NONAME - _Z14qWebKitVersionv @ 2 NONAME - _Z19qWebKitMajorVersionv @ 3 NONAME - _Z19qWebKitMinorVersionv @ 4 NONAME - _Z20qt_dump_frame_loaderb @ 5 NONAME - _Z20qt_webpage_groupNameP8QWebPage @ 6 NONAME - _Z21qt_drt_clearFrameNameP9QWebFrame @ 7 NONAME - _Z21qt_drt_pauseAnimationP9QWebFrameRK7QStringdS3_ @ 8 NONAME - _Z23qt_webpage_setGroupNameP8QWebPageRK7QString @ 9 NONAME - _Z25qt_dump_editing_callbacksb @ 10 NONAME - _Z27qt_dump_set_accepts_editingb @ 11 NONAME - _Z29qt_drt_javaScriptObjectsCountv @ 12 NONAME - _Z31qt_drt_garbageCollector_collectv @ 13 NONAME - _Z31qt_drt_numberOfActiveAnimationsP9QWebFrame @ 14 NONAME - _Z31qt_dump_resource_load_callbacksb @ 15 NONAME - _Z32qt_drt_pauseTransitionOfPropertyP9QWebFrameRK7QStringdS3_ @ 16 NONAME - _Z33qt_drt_overwritePluginDirectoriesv @ 17 NONAME - _Z36qt_drt_setJavaScriptProfilingEnabledP9QWebFrameb @ 18 NONAME - _Z48qt_drt_garbageCollector_collectOnAlternateThreadb @ 19 NONAME - _ZN11QWebElement11encloseWithERK7QString @ 20 NONAME - _ZN11QWebElement11encloseWithERKS_ @ 21 NONAME - _ZN11QWebElement11removeClassERK7QString @ 22 NONAME - _ZN11QWebElement11setInnerXmlERK7QString @ 23 NONAME - _ZN11QWebElement11setOuterXmlERK7QString @ 24 NONAME - _ZN11QWebElement11toggleClassERK7QString @ 25 NONAME - _ZN11QWebElement12appendInsideERK7QString @ 26 NONAME - _ZN11QWebElement12appendInsideERKS_ @ 27 NONAME - _ZN11QWebElement12setAttributeERK7QStringS2_ @ 28 NONAME - _ZN11QWebElement12setPlainTextERK7QString @ 29 NONAME - _ZN11QWebElement13appendOutsideERK7QString @ 30 NONAME - _ZN11QWebElement13appendOutsideERKS_ @ 31 NONAME - _ZN11QWebElement13prependInsideERK7QString @ 32 NONAME - _ZN11QWebElement13prependInsideERKS_ @ 33 NONAME - _ZN11QWebElement14prependOutsideERK7QString @ 34 NONAME - _ZN11QWebElement14prependOutsideERKS_ @ 35 NONAME - _ZN11QWebElement14removeChildrenEv @ 36 NONAME ABSENT - _ZN11QWebElement14setAttributeNSERK7QStringS2_S2_ @ 37 NONAME - _ZN11QWebElement15removeAttributeERK7QString @ 38 NONAME - _ZN11QWebElement16enclosingElementEPN7WebCore4NodeE @ 39 NONAME - _ZN11QWebElement16setStylePropertyERK7QStringS2_ @ 40 NONAME - _ZN11QWebElement16takeFromDocumentEv @ 41 NONAME - _ZN11QWebElement17removeAttributeNSERK7QStringS2_ @ 42 NONAME - _ZN11QWebElement18evaluateJavaScriptERK7QString @ 43 NONAME - _ZN11QWebElement18removeFromDocumentEv @ 44 NONAME - _ZN11QWebElement19encloseContentsWithERK7QString @ 45 NONAME - _ZN11QWebElement19encloseContentsWithERKS_ @ 46 NONAME - _ZN11QWebElement7replaceERK7QString @ 47 NONAME - _ZN11QWebElement7replaceERKS_ @ 48 NONAME - _ZN11QWebElement8addClassERK7QString @ 49 NONAME - _ZN11QWebElement8setFocusEv @ 50 NONAME - _ZN11QWebElementC1EPN7WebCore4NodeE @ 51 NONAME - _ZN11QWebElementC1EPN7WebCore7ElementE @ 52 NONAME - _ZN11QWebElementC1ERKS_ @ 53 NONAME - _ZN11QWebElementC1Ev @ 54 NONAME - _ZN11QWebElementC2EPN7WebCore4NodeE @ 55 NONAME - _ZN11QWebElementC2EPN7WebCore7ElementE @ 56 NONAME - _ZN11QWebElementC2ERKS_ @ 57 NONAME - _ZN11QWebElementC2Ev @ 58 NONAME - _ZN11QWebElementD1Ev @ 59 NONAME - _ZN11QWebElementD2Ev @ 60 NONAME - _ZN11QWebElementaSERKS_ @ 61 NONAME - _ZN11QWebHistory12restoreStateERK10QByteArray @ 62 NONAME ABSENT - _ZN11QWebHistory19setMaximumItemCountEi @ 63 NONAME - _ZN11QWebHistory4backEv @ 64 NONAME - _ZN11QWebHistory5clearEv @ 65 NONAME - _ZN11QWebHistory7forwardEv @ 66 NONAME - _ZN11QWebHistory8goToItemERK15QWebHistoryItem @ 67 NONAME - _ZN11QWebHistoryC1Ev @ 68 NONAME - _ZN11QWebHistoryC2Ev @ 69 NONAME - _ZN11QWebHistoryD1Ev @ 70 NONAME - _ZN11QWebHistoryD2Ev @ 71 NONAME - _ZN12QWebDatabase14removeDatabaseERKS_ @ 72 NONAME - _ZN12QWebDatabase18removeAllDatabasesEv @ 73 NONAME - _ZN12QWebDatabaseC1EP19QWebDatabasePrivate @ 74 NONAME - _ZN12QWebDatabaseC1ERKS_ @ 75 NONAME - _ZN12QWebDatabaseC2EP19QWebDatabasePrivate @ 76 NONAME - _ZN12QWebDatabaseC2ERKS_ @ 77 NONAME - _ZN12QWebDatabaseD1Ev @ 78 NONAME - _ZN12QWebDatabaseD2Ev @ 79 NONAME - _ZN12QWebDatabaseaSERKS_ @ 80 NONAME - _ZN12QWebSettings10iconForUrlERK4QUrl @ 81 NONAME - _ZN12QWebSettings10webGraphicENS_10WebGraphicE @ 82 NONAME - _ZN12QWebSettings11setFontSizeENS_8FontSizeEi @ 83 NONAME - _ZN12QWebSettings12setAttributeENS_12WebAttributeEb @ 84 NONAME - _ZN12QWebSettings13resetFontSizeENS_8FontSizeE @ 85 NONAME - _ZN12QWebSettings13setFontFamilyENS_10FontFamilyERK7QString @ 86 NONAME - _ZN12QWebSettings13setWebGraphicENS_10WebGraphicERK7QPixmap @ 87 NONAME - _ZN12QWebSettings14globalSettingsEv @ 88 NONAME - _ZN12QWebSettings14pluginDatabaseEv @ 89 NONAME ABSENT - _ZN12QWebSettings14resetAttributeENS_12WebAttributeE @ 90 NONAME - _ZN12QWebSettings15resetFontFamilyENS_10FontFamilyE @ 91 NONAME - _ZN12QWebSettings16iconDatabasePathEv @ 92 NONAME - _ZN12QWebSettings17clearIconDatabaseEv @ 93 NONAME - _ZN12QWebSettings17clearMemoryCachesEv @ 94 NONAME - _ZN12QWebSettings18offlineStoragePathEv @ 95 NONAME - _ZN12QWebSettings19maximumPagesInCacheEv @ 96 NONAME - _ZN12QWebSettings19setIconDatabasePathERK7QString @ 97 NONAME - _ZN12QWebSettings19setLocalStoragePathERK7QString @ 98 NONAME - _ZN12QWebSettings20setUserStyleSheetUrlERK4QUrl @ 99 NONAME - _ZN12QWebSettings21setOfflineStoragePathERK7QString @ 100 NONAME - _ZN12QWebSettings22setDefaultTextEncodingERK7QString @ 101 NONAME - _ZN12QWebSettings22setMaximumPagesInCacheEi @ 102 NONAME - _ZN12QWebSettings23enablePersistentStorageERK7QString @ 103 NONAME - _ZN12QWebSettings24setObjectCacheCapacitiesEiii @ 104 NONAME - _ZN12QWebSettings26offlineStorageDefaultQuotaEv @ 105 NONAME - _ZN12QWebSettings29setOfflineStorageDefaultQuotaEx @ 106 NONAME - _ZN12QWebSettings30offlineWebApplicationCachePathEv @ 107 NONAME - _ZN12QWebSettings31offlineWebApplicationCacheQuotaEv @ 108 NONAME - _ZN12QWebSettings33setOfflineWebApplicationCachePathERK7QString @ 109 NONAME - _ZN12QWebSettings34setOfflineWebApplicationCacheQuotaEx @ 110 NONAME - _ZN12QWebSettingsC1EPN7WebCore8SettingsE @ 111 NONAME - _ZN12QWebSettingsC1Ev @ 112 NONAME - _ZN12QWebSettingsC2EPN7WebCore8SettingsE @ 113 NONAME - _ZN12QWebSettingsC2Ev @ 114 NONAME - _ZN12QWebSettingsD1Ev @ 115 NONAME - _ZN12QWebSettingsD2Ev @ 116 NONAME - _ZN13QWebInspector11qt_metacallEN11QMetaObject4CallEiPPv @ 117 NONAME - _ZN13QWebInspector11qt_metacastEPKc @ 118 NONAME - _ZN13QWebInspector11resizeEventEP12QResizeEvent @ 119 NONAME - _ZN13QWebInspector16staticMetaObjectE @ 120 NONAME DATA 16 - _ZN13QWebInspector18windowTitleChangedERK7QString @ 121 NONAME ABSENT - _ZN13QWebInspector19getStaticMetaObjectEv @ 122 NONAME - _ZN13QWebInspector5eventEP6QEvent @ 123 NONAME - _ZN13QWebInspector7setPageEP8QWebPage @ 124 NONAME - _ZN13QWebInspector9hideEventEP10QHideEvent @ 125 NONAME - _ZN13QWebInspector9showEventEP10QShowEvent @ 126 NONAME - _ZN13QWebInspectorC1EP7QWidget @ 127 NONAME - _ZN13QWebInspectorC2EP7QWidget @ 128 NONAME - _ZN13QWebInspectorD0Ev @ 129 NONAME - _ZN13QWebInspectorD1Ev @ 130 NONAME - _ZN13QWebInspectorD2Ev @ 131 NONAME - _ZN14QWebPluginInfo10setEnabledEb @ 132 NONAME - _ZN14QWebPluginInfoC1EPN7WebCore13PluginPackageE @ 133 NONAME - _ZN14QWebPluginInfoC1ERKS_ @ 134 NONAME - _ZN14QWebPluginInfoC1Ev @ 135 NONAME - _ZN14QWebPluginInfoC2EPN7WebCore13PluginPackageE @ 136 NONAME - _ZN14QWebPluginInfoC2ERKS_ @ 137 NONAME - _ZN14QWebPluginInfoC2Ev @ 138 NONAME - _ZN14QWebPluginInfoD1Ev @ 139 NONAME - _ZN14QWebPluginInfoD2Ev @ 140 NONAME - _ZN14QWebPluginInfoaSERKS_ @ 141 NONAME - _ZN15QWebHistoryItem11setUserDataERK8QVariant @ 142 NONAME - _ZN15QWebHistoryItemC1EP22QWebHistoryItemPrivate @ 143 NONAME - _ZN15QWebHistoryItemC1ERKS_ @ 144 NONAME - _ZN15QWebHistoryItemC2EP22QWebHistoryItemPrivate @ 145 NONAME - _ZN15QWebHistoryItemC2ERKS_ @ 146 NONAME - _ZN15QWebHistoryItemD1Ev @ 147 NONAME - _ZN15QWebHistoryItemD2Ev @ 148 NONAME - _ZN15QWebHistoryItemaSERKS_ @ 149 NONAME - _ZN16QGraphicsWebView10loadFailedEv @ 150 NONAME ABSENT - _ZN16QGraphicsWebView10sceneEventEP6QEvent @ 151 NONAME - _ZN16QGraphicsWebView10setContentERK10QByteArrayRK7QStringRK4QUrl @ 152 NONAME - _ZN16QGraphicsWebView10urlChangedERK4QUrl @ 153 NONAME - _ZN16QGraphicsWebView10wheelEventEP24QGraphicsSceneWheelEvent @ 154 NONAME - _ZN16QGraphicsWebView11iconChangedEv @ 155 NONAME - _ZN16QGraphicsWebView11loadStartedEv @ 156 NONAME - _ZN16QGraphicsWebView11qt_metacallEN11QMetaObject4CallEiPPv @ 157 NONAME - _ZN16QGraphicsWebView11qt_metacastEPKc @ 158 NONAME - _ZN16QGraphicsWebView11setGeometryERK6QRectF @ 159 NONAME - _ZN16QGraphicsWebView12focusInEventEP11QFocusEvent @ 160 NONAME - _ZN16QGraphicsWebView12loadFinishedEv @ 161 NONAME ABSENT - _ZN16QGraphicsWebView12titleChangedERK7QString @ 162 NONAME - _ZN16QGraphicsWebView13dragMoveEventEP27QGraphicsSceneDragDropEvent @ 163 NONAME - _ZN16QGraphicsWebView13focusOutEventEP11QFocusEvent @ 164 NONAME - _ZN16QGraphicsWebView13keyPressEventEP9QKeyEvent @ 165 NONAME - _ZN16QGraphicsWebView13setZoomFactorEf @ 166 NONAME - _ZN16QGraphicsWebView13statusChangedEv @ 167 NONAME ABSENT - _ZN16QGraphicsWebView14dragEnterEventEP27QGraphicsSceneDragDropEvent @ 168 NONAME - _ZN16QGraphicsWebView14dragLeaveEventEP27QGraphicsSceneDragDropEvent @ 169 NONAME - _ZN16QGraphicsWebView14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 170 NONAME - _ZN16QGraphicsWebView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 171 NONAME - _ZN16QGraphicsWebView14setInteractiveEb @ 172 NONAME ABSENT - _ZN16QGraphicsWebView14updateGeometryEv @ 173 NONAME - _ZN16QGraphicsWebView15hoverLeaveEventEP24QGraphicsSceneHoverEvent @ 174 NONAME - _ZN16QGraphicsWebView15keyReleaseEventEP9QKeyEvent @ 175 NONAME - _ZN16QGraphicsWebView15mousePressEventEP24QGraphicsSceneMouseEvent @ 176 NONAME - _ZN16QGraphicsWebView15progressChangedEf @ 177 NONAME ABSENT - _ZN16QGraphicsWebView16contextMenuEventEP30QGraphicsSceneContextMenuEvent @ 178 NONAME - _ZN16QGraphicsWebView16inputMethodEventEP17QInputMethodEvent @ 179 NONAME - _ZN16QGraphicsWebView16staticMetaObjectE @ 180 NONAME DATA 16 - _ZN16QGraphicsWebView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 181 NONAME - _ZN16QGraphicsWebView17zoomFactorChangedEv @ 182 NONAME ABSENT - _ZN16QGraphicsWebView18focusNextPrevChildEb @ 183 NONAME - _ZN16QGraphicsWebView19getStaticMetaObjectEv @ 184 NONAME - _ZN16QGraphicsWebView20interactivityChangedEv @ 185 NONAME ABSENT - _ZN16QGraphicsWebView21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 186 NONAME - _ZN16QGraphicsWebView4backEv @ 187 NONAME - _ZN16QGraphicsWebView4loadERK15QNetworkRequestN21QNetworkAccessManager9OperationERK10QByteArray @ 188 NONAME - _ZN16QGraphicsWebView4loadERK4QUrl @ 189 NONAME - _ZN16QGraphicsWebView4stopEv @ 190 NONAME - _ZN16QGraphicsWebView5eventEP6QEvent @ 191 NONAME - _ZN16QGraphicsWebView5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 192 NONAME - _ZN16QGraphicsWebView6reloadEv @ 193 NONAME - _ZN16QGraphicsWebView6setUrlERK4QUrl @ 194 NONAME - _ZN16QGraphicsWebView7forwardEv @ 195 NONAME - _ZN16QGraphicsWebView7setHtmlERK7QStringRK4QUrl @ 196 NONAME - _ZN16QGraphicsWebView7setPageEP8QWebPage @ 197 NONAME - _ZN16QGraphicsWebView9dropEventEP27QGraphicsSceneDragDropEvent @ 198 NONAME - _ZN16QGraphicsWebViewC1EP13QGraphicsItem @ 199 NONAME - _ZN16QGraphicsWebViewC2EP13QGraphicsItem @ 200 NONAME - _ZN16QGraphicsWebViewD0Ev @ 201 NONAME - _ZN16QGraphicsWebViewD1Ev @ 202 NONAME - _ZN16QGraphicsWebViewD2Ev @ 203 NONAME - _ZN17QWebHitTestResultC1EP24QWebHitTestResultPrivate @ 204 NONAME - _ZN17QWebHitTestResultC1ERKS_ @ 205 NONAME - _ZN17QWebHitTestResultC1Ev @ 206 NONAME - _ZN17QWebHitTestResultC2EP24QWebHitTestResultPrivate @ 207 NONAME - _ZN17QWebHitTestResultC2ERKS_ @ 208 NONAME - _ZN17QWebHitTestResultC2Ev @ 209 NONAME - _ZN17QWebHitTestResultD1Ev @ 210 NONAME - _ZN17QWebHitTestResultD2Ev @ 211 NONAME - _ZN17QWebHitTestResultaSERKS_ @ 212 NONAME - _ZN17QWebPluginFactory11qt_metacallEN11QMetaObject4CallEiPPv @ 213 NONAME - _ZN17QWebPluginFactory11qt_metacastEPKc @ 214 NONAME - _ZN17QWebPluginFactory14refreshPluginsEv @ 215 NONAME - _ZN17QWebPluginFactory16staticMetaObjectE @ 216 NONAME DATA 16 - _ZN17QWebPluginFactory19getStaticMetaObjectEv @ 217 NONAME - _ZN17QWebPluginFactory9extensionENS_9ExtensionEPKNS_15ExtensionOptionEPNS_15ExtensionReturnE @ 218 NONAME - _ZN17QWebPluginFactoryC2EP7QObject @ 219 NONAME - _ZN17QWebPluginFactoryD0Ev @ 220 NONAME - _ZN17QWebPluginFactoryD1Ev @ 221 NONAME - _ZN17QWebPluginFactoryD2Ev @ 222 NONAME - _ZN18QWebPluginDatabase11qt_metacallEN11QMetaObject4CallEiPPv @ 223 NONAME - _ZN18QWebPluginDatabase11qt_metacastEPKc @ 224 NONAME - _ZN18QWebPluginDatabase13addSearchPathERK7QString @ 225 NONAME - _ZN18QWebPluginDatabase14setSearchPathsERK11QStringList @ 226 NONAME - _ZN18QWebPluginDatabase16staticMetaObjectE @ 227 NONAME DATA 16 - _ZN18QWebPluginDatabase17pluginForMimeTypeERK7QString @ 228 NONAME - _ZN18QWebPluginDatabase18defaultSearchPathsEv @ 229 NONAME - _ZN18QWebPluginDatabase19getStaticMetaObjectEv @ 230 NONAME - _ZN18QWebPluginDatabase29setPreferredPluginForMimeTypeERK7QStringRK14QWebPluginInfo @ 231 NONAME - _ZN18QWebPluginDatabase7refreshEv @ 232 NONAME - _ZN18QWebPluginDatabaseC1EP7QObject @ 233 NONAME - _ZN18QWebPluginDatabaseC2EP7QObject @ 234 NONAME - _ZN18QWebPluginDatabaseD0Ev @ 235 NONAME - _ZN18QWebPluginDatabaseD1Ev @ 236 NONAME - _ZN18QWebPluginDatabaseD2Ev @ 237 NONAME - _ZN18QWebSecurityOrigin10allOriginsEv @ 238 NONAME - _ZN18QWebSecurityOrigin12localSchemesEv @ 239 NONAME - _ZN18QWebSecurityOrigin14addLocalSchemeERK7QString @ 240 NONAME - _ZN18QWebSecurityOrigin16setDatabaseQuotaEx @ 241 NONAME - _ZN18QWebSecurityOrigin17removeLocalSchemeERK7QString @ 242 NONAME - _ZN18QWebSecurityOrigin25whiteListAccessFromOriginERK7QStringS2_S2_b @ 243 NONAME ABSENT - _ZN18QWebSecurityOrigin27resetOriginAccessWhiteListsEv @ 244 NONAME ABSENT - _ZN18QWebSecurityOriginC1EP25QWebSecurityOriginPrivate @ 245 NONAME - _ZN18QWebSecurityOriginC1ERKS_ @ 246 NONAME - _ZN18QWebSecurityOriginC2EP25QWebSecurityOriginPrivate @ 247 NONAME - _ZN18QWebSecurityOriginC2ERKS_ @ 248 NONAME - _ZN18QWebSecurityOriginD1Ev @ 249 NONAME - _ZN18QWebSecurityOriginD2Ev @ 250 NONAME - _ZN18QWebSecurityOriginaSERKS_ @ 251 NONAME - _ZN20QWebHistoryInterface11qt_metacallEN11QMetaObject4CallEiPPv @ 252 NONAME - _ZN20QWebHistoryInterface11qt_metacastEPKc @ 253 NONAME - _ZN20QWebHistoryInterface16defaultInterfaceEv @ 254 NONAME - _ZN20QWebHistoryInterface16staticMetaObjectE @ 255 NONAME DATA 16 - _ZN20QWebHistoryInterface19getStaticMetaObjectEv @ 256 NONAME - _ZN20QWebHistoryInterface19setDefaultInterfaceEPS_ @ 257 NONAME - _ZN20QWebHistoryInterfaceC2EP7QObject @ 258 NONAME - _ZN20QWebHistoryInterfaceD0Ev @ 259 NONAME - _ZN20QWebHistoryInterfaceD1Ev @ 260 NONAME - _ZN20QWebHistoryInterfaceD2Ev @ 261 NONAME - _ZN8QWebPage10chooseFileEP9QWebFrameRK7QString @ 262 NONAME - _ZN8QWebPage10setPaletteERK8QPalette @ 263 NONAME - _ZN8QWebPage11linkClickedERK4QUrl @ 264 NONAME - _ZN8QWebPage11linkHoveredERK7QStringS2_S2_ @ 265 NONAME - _ZN8QWebPage11loadStartedEv @ 266 NONAME - _ZN8QWebPage11qt_metacallEN11QMetaObject4CallEiPPv @ 267 NONAME - _ZN8QWebPage11qt_metacastEPKc @ 268 NONAME - _ZN8QWebPage12createPluginERK7QStringRK4QUrlRK11QStringListS8_ @ 269 NONAME - _ZN8QWebPage12createWindowENS_13WebWindowTypeE @ 270 NONAME - _ZN8QWebPage12frameCreatedEP9QWebFrame @ 271 NONAME - _ZN8QWebPage12loadFinishedEb @ 272 NONAME - _ZN8QWebPage12loadProgressEi @ 273 NONAME - _ZN8QWebPage13triggerActionENS_9WebActionEb @ 274 NONAME - _ZN8QWebPage14printRequestedEP9QWebFrame @ 275 NONAME - _ZN8QWebPage15contentsChangedEv @ 276 NONAME - _ZN8QWebPage15javaScriptAlertEP9QWebFrameRK7QString @ 277 NONAME - _ZN8QWebPage15scrollRequestedEiiRK5QRect @ 278 NONAME - _ZN8QWebPage16javaScriptPromptEP9QWebFrameRK7QStringS4_PS2_ @ 279 NONAME - _ZN8QWebPage16repaintRequestedERK5QRect @ 280 NONAME - _ZN8QWebPage16selectionChangedEv @ 281 NONAME - _ZN8QWebPage16setPluginFactoryEP17QWebPluginFactory @ 282 NONAME - _ZN8QWebPage16staticMetaObjectE @ 283 NONAME DATA 16 - _ZN8QWebPage16statusBarMessageERK7QString @ 284 NONAME - _ZN8QWebPage17downloadRequestedERK15QNetworkRequest @ 285 NONAME - _ZN8QWebPage17javaScriptConfirmEP9QWebFrameRK7QString @ 286 NONAME - _ZN8QWebPage17microFocusChangedEv @ 287 NONAME - _ZN8QWebPage18focusNextPrevChildEb @ 288 NONAME - _ZN8QWebPage18setContentEditableEb @ 289 NONAME - _ZN8QWebPage18unsupportedContentEP13QNetworkReply @ 290 NONAME - _ZN8QWebPage19getStaticMetaObjectEv @ 291 NONAME - _ZN8QWebPage20windowCloseRequestedEv @ 292 NONAME - _ZN8QWebPage21databaseQuotaExceededEP9QWebFrame7QString @ 293 NONAME - _ZN8QWebPage21webInspectorTriggeredERK11QWebElement @ 294 NONAME ABSENT - _ZN8QWebPage23acceptNavigationRequestEP9QWebFrameRK15QNetworkRequestNS_14NavigationTypeE @ 295 NONAME - _ZN8QWebPage23geometryChangeRequestedERK5QRect @ 296 NONAME - _ZN8QWebPage23saveFrameStateRequestedEP9QWebFrameP15QWebHistoryItem @ 297 NONAME - _ZN8QWebPage23setLinkDelegationPolicyENS_20LinkDelegationPolicyE @ 298 NONAME - _ZN8QWebPage23setNetworkAccessManagerEP21QNetworkAccessManager @ 299 NONAME - _ZN8QWebPage23swallowContextMenuEventEP17QContextMenuEvent @ 300 NONAME - _ZN8QWebPage24javaScriptConsoleMessageERK7QStringiS2_ @ 301 NONAME - _ZN8QWebPage25createStandardContextMenuEv @ 302 NONAME - _ZN8QWebPage25shouldInterruptJavaScriptEv @ 303 NONAME - _ZN8QWebPage26restoreFrameStateRequestedEP9QWebFrame @ 304 NONAME - _ZN8QWebPage28setForwardUnsupportedContentEb @ 305 NONAME - _ZN8QWebPage30updatePositionDependentActionsERK6QPoint @ 306 NONAME - _ZN8QWebPage32menuBarVisibilityChangeRequestedEb @ 307 NONAME - _ZN8QWebPage32toolBarVisibilityChangeRequestedEb @ 308 NONAME - _ZN8QWebPage34statusBarVisibilityChangeRequestedEb @ 309 NONAME - _ZN8QWebPage5eventEP6QEvent @ 310 NONAME - _ZN8QWebPage7setViewEP7QWidget @ 311 NONAME - _ZN8QWebPage8findTextERK7QString6QFlagsINS_8FindFlagEE @ 312 NONAME - _ZN8QWebPage9extensionENS_9ExtensionEPKNS_15ExtensionOptionEPNS_15ExtensionReturnE @ 313 NONAME - _ZN8QWebPageC1EP7QObject @ 314 NONAME - _ZN8QWebPageC2EP7QObject @ 315 NONAME - _ZN8QWebPageD0Ev @ 316 NONAME - _ZN8QWebPageD1Ev @ 317 NONAME - _ZN8QWebPageD2Ev @ 318 NONAME - _ZN8QWebView10paintEventEP11QPaintEvent @ 319 NONAME - _ZN8QWebView10setContentERK10QByteArrayRK7QStringRK4QUrl @ 320 NONAME - _ZN8QWebView10urlChangedERK4QUrl @ 321 NONAME - _ZN8QWebView10wheelEventEP11QWheelEvent @ 322 NONAME - _ZN8QWebView11changeEventEP6QEvent @ 323 NONAME - _ZN8QWebView11iconChangedEv @ 324 NONAME - _ZN8QWebView11linkClickedERK4QUrl @ 325 NONAME - _ZN8QWebView11loadStartedEv @ 326 NONAME - _ZN8QWebView11qt_metacallEN11QMetaObject4CallEiPPv @ 327 NONAME - _ZN8QWebView11qt_metacastEPKc @ 328 NONAME - _ZN8QWebView11resizeEventEP12QResizeEvent @ 329 NONAME - _ZN8QWebView12createWindowEN8QWebPage13WebWindowTypeE @ 330 NONAME - _ZN8QWebView12focusInEventEP11QFocusEvent @ 331 NONAME - _ZN8QWebView12loadFinishedEb @ 332 NONAME - _ZN8QWebView12loadProgressEi @ 333 NONAME - _ZN8QWebView12titleChangedERK7QString @ 334 NONAME - _ZN8QWebView13dragMoveEventEP14QDragMoveEvent @ 335 NONAME - _ZN8QWebView13focusOutEventEP11QFocusEvent @ 336 NONAME - _ZN8QWebView13keyPressEventEP9QKeyEvent @ 337 NONAME - _ZN8QWebView13setRenderHintEN8QPainter10RenderHintEb @ 338 NONAME - _ZN8QWebView13setZoomFactorEf @ 339 NONAME - _ZN8QWebView14dragEnterEventEP15QDragEnterEvent @ 340 NONAME - _ZN8QWebView14dragLeaveEventEP15QDragLeaveEvent @ 341 NONAME - _ZN8QWebView14mouseMoveEventEP11QMouseEvent @ 342 NONAME - _ZN8QWebView14setRenderHintsE6QFlagsIN8QPainter10RenderHintEE @ 343 NONAME - _ZN8QWebView15keyReleaseEventEP9QKeyEvent @ 344 NONAME - _ZN8QWebView15mousePressEventEP11QMouseEvent @ 345 NONAME - _ZN8QWebView16contextMenuEventEP17QContextMenuEvent @ 346 NONAME - _ZN8QWebView16inputMethodEventEP17QInputMethodEvent @ 347 NONAME - _ZN8QWebView16selectionChangedEv @ 348 NONAME - _ZN8QWebView16staticMetaObjectE @ 349 NONAME DATA 16 - _ZN8QWebView16statusBarMessageERK7QString @ 350 NONAME - _ZN8QWebView17mouseReleaseEventEP11QMouseEvent @ 351 NONAME - _ZN8QWebView17triggerPageActionEN8QWebPage9WebActionEb @ 352 NONAME - _ZN8QWebView18focusNextPrevChildEb @ 353 NONAME - _ZN8QWebView18guessUrlFromStringERK7QString @ 354 NONAME ABSENT - _ZN8QWebView19getStaticMetaObjectEv @ 355 NONAME - _ZN8QWebView21mouseDoubleClickEventEP11QMouseEvent @ 356 NONAME - _ZN8QWebView21setTextSizeMultiplierEf @ 357 NONAME - _ZN8QWebView4backEv @ 358 NONAME - _ZN8QWebView4loadERK15QNetworkRequestN21QNetworkAccessManager9OperationERK10QByteArray @ 359 NONAME - _ZN8QWebView4loadERK4QUrl @ 360 NONAME - _ZN8QWebView4stopEv @ 361 NONAME - _ZN8QWebView5eventEP6QEvent @ 362 NONAME - _ZN8QWebView6reloadEv @ 363 NONAME - _ZN8QWebView6setUrlERK4QUrl @ 364 NONAME - _ZN8QWebView7forwardEv @ 365 NONAME - _ZN8QWebView7setHtmlERK7QStringRK4QUrl @ 366 NONAME - _ZN8QWebView7setPageEP8QWebPage @ 367 NONAME - _ZN8QWebView8findTextERK7QString6QFlagsIN8QWebPage8FindFlagEE @ 368 NONAME - _ZN8QWebView9dropEventEP10QDropEvent @ 369 NONAME - _ZN8QWebViewC1EP7QWidget @ 370 NONAME - _ZN8QWebViewC2EP7QWidget @ 371 NONAME - _ZN8QWebViewD0Ev @ 372 NONAME - _ZN8QWebViewD1Ev @ 373 NONAME - _ZN8QWebViewD2Ev @ 374 NONAME - _ZN9QWebFrame10setContentERK10QByteArrayRK7QStringRK4QUrl @ 375 NONAME - _ZN9QWebFrame10urlChangedERK4QUrl @ 376 NONAME - _ZN9QWebFrame11iconChangedEv @ 377 NONAME - _ZN9QWebFrame11loadStartedEv @ 378 NONAME - _ZN9QWebFrame11qt_metacallEN11QMetaObject4CallEiPPv @ 379 NONAME - _ZN9QWebFrame11qt_metacastEPKc @ 380 NONAME - _ZN9QWebFrame12loadFinishedEb @ 381 NONAME - _ZN9QWebFrame12titleChangedERK7QString @ 382 NONAME - _ZN9QWebFrame13setZoomFactorEf @ 383 NONAME - _ZN9QWebFrame15provisionalLoadEv @ 384 NONAME - _ZN9QWebFrame16staticMetaObjectE @ 385 NONAME DATA 16 - _ZN9QWebFrame17setScrollBarValueEN2Qt11OrientationEi @ 386 NONAME - _ZN9QWebFrame17setScrollPositionERK6QPoint @ 387 NONAME - _ZN9QWebFrame18evaluateJavaScriptERK7QString @ 388 NONAME - _ZN9QWebFrame18setScrollBarPolicyEN2Qt11OrientationENS0_15ScrollBarPolicyE @ 389 NONAME - _ZN9QWebFrame19contentsSizeChangedERK5QSize @ 390 NONAME - _ZN9QWebFrame19getStaticMetaObjectEv @ 391 NONAME - _ZN9QWebFrame21setTextSizeMultiplierEf @ 392 NONAME - _ZN9QWebFrame22initialLayoutCompletedEv @ 393 NONAME - _ZN9QWebFrame23setClipRenderToViewportEb @ 394 NONAME ABSENT - _ZN9QWebFrame27addToJavaScriptWindowObjectERK7QStringP7QObject @ 395 NONAME - _ZN9QWebFrame27addToJavaScriptWindowObjectERK7QStringP7QObjectN13QScriptEngine14ValueOwnershipE @ 396 NONAME - _ZN9QWebFrame29javaScriptWindowObjectClearedEv @ 397 NONAME - _ZN9QWebFrame4loadERK15QNetworkRequestN21QNetworkAccessManager9OperationERK10QByteArray @ 398 NONAME - _ZN9QWebFrame4loadERK4QUrl @ 399 NONAME - _ZN9QWebFrame5eventEP6QEvent @ 400 NONAME - _ZN9QWebFrame6renderEP8QPainter @ 401 NONAME - _ZN9QWebFrame6renderEP8QPainterRK7QRegion @ 402 NONAME - _ZN9QWebFrame6scrollEii @ 403 NONAME - _ZN9QWebFrame6setUrlERK4QUrl @ 404 NONAME - _ZN9QWebFrame7setHtmlERK7QStringRK4QUrl @ 405 NONAME - _ZN9QWebFrame8setFocusEv @ 406 NONAME - _ZN9QWebFrameC1EP8QWebPageP13QWebFrameData @ 407 NONAME - _ZN9QWebFrameC1EPS_P13QWebFrameData @ 408 NONAME - _ZN9QWebFrameC2EP8QWebPageP13QWebFrameData @ 409 NONAME - _ZN9QWebFrameC2EPS_P13QWebFrameData @ 410 NONAME - _ZN9QWebFrameD0Ev @ 411 NONAME - _ZN9QWebFrameD1Ev @ 412 NONAME - _ZN9QWebFrameD2Ev @ 413 NONAME - _ZNK11QWebElement10firstChildEv @ 414 NONAME - _ZNK11QWebElement10toInnerXmlEv @ 415 NONAME - _ZNK11QWebElement10toOuterXmlEv @ 416 NONAME - _ZNK11QWebElement11attributeNSERK7QStringS2_S2_ @ 417 NONAME - _ZNK11QWebElement11nextSiblingEv @ 418 NONAME - _ZNK11QWebElement11toPlainTextEv @ 419 NONAME - _ZNK11QWebElement12hasAttributeERK7QString @ 420 NONAME - _ZNK11QWebElement12namespaceUriEv @ 421 NONAME - _ZNK11QWebElement13hasAttributesEv @ 422 NONAME - _ZNK11QWebElement13stylePropertyERK7QStringNS_20StyleResolveStrategyE @ 423 NONAME - _ZNK11QWebElement14hasAttributeNSERK7QStringS2_ @ 424 NONAME - _ZNK11QWebElement15previousSiblingEv @ 425 NONAME - _ZNK11QWebElement5cloneEv @ 426 NONAME - _ZNK11QWebElement6isNullEv @ 427 NONAME - _ZNK11QWebElement6parentEv @ 428 NONAME - _ZNK11QWebElement6prefixEv @ 429 NONAME - _ZNK11QWebElement7classesEv @ 430 NONAME - _ZNK11QWebElement7findAllERK7QString @ 431 NONAME - _ZNK11QWebElement7tagNameEv @ 432 NONAME - _ZNK11QWebElement8documentEv @ 433 NONAME - _ZNK11QWebElement8geometryEv @ 434 NONAME - _ZNK11QWebElement8hasClassERK7QString @ 435 NONAME - _ZNK11QWebElement8hasFocusEv @ 436 NONAME - _ZNK11QWebElement8webFrameEv @ 437 NONAME - _ZNK11QWebElement9attributeERK7QStringS2_ @ 438 NONAME - _ZNK11QWebElement9findFirstERK7QString @ 439 NONAME - _ZNK11QWebElement9lastChildEv @ 440 NONAME - _ZNK11QWebElement9localNameEv @ 441 NONAME - _ZNK11QWebElementeqERKS_ @ 442 NONAME - _ZNK11QWebElementneERKS_ @ 443 NONAME - _ZNK11QWebHistory11currentItemEv @ 444 NONAME - _ZNK11QWebHistory11forwardItemEv @ 445 NONAME - _ZNK11QWebHistory12canGoForwardEv @ 446 NONAME - _ZNK11QWebHistory12forwardItemsEi @ 447 NONAME - _ZNK11QWebHistory16currentItemIndexEv @ 448 NONAME - _ZNK11QWebHistory16maximumItemCountEv @ 449 NONAME - _ZNK11QWebHistory5countEv @ 450 NONAME - _ZNK11QWebHistory5itemsEv @ 451 NONAME - _ZNK11QWebHistory6itemAtEi @ 452 NONAME - _ZNK11QWebHistory8backItemEv @ 453 NONAME - _ZNK11QWebHistory9backItemsEi @ 454 NONAME - _ZNK11QWebHistory9canGoBackEv @ 455 NONAME - _ZNK11QWebHistory9saveStateENS_19HistoryStateVersionE @ 456 NONAME ABSENT - _ZNK12QWebDatabase11displayNameEv @ 457 NONAME - _ZNK12QWebDatabase12expectedSizeEv @ 458 NONAME - _ZNK12QWebDatabase4nameEv @ 459 NONAME - _ZNK12QWebDatabase4sizeEv @ 460 NONAME - _ZNK12QWebDatabase6originEv @ 461 NONAME - _ZNK12QWebDatabase8fileNameEv @ 462 NONAME - _ZNK12QWebSettings10fontFamilyENS_10FontFamilyE @ 463 NONAME - _ZNK12QWebSettings13testAttributeENS_12WebAttributeE @ 464 NONAME - _ZNK12QWebSettings16localStoragePathEv @ 465 NONAME - _ZNK12QWebSettings17userStyleSheetUrlEv @ 466 NONAME - _ZNK12QWebSettings19defaultTextEncodingEv @ 467 NONAME - _ZNK12QWebSettings8fontSizeENS_8FontSizeE @ 468 NONAME - _ZNK13QWebInspector10metaObjectEv @ 469 NONAME - _ZNK13QWebInspector4pageEv @ 470 NONAME - _ZNK13QWebInspector8sizeHintEv @ 471 NONAME - _ZNK14QWebPluginInfo11descriptionEv @ 472 NONAME - _ZNK14QWebPluginInfo16supportsMimeTypeERK7QString @ 473 NONAME - _ZNK14QWebPluginInfo4nameEv @ 474 NONAME - _ZNK14QWebPluginInfo4pathEv @ 475 NONAME - _ZNK14QWebPluginInfo6isNullEv @ 476 NONAME - _ZNK14QWebPluginInfo9isEnabledEv @ 477 NONAME - _ZNK14QWebPluginInfo9mimeTypesEv @ 478 NONAME - _ZNK14QWebPluginInfoeqERKS_ @ 479 NONAME - _ZNK14QWebPluginInfoneERKS_ @ 480 NONAME - _ZNK15QWebHistoryItem11lastVisitedEv @ 481 NONAME - _ZNK15QWebHistoryItem11originalUrlEv @ 482 NONAME - _ZNK15QWebHistoryItem3urlEv @ 483 NONAME - _ZNK15QWebHistoryItem4iconEv @ 484 NONAME - _ZNK15QWebHistoryItem5titleEv @ 485 NONAME - _ZNK15QWebHistoryItem7isValidEv @ 486 NONAME - _ZNK15QWebHistoryItem8userDataEv @ 487 NONAME - _ZNK16QGraphicsWebView10metaObjectEv @ 488 NONAME - _ZNK16QGraphicsWebView10zoomFactorEv @ 489 NONAME - _ZNK16QGraphicsWebView13isInteractiveEv @ 490 NONAME ABSENT - _ZNK16QGraphicsWebView3urlEv @ 491 NONAME - _ZNK16QGraphicsWebView4iconEv @ 492 NONAME - _ZNK16QGraphicsWebView4pageEv @ 493 NONAME - _ZNK16QGraphicsWebView5titleEv @ 494 NONAME - _ZNK16QGraphicsWebView6statusEv @ 495 NONAME ABSENT - _ZNK16QGraphicsWebView6toHtmlEv @ 496 NONAME ABSENT - _ZNK16QGraphicsWebView7historyEv @ 497 NONAME - _ZNK16QGraphicsWebView8progressEv @ 498 NONAME ABSENT - _ZNK16QGraphicsWebView8settingsEv @ 499 NONAME - _ZNK17QWebHitTestResult11linkElementEv @ 500 NONAME - _ZNK17QWebHitTestResult12boundingRectEv @ 501 NONAME - _ZNK17QWebHitTestResult13alternateTextEv @ 502 NONAME - _ZNK17QWebHitTestResult15linkTargetFrameEv @ 503 NONAME - _ZNK17QWebHitTestResult17isContentEditableEv @ 504 NONAME - _ZNK17QWebHitTestResult17isContentSelectedEv @ 505 NONAME - _ZNK17QWebHitTestResult21enclosingBlockElementEv @ 506 NONAME - _ZNK17QWebHitTestResult3posEv @ 507 NONAME - _ZNK17QWebHitTestResult5frameEv @ 508 NONAME - _ZNK17QWebHitTestResult5titleEv @ 509 NONAME - _ZNK17QWebHitTestResult6isNullEv @ 510 NONAME - _ZNK17QWebHitTestResult6pixmapEv @ 511 NONAME - _ZNK17QWebHitTestResult7elementEv @ 512 NONAME - _ZNK17QWebHitTestResult7linkUrlEv @ 513 NONAME - _ZNK17QWebHitTestResult8imageUrlEv @ 514 NONAME - _ZNK17QWebHitTestResult8linkTextEv @ 515 NONAME - _ZNK17QWebHitTestResult9linkTitleEv @ 516 NONAME - _ZNK17QWebPluginFactory10metaObjectEv @ 517 NONAME - _ZNK17QWebPluginFactory17supportsExtensionENS_9ExtensionE @ 518 NONAME - _ZNK17QWebPluginFactory8MimeTypeeqERKS0_ @ 519 NONAME - _ZNK18QWebPluginDatabase10metaObjectEv @ 520 NONAME - _ZNK18QWebPluginDatabase11searchPathsEv @ 521 NONAME - _ZNK18QWebPluginDatabase7pluginsEv @ 522 NONAME - _ZNK18QWebSecurityOrigin13databaseQuotaEv @ 523 NONAME - _ZNK18QWebSecurityOrigin13databaseUsageEv @ 524 NONAME - _ZNK18QWebSecurityOrigin4hostEv @ 525 NONAME - _ZNK18QWebSecurityOrigin4portEv @ 526 NONAME - _ZNK18QWebSecurityOrigin6schemeEv @ 527 NONAME - _ZNK18QWebSecurityOrigin9databasesEv @ 528 NONAME - _ZNK20QWebHistoryInterface10metaObjectEv @ 529 NONAME - _ZNK8QWebPage10isModifiedEv @ 530 NONAME - _ZNK8QWebPage10metaObjectEv @ 531 NONAME - _ZNK8QWebPage10totalBytesEv @ 532 NONAME - _ZNK8QWebPage12currentFrameEv @ 533 NONAME - _ZNK8QWebPage12selectedTextEv @ 534 NONAME - _ZNK8QWebPage12viewportSizeEv @ 535 NONAME - _ZNK8QWebPage13bytesReceivedEv @ 536 NONAME - _ZNK8QWebPage13pluginFactoryEv @ 537 NONAME - _ZNK8QWebPage15setViewportSizeERK5QSize @ 538 NONAME - _ZNK8QWebPage15userAgentForUrlERK4QUrl @ 539 NONAME - _ZNK8QWebPage16inputMethodQueryEN2Qt16InputMethodQueryE @ 540 NONAME - _ZNK8QWebPage17fixedContentsSizeEv @ 541 NONAME ABSENT - _ZNK8QWebPage17isContentEditableEv @ 542 NONAME - _ZNK8QWebPage17supportsExtensionENS_9ExtensionE @ 543 NONAME - _ZNK8QWebPage20linkDelegationPolicyEv @ 544 NONAME - _ZNK8QWebPage20networkAccessManagerEv @ 545 NONAME - _ZNK8QWebPage20setFixedContentsSizeERK5QSize @ 546 NONAME ABSENT - _ZNK8QWebPage25forwardUnsupportedContentEv @ 547 NONAME - _ZNK8QWebPage4viewEv @ 548 NONAME - _ZNK8QWebPage6actionENS_9WebActionE @ 549 NONAME - _ZNK8QWebPage7frameAtERK6QPoint @ 550 NONAME - _ZNK8QWebPage7historyEv @ 551 NONAME - _ZNK8QWebPage7paletteEv @ 552 NONAME - _ZNK8QWebPage8settingsEv @ 553 NONAME - _ZNK8QWebPage9mainFrameEv @ 554 NONAME - _ZNK8QWebPage9undoStackEv @ 555 NONAME - _ZNK8QWebView10isModifiedEv @ 556 NONAME - _ZNK8QWebView10metaObjectEv @ 557 NONAME - _ZNK8QWebView10pageActionEN8QWebPage9WebActionE @ 558 NONAME - _ZNK8QWebView10zoomFactorEv @ 559 NONAME - _ZNK8QWebView11renderHintsEv @ 560 NONAME - _ZNK8QWebView12selectedTextEv @ 561 NONAME - _ZNK8QWebView16inputMethodQueryEN2Qt16InputMethodQueryE @ 562 NONAME - _ZNK8QWebView18textSizeMultiplierEv @ 563 NONAME - _ZNK8QWebView3urlEv @ 564 NONAME - _ZNK8QWebView4iconEv @ 565 NONAME - _ZNK8QWebView4pageEv @ 566 NONAME - _ZNK8QWebView5printEP8QPrinter @ 567 NONAME - _ZNK8QWebView5titleEv @ 568 NONAME - _ZNK8QWebView7historyEv @ 569 NONAME - _ZNK8QWebView8settingsEv @ 570 NONAME - _ZNK8QWebView8sizeHintEv @ 571 NONAME - _ZNK9QWebFrame10metaObjectEv @ 572 NONAME - _ZNK9QWebFrame10zoomFactorEv @ 573 NONAME - _ZNK9QWebFrame11childFramesEv @ 574 NONAME - _ZNK9QWebFrame11parentFrameEv @ 575 NONAME - _ZNK9QWebFrame11toPlainTextEv @ 576 NONAME - _ZNK9QWebFrame12contentsSizeEv @ 577 NONAME - _ZNK9QWebFrame12requestedUrlEv @ 578 NONAME - _ZNK9QWebFrame14hitTestContentERK6QPoint @ 579 NONAME - _ZNK9QWebFrame14renderTreeDumpEv @ 580 NONAME - _ZNK9QWebFrame14scrollBarValueEN2Qt11OrientationE @ 581 NONAME - _ZNK9QWebFrame14scrollPositionEv @ 582 NONAME - _ZNK9QWebFrame14securityOriginEv @ 583 NONAME - _ZNK9QWebFrame15documentElementEv @ 584 NONAME - _ZNK9QWebFrame15findAllElementsERK7QString @ 585 NONAME - _ZNK9QWebFrame15scrollBarPolicyEN2Qt11OrientationE @ 586 NONAME - _ZNK9QWebFrame16findFirstElementERK7QString @ 587 NONAME - _ZNK9QWebFrame16scrollBarMaximumEN2Qt11OrientationE @ 588 NONAME - _ZNK9QWebFrame16scrollBarMinimumEN2Qt11OrientationE @ 589 NONAME - _ZNK9QWebFrame17scrollBarGeometryEN2Qt11OrientationE @ 590 NONAME - _ZNK9QWebFrame18textSizeMultiplierEv @ 591 NONAME - _ZNK9QWebFrame20clipRenderToViewportEv @ 592 NONAME ABSENT - _ZNK9QWebFrame3posEv @ 593 NONAME - _ZNK9QWebFrame3urlEv @ 594 NONAME - _ZNK9QWebFrame4iconEv @ 595 NONAME - _ZNK9QWebFrame4pageEv @ 596 NONAME - _ZNK9QWebFrame5titleEv @ 597 NONAME - _ZNK9QWebFrame6toHtmlEv @ 598 NONAME - _ZNK9QWebFrame7baseUrlEv @ 599 NONAME - _ZNK9QWebFrame8geometryEv @ 600 NONAME - _ZNK9QWebFrame8hasFocusEv @ 601 NONAME - _ZNK9QWebFrame8metaDataEv @ 602 NONAME - _ZNK9QWebFrame9frameNameEv @ 603 NONAME - _ZTI13QWebInspector @ 604 NONAME - _ZTI16QGraphicsWebView @ 605 NONAME - _ZTI17QWebPluginFactory @ 606 NONAME - _ZTI18QWebPluginDatabase @ 607 NONAME - _ZTI20QWebHistoryInterface @ 608 NONAME - _ZTI8QWebPage @ 609 NONAME - _ZTI8QWebView @ 610 NONAME - _ZTI9QWebFrame @ 611 NONAME - _ZTV13QWebInspector @ 612 NONAME - _ZTV16QGraphicsWebView @ 613 NONAME - _ZTV17QWebPluginFactory @ 614 NONAME - _ZTV18QWebPluginDatabase @ 615 NONAME - _ZTV20QWebHistoryInterface @ 616 NONAME - _ZTV8QWebPage @ 617 NONAME - _ZTV8QWebView @ 618 NONAME - _ZTV9QWebFrame @ 619 NONAME - _ZThn16_N16QGraphicsWebView11setGeometryERK6QRectF @ 620 NONAME - _ZThn16_N16QGraphicsWebView14updateGeometryEv @ 621 NONAME - _ZThn16_N16QGraphicsWebViewD0Ev @ 622 NONAME - _ZThn16_N16QGraphicsWebViewD1Ev @ 623 NONAME - _ZThn8_N13QWebInspectorD0Ev @ 624 NONAME - _ZThn8_N13QWebInspectorD1Ev @ 625 NONAME - _ZThn8_N16QGraphicsWebView10sceneEventEP6QEvent @ 626 NONAME - _ZThn8_N16QGraphicsWebView10wheelEventEP24QGraphicsSceneWheelEvent @ 627 NONAME - _ZThn8_N16QGraphicsWebView12focusInEventEP11QFocusEvent @ 628 NONAME - _ZThn8_N16QGraphicsWebView13dragMoveEventEP27QGraphicsSceneDragDropEvent @ 629 NONAME - _ZThn8_N16QGraphicsWebView13focusOutEventEP11QFocusEvent @ 630 NONAME - _ZThn8_N16QGraphicsWebView13keyPressEventEP9QKeyEvent @ 631 NONAME - _ZThn8_N16QGraphicsWebView14dragEnterEventEP27QGraphicsSceneDragDropEvent @ 632 NONAME - _ZThn8_N16QGraphicsWebView14dragLeaveEventEP27QGraphicsSceneDragDropEvent @ 633 NONAME - _ZThn8_N16QGraphicsWebView14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 634 NONAME - _ZThn8_N16QGraphicsWebView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 635 NONAME - _ZThn8_N16QGraphicsWebView15hoverLeaveEventEP24QGraphicsSceneHoverEvent @ 636 NONAME - _ZThn8_N16QGraphicsWebView15keyReleaseEventEP9QKeyEvent @ 637 NONAME - _ZThn8_N16QGraphicsWebView15mousePressEventEP24QGraphicsSceneMouseEvent @ 638 NONAME - _ZThn8_N16QGraphicsWebView16contextMenuEventEP30QGraphicsSceneContextMenuEvent @ 639 NONAME - _ZThn8_N16QGraphicsWebView16inputMethodEventEP17QInputMethodEvent @ 640 NONAME - _ZThn8_N16QGraphicsWebView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 641 NONAME - _ZThn8_N16QGraphicsWebView21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 642 NONAME - _ZThn8_N16QGraphicsWebView5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 643 NONAME - _ZThn8_N16QGraphicsWebView9dropEventEP27QGraphicsSceneDragDropEvent @ 644 NONAME - _ZThn8_N16QGraphicsWebViewD0Ev @ 645 NONAME - _ZThn8_N16QGraphicsWebViewD1Ev @ 646 NONAME - _ZThn8_N8QWebViewD0Ev @ 647 NONAME - _ZThn8_N8QWebViewD1Ev @ 648 NONAME - _ZlsR11QDataStreamRK11QWebHistory @ 649 NONAME - _ZrsR11QDataStreamR11QWebHistory @ 650 NONAME - _Z32qt_drt_whiteListAccessFromOriginRK7QStringS1_S1_b @ 651 NONAME - _Z33qt_drt_counterValueForElementByIdP9QWebFrameRK7QString @ 652 NONAME ABSENT - _Z34qt_drt_resetOriginAccessWhiteListsv @ 653 NONAME - _ZN11QWebElement17removeAllChildrenEv @ 654 NONAME - _ZN11QWebElement6renderEP8QPainter @ 655 NONAME - _ZN12QWebSettings30setPrintingMaximumShrinkFactorEf @ 656 NONAME ABSENT - _ZN12QWebSettings30setPrintingMinimumShrinkFactorEf @ 657 NONAME ABSENT - _ZN16QGraphicsWebView10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 658 NONAME - _ZN16QGraphicsWebView11linkClickedERK4QUrl @ 659 NONAME - _ZN16QGraphicsWebView12loadFinishedEb @ 660 NONAME - _ZN16QGraphicsWebView12loadProgressEi @ 661 NONAME - _ZN16QGraphicsWebView16statusBarMessageERK7QString @ 662 NONAME - _ZN16QGraphicsWebView17triggerPageActionEN8QWebPage9WebActionEb @ 663 NONAME - _ZN16QGraphicsWebView8findTextERK7QString6QFlagsIN8QWebPage8FindFlagEE @ 664 NONAME - _ZN21QWebElementCollection6appendERKS_ @ 665 NONAME - _ZN21QWebElementCollectionC1ERK11QWebElementRK7QString @ 666 NONAME - _ZN21QWebElementCollectionC1ERKS_ @ 667 NONAME - _ZN21QWebElementCollectionC1Ev @ 668 NONAME - _ZN21QWebElementCollectionC2ERK11QWebElementRK7QString @ 669 NONAME - _ZN21QWebElementCollectionC2ERKS_ @ 670 NONAME - _ZN21QWebElementCollectionC2Ev @ 671 NONAME - _ZN21QWebElementCollectionD1Ev @ 672 NONAME - _ZN21QWebElementCollectionD2Ev @ 673 NONAME - _ZN21QWebElementCollectionaSERKS_ @ 674 NONAME - _ZN9QWebFrame6renderEP8QPainterNS_11RenderLayerERK7QRegion @ 675 NONAME - _ZNK12QWebSettings27printingMaximumShrinkFactorEv @ 676 NONAME ABSENT - _ZNK12QWebSettings27printingMinimumShrinkFactorEv @ 677 NONAME ABSENT - _ZNK16QGraphicsWebView10isModifiedEv @ 678 NONAME - _ZNK16QGraphicsWebView10pageActionEN8QWebPage9WebActionE @ 679 NONAME - _ZNK16QGraphicsWebView16inputMethodQueryEN2Qt16InputMethodQueryE @ 680 NONAME - _ZNK16QGraphicsWebView8sizeHintEN2Qt8SizeHintERK6QSizeF @ 681 NONAME - _ZNK21QWebElementCollection2atEi @ 682 NONAME - _ZNK21QWebElementCollection5countEv @ 683 NONAME - _ZNK21QWebElementCollection6toListEv @ 684 NONAME - _ZNK21QWebElementCollectionplERKS_ @ 685 NONAME - _ZNK8QWebPage21preferredContentsSizeEv @ 686 NONAME - _ZNK8QWebPage24setPreferredContentsSizeERK5QSize @ 687 NONAME - _ZThn16_NK16QGraphicsWebView8sizeHintEN2Qt8SizeHintERK6QSizeF @ 688 NONAME - _ZThn8_N16QGraphicsWebView10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 689 NONAME - _ZThn8_NK16QGraphicsWebView16inputMethodQueryEN2Qt16InputMethodQueryE @ 690 NONAME - _ZNK11QWebElement14attributeNamesERK7QString @ 691 NONAME - _Z23qt_networkAccessAllowedb @ 692 NONAME - _Z25qt_resumeActiveDOMObjectsP9QWebFrame @ 693 NONAME - _Z26qt_suspendActiveDOMObjectsP9QWebFrame @ 694 NONAME - _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameii @ 695 NONAME ABSENT - _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameiiRK6QPoint @ 696 NONAME - _ZN9QWebFrame17scrollRecursivelyEii @ 697 NONAME ABSENT - _ZN16QGraphicsWebView20setResizesToContentsEb @ 698 NONAME - _ZNK16QGraphicsWebView17resizesToContentsEv @ 699 NONAME - _Z20qt_drt_numberOfPagesP9QWebFrameff @ 700 NONAME ABSENT - _Z24qt_drt_pauseSVGAnimationP9QWebFrameRK7QStringdS3_ @ 701 NONAME ABSENT - _Z24qt_drt_webinspector_showP8QWebPage @ 702 NONAME ABSENT - _Z24qt_drt_workerThreadCountv @ 703 NONAME ABSENT - _Z25qt_drt_hasDocumentElementP9QWebFrame @ 704 NONAME ABSENT - _Z25qt_drt_webinspector_closeP8QWebPage @ 705 NONAME ABSENT - _Z31qt_drt_pageNumberForElementByIdP9QWebFrameRK7QStringff @ 706 NONAME ABSENT - _Z33qt_drt_webinspector_executeScriptP8QWebPagelRK7QString @ 707 NONAME ABSENT - _Z34qt_drt_setTimelineProfilingEnabledP8QWebPageb @ 708 NONAME ABSENT - _Z32qt_drt_setFrameFlatteningEnabledP8QWebPageb @ 709 NONAME ABSENT - _Z36qt_drt_evaluateScriptInIsolatedWorldP9QWebFrameiRK7QString @ 710 NONAME ABSENT - _Z47qt_drt_setDomainRelaxationForbiddenForURLSchemebRK7QString @ 711 NONAME ABSENT - _ZN9QWebFrame11pageChangedEv @ 712 NONAME - _ZN9QWebFrame14scrollToAnchorERK7QString @ 713 NONAME - _ZN12QWebSettings15setInspectorUrlERK4QUrl @ 714 NONAME ABSENT - _ZN13QWebInspector10closeEventEP11QCloseEvent @ 715 NONAME - _ZN16QGraphicsWebView26setTiledBackingStoreFrozenEb @ 716 NONAME - _ZNK16QGraphicsWebView25isTiledBackingStoreFrozenEv @ 717 NONAME - _Z18qt_wrt_setViewModeP8QWebPageRK7QString @ 718 NONAME ABSENT - _Z19qt_drt_setMediaTypeP9QWebFrameRK7QString @ 719 NONAME ABSENT - _Z26qt_drt_enableCaretBrowsingP8QWebPageb @ 720 NONAME ABSENT - _ZNK12QWebSettings12inspectorUrlEv @ 721 NONAME ABSENT - _ZN23DumpRenderTreeSupportQt19webPageSetGroupNameEP8QWebPageRK7QString @ 722 NONAME - _ZN23DumpRenderTreeSupportQt16webPageGroupNameEP8QWebPage @ 723 NONAME - _ZN23DumpRenderTreeSupportQt23garbageCollectorCollectEv @ 724 NONAME - _Z32qtwebkit_webframe_scrollOverflowP9QWebFrameiiRK6QPoint @ 725 NONAME - _ZN23DumpRenderTreeSupportQt12setMediaTypeEP9QWebFrameRK7QString @ 726 NONAME - _ZN23DumpRenderTreeSupportQt13numberOfPagesEP9QWebFrameff @ 727 NONAME - _ZN23DumpRenderTreeSupportQt13selectedRangeEP8QWebPage @ 728 NONAME - _ZN23DumpRenderTreeSupportQt14clearFrameNameEP9QWebFrame @ 729 NONAME - _ZN23DumpRenderTreeSupportQt14pauseAnimationEP9QWebFrameRK7QStringdS4_ @ 730 NONAME - _ZN23DumpRenderTreeSupportQt15dumpFrameLoaderEb @ 731 NONAME - _ZN23DumpRenderTreeSupportQt16dumpNotificationEb @ 732 NONAME - _ZN23DumpRenderTreeSupportQt16isCommandEnabledEP8QWebPageRK7QString @ 733 NONAME - _ZN23DumpRenderTreeSupportQt16webInspectorShowEP8QWebPage @ 734 NONAME - _ZN23DumpRenderTreeSupportQt17pauseSVGAnimationEP9QWebFrameRK7QStringdS4_ @ 735 NONAME - _ZN23DumpRenderTreeSupportQt17webInspectorCloseEP8QWebPage @ 736 NONAME - _ZN23DumpRenderTreeSupportQt17workerThreadCountEv @ 737 NONAME - _ZN23DumpRenderTreeSupportQt18hasDocumentElementEP9QWebFrame @ 738 NONAME - _ZN23DumpRenderTreeSupportQt20dumpEditingCallbacksEb @ 739 NONAME - _ZN23DumpRenderTreeSupportQt21markerTextForListItemERK11QWebElement @ 740 NONAME - _ZN23DumpRenderTreeSupportQt22javaScriptObjectsCountEv @ 741 NONAME - _ZN23DumpRenderTreeSupportQt23setCaretBrowsingEnabledEP8QWebPageb @ 742 NONAME - _ZN23DumpRenderTreeSupportQt24executeCoreCommandByNameEP8QWebPageRK7QStringS4_ @ 743 NONAME - _ZN23DumpRenderTreeSupportQt21dumpSetAcceptsEditingEb @ 744 NONAME - _ZN23DumpRenderTreeSupportQt22resumeActiveDOMObjectsEP9QWebFrame @ 745 NONAME - _ZN23DumpRenderTreeSupportQt23suspendActiveDOMObjectsEP9QWebFrame @ 746 NONAME - _ZN23DumpRenderTreeSupportQt24numberOfActiveAnimationsEP9QWebFrame @ 747 NONAME - _ZN23DumpRenderTreeSupportQt24pageNumberForElementByIdEP9QWebFrameRK7QStringff @ 748 NONAME - _ZN23DumpRenderTreeSupportQt25dumpResourceLoadCallbacksEb @ 749 NONAME - _ZN23DumpRenderTreeSupportQt25pauseTransitionOfPropertyEP9QWebFrameRK7QStringdS4_ @ 750 NONAME - _ZN23DumpRenderTreeSupportQt25setFrameFlatteningEnabledEP8QWebPageb @ 751 NONAME - _ZN23DumpRenderTreeSupportQt25webInspectorExecuteScriptEP8QWebPagelRK7QString @ 752 NONAME - _ZN23DumpRenderTreeSupportQt25whiteListAccessFromOriginERK7QStringS2_S2_b @ 753 NONAME - _ZN23DumpRenderTreeSupportQt26counterValueForElementByIdEP9QWebFrameRK7QString @ 754 NONAME - _ZN23DumpRenderTreeSupportQt26firstRectForCharacterRangeEP8QWebPageii @ 755 NONAME - _ZN23DumpRenderTreeSupportQt26overwritePluginDirectoriesEv @ 756 NONAME - _ZN23DumpRenderTreeSupportQt27resetOriginAccessWhiteListsEv @ 757 NONAME - _ZN23DumpRenderTreeSupportQt27setSmartInsertDeleteEnabledEP8QWebPageb @ 758 NONAME - _ZN23DumpRenderTreeSupportQt27setTimelineProfilingEnabledEP8QWebPageb @ 759 NONAME - _ZN23DumpRenderTreeSupportQt28setDumpRenderTreeModeEnabledEb @ 760 NONAME - _ZN23DumpRenderTreeSupportQt29dumpResourceLoadCallbacksPathERK7QString @ 761 NONAME - _ZN23DumpRenderTreeSupportQt29evaluateScriptInIsolatedWorldEP9QWebFrameiRK7QString @ 762 NONAME - _ZN23DumpRenderTreeSupportQt29setJavaScriptProfilingEnabledEP9QWebFrameb @ 763 NONAME - _ZN23DumpRenderTreeSupportQt29setWillSendRequestReturnsNullEb @ 764 NONAME - _ZN23DumpRenderTreeSupportQt30setWillSendRequestClearHeadersERK11QStringList @ 765 NONAME - _ZN23DumpRenderTreeSupportQt33computedStyleIncludingVisitedInfoERK11QWebElement @ 766 NONAME - _ZN23DumpRenderTreeSupportQt34setSelectTrailingWhitespaceEnabledEP8QWebPageb @ 767 NONAME - _ZN23DumpRenderTreeSupportQt39elementDoesAutoCompleteForElementWithIdEP9QWebFrameRK7QString @ 768 NONAME - _ZN23DumpRenderTreeSupportQt39setWillSendRequestReturnsNullOnRedirectEb @ 769 NONAME - _ZN23DumpRenderTreeSupportQt40garbageCollectorCollectOnAlternateThreadEb @ 770 NONAME - _ZN23DumpRenderTreeSupportQt40setDomainRelaxationForbiddenForURLSchemeEbRK7QString @ 771 NONAME - _ZN23DumpRenderTreeSupportQt18setEditingBehaviorEP8QWebPageRK7QString @ 772 NONAME - _ZN23DumpRenderTreeSupportQt24setNotificationsReceiverEP7QObject @ 773 NONAME ABSENT - _ZN23DumpRenderTreeSupportQt26allowNotificationForOriginERK7QString @ 774 NONAME ABSENT - _ZN23DumpRenderTreeSupportQt26setCheckPermissionFunctionEPFvP7QObjectRK4QUrlR22NotificationPermissionE @ 775 NONAME ABSENT - _ZN23DumpRenderTreeSupportQt28setRequestPermissionFunctionEPFvP7QObjectRK7QStringE @ 776 NONAME ABSENT - _ZN23DumpRenderTreeSupportQt31removeWhiteListAccessFromOriginERK7QStringS2_S2_b @ 777 NONAME - _ZN23DumpRenderTreeSupportQt11shouldCloseEP9QWebFrame @ 778 NONAME - _ZN23DumpRenderTreeSupportQt12isTargetItemERK15QWebHistoryItem @ 779 NONAME - _ZN23DumpRenderTreeSupportQt17historyItemTargetERK15QWebHistoryItem @ 780 NONAME - _ZN23DumpRenderTreeSupportQt20getChildHistoryItemsERK15QWebHistoryItem @ 781 NONAME - _ZN23DumpRenderTreeSupportQt23setMockGeolocationErrorEiRK7QString @ 782 NONAME ABSENT - _ZN23DumpRenderTreeSupportQt26setMockGeolocationPositionEddd @ 783 NONAME ABSENT - _ZN23DumpRenderTreeSupportQt17clearScriptWorldsEv @ 784 NONAME - _ZN23DumpRenderTreeSupportQt23setCustomPolicyDelegateEbb @ 785 NONAME - _ZN15QWebScriptWorldC1ERKS_ @ 786 NONAME - _ZN15QWebScriptWorldC1Ev @ 787 NONAME - _ZN15QWebScriptWorldC2ERKS_ @ 788 NONAME - _ZN15QWebScriptWorldC2Ev @ 789 NONAME - _ZN15QWebScriptWorldD1Ev @ 790 NONAME - _ZN15QWebScriptWorldD2Ev @ 791 NONAME - _ZN15QWebScriptWorldaSERKS_ @ 792 NONAME - _ZN23DumpRenderTreeSupportQt29dumpResourceResponseMIMETypesEb @ 793 NONAME - _ZN23DumpRenderTreeSupportQtC1Ev @ 794 NONAME - _ZN23DumpRenderTreeSupportQtC2Ev @ 795 NONAME - _ZN23DumpRenderTreeSupportQtD1Ev @ 796 NONAME - _ZN23DumpRenderTreeSupportQtD2Ev @ 797 NONAME - _ZN8QWebPage23allowGeolocationRequestEP9QWebFrame @ 798 NONAME ABSENT - _ZN8QWebPage23viewportChangeRequestedERKNS_13ViewportHintsE @ 799 NONAME ABSENT - _ZNK15QWebScriptWorld5worldEv @ 800 NONAME - _ZN16QGraphicsWebView13setDeviceSizeERK5QSize @ 801 NONAME ABSENT - _ZN23DumpRenderTreeSupportQt12pagePropertyEP9QWebFrameRK7QStringi @ 802 NONAME - _ZN23DumpRenderTreeSupportQt16isPageBoxVisibleEP9QWebFramei @ 803 NONAME - _ZN23DumpRenderTreeSupportQt16resumeAnimationsEP9QWebFrame @ 804 NONAME - _ZN23DumpRenderTreeSupportQt17addUserStyleSheetEP8QWebPageRK7QString @ 805 NONAME - _ZN23DumpRenderTreeSupportQt17suspendAnimationsEP9QWebFrame @ 806 NONAME - _ZN23DumpRenderTreeSupportQt26pageSizeAndMarginsInPixelsEP9QWebFrameiiiiiii @ 807 NONAME - _ZN23DumpRenderTreeSupportQt28setDeferMainResourceDataLoadEb @ 808 NONAME - _ZN8QWebPage17setUserPermissionEP9QWebFrameNS_16PermissionDomainENS_16PermissionPolicyE @ 809 NONAME ABSENT - _ZN8QWebPage23checkPermissionFromUserEP9QWebFrameNS_16PermissionDomainERNS_16PermissionPolicyE @ 810 NONAME ABSENT - _ZN8QWebPage25requestPermissionFromUserEP9QWebFrameNS_16PermissionDomainE @ 811 NONAME ABSENT - _ZN8QWebPage27cancelRequestsForPermissionEP9QWebFrameNS_16PermissionDomainE @ 812 NONAME ABSENT - _ZNK16QGraphicsWebView10deviceSizeEv @ 813 NONAME ABSENT - _ZN23DumpRenderTreeSupportQt14viewportAsTextEP8QWebPageRK5QSize @ 814 NONAME - _ZN23DumpRenderTreeSupportQt32simulateDesktopNotificationClickERK7QString @ 815 NONAME - _ZN8QWebPage23viewportChangeRequestedEv @ 816 NONAME - _ZNK8QWebPage28viewportConfigurationForSizeERK5QSize @ 817 NONAME ABSENT - _ZN23DumpRenderTreeSupportQt20dumpHistoryCallbacksEb @ 818 NONAME - _ZN23DumpRenderTreeSupportQt25dumpVisitedLinksCallbacksEb @ 819 NONAME - _ZN23DumpRenderTreeSupportQt9plainTextERK8QVariant @ 820 NONAME - _ZNK8QWebPage25viewportAttributesForSizeERK5QSize @ 821 NONAME - _ZN8QWebPage18ViewportAttributesC1ERKS0_ @ 822 NONAME - _ZN8QWebPage18ViewportAttributesC1Ev @ 823 NONAME - _ZN8QWebPage18ViewportAttributesC2ERKS0_ @ 824 NONAME - _ZN8QWebPage18ViewportAttributesC2Ev @ 825 NONAME - _ZN8QWebPage18ViewportAttributesD1Ev @ 826 NONAME - _ZN8QWebPage18ViewportAttributesD2Ev @ 827 NONAME - _ZN8QWebPage18ViewportAttributesaSERKS0_ @ 828 NONAME - _ZN23DumpRenderTreeSupportQt13nodesFromRectERK11QWebElementiijjjjb @ 829 NONAME - _ZN23DumpRenderTreeSupportQt28dumpUserGestureInFrameLoaderEb @ 830 NONAME - _ZNK8QWebPage19supportsContentTypeERK7QString @ 831 NONAME - _ZNK8QWebPage21supportedContentTypesEv @ 832 NONAME - _ZNK8QWebPage27setActualVisibleContentRectERK5QRect @ 833 NONAME - _ZN8QWebPage20setFeaturePermissionEP9QWebFrameNS_7FeatureENS_16PermissionPolicyE @ 834 NONAME - _ZN8QWebPage26featurePermissionRequestedEP9QWebFrameNS_7FeatureE @ 835 NONAME - _ZN8QWebPage32featurePermissionRequestCanceledEP9QWebFrameNS_7FeatureE @ 836 NONAME - _Z33qtwebkit_setPluginCreatedCallbackPFvP9QWebFramePvS1_E @ 837 NONAME - _ZN23DumpRenderTreeSupportQt23setMockGeolocationErrorEP8QWebPageiRK7QString @ 838 NONAME - _ZN23DumpRenderTreeSupportQt26setMockGeolocationPositionEP8QWebPageddd @ 839 NONAME - _ZN23DumpRenderTreeSupportQt14viewportAsTextEP8QWebPageiRK5QSizeS4_ @ 840 NONAME - _ZN23DumpRenderTreeSupportQt13nodesFromRectERK11QWebElementiijjjjb @ 841 NONAME - _ZN23DumpRenderTreeSupportQt9plainTextERK8QVariant @ 842 NONAME - _ZN23DumpRenderTreeSupportQt26mediaContentUrlByElementIdEP9QWebFrameRK7QString @ 843 NONAME - _ZNK8QWebPage12hasSelectionEv @ 844 NONAME - _ZNK8QWebPage12selectedHtmlEv @ 845 NONAME - _ZN11QWebElement6renderEP8QPainterRK5QRect @ 846 NONAME +EXPORTS
+ _Z10qt_drt_runb @ 1 NONAME
+ _Z14qWebKitVersionv @ 2 NONAME
+ _Z19qWebKitMajorVersionv @ 3 NONAME
+ _Z19qWebKitMinorVersionv @ 4 NONAME
+ _Z20qt_dump_frame_loaderb @ 5 NONAME
+ _Z20qt_webpage_groupNameP8QWebPage @ 6 NONAME
+ _Z21qt_drt_clearFrameNameP9QWebFrame @ 7 NONAME
+ _Z21qt_drt_pauseAnimationP9QWebFrameRK7QStringdS3_ @ 8 NONAME
+ _Z23qt_webpage_setGroupNameP8QWebPageRK7QString @ 9 NONAME
+ _Z25qt_dump_editing_callbacksb @ 10 NONAME
+ _Z27qt_dump_set_accepts_editingb @ 11 NONAME
+ _Z29qt_drt_javaScriptObjectsCountv @ 12 NONAME
+ _Z31qt_drt_garbageCollector_collectv @ 13 NONAME
+ _Z31qt_drt_numberOfActiveAnimationsP9QWebFrame @ 14 NONAME
+ _Z31qt_dump_resource_load_callbacksb @ 15 NONAME
+ _Z32qt_drt_pauseTransitionOfPropertyP9QWebFrameRK7QStringdS3_ @ 16 NONAME
+ _Z33qt_drt_overwritePluginDirectoriesv @ 17 NONAME
+ _Z36qt_drt_setJavaScriptProfilingEnabledP9QWebFrameb @ 18 NONAME
+ _Z48qt_drt_garbageCollector_collectOnAlternateThreadb @ 19 NONAME
+ _ZN11QWebElement11encloseWithERK7QString @ 20 NONAME
+ _ZN11QWebElement11encloseWithERKS_ @ 21 NONAME
+ _ZN11QWebElement11removeClassERK7QString @ 22 NONAME
+ _ZN11QWebElement11setInnerXmlERK7QString @ 23 NONAME
+ _ZN11QWebElement11setOuterXmlERK7QString @ 24 NONAME
+ _ZN11QWebElement11toggleClassERK7QString @ 25 NONAME
+ _ZN11QWebElement12appendInsideERK7QString @ 26 NONAME
+ _ZN11QWebElement12appendInsideERKS_ @ 27 NONAME
+ _ZN11QWebElement12setAttributeERK7QStringS2_ @ 28 NONAME
+ _ZN11QWebElement12setPlainTextERK7QString @ 29 NONAME
+ _ZN11QWebElement13appendOutsideERK7QString @ 30 NONAME
+ _ZN11QWebElement13appendOutsideERKS_ @ 31 NONAME
+ _ZN11QWebElement13prependInsideERK7QString @ 32 NONAME
+ _ZN11QWebElement13prependInsideERKS_ @ 33 NONAME
+ _ZN11QWebElement14prependOutsideERK7QString @ 34 NONAME
+ _ZN11QWebElement14prependOutsideERKS_ @ 35 NONAME
+ _ZN11QWebElement14removeChildrenEv @ 36 NONAME ABSENT
+ _ZN11QWebElement14setAttributeNSERK7QStringS2_S2_ @ 37 NONAME
+ _ZN11QWebElement15removeAttributeERK7QString @ 38 NONAME
+ _ZN11QWebElement16enclosingElementEPN7WebCore4NodeE @ 39 NONAME
+ _ZN11QWebElement16setStylePropertyERK7QStringS2_ @ 40 NONAME
+ _ZN11QWebElement16takeFromDocumentEv @ 41 NONAME
+ _ZN11QWebElement17removeAttributeNSERK7QStringS2_ @ 42 NONAME
+ _ZN11QWebElement18evaluateJavaScriptERK7QString @ 43 NONAME
+ _ZN11QWebElement18removeFromDocumentEv @ 44 NONAME
+ _ZN11QWebElement19encloseContentsWithERK7QString @ 45 NONAME
+ _ZN11QWebElement19encloseContentsWithERKS_ @ 46 NONAME
+ _ZN11QWebElement7replaceERK7QString @ 47 NONAME
+ _ZN11QWebElement7replaceERKS_ @ 48 NONAME
+ _ZN11QWebElement8addClassERK7QString @ 49 NONAME
+ _ZN11QWebElement8setFocusEv @ 50 NONAME
+ _ZN11QWebElementC1EPN7WebCore4NodeE @ 51 NONAME
+ _ZN11QWebElementC1EPN7WebCore7ElementE @ 52 NONAME
+ _ZN11QWebElementC1ERKS_ @ 53 NONAME
+ _ZN11QWebElementC1Ev @ 54 NONAME
+ _ZN11QWebElementC2EPN7WebCore4NodeE @ 55 NONAME
+ _ZN11QWebElementC2EPN7WebCore7ElementE @ 56 NONAME
+ _ZN11QWebElementC2ERKS_ @ 57 NONAME
+ _ZN11QWebElementC2Ev @ 58 NONAME
+ _ZN11QWebElementD1Ev @ 59 NONAME
+ _ZN11QWebElementD2Ev @ 60 NONAME
+ _ZN11QWebElementaSERKS_ @ 61 NONAME
+ _ZN11QWebHistory12restoreStateERK10QByteArray @ 62 NONAME ABSENT
+ _ZN11QWebHistory19setMaximumItemCountEi @ 63 NONAME
+ _ZN11QWebHistory4backEv @ 64 NONAME
+ _ZN11QWebHistory5clearEv @ 65 NONAME
+ _ZN11QWebHistory7forwardEv @ 66 NONAME
+ _ZN11QWebHistory8goToItemERK15QWebHistoryItem @ 67 NONAME
+ _ZN11QWebHistoryC1Ev @ 68 NONAME
+ _ZN11QWebHistoryC2Ev @ 69 NONAME
+ _ZN11QWebHistoryD1Ev @ 70 NONAME
+ _ZN11QWebHistoryD2Ev @ 71 NONAME
+ _ZN12QWebDatabase14removeDatabaseERKS_ @ 72 NONAME
+ _ZN12QWebDatabase18removeAllDatabasesEv @ 73 NONAME
+ _ZN12QWebDatabaseC1EP19QWebDatabasePrivate @ 74 NONAME
+ _ZN12QWebDatabaseC1ERKS_ @ 75 NONAME
+ _ZN12QWebDatabaseC2EP19QWebDatabasePrivate @ 76 NONAME
+ _ZN12QWebDatabaseC2ERKS_ @ 77 NONAME
+ _ZN12QWebDatabaseD1Ev @ 78 NONAME
+ _ZN12QWebDatabaseD2Ev @ 79 NONAME
+ _ZN12QWebDatabaseaSERKS_ @ 80 NONAME
+ _ZN12QWebSettings10iconForUrlERK4QUrl @ 81 NONAME
+ _ZN12QWebSettings10webGraphicENS_10WebGraphicE @ 82 NONAME
+ _ZN12QWebSettings11setFontSizeENS_8FontSizeEi @ 83 NONAME
+ _ZN12QWebSettings12setAttributeENS_12WebAttributeEb @ 84 NONAME
+ _ZN12QWebSettings13resetFontSizeENS_8FontSizeE @ 85 NONAME
+ _ZN12QWebSettings13setFontFamilyENS_10FontFamilyERK7QString @ 86 NONAME
+ _ZN12QWebSettings13setWebGraphicENS_10WebGraphicERK7QPixmap @ 87 NONAME
+ _ZN12QWebSettings14globalSettingsEv @ 88 NONAME
+ _ZN12QWebSettings14pluginDatabaseEv @ 89 NONAME ABSENT
+ _ZN12QWebSettings14resetAttributeENS_12WebAttributeE @ 90 NONAME
+ _ZN12QWebSettings15resetFontFamilyENS_10FontFamilyE @ 91 NONAME
+ _ZN12QWebSettings16iconDatabasePathEv @ 92 NONAME
+ _ZN12QWebSettings17clearIconDatabaseEv @ 93 NONAME
+ _ZN12QWebSettings17clearMemoryCachesEv @ 94 NONAME
+ _ZN12QWebSettings18offlineStoragePathEv @ 95 NONAME
+ _ZN12QWebSettings19maximumPagesInCacheEv @ 96 NONAME
+ _ZN12QWebSettings19setIconDatabasePathERK7QString @ 97 NONAME
+ _ZN12QWebSettings19setLocalStoragePathERK7QString @ 98 NONAME
+ _ZN12QWebSettings20setUserStyleSheetUrlERK4QUrl @ 99 NONAME
+ _ZN12QWebSettings21setOfflineStoragePathERK7QString @ 100 NONAME
+ _ZN12QWebSettings22setDefaultTextEncodingERK7QString @ 101 NONAME
+ _ZN12QWebSettings22setMaximumPagesInCacheEi @ 102 NONAME
+ _ZN12QWebSettings23enablePersistentStorageERK7QString @ 103 NONAME
+ _ZN12QWebSettings24setObjectCacheCapacitiesEiii @ 104 NONAME
+ _ZN12QWebSettings26offlineStorageDefaultQuotaEv @ 105 NONAME
+ _ZN12QWebSettings29setOfflineStorageDefaultQuotaEx @ 106 NONAME
+ _ZN12QWebSettings30offlineWebApplicationCachePathEv @ 107 NONAME
+ _ZN12QWebSettings31offlineWebApplicationCacheQuotaEv @ 108 NONAME
+ _ZN12QWebSettings33setOfflineWebApplicationCachePathERK7QString @ 109 NONAME
+ _ZN12QWebSettings34setOfflineWebApplicationCacheQuotaEx @ 110 NONAME
+ _ZN12QWebSettingsC1EPN7WebCore8SettingsE @ 111 NONAME
+ _ZN12QWebSettingsC1Ev @ 112 NONAME
+ _ZN12QWebSettingsC2EPN7WebCore8SettingsE @ 113 NONAME
+ _ZN12QWebSettingsC2Ev @ 114 NONAME
+ _ZN12QWebSettingsD1Ev @ 115 NONAME
+ _ZN12QWebSettingsD2Ev @ 116 NONAME
+ _ZN13QWebInspector11qt_metacallEN11QMetaObject4CallEiPPv @ 117 NONAME
+ _ZN13QWebInspector11qt_metacastEPKc @ 118 NONAME
+ _ZN13QWebInspector11resizeEventEP12QResizeEvent @ 119 NONAME
+ _ZN13QWebInspector16staticMetaObjectE @ 120 NONAME DATA 16
+ _ZN13QWebInspector18windowTitleChangedERK7QString @ 121 NONAME ABSENT
+ _ZN13QWebInspector19getStaticMetaObjectEv @ 122 NONAME
+ _ZN13QWebInspector5eventEP6QEvent @ 123 NONAME
+ _ZN13QWebInspector7setPageEP8QWebPage @ 124 NONAME
+ _ZN13QWebInspector9hideEventEP10QHideEvent @ 125 NONAME
+ _ZN13QWebInspector9showEventEP10QShowEvent @ 126 NONAME
+ _ZN13QWebInspectorC1EP7QWidget @ 127 NONAME
+ _ZN13QWebInspectorC2EP7QWidget @ 128 NONAME
+ _ZN13QWebInspectorD0Ev @ 129 NONAME
+ _ZN13QWebInspectorD1Ev @ 130 NONAME
+ _ZN13QWebInspectorD2Ev @ 131 NONAME
+ _ZN14QWebPluginInfo10setEnabledEb @ 132 NONAME
+ _ZN14QWebPluginInfoC1EPN7WebCore13PluginPackageE @ 133 NONAME
+ _ZN14QWebPluginInfoC1ERKS_ @ 134 NONAME
+ _ZN14QWebPluginInfoC1Ev @ 135 NONAME
+ _ZN14QWebPluginInfoC2EPN7WebCore13PluginPackageE @ 136 NONAME
+ _ZN14QWebPluginInfoC2ERKS_ @ 137 NONAME
+ _ZN14QWebPluginInfoC2Ev @ 138 NONAME
+ _ZN14QWebPluginInfoD1Ev @ 139 NONAME
+ _ZN14QWebPluginInfoD2Ev @ 140 NONAME
+ _ZN14QWebPluginInfoaSERKS_ @ 141 NONAME
+ _ZN15QWebHistoryItem11setUserDataERK8QVariant @ 142 NONAME
+ _ZN15QWebHistoryItemC1EP22QWebHistoryItemPrivate @ 143 NONAME
+ _ZN15QWebHistoryItemC1ERKS_ @ 144 NONAME
+ _ZN15QWebHistoryItemC2EP22QWebHistoryItemPrivate @ 145 NONAME
+ _ZN15QWebHistoryItemC2ERKS_ @ 146 NONAME
+ _ZN15QWebHistoryItemD1Ev @ 147 NONAME
+ _ZN15QWebHistoryItemD2Ev @ 148 NONAME
+ _ZN15QWebHistoryItemaSERKS_ @ 149 NONAME
+ _ZN16QGraphicsWebView10loadFailedEv @ 150 NONAME ABSENT
+ _ZN16QGraphicsWebView10sceneEventEP6QEvent @ 151 NONAME
+ _ZN16QGraphicsWebView10setContentERK10QByteArrayRK7QStringRK4QUrl @ 152 NONAME
+ _ZN16QGraphicsWebView10urlChangedERK4QUrl @ 153 NONAME
+ _ZN16QGraphicsWebView10wheelEventEP24QGraphicsSceneWheelEvent @ 154 NONAME
+ _ZN16QGraphicsWebView11iconChangedEv @ 155 NONAME
+ _ZN16QGraphicsWebView11loadStartedEv @ 156 NONAME
+ _ZN16QGraphicsWebView11qt_metacallEN11QMetaObject4CallEiPPv @ 157 NONAME
+ _ZN16QGraphicsWebView11qt_metacastEPKc @ 158 NONAME
+ _ZN16QGraphicsWebView11setGeometryERK6QRectF @ 159 NONAME
+ _ZN16QGraphicsWebView12focusInEventEP11QFocusEvent @ 160 NONAME
+ _ZN16QGraphicsWebView12loadFinishedEv @ 161 NONAME ABSENT
+ _ZN16QGraphicsWebView12titleChangedERK7QString @ 162 NONAME
+ _ZN16QGraphicsWebView13dragMoveEventEP27QGraphicsSceneDragDropEvent @ 163 NONAME
+ _ZN16QGraphicsWebView13focusOutEventEP11QFocusEvent @ 164 NONAME
+ _ZN16QGraphicsWebView13keyPressEventEP9QKeyEvent @ 165 NONAME
+ _ZN16QGraphicsWebView13setZoomFactorEf @ 166 NONAME
+ _ZN16QGraphicsWebView13statusChangedEv @ 167 NONAME ABSENT
+ _ZN16QGraphicsWebView14dragEnterEventEP27QGraphicsSceneDragDropEvent @ 168 NONAME
+ _ZN16QGraphicsWebView14dragLeaveEventEP27QGraphicsSceneDragDropEvent @ 169 NONAME
+ _ZN16QGraphicsWebView14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 170 NONAME
+ _ZN16QGraphicsWebView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 171 NONAME
+ _ZN16QGraphicsWebView14setInteractiveEb @ 172 NONAME ABSENT
+ _ZN16QGraphicsWebView14updateGeometryEv @ 173 NONAME
+ _ZN16QGraphicsWebView15hoverLeaveEventEP24QGraphicsSceneHoverEvent @ 174 NONAME
+ _ZN16QGraphicsWebView15keyReleaseEventEP9QKeyEvent @ 175 NONAME
+ _ZN16QGraphicsWebView15mousePressEventEP24QGraphicsSceneMouseEvent @ 176 NONAME
+ _ZN16QGraphicsWebView15progressChangedEf @ 177 NONAME ABSENT
+ _ZN16QGraphicsWebView16contextMenuEventEP30QGraphicsSceneContextMenuEvent @ 178 NONAME
+ _ZN16QGraphicsWebView16inputMethodEventEP17QInputMethodEvent @ 179 NONAME
+ _ZN16QGraphicsWebView16staticMetaObjectE @ 180 NONAME DATA 16
+ _ZN16QGraphicsWebView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 181 NONAME
+ _ZN16QGraphicsWebView17zoomFactorChangedEv @ 182 NONAME ABSENT
+ _ZN16QGraphicsWebView18focusNextPrevChildEb @ 183 NONAME
+ _ZN16QGraphicsWebView19getStaticMetaObjectEv @ 184 NONAME
+ _ZN16QGraphicsWebView20interactivityChangedEv @ 185 NONAME ABSENT
+ _ZN16QGraphicsWebView21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 186 NONAME
+ _ZN16QGraphicsWebView4backEv @ 187 NONAME
+ _ZN16QGraphicsWebView4loadERK15QNetworkRequestN21QNetworkAccessManager9OperationERK10QByteArray @ 188 NONAME
+ _ZN16QGraphicsWebView4loadERK4QUrl @ 189 NONAME
+ _ZN16QGraphicsWebView4stopEv @ 190 NONAME
+ _ZN16QGraphicsWebView5eventEP6QEvent @ 191 NONAME
+ _ZN16QGraphicsWebView5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 192 NONAME
+ _ZN16QGraphicsWebView6reloadEv @ 193 NONAME
+ _ZN16QGraphicsWebView6setUrlERK4QUrl @ 194 NONAME
+ _ZN16QGraphicsWebView7forwardEv @ 195 NONAME
+ _ZN16QGraphicsWebView7setHtmlERK7QStringRK4QUrl @ 196 NONAME
+ _ZN16QGraphicsWebView7setPageEP8QWebPage @ 197 NONAME
+ _ZN16QGraphicsWebView9dropEventEP27QGraphicsSceneDragDropEvent @ 198 NONAME
+ _ZN16QGraphicsWebViewC1EP13QGraphicsItem @ 199 NONAME
+ _ZN16QGraphicsWebViewC2EP13QGraphicsItem @ 200 NONAME
+ _ZN16QGraphicsWebViewD0Ev @ 201 NONAME
+ _ZN16QGraphicsWebViewD1Ev @ 202 NONAME
+ _ZN16QGraphicsWebViewD2Ev @ 203 NONAME
+ _ZN17QWebHitTestResultC1EP24QWebHitTestResultPrivate @ 204 NONAME
+ _ZN17QWebHitTestResultC1ERKS_ @ 205 NONAME
+ _ZN17QWebHitTestResultC1Ev @ 206 NONAME
+ _ZN17QWebHitTestResultC2EP24QWebHitTestResultPrivate @ 207 NONAME
+ _ZN17QWebHitTestResultC2ERKS_ @ 208 NONAME
+ _ZN17QWebHitTestResultC2Ev @ 209 NONAME
+ _ZN17QWebHitTestResultD1Ev @ 210 NONAME
+ _ZN17QWebHitTestResultD2Ev @ 211 NONAME
+ _ZN17QWebHitTestResultaSERKS_ @ 212 NONAME
+ _ZN17QWebPluginFactory11qt_metacallEN11QMetaObject4CallEiPPv @ 213 NONAME
+ _ZN17QWebPluginFactory11qt_metacastEPKc @ 214 NONAME
+ _ZN17QWebPluginFactory14refreshPluginsEv @ 215 NONAME
+ _ZN17QWebPluginFactory16staticMetaObjectE @ 216 NONAME DATA 16
+ _ZN17QWebPluginFactory19getStaticMetaObjectEv @ 217 NONAME
+ _ZN17QWebPluginFactory9extensionENS_9ExtensionEPKNS_15ExtensionOptionEPNS_15ExtensionReturnE @ 218 NONAME
+ _ZN17QWebPluginFactoryC2EP7QObject @ 219 NONAME
+ _ZN17QWebPluginFactoryD0Ev @ 220 NONAME
+ _ZN17QWebPluginFactoryD1Ev @ 221 NONAME
+ _ZN17QWebPluginFactoryD2Ev @ 222 NONAME
+ _ZN18QWebPluginDatabase11qt_metacallEN11QMetaObject4CallEiPPv @ 223 NONAME
+ _ZN18QWebPluginDatabase11qt_metacastEPKc @ 224 NONAME
+ _ZN18QWebPluginDatabase13addSearchPathERK7QString @ 225 NONAME
+ _ZN18QWebPluginDatabase14setSearchPathsERK11QStringList @ 226 NONAME
+ _ZN18QWebPluginDatabase16staticMetaObjectE @ 227 NONAME DATA 16
+ _ZN18QWebPluginDatabase17pluginForMimeTypeERK7QString @ 228 NONAME
+ _ZN18QWebPluginDatabase18defaultSearchPathsEv @ 229 NONAME
+ _ZN18QWebPluginDatabase19getStaticMetaObjectEv @ 230 NONAME
+ _ZN18QWebPluginDatabase29setPreferredPluginForMimeTypeERK7QStringRK14QWebPluginInfo @ 231 NONAME
+ _ZN18QWebPluginDatabase7refreshEv @ 232 NONAME
+ _ZN18QWebPluginDatabaseC1EP7QObject @ 233 NONAME
+ _ZN18QWebPluginDatabaseC2EP7QObject @ 234 NONAME
+ _ZN18QWebPluginDatabaseD0Ev @ 235 NONAME
+ _ZN18QWebPluginDatabaseD1Ev @ 236 NONAME
+ _ZN18QWebPluginDatabaseD2Ev @ 237 NONAME
+ _ZN18QWebSecurityOrigin10allOriginsEv @ 238 NONAME
+ _ZN18QWebSecurityOrigin12localSchemesEv @ 239 NONAME
+ _ZN18QWebSecurityOrigin14addLocalSchemeERK7QString @ 240 NONAME
+ _ZN18QWebSecurityOrigin16setDatabaseQuotaEx @ 241 NONAME
+ _ZN18QWebSecurityOrigin17removeLocalSchemeERK7QString @ 242 NONAME
+ _ZN18QWebSecurityOrigin25whiteListAccessFromOriginERK7QStringS2_S2_b @ 243 NONAME ABSENT
+ _ZN18QWebSecurityOrigin27resetOriginAccessWhiteListsEv @ 244 NONAME ABSENT
+ _ZN18QWebSecurityOriginC1EP25QWebSecurityOriginPrivate @ 245 NONAME
+ _ZN18QWebSecurityOriginC1ERKS_ @ 246 NONAME
+ _ZN18QWebSecurityOriginC2EP25QWebSecurityOriginPrivate @ 247 NONAME
+ _ZN18QWebSecurityOriginC2ERKS_ @ 248 NONAME
+ _ZN18QWebSecurityOriginD1Ev @ 249 NONAME
+ _ZN18QWebSecurityOriginD2Ev @ 250 NONAME
+ _ZN18QWebSecurityOriginaSERKS_ @ 251 NONAME
+ _ZN20QWebHistoryInterface11qt_metacallEN11QMetaObject4CallEiPPv @ 252 NONAME
+ _ZN20QWebHistoryInterface11qt_metacastEPKc @ 253 NONAME
+ _ZN20QWebHistoryInterface16defaultInterfaceEv @ 254 NONAME
+ _ZN20QWebHistoryInterface16staticMetaObjectE @ 255 NONAME DATA 16
+ _ZN20QWebHistoryInterface19getStaticMetaObjectEv @ 256 NONAME
+ _ZN20QWebHistoryInterface19setDefaultInterfaceEPS_ @ 257 NONAME
+ _ZN20QWebHistoryInterfaceC2EP7QObject @ 258 NONAME
+ _ZN20QWebHistoryInterfaceD0Ev @ 259 NONAME
+ _ZN20QWebHistoryInterfaceD1Ev @ 260 NONAME
+ _ZN20QWebHistoryInterfaceD2Ev @ 261 NONAME
+ _ZN8QWebPage10chooseFileEP9QWebFrameRK7QString @ 262 NONAME
+ _ZN8QWebPage10setPaletteERK8QPalette @ 263 NONAME
+ _ZN8QWebPage11linkClickedERK4QUrl @ 264 NONAME
+ _ZN8QWebPage11linkHoveredERK7QStringS2_S2_ @ 265 NONAME
+ _ZN8QWebPage11loadStartedEv @ 266 NONAME
+ _ZN8QWebPage11qt_metacallEN11QMetaObject4CallEiPPv @ 267 NONAME
+ _ZN8QWebPage11qt_metacastEPKc @ 268 NONAME
+ _ZN8QWebPage12createPluginERK7QStringRK4QUrlRK11QStringListS8_ @ 269 NONAME
+ _ZN8QWebPage12createWindowENS_13WebWindowTypeE @ 270 NONAME
+ _ZN8QWebPage12frameCreatedEP9QWebFrame @ 271 NONAME
+ _ZN8QWebPage12loadFinishedEb @ 272 NONAME
+ _ZN8QWebPage12loadProgressEi @ 273 NONAME
+ _ZN8QWebPage13triggerActionENS_9WebActionEb @ 274 NONAME
+ _ZN8QWebPage14printRequestedEP9QWebFrame @ 275 NONAME
+ _ZN8QWebPage15contentsChangedEv @ 276 NONAME
+ _ZN8QWebPage15javaScriptAlertEP9QWebFrameRK7QString @ 277 NONAME
+ _ZN8QWebPage15scrollRequestedEiiRK5QRect @ 278 NONAME
+ _ZN8QWebPage16javaScriptPromptEP9QWebFrameRK7QStringS4_PS2_ @ 279 NONAME
+ _ZN8QWebPage16repaintRequestedERK5QRect @ 280 NONAME
+ _ZN8QWebPage16selectionChangedEv @ 281 NONAME
+ _ZN8QWebPage16setPluginFactoryEP17QWebPluginFactory @ 282 NONAME
+ _ZN8QWebPage16staticMetaObjectE @ 283 NONAME DATA 16
+ _ZN8QWebPage16statusBarMessageERK7QString @ 284 NONAME
+ _ZN8QWebPage17downloadRequestedERK15QNetworkRequest @ 285 NONAME
+ _ZN8QWebPage17javaScriptConfirmEP9QWebFrameRK7QString @ 286 NONAME
+ _ZN8QWebPage17microFocusChangedEv @ 287 NONAME
+ _ZN8QWebPage18focusNextPrevChildEb @ 288 NONAME
+ _ZN8QWebPage18setContentEditableEb @ 289 NONAME
+ _ZN8QWebPage18unsupportedContentEP13QNetworkReply @ 290 NONAME
+ _ZN8QWebPage19getStaticMetaObjectEv @ 291 NONAME
+ _ZN8QWebPage20windowCloseRequestedEv @ 292 NONAME
+ _ZN8QWebPage21databaseQuotaExceededEP9QWebFrame7QString @ 293 NONAME
+ _ZN8QWebPage21webInspectorTriggeredERK11QWebElement @ 294 NONAME ABSENT
+ _ZN8QWebPage23acceptNavigationRequestEP9QWebFrameRK15QNetworkRequestNS_14NavigationTypeE @ 295 NONAME
+ _ZN8QWebPage23geometryChangeRequestedERK5QRect @ 296 NONAME
+ _ZN8QWebPage23saveFrameStateRequestedEP9QWebFrameP15QWebHistoryItem @ 297 NONAME
+ _ZN8QWebPage23setLinkDelegationPolicyENS_20LinkDelegationPolicyE @ 298 NONAME
+ _ZN8QWebPage23setNetworkAccessManagerEP21QNetworkAccessManager @ 299 NONAME
+ _ZN8QWebPage23swallowContextMenuEventEP17QContextMenuEvent @ 300 NONAME
+ _ZN8QWebPage24javaScriptConsoleMessageERK7QStringiS2_ @ 301 NONAME
+ _ZN8QWebPage25createStandardContextMenuEv @ 302 NONAME
+ _ZN8QWebPage25shouldInterruptJavaScriptEv @ 303 NONAME
+ _ZN8QWebPage26restoreFrameStateRequestedEP9QWebFrame @ 304 NONAME
+ _ZN8QWebPage28setForwardUnsupportedContentEb @ 305 NONAME
+ _ZN8QWebPage30updatePositionDependentActionsERK6QPoint @ 306 NONAME
+ _ZN8QWebPage32menuBarVisibilityChangeRequestedEb @ 307 NONAME
+ _ZN8QWebPage32toolBarVisibilityChangeRequestedEb @ 308 NONAME
+ _ZN8QWebPage34statusBarVisibilityChangeRequestedEb @ 309 NONAME
+ _ZN8QWebPage5eventEP6QEvent @ 310 NONAME
+ _ZN8QWebPage7setViewEP7QWidget @ 311 NONAME
+ _ZN8QWebPage8findTextERK7QString6QFlagsINS_8FindFlagEE @ 312 NONAME
+ _ZN8QWebPage9extensionENS_9ExtensionEPKNS_15ExtensionOptionEPNS_15ExtensionReturnE @ 313 NONAME
+ _ZN8QWebPageC1EP7QObject @ 314 NONAME
+ _ZN8QWebPageC2EP7QObject @ 315 NONAME
+ _ZN8QWebPageD0Ev @ 316 NONAME
+ _ZN8QWebPageD1Ev @ 317 NONAME
+ _ZN8QWebPageD2Ev @ 318 NONAME
+ _ZN8QWebView10paintEventEP11QPaintEvent @ 319 NONAME
+ _ZN8QWebView10setContentERK10QByteArrayRK7QStringRK4QUrl @ 320 NONAME
+ _ZN8QWebView10urlChangedERK4QUrl @ 321 NONAME
+ _ZN8QWebView10wheelEventEP11QWheelEvent @ 322 NONAME
+ _ZN8QWebView11changeEventEP6QEvent @ 323 NONAME
+ _ZN8QWebView11iconChangedEv @ 324 NONAME
+ _ZN8QWebView11linkClickedERK4QUrl @ 325 NONAME
+ _ZN8QWebView11loadStartedEv @ 326 NONAME
+ _ZN8QWebView11qt_metacallEN11QMetaObject4CallEiPPv @ 327 NONAME
+ _ZN8QWebView11qt_metacastEPKc @ 328 NONAME
+ _ZN8QWebView11resizeEventEP12QResizeEvent @ 329 NONAME
+ _ZN8QWebView12createWindowEN8QWebPage13WebWindowTypeE @ 330 NONAME
+ _ZN8QWebView12focusInEventEP11QFocusEvent @ 331 NONAME
+ _ZN8QWebView12loadFinishedEb @ 332 NONAME
+ _ZN8QWebView12loadProgressEi @ 333 NONAME
+ _ZN8QWebView12titleChangedERK7QString @ 334 NONAME
+ _ZN8QWebView13dragMoveEventEP14QDragMoveEvent @ 335 NONAME
+ _ZN8QWebView13focusOutEventEP11QFocusEvent @ 336 NONAME
+ _ZN8QWebView13keyPressEventEP9QKeyEvent @ 337 NONAME
+ _ZN8QWebView13setRenderHintEN8QPainter10RenderHintEb @ 338 NONAME
+ _ZN8QWebView13setZoomFactorEf @ 339 NONAME
+ _ZN8QWebView14dragEnterEventEP15QDragEnterEvent @ 340 NONAME
+ _ZN8QWebView14dragLeaveEventEP15QDragLeaveEvent @ 341 NONAME
+ _ZN8QWebView14mouseMoveEventEP11QMouseEvent @ 342 NONAME
+ _ZN8QWebView14setRenderHintsE6QFlagsIN8QPainter10RenderHintEE @ 343 NONAME
+ _ZN8QWebView15keyReleaseEventEP9QKeyEvent @ 344 NONAME
+ _ZN8QWebView15mousePressEventEP11QMouseEvent @ 345 NONAME
+ _ZN8QWebView16contextMenuEventEP17QContextMenuEvent @ 346 NONAME
+ _ZN8QWebView16inputMethodEventEP17QInputMethodEvent @ 347 NONAME
+ _ZN8QWebView16selectionChangedEv @ 348 NONAME
+ _ZN8QWebView16staticMetaObjectE @ 349 NONAME DATA 16
+ _ZN8QWebView16statusBarMessageERK7QString @ 350 NONAME
+ _ZN8QWebView17mouseReleaseEventEP11QMouseEvent @ 351 NONAME
+ _ZN8QWebView17triggerPageActionEN8QWebPage9WebActionEb @ 352 NONAME
+ _ZN8QWebView18focusNextPrevChildEb @ 353 NONAME
+ _ZN8QWebView18guessUrlFromStringERK7QString @ 354 NONAME ABSENT
+ _ZN8QWebView19getStaticMetaObjectEv @ 355 NONAME
+ _ZN8QWebView21mouseDoubleClickEventEP11QMouseEvent @ 356 NONAME
+ _ZN8QWebView21setTextSizeMultiplierEf @ 357 NONAME
+ _ZN8QWebView4backEv @ 358 NONAME
+ _ZN8QWebView4loadERK15QNetworkRequestN21QNetworkAccessManager9OperationERK10QByteArray @ 359 NONAME
+ _ZN8QWebView4loadERK4QUrl @ 360 NONAME
+ _ZN8QWebView4stopEv @ 361 NONAME
+ _ZN8QWebView5eventEP6QEvent @ 362 NONAME
+ _ZN8QWebView6reloadEv @ 363 NONAME
+ _ZN8QWebView6setUrlERK4QUrl @ 364 NONAME
+ _ZN8QWebView7forwardEv @ 365 NONAME
+ _ZN8QWebView7setHtmlERK7QStringRK4QUrl @ 366 NONAME
+ _ZN8QWebView7setPageEP8QWebPage @ 367 NONAME
+ _ZN8QWebView8findTextERK7QString6QFlagsIN8QWebPage8FindFlagEE @ 368 NONAME
+ _ZN8QWebView9dropEventEP10QDropEvent @ 369 NONAME
+ _ZN8QWebViewC1EP7QWidget @ 370 NONAME
+ _ZN8QWebViewC2EP7QWidget @ 371 NONAME
+ _ZN8QWebViewD0Ev @ 372 NONAME
+ _ZN8QWebViewD1Ev @ 373 NONAME
+ _ZN8QWebViewD2Ev @ 374 NONAME
+ _ZN9QWebFrame10setContentERK10QByteArrayRK7QStringRK4QUrl @ 375 NONAME
+ _ZN9QWebFrame10urlChangedERK4QUrl @ 376 NONAME
+ _ZN9QWebFrame11iconChangedEv @ 377 NONAME
+ _ZN9QWebFrame11loadStartedEv @ 378 NONAME
+ _ZN9QWebFrame11qt_metacallEN11QMetaObject4CallEiPPv @ 379 NONAME
+ _ZN9QWebFrame11qt_metacastEPKc @ 380 NONAME
+ _ZN9QWebFrame12loadFinishedEb @ 381 NONAME
+ _ZN9QWebFrame12titleChangedERK7QString @ 382 NONAME
+ _ZN9QWebFrame13setZoomFactorEf @ 383 NONAME
+ _ZN9QWebFrame15provisionalLoadEv @ 384 NONAME
+ _ZN9QWebFrame16staticMetaObjectE @ 385 NONAME DATA 16
+ _ZN9QWebFrame17setScrollBarValueEN2Qt11OrientationEi @ 386 NONAME
+ _ZN9QWebFrame17setScrollPositionERK6QPoint @ 387 NONAME
+ _ZN9QWebFrame18evaluateJavaScriptERK7QString @ 388 NONAME
+ _ZN9QWebFrame18setScrollBarPolicyEN2Qt11OrientationENS0_15ScrollBarPolicyE @ 389 NONAME
+ _ZN9QWebFrame19contentsSizeChangedERK5QSize @ 390 NONAME
+ _ZN9QWebFrame19getStaticMetaObjectEv @ 391 NONAME
+ _ZN9QWebFrame21setTextSizeMultiplierEf @ 392 NONAME
+ _ZN9QWebFrame22initialLayoutCompletedEv @ 393 NONAME
+ _ZN9QWebFrame23setClipRenderToViewportEb @ 394 NONAME ABSENT
+ _ZN9QWebFrame27addToJavaScriptWindowObjectERK7QStringP7QObject @ 395 NONAME
+ _ZN9QWebFrame27addToJavaScriptWindowObjectERK7QStringP7QObjectN13QScriptEngine14ValueOwnershipE @ 396 NONAME
+ _ZN9QWebFrame29javaScriptWindowObjectClearedEv @ 397 NONAME
+ _ZN9QWebFrame4loadERK15QNetworkRequestN21QNetworkAccessManager9OperationERK10QByteArray @ 398 NONAME
+ _ZN9QWebFrame4loadERK4QUrl @ 399 NONAME
+ _ZN9QWebFrame5eventEP6QEvent @ 400 NONAME
+ _ZN9QWebFrame6renderEP8QPainter @ 401 NONAME
+ _ZN9QWebFrame6renderEP8QPainterRK7QRegion @ 402 NONAME
+ _ZN9QWebFrame6scrollEii @ 403 NONAME
+ _ZN9QWebFrame6setUrlERK4QUrl @ 404 NONAME
+ _ZN9QWebFrame7setHtmlERK7QStringRK4QUrl @ 405 NONAME
+ _ZN9QWebFrame8setFocusEv @ 406 NONAME
+ _ZN9QWebFrameC1EP8QWebPageP13QWebFrameData @ 407 NONAME
+ _ZN9QWebFrameC1EPS_P13QWebFrameData @ 408 NONAME
+ _ZN9QWebFrameC2EP8QWebPageP13QWebFrameData @ 409 NONAME
+ _ZN9QWebFrameC2EPS_P13QWebFrameData @ 410 NONAME
+ _ZN9QWebFrameD0Ev @ 411 NONAME
+ _ZN9QWebFrameD1Ev @ 412 NONAME
+ _ZN9QWebFrameD2Ev @ 413 NONAME
+ _ZNK11QWebElement10firstChildEv @ 414 NONAME
+ _ZNK11QWebElement10toInnerXmlEv @ 415 NONAME
+ _ZNK11QWebElement10toOuterXmlEv @ 416 NONAME
+ _ZNK11QWebElement11attributeNSERK7QStringS2_S2_ @ 417 NONAME
+ _ZNK11QWebElement11nextSiblingEv @ 418 NONAME
+ _ZNK11QWebElement11toPlainTextEv @ 419 NONAME
+ _ZNK11QWebElement12hasAttributeERK7QString @ 420 NONAME
+ _ZNK11QWebElement12namespaceUriEv @ 421 NONAME
+ _ZNK11QWebElement13hasAttributesEv @ 422 NONAME
+ _ZNK11QWebElement13stylePropertyERK7QStringNS_20StyleResolveStrategyE @ 423 NONAME
+ _ZNK11QWebElement14hasAttributeNSERK7QStringS2_ @ 424 NONAME
+ _ZNK11QWebElement15previousSiblingEv @ 425 NONAME
+ _ZNK11QWebElement5cloneEv @ 426 NONAME
+ _ZNK11QWebElement6isNullEv @ 427 NONAME
+ _ZNK11QWebElement6parentEv @ 428 NONAME
+ _ZNK11QWebElement6prefixEv @ 429 NONAME
+ _ZNK11QWebElement7classesEv @ 430 NONAME
+ _ZNK11QWebElement7findAllERK7QString @ 431 NONAME
+ _ZNK11QWebElement7tagNameEv @ 432 NONAME
+ _ZNK11QWebElement8documentEv @ 433 NONAME
+ _ZNK11QWebElement8geometryEv @ 434 NONAME
+ _ZNK11QWebElement8hasClassERK7QString @ 435 NONAME
+ _ZNK11QWebElement8hasFocusEv @ 436 NONAME
+ _ZNK11QWebElement8webFrameEv @ 437 NONAME
+ _ZNK11QWebElement9attributeERK7QStringS2_ @ 438 NONAME
+ _ZNK11QWebElement9findFirstERK7QString @ 439 NONAME
+ _ZNK11QWebElement9lastChildEv @ 440 NONAME
+ _ZNK11QWebElement9localNameEv @ 441 NONAME
+ _ZNK11QWebElementeqERKS_ @ 442 NONAME
+ _ZNK11QWebElementneERKS_ @ 443 NONAME
+ _ZNK11QWebHistory11currentItemEv @ 444 NONAME
+ _ZNK11QWebHistory11forwardItemEv @ 445 NONAME
+ _ZNK11QWebHistory12canGoForwardEv @ 446 NONAME
+ _ZNK11QWebHistory12forwardItemsEi @ 447 NONAME
+ _ZNK11QWebHistory16currentItemIndexEv @ 448 NONAME
+ _ZNK11QWebHistory16maximumItemCountEv @ 449 NONAME
+ _ZNK11QWebHistory5countEv @ 450 NONAME
+ _ZNK11QWebHistory5itemsEv @ 451 NONAME
+ _ZNK11QWebHistory6itemAtEi @ 452 NONAME
+ _ZNK11QWebHistory8backItemEv @ 453 NONAME
+ _ZNK11QWebHistory9backItemsEi @ 454 NONAME
+ _ZNK11QWebHistory9canGoBackEv @ 455 NONAME
+ _ZNK11QWebHistory9saveStateENS_19HistoryStateVersionE @ 456 NONAME ABSENT
+ _ZNK12QWebDatabase11displayNameEv @ 457 NONAME
+ _ZNK12QWebDatabase12expectedSizeEv @ 458 NONAME
+ _ZNK12QWebDatabase4nameEv @ 459 NONAME
+ _ZNK12QWebDatabase4sizeEv @ 460 NONAME
+ _ZNK12QWebDatabase6originEv @ 461 NONAME
+ _ZNK12QWebDatabase8fileNameEv @ 462 NONAME
+ _ZNK12QWebSettings10fontFamilyENS_10FontFamilyE @ 463 NONAME
+ _ZNK12QWebSettings13testAttributeENS_12WebAttributeE @ 464 NONAME
+ _ZNK12QWebSettings16localStoragePathEv @ 465 NONAME
+ _ZNK12QWebSettings17userStyleSheetUrlEv @ 466 NONAME
+ _ZNK12QWebSettings19defaultTextEncodingEv @ 467 NONAME
+ _ZNK12QWebSettings8fontSizeENS_8FontSizeE @ 468 NONAME
+ _ZNK13QWebInspector10metaObjectEv @ 469 NONAME
+ _ZNK13QWebInspector4pageEv @ 470 NONAME
+ _ZNK13QWebInspector8sizeHintEv @ 471 NONAME
+ _ZNK14QWebPluginInfo11descriptionEv @ 472 NONAME
+ _ZNK14QWebPluginInfo16supportsMimeTypeERK7QString @ 473 NONAME
+ _ZNK14QWebPluginInfo4nameEv @ 474 NONAME
+ _ZNK14QWebPluginInfo4pathEv @ 475 NONAME
+ _ZNK14QWebPluginInfo6isNullEv @ 476 NONAME
+ _ZNK14QWebPluginInfo9isEnabledEv @ 477 NONAME
+ _ZNK14QWebPluginInfo9mimeTypesEv @ 478 NONAME
+ _ZNK14QWebPluginInfoeqERKS_ @ 479 NONAME
+ _ZNK14QWebPluginInfoneERKS_ @ 480 NONAME
+ _ZNK15QWebHistoryItem11lastVisitedEv @ 481 NONAME
+ _ZNK15QWebHistoryItem11originalUrlEv @ 482 NONAME
+ _ZNK15QWebHistoryItem3urlEv @ 483 NONAME
+ _ZNK15QWebHistoryItem4iconEv @ 484 NONAME
+ _ZNK15QWebHistoryItem5titleEv @ 485 NONAME
+ _ZNK15QWebHistoryItem7isValidEv @ 486 NONAME
+ _ZNK15QWebHistoryItem8userDataEv @ 487 NONAME
+ _ZNK16QGraphicsWebView10metaObjectEv @ 488 NONAME
+ _ZNK16QGraphicsWebView10zoomFactorEv @ 489 NONAME
+ _ZNK16QGraphicsWebView13isInteractiveEv @ 490 NONAME ABSENT
+ _ZNK16QGraphicsWebView3urlEv @ 491 NONAME
+ _ZNK16QGraphicsWebView4iconEv @ 492 NONAME
+ _ZNK16QGraphicsWebView4pageEv @ 493 NONAME
+ _ZNK16QGraphicsWebView5titleEv @ 494 NONAME
+ _ZNK16QGraphicsWebView6statusEv @ 495 NONAME ABSENT
+ _ZNK16QGraphicsWebView6toHtmlEv @ 496 NONAME ABSENT
+ _ZNK16QGraphicsWebView7historyEv @ 497 NONAME
+ _ZNK16QGraphicsWebView8progressEv @ 498 NONAME ABSENT
+ _ZNK16QGraphicsWebView8settingsEv @ 499 NONAME
+ _ZNK17QWebHitTestResult11linkElementEv @ 500 NONAME
+ _ZNK17QWebHitTestResult12boundingRectEv @ 501 NONAME
+ _ZNK17QWebHitTestResult13alternateTextEv @ 502 NONAME
+ _ZNK17QWebHitTestResult15linkTargetFrameEv @ 503 NONAME
+ _ZNK17QWebHitTestResult17isContentEditableEv @ 504 NONAME
+ _ZNK17QWebHitTestResult17isContentSelectedEv @ 505 NONAME
+ _ZNK17QWebHitTestResult21enclosingBlockElementEv @ 506 NONAME
+ _ZNK17QWebHitTestResult3posEv @ 507 NONAME
+ _ZNK17QWebHitTestResult5frameEv @ 508 NONAME
+ _ZNK17QWebHitTestResult5titleEv @ 509 NONAME
+ _ZNK17QWebHitTestResult6isNullEv @ 510 NONAME
+ _ZNK17QWebHitTestResult6pixmapEv @ 511 NONAME
+ _ZNK17QWebHitTestResult7elementEv @ 512 NONAME
+ _ZNK17QWebHitTestResult7linkUrlEv @ 513 NONAME
+ _ZNK17QWebHitTestResult8imageUrlEv @ 514 NONAME
+ _ZNK17QWebHitTestResult8linkTextEv @ 515 NONAME
+ _ZNK17QWebHitTestResult9linkTitleEv @ 516 NONAME
+ _ZNK17QWebPluginFactory10metaObjectEv @ 517 NONAME
+ _ZNK17QWebPluginFactory17supportsExtensionENS_9ExtensionE @ 518 NONAME
+ _ZNK17QWebPluginFactory8MimeTypeeqERKS0_ @ 519 NONAME
+ _ZNK18QWebPluginDatabase10metaObjectEv @ 520 NONAME
+ _ZNK18QWebPluginDatabase11searchPathsEv @ 521 NONAME
+ _ZNK18QWebPluginDatabase7pluginsEv @ 522 NONAME
+ _ZNK18QWebSecurityOrigin13databaseQuotaEv @ 523 NONAME
+ _ZNK18QWebSecurityOrigin13databaseUsageEv @ 524 NONAME
+ _ZNK18QWebSecurityOrigin4hostEv @ 525 NONAME
+ _ZNK18QWebSecurityOrigin4portEv @ 526 NONAME
+ _ZNK18QWebSecurityOrigin6schemeEv @ 527 NONAME
+ _ZNK18QWebSecurityOrigin9databasesEv @ 528 NONAME
+ _ZNK20QWebHistoryInterface10metaObjectEv @ 529 NONAME
+ _ZNK8QWebPage10isModifiedEv @ 530 NONAME
+ _ZNK8QWebPage10metaObjectEv @ 531 NONAME
+ _ZNK8QWebPage10totalBytesEv @ 532 NONAME
+ _ZNK8QWebPage12currentFrameEv @ 533 NONAME
+ _ZNK8QWebPage12selectedTextEv @ 534 NONAME
+ _ZNK8QWebPage12viewportSizeEv @ 535 NONAME
+ _ZNK8QWebPage13bytesReceivedEv @ 536 NONAME
+ _ZNK8QWebPage13pluginFactoryEv @ 537 NONAME
+ _ZNK8QWebPage15setViewportSizeERK5QSize @ 538 NONAME
+ _ZNK8QWebPage15userAgentForUrlERK4QUrl @ 539 NONAME
+ _ZNK8QWebPage16inputMethodQueryEN2Qt16InputMethodQueryE @ 540 NONAME
+ _ZNK8QWebPage17fixedContentsSizeEv @ 541 NONAME ABSENT
+ _ZNK8QWebPage17isContentEditableEv @ 542 NONAME
+ _ZNK8QWebPage17supportsExtensionENS_9ExtensionE @ 543 NONAME
+ _ZNK8QWebPage20linkDelegationPolicyEv @ 544 NONAME
+ _ZNK8QWebPage20networkAccessManagerEv @ 545 NONAME
+ _ZNK8QWebPage20setFixedContentsSizeERK5QSize @ 546 NONAME ABSENT
+ _ZNK8QWebPage25forwardUnsupportedContentEv @ 547 NONAME
+ _ZNK8QWebPage4viewEv @ 548 NONAME
+ _ZNK8QWebPage6actionENS_9WebActionE @ 549 NONAME
+ _ZNK8QWebPage7frameAtERK6QPoint @ 550 NONAME
+ _ZNK8QWebPage7historyEv @ 551 NONAME
+ _ZNK8QWebPage7paletteEv @ 552 NONAME
+ _ZNK8QWebPage8settingsEv @ 553 NONAME
+ _ZNK8QWebPage9mainFrameEv @ 554 NONAME
+ _ZNK8QWebPage9undoStackEv @ 555 NONAME
+ _ZNK8QWebView10isModifiedEv @ 556 NONAME
+ _ZNK8QWebView10metaObjectEv @ 557 NONAME
+ _ZNK8QWebView10pageActionEN8QWebPage9WebActionE @ 558 NONAME
+ _ZNK8QWebView10zoomFactorEv @ 559 NONAME
+ _ZNK8QWebView11renderHintsEv @ 560 NONAME
+ _ZNK8QWebView12selectedTextEv @ 561 NONAME
+ _ZNK8QWebView16inputMethodQueryEN2Qt16InputMethodQueryE @ 562 NONAME
+ _ZNK8QWebView18textSizeMultiplierEv @ 563 NONAME
+ _ZNK8QWebView3urlEv @ 564 NONAME
+ _ZNK8QWebView4iconEv @ 565 NONAME
+ _ZNK8QWebView4pageEv @ 566 NONAME
+ _ZNK8QWebView5printEP8QPrinter @ 567 NONAME
+ _ZNK8QWebView5titleEv @ 568 NONAME
+ _ZNK8QWebView7historyEv @ 569 NONAME
+ _ZNK8QWebView8settingsEv @ 570 NONAME
+ _ZNK8QWebView8sizeHintEv @ 571 NONAME
+ _ZNK9QWebFrame10metaObjectEv @ 572 NONAME
+ _ZNK9QWebFrame10zoomFactorEv @ 573 NONAME
+ _ZNK9QWebFrame11childFramesEv @ 574 NONAME
+ _ZNK9QWebFrame11parentFrameEv @ 575 NONAME
+ _ZNK9QWebFrame11toPlainTextEv @ 576 NONAME
+ _ZNK9QWebFrame12contentsSizeEv @ 577 NONAME
+ _ZNK9QWebFrame12requestedUrlEv @ 578 NONAME
+ _ZNK9QWebFrame14hitTestContentERK6QPoint @ 579 NONAME
+ _ZNK9QWebFrame14renderTreeDumpEv @ 580 NONAME
+ _ZNK9QWebFrame14scrollBarValueEN2Qt11OrientationE @ 581 NONAME
+ _ZNK9QWebFrame14scrollPositionEv @ 582 NONAME
+ _ZNK9QWebFrame14securityOriginEv @ 583 NONAME
+ _ZNK9QWebFrame15documentElementEv @ 584 NONAME
+ _ZNK9QWebFrame15findAllElementsERK7QString @ 585 NONAME
+ _ZNK9QWebFrame15scrollBarPolicyEN2Qt11OrientationE @ 586 NONAME
+ _ZNK9QWebFrame16findFirstElementERK7QString @ 587 NONAME
+ _ZNK9QWebFrame16scrollBarMaximumEN2Qt11OrientationE @ 588 NONAME
+ _ZNK9QWebFrame16scrollBarMinimumEN2Qt11OrientationE @ 589 NONAME
+ _ZNK9QWebFrame17scrollBarGeometryEN2Qt11OrientationE @ 590 NONAME
+ _ZNK9QWebFrame18textSizeMultiplierEv @ 591 NONAME
+ _ZNK9QWebFrame20clipRenderToViewportEv @ 592 NONAME ABSENT
+ _ZNK9QWebFrame3posEv @ 593 NONAME
+ _ZNK9QWebFrame3urlEv @ 594 NONAME
+ _ZNK9QWebFrame4iconEv @ 595 NONAME
+ _ZNK9QWebFrame4pageEv @ 596 NONAME
+ _ZNK9QWebFrame5titleEv @ 597 NONAME
+ _ZNK9QWebFrame6toHtmlEv @ 598 NONAME
+ _ZNK9QWebFrame7baseUrlEv @ 599 NONAME
+ _ZNK9QWebFrame8geometryEv @ 600 NONAME
+ _ZNK9QWebFrame8hasFocusEv @ 601 NONAME
+ _ZNK9QWebFrame8metaDataEv @ 602 NONAME
+ _ZNK9QWebFrame9frameNameEv @ 603 NONAME
+ _ZTI13QWebInspector @ 604 NONAME
+ _ZTI16QGraphicsWebView @ 605 NONAME
+ _ZTI17QWebPluginFactory @ 606 NONAME
+ _ZTI18QWebPluginDatabase @ 607 NONAME
+ _ZTI20QWebHistoryInterface @ 608 NONAME
+ _ZTI8QWebPage @ 609 NONAME
+ _ZTI8QWebView @ 610 NONAME
+ _ZTI9QWebFrame @ 611 NONAME
+ _ZTV13QWebInspector @ 612 NONAME
+ _ZTV16QGraphicsWebView @ 613 NONAME
+ _ZTV17QWebPluginFactory @ 614 NONAME
+ _ZTV18QWebPluginDatabase @ 615 NONAME
+ _ZTV20QWebHistoryInterface @ 616 NONAME
+ _ZTV8QWebPage @ 617 NONAME
+ _ZTV8QWebView @ 618 NONAME
+ _ZTV9QWebFrame @ 619 NONAME
+ _ZThn16_N16QGraphicsWebView11setGeometryERK6QRectF @ 620 NONAME
+ _ZThn16_N16QGraphicsWebView14updateGeometryEv @ 621 NONAME
+ _ZThn16_N16QGraphicsWebViewD0Ev @ 622 NONAME
+ _ZThn16_N16QGraphicsWebViewD1Ev @ 623 NONAME
+ _ZThn8_N13QWebInspectorD0Ev @ 624 NONAME
+ _ZThn8_N13QWebInspectorD1Ev @ 625 NONAME
+ _ZThn8_N16QGraphicsWebView10sceneEventEP6QEvent @ 626 NONAME
+ _ZThn8_N16QGraphicsWebView10wheelEventEP24QGraphicsSceneWheelEvent @ 627 NONAME
+ _ZThn8_N16QGraphicsWebView12focusInEventEP11QFocusEvent @ 628 NONAME
+ _ZThn8_N16QGraphicsWebView13dragMoveEventEP27QGraphicsSceneDragDropEvent @ 629 NONAME
+ _ZThn8_N16QGraphicsWebView13focusOutEventEP11QFocusEvent @ 630 NONAME
+ _ZThn8_N16QGraphicsWebView13keyPressEventEP9QKeyEvent @ 631 NONAME
+ _ZThn8_N16QGraphicsWebView14dragEnterEventEP27QGraphicsSceneDragDropEvent @ 632 NONAME
+ _ZThn8_N16QGraphicsWebView14dragLeaveEventEP27QGraphicsSceneDragDropEvent @ 633 NONAME
+ _ZThn8_N16QGraphicsWebView14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 634 NONAME
+ _ZThn8_N16QGraphicsWebView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 635 NONAME
+ _ZThn8_N16QGraphicsWebView15hoverLeaveEventEP24QGraphicsSceneHoverEvent @ 636 NONAME
+ _ZThn8_N16QGraphicsWebView15keyReleaseEventEP9QKeyEvent @ 637 NONAME
+ _ZThn8_N16QGraphicsWebView15mousePressEventEP24QGraphicsSceneMouseEvent @ 638 NONAME
+ _ZThn8_N16QGraphicsWebView16contextMenuEventEP30QGraphicsSceneContextMenuEvent @ 639 NONAME
+ _ZThn8_N16QGraphicsWebView16inputMethodEventEP17QInputMethodEvent @ 640 NONAME
+ _ZThn8_N16QGraphicsWebView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 641 NONAME
+ _ZThn8_N16QGraphicsWebView21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 642 NONAME
+ _ZThn8_N16QGraphicsWebView5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 643 NONAME
+ _ZThn8_N16QGraphicsWebView9dropEventEP27QGraphicsSceneDragDropEvent @ 644 NONAME
+ _ZThn8_N16QGraphicsWebViewD0Ev @ 645 NONAME
+ _ZThn8_N16QGraphicsWebViewD1Ev @ 646 NONAME
+ _ZThn8_N8QWebViewD0Ev @ 647 NONAME
+ _ZThn8_N8QWebViewD1Ev @ 648 NONAME
+ _ZlsR11QDataStreamRK11QWebHistory @ 649 NONAME
+ _ZrsR11QDataStreamR11QWebHistory @ 650 NONAME
+ _Z32qt_drt_whiteListAccessFromOriginRK7QStringS1_S1_b @ 651 NONAME
+ _Z33qt_drt_counterValueForElementByIdP9QWebFrameRK7QString @ 652 NONAME ABSENT
+ _Z34qt_drt_resetOriginAccessWhiteListsv @ 653 NONAME
+ _ZN11QWebElement17removeAllChildrenEv @ 654 NONAME
+ _ZN11QWebElement6renderEP8QPainter @ 655 NONAME
+ _ZN12QWebSettings30setPrintingMaximumShrinkFactorEf @ 656 NONAME ABSENT
+ _ZN12QWebSettings30setPrintingMinimumShrinkFactorEf @ 657 NONAME ABSENT
+ _ZN16QGraphicsWebView10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 658 NONAME
+ _ZN16QGraphicsWebView11linkClickedERK4QUrl @ 659 NONAME
+ _ZN16QGraphicsWebView12loadFinishedEb @ 660 NONAME
+ _ZN16QGraphicsWebView12loadProgressEi @ 661 NONAME
+ _ZN16QGraphicsWebView16statusBarMessageERK7QString @ 662 NONAME
+ _ZN16QGraphicsWebView17triggerPageActionEN8QWebPage9WebActionEb @ 663 NONAME
+ _ZN16QGraphicsWebView8findTextERK7QString6QFlagsIN8QWebPage8FindFlagEE @ 664 NONAME
+ _ZN21QWebElementCollection6appendERKS_ @ 665 NONAME
+ _ZN21QWebElementCollectionC1ERK11QWebElementRK7QString @ 666 NONAME
+ _ZN21QWebElementCollectionC1ERKS_ @ 667 NONAME
+ _ZN21QWebElementCollectionC1Ev @ 668 NONAME
+ _ZN21QWebElementCollectionC2ERK11QWebElementRK7QString @ 669 NONAME
+ _ZN21QWebElementCollectionC2ERKS_ @ 670 NONAME
+ _ZN21QWebElementCollectionC2Ev @ 671 NONAME
+ _ZN21QWebElementCollectionD1Ev @ 672 NONAME
+ _ZN21QWebElementCollectionD2Ev @ 673 NONAME
+ _ZN21QWebElementCollectionaSERKS_ @ 674 NONAME
+ _ZN9QWebFrame6renderEP8QPainterNS_11RenderLayerERK7QRegion @ 675 NONAME
+ _ZNK12QWebSettings27printingMaximumShrinkFactorEv @ 676 NONAME ABSENT
+ _ZNK12QWebSettings27printingMinimumShrinkFactorEv @ 677 NONAME ABSENT
+ _ZNK16QGraphicsWebView10isModifiedEv @ 678 NONAME
+ _ZNK16QGraphicsWebView10pageActionEN8QWebPage9WebActionE @ 679 NONAME
+ _ZNK16QGraphicsWebView16inputMethodQueryEN2Qt16InputMethodQueryE @ 680 NONAME
+ _ZNK16QGraphicsWebView8sizeHintEN2Qt8SizeHintERK6QSizeF @ 681 NONAME
+ _ZNK21QWebElementCollection2atEi @ 682 NONAME
+ _ZNK21QWebElementCollection5countEv @ 683 NONAME
+ _ZNK21QWebElementCollection6toListEv @ 684 NONAME
+ _ZNK21QWebElementCollectionplERKS_ @ 685 NONAME
+ _ZNK8QWebPage21preferredContentsSizeEv @ 686 NONAME
+ _ZNK8QWebPage24setPreferredContentsSizeERK5QSize @ 687 NONAME
+ _ZThn16_NK16QGraphicsWebView8sizeHintEN2Qt8SizeHintERK6QSizeF @ 688 NONAME
+ _ZThn8_N16QGraphicsWebView10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 689 NONAME
+ _ZThn8_NK16QGraphicsWebView16inputMethodQueryEN2Qt16InputMethodQueryE @ 690 NONAME
+ _ZNK11QWebElement14attributeNamesERK7QString @ 691 NONAME
+ _Z23qt_networkAccessAllowedb @ 692 NONAME
+ _Z25qt_resumeActiveDOMObjectsP9QWebFrame @ 693 NONAME
+ _Z26qt_suspendActiveDOMObjectsP9QWebFrame @ 694 NONAME
+ _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameii @ 695 NONAME ABSENT
+ _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameiiRK6QPoint @ 696 NONAME
+ _ZN9QWebFrame17scrollRecursivelyEii @ 697 NONAME ABSENT
+ _ZN16QGraphicsWebView20setResizesToContentsEb @ 698 NONAME
+ _ZNK16QGraphicsWebView17resizesToContentsEv @ 699 NONAME
+ _Z20qt_drt_numberOfPagesP9QWebFrameff @ 700 NONAME ABSENT
+ _Z24qt_drt_pauseSVGAnimationP9QWebFrameRK7QStringdS3_ @ 701 NONAME ABSENT
+ _Z24qt_drt_webinspector_showP8QWebPage @ 702 NONAME ABSENT
+ _Z24qt_drt_workerThreadCountv @ 703 NONAME ABSENT
+ _Z25qt_drt_hasDocumentElementP9QWebFrame @ 704 NONAME ABSENT
+ _Z25qt_drt_webinspector_closeP8QWebPage @ 705 NONAME ABSENT
+ _Z31qt_drt_pageNumberForElementByIdP9QWebFrameRK7QStringff @ 706 NONAME ABSENT
+ _Z33qt_drt_webinspector_executeScriptP8QWebPagelRK7QString @ 707 NONAME ABSENT
+ _Z34qt_drt_setTimelineProfilingEnabledP8QWebPageb @ 708 NONAME ABSENT
+ _Z32qt_drt_setFrameFlatteningEnabledP8QWebPageb @ 709 NONAME ABSENT
+ _Z36qt_drt_evaluateScriptInIsolatedWorldP9QWebFrameiRK7QString @ 710 NONAME ABSENT
+ _Z47qt_drt_setDomainRelaxationForbiddenForURLSchemebRK7QString @ 711 NONAME ABSENT
+ _ZN9QWebFrame11pageChangedEv @ 712 NONAME
+ _ZN9QWebFrame14scrollToAnchorERK7QString @ 713 NONAME
+ _ZN12QWebSettings15setInspectorUrlERK4QUrl @ 714 NONAME ABSENT
+ _ZN13QWebInspector10closeEventEP11QCloseEvent @ 715 NONAME
+ _ZN16QGraphicsWebView26setTiledBackingStoreFrozenEb @ 716 NONAME
+ _ZNK16QGraphicsWebView25isTiledBackingStoreFrozenEv @ 717 NONAME
+ _Z18qt_wrt_setViewModeP8QWebPageRK7QString @ 718 NONAME ABSENT
+ _Z19qt_drt_setMediaTypeP9QWebFrameRK7QString @ 719 NONAME ABSENT
+ _Z26qt_drt_enableCaretBrowsingP8QWebPageb @ 720 NONAME ABSENT
+ _ZNK12QWebSettings12inspectorUrlEv @ 721 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt19webPageSetGroupNameEP8QWebPageRK7QString @ 722 NONAME
+ _ZN23DumpRenderTreeSupportQt16webPageGroupNameEP8QWebPage @ 723 NONAME
+ _ZN23DumpRenderTreeSupportQt23garbageCollectorCollectEv @ 724 NONAME
+ _Z32qtwebkit_webframe_scrollOverflowP9QWebFrameiiRK6QPoint @ 725 NONAME
+ _ZN23DumpRenderTreeSupportQt12setMediaTypeEP9QWebFrameRK7QString @ 726 NONAME
+ _ZN23DumpRenderTreeSupportQt13numberOfPagesEP9QWebFrameff @ 727 NONAME
+ _ZN23DumpRenderTreeSupportQt13selectedRangeEP8QWebPage @ 728 NONAME
+ _ZN23DumpRenderTreeSupportQt14clearFrameNameEP9QWebFrame @ 729 NONAME
+ _ZN23DumpRenderTreeSupportQt14pauseAnimationEP9QWebFrameRK7QStringdS4_ @ 730 NONAME
+ _ZN23DumpRenderTreeSupportQt15dumpFrameLoaderEb @ 731 NONAME
+ _ZN23DumpRenderTreeSupportQt16dumpNotificationEb @ 732 NONAME
+ _ZN23DumpRenderTreeSupportQt16isCommandEnabledEP8QWebPageRK7QString @ 733 NONAME
+ _ZN23DumpRenderTreeSupportQt16webInspectorShowEP8QWebPage @ 734 NONAME
+ _ZN23DumpRenderTreeSupportQt17pauseSVGAnimationEP9QWebFrameRK7QStringdS4_ @ 735 NONAME
+ _ZN23DumpRenderTreeSupportQt17webInspectorCloseEP8QWebPage @ 736 NONAME
+ _ZN23DumpRenderTreeSupportQt17workerThreadCountEv @ 737 NONAME
+ _ZN23DumpRenderTreeSupportQt18hasDocumentElementEP9QWebFrame @ 738 NONAME
+ _ZN23DumpRenderTreeSupportQt20dumpEditingCallbacksEb @ 739 NONAME
+ _ZN23DumpRenderTreeSupportQt21markerTextForListItemERK11QWebElement @ 740 NONAME
+ _ZN23DumpRenderTreeSupportQt22javaScriptObjectsCountEv @ 741 NONAME
+ _ZN23DumpRenderTreeSupportQt23setCaretBrowsingEnabledEP8QWebPageb @ 742 NONAME
+ _ZN23DumpRenderTreeSupportQt24executeCoreCommandByNameEP8QWebPageRK7QStringS4_ @ 743 NONAME
+ _ZN23DumpRenderTreeSupportQt21dumpSetAcceptsEditingEb @ 744 NONAME
+ _ZN23DumpRenderTreeSupportQt22resumeActiveDOMObjectsEP9QWebFrame @ 745 NONAME
+ _ZN23DumpRenderTreeSupportQt23suspendActiveDOMObjectsEP9QWebFrame @ 746 NONAME
+ _ZN23DumpRenderTreeSupportQt24numberOfActiveAnimationsEP9QWebFrame @ 747 NONAME
+ _ZN23DumpRenderTreeSupportQt24pageNumberForElementByIdEP9QWebFrameRK7QStringff @ 748 NONAME
+ _ZN23DumpRenderTreeSupportQt25dumpResourceLoadCallbacksEb @ 749 NONAME
+ _ZN23DumpRenderTreeSupportQt25pauseTransitionOfPropertyEP9QWebFrameRK7QStringdS4_ @ 750 NONAME
+ _ZN23DumpRenderTreeSupportQt25setFrameFlatteningEnabledEP8QWebPageb @ 751 NONAME
+ _ZN23DumpRenderTreeSupportQt25webInspectorExecuteScriptEP8QWebPagelRK7QString @ 752 NONAME
+ _ZN23DumpRenderTreeSupportQt25whiteListAccessFromOriginERK7QStringS2_S2_b @ 753 NONAME
+ _ZN23DumpRenderTreeSupportQt26counterValueForElementByIdEP9QWebFrameRK7QString @ 754 NONAME
+ _ZN23DumpRenderTreeSupportQt26firstRectForCharacterRangeEP8QWebPageii @ 755 NONAME
+ _ZN23DumpRenderTreeSupportQt26overwritePluginDirectoriesEv @ 756 NONAME
+ _ZN23DumpRenderTreeSupportQt27resetOriginAccessWhiteListsEv @ 757 NONAME
+ _ZN23DumpRenderTreeSupportQt27setSmartInsertDeleteEnabledEP8QWebPageb @ 758 NONAME
+ _ZN23DumpRenderTreeSupportQt27setTimelineProfilingEnabledEP8QWebPageb @ 759 NONAME
+ _ZN23DumpRenderTreeSupportQt28setDumpRenderTreeModeEnabledEb @ 760 NONAME
+ _ZN23DumpRenderTreeSupportQt29dumpResourceLoadCallbacksPathERK7QString @ 761 NONAME
+ _ZN23DumpRenderTreeSupportQt29evaluateScriptInIsolatedWorldEP9QWebFrameiRK7QString @ 762 NONAME
+ _ZN23DumpRenderTreeSupportQt29setJavaScriptProfilingEnabledEP9QWebFrameb @ 763 NONAME
+ _ZN23DumpRenderTreeSupportQt29setWillSendRequestReturnsNullEb @ 764 NONAME
+ _ZN23DumpRenderTreeSupportQt30setWillSendRequestClearHeadersERK11QStringList @ 765 NONAME
+ _ZN23DumpRenderTreeSupportQt33computedStyleIncludingVisitedInfoERK11QWebElement @ 766 NONAME
+ _ZN23DumpRenderTreeSupportQt34setSelectTrailingWhitespaceEnabledEP8QWebPageb @ 767 NONAME
+ _ZN23DumpRenderTreeSupportQt39elementDoesAutoCompleteForElementWithIdEP9QWebFrameRK7QString @ 768 NONAME
+ _ZN23DumpRenderTreeSupportQt39setWillSendRequestReturnsNullOnRedirectEb @ 769 NONAME
+ _ZN23DumpRenderTreeSupportQt40garbageCollectorCollectOnAlternateThreadEb @ 770 NONAME
+ _ZN23DumpRenderTreeSupportQt40setDomainRelaxationForbiddenForURLSchemeEbRK7QString @ 771 NONAME
+ _ZN23DumpRenderTreeSupportQt18setEditingBehaviorEP8QWebPageRK7QString @ 772 NONAME
+ _ZN23DumpRenderTreeSupportQt24setNotificationsReceiverEP7QObject @ 773 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt26allowNotificationForOriginERK7QString @ 774 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt26setCheckPermissionFunctionEPFvP7QObjectRK4QUrlR22NotificationPermissionE @ 775 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt28setRequestPermissionFunctionEPFvP7QObjectRK7QStringE @ 776 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt31removeWhiteListAccessFromOriginERK7QStringS2_S2_b @ 777 NONAME
+ _ZN23DumpRenderTreeSupportQt11shouldCloseEP9QWebFrame @ 778 NONAME
+ _ZN23DumpRenderTreeSupportQt12isTargetItemERK15QWebHistoryItem @ 779 NONAME
+ _ZN23DumpRenderTreeSupportQt17historyItemTargetERK15QWebHistoryItem @ 780 NONAME
+ _ZN23DumpRenderTreeSupportQt20getChildHistoryItemsERK15QWebHistoryItem @ 781 NONAME
+ _ZN23DumpRenderTreeSupportQt23setMockGeolocationErrorEiRK7QString @ 782 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt26setMockGeolocationPositionEddd @ 783 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt17clearScriptWorldsEv @ 784 NONAME
+ _ZN23DumpRenderTreeSupportQt23setCustomPolicyDelegateEbb @ 785 NONAME
+ _ZN15QWebScriptWorldC1ERKS_ @ 786 NONAME
+ _ZN15QWebScriptWorldC1Ev @ 787 NONAME
+ _ZN15QWebScriptWorldC2ERKS_ @ 788 NONAME
+ _ZN15QWebScriptWorldC2Ev @ 789 NONAME
+ _ZN15QWebScriptWorldD1Ev @ 790 NONAME
+ _ZN15QWebScriptWorldD2Ev @ 791 NONAME
+ _ZN15QWebScriptWorldaSERKS_ @ 792 NONAME
+ _ZN23DumpRenderTreeSupportQt29dumpResourceResponseMIMETypesEb @ 793 NONAME
+ _ZN23DumpRenderTreeSupportQtC1Ev @ 794 NONAME
+ _ZN23DumpRenderTreeSupportQtC2Ev @ 795 NONAME
+ _ZN23DumpRenderTreeSupportQtD1Ev @ 796 NONAME
+ _ZN23DumpRenderTreeSupportQtD2Ev @ 797 NONAME
+ _ZN8QWebPage23allowGeolocationRequestEP9QWebFrame @ 798 NONAME ABSENT
+ _ZN8QWebPage23viewportChangeRequestedERKNS_13ViewportHintsE @ 799 NONAME ABSENT
+ _ZNK15QWebScriptWorld5worldEv @ 800 NONAME
+ _ZN16QGraphicsWebView13setDeviceSizeERK5QSize @ 801 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt12pagePropertyEP9QWebFrameRK7QStringi @ 802 NONAME
+ _ZN23DumpRenderTreeSupportQt16isPageBoxVisibleEP9QWebFramei @ 803 NONAME
+ _ZN23DumpRenderTreeSupportQt16resumeAnimationsEP9QWebFrame @ 804 NONAME
+ _ZN23DumpRenderTreeSupportQt17addUserStyleSheetEP8QWebPageRK7QString @ 805 NONAME
+ _ZN23DumpRenderTreeSupportQt17suspendAnimationsEP9QWebFrame @ 806 NONAME
+ _ZN23DumpRenderTreeSupportQt26pageSizeAndMarginsInPixelsEP9QWebFrameiiiiiii @ 807 NONAME
+ _ZN23DumpRenderTreeSupportQt28setDeferMainResourceDataLoadEb @ 808 NONAME
+ _ZN8QWebPage17setUserPermissionEP9QWebFrameNS_16PermissionDomainENS_16PermissionPolicyE @ 809 NONAME ABSENT
+ _ZN8QWebPage23checkPermissionFromUserEP9QWebFrameNS_16PermissionDomainERNS_16PermissionPolicyE @ 810 NONAME ABSENT
+ _ZN8QWebPage25requestPermissionFromUserEP9QWebFrameNS_16PermissionDomainE @ 811 NONAME ABSENT
+ _ZN8QWebPage27cancelRequestsForPermissionEP9QWebFrameNS_16PermissionDomainE @ 812 NONAME ABSENT
+ _ZNK16QGraphicsWebView10deviceSizeEv @ 813 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt14viewportAsTextEP8QWebPageRK5QSize @ 814 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt32simulateDesktopNotificationClickERK7QString @ 815 NONAME
+ _ZN8QWebPage23viewportChangeRequestedEv @ 816 NONAME
+ _ZNK8QWebPage28viewportConfigurationForSizeERK5QSize @ 817 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt20dumpHistoryCallbacksEb @ 818 NONAME
+ _ZN23DumpRenderTreeSupportQt25dumpVisitedLinksCallbacksEb @ 819 NONAME
+ _ZN23DumpRenderTreeSupportQt9plainTextERK8QVariant @ 820 NONAME
+ _ZNK8QWebPage25viewportAttributesForSizeERK5QSize @ 821 NONAME
+ _ZN8QWebPage18ViewportAttributesC1ERKS0_ @ 822 NONAME
+ _ZN8QWebPage18ViewportAttributesC1Ev @ 823 NONAME
+ _ZN8QWebPage18ViewportAttributesC2ERKS0_ @ 824 NONAME
+ _ZN8QWebPage18ViewportAttributesC2Ev @ 825 NONAME
+ _ZN8QWebPage18ViewportAttributesD1Ev @ 826 NONAME
+ _ZN8QWebPage18ViewportAttributesD2Ev @ 827 NONAME
+ _ZN8QWebPage18ViewportAttributesaSERKS0_ @ 828 NONAME
+ _ZN23DumpRenderTreeSupportQt13nodesFromRectERK11QWebElementiijjjjb @ 829 NONAME
+ _ZN23DumpRenderTreeSupportQt28dumpUserGestureInFrameLoaderEb @ 830 NONAME
+ _ZNK8QWebPage19supportsContentTypeERK7QString @ 831 NONAME
+ _ZNK8QWebPage21supportedContentTypesEv @ 832 NONAME
+ _ZNK8QWebPage27setActualVisibleContentRectERK5QRect @ 833 NONAME
+ _ZN8QWebPage20setFeaturePermissionEP9QWebFrameNS_7FeatureENS_16PermissionPolicyE @ 834 NONAME
+ _ZN8QWebPage26featurePermissionRequestedEP9QWebFrameNS_7FeatureE @ 835 NONAME
+ _ZN8QWebPage32featurePermissionRequestCanceledEP9QWebFrameNS_7FeatureE @ 836 NONAME
+ _Z33qtwebkit_setPluginCreatedCallbackPFvP9QWebFramePvS1_E @ 837 NONAME
+ _ZN23DumpRenderTreeSupportQt23setMockGeolocationErrorEP8QWebPageiRK7QString @ 838 NONAME
+ _ZN23DumpRenderTreeSupportQt26setMockGeolocationPositionEP8QWebPageddd @ 839 NONAME
+ _ZN23DumpRenderTreeSupportQt14viewportAsTextEP8QWebPageiRK5QSizeS4_ @ 840 NONAME
+ _ZN23DumpRenderTreeSupportQt26mediaContentUrlByElementIdEP9QWebFrameRK7QString @ 841 NONAME
+ _ZNK8QWebPage12hasSelectionEv @ 842 NONAME
+ _ZNK8QWebPage12selectedHtmlEv @ 843 NONAME
+ _ZN11QWebElement6renderEP8QPainterRK5QRect @ 844 NONAME
+ _ZN16QGraphicsWebView13setRenderHintEN8QPainter10RenderHintEb @ 845 NONAME
+ _ZN16QGraphicsWebView14setRenderHintsE6QFlagsIN8QPainter10RenderHintEE @ 846 NONAME
+ _ZNK16QGraphicsWebView11renderHintsEv @ 847 NONAME
+ _ZN18QWebSecurityOrigin24setApplicationCacheQuotaEx @ 848 NONAME
+ _ZN8QWebPage29applicationCacheQuotaExceededEP18QWebSecurityOriginy @ 849 NONAME
+ _ZNK8QWebView12hasSelectionEv @ 850 NONAME
+ _ZNK8QWebView12selectedHtmlEv @ 851 NONAME
+ _ZN23DumpRenderTreeSupportQt10findStringEP8QWebPageRK7QStringRK11QStringList @ 852 NONAME
+ _ZN23DumpRenderTreeSupportQt10shadowRootERK11QWebElement @ 853 NONAME
+ _ZN23DumpRenderTreeSupportQt11clearOpenerEP9QWebFrame @ 854 NONAME
+ _ZN23DumpRenderTreeSupportQt11contextMenuEP8QWebPage @ 855 NONAME
+ _ZN23DumpRenderTreeSupportQt13setAutofilledERK11QWebElementb @ 856 NONAME
+ _ZN23DumpRenderTreeSupportQt16addURLToRedirectERK7QStringS2_ @ 857 NONAME
+ _ZN23DumpRenderTreeSupportQt16ensureShadowRootERK11QWebElement @ 858 NONAME
+ _ZN23DumpRenderTreeSupportQt16removeShadowRootERK11QWebElement @ 859 NONAME
+ _ZN23DumpRenderTreeSupportQt16responseMimeTypeEP9QWebFrame @ 860 NONAME
+ _ZN23DumpRenderTreeSupportQt16setAlternateHtmlEP9QWebFrameRK7QStringRK4QUrlS7_ @ 861 NONAME
+ _ZN23DumpRenderTreeSupportQt20resetGeolocationMockEP8QWebPage @ 862 NONAME
+ _ZN23DumpRenderTreeSupportQt23setMinimumTimerIntervalEP8QWebPaged @ 863 NONAME
+ _ZN23DumpRenderTreeSupportQt24setMockDeviceOrientationEbdbdbd @ 864 NONAME
+ _ZN23DumpRenderTreeSupportQt25clearAllApplicationCachesEv @ 865 NONAME
+ _ZN23DumpRenderTreeSupportQt27defaultMinimumTimerIntervalEv @ 866 NONAME
+ _ZN23DumpRenderTreeSupportQt27removeMockDeviceOrientationEv @ 867 NONAME
+ _ZN23DumpRenderTreeSupportQt28setMockGeolocationPermissionEP8QWebPageb @ 868 NONAME
+ _ZN23DumpRenderTreeSupportQt33activeMockDeviceOrientationClientEb @ 869 NONAME
+ _ZN23DumpRenderTreeSupportQt44numberOfPendingGeolocationPermissionRequestsEP8QWebPage @ 870 NONAME
+ _ZN8QDRTNodeC1EPN7WebCore4NodeE @ 871 NONAME
+ _ZN8QDRTNodeC1ERKS_ @ 872 NONAME
+ _ZN8QDRTNodeC1Ev @ 873 NONAME
+ _ZN8QDRTNodeC2EPN7WebCore4NodeE @ 874 NONAME
+ _ZN8QDRTNodeC2ERKS_ @ 875 NONAME
+ _ZN8QDRTNodeC2Ev @ 876 NONAME
+ _ZN8QDRTNodeD1Ev @ 877 NONAME
+ _ZN8QDRTNodeD2Ev @ 878 NONAME
+ _ZN8QDRTNodeaSERKS_ @ 879 NONAME
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/symbian/platformplugin/qss/OverlayWidget.qss b/src/3rdparty/webkit/Source/WebKit/qt/symbian/platformplugin/qss/OverlayWidget.qss index b01d43f..2a4ee9d 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/symbian/platformplugin/qss/OverlayWidget.qss +++ b/src/3rdparty/webkit/Source/WebKit/qt/symbian/platformplugin/qss/OverlayWidget.qss @@ -1,59 +1,59 @@ -QSlider::groove { - border: 2px solid black; - border-radius: 5px; - background: white; -} - -QSlider::handle { - border: 2px solid black; - border-radius: 8px; - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eee, stop:1 #ccc); -} - -QSlider::add-page { - border: 2px solid black; - border-radius: 5px; -} - -QSlider::sub-page { - border: 2px solid black; - border-radius: 5px; -} - -QSlider::groove:horizontal { - height: 10px; -} - -QSlider::handle:horizontal { - width: 40px; - margin-top: -15px; - margin-bottom: -15px; -} - -QSlider::add-page:horizontal { - height: 10px; - background: white; -} - -QSlider::sub-page:horizontal { - height: 10px; - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eee, stop:1 #ccc); -} - -QSlider::groove:vertical { - width: 10px; -} - -QSlider::handle:vertical { - height: 40px; margin-left: -15px; margin-right: -15px; -} - -QSlider::add-page:vertical { - width: 10px; - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eee, stop:1 #ccc); -} - -QSlider::sub-page:vertical { - width: 10px; - background: white; +QSlider::groove {
+ border: 2px solid black;
+ border-radius: 5px;
+ background: white;
+}
+
+QSlider::handle {
+ border: 2px solid black;
+ border-radius: 8px;
+ background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eee, stop:1 #ccc);
+}
+
+QSlider::add-page {
+ border: 2px solid black;
+ border-radius: 5px;
+}
+
+QSlider::sub-page {
+ border: 2px solid black;
+ border-radius: 5px;
+}
+
+QSlider::groove:horizontal {
+ height: 10px;
+}
+
+QSlider::handle:horizontal {
+ width: 40px;
+ margin-top: -15px;
+ margin-bottom: -15px;
+}
+
+QSlider::add-page:horizontal {
+ height: 10px;
+ background: white;
+}
+
+QSlider::sub-page:horizontal {
+ height: 10px;
+ background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eee, stop:1 #ccc);
+}
+
+QSlider::groove:vertical {
+ width: 10px;
+}
+
+QSlider::handle:vertical {
+ height: 40px; margin-left: -15px; margin-right: -15px;
+}
+
+QSlider::add-page:vertical {
+ width: 10px;
+ background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eee, stop:1 #ccc);
+}
+
+QSlider::sub-page:vertical {
+ width: 10px;
+ background: white;
}
\ No newline at end of file diff --git a/src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/application_postscript b/src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/application_postscript index 41107c3..c4b9ae6 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/application_postscript +++ b/src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/application_postscript @@ -1,137 +1,137 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Creator: HiJaak 2.1 -%%CreationDate: 12/29/93 13:52:08 -%%BoundingBox:126 216 486 576 -%%EndComments -/ld {load def} bind def -/s /stroke ld /f /fill ld /m /moveto ld /l /lineto ld /c /curveto ld /rgb {255 div 3 1 roll 255 div 3 1 roll 255 div 3 1 roll setrgbcolor} def -126 216 translate -360.0000 360.0000 scale -/picstr 124 string def -124 124 8 [124 0 0 -124 0 124] {currentfile picstr readhexstring pop} image -65656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD1B1B1B1B1B1B1B1B1B1BFF -65656565656565656565656565656565656565656565656565656565656565006565656565006565656500656565656565000000656565656565656565656565656565656565656565656565656565656565ADADAD00ADADAD000000ADAD00ADADADADAD00AD00ADADADAD00ADADADAD00000000001B1B001B1B1BFF -65656565656565656565656565656565656565656565656565656565656565000065656500006565650065006565656500656565006565656565656565656565656565656565656565656565656565656565ADADAD00ADAD00ADADAD00ADAD00ADADAD00ADAD0000ADADAD00ADADADAD001B1B1B1B001B001B1B1BFF -65656565656565656565656565656565656565656565656565656565656565000065656500006565650065006565650065656565650065656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADAD00ADADAD00ADAD00AD00ADAD00ADADADAD001B1B1B1B001B001B1B1BFF -65656565656565656565656565656565656565656565656565656565656565006500650065006565650065006565650065656565656565656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADADAD00AD00ADADAD00AD00ADAD00ADADADAD00000000001B1B001B1B1BFF -65656565656565656565656565656565656565656565656565656565656565006500650065006565006565650065650065656500000065656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADADADAD00ADADADAD00ADAD00AD00ADADADAD001B1B1B1B001B001B1B1BFF -65656565656565656565656565656565656565656565656565656565656565006500650065006565000000000065650065656565650065656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADADADAD00ADADADAD00ADAD00AD00ADADADAD001B1B1B1B001B001B1B1BFF -65656565656565656565656565656565656565656565656565656565656565006565006565006500656565656500656500656565006565656565656565656565656565656565656565656565656565656565ADADAD00ADAD00ADADAD00ADADADAD00ADADADAD00ADADAD0000ADADADAD001B1B1B1B001B001B1B1BFF -65656565656565656565656565656565656565656565656565656565656565006565006565006500656565656500656565000000656565656565656565656565656565656565656565656565656565656565ADADAD00ADADAD000000ADADADADAD00ADADADAD00ADADADAD00ADADADAD00000000001B1B00000000FF -65656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565ADADAD00ADADADADADADADADADADADADADADADADADADADADADADADADADADAD1B1B1B1B1B1B1B1B1B1BFF -65656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565ADADAD00ADADADADADADADADADADADADADADADADADADADADADADADADADADAD1B1B1B1B1B1B1B1B1B1BFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDC0000DC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292000000009292000000000092920000929200009292929292ADADADAD00000000ADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDC0000DC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929200009292000092000092920000920000929200009292929292ADADAD0000ADAD0000ADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDC00DCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929292929292000092920000920000009200009292929292ADAD0000ADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00000000DCDC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929292929292000092920000920000009200009292929292ADAD0000ADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929200000092000000000092920000920000009292929292ADAD0000ADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929292000092000092000092920000920000009292929292ADAD0000ADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929200009292000092000092920000920000929200009292929292ADADAD0000ADAD0000ADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000000000DC000000000000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292000000009292000092929200000000929200009292929292ADADADAD00000000ADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00000000004A4A00000000004A00000000004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDC0000DCDC0000DC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDC00000065656500000065FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDC0000DCDC0000DC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00000065656500000065FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDC00DCDC00DCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00000000650000000065FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00000000004A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDC00000000DCDC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDC00000000650000000065FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00000000004A4A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00006500650065000065FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A00004A4A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00006500000065000065FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00006500000065000065FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A4A000000000000004A00000000004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000000000DC000000000000DCDCDCDCDCDCDC00006565006565000065FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A00000000004A4A4A4A0000004A4A4A00000000004A4A4A4A004A4A4A4A4A00000000004A00000000004A00000000004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A004A4A4A4A004A4A004A4A4A004A4A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A004A4A4A4A004A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A00000000004A4A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A00000000004A000000004A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A004A4A4A4A004A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A004A4A4A4A004A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A004A4A4A4A004A4A004A4A4A004A4A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A00000000004A4A4A4A0000004A4A4A4A4A004A4A4A4A4A4A00000000004A00000000004A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF -showpage +%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: HiJaak 2.1
+%%CreationDate: 12/29/93 13:52:08
+%%BoundingBox:126 216 486 576
+%%EndComments
+/ld {load def} bind def
+/s /stroke ld /f /fill ld /m /moveto ld /l /lineto ld /c /curveto ld /rgb {255 div 3 1 roll 255 div 3 1 roll 255 div 3 1 roll setrgbcolor} def
+126 216 translate
+360.0000 360.0000 scale
+/picstr 124 string def
+124 124 8 [124 0 0 -124 0 124] {currentfile picstr readhexstring pop} image
+65656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD1B1B1B1B1B1B1B1B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006565656565006565656500656565656565000000656565656565656565656565656565656565656565656565656565656565ADADAD00ADADAD000000ADAD00ADADADADAD00AD00ADADADAD00ADADADAD00000000001B1B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565000065656500006565650065006565656500656565006565656565656565656565656565656565656565656565656565656565ADADAD00ADAD00ADADAD00ADAD00ADADAD00ADAD0000ADADAD00ADADADAD001B1B1B1B001B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565000065656500006565650065006565650065656565650065656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADAD00ADADAD00ADAD00AD00ADAD00ADADADAD001B1B1B1B001B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006500650065006565650065006565650065656565656565656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADADAD00AD00ADADAD00AD00ADAD00ADADADAD00000000001B1B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006500650065006565006565650065650065656500000065656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADADADAD00ADADADAD00ADAD00AD00ADADADAD001B1B1B1B001B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006500650065006565000000000065650065656565650065656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADADADAD00ADADADAD00ADAD00AD00ADADADAD001B1B1B1B001B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006565006565006500656565656500656500656565006565656565656565656565656565656565656565656565656565656565ADADAD00ADAD00ADADAD00ADADADAD00ADADADAD00ADADAD0000ADADADAD001B1B1B1B001B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006565006565006500656565656500656565000000656565656565656565656565656565656565656565656565656565656565ADADAD00ADADAD000000ADADADADAD00ADADADAD00ADADADAD00ADADADAD00000000001B1B00000000FF
+65656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565ADADAD00ADADADADADADADADADADADADADADADADADADADADADADADADADADAD1B1B1B1B1B1B1B1B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565ADADAD00ADADADADADADADADADADADADADADADADADADADADADADADADADADAD1B1B1B1B1B1B1B1B1B1BFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDC0000DC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292000000009292000000000092920000929200009292929292ADADADAD00000000ADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDC0000DC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929200009292000092000092920000920000929200009292929292ADADAD0000ADAD0000ADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDC00DCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929292929292000092920000920000009200009292929292ADAD0000ADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00000000DCDC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929292929292000092920000920000009200009292929292ADAD0000ADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929200000092000000000092920000920000009292929292ADAD0000ADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929292000092000092000092920000920000009292929292ADAD0000ADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929200009292000092000092920000920000929200009292929292ADADAD0000ADAD0000ADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000000000DC000000000000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292000000009292000092929200000000929200009292929292ADADADAD00000000ADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00000000004A4A00000000004A00000000004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDC0000DCDC0000DC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDC00000065656500000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDC0000DCDC0000DC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00000065656500000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDC00DCDC00DCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00000000650000000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00000000004A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDC00000000DCDC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDC00000000650000000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00000000004A4A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00006500650065000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A00004A4A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00006500000065000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00006500000065000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A4A000000000000004A00000000004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000000000DC000000000000DCDCDCDCDCDCDC00006565006565000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A00000000004A4A4A4A0000004A4A4A00000000004A4A4A4A004A4A4A4A4A00000000004A00000000004A00000000004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A004A4A4A4A004A4A004A4A4A004A4A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A004A4A4A4A004A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A00000000004A4A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A00000000004A000000004A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A004A4A4A4A004A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A004A4A4A4A004A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A004A4A4A4A004A4A004A4A4A004A4A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A00000000004A4A4A4A0000004A4A4A4A4A004A4A4A4A4A4A00000000004A00000000004A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+showpage
\ No newline at end of file diff --git a/src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/text_xml b/src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/text_xml index dd4f6fd..38a9fe5 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/text_xml +++ b/src/3rdparty/webkit/Source/WebKit/qt/tests/MIMESniffing/resources/text_xml @@ -1,19 +1,19 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<CATALOG> - <CD> - <TITLE>Empire Burlesque</TITLE> - <ARTIST>Bob Dylan</ARTIST> - <COUNTRY>USA</COUNTRY> - <COMPANY>Columbia</COMPANY> - <PRICE>10.90</PRICE> - <YEAR>1985</YEAR> - </CD> - <CD> - <TITLE>Unchain my heart</TITLE> - <ARTIST>Joe Cocker</ARTIST> - <COUNTRY>USA</COUNTRY> - <COMPANY>EMI</COMPANY> - <PRICE>8.20</PRICE> - <YEAR>1987</YEAR> - </CD> -</CATALOG> +<?xml version="1.0" encoding="ISO-8859-1"?>
+<CATALOG>
+ <CD>
+ <TITLE>Empire Burlesque</TITLE>
+ <ARTIST>Bob Dylan</ARTIST>
+ <COUNTRY>USA</COUNTRY>
+ <COMPANY>Columbia</COMPANY>
+ <PRICE>10.90</PRICE>
+ <YEAR>1985</YEAR>
+ </CD>
+ <CD>
+ <TITLE>Unchain my heart</TITLE>
+ <ARTIST>Joe Cocker</ARTIST>
+ <COUNTRY>USA</COUNTRY>
+ <COMPANY>EMI</COMPANY>
+ <PRICE>8.20</PRICE>
+ <YEAR>1987</YEAR>
+ </CD>
+</CATALOG>
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe.html b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe.html index 4b0e30c..ee0f64d 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe.html +++ b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe.html @@ -1,53 +1,53 @@ -<html> -<head> -<title></title> -<style type="text/css"> -<!-- -#header { - background: #0f0; - position: absolute; - top: 0px; - left: 0px; - width: 800px; - height: 100px; -} -#content1 { - background: #ff0; - position: absolute; - top: 101px; - left: 0px; - width: 400px; - height: 400px; - overflow: scroll; -} -#content2 { - background: #ff7; - position: absolute; - top: 101px; - left: 401px; - width: 400px; - height: 400px; -} -#footer { - background: #0f0; - position: absolute; - top: 502px; - left: 0px; - width: 800px; - height: 200px; -} ---> -</style> -</head> -<body> -<div id="header"></div> -<div id="content1">You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible. -You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible. -You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible. -You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible. -You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible. -You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.</div> -<iframe id="content2" name="control" src="testiframe2.html"> </iframe> -<div id="footer"></div> -</body> +<html>
+<head>
+<title></title>
+<style type="text/css">
+<!--
+#header {
+ background: #0f0;
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ width: 800px;
+ height: 100px;
+}
+#content1 {
+ background: #ff0;
+ position: absolute;
+ top: 101px;
+ left: 0px;
+ width: 400px;
+ height: 400px;
+ overflow: scroll;
+}
+#content2 {
+ background: #ff7;
+ position: absolute;
+ top: 101px;
+ left: 401px;
+ width: 400px;
+ height: 400px;
+}
+#footer {
+ background: #0f0;
+ position: absolute;
+ top: 502px;
+ left: 0px;
+ width: 800px;
+ height: 200px;
+}
+-->
+</style>
+</head>
+<body>
+<div id="header"></div>
+<div id="content1">You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
+You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
+You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
+You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
+You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.
+You can use the overflow property when you want to have better control of the layout. Try to change the overflow property to: visible, hidden, auto, or inherit and see what happens. The default value is visible.</div>
+<iframe id="content2" name="control" src="testiframe2.html"> </iframe>
+<div id="footer"></div>
+</body>
</html>
\ No newline at end of file diff --git a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe2.html b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe2.html index 8957a5d..483e94e 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe2.html +++ b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/resources/testiframe2.html @@ -1,20 +1,20 @@ -<html> -<head> -<title></title> -<style type="text/css"> -<!-- -#content { - background: #fff; - position: absolute; - top: 0px; - left: 0px; - width: 800px; - height: 800px; -} ---> -</style> -</head> -<body> -<div id="content"> </div> -</body> +<html>
+<head>
+<title></title>
+<style type="text/css">
+<!--
+#content {
+ background: #fff;
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ width: 800px;
+ height: 800px;
+}
+-->
+</style>
+</head>
+<body>
+<div id="content"> </div>
+</body>
</html>
\ No newline at end of file diff --git a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp index f2bdcee..c9e862a 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp @@ -649,7 +649,7 @@ private slots: void setContent_data(); void setContent(); void setCacheLoadControlAttribute(); - //void setUrlWithPendingLoads(); + void setUrlWithPendingLoads(); void setUrlWithFragment_data(); void setUrlWithFragment(); void setUrlToEmpty(); @@ -658,6 +658,9 @@ private slots: void setUrlSameUrl(); void setUrlThenLoads_data(); void setUrlThenLoads(); + void loadFinishedAfterNotFoundError(); + void loadInSignalHandlers_data(); + void loadInSignalHandlers(); private: QString evalJS(const QString&s) { @@ -2301,6 +2304,8 @@ class FakeReply : public QNetworkReply { Q_OBJECT public: + static const QUrl urlFor404ErrorWithoutContents; + FakeReply(const QNetworkRequest& request, QObject* parent = 0) : QNetworkReply(parent) { @@ -2320,6 +2325,10 @@ public: else if (request.url().host() == QLatin1String("abcdef.abcdef")) { setError(QNetworkReply::HostNotFoundError, tr("Invalid URL")); QTimer::singleShot(0, this, SLOT(continueError())); + } else if (request.url() == FakeReply::urlFor404ErrorWithoutContents) { + setError(QNetworkReply::ContentNotFoundError, "Not found"); + setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 404); + QTimer::singleShot(0, this, SLOT(continueError())); } open(QIODevice::ReadOnly); @@ -2351,6 +2360,8 @@ private slots: } }; +const QUrl FakeReply::urlFor404ErrorWithoutContents = QUrl("http://this.will/return-http-404-error-without-contents.html"); + class FakeNetworkManager : public QNetworkAccessManager { Q_OBJECT @@ -2362,17 +2373,17 @@ protected: { QString url = request.url().toString(); if (op == QNetworkAccessManager::GetOperation) { - if (url == "qrc:/test1.html" || url == "http://abcdef.abcdef/") - return new FakeReply(request, this); #ifndef QT_NO_OPENSSL - else if (url == "qrc:/fake-ssl-error.html") { + if (url == "qrc:/fake-ssl-error.html") { FakeReply* reply = new FakeReply(request, this); QList<QSslError> errors; emit sslErrors(reply, errors << QSslError(QSslError::UnspecifiedError)); return reply; } #endif - } + if (url == "qrc:/test1.html" || url == "http://abcdef.abcdef/" || request.url() == FakeReply::urlFor404ErrorWithoutContents) + return new FakeReply(request, this); + } return QNetworkAccessManager::createRequest(op, request, outgoingData); } @@ -2502,9 +2513,7 @@ void tst_QWebFrame::setHtmlWithResource() QCOMPARE(spy.count(), 1); QCOMPARE(frame->evaluateJavaScript("document.images.length").toInt(), 1); - QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=63235", Continue); QCOMPARE(frame->evaluateJavaScript("document.images[0].width").toInt(), 128); - QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=63235", Continue); QCOMPARE(frame->evaluateJavaScript("document.images[0].height").toInt(), 128); QString html2 = @@ -2523,7 +2532,6 @@ void tst_QWebFrame::setHtmlWithResource() QCOMPARE(spy.size(), 2); QWebElement p = frame->documentElement().findAll("p").at(0); - QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=63235", Continue); QCOMPARE(p.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("red")); } @@ -2898,7 +2906,10 @@ void tst_QWebFrame::renderGeometry() QList<QWebFrame*> frames = page.mainFrame()->childFrames(); QWebFrame *frame = frames.at(0); QString innerHtml("<body style='margin: 0px;'><img src='qrc:/image.png'/></body>"); - frame->setHtml(innerHtml); + + // By default, only security origins of local files can load local resources. + // So we should specify baseUrl to be a local file in order to get a proper origin. + frame->setHtml(innerHtml, QUrl("file:///path/to/file")); waitForSignal(frame, SIGNAL(loadFinished(bool)), 200); QPicture picture; @@ -2911,9 +2922,7 @@ void tst_QWebFrame::renderGeometry() frame->render(&painter1, QWebFrame::ContentsLayer); painter1.end(); - QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=63236", Continue); QCOMPARE(size.width(), picture.boundingRect().width() + frame->scrollBarGeometry(Qt::Vertical).width()); - QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=63236", Continue); QCOMPARE(size.height(), picture.boundingRect().height() + frame->scrollBarGeometry(Qt::Horizontal).height()); // render everything, should be the size of the iframe @@ -2921,9 +2930,7 @@ void tst_QWebFrame::renderGeometry() frame->render(&painter2, QWebFrame::AllLayers); painter2.end(); - QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=63236", Continue); QCOMPARE(size.width(), picture.boundingRect().width()); // width: 100px - QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=63236", Continue); QCOMPARE(size.height(), picture.boundingRect().height()); // height: 100px } @@ -3359,16 +3366,12 @@ void tst_QWebFrame::webElementSlotOnly() QCOMPARE(evalJS("myWebElementSlotObject.tagName"), QString("BODY")); } -// [Qt] Fix tst_QWebFrame::setUrlWithPendingLoads() API test -// https://bugs.webkit.org/show_bug.cgi?id=63237 -/* void tst_QWebFrame::setUrlWithPendingLoads() { QWebPage page; page.mainFrame()->setHtml("<img src='dummy:'/>"); page.mainFrame()->setUrl(QUrl("about:blank")); } -*/ void tst_QWebFrame::setUrlWithFragment_data() { @@ -3658,5 +3661,113 @@ void tst_QWebFrame::setUrlThenLoads() QCOMPARE(frame->baseUrl(), extractBaseUrl(urlToLoad2)); } +void tst_QWebFrame::loadFinishedAfterNotFoundError() +{ + QWebPage page; + QWebFrame* frame = page.mainFrame(); + + QSignalSpy spy(&page, SIGNAL(loadFinished(bool))); + FakeNetworkManager* networkManager = new FakeNetworkManager(&page); + page.setNetworkAccessManager(networkManager); + + frame->setUrl(FakeReply::urlFor404ErrorWithoutContents); + QTRY_COMPARE(spy.count(), 1); + const bool wasLoadOk = spy.at(0).at(0).toBool(); + QVERIFY(!wasLoadOk); +} + +class URLSetter : public QObject { + Q_OBJECT + +public: + enum Signal { + LoadStarted, + LoadFinished, + ProvisionalLoad + }; + + enum Type { + UseLoad, + UseSetUrl + }; + + URLSetter(QWebFrame*, Signal, Type, const QUrl&); + +public slots: + void execute(); + +signals: + void finished(); + +private: + QWebFrame* m_frame; + QUrl m_url; + Type m_type; +}; + +Q_DECLARE_METATYPE(URLSetter::Signal) +Q_DECLARE_METATYPE(URLSetter::Type) + +URLSetter::URLSetter(QWebFrame* frame, Signal signal, URLSetter::Type type, const QUrl& url) + : m_frame(frame), m_url(url), m_type(type) +{ + if (signal == LoadStarted) + connect(m_frame, SIGNAL(loadStarted()), SLOT(execute())); + else if (signal == LoadFinished) + connect(m_frame, SIGNAL(loadFinished(bool)), SLOT(execute())); + else + connect(m_frame, SIGNAL(provisionalLoad()), SLOT(execute())); +} + +void URLSetter::execute() +{ + // We track only the first emission. + m_frame->disconnect(this); + if (m_type == URLSetter::UseLoad) + m_frame->load(m_url); + else + m_frame->setUrl(m_url); + connect(m_frame, SIGNAL(loadFinished(bool)), SIGNAL(finished())); +} + +void tst_QWebFrame::loadInSignalHandlers_data() +{ + QTest::addColumn<URLSetter::Type>("type"); + QTest::addColumn<URLSetter::Signal>("signal"); + QTest::addColumn<QUrl>("url"); + + const QUrl validUrl("qrc:/test2.html"); + const QUrl invalidUrl("qrc:/invalid"); + + QTest::newRow("call load() in loadStarted() after valid url") << URLSetter::UseLoad << URLSetter::LoadStarted << validUrl; + QTest::newRow("call load() in loadStarted() after invalid url") << URLSetter::UseLoad << URLSetter::LoadStarted << invalidUrl; + QTest::newRow("call load() in loadFinished() after valid url") << URLSetter::UseLoad << URLSetter::LoadFinished << validUrl; + QTest::newRow("call load() in loadFinished() after invalid url") << URLSetter::UseLoad << URLSetter::LoadFinished << invalidUrl; + QTest::newRow("call load() in provisionalLoad() after valid url") << URLSetter::UseLoad << URLSetter::ProvisionalLoad << validUrl; + QTest::newRow("call load() in provisionalLoad() after invalid url") << URLSetter::UseLoad << URLSetter::ProvisionalLoad << invalidUrl; + + QTest::newRow("call setUrl() in loadStarted() after valid url") << URLSetter::UseSetUrl << URLSetter::LoadStarted << validUrl; + QTest::newRow("call setUrl() in loadStarted() after invalid url") << URLSetter::UseSetUrl << URLSetter::LoadStarted << invalidUrl; + QTest::newRow("call setUrl() in loadFinished() after valid url") << URLSetter::UseSetUrl << URLSetter::LoadFinished << validUrl; + QTest::newRow("call setUrl() in loadFinished() after invalid url") << URLSetter::UseSetUrl << URLSetter::LoadFinished << invalidUrl; + QTest::newRow("call setUrl() in provisionalLoad() after valid url") << URLSetter::UseSetUrl << URLSetter::ProvisionalLoad << validUrl; + QTest::newRow("call setUrl() in provisionalLoad() after invalid url") << URLSetter::UseSetUrl << URLSetter::ProvisionalLoad << invalidUrl; +} + +void tst_QWebFrame::loadInSignalHandlers() +{ + QFETCH(URLSetter::Type, type); + QFETCH(URLSetter::Signal, signal); + QFETCH(QUrl, url); + + QWebFrame* frame = m_page->mainFrame(); + const QUrl urlForSetter("qrc:/test1.html"); + URLSetter setter(frame, signal, type, urlForSetter); + + frame->load(url); + waitForSignal(&setter, SIGNAL(finished()), 200); + QCOMPARE(frame->url(), urlForSetter); +} + QTEST_MAIN(tst_QWebFrame) #include "tst_qwebframe.moc" diff --git a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp index 359ef05..893c284 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp @@ -130,6 +130,7 @@ private slots: void errorPageExtension(); void errorPageExtensionInIFrames(); void errorPageExtensionInFrameset(); + void errorPageExtensionLoadFinished(); void userAgentApplicationName(); void viewModes(); @@ -2572,6 +2573,35 @@ void tst_QWebPage::errorPageExtensionInFrameset() m_view->setPage(0); } +void tst_QWebPage::errorPageExtensionLoadFinished() +{ + ErrorPage page; + m_view->setPage(&page); + + QSignalSpy spyLoadFinished(m_view, SIGNAL(loadFinished(bool))); + QSignalSpy spyFrameLoadFinished(m_view->page()->mainFrame(), SIGNAL(loadFinished(bool))); + + m_view->setUrl(QUrl("data:text/html,foo")); + QTRY_COMPARE(spyLoadFinished.count(), 1); + QTRY_COMPARE(spyFrameLoadFinished.count(), 1); + + const bool loadSucceded = spyLoadFinished.at(0).at(0).toBool(); + QVERIFY(loadSucceded); + const bool frameLoadSucceded = spyFrameLoadFinished.at(0).at(0).toBool(); + QVERIFY(frameLoadSucceded); + + m_view->page()->mainFrame()->setUrl(QUrl("http://non.existent/url")); + QTRY_COMPARE(spyLoadFinished.count(), 2); + QTRY_COMPARE(spyFrameLoadFinished.count(), 2); + + const bool nonExistantLoadSucceded = spyLoadFinished.at(1).at(0).toBool(); + QVERIFY(nonExistantLoadSucceded); + const bool nonExistantFrameLoadSucceded = spyFrameLoadFinished.at(1).at(0).toBool(); + QVERIFY(nonExistantFrameLoadSucceded); + + m_view->setPage(0); +} + class FriendlyWebPage : public QWebPage { public: diff --git a/src/3rdparty/webkit/Source/WebKit2/ChangeLog b/src/3rdparty/webkit/Source/WebKit2/ChangeLog index b6e5afe..be0c43d 100644 --- a/src/3rdparty/webkit/Source/WebKit2/ChangeLog +++ b/src/3rdparty/webkit/Source/WebKit2/ChangeLog @@ -1,3 +1,30 @@ +2011-08-06 Aron Rosenberg <arosenberg@logitech.com> + + Reviewed by Benjamin Poulain. + + [Qt] Fix build with Intel compiler on Windows + https://bugs.webkit.org/show_bug.cgi?id=65088 + + Intel compiler needs .lib suffixes instead of .a + + * WebKit2.pri: + +2011-06-23 Robert Hogan <robert@webkit.org> + + Reviewed by Simon Hausmann. + + [Qt] Windowless Plugins : <input> cursor blinks even after transferring focus to plugin + https://bugs.webkit.org/show_bug.cgi?id=30355 + + PluginView needs to use page->focusController()->setFocusedNode() when focusing a plugin + in order to clear the FrameSelection in the currently focused node. In its platform-specific + code Chromium already does this (WebPluginContainerImpl.cpp). + + * WebProcess/Plugins/PluginView.cpp: + (WebCore::PluginView::focusPluginElement): Using FocusController::setFocusedNode() makes + the call to FocusController:setFocusedFrame() redundant, since the + former calls it. + 2011-06-27 Huang Dongsung <luxtella@company100.net> Reviewed by Kenneth Rohde Christiansen. diff --git a/src/3rdparty/webkit/Source/WebKit2/WebKit2.pri b/src/3rdparty/webkit/Source/WebKit2/WebKit2.pri index 32c25e1..3122326 100644 --- a/src/3rdparty/webkit/Source/WebKit2/WebKit2.pri +++ b/src/3rdparty/webkit/Source/WebKit2/WebKit2.pri @@ -73,7 +73,7 @@ symbian { defineTest(prependWebKit2Lib) { pathToWebKit2Output = $$ARGS/$$WEBKIT2_DESTDIR - win32-msvc*|wince* { + win32-msvc*|wince*|win32-icc { LIBS = -l$$WEBKIT2_TARGET $$LIBS LIBS = -L$$pathToWebKit2Output $$LIBS POST_TARGETDEPS += $${pathToWebKit2Output}$${QMAKE_DIR_SEP}$${WEBKIT2_TARGET}.lib diff --git a/src/3rdparty/webkit/Source/WebKit2/WebProcess/Plugins/PluginView.cpp b/src/3rdparty/webkit/Source/WebKit2/WebProcess/Plugins/PluginView.cpp index feb1e5c..1962d8c 100644 --- a/src/3rdparty/webkit/Source/WebKit2/WebProcess/Plugins/PluginView.cpp +++ b/src/3rdparty/webkit/Source/WebKit2/WebProcess/Plugins/PluginView.cpp @@ -638,8 +638,9 @@ void PluginView::focusPluginElement() ASSERT(frame()); if (Page* page = frame()->page()) - page->focusController()->setFocusedFrame(frame()); - frame()->document()->setFocusedNode(m_pluginElement); + page->focusController()->setFocusedNode(m_pluginElement.get(), frame()); + else + frame()->document()->setFocusedNode(m_pluginElement); } void PluginView::pendingURLRequestsTimerFired() diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION index 85f9e4f..413f504 100644 --- a/src/3rdparty/webkit/VERSION +++ b/src/3rdparty/webkit/VERSION @@ -4,4 +4,4 @@ This is a snapshot of the Qt port of WebKit from and has the sha1 checksum - a52dbae362a295e0adfb7ee4fdc21734ae4b7b45 + dda59e50379214c098f365a39c4d64b39ced427e diff --git a/src/3rdparty/webkit/WebKitLibraries/libWebCoreSQLite3.a b/src/3rdparty/webkit/WebKitLibraries/libWebCoreSQLite3.a Binary files differnew file mode 100644 index 0000000..2e5fd15 --- /dev/null +++ b/src/3rdparty/webkit/WebKitLibraries/libWebCoreSQLite3.a diff --git a/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceLeopard.a b/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceLeopard.a Binary files differnew file mode 100644 index 0000000..43b6043 --- /dev/null +++ b/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceLeopard.a diff --git a/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceLion.a b/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceLion.a Binary files differnew file mode 100644 index 0000000..345860c --- /dev/null +++ b/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceLion.a diff --git a/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.a b/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.a Binary files differnew file mode 100644 index 0000000..845ca54 --- /dev/null +++ b/src/3rdparty/webkit/WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.a diff --git a/src/3rdparty/webkit/include/JavaScriptCore/APICast.h b/src/3rdparty/webkit/include/JavaScriptCore/APICast.h new file mode 100644 index 0000000..237bfc8 --- /dev/null +++ b/src/3rdparty/webkit/include/JavaScriptCore/APICast.h @@ -0,0 +1 @@ +#include "JavaScriptCore/API/APICast.h" diff --git a/src/3rdparty/webkit/include/JavaScriptCore/Error.h b/src/3rdparty/webkit/include/JavaScriptCore/Error.h new file mode 100644 index 0000000..4635063 --- /dev/null +++ b/src/3rdparty/webkit/include/JavaScriptCore/Error.h @@ -0,0 +1 @@ +#include "JavaScriptCore/runtime/Error.h" diff --git a/src/3rdparty/webkit/include/JavaScriptCore/FunctionPrototype.h b/src/3rdparty/webkit/include/JavaScriptCore/FunctionPrototype.h new file mode 100644 index 0000000..a2829fb --- /dev/null +++ b/src/3rdparty/webkit/include/JavaScriptCore/FunctionPrototype.h @@ -0,0 +1 @@ +#include "JavaScriptCore/runtime/FunctionPrototype.h" diff --git a/src/3rdparty/webkit/include/JavaScriptCore/InternalFunction.h b/src/3rdparty/webkit/include/JavaScriptCore/InternalFunction.h new file mode 100644 index 0000000..7c549e0 --- /dev/null +++ b/src/3rdparty/webkit/include/JavaScriptCore/InternalFunction.h @@ -0,0 +1 @@ +#include "JavaScriptCore/runtime/InternalFunction.h" diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JSBase.h b/src/3rdparty/webkit/include/JavaScriptCore/JSBase.h new file mode 100644 index 0000000..9c3826e --- /dev/null +++ b/src/3rdparty/webkit/include/JavaScriptCore/JSBase.h @@ -0,0 +1 @@ +#include "JavaScriptCore/API/JSBase.h" diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JSContextRef.h b/src/3rdparty/webkit/include/JavaScriptCore/JSContextRef.h new file mode 100644 index 0000000..f2f0c47 --- /dev/null +++ b/src/3rdparty/webkit/include/JavaScriptCore/JSContextRef.h @@ -0,0 +1 @@ +#include "JavaScriptCore/API/JSContextRef.h" diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JSGlobalObject.h b/src/3rdparty/webkit/include/JavaScriptCore/JSGlobalObject.h new file mode 100644 index 0000000..ebbffb4 --- /dev/null +++ b/src/3rdparty/webkit/include/JavaScriptCore/JSGlobalObject.h @@ -0,0 +1 @@ +#include "JavaScriptCore/runtime/JSGlobalObject.h" diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JSLock.h b/src/3rdparty/webkit/include/JavaScriptCore/JSLock.h new file mode 100644 index 0000000..7934695 --- /dev/null +++ b/src/3rdparty/webkit/include/JavaScriptCore/JSLock.h @@ -0,0 +1 @@ +#include "JavaScriptCore/runtime/JSLock.h" diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JSObject.h b/src/3rdparty/webkit/include/JavaScriptCore/JSObject.h new file mode 100644 index 0000000..e6767cf --- /dev/null +++ b/src/3rdparty/webkit/include/JavaScriptCore/JSObject.h @@ -0,0 +1 @@ +#include "JavaScriptCore/runtime/JSObject.h" diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JSObjectWithGlobalObject.h b/src/3rdparty/webkit/include/JavaScriptCore/JSObjectWithGlobalObject.h new file mode 100644 index 0000000..2125f2d --- /dev/null +++ b/src/3rdparty/webkit/include/JavaScriptCore/JSObjectWithGlobalObject.h @@ -0,0 +1 @@ +#include "JavaScriptCore/runtime/JSObjectWithGlobalObject.h" diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JSStringRef.h b/src/3rdparty/webkit/include/JavaScriptCore/JSStringRef.h new file mode 100644 index 0000000..6141f13 --- /dev/null +++ b/src/3rdparty/webkit/include/JavaScriptCore/JSStringRef.h @@ -0,0 +1 @@ +#include "JavaScriptCore/API/JSStringRef.h" diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JSValueRef.h b/src/3rdparty/webkit/include/JavaScriptCore/JSValueRef.h new file mode 100644 index 0000000..a038672 --- /dev/null +++ b/src/3rdparty/webkit/include/JavaScriptCore/JSValueRef.h @@ -0,0 +1 @@ +#include "JavaScriptCore/API/JSValueRef.h" diff --git a/src/3rdparty/webkit/include/JavaScriptCore/JavaScript.h b/src/3rdparty/webkit/include/JavaScriptCore/JavaScript.h new file mode 100644 index 0000000..d5e2b25 --- /dev/null +++ b/src/3rdparty/webkit/include/JavaScriptCore/JavaScript.h @@ -0,0 +1 @@ +#include "JavaScriptCore/API/JavaScript.h" diff --git a/src/3rdparty/webkit/include/JavaScriptCore/ObjectPrototype.h b/src/3rdparty/webkit/include/JavaScriptCore/ObjectPrototype.h new file mode 100644 index 0000000..d66b76c --- /dev/null +++ b/src/3rdparty/webkit/include/JavaScriptCore/ObjectPrototype.h @@ -0,0 +1 @@ +#include "JavaScriptCore/runtime/ObjectPrototype.h" diff --git a/src/3rdparty/webkit/include/JavaScriptCore/SourceCode.h b/src/3rdparty/webkit/include/JavaScriptCore/SourceCode.h new file mode 100644 index 0000000..148829a --- /dev/null +++ b/src/3rdparty/webkit/include/JavaScriptCore/SourceCode.h @@ -0,0 +1 @@ +#include "JavaScriptCore/parser/SourceCode.h" diff --git a/src/3rdparty/webkit/include/JavaScriptCore/Strong.h b/src/3rdparty/webkit/include/JavaScriptCore/Strong.h new file mode 100644 index 0000000..bb611f9 --- /dev/null +++ b/src/3rdparty/webkit/include/JavaScriptCore/Strong.h @@ -0,0 +1 @@ +#include "JavaScriptCore/heap/Strong.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/QGraphicsWebView b/src/3rdparty/webkit/include/QtWebKit/QGraphicsWebView new file mode 100644 index 0000000..508a397 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/QGraphicsWebView @@ -0,0 +1 @@ +#include "qgraphicswebview.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebDatabase b/src/3rdparty/webkit/include/QtWebKit/QWebDatabase new file mode 100644 index 0000000..ec02742 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/QWebDatabase @@ -0,0 +1 @@ +#include "qwebdatabase.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebElement b/src/3rdparty/webkit/include/QtWebKit/QWebElement new file mode 100644 index 0000000..32a17d0 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/QWebElement @@ -0,0 +1 @@ +#include "qwebelement.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebElementCollection b/src/3rdparty/webkit/include/QtWebKit/QWebElementCollection new file mode 100644 index 0000000..32a17d0 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/QWebElementCollection @@ -0,0 +1 @@ +#include "qwebelement.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebFrame b/src/3rdparty/webkit/include/QtWebKit/QWebFrame new file mode 100644 index 0000000..0748fde --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/QWebFrame @@ -0,0 +1 @@ +#include "qwebframe.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebHistory b/src/3rdparty/webkit/include/QtWebKit/QWebHistory new file mode 100644 index 0000000..35e9da5 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/QWebHistory @@ -0,0 +1 @@ +#include "qwebhistory.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebHistoryInterface b/src/3rdparty/webkit/include/QtWebKit/QWebHistoryInterface new file mode 100644 index 0000000..7352319 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/QWebHistoryInterface @@ -0,0 +1 @@ +#include "qwebhistoryinterface.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebHistoryItem b/src/3rdparty/webkit/include/QtWebKit/QWebHistoryItem new file mode 100644 index 0000000..35e9da5 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/QWebHistoryItem @@ -0,0 +1 @@ +#include "qwebhistory.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebHitTestResult b/src/3rdparty/webkit/include/QtWebKit/QWebHitTestResult new file mode 100644 index 0000000..0748fde --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/QWebHitTestResult @@ -0,0 +1 @@ +#include "qwebframe.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebInspector b/src/3rdparty/webkit/include/QtWebKit/QWebInspector new file mode 100644 index 0000000..0923bb7 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/QWebInspector @@ -0,0 +1 @@ +#include "qwebinspector.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebPage b/src/3rdparty/webkit/include/QtWebKit/QWebPage new file mode 100644 index 0000000..e8e8c10 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/QWebPage @@ -0,0 +1 @@ +#include "qwebpage.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebPluginFactory b/src/3rdparty/webkit/include/QtWebKit/QWebPluginFactory new file mode 100644 index 0000000..3e4ee81 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/QWebPluginFactory @@ -0,0 +1 @@ +#include "qwebpluginfactory.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebSecurityOrigin b/src/3rdparty/webkit/include/QtWebKit/QWebSecurityOrigin new file mode 100644 index 0000000..6427a3b --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/QWebSecurityOrigin @@ -0,0 +1 @@ +#include "qwebsecurityorigin.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebSettings b/src/3rdparty/webkit/include/QtWebKit/QWebSettings new file mode 100644 index 0000000..f50c1a2 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/QWebSettings @@ -0,0 +1 @@ +#include "qwebsettings.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/QWebView b/src/3rdparty/webkit/include/QtWebKit/QWebView new file mode 100644 index 0000000..3ec1eb9 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/QWebView @@ -0,0 +1 @@ +#include "qwebview.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/QtWebKit b/src/3rdparty/webkit/include/QtWebKit/QtWebKit new file mode 100644 index 0000000..155a551 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/QtWebKit @@ -0,0 +1,19 @@ +#ifndef QT_QTWEBKIT_MODULE_H +#define QT_QTWEBKIT_MODULE_H +#include <QtNetwork/QtNetwork> +#include "qwebframe.h" +#include "qgraphicswebview.h" +#include "qwebkitglobal.h" +#include "qwebkitplatformplugin.h" +#include "qwebpage.h" +#include "qwebview.h" +#include "qwebsettings.h" +#include "qwebhistoryinterface.h" +#include "qwebdatabase.h" +#include "qwebsecurityorigin.h" +#include "qwebelement.h" +#include "qwebpluginfactory.h" +#include "qwebhistory.h" +#include "qwebinspector.h" +#include "qwebkitversion.h" +#endif // QT_QTWEBKIT_MODULE_H diff --git a/src/3rdparty/webkit/include/QtWebKit/ViewportAttributes b/src/3rdparty/webkit/include/QtWebKit/ViewportAttributes new file mode 100644 index 0000000..e8e8c10 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/ViewportAttributes @@ -0,0 +1 @@ +#include "qwebpage.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/classheaders.pri b/src/3rdparty/webkit/include/QtWebKit/classheaders.pri new file mode 100644 index 0000000..0e13e75 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/classheaders.pri @@ -0,0 +1 @@ +WEBKIT_CLASS_HEADERS = $$PWD/QtWebKit $$PWD/QWebHitTestResult $$PWD/QWebFrame $$PWD/QGraphicsWebView $$PWD/QWebPage $$PWD/ViewportAttributes $$PWD/QWebView $$PWD/QWebSettings $$PWD/QWebHistoryInterface $$PWD/QWebDatabase $$PWD/QWebSecurityOrigin $$PWD/QWebElement $$PWD/QWebElementCollection $$PWD/QWebPluginFactory $$PWD/QWebHistoryItem $$PWD/QWebHistory $$PWD/QWebInspector diff --git a/src/3rdparty/webkit/include/QtWebKit/qgraphicswebview.h b/src/3rdparty/webkit/include/QtWebKit/qgraphicswebview.h new file mode 100644 index 0000000..0584f1d --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/qgraphicswebview.h @@ -0,0 +1 @@ +#include "../../WebKit/qt/Api/qgraphicswebview.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebdatabase.h b/src/3rdparty/webkit/include/QtWebKit/qwebdatabase.h new file mode 100644 index 0000000..f23fed4 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/qwebdatabase.h @@ -0,0 +1 @@ +#include "../../WebKit/qt/Api/qwebdatabase.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebelement.h b/src/3rdparty/webkit/include/QtWebKit/qwebelement.h new file mode 100644 index 0000000..e11a84b --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/qwebelement.h @@ -0,0 +1 @@ +#include "../../WebKit/qt/Api/qwebelement.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebframe.h b/src/3rdparty/webkit/include/QtWebKit/qwebframe.h new file mode 100644 index 0000000..d1393c5 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/qwebframe.h @@ -0,0 +1 @@ +#include "../../WebKit/qt/Api/qwebframe.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebhistory.h b/src/3rdparty/webkit/include/QtWebKit/qwebhistory.h new file mode 100644 index 0000000..edf6f81 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/qwebhistory.h @@ -0,0 +1 @@ +#include "../../WebKit/qt/Api/qwebhistory.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebhistoryinterface.h b/src/3rdparty/webkit/include/QtWebKit/qwebhistoryinterface.h new file mode 100644 index 0000000..da1a6a9 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/qwebhistoryinterface.h @@ -0,0 +1 @@ +#include "../../WebKit/qt/Api/qwebhistoryinterface.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebinspector.h b/src/3rdparty/webkit/include/QtWebKit/qwebinspector.h new file mode 100644 index 0000000..4742105 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/qwebinspector.h @@ -0,0 +1 @@ +#include "../../WebKit/qt/Api/qwebinspector.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebkitglobal.h b/src/3rdparty/webkit/include/QtWebKit/qwebkitglobal.h new file mode 100644 index 0000000..b9b2650 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/qwebkitglobal.h @@ -0,0 +1 @@ +#include "../../WebKit/qt/Api/qwebkitglobal.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebkitplatformplugin.h b/src/3rdparty/webkit/include/QtWebKit/qwebkitplatformplugin.h new file mode 100644 index 0000000..db4e554 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/qwebkitplatformplugin.h @@ -0,0 +1 @@ +#include "../../WebKit/qt/Api/qwebkitplatformplugin.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebkitversion.h b/src/3rdparty/webkit/include/QtWebKit/qwebkitversion.h new file mode 100644 index 0000000..af7be3b --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/qwebkitversion.h @@ -0,0 +1 @@ +#include "../../WebKit/qt/Api/qwebkitversion.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebpage.h b/src/3rdparty/webkit/include/QtWebKit/qwebpage.h new file mode 100644 index 0000000..2053ccb --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/qwebpage.h @@ -0,0 +1 @@ +#include "../../WebKit/qt/Api/qwebpage.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebpluginfactory.h b/src/3rdparty/webkit/include/QtWebKit/qwebpluginfactory.h new file mode 100644 index 0000000..db095b7 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/qwebpluginfactory.h @@ -0,0 +1 @@ +#include "../../WebKit/qt/Api/qwebpluginfactory.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebsecurityorigin.h b/src/3rdparty/webkit/include/QtWebKit/qwebsecurityorigin.h new file mode 100644 index 0000000..1ce553c --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/qwebsecurityorigin.h @@ -0,0 +1 @@ +#include "../../WebKit/qt/Api/qwebsecurityorigin.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebsettings.h b/src/3rdparty/webkit/include/QtWebKit/qwebsettings.h new file mode 100644 index 0000000..cdedc07 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/qwebsettings.h @@ -0,0 +1 @@ +#include "../../WebKit/qt/Api/qwebsettings.h" diff --git a/src/3rdparty/webkit/include/QtWebKit/qwebview.h b/src/3rdparty/webkit/include/QtWebKit/qwebview.h new file mode 100644 index 0000000..3490665 --- /dev/null +++ b/src/3rdparty/webkit/include/QtWebKit/qwebview.h @@ -0,0 +1 @@ +#include "../../WebKit/qt/Api/qwebview.h" diff --git a/src/3rdparty/webkit/include/WebCore/AXObjectCache.h b/src/3rdparty/webkit/include/WebCore/AXObjectCache.h new file mode 100644 index 0000000..19e50c5 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/AXObjectCache.h @@ -0,0 +1 @@ +#include "WebCore/accessibility/AXObjectCache.h" diff --git a/src/3rdparty/webkit/include/WebCore/AbstractDatabase.h b/src/3rdparty/webkit/include/WebCore/AbstractDatabase.h new file mode 100644 index 0000000..e845a89 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/AbstractDatabase.h @@ -0,0 +1 @@ +#include "WebCore/storage/AbstractDatabase.h" diff --git a/src/3rdparty/webkit/include/WebCore/AnimationController.h b/src/3rdparty/webkit/include/WebCore/AnimationController.h new file mode 100644 index 0000000..5a0fc36 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/AnimationController.h @@ -0,0 +1 @@ +#include "WebCore/page/animation/AnimationController.h" diff --git a/src/3rdparty/webkit/include/WebCore/ApplicationCache.h b/src/3rdparty/webkit/include/WebCore/ApplicationCache.h new file mode 100644 index 0000000..1c73afe --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ApplicationCache.h @@ -0,0 +1 @@ +#include "WebCore/loader/appcache/ApplicationCache.h" diff --git a/src/3rdparty/webkit/include/WebCore/ApplicationCacheStorage.h b/src/3rdparty/webkit/include/WebCore/ApplicationCacheStorage.h new file mode 100644 index 0000000..f5bf232 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ApplicationCacheStorage.h @@ -0,0 +1 @@ +#include "WebCore/loader/appcache/ApplicationCacheStorage.h" diff --git a/src/3rdparty/webkit/include/WebCore/ArchiveResource.h b/src/3rdparty/webkit/include/WebCore/ArchiveResource.h new file mode 100644 index 0000000..aa854cb --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ArchiveResource.h @@ -0,0 +1 @@ +#include "WebCore/loader/archive/ArchiveResource.h" diff --git a/src/3rdparty/webkit/include/WebCore/AuthenticationClient.h b/src/3rdparty/webkit/include/WebCore/AuthenticationClient.h new file mode 100644 index 0000000..6dc6438 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/AuthenticationClient.h @@ -0,0 +1 @@ +#include "WebCore/platform/network/AuthenticationClient.h" diff --git a/src/3rdparty/webkit/include/WebCore/BackForwardController.h b/src/3rdparty/webkit/include/WebCore/BackForwardController.h new file mode 100644 index 0000000..f352699 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/BackForwardController.h @@ -0,0 +1 @@ +#include "WebCore/history/BackForwardController.h" diff --git a/src/3rdparty/webkit/include/WebCore/BackForwardList.h b/src/3rdparty/webkit/include/WebCore/BackForwardList.h new file mode 100644 index 0000000..211f9a3 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/BackForwardList.h @@ -0,0 +1 @@ +#include "WebCore/history/BackForwardList.h" diff --git a/src/3rdparty/webkit/include/WebCore/BitmapImage.h b/src/3rdparty/webkit/include/WebCore/BitmapImage.h new file mode 100644 index 0000000..fd77e4e --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/BitmapImage.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/BitmapImage.h" diff --git a/src/3rdparty/webkit/include/WebCore/CSSComputedStyleDeclaration.h b/src/3rdparty/webkit/include/WebCore/CSSComputedStyleDeclaration.h new file mode 100644 index 0000000..89eef12 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/CSSComputedStyleDeclaration.h @@ -0,0 +1 @@ +#include "WebCore/css/CSSComputedStyleDeclaration.h" diff --git a/src/3rdparty/webkit/include/WebCore/Chrome.h b/src/3rdparty/webkit/include/WebCore/Chrome.h new file mode 100644 index 0000000..0d9d432 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Chrome.h @@ -0,0 +1 @@ +#include "WebCore/page/Chrome.h" diff --git a/src/3rdparty/webkit/include/WebCore/ChromeClient.h b/src/3rdparty/webkit/include/WebCore/ChromeClient.h new file mode 100644 index 0000000..6c49eb7 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ChromeClient.h @@ -0,0 +1 @@ +#include "WebCore/page/ChromeClient.h" diff --git a/src/3rdparty/webkit/include/WebCore/Color.h b/src/3rdparty/webkit/include/WebCore/Color.h new file mode 100644 index 0000000..0b177c5 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Color.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/Color.h" diff --git a/src/3rdparty/webkit/include/WebCore/ContextMenu.h b/src/3rdparty/webkit/include/WebCore/ContextMenu.h new file mode 100644 index 0000000..5eb190d --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ContextMenu.h @@ -0,0 +1 @@ +#include "WebCore/platform/ContextMenu.h" diff --git a/src/3rdparty/webkit/include/WebCore/ContextMenuClient.h b/src/3rdparty/webkit/include/WebCore/ContextMenuClient.h new file mode 100644 index 0000000..5471ea8 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ContextMenuClient.h @@ -0,0 +1 @@ +#include "WebCore/page/ContextMenuClient.h" diff --git a/src/3rdparty/webkit/include/WebCore/ContextMenuController.h b/src/3rdparty/webkit/include/WebCore/ContextMenuController.h new file mode 100644 index 0000000..463f01a --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ContextMenuController.h @@ -0,0 +1 @@ +#include "WebCore/page/ContextMenuController.h" diff --git a/src/3rdparty/webkit/include/WebCore/ContextMenuItem.h b/src/3rdparty/webkit/include/WebCore/ContextMenuItem.h new file mode 100644 index 0000000..0ee8088 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ContextMenuItem.h @@ -0,0 +1 @@ +#include "WebCore/platform/ContextMenuItem.h" diff --git a/src/3rdparty/webkit/include/WebCore/CookieJar.h b/src/3rdparty/webkit/include/WebCore/CookieJar.h new file mode 100644 index 0000000..4da688b --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/CookieJar.h @@ -0,0 +1 @@ +#include "WebCore/platform/CookieJar.h" diff --git a/src/3rdparty/webkit/include/WebCore/CookieStorage.h b/src/3rdparty/webkit/include/WebCore/CookieStorage.h new file mode 100644 index 0000000..a087fc5 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/CookieStorage.h @@ -0,0 +1 @@ +#include "WebCore/platform/network/CookieStorage.h" diff --git a/src/3rdparty/webkit/include/WebCore/CookiesStrategy.h b/src/3rdparty/webkit/include/WebCore/CookiesStrategy.h new file mode 100644 index 0000000..ee0f80b --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/CookiesStrategy.h @@ -0,0 +1 @@ +#include "WebCore/platform/CookiesStrategy.h" diff --git a/src/3rdparty/webkit/include/WebCore/Credential.h b/src/3rdparty/webkit/include/WebCore/Credential.h new file mode 100644 index 0000000..358cc97 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Credential.h @@ -0,0 +1 @@ +#include "WebCore/platform/network/Credential.h" diff --git a/src/3rdparty/webkit/include/WebCore/CrossOriginPreflightResultCache.h b/src/3rdparty/webkit/include/WebCore/CrossOriginPreflightResultCache.h new file mode 100644 index 0000000..511572c --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/CrossOriginPreflightResultCache.h @@ -0,0 +1 @@ +#include "WebCore/loader/CrossOriginPreflightResultCache.h" diff --git a/src/3rdparty/webkit/include/WebCore/Cursor.h b/src/3rdparty/webkit/include/WebCore/Cursor.h new file mode 100644 index 0000000..416929f --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Cursor.h @@ -0,0 +1 @@ +#include "WebCore/platform/Cursor.h" diff --git a/src/3rdparty/webkit/include/WebCore/DOMImplementation.h b/src/3rdparty/webkit/include/WebCore/DOMImplementation.h new file mode 100644 index 0000000..9e37ed5 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/DOMImplementation.h @@ -0,0 +1 @@ +#include "WebCore/dom/DOMImplementation.h" diff --git a/src/3rdparty/webkit/include/WebCore/DOMWrapperWorld.h b/src/3rdparty/webkit/include/WebCore/DOMWrapperWorld.h new file mode 100644 index 0000000..15450f6 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/DOMWrapperWorld.h @@ -0,0 +1 @@ +#include "WebCore/bindings/js/DOMWrapperWorld.h" diff --git a/src/3rdparty/webkit/include/WebCore/DatabaseDetails.h b/src/3rdparty/webkit/include/WebCore/DatabaseDetails.h new file mode 100644 index 0000000..1759bd3 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/DatabaseDetails.h @@ -0,0 +1 @@ +#include "WebCore/storage/DatabaseDetails.h" diff --git a/src/3rdparty/webkit/include/WebCore/DatabaseTracker.h b/src/3rdparty/webkit/include/WebCore/DatabaseTracker.h new file mode 100644 index 0000000..e4e9f82 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/DatabaseTracker.h @@ -0,0 +1 @@ +#include "WebCore/storage/DatabaseTracker.h" diff --git a/src/3rdparty/webkit/include/WebCore/DatabaseTrackerClient.h b/src/3rdparty/webkit/include/WebCore/DatabaseTrackerClient.h new file mode 100644 index 0000000..d020ce1 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/DatabaseTrackerClient.h @@ -0,0 +1 @@ +#include "WebCore/storage/DatabaseTrackerClient.h" diff --git a/src/3rdparty/webkit/include/WebCore/Document.h b/src/3rdparty/webkit/include/WebCore/Document.h new file mode 100644 index 0000000..064119d --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Document.h @@ -0,0 +1 @@ +#include "WebCore/dom/Document.h" diff --git a/src/3rdparty/webkit/include/WebCore/DocumentFragment.h b/src/3rdparty/webkit/include/WebCore/DocumentFragment.h new file mode 100644 index 0000000..4ff6d72 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/DocumentFragment.h @@ -0,0 +1 @@ +#include "WebCore/dom/DocumentFragment.h" diff --git a/src/3rdparty/webkit/include/WebCore/DocumentLoader.h b/src/3rdparty/webkit/include/WebCore/DocumentLoader.h new file mode 100644 index 0000000..b93cbb0 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/DocumentLoader.h @@ -0,0 +1 @@ +#include "WebCore/loader/DocumentLoader.h" diff --git a/src/3rdparty/webkit/include/WebCore/DocumentMarkerController.h b/src/3rdparty/webkit/include/WebCore/DocumentMarkerController.h new file mode 100644 index 0000000..74f9fc4 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/DocumentMarkerController.h @@ -0,0 +1 @@ +#include "WebCore/dom/DocumentMarkerController.h" diff --git a/src/3rdparty/webkit/include/WebCore/DragActions.h b/src/3rdparty/webkit/include/WebCore/DragActions.h new file mode 100644 index 0000000..8e4d0b3 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/DragActions.h @@ -0,0 +1 @@ +#include "WebCore/page/DragActions.h" diff --git a/src/3rdparty/webkit/include/WebCore/DragClient.h b/src/3rdparty/webkit/include/WebCore/DragClient.h new file mode 100644 index 0000000..e9a96a5 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/DragClient.h @@ -0,0 +1 @@ +#include "WebCore/page/DragClient.h" diff --git a/src/3rdparty/webkit/include/WebCore/DragController.h b/src/3rdparty/webkit/include/WebCore/DragController.h new file mode 100644 index 0000000..30de072 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/DragController.h @@ -0,0 +1 @@ +#include "WebCore/page/DragController.h" diff --git a/src/3rdparty/webkit/include/WebCore/DragData.h b/src/3rdparty/webkit/include/WebCore/DragData.h new file mode 100644 index 0000000..d66db38 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/DragData.h @@ -0,0 +1 @@ +#include "WebCore/platform/DragData.h" diff --git a/src/3rdparty/webkit/include/WebCore/EditAction.h b/src/3rdparty/webkit/include/WebCore/EditAction.h new file mode 100644 index 0000000..75200b2 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/EditAction.h @@ -0,0 +1 @@ +#include "WebCore/editing/EditAction.h" diff --git a/src/3rdparty/webkit/include/WebCore/EditCommand.h b/src/3rdparty/webkit/include/WebCore/EditCommand.h new file mode 100644 index 0000000..06d9145 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/EditCommand.h @@ -0,0 +1 @@ +#include "WebCore/editing/EditCommand.h" diff --git a/src/3rdparty/webkit/include/WebCore/Editor.h b/src/3rdparty/webkit/include/WebCore/Editor.h new file mode 100644 index 0000000..1d2a300 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Editor.h @@ -0,0 +1 @@ +#include "WebCore/editing/Editor.h" diff --git a/src/3rdparty/webkit/include/WebCore/EditorClient.h b/src/3rdparty/webkit/include/WebCore/EditorClient.h new file mode 100644 index 0000000..027fb4e --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/EditorClient.h @@ -0,0 +1 @@ +#include "WebCore/page/EditorClient.h" diff --git a/src/3rdparty/webkit/include/WebCore/EditorInsertAction.h b/src/3rdparty/webkit/include/WebCore/EditorInsertAction.h new file mode 100644 index 0000000..7fc8a54 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/EditorInsertAction.h @@ -0,0 +1 @@ +#include "WebCore/editing/EditorInsertAction.h" diff --git a/src/3rdparty/webkit/include/WebCore/Element.h b/src/3rdparty/webkit/include/WebCore/Element.h new file mode 100644 index 0000000..ead3556 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Element.h @@ -0,0 +1 @@ +#include "WebCore/dom/Element.h" diff --git a/src/3rdparty/webkit/include/WebCore/EmptyProtocolDefinitions.h b/src/3rdparty/webkit/include/WebCore/EmptyProtocolDefinitions.h new file mode 100644 index 0000000..c75e216 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/EmptyProtocolDefinitions.h @@ -0,0 +1 @@ +#include "WebCore/platform/mac/EmptyProtocolDefinitions.h" diff --git a/src/3rdparty/webkit/include/WebCore/Event.h b/src/3rdparty/webkit/include/WebCore/Event.h new file mode 100644 index 0000000..3a79434 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Event.h @@ -0,0 +1 @@ +#include "WebCore/dom/Event.h" diff --git a/src/3rdparty/webkit/include/WebCore/EventHandler.h b/src/3rdparty/webkit/include/WebCore/EventHandler.h new file mode 100644 index 0000000..afb7092 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/EventHandler.h @@ -0,0 +1 @@ +#include "WebCore/page/EventHandler.h" diff --git a/src/3rdparty/webkit/include/WebCore/FileChooser.h b/src/3rdparty/webkit/include/WebCore/FileChooser.h new file mode 100644 index 0000000..e968b5c --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/FileChooser.h @@ -0,0 +1 @@ +#include "WebCore/platform/FileChooser.h" diff --git a/src/3rdparty/webkit/include/WebCore/FileSystem.h b/src/3rdparty/webkit/include/WebCore/FileSystem.h new file mode 100644 index 0000000..27195b9 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/FileSystem.h @@ -0,0 +1 @@ +#include "WebCore/platform/FileSystem.h" diff --git a/src/3rdparty/webkit/include/WebCore/FloatPoint.h b/src/3rdparty/webkit/include/WebCore/FloatPoint.h new file mode 100644 index 0000000..9246f21 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/FloatPoint.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/FloatPoint.h" diff --git a/src/3rdparty/webkit/include/WebCore/FloatRect.h b/src/3rdparty/webkit/include/WebCore/FloatRect.h new file mode 100644 index 0000000..b18898f --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/FloatRect.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/FloatRect.h" diff --git a/src/3rdparty/webkit/include/WebCore/FloatSize.h b/src/3rdparty/webkit/include/WebCore/FloatSize.h new file mode 100644 index 0000000..0178b44 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/FloatSize.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/FloatSize.h" diff --git a/src/3rdparty/webkit/include/WebCore/FocusController.h b/src/3rdparty/webkit/include/WebCore/FocusController.h new file mode 100644 index 0000000..4fb9ab7 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/FocusController.h @@ -0,0 +1 @@ +#include "WebCore/page/FocusController.h" diff --git a/src/3rdparty/webkit/include/WebCore/FocusDirection.h b/src/3rdparty/webkit/include/WebCore/FocusDirection.h new file mode 100644 index 0000000..1c76ae5 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/FocusDirection.h @@ -0,0 +1 @@ +#include "WebCore/page/FocusDirection.h" diff --git a/src/3rdparty/webkit/include/WebCore/Font.h b/src/3rdparty/webkit/include/WebCore/Font.h new file mode 100644 index 0000000..84ae5e6 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Font.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/Font.h" diff --git a/src/3rdparty/webkit/include/WebCore/FontRenderingMode.h b/src/3rdparty/webkit/include/WebCore/FontRenderingMode.h new file mode 100644 index 0000000..3f2925c --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/FontRenderingMode.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/FontRenderingMode.h" diff --git a/src/3rdparty/webkit/include/WebCore/FormState.h b/src/3rdparty/webkit/include/WebCore/FormState.h new file mode 100644 index 0000000..2be503d --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/FormState.h @@ -0,0 +1 @@ +#include "WebCore/loader/FormState.h" diff --git a/src/3rdparty/webkit/include/WebCore/Frame.h b/src/3rdparty/webkit/include/WebCore/Frame.h new file mode 100644 index 0000000..447a563 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Frame.h @@ -0,0 +1 @@ +#include "WebCore/page/Frame.h" diff --git a/src/3rdparty/webkit/include/WebCore/FrameLoadRequest.h b/src/3rdparty/webkit/include/WebCore/FrameLoadRequest.h new file mode 100644 index 0000000..3744166 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/FrameLoadRequest.h @@ -0,0 +1 @@ +#include "WebCore/page/FrameLoadRequest.h" diff --git a/src/3rdparty/webkit/include/WebCore/FrameLoader.h b/src/3rdparty/webkit/include/WebCore/FrameLoader.h new file mode 100644 index 0000000..d5f7c97 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/FrameLoader.h @@ -0,0 +1 @@ +#include "WebCore/loader/FrameLoader.h" diff --git a/src/3rdparty/webkit/include/WebCore/FrameLoaderClient.h b/src/3rdparty/webkit/include/WebCore/FrameLoaderClient.h new file mode 100644 index 0000000..140b7a1 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/FrameLoaderClient.h @@ -0,0 +1 @@ +#include "WebCore/loader/FrameLoaderClient.h" diff --git a/src/3rdparty/webkit/include/WebCore/FrameLoaderTypes.h b/src/3rdparty/webkit/include/WebCore/FrameLoaderTypes.h new file mode 100644 index 0000000..5b12e86 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/FrameLoaderTypes.h @@ -0,0 +1 @@ +#include "WebCore/loader/FrameLoaderTypes.h" diff --git a/src/3rdparty/webkit/include/WebCore/FrameNetworkingContext.h b/src/3rdparty/webkit/include/WebCore/FrameNetworkingContext.h new file mode 100644 index 0000000..1e37ea8 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/FrameNetworkingContext.h @@ -0,0 +1 @@ +#include "WebCore/loader/FrameNetworkingContext.h" diff --git a/src/3rdparty/webkit/include/WebCore/FrameView.h b/src/3rdparty/webkit/include/WebCore/FrameView.h new file mode 100644 index 0000000..0e85324 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/FrameView.h @@ -0,0 +1 @@ +#include "WebCore/page/FrameView.h" diff --git a/src/3rdparty/webkit/include/WebCore/GCController.h b/src/3rdparty/webkit/include/WebCore/GCController.h new file mode 100644 index 0000000..c528ce0 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/GCController.h @@ -0,0 +1 @@ +#include "WebCore/bindings/js/GCController.h" diff --git a/src/3rdparty/webkit/include/WebCore/Geolocation.h b/src/3rdparty/webkit/include/WebCore/Geolocation.h new file mode 100644 index 0000000..3fe78ca --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Geolocation.h @@ -0,0 +1 @@ +#include "WebCore/page/Geolocation.h" diff --git a/src/3rdparty/webkit/include/WebCore/GeolocationClient.h b/src/3rdparty/webkit/include/WebCore/GeolocationClient.h new file mode 100644 index 0000000..f77eb42 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/GeolocationClient.h @@ -0,0 +1 @@ +#include "WebCore/page/GeolocationClient.h" diff --git a/src/3rdparty/webkit/include/WebCore/GeolocationController.h b/src/3rdparty/webkit/include/WebCore/GeolocationController.h new file mode 100644 index 0000000..e929b83 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/GeolocationController.h @@ -0,0 +1 @@ +#include "WebCore/page/GeolocationController.h" diff --git a/src/3rdparty/webkit/include/WebCore/GeolocationError.h b/src/3rdparty/webkit/include/WebCore/GeolocationError.h new file mode 100644 index 0000000..657e27c --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/GeolocationError.h @@ -0,0 +1 @@ +#include "WebCore/page/GeolocationError.h" diff --git a/src/3rdparty/webkit/include/WebCore/GeolocationPosition.h b/src/3rdparty/webkit/include/WebCore/GeolocationPosition.h new file mode 100644 index 0000000..19f09cc --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/GeolocationPosition.h @@ -0,0 +1 @@ +#include "WebCore/page/GeolocationPosition.h" diff --git a/src/3rdparty/webkit/include/WebCore/Gradient.h b/src/3rdparty/webkit/include/WebCore/Gradient.h new file mode 100644 index 0000000..33ab685 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Gradient.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/Gradient.h" diff --git a/src/3rdparty/webkit/include/WebCore/GraphicsContext.h b/src/3rdparty/webkit/include/WebCore/GraphicsContext.h new file mode 100644 index 0000000..e82ec75 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/GraphicsContext.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/GraphicsContext.h" diff --git a/src/3rdparty/webkit/include/WebCore/GraphicsContextCG.h b/src/3rdparty/webkit/include/WebCore/GraphicsContextCG.h new file mode 100644 index 0000000..c71753f --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/GraphicsContextCG.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/cg/GraphicsContextCG.h" diff --git a/src/3rdparty/webkit/include/WebCore/GraphicsLayer.h b/src/3rdparty/webkit/include/WebCore/GraphicsLayer.h new file mode 100644 index 0000000..3387101 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/GraphicsLayer.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/GraphicsLayer.h" diff --git a/src/3rdparty/webkit/include/WebCore/GraphicsLayerCA.h b/src/3rdparty/webkit/include/WebCore/GraphicsLayerCA.h new file mode 100644 index 0000000..314d55c --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/GraphicsLayerCA.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/ca/GraphicsLayerCA.h" diff --git a/src/3rdparty/webkit/include/WebCore/GraphicsLayerClient.h b/src/3rdparty/webkit/include/WebCore/GraphicsLayerClient.h new file mode 100644 index 0000000..10e9e60 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/GraphicsLayerClient.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/GraphicsLayerClient.h" diff --git a/src/3rdparty/webkit/include/WebCore/HTMLAppletElement.h b/src/3rdparty/webkit/include/WebCore/HTMLAppletElement.h new file mode 100644 index 0000000..c0bacf1 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/HTMLAppletElement.h @@ -0,0 +1 @@ +#include "WebCore/html/HTMLAppletElement.h" diff --git a/src/3rdparty/webkit/include/WebCore/HTMLFormElement.h b/src/3rdparty/webkit/include/WebCore/HTMLFormElement.h new file mode 100644 index 0000000..83db912 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/HTMLFormElement.h @@ -0,0 +1 @@ +#include "WebCore/html/HTMLFormElement.h" diff --git a/src/3rdparty/webkit/include/WebCore/HTMLFrameElement.h b/src/3rdparty/webkit/include/WebCore/HTMLFrameElement.h new file mode 100644 index 0000000..2a59d8c --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/HTMLFrameElement.h @@ -0,0 +1 @@ +#include "WebCore/html/HTMLFrameElement.h" diff --git a/src/3rdparty/webkit/include/WebCore/HTMLFrameOwnerElement.h b/src/3rdparty/webkit/include/WebCore/HTMLFrameOwnerElement.h new file mode 100644 index 0000000..1219a12 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/HTMLFrameOwnerElement.h @@ -0,0 +1 @@ +#include "WebCore/html/HTMLFrameOwnerElement.h" diff --git a/src/3rdparty/webkit/include/WebCore/HTMLIFrameElement.h b/src/3rdparty/webkit/include/WebCore/HTMLIFrameElement.h new file mode 100644 index 0000000..fe96ccf --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/HTMLIFrameElement.h @@ -0,0 +1 @@ +#include "WebCore/html/HTMLIFrameElement.h" diff --git a/src/3rdparty/webkit/include/WebCore/HTMLInputElement.h b/src/3rdparty/webkit/include/WebCore/HTMLInputElement.h new file mode 100644 index 0000000..60100aa --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/HTMLInputElement.h @@ -0,0 +1 @@ +#include "WebCore/html/HTMLInputElement.h" diff --git a/src/3rdparty/webkit/include/WebCore/HTMLMediaElement.h b/src/3rdparty/webkit/include/WebCore/HTMLMediaElement.h new file mode 100644 index 0000000..d332c0a --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/HTMLMediaElement.h @@ -0,0 +1 @@ +#include "WebCore/html/HTMLMediaElement.h" diff --git a/src/3rdparty/webkit/include/WebCore/HTMLPlugInElement.h b/src/3rdparty/webkit/include/WebCore/HTMLPlugInElement.h new file mode 100644 index 0000000..c3eb10f --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/HTMLPlugInElement.h @@ -0,0 +1 @@ +#include "WebCore/html/HTMLPlugInElement.h" diff --git a/src/3rdparty/webkit/include/WebCore/HTMLPlugInImageElement.h b/src/3rdparty/webkit/include/WebCore/HTMLPlugInImageElement.h new file mode 100644 index 0000000..38c638c --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/HTMLPlugInImageElement.h @@ -0,0 +1 @@ +#include "WebCore/html/HTMLPlugInImageElement.h" diff --git a/src/3rdparty/webkit/include/WebCore/HTMLTableCellElement.h b/src/3rdparty/webkit/include/WebCore/HTMLTableCellElement.h new file mode 100644 index 0000000..2e3e09d --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/HTMLTableCellElement.h @@ -0,0 +1 @@ +#include "WebCore/html/HTMLTableCellElement.h" diff --git a/src/3rdparty/webkit/include/WebCore/HTMLTextAreaElement.h b/src/3rdparty/webkit/include/WebCore/HTMLTextAreaElement.h new file mode 100644 index 0000000..6613ae6 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/HTMLTextAreaElement.h @@ -0,0 +1 @@ +#include "WebCore/html/HTMLTextAreaElement.h" diff --git a/src/3rdparty/webkit/include/WebCore/HTTPHeaderMap.h b/src/3rdparty/webkit/include/WebCore/HTTPHeaderMap.h new file mode 100644 index 0000000..a48b2ce --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/HTTPHeaderMap.h @@ -0,0 +1 @@ +#include "WebCore/platform/network/HTTPHeaderMap.h" diff --git a/src/3rdparty/webkit/include/WebCore/HistoryItem.h b/src/3rdparty/webkit/include/WebCore/HistoryItem.h new file mode 100644 index 0000000..284e4b9 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/HistoryItem.h @@ -0,0 +1 @@ +#include "WebCore/history/HistoryItem.h" diff --git a/src/3rdparty/webkit/include/WebCore/HitTestRequest.h b/src/3rdparty/webkit/include/WebCore/HitTestRequest.h new file mode 100644 index 0000000..6f1f0d8 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/HitTestRequest.h @@ -0,0 +1 @@ +#include "WebCore/rendering/HitTestRequest.h" diff --git a/src/3rdparty/webkit/include/WebCore/HitTestResult.h b/src/3rdparty/webkit/include/WebCore/HitTestResult.h new file mode 100644 index 0000000..50e3246 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/HitTestResult.h @@ -0,0 +1 @@ +#include "WebCore/rendering/HitTestResult.h" diff --git a/src/3rdparty/webkit/include/WebCore/HostWindow.h b/src/3rdparty/webkit/include/WebCore/HostWindow.h new file mode 100644 index 0000000..82bd27f --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/HostWindow.h @@ -0,0 +1 @@ +#include "WebCore/platform/HostWindow.h" diff --git a/src/3rdparty/webkit/include/WebCore/Icon.h b/src/3rdparty/webkit/include/WebCore/Icon.h new file mode 100644 index 0000000..3b027fc --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Icon.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/Icon.h" diff --git a/src/3rdparty/webkit/include/WebCore/IconDatabase.h b/src/3rdparty/webkit/include/WebCore/IconDatabase.h new file mode 100644 index 0000000..ba2985a --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/IconDatabase.h @@ -0,0 +1 @@ +#include "WebCore/loader/icon/IconDatabase.h" diff --git a/src/3rdparty/webkit/include/WebCore/IconDatabaseBase.h b/src/3rdparty/webkit/include/WebCore/IconDatabaseBase.h new file mode 100644 index 0000000..9cc3e82 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/IconDatabaseBase.h @@ -0,0 +1 @@ +#include "WebCore/loader/icon/IconDatabaseBase.h" diff --git a/src/3rdparty/webkit/include/WebCore/IconDatabaseClient.h b/src/3rdparty/webkit/include/WebCore/IconDatabaseClient.h new file mode 100644 index 0000000..f70b84e --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/IconDatabaseClient.h @@ -0,0 +1 @@ +#include "WebCore/loader/icon/IconDatabaseClient.h" diff --git a/src/3rdparty/webkit/include/WebCore/IdentifierRep.h b/src/3rdparty/webkit/include/WebCore/IdentifierRep.h new file mode 100644 index 0000000..51a75d6 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/IdentifierRep.h @@ -0,0 +1 @@ +#include "WebCore/bridge/IdentifierRep.h" diff --git a/src/3rdparty/webkit/include/WebCore/Image.h b/src/3rdparty/webkit/include/WebCore/Image.h new file mode 100644 index 0000000..9e713f4 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Image.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/Image.h" diff --git a/src/3rdparty/webkit/include/WebCore/InspectorClient.h b/src/3rdparty/webkit/include/WebCore/InspectorClient.h new file mode 100644 index 0000000..7cc8863 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/InspectorClient.h @@ -0,0 +1 @@ +#include "WebCore/inspector/InspectorClient.h" diff --git a/src/3rdparty/webkit/include/WebCore/InspectorController.h b/src/3rdparty/webkit/include/WebCore/InspectorController.h new file mode 100644 index 0000000..f3bf6a7 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/InspectorController.h @@ -0,0 +1 @@ +#include "WebCore/inspector/InspectorController.h" diff --git a/src/3rdparty/webkit/include/WebCore/InspectorFrontendClientLocal.h b/src/3rdparty/webkit/include/WebCore/InspectorFrontendClientLocal.h new file mode 100644 index 0000000..de2f131 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/InspectorFrontendClientLocal.h @@ -0,0 +1 @@ +#include "WebCore/inspector/InspectorFrontendClientLocal.h" diff --git a/src/3rdparty/webkit/include/WebCore/IntPoint.h b/src/3rdparty/webkit/include/WebCore/IntPoint.h new file mode 100644 index 0000000..6738be4 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/IntPoint.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/IntPoint.h" diff --git a/src/3rdparty/webkit/include/WebCore/IntRect.h b/src/3rdparty/webkit/include/WebCore/IntRect.h new file mode 100644 index 0000000..9ff65c1 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/IntRect.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/IntRect.h" diff --git a/src/3rdparty/webkit/include/WebCore/IntRectHash.h b/src/3rdparty/webkit/include/WebCore/IntRectHash.h new file mode 100644 index 0000000..f21fc99 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/IntRectHash.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/IntRectHash.h" diff --git a/src/3rdparty/webkit/include/WebCore/IntSize.h b/src/3rdparty/webkit/include/WebCore/IntSize.h new file mode 100644 index 0000000..1ed1253 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/IntSize.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/IntSize.h" diff --git a/src/3rdparty/webkit/include/WebCore/JSCSSStyleDeclaration.h b/src/3rdparty/webkit/include/WebCore/JSCSSStyleDeclaration.h new file mode 100644 index 0000000..9b6643c --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/JSCSSStyleDeclaration.h @@ -0,0 +1 @@ +#include "WebCore/generated/JSCSSStyleDeclaration.h" diff --git a/src/3rdparty/webkit/include/WebCore/JSPluginElementFunctions.h b/src/3rdparty/webkit/include/WebCore/JSPluginElementFunctions.h new file mode 100644 index 0000000..be5c4e6 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/JSPluginElementFunctions.h @@ -0,0 +1 @@ +#include "WebCore/bindings/js/JSPluginElementFunctions.h" diff --git a/src/3rdparty/webkit/include/WebCore/KURL.h b/src/3rdparty/webkit/include/WebCore/KURL.h new file mode 100644 index 0000000..66540b2 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/KURL.h @@ -0,0 +1 @@ +#include "WebCore/platform/KURL.h" diff --git a/src/3rdparty/webkit/include/WebCore/KeyboardEvent.h b/src/3rdparty/webkit/include/WebCore/KeyboardEvent.h new file mode 100644 index 0000000..10fe215 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/KeyboardEvent.h @@ -0,0 +1 @@ +#include "WebCore/dom/KeyboardEvent.h" diff --git a/src/3rdparty/webkit/include/WebCore/Language.h b/src/3rdparty/webkit/include/WebCore/Language.h new file mode 100644 index 0000000..fb27338 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Language.h @@ -0,0 +1 @@ +#include "WebCore/platform/Language.h" diff --git a/src/3rdparty/webkit/include/WebCore/LinkHash.h b/src/3rdparty/webkit/include/WebCore/LinkHash.h new file mode 100644 index 0000000..c5c7438 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/LinkHash.h @@ -0,0 +1 @@ +#include "WebCore/platform/LinkHash.h" diff --git a/src/3rdparty/webkit/include/WebCore/LocalizedStrings.h b/src/3rdparty/webkit/include/WebCore/LocalizedStrings.h new file mode 100644 index 0000000..1a0a77a --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/LocalizedStrings.h @@ -0,0 +1 @@ +#include "WebCore/platform/LocalizedStrings.h" diff --git a/src/3rdparty/webkit/include/WebCore/Logging.h b/src/3rdparty/webkit/include/WebCore/Logging.h new file mode 100644 index 0000000..b85d7b8 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Logging.h @@ -0,0 +1 @@ +#include "WebCore/platform/Logging.h" diff --git a/src/3rdparty/webkit/include/WebCore/MIMETypeRegistry.h b/src/3rdparty/webkit/include/WebCore/MIMETypeRegistry.h new file mode 100644 index 0000000..0c39b17 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/MIMETypeRegistry.h @@ -0,0 +1 @@ +#include "WebCore/platform/MIMETypeRegistry.h" diff --git a/src/3rdparty/webkit/include/WebCore/MediaCanStartListener.h b/src/3rdparty/webkit/include/WebCore/MediaCanStartListener.h new file mode 100644 index 0000000..7c78efc --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/MediaCanStartListener.h @@ -0,0 +1 @@ +#include "WebCore/page/MediaCanStartListener.h" diff --git a/src/3rdparty/webkit/include/WebCore/MemoryCache.h b/src/3rdparty/webkit/include/WebCore/MemoryCache.h new file mode 100644 index 0000000..c903f1d --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/MemoryCache.h @@ -0,0 +1 @@ +#include "WebCore/loader/cache/MemoryCache.h" diff --git a/src/3rdparty/webkit/include/WebCore/MouseEvent.h b/src/3rdparty/webkit/include/WebCore/MouseEvent.h new file mode 100644 index 0000000..5f43397 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/MouseEvent.h @@ -0,0 +1 @@ +#include "WebCore/dom/MouseEvent.h" diff --git a/src/3rdparty/webkit/include/WebCore/NavigationAction.h b/src/3rdparty/webkit/include/WebCore/NavigationAction.h new file mode 100644 index 0000000..ca0f93c --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/NavigationAction.h @@ -0,0 +1 @@ +#include "WebCore/loader/NavigationAction.h" diff --git a/src/3rdparty/webkit/include/WebCore/NetscapePlugInStreamLoader.h b/src/3rdparty/webkit/include/WebCore/NetscapePlugInStreamLoader.h new file mode 100644 index 0000000..8047c20 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/NetscapePlugInStreamLoader.h @@ -0,0 +1 @@ +#include "WebCore/loader/NetscapePlugInStreamLoader.h" diff --git a/src/3rdparty/webkit/include/WebCore/NetworkingContext.h b/src/3rdparty/webkit/include/WebCore/NetworkingContext.h new file mode 100644 index 0000000..7a2e974 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/NetworkingContext.h @@ -0,0 +1 @@ +#include "WebCore/platform/network/NetworkingContext.h" diff --git a/src/3rdparty/webkit/include/WebCore/Node.h b/src/3rdparty/webkit/include/WebCore/Node.h new file mode 100644 index 0000000..eca5439 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Node.h @@ -0,0 +1 @@ +#include "WebCore/dom/Node.h" diff --git a/src/3rdparty/webkit/include/WebCore/NotImplemented.h b/src/3rdparty/webkit/include/WebCore/NotImplemented.h new file mode 100644 index 0000000..d9198fc --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/NotImplemented.h @@ -0,0 +1 @@ +#include "WebCore/platform/NotImplemented.h" diff --git a/src/3rdparty/webkit/include/WebCore/Page.h b/src/3rdparty/webkit/include/WebCore/Page.h new file mode 100644 index 0000000..ea3c5b3 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Page.h @@ -0,0 +1 @@ +#include "WebCore/page/Page.h" diff --git a/src/3rdparty/webkit/include/WebCore/PageCache.h b/src/3rdparty/webkit/include/WebCore/PageCache.h new file mode 100644 index 0000000..3210b0e --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PageCache.h @@ -0,0 +1 @@ +#include "WebCore/history/PageCache.h" diff --git a/src/3rdparty/webkit/include/WebCore/PageGroup.h b/src/3rdparty/webkit/include/WebCore/PageGroup.h new file mode 100644 index 0000000..2dd1abd --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PageGroup.h @@ -0,0 +1 @@ +#include "WebCore/page/PageGroup.h" diff --git a/src/3rdparty/webkit/include/WebCore/Path.h b/src/3rdparty/webkit/include/WebCore/Path.h new file mode 100644 index 0000000..add6db3 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Path.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/Path.h" diff --git a/src/3rdparty/webkit/include/WebCore/PlatformCALayer.h b/src/3rdparty/webkit/include/WebCore/PlatformCALayer.h new file mode 100644 index 0000000..bfa9258 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PlatformCALayer.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/ca/PlatformCALayer.h" diff --git a/src/3rdparty/webkit/include/WebCore/PlatformContextCairo.h b/src/3rdparty/webkit/include/WebCore/PlatformContextCairo.h new file mode 100644 index 0000000..ccd6a92 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PlatformContextCairo.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/cairo/PlatformContextCairo.h" diff --git a/src/3rdparty/webkit/include/WebCore/PlatformGestureEvent.h b/src/3rdparty/webkit/include/WebCore/PlatformGestureEvent.h new file mode 100644 index 0000000..377e5cb --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PlatformGestureEvent.h @@ -0,0 +1 @@ +#include "WebCore/platform/PlatformGestureEvent.h" diff --git a/src/3rdparty/webkit/include/WebCore/PlatformKeyboardEvent.h b/src/3rdparty/webkit/include/WebCore/PlatformKeyboardEvent.h new file mode 100644 index 0000000..19d8251 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PlatformKeyboardEvent.h @@ -0,0 +1 @@ +#include "WebCore/platform/PlatformKeyboardEvent.h" diff --git a/src/3rdparty/webkit/include/WebCore/PlatformMouseEvent.h b/src/3rdparty/webkit/include/WebCore/PlatformMouseEvent.h new file mode 100644 index 0000000..9d0abba --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PlatformMouseEvent.h @@ -0,0 +1 @@ +#include "WebCore/platform/PlatformMouseEvent.h" diff --git a/src/3rdparty/webkit/include/WebCore/PlatformStrategies.h b/src/3rdparty/webkit/include/WebCore/PlatformStrategies.h new file mode 100644 index 0000000..641c5d2 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PlatformStrategies.h @@ -0,0 +1 @@ +#include "WebCore/platform/PlatformStrategies.h" diff --git a/src/3rdparty/webkit/include/WebCore/PlatformTouchEvent.h b/src/3rdparty/webkit/include/WebCore/PlatformTouchEvent.h new file mode 100644 index 0000000..7628c0a --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PlatformTouchEvent.h @@ -0,0 +1 @@ +#include "WebCore/platform/PlatformTouchEvent.h" diff --git a/src/3rdparty/webkit/include/WebCore/PlatformTouchPoint.h b/src/3rdparty/webkit/include/WebCore/PlatformTouchPoint.h new file mode 100644 index 0000000..ef0c316 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PlatformTouchPoint.h @@ -0,0 +1 @@ +#include "WebCore/platform/PlatformTouchPoint.h" diff --git a/src/3rdparty/webkit/include/WebCore/PlatformWheelEvent.h b/src/3rdparty/webkit/include/WebCore/PlatformWheelEvent.h new file mode 100644 index 0000000..23a8af9 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PlatformWheelEvent.h @@ -0,0 +1 @@ +#include "WebCore/platform/PlatformWheelEvent.h" diff --git a/src/3rdparty/webkit/include/WebCore/PluginData.h b/src/3rdparty/webkit/include/WebCore/PluginData.h new file mode 100644 index 0000000..26ad15a --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PluginData.h @@ -0,0 +1 @@ +#include "WebCore/plugins/PluginData.h" diff --git a/src/3rdparty/webkit/include/WebCore/PluginStrategy.h b/src/3rdparty/webkit/include/WebCore/PluginStrategy.h new file mode 100644 index 0000000..4c84db0 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PluginStrategy.h @@ -0,0 +1 @@ +#include "WebCore/plugins/PluginStrategy.h" diff --git a/src/3rdparty/webkit/include/WebCore/PluginViewBase.h b/src/3rdparty/webkit/include/WebCore/PluginViewBase.h new file mode 100644 index 0000000..c5d0535 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PluginViewBase.h @@ -0,0 +1 @@ +#include "WebCore/plugins/PluginViewBase.h" diff --git a/src/3rdparty/webkit/include/WebCore/PolicyChecker.h b/src/3rdparty/webkit/include/WebCore/PolicyChecker.h new file mode 100644 index 0000000..98c0626 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PolicyChecker.h @@ -0,0 +1 @@ +#include "WebCore/loader/PolicyChecker.h" diff --git a/src/3rdparty/webkit/include/WebCore/PopupMenu.h b/src/3rdparty/webkit/include/WebCore/PopupMenu.h new file mode 100644 index 0000000..e4764a8 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PopupMenu.h @@ -0,0 +1 @@ +#include "WebCore/platform/PopupMenu.h" diff --git a/src/3rdparty/webkit/include/WebCore/PopupMenuClient.h b/src/3rdparty/webkit/include/WebCore/PopupMenuClient.h new file mode 100644 index 0000000..dba5017 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PopupMenuClient.h @@ -0,0 +1 @@ +#include "WebCore/platform/PopupMenuClient.h" diff --git a/src/3rdparty/webkit/include/WebCore/PopupMenuStyle.h b/src/3rdparty/webkit/include/WebCore/PopupMenuStyle.h new file mode 100644 index 0000000..e51de9b --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PopupMenuStyle.h @@ -0,0 +1 @@ +#include "WebCore/platform/PopupMenuStyle.h" diff --git a/src/3rdparty/webkit/include/WebCore/PrintContext.h b/src/3rdparty/webkit/include/WebCore/PrintContext.h new file mode 100644 index 0000000..f234cb6 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/PrintContext.h @@ -0,0 +1 @@ +#include "WebCore/page/PrintContext.h" diff --git a/src/3rdparty/webkit/include/WebCore/ProgressTracker.h b/src/3rdparty/webkit/include/WebCore/ProgressTracker.h new file mode 100644 index 0000000..3fff316 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ProgressTracker.h @@ -0,0 +1 @@ +#include "WebCore/loader/ProgressTracker.h" diff --git a/src/3rdparty/webkit/include/WebCore/ProtectionSpace.h b/src/3rdparty/webkit/include/WebCore/ProtectionSpace.h new file mode 100644 index 0000000..be6afe5 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ProtectionSpace.h @@ -0,0 +1 @@ +#include "WebCore/platform/network/ProtectionSpace.h" diff --git a/src/3rdparty/webkit/include/WebCore/ProxyServer.h b/src/3rdparty/webkit/include/WebCore/ProxyServer.h new file mode 100644 index 0000000..a933b78 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ProxyServer.h @@ -0,0 +1 @@ +#include "WebCore/platform/network/ProxyServer.h" diff --git a/src/3rdparty/webkit/include/WebCore/Range.h b/src/3rdparty/webkit/include/WebCore/Range.h new file mode 100644 index 0000000..21ebad8 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Range.h @@ -0,0 +1 @@ +#include "WebCore/dom/Range.h" diff --git a/src/3rdparty/webkit/include/WebCore/RenderEmbeddedObject.h b/src/3rdparty/webkit/include/WebCore/RenderEmbeddedObject.h new file mode 100644 index 0000000..31be6c9 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/RenderEmbeddedObject.h @@ -0,0 +1 @@ +#include "WebCore/rendering/RenderEmbeddedObject.h" diff --git a/src/3rdparty/webkit/include/WebCore/RenderLayer.h b/src/3rdparty/webkit/include/WebCore/RenderLayer.h new file mode 100644 index 0000000..aefe178 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/RenderLayer.h @@ -0,0 +1 @@ +#include "WebCore/rendering/RenderLayer.h" diff --git a/src/3rdparty/webkit/include/WebCore/RenderTheme.h b/src/3rdparty/webkit/include/WebCore/RenderTheme.h new file mode 100644 index 0000000..324d109 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/RenderTheme.h @@ -0,0 +1 @@ +#include "WebCore/rendering/RenderTheme.h" diff --git a/src/3rdparty/webkit/include/WebCore/RenderTreeAsText.h b/src/3rdparty/webkit/include/WebCore/RenderTreeAsText.h new file mode 100644 index 0000000..7ae5171 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/RenderTreeAsText.h @@ -0,0 +1 @@ +#include "WebCore/rendering/RenderTreeAsText.h" diff --git a/src/3rdparty/webkit/include/WebCore/RenderView.h b/src/3rdparty/webkit/include/WebCore/RenderView.h new file mode 100644 index 0000000..3402a57 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/RenderView.h @@ -0,0 +1 @@ +#include "WebCore/rendering/RenderView.h" diff --git a/src/3rdparty/webkit/include/WebCore/ReplaceSelectionCommand.h b/src/3rdparty/webkit/include/WebCore/ReplaceSelectionCommand.h new file mode 100644 index 0000000..e320498 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ReplaceSelectionCommand.h @@ -0,0 +1 @@ +#include "WebCore/editing/ReplaceSelectionCommand.h" diff --git a/src/3rdparty/webkit/include/WebCore/ResourceHandle.h b/src/3rdparty/webkit/include/WebCore/ResourceHandle.h new file mode 100644 index 0000000..42a0e20 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ResourceHandle.h @@ -0,0 +1 @@ +#include "WebCore/platform/network/ResourceHandle.h" diff --git a/src/3rdparty/webkit/include/WebCore/ResourceLoadScheduler.h b/src/3rdparty/webkit/include/WebCore/ResourceLoadScheduler.h new file mode 100644 index 0000000..5cf5d4b --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ResourceLoadScheduler.h @@ -0,0 +1 @@ +#include "WebCore/loader/ResourceLoadScheduler.h" diff --git a/src/3rdparty/webkit/include/WebCore/RuntimeEnabledFeatures.h b/src/3rdparty/webkit/include/WebCore/RuntimeEnabledFeatures.h new file mode 100644 index 0000000..a8e879b --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/RuntimeEnabledFeatures.h @@ -0,0 +1 @@ +#include "WebCore/bindings/generic/RuntimeEnabledFeatures.h" diff --git a/src/3rdparty/webkit/include/WebCore/SchemeRegistry.h b/src/3rdparty/webkit/include/WebCore/SchemeRegistry.h new file mode 100644 index 0000000..6c89b6a --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/SchemeRegistry.h @@ -0,0 +1 @@ +#include "WebCore/platform/SchemeRegistry.h" diff --git a/src/3rdparty/webkit/include/WebCore/ScriptController.h b/src/3rdparty/webkit/include/WebCore/ScriptController.h new file mode 100644 index 0000000..5bd55f4 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ScriptController.h @@ -0,0 +1 @@ +#include "WebCore/bindings/js/ScriptController.h" diff --git a/src/3rdparty/webkit/include/WebCore/ScriptValue.h b/src/3rdparty/webkit/include/WebCore/ScriptValue.h new file mode 100644 index 0000000..4afbad7 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ScriptValue.h @@ -0,0 +1 @@ +#include "WebCore/bindings/js/ScriptValue.h" diff --git a/src/3rdparty/webkit/include/WebCore/ScrollTypes.h b/src/3rdparty/webkit/include/WebCore/ScrollTypes.h new file mode 100644 index 0000000..c35b2f3 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ScrollTypes.h @@ -0,0 +1 @@ +#include "WebCore/platform/ScrollTypes.h" diff --git a/src/3rdparty/webkit/include/WebCore/ScrollView.h b/src/3rdparty/webkit/include/WebCore/ScrollView.h new file mode 100644 index 0000000..6b4f7f6 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ScrollView.h @@ -0,0 +1 @@ +#include "WebCore/platform/ScrollView.h" diff --git a/src/3rdparty/webkit/include/WebCore/ScrollableArea.h b/src/3rdparty/webkit/include/WebCore/ScrollableArea.h new file mode 100644 index 0000000..11afb5f --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ScrollableArea.h @@ -0,0 +1 @@ +#include "WebCore/platform/ScrollableArea.h" diff --git a/src/3rdparty/webkit/include/WebCore/Scrollbar.h b/src/3rdparty/webkit/include/WebCore/Scrollbar.h new file mode 100644 index 0000000..9fe1514 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Scrollbar.h @@ -0,0 +1 @@ +#include "WebCore/platform/Scrollbar.h" diff --git a/src/3rdparty/webkit/include/WebCore/ScrollbarTheme.h b/src/3rdparty/webkit/include/WebCore/ScrollbarTheme.h new file mode 100644 index 0000000..fc4e762 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ScrollbarTheme.h @@ -0,0 +1 @@ +#include "WebCore/platform/ScrollbarTheme.h" diff --git a/src/3rdparty/webkit/include/WebCore/SearchPopupMenu.h b/src/3rdparty/webkit/include/WebCore/SearchPopupMenu.h new file mode 100644 index 0000000..637ad39 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/SearchPopupMenu.h @@ -0,0 +1 @@ +#include "WebCore/platform/SearchPopupMenu.h" diff --git a/src/3rdparty/webkit/include/WebCore/SecurityOrigin.h b/src/3rdparty/webkit/include/WebCore/SecurityOrigin.h new file mode 100644 index 0000000..5b00657 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/SecurityOrigin.h @@ -0,0 +1 @@ +#include "WebCore/page/SecurityOrigin.h" diff --git a/src/3rdparty/webkit/include/WebCore/SecurityOriginHash.h b/src/3rdparty/webkit/include/WebCore/SecurityOriginHash.h new file mode 100644 index 0000000..dac6640 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/SecurityOriginHash.h @@ -0,0 +1 @@ +#include "WebCore/page/SecurityOriginHash.h" diff --git a/src/3rdparty/webkit/include/WebCore/SerializedScriptValue.h b/src/3rdparty/webkit/include/WebCore/SerializedScriptValue.h new file mode 100644 index 0000000..2186c56 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/SerializedScriptValue.h @@ -0,0 +1 @@ +#include "WebCore/bindings/js/SerializedScriptValue.h" diff --git a/src/3rdparty/webkit/include/WebCore/Settings.h b/src/3rdparty/webkit/include/WebCore/Settings.h new file mode 100644 index 0000000..3a29adc --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Settings.h @@ -0,0 +1 @@ +#include "WebCore/page/Settings.h" diff --git a/src/3rdparty/webkit/include/WebCore/ShadowRoot.h b/src/3rdparty/webkit/include/WebCore/ShadowRoot.h new file mode 100644 index 0000000..1a832bb --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ShadowRoot.h @@ -0,0 +1 @@ +#include "WebCore/dom/ShadowRoot.h" diff --git a/src/3rdparty/webkit/include/WebCore/SharedBuffer.h b/src/3rdparty/webkit/include/WebCore/SharedBuffer.h new file mode 100644 index 0000000..95eedd0 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/SharedBuffer.h @@ -0,0 +1 @@ +#include "WebCore/platform/SharedBuffer.h" diff --git a/src/3rdparty/webkit/include/WebCore/SimpleFontData.h b/src/3rdparty/webkit/include/WebCore/SimpleFontData.h new file mode 100644 index 0000000..3d90d29 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/SimpleFontData.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/SimpleFontData.h" diff --git a/src/3rdparty/webkit/include/WebCore/SoftLinking.h b/src/3rdparty/webkit/include/WebCore/SoftLinking.h new file mode 100644 index 0000000..3ceb0c0 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/SoftLinking.h @@ -0,0 +1 @@ +#include "WebCore/platform/mac/SoftLinking.h" diff --git a/src/3rdparty/webkit/include/WebCore/SpellingCorrectionController.h b/src/3rdparty/webkit/include/WebCore/SpellingCorrectionController.h new file mode 100644 index 0000000..d7c0571 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/SpellingCorrectionController.h @@ -0,0 +1 @@ +#include "WebCore/editing/SpellingCorrectionController.h" diff --git a/src/3rdparty/webkit/include/WebCore/StorageTracker.h b/src/3rdparty/webkit/include/WebCore/StorageTracker.h new file mode 100644 index 0000000..55d240a --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/StorageTracker.h @@ -0,0 +1 @@ +#include "WebCore/storage/StorageTracker.h" diff --git a/src/3rdparty/webkit/include/WebCore/SubstituteData.h b/src/3rdparty/webkit/include/WebCore/SubstituteData.h new file mode 100644 index 0000000..47db253 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/SubstituteData.h @@ -0,0 +1 @@ +#include "WebCore/loader/SubstituteData.h" diff --git a/src/3rdparty/webkit/include/WebCore/TextAffinity.h b/src/3rdparty/webkit/include/WebCore/TextAffinity.h new file mode 100644 index 0000000..e97160c --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/TextAffinity.h @@ -0,0 +1 @@ +#include "WebCore/editing/TextAffinity.h" diff --git a/src/3rdparty/webkit/include/WebCore/TextCheckerClient.h b/src/3rdparty/webkit/include/WebCore/TextCheckerClient.h new file mode 100644 index 0000000..860e675 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/TextCheckerClient.h @@ -0,0 +1 @@ +#include "WebCore/platform/text/TextCheckerClient.h" diff --git a/src/3rdparty/webkit/include/WebCore/TextDirection.h b/src/3rdparty/webkit/include/WebCore/TextDirection.h new file mode 100644 index 0000000..de842d6 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/TextDirection.h @@ -0,0 +1 @@ +#include "WebCore/platform/text/TextDirection.h" diff --git a/src/3rdparty/webkit/include/WebCore/TextIterator.h b/src/3rdparty/webkit/include/WebCore/TextIterator.h new file mode 100644 index 0000000..193bbd8 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/TextIterator.h @@ -0,0 +1 @@ +#include "WebCore/editing/TextIterator.h" diff --git a/src/3rdparty/webkit/include/WebCore/TextResourceDecoder.h b/src/3rdparty/webkit/include/WebCore/TextResourceDecoder.h new file mode 100644 index 0000000..75eae5c --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/TextResourceDecoder.h @@ -0,0 +1 @@ +#include "WebCore/loader/TextResourceDecoder.h" diff --git a/src/3rdparty/webkit/include/WebCore/TextRun.h b/src/3rdparty/webkit/include/WebCore/TextRun.h new file mode 100644 index 0000000..8e2a041 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/TextRun.h @@ -0,0 +1 @@ +#include "WebCore/platform/graphics/TextRun.h" diff --git a/src/3rdparty/webkit/include/WebCore/Timer.h b/src/3rdparty/webkit/include/WebCore/Timer.h new file mode 100644 index 0000000..62727b1 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Timer.h @@ -0,0 +1 @@ +#include "WebCore/platform/Timer.h" diff --git a/src/3rdparty/webkit/include/WebCore/UIEventWithKeyState.h b/src/3rdparty/webkit/include/WebCore/UIEventWithKeyState.h new file mode 100644 index 0000000..c0ac9aa --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/UIEventWithKeyState.h @@ -0,0 +1 @@ +#include "WebCore/dom/UIEventWithKeyState.h" diff --git a/src/3rdparty/webkit/include/WebCore/UserContentTypes.h b/src/3rdparty/webkit/include/WebCore/UserContentTypes.h new file mode 100644 index 0000000..cf75a72 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/UserContentTypes.h @@ -0,0 +1 @@ +#include "WebCore/page/UserContentTypes.h" diff --git a/src/3rdparty/webkit/include/WebCore/UserContentURLPattern.h b/src/3rdparty/webkit/include/WebCore/UserContentURLPattern.h new file mode 100644 index 0000000..877c9cb --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/UserContentURLPattern.h @@ -0,0 +1 @@ +#include "WebCore/page/UserContentURLPattern.h" diff --git a/src/3rdparty/webkit/include/WebCore/UserGestureIndicator.h b/src/3rdparty/webkit/include/WebCore/UserGestureIndicator.h new file mode 100644 index 0000000..384902e --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/UserGestureIndicator.h @@ -0,0 +1 @@ +#include "WebCore/dom/UserGestureIndicator.h" diff --git a/src/3rdparty/webkit/include/WebCore/UserScriptTypes.h b/src/3rdparty/webkit/include/WebCore/UserScriptTypes.h new file mode 100644 index 0000000..bdd9ec8 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/UserScriptTypes.h @@ -0,0 +1 @@ +#include "WebCore/page/UserScriptTypes.h" diff --git a/src/3rdparty/webkit/include/WebCore/UserTypingGestureIndicator.h b/src/3rdparty/webkit/include/WebCore/UserTypingGestureIndicator.h new file mode 100644 index 0000000..b7a34a4 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/UserTypingGestureIndicator.h @@ -0,0 +1 @@ +#include "WebCore/dom/UserTypingGestureIndicator.h" diff --git a/src/3rdparty/webkit/include/WebCore/ViewportArguments.h b/src/3rdparty/webkit/include/WebCore/ViewportArguments.h new file mode 100644 index 0000000..dd0911d --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/ViewportArguments.h @@ -0,0 +1 @@ +#include "WebCore/dom/ViewportArguments.h" diff --git a/src/3rdparty/webkit/include/WebCore/VisiblePosition.h b/src/3rdparty/webkit/include/WebCore/VisiblePosition.h new file mode 100644 index 0000000..5575815 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/VisiblePosition.h @@ -0,0 +1 @@ +#include "WebCore/editing/VisiblePosition.h" diff --git a/src/3rdparty/webkit/include/WebCore/VisitedLinkStrategy.h b/src/3rdparty/webkit/include/WebCore/VisitedLinkStrategy.h new file mode 100644 index 0000000..f5b8a57 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/VisitedLinkStrategy.h @@ -0,0 +1 @@ +#include "WebCore/platform/VisitedLinkStrategy.h" diff --git a/src/3rdparty/webkit/include/WebCore/WebCoreKeyboardUIMode.h b/src/3rdparty/webkit/include/WebCore/WebCoreKeyboardUIMode.h new file mode 100644 index 0000000..8b748d3 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/WebCoreKeyboardUIMode.h @@ -0,0 +1 @@ +#include "WebCore/page/WebCoreKeyboardUIMode.h" diff --git a/src/3rdparty/webkit/include/WebCore/Widget.h b/src/3rdparty/webkit/include/WebCore/Widget.h new file mode 100644 index 0000000..d4e2687 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/Widget.h @@ -0,0 +1 @@ +#include "WebCore/platform/Widget.h" diff --git a/src/3rdparty/webkit/include/WebCore/WindowFeatures.h b/src/3rdparty/webkit/include/WebCore/WindowFeatures.h new file mode 100644 index 0000000..bb349fd --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/WindowFeatures.h @@ -0,0 +1 @@ +#include "WebCore/page/WindowFeatures.h" diff --git a/src/3rdparty/webkit/include/WebCore/markup.h b/src/3rdparty/webkit/include/WebCore/markup.h new file mode 100644 index 0000000..05cdeea --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/markup.h @@ -0,0 +1 @@ +#include "WebCore/editing/markup.h" diff --git a/src/3rdparty/webkit/include/WebCore/npapi.h b/src/3rdparty/webkit/include/WebCore/npapi.h new file mode 100644 index 0000000..ec1c3b0 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/npapi.h @@ -0,0 +1 @@ +#include "WebCore/bridge/npapi.h" diff --git a/src/3rdparty/webkit/include/WebCore/npfunctions.h b/src/3rdparty/webkit/include/WebCore/npfunctions.h new file mode 100644 index 0000000..151ef69 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/npfunctions.h @@ -0,0 +1 @@ +#include "WebCore/plugins/npfunctions.h" diff --git a/src/3rdparty/webkit/include/WebCore/npruntime.h b/src/3rdparty/webkit/include/WebCore/npruntime.h new file mode 100644 index 0000000..271e548 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/npruntime.h @@ -0,0 +1 @@ +#include "WebCore/bridge/npruntime.h" diff --git a/src/3rdparty/webkit/include/WebCore/npruntime_internal.h b/src/3rdparty/webkit/include/WebCore/npruntime_internal.h new file mode 100644 index 0000000..255abc3 --- /dev/null +++ b/src/3rdparty/webkit/include/WebCore/npruntime_internal.h @@ -0,0 +1 @@ +#include "WebCore/bridge/npruntime_internal.h" diff --git a/src/3rdparty/webkit/include/WebKit2/RunLoop.h b/src/3rdparty/webkit/include/WebKit2/RunLoop.h new file mode 100644 index 0000000..d6f6d5f --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/RunLoop.h @@ -0,0 +1 @@ +#include "WebKit2/Platform/RunLoop.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKArray.h b/src/3rdparty/webkit/include/WebKit2/WKArray.h new file mode 100644 index 0000000..b3841b0 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKArray.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKArray.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKBackForwardList.h b/src/3rdparty/webkit/include/WebKit2/WKBackForwardList.h new file mode 100644 index 0000000..26f2e74 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKBackForwardList.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKBackForwardList.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKBackForwardListItem.h b/src/3rdparty/webkit/include/WebKit2/WKBackForwardListItem.h new file mode 100644 index 0000000..e609686 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKBackForwardListItem.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKBackForwardListItem.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKBase.h b/src/3rdparty/webkit/include/WebKit2/WKBase.h new file mode 100644 index 0000000..c859bf9 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKBase.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKBase.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKContext.h b/src/3rdparty/webkit/include/WebKit2/WKContext.h new file mode 100644 index 0000000..c884b67 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKContext.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKContext.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKContextMenuItemTypes.h b/src/3rdparty/webkit/include/WebKit2/WKContextMenuItemTypes.h new file mode 100644 index 0000000..62e0aa9 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKContextMenuItemTypes.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKContextMenuItemTypes.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKCookieManager.h b/src/3rdparty/webkit/include/WebKit2/WKCookieManager.h new file mode 100644 index 0000000..3ff208f --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKCookieManager.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKCookieManager.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKCredentialTypes.h b/src/3rdparty/webkit/include/WebKit2/WKCredentialTypes.h new file mode 100644 index 0000000..6221bc7 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKCredentialTypes.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKCredentialTypes.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKData.h b/src/3rdparty/webkit/include/WebKit2/WKData.h new file mode 100644 index 0000000..794eedf --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKData.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKData.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKDictionary.h b/src/3rdparty/webkit/include/WebKit2/WKDictionary.h new file mode 100644 index 0000000..570f234 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKDictionary.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKDictionary.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKError.h b/src/3rdparty/webkit/include/WebKit2/WKError.h new file mode 100644 index 0000000..4cf78d6 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKError.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKError.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKEvent.h b/src/3rdparty/webkit/include/WebKit2/WKEvent.h new file mode 100644 index 0000000..e58bc1c --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKEvent.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKEvent.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKFindOptions.h b/src/3rdparty/webkit/include/WebKit2/WKFindOptions.h new file mode 100644 index 0000000..1e4ef92 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKFindOptions.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKFindOptions.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKFormSubmissionListener.h b/src/3rdparty/webkit/include/WebKit2/WKFormSubmissionListener.h new file mode 100644 index 0000000..b4cceb7 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKFormSubmissionListener.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKFormSubmissionListener.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKFrame.h b/src/3rdparty/webkit/include/WebKit2/WKFrame.h new file mode 100644 index 0000000..3ac6529 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKFrame.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKFrame.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKFramePolicyListener.h b/src/3rdparty/webkit/include/WebKit2/WKFramePolicyListener.h new file mode 100644 index 0000000..7916c38 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKFramePolicyListener.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKFramePolicyListener.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKGeolocationManager.h b/src/3rdparty/webkit/include/WebKit2/WKGeolocationManager.h new file mode 100644 index 0000000..3e503e6 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKGeolocationManager.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKGeolocationManager.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKGeolocationPermissionRequest.h b/src/3rdparty/webkit/include/WebKit2/WKGeolocationPermissionRequest.h new file mode 100644 index 0000000..5205a0e --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKGeolocationPermissionRequest.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKGeolocationPermissionRequest.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKGeolocationPosition.h b/src/3rdparty/webkit/include/WebKit2/WKGeolocationPosition.h new file mode 100644 index 0000000..cff7f23 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKGeolocationPosition.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKGeolocationPosition.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKGeometry.h b/src/3rdparty/webkit/include/WebKit2/WKGeometry.h new file mode 100644 index 0000000..b84460c --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKGeometry.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKGeometry.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKGraphicsContext.h b/src/3rdparty/webkit/include/WebKit2/WKGraphicsContext.h new file mode 100644 index 0000000..fbccdc9 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKGraphicsContext.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKGraphicsContext.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKImage.h b/src/3rdparty/webkit/include/WebKit2/WKImage.h new file mode 100644 index 0000000..a02314d --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKImage.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKImage.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKMutableArray.h b/src/3rdparty/webkit/include/WebKit2/WKMutableArray.h new file mode 100644 index 0000000..a47af3b --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKMutableArray.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKMutableArray.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKMutableDictionary.h b/src/3rdparty/webkit/include/WebKit2/WKMutableDictionary.h new file mode 100644 index 0000000..0c345f5 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKMutableDictionary.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKMutableDictionary.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKNativeEvent.h b/src/3rdparty/webkit/include/WebKit2/WKNativeEvent.h new file mode 100644 index 0000000..deeb2a5 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKNativeEvent.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKNativeEvent.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKNavigationData.h b/src/3rdparty/webkit/include/WebKit2/WKNavigationData.h new file mode 100644 index 0000000..9607b97 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKNavigationData.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKNavigationData.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKNumber.h b/src/3rdparty/webkit/include/WebKit2/WKNumber.h new file mode 100644 index 0000000..7924588 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKNumber.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKNumber.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKOpenPanelParameters.h b/src/3rdparty/webkit/include/WebKit2/WKOpenPanelParameters.h new file mode 100644 index 0000000..b0c4134 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKOpenPanelParameters.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKOpenPanelParameters.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKOpenPanelResultListener.h b/src/3rdparty/webkit/include/WebKit2/WKOpenPanelResultListener.h new file mode 100644 index 0000000..a3b015d --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKOpenPanelResultListener.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKOpenPanelResultListener.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKPage.h b/src/3rdparty/webkit/include/WebKit2/WKPage.h new file mode 100644 index 0000000..75d785c --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKPage.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKPage.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKPageGroup.h b/src/3rdparty/webkit/include/WebKit2/WKPageGroup.h new file mode 100644 index 0000000..eefeb25 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKPageGroup.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKPageGroup.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKPageLoadTypes.h b/src/3rdparty/webkit/include/WebKit2/WKPageLoadTypes.h new file mode 100644 index 0000000..cd39b9d --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKPageLoadTypes.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKPageLoadTypes.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKPreferences.h b/src/3rdparty/webkit/include/WebKit2/WKPreferences.h new file mode 100644 index 0000000..5777a3a --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKPreferences.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKPreferences.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKProtectionSpaceTypes.h b/src/3rdparty/webkit/include/WebKit2/WKProtectionSpaceTypes.h new file mode 100644 index 0000000..025ce94 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKProtectionSpaceTypes.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/C/WKProtectionSpaceTypes.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKRetainPtr.h b/src/3rdparty/webkit/include/WebKit2/WKRetainPtr.h new file mode 100644 index 0000000..5e58f97 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKRetainPtr.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/cpp/WKRetainPtr.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKString.h b/src/3rdparty/webkit/include/WebKit2/WKString.h new file mode 100644 index 0000000..381b3c6 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKString.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKString.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKType.h b/src/3rdparty/webkit/include/WebKit2/WKType.h new file mode 100644 index 0000000..addabdd --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKType.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKType.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKURL.h b/src/3rdparty/webkit/include/WebKit2/WKURL.h new file mode 100644 index 0000000..d7f765b --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKURL.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKURL.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKURLRequest.h b/src/3rdparty/webkit/include/WebKit2/WKURLRequest.h new file mode 100644 index 0000000..21d3b70 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKURLRequest.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKURLRequest.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKURLResponse.h b/src/3rdparty/webkit/include/WebKit2/WKURLResponse.h new file mode 100644 index 0000000..f62c0f5 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKURLResponse.h @@ -0,0 +1 @@ +#include "WebKit2/Shared/API/c/WKURLResponse.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WKView.h b/src/3rdparty/webkit/include/WebKit2/WKView.h new file mode 100644 index 0000000..4247dc6 --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WKView.h @@ -0,0 +1 @@ +#include "WebKit2/UIProcess/API/mac/WKView.h" diff --git a/src/3rdparty/webkit/include/WebKit2/WebProcess.h b/src/3rdparty/webkit/include/WebKit2/WebProcess.h new file mode 100644 index 0000000..9b8eb4a --- /dev/null +++ b/src/3rdparty/webkit/include/WebKit2/WebProcess.h @@ -0,0 +1 @@ +#include "WebKit2/WebProcess/WebProcess.h" diff --git a/src/corelib/plugin/quuid.cpp b/src/corelib/plugin/quuid.cpp index af63b79..83c6194 100644 --- a/src/corelib/plugin/quuid.cpp +++ b/src/corelib/plugin/quuid.cpp @@ -901,6 +901,12 @@ QUuid QUuid::createUuid() uint randNumber = 0; for (int filled = 0; filled < intbits; filled += randbits) randNumber |= qrand()<<filled; +#if defined(Q_OS_SYMBIAN) + // Symbian does not have /dev/urandom, so entropy is low. + // Add more entropy from the kernel tick count (1ms resolution). + // big multipler used to splatter the tick count bits over the whole 32 bits + randNumber ^= User::NTickCount() * 0x3b9aca07; +#endif *(data+chunks) = randNumber; } } diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index d915989..e33b7d5 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -2788,6 +2788,8 @@ int QDateTime::secsTo(const QDateTime &other) const } /*! + \since 4.7 + Returns the number of milliseconds from this datetime to the \a other datetime. If the \a other datetime is earlier than this datetime, the value returned is negative. diff --git a/src/corelib/tools/qlocale_symbian.cpp b/src/corelib/tools/qlocale_symbian.cpp index cdf0ab1..1214e46 100644 --- a/src/corelib/tools/qlocale_symbian.cpp +++ b/src/corelib/tools/qlocale_symbian.cpp @@ -195,7 +195,9 @@ QByteArray qt_symbianLocaleName(int code) return qt_resolveSymbianLocaleName(code, ISO); } -// order is: normal, abbr, nmode, nmode+abbr +// Rows are: normal, abbr, nmode, nmode+abbr +// First three values on a row are used for three component date, +// while the last two are used for two component date (i.e. no year). static const char *us_locale_dep[] = { "MM", "dd", "yyyy", "MM", "dd", "M", "d", "yy", "M", "d", @@ -214,6 +216,13 @@ static const char *jp_locale_dep[] = { "yyyy", "MMMM", "dd", "MMMM", "dd", "yy", "MMM", "d", "MMM", "d" }; +// 0 = day, 1 = month, 2 = year +static const int digit_map[] = { + 1, 0, 2, 1, 0, // American + 0, 1, 2, 0, 1, // European + 2, 1, 0, 1, 0 // Japanese +}; + /*! Returns a Qt version of the given \a sys_fmt Symbian locale format string. */ @@ -229,6 +238,9 @@ static QString s60ToQtFormat(const QString &sys_fmt) int i = 0; bool open_escape = false; bool abbrev_next = false; + bool abbrev_day = false; + bool abbrev_month = false; + bool abbrev_year = false; bool locale_indep_ordering = false; bool minus_mode = false; bool plus_mode = false; @@ -305,8 +317,11 @@ static QString s60ToQtFormat(const QString &sys_fmt) case 'D': { - if (!locale_indep_ordering) + if (!locale_indep_ordering) { + if (abbrev_next) + abbrev_day = true; break; + } if (!abbrev_next) result += QLatin1String("dd"); @@ -318,8 +333,11 @@ static QString s60ToQtFormat(const QString &sys_fmt) case 'M': { - if (!locale_indep_ordering) + if (!locale_indep_ordering) { + if (abbrev_next) + abbrev_month = true; break; + } if (!n_mode) { if (!abbrev_next) @@ -340,8 +358,11 @@ static QString s60ToQtFormat(const QString &sys_fmt) { n_mode = true; - if (!locale_indep_ordering) + if (!locale_indep_ordering) { + if (abbrev_next) + abbrev_month = true; break; + } if (!abbrev_next) result += QLatin1String("MMMM"); @@ -353,8 +374,11 @@ static QString s60ToQtFormat(const QString &sys_fmt) case 'Y': { - if (!locale_indep_ordering) + if (!locale_indep_ordering) { + if (abbrev_next) + abbrev_year = true; break; + } if (!abbrev_next) result += QLatin1String("yyyy"); @@ -522,7 +546,9 @@ static QString s60ToQtFormat(const QString &sys_fmt) const char **locale_dep; switch (df) { - default: // fallthru to american + default: + df = EDateAmerican; + // fallthru to american case EDateAmerican: locale_dep = us_locale_dep; break; @@ -534,12 +560,33 @@ static QString s60ToQtFormat(const QString &sys_fmt) break; } int offset = 0; - if (abbrev_next) + int adjustedDigit = c.digitValue() - 1; + + bool abbrev_this = abbrev_next; + // If abbreviation specified for this digit, use that. + // Otherwise abbreviate according to %D, %M, and %Y specified previously. + if (!abbrev_this) { + switch (digit_map[adjustedDigit + (static_cast<int>(df) * 5)]) { + case 0: + abbrev_this = abbrev_day; + break; + case 1: + abbrev_this = abbrev_month; + break; + case 2: + abbrev_this = abbrev_year; + break; + default: + break; // never happens + } + } + + if (abbrev_this) offset += 5; if (n_mode) offset += 10; - result += QLatin1String(locale_dep[offset + (c.digitValue()-1)]); + result += QLatin1String(locale_dep[offset + (adjustedDigit)]); break; } diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp index 805ca4d..7127173 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.cpp +++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp @@ -3600,8 +3600,8 @@ void QDeclarativeItem::setSize(const QSizeF &size) bool QDeclarativeItem::hasActiveFocus() const { Q_D(const QDeclarativeItem); - return focusItem() == this || - (d->flags & QGraphicsItem::ItemIsFocusScope && focusItem() != 0); + return (focusItem() && focusItem()->isVisible()) && (focusItem() == this || + (d->flags & QGraphicsItem::ItemIsFocusScope && focusItem() != 0)); } /*! diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp index 26757b5..b896a77 100644 --- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp +++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp @@ -1375,7 +1375,7 @@ void QDeclarativeVisualDataModel::_q_rowsMoved(const QModelIndex &sourceParent, Q_D(QDeclarativeVisualDataModel); const int count = sourceEnd - sourceStart + 1; if (destinationParent == d->m_root && sourceParent == d->m_root) { - _q_itemsMoved(sourceStart, sourceStart > destinationRow ? destinationRow : destinationRow-1, count); + _q_itemsMoved(sourceStart, sourceStart > destinationRow ? destinationRow : destinationRow-count, count); } else if (sourceParent == d->m_root) { _q_itemsRemoved(sourceStart, count); } else if (destinationParent == d->m_root) { diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index 2ac2bdf..0c218fc 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -1171,24 +1171,26 @@ void QGraphicsItemPrivate::setParentItemHelper(QGraphicsItem *newParent, const Q // Update focus scope item ptr in new scope. QGraphicsItem *newFocusScopeItem = subFocusItem ? subFocusItem : parentFocusScopeItem; if (newFocusScopeItem && newParent) { - if (subFocusItem) { - // Find the subFocusItem's topmost focus scope. - QGraphicsItem *ancestorScope = 0; - QGraphicsItem *p = subFocusItem->d_ptr->parent; - while (p) { - if (p->d_ptr->flags & QGraphicsItem::ItemIsFocusScope) - ancestorScope = p; - if (p->d_ptr->flags & QGraphicsItem::ItemIsPanel) - break; - p = p->d_ptr->parent; - } - if (ancestorScope) - newFocusScopeItem = ancestorScope; - } - QGraphicsItem *p = newParent; while (p) { if (p->d_ptr->flags & QGraphicsItem::ItemIsFocusScope) { + if (subFocusItem && subFocusItem != q_ptr) { + // Find the subFocusItem's topmost focus scope within the new parent's focusscope + QGraphicsItem *ancestorScope = 0; + QGraphicsItem *p2 = subFocusItem->d_ptr->parent; + while (p2 && p2 != p) { + if (p2->d_ptr->flags & QGraphicsItem::ItemIsFocusScope) + ancestorScope = p2; + if (p2->d_ptr->flags & QGraphicsItem::ItemIsPanel) + break; + if (p2 == q_ptr) + break; + p2 = p2->d_ptr->parent; + } + if (ancestorScope) + newFocusScopeItem = ancestorScope; + } + p->d_ptr->focusScopeItem = newFocusScopeItem; newFocusScopeItem->d_ptr->focusScopeItemChange(true); // Ensure the new item is no longer the subFocusItem. The @@ -3297,7 +3299,7 @@ void QGraphicsItemPrivate::setFocusHelper(Qt::FocusReason focusReason, bool clim } if (climb) { - while (f->d_ptr->focusScopeItem && f->d_ptr->focusScopeItem->isVisible() && f->d_ptr->focusScopeItem != f) + while (f->d_ptr->focusScopeItem && f->d_ptr->focusScopeItem->isVisible()) f = f->d_ptr->focusScopeItem; } diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index da1c778..361af8b 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -582,13 +582,20 @@ QPoint QSymbianControl::translatePointForFixedNativeOrientation(const TPoint &po { QPoint pos(pointerEventPos.iX, pointerEventPos.iY); if (qwidget->d_func()->fixNativeOrientationCalled) { - QSize wsize = qwidget->size(); - TSize size = Size(); + QSize wsize = qwidget->size(); // always same as the size in the native orientation + TSize size = Size(); // depends on the current orientation if (size.iWidth == wsize.height() && size.iHeight == wsize.width()) { qreal x = pos.x(); qreal y = pos.y(); - pos.setX(size.iHeight - y); - pos.setY(x); + if (S60->screenRotation == QS60Data::ScreenRotation90) { + // DisplayRightUp + pos.setX(size.iHeight - y); + pos.setY(x); + } else if (S60->screenRotation == QS60Data::ScreenRotation270) { + // DisplayLeftUp + pos.setX(y); + pos.setY(size.iWidth - x); + } } } return pos; diff --git a/src/gui/kernel/qt_s60_p.h b/src/gui/kernel/qt_s60_p.h index ada52a0..01d5f22 100644 --- a/src/gui/kernel/qt_s60_p.h +++ b/src/gui/kernel/qt_s60_p.h @@ -77,6 +77,7 @@ #include <akncontext.h> // CAknContextPane #include <eikspane.h> // CEikStatusPane #include <AknPopupFader.h> // MAknFadedComponent and TAknPopupFader +#include <bitstd.h> // EGraphicsOrientation constants #ifdef QT_SYMBIAN_HAVE_AKNTRANSEFFECT_H #include <gfxtranseffect/gfxtranseffect.h> // BeginFullScreen #include <akntranseffect.h> // BeginFullScreen @@ -205,6 +206,14 @@ public: int nativeScreenWidthInPixels; int nativeScreenHeightInPixels; + enum ScreenRotation { + ScreenRotation0, // portrait (or the native orientation) + ScreenRotation90, // typically DisplayLeftUp landscape + ScreenRotation180, // not used + ScreenRotation270 // DisplayRightUp landscape when 3-way orientation is supported + }; + ScreenRotation screenRotation; + int beginFullScreenCalled : 1; int endFullScreenCalled : 1; }; @@ -376,6 +385,24 @@ inline void QS60Data::updateScreenSize() inches = S60->screenWidthInTwips / (TReal)KTwipsPerInch; S60->defaultDpiX = S60->screenWidthInPixels / inches; + switch (params.iRotation) { + case CFbsBitGc::EGraphicsOrientationNormal: + S60->screenRotation = ScreenRotation0; + break; + case CFbsBitGc::EGraphicsOrientationRotated90: + S60->screenRotation = ScreenRotation90; + break; + case CFbsBitGc::EGraphicsOrientationRotated180: + S60->screenRotation = ScreenRotation180; + break; + case CFbsBitGc::EGraphicsOrientationRotated270: + S60->screenRotation = ScreenRotation270; + break; + default: + S60->screenRotation = ScreenRotation0; + break; + } + int screens = S60->screenCount(); for (int i = 0; i < screens; ++i) { CWsScreenDevice *dev = S60->screenDevice(i); diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp index 76b7d41..ab09932 100644 --- a/src/network/ssl/qsslcertificate.cpp +++ b/src/network/ssl/qsslcertificate.cpp @@ -783,22 +783,24 @@ QList<QSslCertificate> QSslCertificatePrivate::certificatesFromDer(const QByteAr // These certificates are known to be fraudulent and were created during the comodo // compromise. See http://www.comodo.com/Comodo-Fraud-Incident-2011-03-23.html static const char *certificate_blacklist[] = { - "04:7e:cb:e9:fc:a5:5f:7b:d0:9e:ae:36:e1:0c:ae:1e", - "f5:c8:6a:f3:61:62:f1:3a:64:f5:4f:6d:c9:58:7c:06", - "d7:55:8f:da:f5:f1:10:5b:b2:13:28:2b:70:77:29:a3", - "39:2a:43:4f:0e:07:df:1f:8a:a3:05:de:34:e0:c2:29", - "3e:75:ce:d4:6b:69:30:21:21:88:30:ae:86:a8:2a:71", - "e9:02:8b:95:78:e4:15:dc:1a:71:0a:2b:88:15:44:47", - "92:39:d5:34:8f:40:d1:69:5a:74:54:70:e1:f2:3f:43", - "b0:b7:13:3e:d0:96:f9:b5:6f:ae:91:c8:74:bd:3a:c0", - "d8:f3:5f:4e:b7:87:2b:2d:ab:06:92:e3:15:38:2f:b0", + "04:7e:cb:e9:fc:a5:5f:7b:d0:9e:ae:36:e1:0c:ae:1e", "mail.google.com", // Comodo + "f5:c8:6a:f3:61:62:f1:3a:64:f5:4f:6d:c9:58:7c:06", "www.google.com", // Comodo + "d7:55:8f:da:f5:f1:10:5b:b2:13:28:2b:70:77:29:a3", "login.yahoo.com", // Comodo + "39:2a:43:4f:0e:07:df:1f:8a:a3:05:de:34:e0:c2:29", "login.yahoo.com", // Comodo + "3e:75:ce:d4:6b:69:30:21:21:88:30:ae:86:a8:2a:71", "login.yahoo.com", // Comodo + "e9:02:8b:95:78:e4:15:dc:1a:71:0a:2b:88:15:44:47", "login.skype.com", // Comodo + "92:39:d5:34:8f:40:d1:69:5a:74:54:70:e1:f2:3f:43", "addons.mozilla.org", // Comodo + "b0:b7:13:3e:d0:96:f9:b5:6f:ae:91:c8:74:bd:3a:c0", "login.live.com", // Comodo + "d8:f3:5f:4e:b7:87:2b:2d:ab:06:92:e3:15:38:2f:b0", "global trustee", // Comodo + "05:e2:e6:a4:cd:09:ea:54:d6:65:b0:75:fe:22:a2:56", "*.google.com", // DigiNotar 0 }; bool QSslCertificatePrivate::isBlacklisted(const QSslCertificate &certificate) { for (int a = 0; certificate_blacklist[a] != 0; a++) { - if (certificate.serialNumber() == certificate_blacklist[a]) + if (certificate.serialNumber() == certificate_blacklist[a++] && + certificate.subjectInfo(QSslCertificate::CommonName) == QString::fromUtf8(certificate_blacklist[a])) return true; } return false; diff --git a/src/plugins/platforms/wayland/wayland.pro b/src/plugins/platforms/wayland/wayland.pro index 5b20a87..cbd67ea 100644 --- a/src/plugins/platforms/wayland/wayland.pro +++ b/src/plugins/platforms/wayland/wayland.pro @@ -33,7 +33,7 @@ INCLUDEPATH += $$QMAKE_INCDIR_WAYLAND LIBS += $$QMAKE_LIBS_WAYLAND QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_WAYLAND -!isEmpty(QMAKE_LFLAGS_RPATH) { +!isEmpty(QMAKE_LFLAGS_RPATH):!contains(QT_CONFIG, no-pkg-config) { WAYLAND_NEEDS_RPATH = $$system(pkg-config --libs-only-L wayland-client) !isEmpty(WAYLAND_NEEDS_RPATH) { !isEmpty(QMAKE_LIBDIR_WAYLAND):QMAKE_LFLAGS += $${QMAKE_LFLAGS_RPATH}$${QMAKE_LIBDIR_WAYLAND} diff --git a/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pro b/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pro index 0d233e6..382217a 100644 --- a/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pro +++ b/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pro @@ -4,6 +4,8 @@ TEMPLATE = subdirs # We just want to export the sqlite3 binaries for Symbian for platforms that do not have them. symbian-abld|symbian-sbsv2 { !symbian_no_export_sqlite:!exists($${EPOCROOT}epoc32/release/armv5/lib/sqlite3.dso) { - BLD_INF_RULES.prj_exports += ":zip SQLite3_v9.2.zip" + # Symbian exports do not like drive letter, so remove it from the source dir + SQLITE_SRC_DIR = $$relativeProPath() + BLD_INF_RULES.prj_exports += ":zip $$SQLITE_SRC_DIR/SQLite3_v9.2.zip" } } diff --git a/src/s60installs/s60installs.pro b/src/s60installs/s60installs.pro index a43c3df..c2b462c 100755 --- a/src/s60installs/s60installs.pro +++ b/src/s60installs/s60installs.pro @@ -27,13 +27,16 @@ symbian: { $$QMAKE_LIBDIR_QT/QtTest$${QT_LIBINFIX}.dll \ $$QMAKE_LIBDIR_QT/QtSql$${QT_LIBINFIX}.dll + # Symbian exports do not like absolute paths, so generate a relative path to original .pro file dir + S60_INSTALLS_SOURCE_DIR = $$relativeProPath() + symbian-abld|symbian-sbsv2 { pluginLocations = $${EPOCROOT}epoc32/release/$(PLATFORM)/$(TARGET) bearerPluginLocation = $${EPOCROOT}epoc32/release/$(PLATFORM)/$(TARGET) bearerStubZ = $${EPOCROOT}$${HW_ZDIR}$${QT_PLUGINS_BASE_DIR}/bearer/qsymbianbearer$${QT_LIBINFIX}.qtplugin BLD_INF_RULES.prj_exports += \ - "qsymbianbearer.qtplugin /$${HW_ZDIR}$${QT_PLUGINS_BASE_DIR}/bearer/qsymbianbearer$${QT_LIBINFIX}.qtplugin" \ - "qsymbianbearer.qtplugin /epoc32/winscw/c$${QT_PLUGINS_BASE_DIR}/bearer/qsymbianbearer$${QT_LIBINFIX}.qtplugin" + "$$S60_INSTALLS_SOURCE_DIR/qsymbianbearer.qtplugin /$${HW_ZDIR}$${QT_PLUGINS_BASE_DIR}/bearer/qsymbianbearer$${QT_LIBINFIX}.qtplugin" \ + "$$S60_INSTALLS_SOURCE_DIR/qsymbianbearer.qtplugin /epoc32/winscw/c$${QT_PLUGINS_BASE_DIR}/bearer/qsymbianbearer$${QT_LIBINFIX}.qtplugin" } else { pluginLocations = $$QT_BUILD_TREE/plugins/s60 bearerPluginLocation = $$QT_BUILD_TREE/plugins/bearer @@ -171,5 +174,5 @@ symbian: { qtlibraries.files += $$QMAKE_LIBDIR_QT/QtMultimedia$${QT_LIBINFIX}.dll } - BLD_INF_RULES.prj_exports += "qt.iby $$CORE_MW_LAYER_IBY_EXPORT_PATH(qt.iby)" + BLD_INF_RULES.prj_exports += "$$S60_INSTALLS_SOURCE_DIR/qt.iby $$CORE_MW_LAYER_IBY_EXPORT_PATH(qt.iby)" } diff --git a/src/xml/sax/qxml.cpp b/src/xml/sax/qxml.cpp index 2f5384b..0c7f2ab 100644 --- a/src/xml/sax/qxml.cpp +++ b/src/xml/sax/qxml.cpp @@ -7748,7 +7748,13 @@ bool QXmlSimpleReaderPrivate::processReference() return false; } if (ret) { - QString xmlRefString = ret->data(); + QString xmlRefString; + QString buffer = ret->data(); + while (buffer.length()>0){ + xmlRefString += buffer; + ret->fetchData(); + buffer = ret->data(); + } delete ret; if (!stripTextDecl(xmlRefString)) { reportParseError(QLatin1String(XMLERR_ERRORINTEXTDECL)); |