Skip to content

Commit

Permalink
Closes mozilla-mobile#8757 - Expose CompositorController ClearColor a…
Browse files Browse the repository at this point in the history
…s Setting
  • Loading branch information
ekager committed Oct 20, 2020
1 parent 0682086 commit e4195cc
Show file tree
Hide file tree
Showing 15 changed files with 111 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -559,6 +559,10 @@ class GeckoEngine(
get() = defaultSettings?.suspendMediaWhenInactive ?: false
set(value) { defaultSettings?.suspendMediaWhenInactive = value }

override var clearColor: Int?
get() = defaultSettings?.clearColor
set(value) { defaultSettings?.clearColor = value }

override var fontInflationEnabled: Boolean?
get() = runtime.settings.fontInflationEnabled
set(value) {
Expand Down Expand Up @@ -609,6 +613,7 @@ class GeckoEngine(
this.fontSizeFactor = it.fontSizeFactor
this.forceUserScalableContent = it.forceUserScalableContent
this.loginAutofillEnabled = it.loginAutofillEnabled
this.clearColor = it.clearColor
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1036,6 +1036,7 @@ class GeckoEngineSession(
defaultSettings?.testingModeEnabled?.let { geckoSession.settings.fullAccessibilityTree = it }
defaultSettings?.userAgentString?.let { geckoSession.settings.userAgentOverride = it }
defaultSettings?.suspendMediaWhenInactive?.let { geckoSession.settings.suspendMediaWhenInactive = it }
defaultSettings?.clearColor?.let { geckoSession.compositorController.clearColor = it }

if (shouldOpen) {
geckoSession.open(runtime)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
package mozilla.components.browser.engine.gecko

import android.content.Intent
import android.graphics.Color
import android.os.Handler
import android.os.Message
import android.view.WindowManager
Expand Down Expand Up @@ -1315,6 +1316,25 @@ class GeckoEngineSessionTest {
verify(geckoSession.settings).suspendMediaWhenInactive = true
}

@Test
fun settingClearColorDefault() {
whenever(geckoSession.compositorController).thenReturn(mock())

GeckoEngineSession(runtime, geckoSessionProvider = geckoSessionProvider)

verify(geckoSession.compositorController, never()).clearColor = anyInt()

GeckoEngineSession(runtime,
geckoSessionProvider = geckoSessionProvider,
defaultSettings = DefaultSettings())
verify(geckoSession.compositorController, never()).clearColor = anyInt()

GeckoEngineSession(runtime,
geckoSessionProvider = geckoSessionProvider,
defaultSettings = DefaultSettings(clearColor = Color.BLUE))
verify(geckoSession.compositorController).clearColor = Color.BLUE
}

@Test
fun unsupportedSettings() {
val settings = GeckoEngineSession(runtime,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package mozilla.components.browser.engine.gecko

import android.app.Activity
import android.content.Context
import android.graphics.Color
import androidx.test.ext.junit.runners.AndroidJUnit4
import mozilla.components.browser.engine.gecko.ext.getAntiTrackingPolicy
import mozilla.components.browser.engine.gecko.mediaquery.toGeckoValue
Expand Down Expand Up @@ -258,6 +259,10 @@ class GeckoEngineTest {
engine.settings.suspendMediaWhenInactive = true
assertEquals(true, engine.settings.suspendMediaWhenInactive)

assertNull(engine.settings.clearColor)
engine.settings.clearColor = Color.BLUE
assertEquals(Color.BLUE, engine.settings.clearColor)

// Specifying no ua-string default should result in GeckoView's default.
assertEquals(GeckoSession.getDefaultUserAgent(), engine.settings.userAgentString)
// It also should be possible to read and set a new default.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -559,6 +559,10 @@ class GeckoEngine(
get() = defaultSettings?.suspendMediaWhenInactive ?: false
set(value) { defaultSettings?.suspendMediaWhenInactive = value }

override var clearColor: Int?
get() = defaultSettings?.clearColor
set(value) { defaultSettings?.clearColor = value }

override var fontInflationEnabled: Boolean?
get() = runtime.settings.fontInflationEnabled
set(value) {
Expand Down Expand Up @@ -608,6 +612,7 @@ class GeckoEngine(
this.fontInflationEnabled = it.fontInflationEnabled
this.fontSizeFactor = it.fontSizeFactor
this.forceUserScalableContent = it.forceUserScalableContent
this.clearColor = it.clearColor
this.loginAutofillEnabled = it.loginAutofillEnabled
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1036,6 +1036,7 @@ class GeckoEngineSession(
defaultSettings?.testingModeEnabled?.let { geckoSession.settings.fullAccessibilityTree = it }
defaultSettings?.userAgentString?.let { geckoSession.settings.userAgentOverride = it }
defaultSettings?.suspendMediaWhenInactive?.let { geckoSession.settings.suspendMediaWhenInactive = it }
defaultSettings?.clearColor?.let { geckoSession.compositorController.clearColor = it }

if (shouldOpen) {
geckoSession.open(runtime)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
package mozilla.components.browser.engine.gecko

import android.content.Intent
import android.graphics.Color
import android.os.Handler
import android.os.Message
import android.view.WindowManager
Expand Down Expand Up @@ -1315,6 +1316,25 @@ class GeckoEngineSessionTest {
verify(geckoSession.settings).suspendMediaWhenInactive = true
}

@Test
fun settingClearColorDefault() {
whenever(geckoSession.compositorController).thenReturn(mock())

GeckoEngineSession(runtime, geckoSessionProvider = geckoSessionProvider)

verify(geckoSession.compositorController, never()).clearColor = anyInt()

GeckoEngineSession(runtime,
geckoSessionProvider = geckoSessionProvider,
defaultSettings = DefaultSettings())
verify(geckoSession.compositorController, never()).clearColor = anyInt()

GeckoEngineSession(runtime,
geckoSessionProvider = geckoSessionProvider,
defaultSettings = DefaultSettings(clearColor = Color.BLUE))
verify(geckoSession.compositorController).clearColor = Color.BLUE
}

@Test
fun unsupportedSettings() {
val settings = GeckoEngineSession(runtime,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package mozilla.components.browser.engine.gecko

import android.app.Activity
import android.content.Context
import android.graphics.Color
import androidx.test.ext.junit.runners.AndroidJUnit4
import mozilla.components.browser.engine.gecko.ext.getAntiTrackingPolicy
import mozilla.components.browser.engine.gecko.mediaquery.toGeckoValue
Expand Down Expand Up @@ -258,6 +259,10 @@ class GeckoEngineTest {
engine.settings.suspendMediaWhenInactive = true
assertEquals(true, engine.settings.suspendMediaWhenInactive)

assertNull(engine.settings.clearColor)
engine.settings.clearColor = Color.BLUE
assertEquals(Color.BLUE, engine.settings.clearColor)

// Specifying no ua-string default should result in GeckoView's default.
assertEquals(GeckoSession.getDefaultUserAgent(), engine.settings.userAgentString)
// It also should be possible to read and set a new default.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -566,6 +566,10 @@ class GeckoEngine(
get() = defaultSettings?.suspendMediaWhenInactive ?: false
set(value) { defaultSettings?.suspendMediaWhenInactive = value }

override var clearColor: Int?
get() = defaultSettings?.clearColor
set(value) { defaultSettings?.clearColor = value }

override var fontInflationEnabled: Boolean?
get() = runtime.settings.fontInflationEnabled
set(value) {
Expand Down Expand Up @@ -616,6 +620,7 @@ class GeckoEngine(
this.fontSizeFactor = it.fontSizeFactor
this.forceUserScalableContent = it.forceUserScalableContent
this.loginAutofillEnabled = it.loginAutofillEnabled
this.clearColor = it.clearColor
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -980,6 +980,7 @@ class GeckoEngineSession(
defaultSettings?.testingModeEnabled?.let { geckoSession.settings.fullAccessibilityTree = it }
defaultSettings?.userAgentString?.let { geckoSession.settings.userAgentOverride = it }
defaultSettings?.suspendMediaWhenInactive?.let { geckoSession.settings.suspendMediaWhenInactive = it }
defaultSettings?.clearColor?.let { geckoSession.compositorController.clearColor = it }

if (shouldOpen) {
geckoSession.open(runtime)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
package mozilla.components.browser.engine.gecko

import android.content.Intent
import android.graphics.Color
import android.os.Handler
import android.os.Message
import android.view.WindowManager
Expand Down Expand Up @@ -1282,6 +1283,25 @@ class GeckoEngineSessionTest {
verify(geckoSession.settings).suspendMediaWhenInactive = true
}

@Test
fun settingClearColorDefault() {
whenever(geckoSession.compositorController).thenReturn(mock())

GeckoEngineSession(runtime, geckoSessionProvider = geckoSessionProvider)

verify(geckoSession.compositorController, never()).clearColor = anyInt()

GeckoEngineSession(runtime,
geckoSessionProvider = geckoSessionProvider,
defaultSettings = DefaultSettings())
verify(geckoSession.compositorController, never()).clearColor = anyInt()

GeckoEngineSession(runtime,
geckoSessionProvider = geckoSessionProvider,
defaultSettings = DefaultSettings(clearColor = Color.BLUE))
verify(geckoSession.compositorController).clearColor = Color.BLUE
}

@Test
fun unsupportedSettings() {
val settings = GeckoEngineSession(runtime,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package mozilla.components.browser.engine.gecko

import android.app.Activity
import android.content.Context
import android.graphics.Color
import androidx.test.ext.junit.runners.AndroidJUnit4
import mozilla.components.browser.engine.gecko.ext.getAntiTrackingPolicy
import mozilla.components.browser.engine.gecko.mediaquery.toGeckoValue
Expand Down Expand Up @@ -259,6 +260,10 @@ class GeckoEngineTest {
engine.settings.suspendMediaWhenInactive = true
assertEquals(true, engine.settings.suspendMediaWhenInactive)

assertNull(engine.settings.clearColor)
engine.settings.clearColor = Color.BLUE
assertEquals(Color.BLUE, engine.settings.clearColor)

// Specifying no ua-string default should result in GeckoView's default.
assertEquals(GeckoSession.getDefaultUserAgent(), engine.settings.userAgentString)
// It also should be possible to read and set a new default.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,11 @@ abstract class Settings {
* Setting to force the ability to scale the content
*/
open var forceUserScalableContent: Boolean by UnsupportedSetting()

/**
* Setting to control the clear color while drawing.
*/
open var clearColor: Int? by UnsupportedSetting()
}

/**
Expand Down Expand Up @@ -208,7 +213,8 @@ data class DefaultSettings(
override var fontInflationEnabled: Boolean? = null,
override var fontSizeFactor: Float? = null,
override var forceUserScalableContent: Boolean = false,
override var loginAutofillEnabled: Boolean = false
override var loginAutofillEnabled: Boolean = false,
override var clearColor: Int? = null
) : Settings()

class UnsupportedSetting<T> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

package mozilla.components.concept.engine

import android.graphics.Color
import mozilla.components.concept.engine.EngineSession.TrackingProtectionPolicy
import mozilla.components.concept.engine.history.HistoryTrackingDelegate
import mozilla.components.concept.engine.mediaquery.PreferredColorScheme
Expand Down Expand Up @@ -80,7 +81,9 @@ class SettingsTest {
{ settings.forceUserScalableContent },
{ settings.forceUserScalableContent = true },
{ settings.loginAutofillEnabled },
{ settings.loginAutofillEnabled = false }
{ settings.loginAutofillEnabled = false },
{ settings.clearColor },
{ settings.clearColor = Color.BLUE }
)
}

Expand Down Expand Up @@ -121,6 +124,7 @@ class SettingsTest {
assertNull(settings.fontSizeFactor)
assertFalse(settings.forceUserScalableContent)
assertFalse(settings.loginAutofillEnabled)
assertNull(settings.clearColor)

val interceptor: RequestInterceptor = mock()
val historyTrackingDelegate: HistoryTrackingDelegate = mock()
Expand Down Expand Up @@ -154,7 +158,8 @@ class SettingsTest {
fontInflationEnabled = false,
fontSizeFactor = 2.0F,
forceUserScalableContent = true,
loginAutofillEnabled = true
loginAutofillEnabled = true,
clearColor = Color.BLUE
)

assertFalse(defaultSettings.domStorageEnabled)
Expand Down Expand Up @@ -186,5 +191,6 @@ class SettingsTest {
assertEquals(2.0F, defaultSettings.fontSizeFactor)
assertTrue(defaultSettings.forceUserScalableContent)
assertTrue(defaultSettings.loginAutofillEnabled)
assertEquals(Color.BLUE, defaultSettings.clearColor)
}
}
3 changes: 3 additions & 0 deletions docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ permalink: /changelog/
* [Gecko](https://github.com/mozilla-mobile/android-components/blob/master/buildSrc/src/main/java/Gecko.kt)
* [Configuration](https://github.com/mozilla-mobile/android-components/blob/master/.config.yml)

* **browser-engine-gecko**, **browser-engine-gecko-beta**, **browser-engine-gecko-nightly**
* Exposes GeckoView `CompositorController#ClearColor` as Setting

# 63.0.0

* [Commits](https://github.com/mozilla-mobile/android-components/compare/v62.0.0...v63.0.0)
Expand Down

0 comments on commit e4195cc

Please sign in to comment.