Bug 1454038 - 1. Share EventDispatcher among frame scripts; r?esawin draft
authorJim Chen <nchen@mozilla.com>
Tue, 17 Apr 2018 16:13:38 -0400
changeset 783834 5b98a8a95c6bfc7582fcb88e62c40b6f44f1895c
parent 782895 6276ec7ebbf33e3484997b189f20fc1511534187
child 783835 d92cf5539f8bcfa4c811d52e65b44595c7fa6567
push id106800
push userbmo:nchen@mozilla.com
push dateTue, 17 Apr 2018 20:15:42 +0000
reviewersesawin
bugs1454038
milestone61.0a1
Bug 1454038 - 1. Share EventDispatcher among frame scripts; r?esawin In order to be more efficient, use the same EventDispatcher instance among different frame scripts for the same frame. MozReview-Commit-ID: 1jZ3zW7NBeC
mobile/android/modules/geckoview/GeckoViewContentModule.jsm
--- a/mobile/android/modules/geckoview/GeckoViewContentModule.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewContentModule.jsm
@@ -6,34 +6,36 @@
 
 var EXPORTED_SYMBOLS = ["GeckoViewContentModule"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/GeckoViewUtils.jsm");
 
 GeckoViewUtils.initLogging("GeckoView.Module.[C]", this);
 
-ChromeUtils.defineModuleGetter(this, "EventDispatcher",
-  "resource://gre/modules/Messaging.jsm");
-
 class GeckoViewContentModule {
   static initLogging(aModuleName) {
     this._moduleName = aModuleName;
     const tag = aModuleName.replace("GeckoView", "GeckoView.") + ".[C]";
     return GeckoViewUtils.initLogging(tag, {});
   }
 
   static create(aGlobal, aModuleName) {
     return new this(aModuleName || this._moduleName, aGlobal);
   }
 
-  constructor(aModuleName, aMessageManager) {
+  constructor(aModuleName, aGlobal) {
     this.moduleName = aModuleName;
-    this.messageManager = aMessageManager;
-    this.eventDispatcher = EventDispatcher.forMessageManager(aMessageManager);
+    this.messageManager = aGlobal;
+
+    if (!aGlobal._gvEventDispatcher) {
+      aGlobal._gvEventDispatcher =
+          GeckoViewUtils.getDispatcherForWindow(aGlobal.content);
+    }
+    this.eventDispatcher = aGlobal._gvEventDispatcher;
 
     this.messageManager.addMessageListener(
       "GeckoView:UpdateSettings",
       aMsg => {
         this.settings = aMsg.data;
         this.onSettingsUpdate();
       }
     );