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

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

Powered by Google App Engine
This is Rietveld 408576698