Skip to content

Commit 677e24c

Browse files
pocmomergify[bot]
authored andcommitted
Issue mozilla-mobile#11300: EngineMiddleware: Add option for disabling TrimMemoryMiddleware
1 parent 6781fec commit 677e24c

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

components/browser/state/src/main/java/mozilla/components/browser/state/engine/EngineMiddleware.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,14 @@ object EngineMiddleware {
2828
/**
2929
* Creates a list of [Middleware] to be installed on a [BrowserStore] in order to support all
3030
* [EngineAction]s.
31+
*
32+
* @param trimMemoryAutomatically Whether a middleware should listen to LowMemoryAction and
33+
* automatically trim memory by suspending tabs.
3134
*/
3235
fun create(
3336
engine: Engine,
34-
scope: CoroutineScope = MainScope()
37+
scope: CoroutineScope = MainScope(),
38+
trimMemoryAutomatically: Boolean = true
3539
): List<Middleware<BrowserState, BrowserAction>> {
3640
return listOf(
3741
EngineDelegateMiddleware(scope),
@@ -43,8 +47,11 @@ object EngineMiddleware {
4347
TabsRemovedMiddleware(scope),
4448
SuspendMiddleware(scope),
4549
WebExtensionMiddleware(),
46-
TrimMemoryMiddleware(),
4750
CrashMiddleware()
48-
)
51+
) + if (trimMemoryAutomatically) {
52+
listOf(TrimMemoryMiddleware())
53+
} else {
54+
emptyList()
55+
}
4956
}
5057
}

components/browser/state/src/test/java/mozilla/components/browser/state/engine/EngineMiddlewareTest.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import kotlinx.coroutines.test.TestCoroutineDispatcher
1111
import kotlinx.coroutines.test.resetMain
1212
import kotlinx.coroutines.test.setMain
1313
import mozilla.components.browser.state.action.EngineAction
14+
import mozilla.components.browser.state.engine.middleware.TrimMemoryMiddleware
1415
import mozilla.components.browser.state.state.BrowserState
1516
import mozilla.components.browser.state.state.createTab
1617
import mozilla.components.browser.state.store.BrowserStore
@@ -19,6 +20,7 @@ import mozilla.components.concept.engine.EngineSession
1920
import mozilla.components.support.test.libstate.ext.waitUntilIdle
2021
import mozilla.components.support.test.mock
2122
import org.junit.After
23+
import org.junit.Assert.assertTrue
2224
import org.junit.Before
2325
import org.junit.Test
2426
import org.mockito.Mockito
@@ -72,4 +74,23 @@ class EngineMiddlewareTest {
7274

7375
verify(engine, Mockito.times(1)).createSession(false, null)
7476
}
77+
78+
@Test
79+
fun `TrimMemoryMiddleware will be added by default`() {
80+
val list = EngineMiddleware.create(
81+
engine = mock()
82+
)
83+
84+
assertTrue(list.any { it is TrimMemoryMiddleware })
85+
}
86+
87+
@Test
88+
fun `TrimMemoryMiddleware will not be added if trimMemoryAutomatically is set to false`() {
89+
val list = EngineMiddleware.create(
90+
engine = mock(),
91+
trimMemoryAutomatically = false
92+
)
93+
94+
assertTrue(list.none { it is TrimMemoryMiddleware })
95+
}
7596
}

0 commit comments

Comments
 (0)