Loading buildSrc/src/main/java/Gecko.kt +1 −1 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ internal object GeckoVersions { /** * GeckoView Beta Version. */ const val beta_version = "76.0.20200424000239" const val beta_version = "77.0.20200504222419" /** * GeckoView Release Version. Loading components/browser/engine-gecko-beta/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineSession.kt +16 −2 Original line number Diff line number Diff line Loading @@ -5,6 +5,8 @@ package mozilla.components.browser.engine.gecko import android.annotation.SuppressLint import android.os.Build import android.view.WindowManager import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job Loading Loading @@ -354,6 +356,8 @@ class GeckoEngineSession( if (initialLoad && url == ABOUT_BLANK) { return } currentUrl = url initialLoad = false isIgnoredForTrackingProtection { ignored -> notifyObservers { Loading Loading @@ -477,8 +481,6 @@ class GeckoEngineSession( } override fun onPageStart(session: GeckoSession, url: String) { currentUrl = url notifyObservers { onProgress(PROGRESS_START) onLoadingStateChange(true) Loading Loading @@ -681,6 +683,18 @@ class GeckoEngineSession( notifyObservers { onWebAppManifestLoaded(parsed.manifest) } } } override fun onMetaViewportFitChange(session: GeckoSession, viewportFit: String) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { val layoutInDisplayCutoutMode = when (viewportFit) { "cover" -> WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES "contain" -> WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER else -> WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT } notifyObservers { onMetaViewportFitChanged(layoutInDisplayCutoutMode) } } } } private fun createContentBlockingDelegate() = object : ContentBlocking.Delegate { Loading components/browser/engine-gecko-beta/src/test/java/mozilla/components/browser/engine/gecko/GeckoEngineSessionTest.kt +57 −5 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ package mozilla.components.browser.engine.gecko import android.content.Intent import android.os.Handler import android.os.Message import android.view.WindowManager import androidx.test.ext.junit.runners.AndroidJUnit4 import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runBlockingTest Loading Loading @@ -52,6 +53,7 @@ import org.mockito.ArgumentMatchers.anyInt import org.mockito.ArgumentMatchers.anyList import org.mockito.ArgumentMatchers.anyString import org.mockito.Mockito.never import org.mockito.Mockito.reset import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.verifyZeroInteractions Loading Loading @@ -566,7 +568,7 @@ class GeckoEngineSessionTest { } @Test fun `keeps track of current url via onPageStart events`() { fun `do not keep track of current url via onPageStart events`() { val engineSession = GeckoEngineSession(mock(), geckoSessionProvider = geckoSessionProvider) Loading @@ -574,20 +576,43 @@ class GeckoEngineSessionTest { assertNull(engineSession.currentUrl) progressDelegate.value.onPageStart(geckoSession, "https://www.mozilla.org") assertEquals("https://www.mozilla.org", engineSession.currentUrl) assertNull(engineSession.currentUrl) progressDelegate.value.onPageStart(geckoSession, "https://www.firefox.com") assertNull(engineSession.currentUrl) } @Test fun `keeps track of current url via onLocationChange events`() { val mockedContentBlockingController = mock<ContentBlockingController>() val engineSession = GeckoEngineSession(runtime, geckoSessionProvider = geckoSessionProvider) var geckoResult = GeckoResult<Boolean?>() whenever(runtime.contentBlockingController).thenReturn(mockedContentBlockingController) whenever(mockedContentBlockingController.checkException(any())).thenReturn(geckoResult) captureDelegates() geckoResult.complete(true) assertNull(engineSession.currentUrl) navigationDelegate.value.onLocationChange(geckoSession, "https://www.mozilla.org") assertEquals("https://www.mozilla.org", engineSession.currentUrl) navigationDelegate.value.onLocationChange(geckoSession, "https://www.firefox.com") assertEquals("https://www.firefox.com", engineSession.currentUrl) } @Test fun `notifies configured history delegate of title changes`() = runBlockingTest { val engineSession = GeckoEngineSession(mock(), geckoSessionProvider = geckoSessionProvider, val mockedContentBlockingController = mock<ContentBlockingController>() val engineSession = GeckoEngineSession(runtime, geckoSessionProvider = geckoSessionProvider, context = coroutineContext) val historyTrackingDelegate: HistoryTrackingDelegate = mock() var geckoResult = GeckoResult<Boolean?>() whenever(runtime.contentBlockingController).thenReturn(mockedContentBlockingController) whenever(mockedContentBlockingController.checkException(any())).thenReturn(geckoResult) captureDelegates() geckoResult.complete(true) // Nothing breaks if history delegate isn't configured. contentDelegate.value.onTitleChange(geckoSession, "Hello World!") Loading @@ -598,7 +623,7 @@ class GeckoEngineSessionTest { verify(historyTrackingDelegate, never()).onTitleChanged(anyString(), anyString()) // This sets the currentUrl. progressDelegate.value.onPageStart(geckoSession, "https://www.mozilla.com") navigationDelegate.value.onLocationChange(geckoSession, "https://www.mozilla.com") contentDelegate.value.onTitleChange(geckoSession, "Hello World!") verify(historyTrackingDelegate).onTitleChanged(eq("https://www.mozilla.com"), eq("Hello World!")) Loading Loading @@ -1748,6 +1773,33 @@ class GeckoEngineSessionTest { verify(geckoSession).exitFullScreen() } @Test fun viewportFitChangeTranslateValuesCorrectly() { val engineSession = GeckoEngineSession(mock(), geckoSessionProvider = geckoSessionProvider) val observer: EngineSession.Observer = mock() // Verify the call to the observer. engineSession.register(observer) captureDelegates() contentDelegate.value.onMetaViewportFitChange(geckoSession, "test") verify(observer).onMetaViewportFitChanged(WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT) reset(observer) contentDelegate.value.onMetaViewportFitChange(geckoSession, "auto") verify(observer).onMetaViewportFitChanged(WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT) reset(observer) contentDelegate.value.onMetaViewportFitChange(geckoSession, "cover") verify(observer).onMetaViewportFitChanged(WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES) reset(observer) contentDelegate.value.onMetaViewportFitChange(geckoSession, "contain") verify(observer).onMetaViewportFitChanged(WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER) reset(observer) } @Test fun clearData() { val engineSession = GeckoEngineSession(runtime, geckoSessionProvider = geckoSessionProvider) Loading components/browser/engine-gecko-beta/src/test/java/mozilla/components/browser/engine/gecko/media/GeckoMediaTest.kt +0 −20 Original line number Diff line number Diff line Loading @@ -123,26 +123,6 @@ class GeckoMediaTest { assertEquals(-1.0, media.metadata.duration, 0.0001) } @Test fun `GeckoMedia exposes Volume`() { val mediaElement: MediaElement = mock() val media = GeckoMedia(mediaElement) val captor = argumentCaptor<MediaElement.Delegate>() verify(mediaElement).delegate = captor.capture() assertEquals(media.volume.muted, false) val delegate = captor.value delegate.onVolumeChange(mediaElement, 1.0, true) assertEquals(true, media.volume.muted) delegate.onVolumeChange(mediaElement, 1.0, false) assertEquals(false, media.volume.muted) } @Test fun `GeckoMedia notifies observer when metadata changes`() { val media = GeckoMedia(mock()) Loading components/browser/engine-gecko-beta/src/test/java/mozilla/components/browser/engine/gecko/webextension/GeckoWebExtensionTest.kt +4 −4 Original line number Diff line number Diff line Loading @@ -420,7 +420,7 @@ class GeckoWebExtensionTest { assertNull(extensionWithoutMetadata.getMetadata()) val metaDataBundle = GeckoBundle() metaDataBundle.putStringArray("permissions", arrayOf("p1", "p2")) metaDataBundle.putStringArray("promptPermissions", arrayOf("p1", "p2")) metaDataBundle.putStringArray("origins", arrayOf("o1", "o2")) metaDataBundle.putString("description", "desc") metaDataBundle.putString("version", "1.0") Loading Loading @@ -469,7 +469,7 @@ class GeckoWebExtensionTest { assertNull(extensionWithoutMetadata.getMetadata()) val metaDataBundle = GeckoBundle() metaDataBundle.putStringArray("permissions", arrayOf("p1", "p2")) metaDataBundle.putStringArray("promptPermissions", arrayOf("p1", "p2")) metaDataBundle.putStringArray("origins", arrayOf("o1", "o2")) metaDataBundle.putString("version", "1.0") val bundle = GeckoBundle() Loading components/browser/engine-gecko-beta/src/main/java/mozilla/components/browser/engine/gecko/media/GeckoMedia.kt +2 −2 File changed.Contains only whitespace changes. Show changes Loading
buildSrc/src/main/java/Gecko.kt +1 −1 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ internal object GeckoVersions { /** * GeckoView Beta Version. */ const val beta_version = "76.0.20200424000239" const val beta_version = "77.0.20200504222419" /** * GeckoView Release Version. Loading
components/browser/engine-gecko-beta/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineSession.kt +16 −2 Original line number Diff line number Diff line Loading @@ -5,6 +5,8 @@ package mozilla.components.browser.engine.gecko import android.annotation.SuppressLint import android.os.Build import android.view.WindowManager import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job Loading Loading @@ -354,6 +356,8 @@ class GeckoEngineSession( if (initialLoad && url == ABOUT_BLANK) { return } currentUrl = url initialLoad = false isIgnoredForTrackingProtection { ignored -> notifyObservers { Loading Loading @@ -477,8 +481,6 @@ class GeckoEngineSession( } override fun onPageStart(session: GeckoSession, url: String) { currentUrl = url notifyObservers { onProgress(PROGRESS_START) onLoadingStateChange(true) Loading Loading @@ -681,6 +683,18 @@ class GeckoEngineSession( notifyObservers { onWebAppManifestLoaded(parsed.manifest) } } } override fun onMetaViewportFitChange(session: GeckoSession, viewportFit: String) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { val layoutInDisplayCutoutMode = when (viewportFit) { "cover" -> WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES "contain" -> WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER else -> WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT } notifyObservers { onMetaViewportFitChanged(layoutInDisplayCutoutMode) } } } } private fun createContentBlockingDelegate() = object : ContentBlocking.Delegate { Loading
components/browser/engine-gecko-beta/src/test/java/mozilla/components/browser/engine/gecko/GeckoEngineSessionTest.kt +57 −5 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ package mozilla.components.browser.engine.gecko import android.content.Intent import android.os.Handler import android.os.Message import android.view.WindowManager import androidx.test.ext.junit.runners.AndroidJUnit4 import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runBlockingTest Loading Loading @@ -52,6 +53,7 @@ import org.mockito.ArgumentMatchers.anyInt import org.mockito.ArgumentMatchers.anyList import org.mockito.ArgumentMatchers.anyString import org.mockito.Mockito.never import org.mockito.Mockito.reset import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.verifyZeroInteractions Loading Loading @@ -566,7 +568,7 @@ class GeckoEngineSessionTest { } @Test fun `keeps track of current url via onPageStart events`() { fun `do not keep track of current url via onPageStart events`() { val engineSession = GeckoEngineSession(mock(), geckoSessionProvider = geckoSessionProvider) Loading @@ -574,20 +576,43 @@ class GeckoEngineSessionTest { assertNull(engineSession.currentUrl) progressDelegate.value.onPageStart(geckoSession, "https://www.mozilla.org") assertEquals("https://www.mozilla.org", engineSession.currentUrl) assertNull(engineSession.currentUrl) progressDelegate.value.onPageStart(geckoSession, "https://www.firefox.com") assertNull(engineSession.currentUrl) } @Test fun `keeps track of current url via onLocationChange events`() { val mockedContentBlockingController = mock<ContentBlockingController>() val engineSession = GeckoEngineSession(runtime, geckoSessionProvider = geckoSessionProvider) var geckoResult = GeckoResult<Boolean?>() whenever(runtime.contentBlockingController).thenReturn(mockedContentBlockingController) whenever(mockedContentBlockingController.checkException(any())).thenReturn(geckoResult) captureDelegates() geckoResult.complete(true) assertNull(engineSession.currentUrl) navigationDelegate.value.onLocationChange(geckoSession, "https://www.mozilla.org") assertEquals("https://www.mozilla.org", engineSession.currentUrl) navigationDelegate.value.onLocationChange(geckoSession, "https://www.firefox.com") assertEquals("https://www.firefox.com", engineSession.currentUrl) } @Test fun `notifies configured history delegate of title changes`() = runBlockingTest { val engineSession = GeckoEngineSession(mock(), geckoSessionProvider = geckoSessionProvider, val mockedContentBlockingController = mock<ContentBlockingController>() val engineSession = GeckoEngineSession(runtime, geckoSessionProvider = geckoSessionProvider, context = coroutineContext) val historyTrackingDelegate: HistoryTrackingDelegate = mock() var geckoResult = GeckoResult<Boolean?>() whenever(runtime.contentBlockingController).thenReturn(mockedContentBlockingController) whenever(mockedContentBlockingController.checkException(any())).thenReturn(geckoResult) captureDelegates() geckoResult.complete(true) // Nothing breaks if history delegate isn't configured. contentDelegate.value.onTitleChange(geckoSession, "Hello World!") Loading @@ -598,7 +623,7 @@ class GeckoEngineSessionTest { verify(historyTrackingDelegate, never()).onTitleChanged(anyString(), anyString()) // This sets the currentUrl. progressDelegate.value.onPageStart(geckoSession, "https://www.mozilla.com") navigationDelegate.value.onLocationChange(geckoSession, "https://www.mozilla.com") contentDelegate.value.onTitleChange(geckoSession, "Hello World!") verify(historyTrackingDelegate).onTitleChanged(eq("https://www.mozilla.com"), eq("Hello World!")) Loading Loading @@ -1748,6 +1773,33 @@ class GeckoEngineSessionTest { verify(geckoSession).exitFullScreen() } @Test fun viewportFitChangeTranslateValuesCorrectly() { val engineSession = GeckoEngineSession(mock(), geckoSessionProvider = geckoSessionProvider) val observer: EngineSession.Observer = mock() // Verify the call to the observer. engineSession.register(observer) captureDelegates() contentDelegate.value.onMetaViewportFitChange(geckoSession, "test") verify(observer).onMetaViewportFitChanged(WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT) reset(observer) contentDelegate.value.onMetaViewportFitChange(geckoSession, "auto") verify(observer).onMetaViewportFitChanged(WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT) reset(observer) contentDelegate.value.onMetaViewportFitChange(geckoSession, "cover") verify(observer).onMetaViewportFitChanged(WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES) reset(observer) contentDelegate.value.onMetaViewportFitChange(geckoSession, "contain") verify(observer).onMetaViewportFitChanged(WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER) reset(observer) } @Test fun clearData() { val engineSession = GeckoEngineSession(runtime, geckoSessionProvider = geckoSessionProvider) Loading
components/browser/engine-gecko-beta/src/test/java/mozilla/components/browser/engine/gecko/media/GeckoMediaTest.kt +0 −20 Original line number Diff line number Diff line Loading @@ -123,26 +123,6 @@ class GeckoMediaTest { assertEquals(-1.0, media.metadata.duration, 0.0001) } @Test fun `GeckoMedia exposes Volume`() { val mediaElement: MediaElement = mock() val media = GeckoMedia(mediaElement) val captor = argumentCaptor<MediaElement.Delegate>() verify(mediaElement).delegate = captor.capture() assertEquals(media.volume.muted, false) val delegate = captor.value delegate.onVolumeChange(mediaElement, 1.0, true) assertEquals(true, media.volume.muted) delegate.onVolumeChange(mediaElement, 1.0, false) assertEquals(false, media.volume.muted) } @Test fun `GeckoMedia notifies observer when metadata changes`() { val media = GeckoMedia(mock()) Loading
components/browser/engine-gecko-beta/src/test/java/mozilla/components/browser/engine/gecko/webextension/GeckoWebExtensionTest.kt +4 −4 Original line number Diff line number Diff line Loading @@ -420,7 +420,7 @@ class GeckoWebExtensionTest { assertNull(extensionWithoutMetadata.getMetadata()) val metaDataBundle = GeckoBundle() metaDataBundle.putStringArray("permissions", arrayOf("p1", "p2")) metaDataBundle.putStringArray("promptPermissions", arrayOf("p1", "p2")) metaDataBundle.putStringArray("origins", arrayOf("o1", "o2")) metaDataBundle.putString("description", "desc") metaDataBundle.putString("version", "1.0") Loading Loading @@ -469,7 +469,7 @@ class GeckoWebExtensionTest { assertNull(extensionWithoutMetadata.getMetadata()) val metaDataBundle = GeckoBundle() metaDataBundle.putStringArray("permissions", arrayOf("p1", "p2")) metaDataBundle.putStringArray("promptPermissions", arrayOf("p1", "p2")) metaDataBundle.putStringArray("origins", arrayOf("o1", "o2")) metaDataBundle.putString("version", "1.0") val bundle = GeckoBundle() Loading
components/browser/engine-gecko-beta/src/main/java/mozilla/components/browser/engine/gecko/media/GeckoMedia.kt +2 −2 File changed.Contains only whitespace changes. Show changes