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

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

Issue 2723993002: Rename platform/Widget to platform/FrameViewBase in core. (Closed)
Patch Set: Created 3 years, 9 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
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 20 matching lines...) Expand all
31 #include "core/frame/LocalFrameClient.h" 31 #include "core/frame/LocalFrameClient.h"
32 #include "core/layout/LayoutPart.h" 32 #include "core/layout/LayoutPart.h"
33 #include "core/layout/api/LayoutPartItem.h" 33 #include "core/layout/api/LayoutPartItem.h"
34 #include "core/loader/FrameLoadRequest.h" 34 #include "core/loader/FrameLoadRequest.h"
35 #include "core/loader/FrameLoader.h" 35 #include "core/loader/FrameLoader.h"
36 #include "core/plugins/PluginView.h" 36 #include "core/plugins/PluginView.h"
37 #include "platform/weborigin/SecurityOrigin.h" 37 #include "platform/weborigin/SecurityOrigin.h"
38 38
39 namespace blink { 39 namespace blink {
40 40
41 typedef HeapHashMap<Member<Widget>, Member<FrameView>> WidgetToParentMap; 41 typedef HeapHashMap<Member<FrameViewBase>, Member<FrameView>>
42 static WidgetToParentMap& widgetNewParentMap() { 42 FrameViewBaseToParentMap;
43 DEFINE_STATIC_LOCAL(WidgetToParentMap, map, (new WidgetToParentMap)); 43 static FrameViewBaseToParentMap& widgetNewParentMap() {
44 DEFINE_STATIC_LOCAL(FrameViewBaseToParentMap, map,
45 (new FrameViewBaseToParentMap));
44 return map; 46 return map;
45 } 47 }
46 48
47 using WidgetSet = HeapHashSet<Member<Widget>>; 49 using FrameViewBaseSet = HeapHashSet<Member<FrameViewBase>>;
48 static WidgetSet& widgetsPendingTemporaryRemovalFromParent() { 50 static FrameViewBaseSet& widgetsPendingTemporaryRemovalFromParent() {
49 // Widgets in this set will not leak because it will be cleared in 51 // FrameViewBases in this set will not leak because it will be cleared in
50 // HTMLFrameOwnerElement::UpdateSuspendScope::performDeferredWidgetTreeOperati ons. 52 // HTMLFrameOwnerElement::UpdateSuspendScope::performDeferredWidgetTreeOperati ons.
51 DEFINE_STATIC_LOCAL(WidgetSet, set, (new WidgetSet)); 53 DEFINE_STATIC_LOCAL(FrameViewBaseSet, set, (new FrameViewBaseSet));
52 return set; 54 return set;
53 } 55 }
54 56
55 static WidgetSet& widgetsPendingDispose() { 57 static FrameViewBaseSet& widgetsPendingDispose() {
56 DEFINE_STATIC_LOCAL(WidgetSet, set, (new WidgetSet)); 58 DEFINE_STATIC_LOCAL(FrameViewBaseSet, set, (new FrameViewBaseSet));
57 return set; 59 return set;
58 } 60 }
59 61
60 SubframeLoadingDisabler::SubtreeRootSet& 62 SubframeLoadingDisabler::SubtreeRootSet&
61 SubframeLoadingDisabler::disabledSubtreeRoots() { 63 SubframeLoadingDisabler::disabledSubtreeRoots() {
62 DEFINE_STATIC_LOCAL(SubtreeRootSet, nodes, ()); 64 DEFINE_STATIC_LOCAL(SubtreeRootSet, nodes, ());
63 return nodes; 65 return nodes;
64 } 66 }
65 67
66 static unsigned s_updateSuspendCount = 0; 68 static unsigned s_updateSuspendCount = 0;
67 69
68 HTMLFrameOwnerElement::UpdateSuspendScope::UpdateSuspendScope() { 70 HTMLFrameOwnerElement::UpdateSuspendScope::UpdateSuspendScope() {
69 ++s_updateSuspendCount; 71 ++s_updateSuspendCount;
70 } 72 }
71 73
72 void HTMLFrameOwnerElement::UpdateSuspendScope:: 74 void HTMLFrameOwnerElement::UpdateSuspendScope::
73 performDeferredWidgetTreeOperations() { 75 performDeferredWidgetTreeOperations() {
74 WidgetToParentMap map; 76 FrameViewBaseToParentMap map;
75 widgetNewParentMap().swap(map); 77 widgetNewParentMap().swap(map);
76 for (const auto& widget : map) { 78 for (const auto& frameViewBase : map) {
77 Widget* child = widget.key.get(); 79 FrameViewBase* child = frameViewBase.key.get();
78 FrameView* currentParent = toFrameView(child->parent()); 80 FrameView* currentParent = toFrameView(child->parent());
79 FrameView* newParent = widget.value; 81 FrameView* newParent = frameViewBase.value;
80 if (newParent != currentParent) { 82 if (newParent != currentParent) {
81 if (currentParent) 83 if (currentParent)
82 currentParent->removeChild(child); 84 currentParent->removeChild(child);
83 if (newParent) 85 if (newParent)
84 newParent->addChild(child); 86 newParent->addChild(child);
85 if (currentParent && !newParent) 87 if (currentParent && !newParent)
86 child->dispose(); 88 child->dispose();
87 } 89 }
88 } 90 }
89 91
90 { 92 {
91 WidgetSet set; 93 FrameViewBaseSet set;
92 widgetsPendingTemporaryRemovalFromParent().swap(set); 94 widgetsPendingTemporaryRemovalFromParent().swap(set);
93 for (const auto& widget : set) { 95 for (const auto& frameViewBase : set) {
94 FrameView* currentParent = toFrameView(widget->parent()); 96 FrameView* currentParent = toFrameView(frameViewBase->parent());
95 if (currentParent) 97 if (currentParent)
96 currentParent->removeChild(widget.get()); 98 currentParent->removeChild(frameViewBase.get());
97 } 99 }
98 } 100 }
99 101
100 { 102 {
101 WidgetSet set; 103 FrameViewBaseSet set;
102 widgetsPendingDispose().swap(set); 104 widgetsPendingDispose().swap(set);
103 for (const auto& widget : set) { 105 for (const auto& frameViewBase : set) {
104 widget->dispose(); 106 frameViewBase->dispose();
105 } 107 }
106 } 108 }
107 } 109 }
108 110
109 HTMLFrameOwnerElement::UpdateSuspendScope::~UpdateSuspendScope() { 111 HTMLFrameOwnerElement::UpdateSuspendScope::~UpdateSuspendScope() {
110 DCHECK_GT(s_updateSuspendCount, 0u); 112 DCHECK_GT(s_updateSuspendCount, 0u);
111 if (s_updateSuspendCount == 1) 113 if (s_updateSuspendCount == 1)
112 performDeferredWidgetTreeOperations(); 114 performDeferredWidgetTreeOperations();
113 --s_updateSuspendCount; 115 --s_updateSuspendCount;
114 } 116 }
115 117
116 // Unlike moveWidgetToParentSoon, this will not call dispose the Widget. 118 // Unlike moveWidgetToParentSoon, this will not call dispose the Widget.
117 void temporarilyRemoveWidgetFromParentSoon(Widget* widget) { 119 void temporarilyRemoveWidgetFromParentSoon(FrameViewBase* frameViewBase) {
118 if (s_updateSuspendCount) { 120 if (s_updateSuspendCount) {
119 widgetsPendingTemporaryRemovalFromParent().insert(widget); 121 widgetsPendingTemporaryRemovalFromParent().insert(frameViewBase);
120 } else { 122 } else {
121 if (toFrameView(widget->parent())) 123 if (toFrameView(frameViewBase->parent()))
122 toFrameView(widget->parent())->removeChild(widget); 124 toFrameView(frameViewBase->parent())->removeChild(frameViewBase);
123 } 125 }
124 } 126 }
125 127
126 void moveWidgetToParentSoon(Widget* child, FrameView* parent) { 128 void moveWidgetToParentSoon(FrameViewBase* child, FrameView* parent) {
127 if (!s_updateSuspendCount) { 129 if (!s_updateSuspendCount) {
128 if (parent) { 130 if (parent) {
129 parent->addChild(child); 131 parent->addChild(child);
130 } else if (toFrameView(child->parent())) { 132 } else if (toFrameView(child->parent())) {
131 toFrameView(child->parent())->removeChild(child); 133 toFrameView(child->parent())->removeChild(child);
132 child->dispose(); 134 child->dispose();
133 } 135 }
134 return; 136 return;
135 } 137 }
136 widgetNewParentMap().set(child, parent); 138 widgetNewParentMap().set(child, parent);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 // the subframe hasn't been created yet. 208 // the subframe hasn't been created yet.
207 if (contentFrame()) 209 if (contentFrame())
208 document().frame()->loader().client()->didChangeSandboxFlags(contentFrame(), 210 document().frame()->loader().client()->didChangeSandboxFlags(contentFrame(),
209 flags); 211 flags);
210 } 212 }
211 213
212 bool HTMLFrameOwnerElement::isKeyboardFocusable() const { 214 bool HTMLFrameOwnerElement::isKeyboardFocusable() const {
213 return m_contentFrame && HTMLElement::isKeyboardFocusable(); 215 return m_contentFrame && HTMLElement::isKeyboardFocusable();
214 } 216 }
215 217
216 void HTMLFrameOwnerElement::disposeWidgetSoon(Widget* widget) { 218 void HTMLFrameOwnerElement::disposeWidgetSoon(FrameViewBase* frameViewBase) {
217 if (s_updateSuspendCount) { 219 if (s_updateSuspendCount) {
218 widgetsPendingDispose().insert(widget); 220 widgetsPendingDispose().insert(frameViewBase);
219 return; 221 return;
220 } 222 }
221 widget->dispose(); 223 frameViewBase->dispose();
222 } 224 }
223 225
224 void HTMLFrameOwnerElement::dispatchLoad() { 226 void HTMLFrameOwnerElement::dispatchLoad() {
225 dispatchScopedEvent(Event::create(EventTypeNames::load)); 227 dispatchScopedEvent(Event::create(EventTypeNames::load));
226 } 228 }
227 229
228 const WebVector<mojom::blink::PermissionName>& 230 const WebVector<mojom::blink::PermissionName>&
229 HTMLFrameOwnerElement::delegatedPermissions() const { 231 HTMLFrameOwnerElement::delegatedPermissions() const {
230 DEFINE_STATIC_LOCAL(WebVector<mojom::blink::PermissionName>, permissions, ()); 232 DEFINE_STATIC_LOCAL(WebVector<mojom::blink::PermissionName>, permissions, ());
231 return permissions; 233 return permissions;
232 } 234 }
233 235
234 const WebVector<WebFeaturePolicyFeature>& 236 const WebVector<WebFeaturePolicyFeature>&
235 HTMLFrameOwnerElement::allowedFeatures() const { 237 HTMLFrameOwnerElement::allowedFeatures() const {
236 DEFINE_STATIC_LOCAL(WebVector<WebFeaturePolicyFeature>, features, ()); 238 DEFINE_STATIC_LOCAL(WebVector<WebFeaturePolicyFeature>, features, ());
237 return features; 239 return features;
238 } 240 }
239 241
240 Document* HTMLFrameOwnerElement::getSVGDocument( 242 Document* HTMLFrameOwnerElement::getSVGDocument(
241 ExceptionState& exceptionState) const { 243 ExceptionState& exceptionState) const {
242 Document* doc = contentDocument(); 244 Document* doc = contentDocument();
243 if (doc && doc->isSVGDocument()) 245 if (doc && doc->isSVGDocument())
244 return doc; 246 return doc;
245 return nullptr; 247 return nullptr;
246 } 248 }
247 249
248 void HTMLFrameOwnerElement::setWidget(Widget* widget) { 250 void HTMLFrameOwnerElement::setWidget(FrameViewBase* frameViewBase) {
249 if (widget == m_widget) 251 if (frameViewBase == m_widget)
250 return; 252 return;
251 253
252 if (m_widget) { 254 if (m_widget) {
253 if (m_widget->parent()) 255 if (m_widget->parent())
254 moveWidgetToParentSoon(m_widget.get(), 0); 256 moveWidgetToParentSoon(m_widget.get(), 0);
255 m_widget = nullptr; 257 m_widget = nullptr;
256 } 258 }
257 259
258 m_widget = widget; 260 m_widget = frameViewBase;
259 261
260 LayoutPart* layoutPart = toLayoutPart(layoutObject()); 262 LayoutPart* layoutPart = toLayoutPart(layoutObject());
261 LayoutPartItem layoutPartItem = LayoutPartItem(layoutPart); 263 LayoutPartItem layoutPartItem = LayoutPartItem(layoutPart);
262 if (layoutPartItem.isNull()) 264 if (layoutPartItem.isNull())
263 return; 265 return;
264 266
265 if (m_widget) { 267 if (m_widget) {
266 layoutPartItem.updateOnWidgetChange(); 268 layoutPartItem.updateOnWidgetChange();
267 269
268 DCHECK_EQ(document().view(), layoutPartItem.frameView()); 270 DCHECK_EQ(document().view(), layoutPartItem.frameView());
269 DCHECK(layoutPartItem.frameView()); 271 DCHECK(layoutPartItem.frameView());
270 moveWidgetToParentSoon(m_widget.get(), layoutPartItem.frameView()); 272 moveWidgetToParentSoon(m_widget.get(), layoutPartItem.frameView());
271 } 273 }
272 274
273 if (AXObjectCache* cache = document().existingAXObjectCache()) 275 if (AXObjectCache* cache = document().existingAXObjectCache())
274 cache->childrenChanged(layoutPart); 276 cache->childrenChanged(layoutPart);
275 } 277 }
276 278
277 Widget* HTMLFrameOwnerElement::releaseWidget() { 279 FrameViewBase* HTMLFrameOwnerElement::releaseWidget() {
278 if (!m_widget) 280 if (!m_widget)
279 return nullptr; 281 return nullptr;
280 if (m_widget->parent()) 282 if (m_widget->parent())
281 temporarilyRemoveWidgetFromParentSoon(m_widget.get()); 283 temporarilyRemoveWidgetFromParentSoon(m_widget.get());
282 LayoutPart* layoutPart = toLayoutPart(layoutObject()); 284 LayoutPart* layoutPart = toLayoutPart(layoutObject());
283 if (layoutPart) { 285 if (layoutPart) {
284 if (AXObjectCache* cache = document().existingAXObjectCache()) 286 if (AXObjectCache* cache = document().existingAXObjectCache())
285 cache->childrenChanged(layoutPart); 287 cache->childrenChanged(layoutPart);
286 } 288 }
287 return m_widget.release(); 289 return m_widget.release();
288 } 290 }
289 291
290 Widget* HTMLFrameOwnerElement::ownedWidget() const { 292 FrameViewBase* HTMLFrameOwnerElement::ownedWidget() const {
291 return m_widget.get(); 293 return m_widget.get();
292 } 294 }
293 295
294 bool HTMLFrameOwnerElement::loadOrRedirectSubframe( 296 bool HTMLFrameOwnerElement::loadOrRedirectSubframe(
295 const KURL& url, 297 const KURL& url,
296 const AtomicString& frameName, 298 const AtomicString& frameName,
297 bool replaceCurrentItem) { 299 bool replaceCurrentItem) {
298 LocalFrame* parentFrame = document().frame(); 300 LocalFrame* parentFrame = document().frame();
299 if (contentFrame()) { 301 if (contentFrame()) {
300 contentFrame()->navigate(document(), url, replaceCurrentItem, 302 contentFrame()->navigate(document(), url, replaceCurrentItem,
(...skipping 27 matching lines...) Expand all
328 } 330 }
329 331
330 DEFINE_TRACE(HTMLFrameOwnerElement) { 332 DEFINE_TRACE(HTMLFrameOwnerElement) {
331 visitor->trace(m_contentFrame); 333 visitor->trace(m_contentFrame);
332 visitor->trace(m_widget); 334 visitor->trace(m_widget);
333 HTMLElement::trace(visitor); 335 HTMLElement::trace(visitor);
334 FrameOwner::trace(visitor); 336 FrameOwner::trace(visitor);
335 } 337 }
336 338
337 } // namespace blink 339 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/frame/VisualViewport.cpp ('k') | third_party/WebKit/Source/core/html/HTMLObjectElement.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698