[tbb-commits] [Git][tpo/applications/firefox-android][firefox-android-115.2.1-13.5-1] Bug 1889066 - Adds property to LoadUrlAction to determine if we should include...

richard (@richard) git at gitlab.torproject.org
Fri Jun 7 22:03:42 UTC 2024



richard pushed to branch firefox-android-115.2.1-13.5-1 at The Tor Project / Applications / firefox-android


Commits:
15bb1028 by hackademix at 2024-06-07T22:02:59+00:00
Bug 1889066 - Adds property to LoadUrlAction to determine if we should include a parentEngineSession when loading a URL r=android-reviewers,amejiamarmol [bp tb42621]

- - - - -


9 changed files:

- android-components/components/browser/state/src/main/java/mozilla/components/browser/state/action/BrowserAction.kt
- android-components/components/browser/state/src/main/java/mozilla/components/browser/state/engine/middleware/CreateEngineSessionMiddleware.kt
- android-components/components/browser/state/src/main/java/mozilla/components/browser/state/engine/middleware/EngineDelegateMiddleware.kt
- android-components/components/browser/state/src/main/java/mozilla/components/browser/state/engine/middleware/LinkingMiddleware.kt
- android-components/components/browser/state/src/test/java/mozilla/components/browser/state/engine/middleware/EngineDelegateMiddlewareTest.kt
- android-components/components/browser/state/src/test/java/mozilla/components/browser/state/engine/middleware/LinkingMiddlewareTest.kt
- android-components/components/feature/session/src/main/java/mozilla/components/feature/session/SessionUseCases.kt
- android-components/components/feature/session/src/test/java/mozilla/components/feature/session/SessionUseCasesTest.kt
- android-components/components/feature/tabs/src/main/java/mozilla/components/feature/tabs/TabsUseCases.kt


Changes:

