| Index: third_party/WebKit/Source/web/WebViewImpl.cpp
|
| diff --git a/third_party/WebKit/Source/web/WebViewImpl.cpp b/third_party/WebKit/Source/web/WebViewImpl.cpp
|
| index 7f9d5c550cfe56d0f26f919d9bc120bda193ac41..40006ea41041bfd65eaa80d4c52ffdc13ea320b0 100644
|
| --- a/third_party/WebKit/Source/web/WebViewImpl.cpp
|
| +++ b/third_party/WebKit/Source/web/WebViewImpl.cpp
|
| @@ -335,16 +335,16 @@ private:
|
|
|
| // WebView ----------------------------------------------------------------
|
|
|
| -WebView* WebView::create(WebViewClient* client)
|
| +WebView* WebView::create(WebViewClient* client, WebPageVisibilityState visibilityState)
|
| {
|
| // Pass the WebViewImpl's self-reference to the caller.
|
| - return WebViewImpl::create(client);
|
| + return WebViewImpl::create(client, visibilityState);
|
| }
|
|
|
| -WebViewImpl* WebViewImpl::create(WebViewClient* client)
|
| +WebViewImpl* WebViewImpl::create(WebViewClient* client, WebPageVisibilityState visibilityState)
|
| {
|
| // Pass the WebViewImpl's self-reference to the caller.
|
| - return adoptRef(new WebViewImpl(client)).leakRef();
|
| + return adoptRef(new WebViewImpl(client, visibilityState)).leakRef();
|
| }
|
|
|
| void WebView::setUseExternalPopupMenus(bool useExternalPopupMenus)
|
| @@ -402,7 +402,7 @@ HashSet<WebViewImpl*>& WebViewImpl::allInstances()
|
| return allInstances;
|
| }
|
|
|
| -WebViewImpl::WebViewImpl(WebViewClient* client)
|
| +WebViewImpl::WebViewImpl(WebViewClient* client, WebPageVisibilityState visibilityState)
|
| : m_client(client)
|
| , m_spellCheckClient(nullptr)
|
| , m_chromeClientImpl(ChromeClientImpl::create(this))
|
| @@ -452,6 +452,7 @@ WebViewImpl::WebViewImpl(WebViewClient* client)
|
| , m_mutator(nullptr)
|
| , m_scheduler(wrapUnique(Platform::current()->currentThread()->scheduler()->createWebViewScheduler(this).release()))
|
| , m_lastFrameTimeMonotonic(0)
|
| + , m_overrideCompositorVisibility(false)
|
| {
|
| Page::PageClients pageClients;
|
| pageClients.chromeClient = m_chromeClientImpl.get();
|
| @@ -470,9 +471,7 @@ WebViewImpl::WebViewImpl(WebViewClient* client)
|
| provideDedicatedWorkerGlobalScopeProxyProviderTo(*m_page, DedicatedWorkerGlobalScopeProxyProviderImpl::create());
|
| StorageNamespaceController::provideStorageNamespaceTo(*m_page, &m_storageClientImpl);
|
|
|
| - if (m_client) {
|
| - setVisibilityState(m_client->visibilityState(), true);
|
| - }
|
| + setVisibilityState(visibilityState, true);
|
|
|
| initializeLayerTreeView();
|
|
|
| @@ -4422,11 +4421,21 @@ void WebViewImpl::setVisibilityState(WebPageVisibilityState visibilityState,
|
| m_page->setVisibilityState(static_cast<PageVisibilityState>(static_cast<int>(visibilityState)), isInitialState);
|
|
|
| bool visible = visibilityState == WebPageVisibilityStateVisible;
|
| - if (m_layerTreeView)
|
| + if (m_layerTreeView && !m_overrideCompositorVisibility)
|
| m_layerTreeView->setVisible(visible);
|
| m_scheduler->setPageVisible(visible);
|
| }
|
|
|
| +void WebViewImpl::setCompositorVisibility(bool isVisible)
|
| +{
|
| + if (!isVisible)
|
| + m_overrideCompositorVisibility = true;
|
| + else
|
| + m_overrideCompositorVisibility = false;
|
| + if (m_layerTreeView)
|
| + m_layerTreeView->setVisible(isVisible);
|
| +}
|
| +
|
| void WebViewImpl::pointerLockMouseEvent(const WebInputEvent& event)
|
| {
|
| std::unique_ptr<UserGestureIndicator> gestureIndicator;
|
|
|