OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google, Inc. All Rights Reserved. | 2 * Copyright (C) 2011 Google, Inc. All Rights Reserved. |
3 * Copyright (C) 2012 Apple Inc. All Rights Reserved. | 3 * Copyright (C) 2012 Apple Inc. All Rights Reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 10 matching lines...) Expand all Loading... |
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
25 */ | 25 */ |
26 | 26 |
27 #include "config.h" | 27 #include "config.h" |
28 #include "core/frame/DOMWindowProperty.h" | 28 #include "core/frame/DOMWindowProperty.h" |
29 | 29 |
30 #include "core/dom/Document.h" | 30 #include "core/dom/Document.h" |
31 #include "core/frame/DOMWindow.h" | 31 #include "core/frame/LocalDOMWindow.h" |
32 #include "core/frame/LocalFrame.h" | 32 #include "core/frame/LocalFrame.h" |
33 | 33 |
34 namespace WebCore { | 34 namespace WebCore { |
35 | 35 |
36 DOMWindowProperty::DOMWindowProperty(LocalFrame* frame) | 36 DOMWindowProperty::DOMWindowProperty(LocalFrame* frame) |
37 : m_frame(frame) | 37 : m_frame(frame) |
38 , m_associatedDOMWindow(0) | 38 , m_associatedDOMWindow(0) |
39 { | 39 { |
40 // FIXME: For now it *is* acceptable for a DOMWindowProperty to be created w
ith a null frame. | 40 // FIXME: For now it *is* acceptable for a DOMWindowProperty to be created w
ith a null frame. |
41 // See fast/dom/navigator-detached-no-crash.html for the recipe. | 41 // See fast/dom/navigator-detached-no-crash.html for the recipe. |
42 // We should fix that. <rdar://problem/11567132> | 42 // We should fix that. <rdar://problem/11567132> |
43 if (m_frame) { | 43 if (m_frame) { |
44 m_associatedDOMWindow = m_frame->domWindow(); | 44 m_associatedDOMWindow = m_frame->domWindow(); |
45 m_associatedDOMWindow->registerProperty(this); | 45 m_associatedDOMWindow->registerProperty(this); |
46 } | 46 } |
47 } | 47 } |
48 | 48 |
49 DOMWindowProperty::~DOMWindowProperty() | 49 DOMWindowProperty::~DOMWindowProperty() |
50 { | 50 { |
51 if (m_associatedDOMWindow) | 51 if (m_associatedDOMWindow) |
52 m_associatedDOMWindow->unregisterProperty(this); | 52 m_associatedDOMWindow->unregisterProperty(this); |
53 | 53 |
54 m_associatedDOMWindow = 0; | 54 m_associatedDOMWindow = 0; |
55 m_frame = 0; | 55 m_frame = 0; |
56 } | 56 } |
57 | 57 |
58 void DOMWindowProperty::willDestroyGlobalObjectInFrame() | 58 void DOMWindowProperty::willDestroyGlobalObjectInFrame() |
59 { | 59 { |
60 // If the property is getting this callback it must have been created with a
LocalFrame/DOMWindow and it should still have them. | 60 // If the property is getting this callback it must have been created with a
LocalFrame/LocalDOMWindow and it should still have them. |
61 ASSERT(m_frame); | 61 ASSERT(m_frame); |
62 ASSERT(m_associatedDOMWindow); | 62 ASSERT(m_associatedDOMWindow); |
63 | 63 |
64 // DOMWindowProperty lifetime isn't tied directly to the DOMWindow itself so
it is important that it unregister | 64 // DOMWindowProperty lifetime isn't tied directly to the LocalDOMWindow itse
lf so it is important that it unregister |
65 // itself from any DOMWindow it is associated with if that DOMWindow is goin
g away. | 65 // itself from any LocalDOMWindow it is associated with if that LocalDOMWind
ow is going away. |
66 if (m_associatedDOMWindow) | 66 if (m_associatedDOMWindow) |
67 m_associatedDOMWindow->unregisterProperty(this); | 67 m_associatedDOMWindow->unregisterProperty(this); |
68 m_associatedDOMWindow = 0; | 68 m_associatedDOMWindow = 0; |
69 m_frame = 0; | 69 m_frame = 0; |
70 } | 70 } |
71 | 71 |
72 void DOMWindowProperty::willDetachGlobalObjectFromFrame() | 72 void DOMWindowProperty::willDetachGlobalObjectFromFrame() |
73 { | 73 { |
74 // If the property is getting this callback it must have been created with a
LocalFrame/DOMWindow and it should still have them. | 74 // If the property is getting this callback it must have been created with a
LocalFrame/LocalDOMWindow and it should still have them. |
75 ASSERT(m_frame); | 75 ASSERT(m_frame); |
76 ASSERT(m_associatedDOMWindow); | 76 ASSERT(m_associatedDOMWindow); |
77 } | 77 } |
78 | 78 |
79 } | 79 } |
OLD | NEW |