Bug 1665068 - Preserve layers for inactive GV windows. r=jnicol,snorp

Differential Revision: https://phabricator.services.mozilla.com/D93816
This commit is contained in:
Agi Sferro 2020-10-19 18:28:49 +00:00
Родитель 3e1940c90e
Коммит 005c753e3f
3 изменённых файлов: 12 добавлений и 28 удалений

Просмотреть файл

@ -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)