зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1665068 - Preserve layers for inactive GV windows. r=jnicol,snorp
Differential Revision: https://phabricator.services.mozilla.com/D93816
This commit is contained in:
Родитель
3e1940c90e
Коммит
005c753e3f
|
@ -80,6 +80,11 @@ var ModuleManager = {
|
|||
// as docShell should be active by default, but this is not currently the
|
||||
// case so we force it here.
|
||||
aBrowser.docShellIsActive = true;
|
||||
// By default all layers are discarded when a browser is set to inactive.
|
||||
// GeckoView by default sets browsers to inactive every time they're not
|
||||
// visible. To avoid flickering when changing tabs, we preserve layers for
|
||||
// all loaded tabs.
|
||||
aBrowser.preserveLayers(true);
|
||||
|
||||
WindowEventDispatcher.registerListener(this, [
|
||||
"GeckoView:UpdateModuleState",
|
||||
|
|
|
@ -260,22 +260,6 @@ class ContentDelegateTest : BaseSessionTest() {
|
|||
})
|
||||
}
|
||||
|
||||
@WithDisplay(width = 10, height = 10)
|
||||
@Test fun paintStatusReset() {
|
||||
mainSession.loadTestPath(HELLO_HTML_PATH)
|
||||
sessionRule.waitUntilCalled(object : Callbacks.ContentDelegate {
|
||||
@AssertCalled(count = 1)
|
||||
override fun onFirstContentfulPaint(session: GeckoSession) {
|
||||
}
|
||||
})
|
||||
mainSession.setActive(false)
|
||||
sessionRule.waitUntilCalled(object : Callbacks.ContentDelegate {
|
||||
@AssertCalled(count = 1)
|
||||
override fun onPaintStatusReset(session: GeckoSession) {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@Test fun webAppManifestPref() {
|
||||
val initialState = sessionRule.runtime.settings.getWebManifestEnabled()
|
||||
val jsToRun = "document.querySelector('link[rel=manifest]').relList.supports('manifest');"
|
||||
|
|
|
@ -156,7 +156,7 @@ class ScreenshotTest : BaseSessionTest() {
|
|||
|
||||
@WithDisplay(height = SCREEN_HEIGHT, width = SCREEN_WIDTH)
|
||||
@Test
|
||||
fun capturePixelsSessionDeactivatedActivated() {
|
||||
fun capturePixelsWhileSessionDeactivated() {
|
||||
val screenshotFile = getComparisonScreenshot(SCREEN_WIDTH, SCREEN_HEIGHT)
|
||||
|
||||
sessionRule.session.loadTestPath(COLORS_HTML_PATH)
|
||||
|
@ -167,18 +167,13 @@ class ScreenshotTest : BaseSessionTest() {
|
|||
})
|
||||
|
||||
sessionRule.session.setActive(false)
|
||||
sessionRule.waitUntilCalled(object : Callbacks.ContentDelegate {
|
||||
@AssertCalled(count = 1)
|
||||
override fun onPaintStatusReset(session: GeckoSession) {
|
||||
}
|
||||
})
|
||||
|
||||
sessionRule.session.setActive(true)
|
||||
sessionRule.waitUntilCalled(object : Callbacks.ContentDelegate {
|
||||
@AssertCalled(count = 1)
|
||||
override fun onFirstContentfulPaint(session: GeckoSession) {
|
||||
}
|
||||
})
|
||||
// Deactivating the session should trigger a flush state change
|
||||
sessionRule.waitUntilCalled(object : Callbacks.ProgressDelegate {
|
||||
@AssertCalled(count = 1)
|
||||
override fun onSessionStateChange(session: GeckoSession,
|
||||
sessionState: GeckoSession.SessionState) {}
|
||||
})
|
||||
|
||||
sessionRule.display?.let {
|
||||
assertScreenshotResult(it.capturePixels(), screenshotFile)
|
||||
|
|
Загрузка…
Ссылка в новой задаче