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

Unified Diff: third_party/WebKit/Source/web/WebViewImpl.cpp

Issue 1991273003: Fire visibilityChange event on out-of-process iframes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments 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 side-by-side diff with in-line comments
Download patch
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;
« no previous file with comments | « third_party/WebKit/Source/web/WebViewImpl.h ('k') | third_party/WebKit/Source/web/tests/ChromeClientImplTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698