Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / dom / ScriptRunner.h
index b47139c..3305076 100644 (file)
 
 #include "core/fetch/ResourcePtr.h"
 #include "platform/Timer.h"
+#include "platform/heap/Handle.h"
 #include "wtf/HashMap.h"
 #include "wtf/Noncopyable.h"
 #include "wtf/PassOwnPtr.h"
 #include "wtf/Vector.h"
 
-namespace WebCore {
+namespace blink {
 
 class ScriptResource;
 class Document;
 class PendingScript;
 class ScriptLoader;
 
-class ScriptRunner {
-    WTF_MAKE_NONCOPYABLE(ScriptRunner); WTF_MAKE_FAST_ALLOCATED;
+class ScriptRunner FINAL : public NoBaseWillBeGarbageCollectedFinalized<ScriptRunner> {
+    WTF_MAKE_NONCOPYABLE(ScriptRunner); WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED;
 public:
-    static PassOwnPtr<ScriptRunner> create(Document* document) { return adoptPtr(new ScriptRunner(document)); }
+    static PassOwnPtrWillBeRawPtr<ScriptRunner> create(Document* document)
+    {
+        return adoptPtrWillBeNoop(new ScriptRunner(document));
+    }
     ~ScriptRunner();
 
     enum ExecutionType { ASYNC_EXECUTION, IN_ORDER_EXECUTION };
@@ -54,15 +58,23 @@ public:
     void notifyScriptReady(ScriptLoader*, ExecutionType);
     void notifyScriptLoadError(ScriptLoader*, ExecutionType);
 
+    void movePendingAsyncScript(ScriptRunner*, ScriptLoader*);
+
+    void trace(Visitor*);
+
 private:
     explicit ScriptRunner(Document*);
 
     void timerFired(Timer<ScriptRunner>*);
 
-    Document* m_document;
+    void addPendingAsyncScript(ScriptLoader*, const PendingScript&);
+
+    RawPtrWillBeMember<Document> m_document;
+    // FIXME: Oilpan: consider using heap vectors and hash map here;
+    // PendingScript does have a (trivial) destructor, however.
     Vector<PendingScript> m_scriptsToExecuteInOrder;
     Vector<PendingScript> m_scriptsToExecuteSoon; // http://www.whatwg.org/specs/web-apps/current-work/#set-of-scripts-that-will-execute-as-soon-as-possible
-    HashMap<ScriptLoader*, PendingScript> m_pendingAsyncScripts;
+    WillBeHeapHashMap<ScriptLoader*, PendingScript> m_pendingAsyncScripts;
     Timer<ScriptRunner> m_timer;
 };