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

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

Issue 1895873006: compositor-worker: Initialize CW machinery plumbing to compositor and fire CW rAF callbacks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Include WebCompositorMutatorClient from WebLayerTreeView to allow unique_ptr usage. Created 4 years, 6 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) 2014 Google Inc. All rights reserved. 2 * Copyright (C) 2014 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 30 matching lines...) Expand all
41 #include "core/frame/Settings.h" 41 #include "core/frame/Settings.h"
42 #include "core/frame/VisualViewport.h" 42 #include "core/frame/VisualViewport.h"
43 #include "core/input/EventHandler.h" 43 #include "core/input/EventHandler.h"
44 #include "core/layout/LayoutView.h" 44 #include "core/layout/LayoutView.h"
45 #include "core/layout/api/LayoutViewItem.h" 45 #include "core/layout/api/LayoutViewItem.h"
46 #include "core/layout/compositing/PaintLayerCompositor.h" 46 #include "core/layout/compositing/PaintLayerCompositor.h"
47 #include "core/page/ContextMenuController.h" 47 #include "core/page/ContextMenuController.h"
48 #include "core/page/FocusController.h" 48 #include "core/page/FocusController.h"
49 #include "core/page/Page.h" 49 #include "core/page/Page.h"
50 #include "platform/KeyboardCodes.h" 50 #include "platform/KeyboardCodes.h"
51 #include "platform/graphics/CompositorMutatorClient.h"
51 #include "public/platform/WebFrameScheduler.h" 52 #include "public/platform/WebFrameScheduler.h"
52 #include "public/web/WebWidgetClient.h" 53 #include "public/web/WebWidgetClient.h"
54 #include "web/CompositorMutatorImpl.h"
53 #include "web/CompositorProxyClientImpl.h" 55 #include "web/CompositorProxyClientImpl.h"
54 #include "web/ContextMenuAllowedScope.h" 56 #include "web/ContextMenuAllowedScope.h"
55 #include "web/WebDevToolsAgentImpl.h" 57 #include "web/WebDevToolsAgentImpl.h"
56 #include "web/WebInputEventConversion.h" 58 #include "web/WebInputEventConversion.h"
57 #include "web/WebLocalFrameImpl.h" 59 #include "web/WebLocalFrameImpl.h"
58 #include "web/WebPluginContainerImpl.h" 60 #include "web/WebPluginContainerImpl.h"
59 #include "web/WebRemoteFrameImpl.h" 61 #include "web/WebRemoteFrameImpl.h"
60 #include "web/WebViewFrameWidget.h" 62 #include "web/WebViewFrameWidget.h"
61 63
62 namespace blink { 64 namespace blink {
(...skipping 20 matching lines...) Expand all
83 // static 85 // static
84 WebFrameWidgetsSet& WebFrameWidgetImpl::allInstances() 86 WebFrameWidgetsSet& WebFrameWidgetImpl::allInstances()
85 { 87 {
86 DEFINE_STATIC_LOCAL(WebFrameWidgetsSet, allInstances, ()); 88 DEFINE_STATIC_LOCAL(WebFrameWidgetsSet, allInstances, ());
87 return allInstances; 89 return allInstances;
88 } 90 }
89 91
90 WebFrameWidgetImpl::WebFrameWidgetImpl(WebWidgetClient* client, WebLocalFrame* l ocalRoot) 92 WebFrameWidgetImpl::WebFrameWidgetImpl(WebWidgetClient* client, WebLocalFrame* l ocalRoot)
91 : m_client(client) 93 : m_client(client)
92 , m_localRoot(toWebLocalFrameImpl(localRoot)) 94 , m_localRoot(toWebLocalFrameImpl(localRoot))
95 , m_mutator(nullptr)
93 , m_layerTreeView(nullptr) 96 , m_layerTreeView(nullptr)
94 , m_rootLayer(nullptr) 97 , m_rootLayer(nullptr)
95 , m_rootGraphicsLayer(nullptr) 98 , m_rootGraphicsLayer(nullptr)
96 , m_isAcceleratedCompositingActive(false) 99 , m_isAcceleratedCompositingActive(false)
97 , m_layerTreeViewClosed(false) 100 , m_layerTreeViewClosed(false)
98 , m_suppressNextKeypressEvent(false) 101 , m_suppressNextKeypressEvent(false)
99 , m_ignoreInputEvents(false) 102 , m_ignoreInputEvents(false)
100 , m_isTransparent(false) 103 , m_isTransparent(false)
101 , m_selfKeepAlive(this) 104 , m_selfKeepAlive(this)
102 { 105 {
(...skipping 23 matching lines...) Expand all
126 WebDevToolsAgentImpl::webFrameWidgetImplClosed(this); 129 WebDevToolsAgentImpl::webFrameWidgetImplClosed(this);
127 DCHECK(allInstances().contains(this)); 130 DCHECK(allInstances().contains(this));
128 allInstances().remove(this); 131 allInstances().remove(this);
129 132
130 m_localRoot->setFrameWidget(nullptr); 133 m_localRoot->setFrameWidget(nullptr);
131 m_localRoot = nullptr; 134 m_localRoot = nullptr;
132 // Reset the delegate to prevent notifications being sent as we're being 135 // Reset the delegate to prevent notifications being sent as we're being
133 // deleted. 136 // deleted.
134 m_client = nullptr; 137 m_client = nullptr;
135 138
139 m_mutator = nullptr;
136 m_layerTreeView = nullptr; 140 m_layerTreeView = nullptr;
137 m_rootLayer = nullptr; 141 m_rootLayer = nullptr;
138 m_rootGraphicsLayer = nullptr; 142 m_rootGraphicsLayer = nullptr;
139 143
140 m_selfKeepAlive.clear(); 144 m_selfKeepAlive.clear();
141 } 145 }
142 146
143 WebSize WebFrameWidgetImpl::size() 147 WebSize WebFrameWidgetImpl::size()
144 { 148 {
145 return m_size; 149 return m_size;
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 if (m_layerTreeView) { 402 if (m_layerTreeView) {
399 m_layerTreeView->setNeedsBeginFrame(); 403 m_layerTreeView->setNeedsBeginFrame();
400 return; 404 return;
401 } 405 }
402 if (m_client) 406 if (m_client)
403 m_client->scheduleAnimation(); 407 m_client->scheduleAnimation();
404 } 408 }
405 409
406 CompositorProxyClient* WebFrameWidgetImpl::createCompositorProxyClient() 410 CompositorProxyClient* WebFrameWidgetImpl::createCompositorProxyClient()
407 { 411 {
408 return new CompositorProxyClientImpl(); 412 if (!m_mutator) {
413 std::unique_ptr<CompositorMutatorClient> mutatorClient = CompositorMutat orImpl::createClient();
414 m_mutator = static_cast<CompositorMutatorImpl*>(mutatorClient->mutator() );
415 m_layerTreeView->setMutatorClient(std::move(mutatorClient));
416 }
417 return new CompositorProxyClientImpl(m_mutator);
409 } 418 }
410 419
411 void WebFrameWidgetImpl::applyViewportDeltas( 420 void WebFrameWidgetImpl::applyViewportDeltas(
412 const WebFloatSize& visualViewportDelta, 421 const WebFloatSize& visualViewportDelta,
413 const WebFloatSize& mainFrameDelta, 422 const WebFloatSize& mainFrameDelta,
414 const WebFloatSize& elasticOverscrollDelta, 423 const WebFloatSize& elasticOverscrollDelta,
415 float pageScaleDelta, 424 float pageScaleDelta,
416 float topControlsDelta) 425 float topControlsDelta)
417 { 426 {
418 // FIXME: To be implemented. 427 // FIXME: To be implemented.
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 { 627 {
619 return m_isAcceleratedCompositingActive; 628 return m_isAcceleratedCompositingActive;
620 } 629 }
621 630
622 void WebFrameWidgetImpl::willCloseLayerTreeView() 631 void WebFrameWidgetImpl::willCloseLayerTreeView()
623 { 632 {
624 if (m_layerTreeView) 633 if (m_layerTreeView)
625 page()->willCloseLayerTreeView(*m_layerTreeView); 634 page()->willCloseLayerTreeView(*m_layerTreeView);
626 635
627 setIsAcceleratedCompositingActive(false); 636 setIsAcceleratedCompositingActive(false);
637 m_mutator = nullptr;
628 m_layerTreeView = nullptr; 638 m_layerTreeView = nullptr;
629 m_layerTreeViewClosed = true; 639 m_layerTreeViewClosed = true;
630 } 640 }
631 641
632 void WebFrameWidgetImpl::didChangeWindowResizerRect() 642 void WebFrameWidgetImpl::didChangeWindowResizerRect()
633 { 643 {
634 if (m_localRoot->frameView()) 644 if (m_localRoot->frameView())
635 m_localRoot->frameView()->windowResizerRectChanged(); 645 m_localRoot->frameView()->windowResizerRectChanged();
636 } 646 }
637 647
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
990 Document* document = frame->document(); 1000 Document* document = frame->document();
991 if (!document) 1001 if (!document)
992 return nullptr; 1002 return nullptr;
993 1003
994 return document->focusedElement(); 1004 return document->focusedElement();
995 } 1005 }
996 1006
997 void WebFrameWidgetImpl::initializeLayerTreeView() 1007 void WebFrameWidgetImpl::initializeLayerTreeView()
998 { 1008 {
999 if (m_client) { 1009 if (m_client) {
1010 DCHECK(!m_mutator);
1000 m_client->initializeLayerTreeView(); 1011 m_client->initializeLayerTreeView();
1001 m_layerTreeView = m_client->layerTreeView(); 1012 m_layerTreeView = m_client->layerTreeView();
1002 } 1013 }
1003 1014
1004 if (WebDevToolsAgentImpl* devTools = m_localRoot->devToolsAgentImpl()) 1015 if (WebDevToolsAgentImpl* devTools = m_localRoot->devToolsAgentImpl())
1005 devTools->layerTreeViewChanged(m_layerTreeView); 1016 devTools->layerTreeViewChanged(m_layerTreeView);
1006 1017
1007 page()->settings().setAcceleratedCompositingEnabled(m_layerTreeView); 1018 page()->settings().setAcceleratedCompositingEnabled(m_layerTreeView);
1008 if (m_layerTreeView) 1019 if (m_layerTreeView)
1009 page()->layerTreeViewInitialized(*m_layerTreeView); 1020 page()->layerTreeViewInitialized(*m_layerTreeView);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
1099 1110
1100 HitTestResult WebFrameWidgetImpl::hitTestResultForRootFramePos(const IntPoint& p osInRootFrame) 1111 HitTestResult WebFrameWidgetImpl::hitTestResultForRootFramePos(const IntPoint& p osInRootFrame)
1101 { 1112 {
1102 IntPoint docPoint(m_localRoot->frame()->view()->rootFrameToContents(posInRoo tFrame)); 1113 IntPoint docPoint(m_localRoot->frame()->view()->rootFrameToContents(posInRoo tFrame));
1103 HitTestResult result = m_localRoot->frame()->eventHandler().hitTestResultAtP oint(docPoint, HitTestRequest::ReadOnly | HitTestRequest::Active); 1114 HitTestResult result = m_localRoot->frame()->eventHandler().hitTestResultAtP oint(docPoint, HitTestRequest::ReadOnly | HitTestRequest::Active);
1104 result.setToShadowHostIfInUserAgentShadowRoot(); 1115 result.setToShadowHostIfInUserAgentShadowRoot();
1105 return result; 1116 return result;
1106 } 1117 }
1107 1118
1108 } // namespace blink 1119 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/WebFrameWidgetImpl.h ('k') | third_party/WebKit/Source/web/WebViewImpl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698