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

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

Issue 2651583007: Plumbing blink::Interface{Provider|Registry} through WebLocalFrame's constructor. (Closed)
Patch Set: Rebasing... Created 3 years, 10 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 1413 matching lines...) Expand 10 before | Expand all | Expand 10 after
1424 WebString WebLocalFrameImpl::layerTreeAsText(bool showDebugInfo) const { 1424 WebString WebLocalFrameImpl::layerTreeAsText(bool showDebugInfo) const {
1425 if (!frame()) 1425 if (!frame())
1426 return WebString(); 1426 return WebString();
1427 1427
1428 return WebString(frame()->layerTreeAsText( 1428 return WebString(frame()->layerTreeAsText(
1429 showDebugInfo ? LayerTreeIncludesDebugInfo : LayerTreeNormal)); 1429 showDebugInfo ? LayerTreeIncludesDebugInfo : LayerTreeNormal));
1430 } 1430 }
1431 1431
1432 // WebLocalFrameImpl public -------------------------------------------------- 1432 // WebLocalFrameImpl public --------------------------------------------------
1433 1433
1434 WebLocalFrame* WebLocalFrame::create(WebTreeScopeType scope, 1434 WebLocalFrame* WebLocalFrame::create(
1435 WebFrameClient* client, 1435 WebTreeScopeType scope,
1436 WebFrame* opener) { 1436 WebFrameClient* client,
1437 return WebLocalFrameImpl::create(scope, client, opener); 1437 blink::InterfaceProvider* interfaceProvider,
1438 blink::InterfaceRegistry* interfaceRegistry,
1439 WebFrame* opener) {
1440 return WebLocalFrameImpl::create(scope, client, interfaceProvider,
1441 interfaceRegistry, opener);
1438 } 1442 }
1439 1443
1440 WebLocalFrame* WebLocalFrame::createProvisional(WebFrameClient* client, 1444 WebLocalFrame* WebLocalFrame::createProvisional(
1441 WebRemoteFrame* oldWebFrame, 1445 WebFrameClient* client,
1442 WebSandboxFlags flags) { 1446 blink::InterfaceProvider* interfaceProvider,
1443 return WebLocalFrameImpl::createProvisional(client, oldWebFrame, flags); 1447 blink::InterfaceRegistry* interfaceRegistry,
1448 WebRemoteFrame* oldWebFrame,
1449 WebSandboxFlags flags) {
1450 return WebLocalFrameImpl::createProvisional(
1451 client, interfaceProvider, interfaceRegistry, oldWebFrame, flags);
1444 } 1452 }
1445 1453
1446 WebLocalFrameImpl* WebLocalFrameImpl::create(WebTreeScopeType scope, 1454 WebLocalFrameImpl* WebLocalFrameImpl::create(
1447 WebFrameClient* client, 1455 WebTreeScopeType scope,
1448 WebFrame* opener) { 1456 WebFrameClient* client,
1449 WebLocalFrameImpl* frame = new WebLocalFrameImpl(scope, client); 1457 blink::InterfaceProvider* interfaceProvider,
1458 blink::InterfaceRegistry* interfaceRegistry,
1459 WebFrame* opener) {
1460 WebLocalFrameImpl* frame = new WebLocalFrameImpl(
1461 scope, client, interfaceProvider, interfaceRegistry);
1450 frame->setOpener(opener); 1462 frame->setOpener(opener);
1451 return frame; 1463 return frame;
1452 } 1464 }
1453 1465
1454 WebLocalFrameImpl* WebLocalFrameImpl::createProvisional( 1466 WebLocalFrameImpl* WebLocalFrameImpl::createProvisional(
1455 WebFrameClient* client, 1467 WebFrameClient* client,
1468 blink::InterfaceProvider* interfaceProvider,
1469 blink::InterfaceRegistry* interfaceRegistry,
1456 WebRemoteFrame* oldWebFrame, 1470 WebRemoteFrame* oldWebFrame,
1457 WebSandboxFlags flags) { 1471 WebSandboxFlags flags) {
1458 DCHECK(client); 1472 DCHECK(client);
1459 WebLocalFrameImpl* webFrame = new WebLocalFrameImpl(oldWebFrame, client); 1473 WebLocalFrameImpl* webFrame = new WebLocalFrameImpl(
1474 oldWebFrame, client, interfaceProvider, interfaceRegistry);
1460 Frame* oldFrame = oldWebFrame->toImplBase()->frame(); 1475 Frame* oldFrame = oldWebFrame->toImplBase()->frame();
1461 webFrame->setParent(oldWebFrame->parent()); 1476 webFrame->setParent(oldWebFrame->parent());
1462 webFrame->setOpener(oldWebFrame->opener()); 1477 webFrame->setOpener(oldWebFrame->opener());
1463 // Note: this *always* temporarily sets a frame owner, even for main frames! 1478 // Note: this *always* temporarily sets a frame owner, even for main frames!
1464 // When a core Frame is created with no owner, it attempts to set itself as 1479 // When a core Frame is created with no owner, it attempts to set itself as
1465 // the main frame of the Page. However, this is a provisional frame, and may 1480 // the main frame of the Page. However, this is a provisional frame, and may
1466 // disappear, so Page::m_mainFrame can't be updated just yet. 1481 // disappear, so Page::m_mainFrame can't be updated just yet.
1467 FrameOwner* tempOwner = DummyFrameOwner::create(); 1482 FrameOwner* tempOwner = DummyFrameOwner::create();
1468 // TODO(dcheng): This block is very similar to initializeCoreFrame. Try to 1483 // TODO(dcheng): This block is very similar to initializeCoreFrame. Try to
1469 // reuse it here. 1484 // reuse it here.
1470 LocalFrame* frame = LocalFrame::create( 1485 LocalFrame* frame = LocalFrame::create(
1471 webFrame->m_frameLoaderClientImpl.get(), oldFrame->host(), tempOwner, 1486 webFrame->m_frameLoaderClientImpl.get(), oldFrame->host(), tempOwner,
1472 client->interfaceProvider(), client->interfaceRegistry()); 1487 interfaceProvider, interfaceRegistry);
1473 // Set the name and unique name directly, bypassing any of the normal logic 1488 // Set the name and unique name directly, bypassing any of the normal logic
1474 // to calculate unique name. 1489 // to calculate unique name.
1475 frame->tree().setPrecalculatedName( 1490 frame->tree().setPrecalculatedName(
1476 toWebRemoteFrameImpl(oldWebFrame)->frame()->tree().name(), 1491 toWebRemoteFrameImpl(oldWebFrame)->frame()->tree().name(),
1477 toWebRemoteFrameImpl(oldWebFrame)->frame()->tree().uniqueName()); 1492 toWebRemoteFrameImpl(oldWebFrame)->frame()->tree().uniqueName());
1478 webFrame->setCoreFrame(frame); 1493 webFrame->setCoreFrame(frame);
1479 1494
1480 frame->setOwner(oldFrame->owner()); 1495 frame->setOwner(oldFrame->owner());
1481 1496
1482 if (frame->owner() && frame->owner()->isRemote()) 1497 if (frame->owner() && frame->owner()->isRemote())
1483 toRemoteFrameOwner(frame->owner()) 1498 toRemoteFrameOwner(frame->owner())
1484 ->setSandboxFlags(static_cast<SandboxFlags>(flags)); 1499 ->setSandboxFlags(static_cast<SandboxFlags>(flags));
1485 1500
1486 // We must call init() after m_frame is assigned because it is referenced 1501 // We must call init() after m_frame is assigned because it is referenced
1487 // during init(). Note that this may dispatch JS events; the frame may be 1502 // during init(). Note that this may dispatch JS events; the frame may be
1488 // detached after init() returns. 1503 // detached after init() returns.
1489 frame->init(); 1504 frame->init();
1490 return webFrame; 1505 return webFrame;
1491 } 1506 }
1492 1507
1493 WebLocalFrameImpl::WebLocalFrameImpl(WebTreeScopeType scope, 1508 WebLocalFrameImpl::WebLocalFrameImpl(
1494 WebFrameClient* client) 1509 WebTreeScopeType scope,
1510 WebFrameClient* client,
1511 blink::InterfaceProvider* interfaceProvider,
1512 blink::InterfaceRegistry* interfaceRegistry)
1495 : WebLocalFrame(scope), 1513 : WebLocalFrame(scope),
1496 m_frameLoaderClientImpl(FrameLoaderClientImpl::create(this)), 1514 m_frameLoaderClientImpl(FrameLoaderClientImpl::create(this)),
1497 m_frameWidget(0), 1515 m_frameWidget(0),
1498 m_client(client), 1516 m_client(client),
1499 m_autofillClient(0), 1517 m_autofillClient(0),
1500 m_contentSettingsClient(0), 1518 m_contentSettingsClient(0),
1501 m_inputEventsScaleFactorForEmulation(1), 1519 m_inputEventsScaleFactorForEmulation(1),
1520 m_interfaceProvider(interfaceProvider),
1521 m_interfaceRegistry(interfaceRegistry),
1502 m_webDevToolsFrontend(0), 1522 m_webDevToolsFrontend(0),
1503 m_inputMethodController(new WebInputMethodControllerImpl(this)), 1523 m_inputMethodController(new WebInputMethodControllerImpl(this)),
1504 m_selfKeepAlive(this) { 1524 m_selfKeepAlive(this) {
1505 DCHECK(m_client); 1525 DCHECK(m_client);
1506 frameCount++; 1526 frameCount++;
1507 } 1527 }
1508 1528
1509 WebLocalFrameImpl::WebLocalFrameImpl(WebRemoteFrame* oldWebFrame, 1529 WebLocalFrameImpl::WebLocalFrameImpl(
1510 WebFrameClient* client) 1530 WebRemoteFrame* oldWebFrame,
1531 WebFrameClient* client,
1532 blink::InterfaceProvider* interfaceProvider,
1533 blink::InterfaceRegistry* interfaceRegistry)
1511 : WebLocalFrameImpl(oldWebFrame->inShadowTree() 1534 : WebLocalFrameImpl(oldWebFrame->inShadowTree()
1512 ? WebTreeScopeType::Shadow 1535 ? WebTreeScopeType::Shadow
1513 : WebTreeScopeType::Document, 1536 : WebTreeScopeType::Document,
1514 client) {} 1537 client,
1538 interfaceProvider,
1539 interfaceRegistry) {}
1515 1540
1516 WebLocalFrameImpl::~WebLocalFrameImpl() { 1541 WebLocalFrameImpl::~WebLocalFrameImpl() {
1517 // The widget for the frame, if any, must have already been closed. 1542 // The widget for the frame, if any, must have already been closed.
1518 DCHECK(!m_frameWidget); 1543 DCHECK(!m_frameWidget);
1519 frameCount--; 1544 frameCount--;
1520 } 1545 }
1521 1546
1522 DEFINE_TRACE(WebLocalFrameImpl) { 1547 DEFINE_TRACE(WebLocalFrameImpl) {
1523 visitor->trace(m_frameLoaderClientImpl); 1548 visitor->trace(m_frameLoaderClientImpl);
1524 visitor->trace(m_frame); 1549 visitor->trace(m_frame);
1525 visitor->trace(m_devToolsAgent); 1550 visitor->trace(m_devToolsAgent);
1526 visitor->trace(m_textFinder); 1551 visitor->trace(m_textFinder);
1527 visitor->trace(m_printContext); 1552 visitor->trace(m_printContext);
1528 visitor->trace(m_contextMenuNode); 1553 visitor->trace(m_contextMenuNode);
1529 visitor->template registerWeakMembers<WebFrame, &WebFrame::clearWeakFrames>( 1554 visitor->template registerWeakMembers<WebFrame, &WebFrame::clearWeakFrames>(
1530 this); 1555 this);
1531 WebFrame::traceFrames(visitor, this); 1556 WebFrame::traceFrames(visitor, this);
1532 WebFrameImplBase::trace(visitor); 1557 WebFrameImplBase::trace(visitor);
1533 } 1558 }
1534 1559
1535 void WebLocalFrameImpl::setCoreFrame(LocalFrame* frame) { 1560 void WebLocalFrameImpl::setCoreFrame(LocalFrame* frame) {
1536 m_frame = frame; 1561 m_frame = frame;
1537 } 1562 }
1538 1563
1539 void WebLocalFrameImpl::initializeCoreFrame(FrameHost* host, 1564 void WebLocalFrameImpl::initializeCoreFrame(FrameHost* host,
1540 FrameOwner* owner, 1565 FrameOwner* owner,
1541 const AtomicString& name, 1566 const AtomicString& name,
1542 const AtomicString& uniqueName) { 1567 const AtomicString& uniqueName) {
1543 setCoreFrame( 1568 setCoreFrame(LocalFrame::create(m_frameLoaderClientImpl.get(), host, owner,
1544 LocalFrame::create(m_frameLoaderClientImpl.get(), host, owner, 1569 m_interfaceProvider, m_interfaceRegistry));
1545 client() ? client()->interfaceProvider() : nullptr,
1546 client() ? client()->interfaceRegistry() : nullptr));
1547 frame()->tree().setPrecalculatedName(name, uniqueName); 1570 frame()->tree().setPrecalculatedName(name, uniqueName);
1548 // We must call init() after m_frame is assigned because it is referenced 1571 // We must call init() after m_frame is assigned because it is referenced
1549 // during init(). Note that this may dispatch JS events; the frame may be 1572 // during init(). Note that this may dispatch JS events; the frame may be
1550 // detached after init() returns. 1573 // detached after init() returns.
1551 frame()->init(); 1574 frame()->init();
1552 if (frame()) { 1575 if (frame()) {
1553 if (frame()->loader().stateMachine()->isDisplayingInitialEmptyDocument() && 1576 if (frame()->loader().stateMachine()->isDisplayingInitialEmptyDocument() &&
1554 !parent() && !opener() && 1577 !parent() && !opener() &&
1555 frame()->settings()->getShouldReuseGlobalForUnownedMainFrame()) { 1578 frame()->settings()->getShouldReuseGlobalForUnownedMainFrame()) {
1556 frame()->document()->getSecurityOrigin()->grantUniversalAccess(); 1579 frame()->document()->getSecurityOrigin()->grantUniversalAccess();
(...skipping 794 matching lines...) Expand 10 before | Expand all | Expand 10 after
2351 ->frameScheduler() 2374 ->frameScheduler()
2352 ->unthrottledTaskRunner() 2375 ->unthrottledTaskRunner()
2353 ->toSingleThreadTaskRunner(); 2376 ->toSingleThreadTaskRunner();
2354 } 2377 }
2355 2378
2356 WebInputMethodControllerImpl* WebLocalFrameImpl::inputMethodController() const { 2379 WebInputMethodControllerImpl* WebLocalFrameImpl::inputMethodController() const {
2357 return m_inputMethodController.get(); 2380 return m_inputMethodController.get();
2358 } 2381 }
2359 2382
2360 } // namespace blink 2383 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/WebLocalFrameImpl.h ('k') | third_party/WebKit/Source/web/WebRemoteFrameImpl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698