OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2000 Peter Kelly (pmk@post.com) | 2 * Copyright (C) 2000 Peter Kelly (pmk@post.com) |
3 * Copyright (C) 2005, 2006, 2008, 2014 Apple Inc. All rights reserved. | 3 * Copyright (C) 2005, 2006, 2008, 2014 Apple Inc. All rights reserved. |
4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
5 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org) | 5 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org) |
6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
7 * Copyright (C) 2008 Holger Hans Peter Freyther | 7 * Copyright (C) 2008 Holger Hans Peter Freyther |
8 * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 8 * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
478 ScriptLoader* scriptLoader = toScriptLoaderIfPossible(e.get()); | 478 ScriptLoader* scriptLoader = toScriptLoaderIfPossible(e.get()); |
479 ASSERT(scriptLoader); | 479 ASSERT(scriptLoader); |
480 | 480 |
481 // JavaScript can detach this parser, make sure it's kept alive even if | 481 // JavaScript can detach this parser, make sure it's kept alive even if |
482 // detached. | 482 // detached. |
483 RefPtrWillBeRawPtr<XMLDocumentParser> protect(this); | 483 RefPtrWillBeRawPtr<XMLDocumentParser> protect(this); |
484 | 484 |
485 if (errorOccurred) { | 485 if (errorOccurred) { |
486 scriptLoader->dispatchErrorEvent(); | 486 scriptLoader->dispatchErrorEvent(); |
487 } else if (!wasCanceled) { | 487 } else if (!wasCanceled) { |
488 scriptLoader->executeScript(sourceCode); | 488 if (!scriptLoader->executeScript(sourceCode)) |
489 scriptLoader->dispatchLoadEvent(); | 489 scriptLoader->dispatchErrorEvent(); |
| 490 else |
| 491 scriptLoader->dispatchLoadEvent(); |
490 } | 492 } |
491 | 493 |
492 m_scriptElement = nullptr; | 494 m_scriptElement = nullptr; |
493 | 495 |
494 if (!isDetached() && !m_requestingScript) | 496 if (!isDetached() && !m_requestingScript) |
495 resumeParsing(); | 497 resumeParsing(); |
496 } | 498 } |
497 | 499 |
498 bool XMLDocumentParser::isWaitingForScripts() const | 500 bool XMLDocumentParser::isWaitingForScripts() const |
499 { | 501 { |
(...skipping 595 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1095 } | 1097 } |
1096 | 1098 |
1097 // Don't load external scripts for standalone documents (for now). | 1099 // Don't load external scripts for standalone documents (for now). |
1098 ASSERT(!m_pendingScript); | 1100 ASSERT(!m_pendingScript); |
1099 m_requestingScript = true; | 1101 m_requestingScript = true; |
1100 | 1102 |
1101 if (scriptLoader->prepareScript(m_scriptStartPosition, ScriptLoader::AllowLe
gacyTypeInTypeAttribute)) { | 1103 if (scriptLoader->prepareScript(m_scriptStartPosition, ScriptLoader::AllowLe
gacyTypeInTypeAttribute)) { |
1102 // FIXME: Script execution should be shared between | 1104 // FIXME: Script execution should be shared between |
1103 // the libxml2 and Qt XMLDocumentParser implementations. | 1105 // the libxml2 and Qt XMLDocumentParser implementations. |
1104 | 1106 |
| 1107 |
1105 if (scriptLoader->readyToBeParserExecuted()) { | 1108 if (scriptLoader->readyToBeParserExecuted()) { |
1106 scriptLoader->executeScript(ScriptSourceCode(scriptLoader->scriptCon
tent(), document()->url(), m_scriptStartPosition)); | 1109 if (!scriptLoader->executeScript(ScriptSourceCode(scriptLoader->scri
ptContent(), document()->url(), m_scriptStartPosition))) { |
| 1110 scriptLoader->dispatchErrorEvent(); |
| 1111 return; |
| 1112 } |
1107 } else if (scriptLoader->willBeParserExecuted()) { | 1113 } else if (scriptLoader->willBeParserExecuted()) { |
1108 m_pendingScript = scriptLoader->resource(); | 1114 m_pendingScript = scriptLoader->resource(); |
1109 m_scriptElement = element; | 1115 m_scriptElement = element; |
1110 m_pendingScript->addClient(this); | 1116 m_pendingScript->addClient(this); |
1111 | |
1112 // m_pendingScript will be 0 if script was already loaded and | 1117 // m_pendingScript will be 0 if script was already loaded and |
1113 // addClient() executed it. | 1118 // addClient() executed it. |
1114 if (m_pendingScript) | 1119 if (m_pendingScript) |
1115 pauseParsing(); | 1120 pauseParsing(); |
1116 } else { | 1121 } else { |
1117 m_scriptElement = nullptr; | 1122 m_scriptElement = nullptr; |
1118 } | 1123 } |
1119 | 1124 |
1120 // JavaScript may have detached the parser | 1125 // JavaScript may have detached the parser |
1121 if (isDetached()) | 1126 if (isDetached()) |
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1661 sax.initialized = XML_SAX2_MAGIC; | 1666 sax.initialized = XML_SAX2_MAGIC; |
1662 RefPtr<XMLParserContext> parser = XMLParserContext::createStringParser(&sax,
&state); | 1667 RefPtr<XMLParserContext> parser = XMLParserContext::createStringParser(&sax,
&state); |
1663 String parseString = "<?xml version=\"1.0\"?><attrs " + string + " />"; | 1668 String parseString = "<?xml version=\"1.0\"?><attrs " + string + " />"; |
1664 parseChunk(parser->context(), parseString); | 1669 parseChunk(parser->context(), parseString); |
1665 finishParsing(parser->context()); | 1670 finishParsing(parser->context()); |
1666 attrsOK = state.gotAttributes; | 1671 attrsOK = state.gotAttributes; |
1667 return state.attributes; | 1672 return state.attributes; |
1668 } | 1673 } |
1669 | 1674 |
1670 } // namespace blink | 1675 } // namespace blink |
OLD | NEW |