OLD | NEW |
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 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 } | 214 } |
215 | 215 |
216 void HTMLFrameOwnerElement::disposeWidgetSoon(Widget* widget) { | 216 void HTMLFrameOwnerElement::disposeWidgetSoon(Widget* widget) { |
217 if (s_updateSuspendCount) { | 217 if (s_updateSuspendCount) { |
218 widgetsPendingDispose().insert(widget); | 218 widgetsPendingDispose().insert(widget); |
219 return; | 219 return; |
220 } | 220 } |
221 widget->dispose(); | 221 widget->dispose(); |
222 } | 222 } |
223 | 223 |
| 224 void HTMLFrameOwnerElement::frameOwnerPropertiesChanged() { |
| 225 // Don't notify about updates if contentFrame() is null, for example when |
| 226 // the subframe hasn't been created yet. |
| 227 if (contentFrame()) |
| 228 document().frame()->loader().client()->didChangeFrameOwnerProperties(this); |
| 229 } |
| 230 |
224 void HTMLFrameOwnerElement::dispatchLoad() { | 231 void HTMLFrameOwnerElement::dispatchLoad() { |
225 dispatchScopedEvent(Event::create(EventTypeNames::load)); | 232 dispatchScopedEvent(Event::create(EventTypeNames::load)); |
226 } | 233 } |
227 | 234 |
228 const WebVector<WebPermissionType>& | 235 const WebVector<WebPermissionType>& |
229 HTMLFrameOwnerElement::delegatedPermissions() const { | 236 HTMLFrameOwnerElement::delegatedPermissions() const { |
230 DEFINE_STATIC_LOCAL(WebVector<WebPermissionType>, permissions, ()); | 237 DEFINE_STATIC_LOCAL(WebVector<WebPermissionType>, permissions, ()); |
231 return permissions; | 238 return permissions; |
232 } | 239 } |
233 | 240 |
234 Document* HTMLFrameOwnerElement::getSVGDocument( | 241 Document* HTMLFrameOwnerElement::getSVGDocument( |
235 ExceptionState& exceptionState) const { | 242 ExceptionState& exceptionState) const { |
236 Document* doc = contentDocument(); | 243 Document* doc = contentDocument(); |
237 if (doc && doc->isSVGDocument()) | 244 if (doc && doc->isSVGDocument()) |
238 return doc; | 245 return doc; |
239 return nullptr; | 246 return nullptr; |
240 } | 247 } |
241 | 248 |
242 void HTMLFrameOwnerElement::setWidget(Widget* widget) { | 249 void HTMLFrameOwnerElement::setWidget(Widget* widget) { |
243 if (widget == m_widget) | 250 if (widget == m_widget) |
244 return; | 251 return; |
245 | 252 |
| 253 Document* doc = contentDocument(); |
| 254 if (doc && doc->frame()) { |
| 255 bool willBeDisplayNone = !widget; |
| 256 if (isDisplayNone() != willBeDisplayNone) { |
| 257 doc->willChangeFrameOwnerProperties(marginWidth(), marginHeight(), |
| 258 scrollingMode(), willBeDisplayNone); |
| 259 } |
| 260 } |
| 261 |
246 if (m_widget) { | 262 if (m_widget) { |
247 if (m_widget->parent()) | 263 if (m_widget->parent()) |
248 moveWidgetToParentSoon(m_widget.get(), 0); | 264 moveWidgetToParentSoon(m_widget.get(), 0); |
249 m_widget = nullptr; | 265 m_widget = nullptr; |
250 } | 266 } |
251 | 267 |
252 m_widget = widget; | 268 m_widget = widget; |
| 269 frameOwnerPropertiesChanged(); |
253 | 270 |
254 LayoutPart* layoutPart = toLayoutPart(layoutObject()); | 271 LayoutPart* layoutPart = toLayoutPart(layoutObject()); |
255 LayoutPartItem layoutPartItem = LayoutPartItem(layoutPart); | 272 LayoutPartItem layoutPartItem = LayoutPartItem(layoutPart); |
256 if (layoutPartItem.isNull()) | 273 if (layoutPartItem.isNull()) |
257 return; | 274 return; |
258 | 275 |
259 if (m_widget) { | 276 if (m_widget) { |
260 layoutPartItem.updateOnWidgetChange(); | 277 layoutPartItem.updateOnWidgetChange(); |
261 | 278 |
262 DCHECK_EQ(document().view(), layoutPartItem.frameView()); | 279 DCHECK_EQ(document().view(), layoutPartItem.frameView()); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 } | 339 } |
323 | 340 |
324 DEFINE_TRACE(HTMLFrameOwnerElement) { | 341 DEFINE_TRACE(HTMLFrameOwnerElement) { |
325 visitor->trace(m_contentFrame); | 342 visitor->trace(m_contentFrame); |
326 visitor->trace(m_widget); | 343 visitor->trace(m_widget); |
327 HTMLElement::trace(visitor); | 344 HTMLElement::trace(visitor); |
328 FrameOwner::trace(visitor); | 345 FrameOwner::trace(visitor); |
329 } | 346 } |
330 | 347 |
331 } // namespace blink | 348 } // namespace blink |
OLD | NEW |