Chromium Code Reviews| Index: Source/web/WebViewImpl.cpp |
| diff --git a/Source/web/WebViewImpl.cpp b/Source/web/WebViewImpl.cpp |
| index 5f4ceea6761aa4df63bc515df859c7ea669fa252..ad7d749076242fa47154ede3553ee2a4cd92e815 100644 |
| --- a/Source/web/WebViewImpl.cpp |
| +++ b/Source/web/WebViewImpl.cpp |
| @@ -1906,7 +1906,7 @@ void WebViewImpl::beginFrame(const WebBeginFrameArgs& frameTime) |
| PageWidgetDelegate::animate(*m_page, validFrameTime.lastFrameTimeMonotonic, *m_page->deprecatedLocalMainFrame()); |
| if (m_continuousPaintingEnabled) { |
| - ContinuousPainter::setNeedsDisplayRecursive(m_rootGraphicsLayer, m_pageOverlays.get()); |
| + ContinuousPainter::setNeedsDisplayRecursive(m_rootGraphicsLayer, m_pageOverlay->graphicsLayer()); |
| m_client->scheduleAnimation(); |
| } |
| } |
| @@ -1942,7 +1942,7 @@ void WebViewImpl::paint(WebCanvas* canvas, const WebRect& rect) |
| ASSERT(!isAcceleratedCompositingActive()); |
| double paintStart = currentTime(); |
| - PageWidgetDelegate::paint(*m_page, pageOverlays(), canvas, rect, *m_page->deprecatedLocalMainFrame()); |
| + PageWidgetDelegate::paint(*m_page, m_pageOverlay.get(), canvas, rect, *m_page->deprecatedLocalMainFrame()); |
| double paintEnd = currentTime(); |
| double pixelsPerSec = (rect.width * rect.height) / (paintEnd - paintStart); |
| Platform::current()->histogramCustomCounts("Renderer4.SoftwarePaintDurationMS", (paintEnd - paintStart) * 1000, 0, 120, 30); |
| @@ -3654,8 +3654,8 @@ void WebViewImpl::sendResizeEventAndRepaint() |
| m_client->didInvalidateRect(damagedRect); |
| } |
| } |
| - if (m_pageOverlays) |
| - m_pageOverlays->update(); |
| + if (m_pageOverlay) |
| + m_pageOverlay->update(); |
| m_devToolsEmulator->viewportChanged(); |
| } |
| @@ -3990,12 +3990,15 @@ void WebViewImpl::setZoomFactorOverride(float zoomFactor) |
| setZoomLevel(zoomLevel()); |
| } |
| -void WebViewImpl::addPageOverlay(WebPageOverlay* overlay, int zOrder) |
| +void WebViewImpl::addPageOverlay(WebPageOverlay* overlay) |
|
dgozman
2015/07/28 16:16:57
Should we pass PageOverlay here and make client cr
sergeyv
2015/07/29 18:12:36
Done.
|
| { |
| - if (!m_pageOverlays) |
| - m_pageOverlays = PageOverlayList::create(this); |
| + if (m_pageOverlay && m_pageOverlay->overlay() != overlay) |
| + return; |
| + |
| + if (!m_pageOverlay) |
| + m_pageOverlay = PageOverlay::create(this, overlay); |
| - m_pageOverlays->add(overlay, zOrder); |
| + m_pageOverlay->update(); |
| } |
| void WebViewImpl::setPageOverlayColor(WebColor color) |
| @@ -4009,13 +4012,16 @@ void WebViewImpl::setPageOverlayColor(WebColor color) |
| return; |
| m_pageColorOverlay = adoptPtr(new ColorOverlay(color)); |
| - addPageOverlay(m_pageColorOverlay.get(), 0); |
| + addPageOverlay(m_pageColorOverlay.get()); |
| } |
| void WebViewImpl::removePageOverlay(WebPageOverlay* overlay) |
| { |
| - if (m_pageOverlays && m_pageOverlays->remove(overlay) && m_pageOverlays->empty()) |
| - m_pageOverlays = nullptr; |
| + if (!m_pageOverlay || m_pageOverlay->overlay() != overlay) |
| + return; |
| + |
| + m_pageOverlay->clear(); |
| + m_pageOverlay.clear(); |
| } |
| void WebViewImpl::setOverlayLayer(GraphicsLayer* layer) |
| @@ -4113,8 +4119,8 @@ void WebViewImpl::setRootGraphicsLayer(GraphicsLayer* layer) |
| // We register viewport layers here since there may not be a layer |
| // tree view prior to this point. |
| page()->frameHost().pinchViewport().registerLayersWithTreeView(m_layerTreeView); |
| - if (m_pageOverlays) |
| - m_pageOverlays->update(); |
| + if (m_pageOverlay) |
| + m_pageOverlay->update(); |
| // TODO(enne): Work around page visibility changes not being |
| // propogated to the WebView in some circumstances. This needs to |