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

Side by Side Diff: third_party/WebKit/Source/web/WebLocalFrameImpl.cpp

Issue 1938753002: OOPIF: Replicate allowFullscreen flag. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleanup Created 4 years, 7 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) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * 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 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 1347 matching lines...) Expand 10 before | Expand all | Expand 10 after
1358 return WebString(frame()->layerTreeAsText(showDebugInfo ? LayerTreeIncludesD ebugInfo : LayerTreeNormal)); 1358 return WebString(frame()->layerTreeAsText(showDebugInfo ? LayerTreeIncludesD ebugInfo : LayerTreeNormal));
1359 } 1359 }
1360 1360
1361 // WebLocalFrameImpl public ---------------------------------------------------- ----- 1361 // WebLocalFrameImpl public ---------------------------------------------------- -----
1362 1362
1363 WebLocalFrame* WebLocalFrame::create(WebTreeScopeType scope, WebFrameClient* cli ent, WebFrame* opener) 1363 WebLocalFrame* WebLocalFrame::create(WebTreeScopeType scope, WebFrameClient* cli ent, WebFrame* opener)
1364 { 1364 {
1365 return WebLocalFrameImpl::create(scope, client, opener); 1365 return WebLocalFrameImpl::create(scope, client, opener);
1366 } 1366 }
1367 1367
1368 WebLocalFrame* WebLocalFrame::createProvisional(WebFrameClient* client, WebRemot eFrame* oldWebFrame, WebSandboxFlags flags, const WebFrameOwnerProperties& frame OwnerProperties) 1368 WebLocalFrame* WebLocalFrame::createProvisional(WebFrameClient* client, WebRemot eFrame* oldWebFrame, WebSandboxFlags flags)
1369 { 1369 {
1370 return WebLocalFrameImpl::createProvisional(client, oldWebFrame, flags, fram eOwnerProperties); 1370 return WebLocalFrameImpl::createProvisional(client, oldWebFrame, flags);
1371 } 1371 }
1372 1372
1373 WebLocalFrameImpl* WebLocalFrameImpl::create(WebTreeScopeType scope, WebFrameCli ent* client, WebFrame* opener) 1373 WebLocalFrameImpl* WebLocalFrameImpl::create(WebTreeScopeType scope, WebFrameCli ent* client, WebFrame* opener)
1374 { 1374 {
1375 WebLocalFrameImpl* frame = new WebLocalFrameImpl(scope, client); 1375 WebLocalFrameImpl* frame = new WebLocalFrameImpl(scope, client);
1376 frame->setOpener(opener); 1376 frame->setOpener(opener);
1377 return frame; 1377 return frame;
1378 } 1378 }
1379 1379
1380 WebLocalFrameImpl* WebLocalFrameImpl::createProvisional(WebFrameClient* client, WebRemoteFrame* oldWebFrame, WebSandboxFlags flags, const WebFrameOwnerPropertie s& frameOwnerProperties) 1380 WebLocalFrameImpl* WebLocalFrameImpl::createProvisional(WebFrameClient* client, WebRemoteFrame* oldWebFrame, WebSandboxFlags flags)
1381 { 1381 {
1382 WebLocalFrameImpl* webFrame = new WebLocalFrameImpl(oldWebFrame, client); 1382 WebLocalFrameImpl* webFrame = new WebLocalFrameImpl(oldWebFrame, client);
1383 Frame* oldFrame = oldWebFrame->toImplBase()->frame(); 1383 Frame* oldFrame = oldWebFrame->toImplBase()->frame();
1384 webFrame->setParent(oldWebFrame->parent()); 1384 webFrame->setParent(oldWebFrame->parent());
1385 webFrame->setOpener(oldWebFrame->opener()); 1385 webFrame->setOpener(oldWebFrame->opener());
1386 // Note: this *always* temporarily sets a frame owner, even for main frames! 1386 // Note: this *always* temporarily sets a frame owner, even for main frames!
1387 // When a core Frame is created with no owner, it attempts to set itself as 1387 // When a core Frame is created with no owner, it attempts to set itself as
1388 // the main frame of the Page. However, this is a provisional frame, and may 1388 // the main frame of the Page. However, this is a provisional frame, and may
1389 // disappear, so Page::m_mainFrame can't be updated just yet. 1389 // disappear, so Page::m_mainFrame can't be updated just yet.
1390 FrameOwner* tempOwner = DummyFrameOwner::create(); 1390 FrameOwner* tempOwner = DummyFrameOwner::create();
1391 // TODO(dcheng): This block is very similar to initializeCoreFrame. Try to r euse it here. 1391 // TODO(dcheng): This block is very similar to initializeCoreFrame. Try to r euse it here.
1392 LocalFrame* frame = LocalFrame::create(webFrame->m_frameLoaderClientImpl.get (), oldFrame->host(), tempOwner, client ? client->serviceRegistry() : nullptr); 1392 LocalFrame* frame = LocalFrame::create(webFrame->m_frameLoaderClientImpl.get (), oldFrame->host(), tempOwner, client ? client->serviceRegistry() : nullptr);
1393 // Set the name and unique name directly, bypassing any of the normal logic 1393 // Set the name and unique name directly, bypassing any of the normal logic
1394 // to calculate unique name. 1394 // to calculate unique name.
1395 frame->tree().setPrecalculatedName(toWebRemoteFrameImpl(oldWebFrame)->frame( )->tree().name(), toWebRemoteFrameImpl(oldWebFrame)->frame()->tree().uniqueName( )); 1395 frame->tree().setPrecalculatedName(toWebRemoteFrameImpl(oldWebFrame)->frame( )->tree().name(), toWebRemoteFrameImpl(oldWebFrame)->frame()->tree().uniqueName( ));
1396 webFrame->setCoreFrame(frame); 1396 webFrame->setCoreFrame(frame);
1397 1397
1398 frame->setOwner(oldFrame->owner()); 1398 frame->setOwner(oldFrame->owner());
1399 1399
1400 if (frame->owner() && frame->owner()->isRemote()) { 1400 if (frame->owner() && frame->owner()->isRemote())
1401 toRemoteFrameOwner(frame->owner())->setSandboxFlags(static_cast<SandboxF lags>(flags)); 1401 toRemoteFrameOwner(frame->owner())->setSandboxFlags(static_cast<SandboxF lags>(flags));
1402 // Since a remote frame doesn't get the notifications about frame owner
1403 // property modifications, we need to sync up those properties here.
1404 webFrame->setFrameOwnerProperties(frameOwnerProperties);
1405 }
1406 1402
1407 // We must call init() after m_frame is assigned because it is referenced 1403 // We must call init() after m_frame is assigned because it is referenced
1408 // during init(). Note that this may dispatch JS events; the frame may be 1404 // during init(). Note that this may dispatch JS events; the frame may be
1409 // detached after init() returns. 1405 // detached after init() returns.
1410 frame->init(); 1406 frame->init();
1411 return webFrame; 1407 return webFrame;
1412 } 1408 }
1413 1409
1414 WebLocalFrameImpl::WebLocalFrameImpl(WebTreeScopeType scope, WebFrameClient* cli ent) 1410 WebLocalFrameImpl::WebLocalFrameImpl(WebTreeScopeType scope, WebFrameClient* cli ent)
1415 : WebLocalFrame(scope) 1411 : WebLocalFrame(scope)
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
1504 } 1500 }
1505 1501
1506 LocalFrame* WebLocalFrameImpl::createChildFrame(const FrameLoadRequest& request, 1502 LocalFrame* WebLocalFrameImpl::createChildFrame(const FrameLoadRequest& request,
1507 const AtomicString& name, HTMLFrameOwnerElement* ownerElement) 1503 const AtomicString& name, HTMLFrameOwnerElement* ownerElement)
1508 { 1504 {
1509 DCHECK(m_client); 1505 DCHECK(m_client);
1510 TRACE_EVENT0("blink", "WebLocalFrameImpl::createChildframe"); 1506 TRACE_EVENT0("blink", "WebLocalFrameImpl::createChildframe");
1511 WebTreeScopeType scope = frame()->document() == ownerElement->treeScope() 1507 WebTreeScopeType scope = frame()->document() == ownerElement->treeScope()
1512 ? WebTreeScopeType::Document 1508 ? WebTreeScopeType::Document
1513 : WebTreeScopeType::Shadow; 1509 : WebTreeScopeType::Shadow;
1514 WebFrameOwnerProperties ownerProperties(ownerElement->scrollingMode(), owner Element->marginWidth(), ownerElement->marginHeight()); 1510 WebFrameOwnerProperties ownerProperties(ownerElement->scrollingMode(), owner Element->marginWidth(), ownerElement->marginHeight(), ownerElement->allowFullscr een());
1515 // FIXME: Using subResourceAttributeName as fallback is not a perfect 1511 // FIXME: Using subResourceAttributeName as fallback is not a perfect
1516 // solution. subResourceAttributeName returns just one attribute name. The 1512 // solution. subResourceAttributeName returns just one attribute name. The
1517 // element might not have the attribute, and there might be other attributes 1513 // element might not have the attribute, and there might be other attributes
1518 // which can identify the element. 1514 // which can identify the element.
1519 AtomicString uniqueName = frame()->tree().calculateUniqueNameForNewChildFram e( 1515 AtomicString uniqueName = frame()->tree().calculateUniqueNameForNewChildFram e(
1520 name, ownerElement->getAttribute(ownerElement->subResourceAttributeName( ))); 1516 name, ownerElement->getAttribute(ownerElement->subResourceAttributeName( )));
1521 WebLocalFrameImpl* webframeChild = toWebLocalFrameImpl(m_client->createChild Frame(this, scope, name, uniqueName, static_cast<WebSandboxFlags>(ownerElement-> getSandboxFlags()), ownerProperties)); 1517 WebLocalFrameImpl* webframeChild = toWebLocalFrameImpl(m_client->createChild Frame(this, scope, name, uniqueName, static_cast<WebSandboxFlags>(ownerElement-> getSandboxFlags()), ownerProperties));
1522 if (!webframeChild) 1518 if (!webframeChild)
1523 return nullptr; 1519 return nullptr;
1524 1520
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
1791 { 1787 {
1792 DCHECK(devToolsClient); 1788 DCHECK(devToolsClient);
1793 m_devToolsAgent = WebDevToolsAgentImpl::create(this, devToolsClient); 1789 m_devToolsAgent = WebDevToolsAgentImpl::create(this, devToolsClient);
1794 } 1790 }
1795 1791
1796 WebDevToolsAgent* WebLocalFrameImpl::devToolsAgent() 1792 WebDevToolsAgent* WebLocalFrameImpl::devToolsAgent()
1797 { 1793 {
1798 return m_devToolsAgent.get(); 1794 return m_devToolsAgent.get();
1799 } 1795 }
1800 1796
1801 void WebLocalFrameImpl::setFrameOwnerProperties(const WebFrameOwnerProperties& f rameOwnerProperties)
1802 {
1803 // At the moment, this is only used to replicate frame owner properties
1804 // for frames with a remote owner.
1805 FrameOwner* owner = frame()->owner();
1806 DCHECK(owner);
1807 toRemoteFrameOwner(owner)->setScrollingMode(frameOwnerProperties.scrollingMo de);
1808 toRemoteFrameOwner(owner)->setMarginWidth(frameOwnerProperties.marginWidth);
1809 toRemoteFrameOwner(owner)->setMarginHeight(frameOwnerProperties.marginHeight );
1810 }
1811
1812 WebLocalFrameImpl* WebLocalFrameImpl::localRoot() 1797 WebLocalFrameImpl* WebLocalFrameImpl::localRoot()
1813 { 1798 {
1814 // This can't use the LocalFrame::localFrameRoot, since it may be called 1799 // This can't use the LocalFrame::localFrameRoot, since it may be called
1815 // when the WebLocalFrame exists but the core LocalFrame does not. 1800 // when the WebLocalFrame exists but the core LocalFrame does not.
1816 // TODO(alexmos, dcheng): Clean this up to only calculate this in one place. 1801 // TODO(alexmos, dcheng): Clean this up to only calculate this in one place.
1817 WebLocalFrameImpl* localRoot = this; 1802 WebLocalFrameImpl* localRoot = this;
1818 while (!localRoot->frameWidget()) 1803 while (!localRoot->frameWidget())
1819 localRoot = toWebLocalFrameImpl(localRoot->parent()); 1804 localRoot = toWebLocalFrameImpl(localRoot->parent());
1820 return localRoot; 1805 return localRoot;
1821 } 1806 }
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
2111 return WebSandboxFlags::None; 2096 return WebSandboxFlags::None;
2112 return static_cast<WebSandboxFlags>(frame()->loader().effectiveSandboxFlags( )); 2097 return static_cast<WebSandboxFlags>(frame()->loader().effectiveSandboxFlags( ));
2113 } 2098 }
2114 2099
2115 void WebLocalFrameImpl::forceSandboxFlags(WebSandboxFlags flags) 2100 void WebLocalFrameImpl::forceSandboxFlags(WebSandboxFlags flags)
2116 { 2101 {
2117 frame()->loader().forceSandboxFlags(static_cast<SandboxFlags>(flags)); 2102 frame()->loader().forceSandboxFlags(static_cast<SandboxFlags>(flags));
2118 } 2103 }
2119 2104
2120 } // namespace blink 2105 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698