| 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 | 
|  |