OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google, Inc. All Rights Reserved. | 2 * Copyright (C) 2010 Google, Inc. All Rights Reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 17 matching lines...) Expand all Loading... |
28 | 28 |
29 #include "core/dom/Element.h" | 29 #include "core/dom/Element.h" |
30 #include "core/fetch/ScriptResource.h" | 30 #include "core/fetch/ScriptResource.h" |
31 | 31 |
32 namespace blink { | 32 namespace blink { |
33 | 33 |
34 PendingScript::~PendingScript() | 34 PendingScript::~PendingScript() |
35 { | 35 { |
36 } | 36 } |
37 | 37 |
| 38 void PendingScript::watchForLoad(ResourceClient* client) |
| 39 { |
| 40 ASSERT(!m_watchingForLoad); |
| 41 ASSERT(!resource()->isLoaded()); |
| 42 // addClient() will call notifyFinished() if the load is complete. Callers |
| 43 // do not expect to be re-entered from this call, so they should not become |
| 44 // a client of an already-loaded Resource. |
| 45 resource()->addClient(client); |
| 46 m_watchingForLoad = true; |
| 47 } |
| 48 |
| 49 void PendingScript::stopWatchingForLoad(ResourceClient* client) |
| 50 { |
| 51 if (resource() && m_watchingForLoad) { |
| 52 resource()->removeClient(client); |
| 53 m_watchingForLoad = false; |
| 54 } |
| 55 } |
| 56 |
38 PassRefPtrWillBeRawPtr<Element> PendingScript::releaseElementAndClear() | 57 PassRefPtrWillBeRawPtr<Element> PendingScript::releaseElementAndClear() |
39 { | 58 { |
40 setScriptResource(0); | 59 setScriptResource(0); |
41 m_watchingForLoad = false; | 60 m_watchingForLoad = false; |
42 m_startingPosition = TextPosition::belowRangePosition(); | 61 m_startingPosition = TextPosition::belowRangePosition(); |
43 return m_element.release(); | 62 return m_element.release(); |
44 } | 63 } |
45 | 64 |
46 void PendingScript::setScriptResource(ScriptResource* resource) | 65 void PendingScript::setScriptResource(ScriptResource* resource) |
47 { | 66 { |
48 setResource(resource); | 67 setResource(resource); |
49 } | 68 } |
50 | 69 |
51 void PendingScript::notifyFinished(Resource*) | 70 void PendingScript::notifyFinished(Resource*) |
52 { | 71 { |
53 } | 72 } |
54 | 73 |
55 void PendingScript::trace(Visitor* visitor) | 74 void PendingScript::trace(Visitor* visitor) |
56 { | 75 { |
57 visitor->trace(m_element); | 76 visitor->trace(m_element); |
58 } | 77 } |
59 | 78 |
| 79 ScriptSourceCode PendingScript::getSource(const KURL& documentURL, bool& errorOc
curred) const |
| 80 { |
| 81 if (resource()) { |
| 82 errorOccurred = resource()->errorOccurred(); |
| 83 ASSERT(resource()->isLoaded()); |
| 84 return ScriptSourceCode(resource()); |
| 85 } |
| 86 errorOccurred = false; |
| 87 return ScriptSourceCode(m_element->textContent(), documentURL, startingPosit
ion()); |
60 } | 88 } |
| 89 |
| 90 } |
OLD | NEW |