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 29 matching lines...) Expand all Loading... |
40 } | 40 } |
41 | 41 |
42 PendingScript::PendingScript(Element* element, ScriptResource* resource) | 42 PendingScript::PendingScript(Element* element, ScriptResource* resource) |
43 : m_watchingForLoad(false) | 43 : m_watchingForLoad(false) |
44 , m_element(element) | 44 , m_element(element) |
45 , m_integrityFailure(false) | 45 , m_integrityFailure(false) |
46 , m_parserBlockingLoadStartTime(0) | 46 , m_parserBlockingLoadStartTime(0) |
47 , m_client(nullptr) | 47 , m_client(nullptr) |
48 { | 48 { |
49 setScriptResource(resource); | 49 setScriptResource(resource); |
50 ThreadState::current()->registerPreFinalizer(this); | |
51 } | 50 } |
52 | 51 |
53 PendingScript::~PendingScript() | 52 PendingScript::~PendingScript() |
54 { | 53 { |
| 54 // Verify explicit dispose(). |
| 55 CHECK(!m_client && !m_element && !m_streamer); |
55 } | 56 } |
56 | 57 |
57 void PendingScript::dispose() | 58 void PendingScript::dispose() |
58 { | 59 { |
59 if (!m_client) | 60 if (!m_client) |
60 return; | 61 return; |
61 stopWatchingForLoad(); | 62 stopWatchingForLoad(); |
62 releaseElementAndClear(); | 63 releaseElementAndClear(); |
63 } | 64 } |
64 | 65 |
65 PendingScript& PendingScript::operator=(const PendingScript& other) | |
66 { | |
67 if (this == &other) | |
68 return *this; | |
69 | |
70 m_watchingForLoad = other.m_watchingForLoad; | |
71 m_element = other.m_element; | |
72 m_startingPosition = other.m_startingPosition; | |
73 m_integrityFailure = other.m_integrityFailure; | |
74 m_streamer = other.m_streamer; | |
75 this->ResourceOwner<ScriptResource, ScriptResourceClient>::operator=(other); | |
76 return *this; | |
77 } | |
78 | |
79 void PendingScript::watchForLoad(ScriptResourceClient* client) | 66 void PendingScript::watchForLoad(ScriptResourceClient* client) |
80 { | 67 { |
81 DCHECK(!m_watchingForLoad); | 68 DCHECK(!m_watchingForLoad); |
82 // addClient() will call streamingFinished() if the load is complete. Caller
s | 69 // addClient() will call streamingFinished() if the load is complete. Caller
s |
83 // who do not expect to be re-entered from this call should not call | 70 // who do not expect to be re-entered from this call should not call |
84 // watchForLoad for a PendingScript which isReady. We also need to set | 71 // watchForLoad for a PendingScript which isReady. We also need to set |
85 // m_watchingForLoad early, since addClient() can result in calling | 72 // m_watchingForLoad early, since addClient() can result in calling |
86 // notifyFinished and further stopWatchingForLoad(). | 73 // notifyFinished and further stopWatchingForLoad(). |
87 m_watchingForLoad = true; | 74 m_watchingForLoad = true; |
88 m_client = client; | 75 m_client = client; |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 bool PendingScript::errorOccurred() const | 221 bool PendingScript::errorOccurred() const |
235 { | 222 { |
236 if (resource()) | 223 if (resource()) |
237 return resource()->errorOccurred(); | 224 return resource()->errorOccurred(); |
238 if (m_streamer && m_streamer->resource()) | 225 if (m_streamer && m_streamer->resource()) |
239 return m_streamer->resource()->errorOccurred(); | 226 return m_streamer->resource()->errorOccurred(); |
240 return false; | 227 return false; |
241 } | 228 } |
242 | 229 |
243 } // namespace blink | 230 } // namespace blink |
OLD | NEW |