=====================================
android-components/components/browser/state/src/main/java/mozilla/components/browser/state/action/BrowserAction.kt
=====================================
@@ -959,6 +959,7 @@ sealed class EngineAction : BrowserAction() {
         override val tabId: String,
         val skipLoading: Boolean = false,
         val followupAction: BrowserAction? = null,
+        val includeParent: Boolean = false,
     ) : EngineAction(), ActionWithTab
 
     /**
@@ -969,6 +970,7 @@ sealed class EngineAction : BrowserAction() {
         val url: String,
         val flags: EngineSession.LoadUrlFlags = EngineSession.LoadUrlFlags.none(),
         val additionalHeaders: Map<String, String>? = null,
+        val includeParent: Boolean = false,
     ) : EngineAction(), ActionWithTab
 
     /**
@@ -1075,6 +1077,7 @@ sealed class EngineAction : BrowserAction() {
         val engineSession: EngineSession,
         val timestamp: Long = Clock.elapsedRealtime(),
         val skipLoading: Boolean = false,
+        val includeParent: Boolean = false,
     ) : EngineAction(), ActionWithTab
 
     /**


=====================================
android-components/components/browser/state/src/main/java/mozilla/components/browser/state/engine/middleware/CreateEngineSessionMiddleware.kt
=====================================
@@ -68,6 +68,7 @@ internal class CreateEngineSessionMiddleware(
                 logger,
                 store,
                 action.tabId,
+                action.includeParent,
             )
 
             action.followupAction?.let {
@@ -84,6 +85,7 @@ private fun getOrCreateEngineSession(
     logger: Logger,
     store: Store<BrowserState, BrowserAction>,
     tabId: String,
+    includeParent: Boolean,
 ): EngineSession? {
     val tab = store.state.findTabOrCustomTab(tabId)
     if (tab == null) {
@@ -101,7 +103,7 @@ private fun getOrCreateEngineSession(
         return it
     }
 
-    return createEngineSession(engine, logger, store, tab)
+    return createEngineSession(engine, logger, store, tab, includeParent)
 }
 
 @MainThread
@@ -110,6 +112,7 @@ private fun createEngineSession(
     logger: Logger,
     store: Store<BrowserState, BrowserAction>,
     tab: SessionState,
+    includeParent: Boolean,
 ): EngineSession {
     val engineSession = engine.createSession(tab.content.private, tab.contextId)
     logger.debug("Created engine session for tab ${tab.id}")
@@ -126,6 +129,7 @@ private fun createEngineSession(
             tab.id,
             engineSession,
             skipLoading = skipLoading,
+            includeParent = includeParent,
         ),
     )
 


=====================================
android-components/components/browser/state/src/main/java/mozilla/components/browser/state/engine/middleware/EngineDelegateMiddleware.kt
=====================================
@@ -60,11 +60,11 @@ internal class EngineDelegateMiddleware(
             // session is already pointing to. Creating an EngineSession will do exactly
             // that in the linking step. So let's do that. Otherwise we would load the URL
             // twice.
-            store.dispatch(EngineAction.CreateEngineSessionAction(action.tabId))
+            store.dispatch(EngineAction.CreateEngineSessionAction(action.tabId, includeParent = action.includeParent))
             return at launch
         }
 
-        val parentEngineSession = if (tab is TabSessionState) {
+        val parentEngineSession = if (action.includeParent && tab is TabSessionState) {
             tab.parentId?.let { store.state.findTabOrCustomTab(it)?.engineState?.engineSession }
         } else {
             null


=====================================
android-components/components/browser/state/src/main/java/mozilla/components/browser/state/engine/middleware/LinkingMiddleware.kt
=====================================
@@ -37,7 +37,13 @@ internal class LinkingMiddleware(
         when (action) {
             is TabListAction.AddTabAction -> {
                 if (action.tab.engineState.engineSession != null && action.tab.engineState.engineObserver == null) {
-                    engineObserver = link(context, action.tab.engineState.engineSession, action.tab)
+                    engineObserver = link(
+                        context,
+                        action.tab.engineState.engineSession,
+                        action.tab,
+                        skipLoading = true,
+                        includeParent = false,
+                    )
                 }
             }
             is TabListAction.AddMultipleTabsAction -> {
@@ -58,7 +64,7 @@ internal class LinkingMiddleware(
         when (action) {
             is EngineAction.LinkEngineSessionAction -> {
                 context.state.findTabOrCustomTab(action.tabId)?.let { tab ->
-                    engineObserver = link(context, action.engineSession, tab, action.skipLoading)
+                    engineObserver = link(context, action.engineSession, tab, action.skipLoading, action.includeParent)
                 }
             }
             else -> {
@@ -77,6 +83,7 @@ internal class LinkingMiddleware(
         engineSession: EngineSession,
         tab: SessionState,
         skipLoading: Boolean = true,
+        includeParent: Boolean,
     ): Pair<String, EngineObserver> {
         val observer = EngineObserver(tab.id, context.store)
         engineSession.register(observer)
@@ -91,7 +98,7 @@ internal class LinkingMiddleware(
             // tab, but opened by an extension e.g. via browser.tabs.update.
             performLoadOnMainThread(engineSession, tab.content.url, loadFlags = tab.engineState.initialLoadFlags)
         } else {
-            val parentEngineSession = if (tab is TabSessionState) {
+            val parentEngineSession = if (includeParent && tab is TabSessionState) {
                 tab.parentId?.let { context.state.findTabOrCustomTab(it)?.engineState?.engineSession }
             } else {
                 null


=====================================
android-components/components/browser/state/src/test/java/mozilla/components/browser/state/engine/middleware/EngineDelegateMiddlewareTest.kt
=====================================
@@ -258,6 +258,7 @@ class EngineDelegateMiddlewareTest {
             EngineAction.LoadUrlAction(
                 "test-tab",
                 "https://www.firefox.com",
+                includeParent = true,
             ),
         ).joinBlocking()
 


=====================================
android-components/components/browser/state/src/test/java/mozilla/components/browser/state/engine/middleware/LinkingMiddlewareTest.kt
=====================================
@@ -91,7 +91,9 @@ class LinkingMiddlewareTest {
         store.dispatch(EngineAction.LinkEngineSessionAction(parent.id, parentEngineSession)).joinBlocking()
 
         val childEngineSession: EngineSession = mock()
-        store.dispatch(EngineAction.LinkEngineSessionAction(child.id, childEngineSession)).joinBlocking()
+        store.dispatch(
+            EngineAction.LinkEngineSessionAction(child.id, childEngineSession, includeParent = true),
+        ).joinBlocking()
 
         dispatcher.scheduler.advanceUntilIdle()
 


=====================================
android-components/components/feature/session/src/main/java/mozilla/components/feature/session/SessionUseCases.kt
=====================================
@@ -86,14 +86,8 @@ class SessionUseCases(
             // If we already have an engine session load Url directly to prevent
             // context switches.
             if (engineSession != null) {
-                val parentEngineSession = if (tab is TabSessionState) {
-                    tab.parentId?.let { store.state.findTabOrCustomTab(it)?.engineState?.engineSession }
-                } else {
-                    null
-                }
                 engineSession.loadUrl(
                     url = url,
-                    parent = parentEngineSession,
                     flags = flags,
                     additionalHeaders = additionalHeaders,
                 )


=====================================
android-components/components/feature/session/src/test/java/mozilla/components/feature/session/SessionUseCasesTest.kt
=====================================
@@ -128,7 +128,6 @@ class SessionUseCasesTest {
         middleware.assertNotDispatched(EngineAction.LoadUrlAction::class)
         verify(childEngineSession).loadUrl(
             url = "https://www.mozilla.org/en-CA/firefox/browsers/mobile/",
-            parent = engineSession,
         )
         middleware.assertLastAction(EngineAction.OptimizedLoadUrlTriggeredAction::class) { action ->
             assertEquals("bugzilla", action.tabId)


=====================================
android-components/components/feature/tabs/src/main/java/mozilla/components/feature/tabs/TabsUseCases.kt
=====================================
@@ -189,6 +189,7 @@ class TabsUseCases(
                         tab.id,
                         url,
                         flags,
+                        includeParent = true,
                     ),
                 )
             }
@@ -259,6 +260,7 @@ class TabsUseCases(
                         tab.id,
                         url,
                         flags,
+                        includeParent = true,
                     ),
                 )
             }
@@ -477,6 +479,7 @@ class TabsUseCases(
                         tab.id,
                         url,
                         flags,
+                        includeParent = true,
                     ),
                 )
                 tab.id



View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/15bb1028c8e9e536102db5691cd42ff97564bba0

-- 
This project does not include diff previews in email notifications.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/15bb1028c8e9e536102db5691cd42ff97564bba0
You're receiving this email because of your account on gitlab.torproject.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.torproject.org/pipermail/tbb-commits/attachments/20240607/d984ab5d/attachment-0001.htm>


More information about the tbb-commits mailing list