Bug 1473713 - Fix GeckoSession.saveState() when accessibility is used r=droeh draft
authorJames Willcox <snorp@snorp.net>
Thu, 05 Jul 2018 14:47:29 -0500
changeset 814641 10c048eec10d0636653aa7052bb84adf9ba0ec0b
parent 814640 956d802e22f04eca979c66f3c5593387ee57902d
push id115291
push userbmo:snorp@snorp.net
push dateThu, 05 Jul 2018 20:44:33 +0000
reviewersdroeh
bugs1473713
milestone63.0a1
Bug 1473713 - Fix GeckoSession.saveState() when accessibility is used r=droeh MozReview-Commit-ID: GG16D99S2Id
mobile/android/chrome/geckoview/GeckoViewContent.js
--- a/mobile/android/chrome/geckoview/GeckoViewContent.js
+++ b/mobile/android/chrome/geckoview/GeckoViewContent.js
@@ -14,16 +14,22 @@ XPCOMUtils.defineLazyModuleGetters(this,
   ScrollPosition: "resource://gre/modules/ScrollPosition.jsm",
   Utils: "resource://gre/modules/sessionstore/Utils.jsm",
 });
 
 class GeckoViewContent extends GeckoViewContentModule {
   onInit() {
     debug `onInit`;
 
+    // We don't load this in the global namespace because
+    // a Utils.jsm in a11y will clobber us.
+    XPCOMUtils.defineLazyModuleGetters(this, {
+      Utils: "resource://gre/modules/sessionstore/Utils.jsm",
+    });
+
     this.messageManager.addMessageListener("GeckoView:SaveState",
                                            this);
     this.messageManager.addMessageListener("GeckoView:RestoreState",
                                            this);
     this.messageManager.addMessageListener("GeckoView:DOMFullscreenEntered",
                                            this);
     this.messageManager.addMessageListener("GeckoView:DOMFullscreenExited",
                                            this);
@@ -54,17 +60,17 @@ class GeckoViewContent extends GeckoView
     removeEventListener("MozDOMFullscreen:Exit", this);
     removeEventListener("MozDOMFullscreen:Exited", this);
     removeEventListener("MozDOMFullscreen:Request", this);
     removeEventListener("contextmenu", this, { capture: true });
   }
 
   collectSessionState() {
     let history = SessionHistory.collect(docShell);
-    let [formdata, scrolldata] = Utils.mapFrameTree(content, FormData.collect, ScrollPosition.collect);
+    let [formdata, scrolldata] = this.Utils.mapFrameTree(content, FormData.collect, ScrollPosition.collect);
 
     // Save the current document resolution.
     let zoom = { value: 1 };
     let domWindowUtils = content.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
     domWindowUtils.getResolution(zoom);
     scrolldata = scrolldata || {};
     scrolldata.zoom = {};
     scrolldata.zoom.resolution = zoom.value;