diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/html/parser/HTMLScriptRunner.h')
-rw-r--r-- | chromium/third_party/WebKit/Source/core/html/parser/HTMLScriptRunner.h | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/chromium/third_party/WebKit/Source/core/html/parser/HTMLScriptRunner.h b/chromium/third_party/WebKit/Source/core/html/parser/HTMLScriptRunner.h index 82d8bc2568a..46f2979bca1 100644 --- a/chromium/third_party/WebKit/Source/core/html/parser/HTMLScriptRunner.h +++ b/chromium/third_party/WebKit/Source/core/html/parser/HTMLScriptRunner.h @@ -27,6 +27,8 @@ #define HTMLScriptRunner_h #include "core/dom/PendingScript.h" +#include "core/fetch/ResourceClient.h" +#include "platform/heap/Handle.h" #include "wtf/Deque.h" #include "wtf/PassRefPtr.h" #include "wtf/text/TextPosition.h" @@ -37,23 +39,23 @@ class Resource; class ScriptResource; class Document; class Element; -class Frame; +class LocalFrame; class HTMLScriptRunnerHost; class ScriptSourceCode; -class HTMLScriptRunner { - WTF_MAKE_NONCOPYABLE(HTMLScriptRunner); WTF_MAKE_FAST_ALLOCATED; +class HTMLScriptRunner FINAL : public NoBaseWillBeGarbageCollectedFinalized<HTMLScriptRunner>, private ResourceClient { + WTF_MAKE_NONCOPYABLE(HTMLScriptRunner); WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED; public: - static PassOwnPtr<HTMLScriptRunner> create(Document* document, HTMLScriptRunnerHost* host) + static PassOwnPtrWillBeRawPtr<HTMLScriptRunner> create(Document* document, HTMLScriptRunnerHost* host) { - return adoptPtr(new HTMLScriptRunner(document, host)); + return adoptPtrWillBeNoop(new HTMLScriptRunner(document, host)); } ~HTMLScriptRunner(); void detach(); // Processes the passed in script and any pending scripts if possible. - void execute(PassRefPtr<Element> scriptToProcess, const TextPosition& scriptStartPosition); + void execute(PassRefPtrWillBeRawPtr<Element> scriptToProcess, const TextPosition& scriptStartPosition); void executeScriptsWaitingForLoad(Resource*); bool hasScriptsWaitingForResources() const { return m_hasScriptsWaitingForResources; } @@ -63,13 +65,23 @@ public: bool hasParserBlockingScript() const; bool isExecutingScript() const { return !!m_scriptNestingLevel; } + // ResourceClient + virtual void notifyFinished(Resource*) OVERRIDE; + + void trace(Visitor*); + private: HTMLScriptRunner(Document*, HTMLScriptRunnerHost*); - Frame* frame() const; + LocalFrame* frame() const; + + enum PendingScriptType { + PendingScriptBlockingParser, + PendingScriptDeferred + }; void executeParsingBlockingScript(); - void executePendingScriptAndDispatchEvent(PendingScript&); + void executePendingScriptAndDispatchEvent(PendingScript&, PendingScriptType); void executeParsingBlockingScripts(); void requestParsingBlockingScript(Element*); @@ -84,8 +96,8 @@ private: bool isPendingScriptReady(const PendingScript&); ScriptSourceCode sourceFromPendingScript(const PendingScript&, bool& errorOccurred) const; - Document* m_document; - HTMLScriptRunnerHost* m_host; + RawPtrWillBeMember<Document> m_document; + RawPtrWillBeMember<HTMLScriptRunnerHost> m_host; PendingScript m_parserBlockingScript; Deque<PendingScript> m_scriptsToExecuteAfterParsing; // http://www.whatwg.org/specs/web-apps/current-work/#list-of-scripts-that-will-execute-when-the-document-has-finished-parsing unsigned m_scriptNestingLevel; |