Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(117)

Side by Side Diff: Source/core/html/HTMLFrameOwnerElement.cpp

Issue 31063004: Have Frame::loader() return a reference (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/html/HTMLFormElement.cpp ('k') | Source/core/html/HTMLFrameSetElement.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved.
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 } 75 }
76 76
77 void HTMLFrameOwnerElement::disconnectContentFrame() 77 void HTMLFrameOwnerElement::disconnectContentFrame()
78 { 78 {
79 // FIXME: Currently we don't do this in removedFrom because this causes an 79 // FIXME: Currently we don't do this in removedFrom because this causes an
80 // unload event in the subframe which could execute script that could then 80 // unload event in the subframe which could execute script that could then
81 // reach up into this document and then attempt to look back down. We should 81 // reach up into this document and then attempt to look back down. We should
82 // see if this behavior is really needed as Gecko does not allow this. 82 // see if this behavior is really needed as Gecko does not allow this.
83 if (Frame* frame = contentFrame()) { 83 if (Frame* frame = contentFrame()) {
84 RefPtr<Frame> protect(frame); 84 RefPtr<Frame> protect(frame);
85 frame->loader()->frameDetached(); 85 frame->loader().frameDetached();
86 frame->disconnectOwnerElement(); 86 frame->disconnectOwnerElement();
87 } 87 }
88 } 88 }
89 89
90 HTMLFrameOwnerElement::~HTMLFrameOwnerElement() 90 HTMLFrameOwnerElement::~HTMLFrameOwnerElement()
91 { 91 {
92 if (m_contentFrame) 92 if (m_contentFrame)
93 m_contentFrame->disconnectOwnerElement(); 93 m_contentFrame->disconnectOwnerElement();
94 } 94 }
95 95
(...skipping 24 matching lines...) Expand all
120 return toSVGDocument(doc); 120 return toSVGDocument(doc);
121 // Spec: http://www.w3.org/TR/SVG/struct.html#InterfaceGetSVGDocument 121 // Spec: http://www.w3.org/TR/SVG/struct.html#InterfaceGetSVGDocument
122 es.throwUninformativeAndGenericDOMException(NotSupportedError); 122 es.throwUninformativeAndGenericDOMException(NotSupportedError);
123 return 0; 123 return 0;
124 } 124 }
125 125
126 bool HTMLFrameOwnerElement::loadOrRedirectSubframe(const KURL& url, const Atomic String& frameName, bool lockBackForwardList) 126 bool HTMLFrameOwnerElement::loadOrRedirectSubframe(const KURL& url, const Atomic String& frameName, bool lockBackForwardList)
127 { 127 {
128 RefPtr<Frame> parentFrame = document().frame(); 128 RefPtr<Frame> parentFrame = document().frame();
129 if (contentFrame()) { 129 if (contentFrame()) {
130 contentFrame()->navigationScheduler().scheduleLocationChange(document(). securityOrigin(), url.string(), parentFrame->loader()->outgoingReferrer(), lockB ackForwardList); 130 contentFrame()->navigationScheduler().scheduleLocationChange(document(). securityOrigin(), url.string(), parentFrame->loader().outgoingReferrer(), lockBa ckForwardList);
131 return true; 131 return true;
132 } 132 }
133 133
134 if (!document().securityOrigin()->canDisplay(url)) { 134 if (!document().securityOrigin()->canDisplay(url)) {
135 FrameLoader::reportLocalLoadFailed(parentFrame.get(), url.string()); 135 FrameLoader::reportLocalLoadFailed(parentFrame.get(), url.string());
136 return false; 136 return false;
137 } 137 }
138 138
139 if (!SubframeLoadingDisabler::canLoadFrame(this)) 139 if (!SubframeLoadingDisabler::canLoadFrame(this))
140 return false; 140 return false;
141 141
142 String referrer = SecurityPolicy::generateReferrerHeader(document().referrer Policy(), url, parentFrame->loader()->outgoingReferrer()); 142 String referrer = SecurityPolicy::generateReferrerHeader(document().referrer Policy(), url, parentFrame->loader().outgoingReferrer());
143 RefPtr<Frame> childFrame = parentFrame->loader()->client()->createFrame(url, frameName, referrer, this); 143 RefPtr<Frame> childFrame = parentFrame->loader().client()->createFrame(url, frameName, referrer, this);
144 144
145 if (!childFrame) { 145 if (!childFrame) {
146 parentFrame->loader()->checkCompleted(); 146 parentFrame->loader().checkCompleted();
147 return false; 147 return false;
148 } 148 }
149 149
150 // All new frames will have m_isComplete set to true at this point due to sy nchronously loading 150 // All new frames will have m_isComplete set to true at this point due to sy nchronously loading
151 // an empty document in FrameLoader::init(). But many frames will now be sta rting an 151 // an empty document in FrameLoader::init(). But many frames will now be sta rting an
152 // asynchronous load of url, so we set m_isComplete to false and then check if the load is 152 // asynchronous load of url, so we set m_isComplete to false and then check if the load is
153 // actually completed below. (Note that we set m_isComplete to false even fo r synchronous 153 // actually completed below. (Note that we set m_isComplete to false even fo r synchronous
154 // loads, so that checkCompleted() below won't bail early.) 154 // loads, so that checkCompleted() below won't bail early.)
155 // FIXME: Can we remove this entirely? m_isComplete normally gets set to fal se when a load is committed. 155 // FIXME: Can we remove this entirely? m_isComplete normally gets set to fal se when a load is committed.
156 childFrame->loader()->started(); 156 childFrame->loader().started();
157 157
158 RenderObject* renderObject = renderer(); 158 RenderObject* renderObject = renderer();
159 FrameView* view = childFrame->view(); 159 FrameView* view = childFrame->view();
160 if (renderObject && renderObject->isWidget() && view) 160 if (renderObject && renderObject->isWidget() && view)
161 toRenderWidget(renderObject)->setWidget(view); 161 toRenderWidget(renderObject)->setWidget(view);
162 162
163 // Some loads are performed synchronously (e.g., about:blank and loads 163 // Some loads are performed synchronously (e.g., about:blank and loads
164 // cancelled by returning a null ResourceRequest from requestFromDelegate). 164 // cancelled by returning a null ResourceRequest from requestFromDelegate).
165 // In these cases, the synchronous load would have finished 165 // In these cases, the synchronous load would have finished
166 // before we could connect the signals, so make sure to send the 166 // before we could connect the signals, so make sure to send the
167 // completed() signal for the child by hand and mark the load as being 167 // completed() signal for the child by hand and mark the load as being
168 // complete. 168 // complete.
169 // FIXME: In this case the Frame will have finished loading before 169 // FIXME: In this case the Frame will have finished loading before
170 // it's being added to the child list. It would be a good idea to 170 // it's being added to the child list. It would be a good idea to
171 // create the child first, then invoke the loader separately. 171 // create the child first, then invoke the loader separately.
172 if (childFrame->loader()->state() == FrameStateComplete && !childFrame->load er()->policyDocumentLoader()) 172 if (childFrame->loader().state() == FrameStateComplete && !childFrame->loade r().policyDocumentLoader())
173 childFrame->loader()->checkCompleted(); 173 childFrame->loader().checkCompleted();
174 return true; 174 return true;
175 } 175 }
176 176
177 177
178 } // namespace WebCore 178 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/html/HTMLFormElement.cpp ('k') | Source/core/html/HTMLFrameSetElement.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698