Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / html / imports / HTMLImportTreeRoot.h
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef HTMLImportTreeRoot_h
6 #define HTMLImportTreeRoot_h
7
8 #include "core/html/imports/HTMLImport.h"
9 #include "platform/Timer.h"
10 #include "wtf/PassOwnPtr.h"
11
12 namespace blink {
13
14 class HTMLImportChild;
15 class KURL;
16
17 class HTMLImportTreeRoot : public HTMLImport {
18 public:
19     static PassOwnPtrWillBeRawPtr<HTMLImportTreeRoot> create(Document*);
20
21     virtual ~HTMLImportTreeRoot();
22
23     // HTMLImport
24     virtual Document* document() const override;
25     virtual bool isDone() const override;
26     virtual void stateWillChange() override;
27     virtual void stateDidChange() override;
28
29     void scheduleRecalcState();
30
31     HTMLImportChild* add(PassOwnPtrWillBeRawPtr<HTMLImportChild>);
32     HTMLImportChild* find(const KURL&) const;
33
34     virtual void trace(Visitor*) override;
35
36 private:
37     explicit HTMLImportTreeRoot(Document*);
38
39     void recalcTimerFired(Timer<HTMLImportTreeRoot>*);
40
41     RawPtrWillBeMember<Document> m_document;
42     Timer<HTMLImportTreeRoot> m_recalcTimer;
43
44     // List of import which has been loaded or being loaded.
45     typedef WillBeHeapVector<OwnPtrWillBeMember<HTMLImportChild>> ImportList;
46     ImportList m_imports;
47 };
48
49 DEFINE_TYPE_CASTS(HTMLImportTreeRoot, HTMLImport, import, import->isRoot(), import.isRoot());
50
51 }
52
53 #endif