OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 #include "core/html/imports/HTMLImportTreeRoot.h" | 6 #include "core/html/imports/HTMLImportTreeRoot.h" |
7 | 7 |
8 #include "core/dom/Document.h" | 8 #include "core/dom/Document.h" |
9 #include "core/dom/StyleEngine.h" | 9 #include "core/dom/StyleEngine.h" |
10 #include "core/frame/LocalFrame.h" | 10 #include "core/frame/LocalFrame.h" |
| 11 #include "core/html/imports/HTMLImportChild.h" |
11 | 12 |
12 namespace WebCore { | 13 namespace WebCore { |
13 | 14 |
14 PassOwnPtr<HTMLImportTreeRoot> HTMLImportTreeRoot::create(Document* document) | 15 PassOwnPtr<HTMLImportTreeRoot> HTMLImportTreeRoot::create(Document* document) |
15 { | 16 { |
16 return adoptPtr(new HTMLImportTreeRoot(document)); | 17 return adoptPtr(new HTMLImportTreeRoot(document)); |
17 } | 18 } |
18 | 19 |
19 HTMLImportTreeRoot::HTMLImportTreeRoot(Document* document) | 20 HTMLImportTreeRoot::HTMLImportTreeRoot(Document* document) |
20 : HTMLImport(HTMLImport::Sync) | 21 : HTMLImport(HTMLImport::Sync) |
21 , m_document(document) | 22 , m_document(document) |
22 , m_recalcTimer(this, &HTMLImportTreeRoot::recalcTimerFired) | 23 , m_recalcTimer(this, &HTMLImportTreeRoot::recalcTimerFired) |
23 { | 24 { |
24 recalcTreeState(this); // This recomputes initial state. | 25 recalcTreeState(this); // This recomputes initial state. |
25 } | 26 } |
26 | 27 |
| 28 HTMLImportTreeRoot::~HTMLImportTreeRoot() |
| 29 { |
| 30 for (size_t i = 0; i < m_imports.size(); ++i) |
| 31 m_imports[i]->importDestroyed(); |
| 32 m_imports.clear(); |
| 33 } |
| 34 |
27 Document* HTMLImportTreeRoot::document() const | 35 Document* HTMLImportTreeRoot::document() const |
28 { | 36 { |
29 return m_document; | 37 return m_document; |
30 } | 38 } |
31 | 39 |
32 bool HTMLImportTreeRoot::isDone() const | 40 bool HTMLImportTreeRoot::isDone() const |
33 { | 41 { |
34 return !m_document->parsing() && m_document->styleEngine()->haveStylesheetsL
oaded(); | 42 return !m_document->parsing() && m_document->styleEngine()->haveStylesheetsL
oaded(); |
35 } | 43 } |
36 | 44 |
(...skipping 12 matching lines...) Expand all Loading... |
49 frame->loader().checkCompleted(); | 57 frame->loader().checkCompleted(); |
50 } | 58 } |
51 | 59 |
52 void HTMLImportTreeRoot::scheduleRecalcState() | 60 void HTMLImportTreeRoot::scheduleRecalcState() |
53 { | 61 { |
54 if (m_recalcTimer.isActive() || !m_document) | 62 if (m_recalcTimer.isActive() || !m_document) |
55 return; | 63 return; |
56 m_recalcTimer.startOneShot(0, FROM_HERE); | 64 m_recalcTimer.startOneShot(0, FROM_HERE); |
57 } | 65 } |
58 | 66 |
| 67 HTMLImportChild* HTMLImportTreeRoot::add(PassOwnPtr<HTMLImportChild> child) |
| 68 { |
| 69 m_imports.append(child); |
| 70 return m_imports.last().get(); |
| 71 } |
| 72 |
| 73 HTMLImportChild* HTMLImportTreeRoot::find(const KURL& url) const |
| 74 { |
| 75 for (size_t i = 0; i < m_imports.size(); ++i) { |
| 76 HTMLImportChild* candidate = m_imports[i].get(); |
| 77 if (equalIgnoringFragmentIdentifier(candidate->url(), url)) |
| 78 return candidate; |
| 79 } |
| 80 |
| 81 return 0; |
| 82 } |
| 83 |
59 void HTMLImportTreeRoot::recalcTimerFired(Timer<HTMLImportTreeRoot>*) | 84 void HTMLImportTreeRoot::recalcTimerFired(Timer<HTMLImportTreeRoot>*) |
60 { | 85 { |
61 ASSERT(m_document); | 86 ASSERT(m_document); |
62 | 87 |
63 do { | 88 do { |
64 m_recalcTimer.stop(); | 89 m_recalcTimer.stop(); |
65 HTMLImport::recalcTreeState(this); | 90 HTMLImport::recalcTreeState(this); |
66 } while (m_recalcTimer.isActive()); | 91 } while (m_recalcTimer.isActive()); |
67 } | 92 } |
68 | 93 |
69 } | 94 } |
OLD | NEW |