Index: Source/core/html/HTMLImport.h |
diff --git a/Source/core/html/HTMLImport.h b/Source/core/html/HTMLImport.h |
index 96df1fb3d23e88537710794b888fff389ddb2768..ecdfd5f8f7a4f54c5eae02a370af38f386627869 100644 |
--- a/Source/core/html/HTMLImport.h |
+++ b/Source/core/html/HTMLImport.h |
@@ -31,6 +31,8 @@ |
#ifndef HTMLImport_h |
#define HTMLImport_h |
+#include "wtf/Vector.h" |
+ |
namespace WebCore { |
class Frame; |
@@ -40,17 +42,43 @@ class HTMLImportsController; |
class HTMLImport { |
public: |
+ static bool unblock(HTMLImport*); |
+ |
virtual ~HTMLImport() { } |
- bool haveChildrenLoaded(); |
Frame* frame(); |
Document* master(); |
+ bool isLoaded() const { return !isBlocked() && !isProcessing(); } |
+ bool isBlocked() const { return m_blocked; } |
+ void appendChild(HTMLImport*); |
+ |
virtual HTMLImportsController* controller() = 0; |
- virtual HTMLImport* parent() = 0; |
- virtual Document* document() = 0; |
+ virtual HTMLImport* parent() const = 0; |
+ virtual Document* document() const = 0; |
virtual void wasDetachedFromDocument() = 0; |
virtual void didFinishParsing() = 0; |
+ virtual bool isProcessing() const = 0; |
+ |
+protected: |
+ HTMLImport() |
+ : m_blocked(false) |
+ { } |
+ |
+private: |
+ static void block(HTMLImport*); |
+ |
+ void blockAfter(HTMLImport* child); |
+ void block(); |
+ void unblock(); |
+ void didUnblock(); |
+ |
+ bool arePredecessorsLoaded() const; |
+ bool areChilrenLoaded() const; |
+ bool hasChildren() const { return !m_children.isEmpty(); } |
+ |
+ Vector<HTMLImport*> m_children; |
+ bool m_blocked; // If any of decendants or predecessors is in processing, it is blocked. |
}; |
} // namespace WebCore |