diff options
Diffstat (limited to 'mobile/android/components/geckoview')
4 files changed, 72 insertions, 0 deletions
diff --git a/mobile/android/components/geckoview/GeckoViewStartup.sys.mjs b/mobile/android/components/geckoview/GeckoViewStartup.sys.mjs index e8114b7581..4483941f8e 100644 --- a/mobile/android/components/geckoview/GeckoViewStartup.sys.mjs +++ b/mobile/android/components/geckoview/GeckoViewStartup.sys.mjs @@ -243,6 +243,10 @@ export class GeckoViewStartup { }); ChromeUtils.importESModule( + "resource://gre/modules/MemoryNotificationDB.sys.mjs" + ); + + ChromeUtils.importESModule( "resource://gre/modules/NotificationDB.sys.mjs" ); diff --git a/mobile/android/components/geckoview/SessionStoreFunctions.sys.mjs b/mobile/android/components/geckoview/SessionStoreFunctions.sys.mjs new file mode 100644 index 0000000000..16acc2789f --- /dev/null +++ b/mobile/android/components/geckoview/SessionStoreFunctions.sys.mjs @@ -0,0 +1,61 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +import { GeckoViewSessionStore } from "resource://gre/modules/GeckoViewSessionStore.sys.mjs"; + +export class SessionStoreFunctions { + UpdateSessionStore( + aBrowser, + aBrowsingContext, + aPermanentKey, + aEpoch, + aCollectSHistory, + aData + ) { + return GeckoViewSessionStoreFuncInternal.updateSessionStore( + aBrowser, + aBrowsingContext, + aPermanentKey, + aEpoch, + aCollectSHistory, + aData + ); + } +} + +var GeckoViewSessionStoreFuncInternal = { + updateSessionStore: function SSF_updateSessionStore( + aBrowser, + aBrowsingContext, + aPermanentKey, + aEpoch, + aCollectSHistory, + aData + ) { + const { formdata, scroll } = aData; + + if (formdata) { + aData.formdata = formdata.toJSON(); + } + + if (scroll) { + aData.scroll = scroll.toJSON(); + } + + GeckoViewSessionStore.updateSessionStoreFromTabListener( + aBrowser, + aBrowsingContext, + aPermanentKey, + { + data: aData, + epoch: aEpoch, + sHistoryNeeded: aCollectSHistory, + } + ); + }, +}; + +SessionStoreFunctions.prototype.QueryInterface = ChromeUtils.generateQI([ + "nsISessionStoreFunctions", +]); diff --git a/mobile/android/components/geckoview/components.conf b/mobile/android/components/geckoview/components.conf index ea9b9eba09..230abc5cf4 100644 --- a/mobile/android/components/geckoview/components.conf +++ b/mobile/android/components/geckoview/components.conf @@ -91,6 +91,12 @@ Classes = [ ], }, }, + { + 'cid': '{ad643d9e-52e3-4385-a57c-b42deb2f5daf}', + 'contract_ids': ['@mozilla.org/toolkit/sessionstore-functions;1'], + 'esModule': 'resource://gre/modules/SessionStoreFunctions.sys.mjs', + 'constructor': 'SessionStoreFunctions', + }, ] if defined('MOZ_ANDROID_HISTORY'): diff --git a/mobile/android/components/geckoview/moz.build b/mobile/android/components/geckoview/moz.build index 7b115ed03b..75b8c1bf32 100644 --- a/mobile/android/components/geckoview/moz.build +++ b/mobile/android/components/geckoview/moz.build @@ -49,6 +49,7 @@ EXTRA_JS_MODULES += [ "GeckoViewStartup.sys.mjs", "LoginStorageDelegate.sys.mjs", "PromptCollection.sys.mjs", + "SessionStoreFunctions.sys.mjs", "ShareDelegate.sys.mjs", ] |