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

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

Issue 2797813002: Replicate feature policy container policies. (Closed)
Patch Set: Cleanup, reponding to review comments Created 3 years, 8 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 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 } 199 }
200 200
201 DOMWindow* HTMLFrameOwnerElement::contentWindow() const { 201 DOMWindow* HTMLFrameOwnerElement::contentWindow() const {
202 return m_contentFrame ? m_contentFrame->domWindow() : 0; 202 return m_contentFrame ? m_contentFrame->domWindow() : 0;
203 } 203 }
204 204
205 void HTMLFrameOwnerElement::setSandboxFlags(SandboxFlags flags) { 205 void HTMLFrameOwnerElement::setSandboxFlags(SandboxFlags flags) {
206 m_sandboxFlags = flags; 206 m_sandboxFlags = flags;
207 // Don't notify about updates if contentFrame() is null, for example when 207 // Don't notify about updates if contentFrame() is null, for example when
208 // the subframe hasn't been created yet. 208 // the subframe hasn't been created yet.
209 if (contentFrame()) 209 if (contentFrame()) {
210 document().frame()->loader().client()->didChangeSandboxFlags(contentFrame(), 210 document().frame()->loader().client()->didChangeFramePolicy(
211 flags); 211 contentFrame(), m_sandboxFlags, m_containerPolicy);
212 }
212 } 213 }
213 214
214 bool HTMLFrameOwnerElement::isKeyboardFocusable() const { 215 bool HTMLFrameOwnerElement::isKeyboardFocusable() const {
215 return m_contentFrame && HTMLElement::isKeyboardFocusable(); 216 return m_contentFrame && HTMLElement::isKeyboardFocusable();
216 } 217 }
217 218
218 void HTMLFrameOwnerElement::disposeWidgetSoon(FrameViewBase* frameViewBase) { 219 void HTMLFrameOwnerElement::disposeWidgetSoon(FrameViewBase* frameViewBase) {
219 if (s_updateSuspendCount) { 220 if (s_updateSuspendCount) {
220 widgetsPendingDispose().insert(frameViewBase); 221 widgetsPendingDispose().insert(frameViewBase);
221 return; 222 return;
222 } 223 }
223 frameViewBase->dispose(); 224 frameViewBase->dispose();
224 } 225 }
225 226
227 void HTMLFrameOwnerElement::updateContainerPolicy() {
228 m_containerPolicy = getContainerPolicyFromAllowedFeatures(
229 allowedFeatures(), SecurityOrigin::create(m_absoluteURL));
alexmos 2017/04/06 00:44:22 Is creating an origin directly from the src URL re
iclelland 2017/04/09 03:25:54 The way we have defined it in the spec, specifying
230 // Don't notify about updates if contentFrame() is null, for example when
231 // the subframe hasn't been created yet.
232 if (contentFrame()) {
233 document().frame()->loader().client()->didChangeFramePolicy(
234 contentFrame(), m_sandboxFlags, m_containerPolicy);
235 }
236 }
237
226 void HTMLFrameOwnerElement::frameOwnerPropertiesChanged() { 238 void HTMLFrameOwnerElement::frameOwnerPropertiesChanged() {
239 updateContainerPolicy();
lunalu1 2017/04/05 22:30:03 I don't think we need to update it here?
iclelland 2017/04/09 03:25:54 Thanks; that was older code from a previous iterat
227 // Don't notify about updates if contentFrame() is null, for example when 240 // Don't notify about updates if contentFrame() is null, for example when
228 // the subframe hasn't been created yet. 241 // the subframe hasn't been created yet.
229 if (contentFrame()) 242 if (contentFrame())
230 document().frame()->loader().client()->didChangeFrameOwnerProperties(this); 243 document().frame()->loader().client()->didChangeFrameOwnerProperties(this);
231 } 244 }
232 245
233 void HTMLFrameOwnerElement::dispatchLoad() { 246 void HTMLFrameOwnerElement::dispatchLoad() {
234 dispatchScopedEvent(Event::create(EventTypeNames::load)); 247 dispatchScopedEvent(Event::create(EventTypeNames::load));
235 } 248 }
236 249
237 const WebVector<WebFeaturePolicyFeature>& 250 const WebVector<WebFeaturePolicyFeature>&
238 HTMLFrameOwnerElement::allowedFeatures() const { 251 HTMLFrameOwnerElement::allowedFeatures() const {
239 DEFINE_STATIC_LOCAL(WebVector<WebFeaturePolicyFeature>, features, ()); 252 DEFINE_STATIC_LOCAL(WebVector<WebFeaturePolicyFeature>, features, ());
240 return features; 253 return features;
241 } 254 }
242 255
256 const WebParsedFeaturePolicy& HTMLFrameOwnerElement::containerPolicy() const {
257 return m_containerPolicy;
258 }
259
243 Document* HTMLFrameOwnerElement::getSVGDocument( 260 Document* HTMLFrameOwnerElement::getSVGDocument(
244 ExceptionState& exceptionState) const { 261 ExceptionState& exceptionState) const {
245 Document* doc = contentDocument(); 262 Document* doc = contentDocument();
246 if (doc && doc->isSVGDocument()) 263 if (doc && doc->isSVGDocument())
247 return doc; 264 return doc;
248 return nullptr; 265 return nullptr;
249 } 266 }
250 267
251 void HTMLFrameOwnerElement::setWidget(FrameViewBase* frameViewBase) { 268 void HTMLFrameOwnerElement::setWidget(FrameViewBase* frameViewBase) {
252 if (frameViewBase == m_widget) 269 if (frameViewBase == m_widget)
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 } 318 }
302 319
303 FrameViewBase* HTMLFrameOwnerElement::ownedWidget() const { 320 FrameViewBase* HTMLFrameOwnerElement::ownedWidget() const {
304 return m_widget.get(); 321 return m_widget.get();
305 } 322 }
306 323
307 bool HTMLFrameOwnerElement::loadOrRedirectSubframe( 324 bool HTMLFrameOwnerElement::loadOrRedirectSubframe(
308 const KURL& url, 325 const KURL& url,
309 const AtomicString& frameName, 326 const AtomicString& frameName,
310 bool replaceCurrentItem) { 327 bool replaceCurrentItem) {
328 m_absoluteURL = url;
lunalu1 2017/04/05 22:30:03 it seems like this is the only place this url is u
iclelland 2017/04/09 03:25:54 Thanks for catching that -- we don't need to anymo
329 updateContainerPolicy();
330
311 LocalFrame* parentFrame = document().frame(); 331 LocalFrame* parentFrame = document().frame();
312 if (contentFrame()) { 332 if (contentFrame()) {
313 contentFrame()->navigate(document(), url, replaceCurrentItem, 333 contentFrame()->navigate(document(), url, replaceCurrentItem,
314 UserGestureStatus::None); 334 UserGestureStatus::None);
315 return true; 335 return true;
316 } 336 }
317 337
318 if (!document().getSecurityOrigin()->canDisplay(url)) { 338 if (!document().getSecurityOrigin()->canDisplay(url)) {
319 FrameLoader::reportLocalLoadFailed(parentFrame, url.getString()); 339 FrameLoader::reportLocalLoadFailed(parentFrame, url.getString());
320 return false; 340 return false;
(...skipping 19 matching lines...) Expand all
340 } 360 }
341 361
342 DEFINE_TRACE(HTMLFrameOwnerElement) { 362 DEFINE_TRACE(HTMLFrameOwnerElement) {
343 visitor->trace(m_contentFrame); 363 visitor->trace(m_contentFrame);
344 visitor->trace(m_widget); 364 visitor->trace(m_widget);
345 HTMLElement::trace(visitor); 365 HTMLElement::trace(visitor);
346 FrameOwner::trace(visitor); 366 FrameOwner::trace(visitor);
347 } 367 }
348 368
349 } // namespace blink 369 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698