[Pkg-mozext-commits] [tabmixplus] 14/34: [e10s] Update session manager to use content script to collect scroll position

David Prévot taffit at moszumanska.debian.org
Mon Mar 9 23:28:07 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository tabmixplus.

commit 02f015821e12e5ace415f1f16a16f5b20e328511
Author: onemen <tabmix.onemen at gmail.com>
Date:   Fri Feb 20 14:00:59 2015 +0200

    [e10s] Update session manager to use content script to collect scroll position
---
 chrome/content/content.js         |  6 ++++++
 chrome/content/session/session.js | 13 ++++++++++---
 modules/Utils.jsm                 |  6 ++++++
 3 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/chrome/content/content.js b/chrome/content/content.js
index 3b96f1c..5671c77 100644
--- a/chrome/content/content.js
+++ b/chrome/content/content.js
@@ -29,6 +29,7 @@ let TabmixContentHandler = {
     "Tabmix:resetContentName",
     "Tabmix:sendDOMTitleChanged",
     "Tabmix:updateHistoryTitle",
+    "Tabmix:collectScrollPosition",
   ],
 
   init: function () {
@@ -67,6 +68,11 @@ let TabmixContentHandler = {
         let history = docShell.QueryInterface(Ci.nsIWebNavigation).sessionHistory;
         TabmixUtils.updateHistoryTitle(history, data.title);
         break;
+      case "Tabmix:collectScrollPosition":
+        let scroll = {scrollX: content.scrollX,
+                      scrollY: content.scrollY};
+        sendAsyncMessage("Tabmix:updateScrollPosition", { scroll: scroll });
+        break;
     }
   },
 
diff --git a/chrome/content/session/session.js b/chrome/content/session/session.js
index 9db037f..894485a 100644
--- a/chrome/content/session/session.js
+++ b/chrome/content/session/session.js
@@ -2758,9 +2758,15 @@ try{
          return;
       var aBrowser = gBrowser.getBrowserForTab(aTab);
       if (gBrowser.isBlankBrowser(aBrowser)) return;
-      var bContent = aBrowser[TabmixSvc.contentWindowAsCPOW];
-      if (bContent)
-        this.setLiteral(this.getNodeForTab(aTab), "scroll", bContent.scrollX + "," + bContent.scrollY);
+      if (Tabmix.isVersion(320))
+        aBrowser.messageManager.sendAsyncMessage("Tabmix:collectScrollPosition");
+      else
+        this.updateScrollPosition(aTab, aBrowser.contentWindow);
+   },
+
+   updateScrollPosition: function(tab, scroll) {
+     if (scroll)
+       this.setLiteral(this.getNodeForTab(tab), "scroll", scroll.scrollX + "," + scroll.scrollY);
    },
 
    tabSelected: function(needFlush) {
@@ -3389,6 +3395,7 @@ try{
       browser.stop();
       // reset old history
       let history = browser.webNavigation.sessionHistory;
+///XXX - unsafe CPOW usage
       if (history) {
         if (history.count > 0)
           history.PurgeHistory(history.count);
diff --git a/modules/Utils.jsm b/modules/Utils.jsm
index f59a8c2..cc43dea 100644
--- a/modules/Utils.jsm
+++ b/modules/Utils.jsm
@@ -8,6 +8,7 @@ const {interfaces: Ci, utils: Cu} = Components;
 const FMM_MESSAGES = [
   "Tabmix:SetSyncHandler",
   "Tabmix:restorePermissionsComplete",
+  "Tabmix:updateScrollPosition",
 ];
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
@@ -42,6 +43,11 @@ this.TabmixUtils = {
       case "Tabmix:restorePermissionsComplete":
         DocShellCapabilities.update(browser, message.data);
         break;
+      case "Tabmix:updateScrollPosition":
+        let win = browser.ownerDocument.defaultView;
+        let tab = win.gBrowser.getTabForBrowser(browser);
+        win.TabmixSessionManager.updateScrollPosition(tab, message.data.scroll);
+        break;
     }
   },
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/tabmixplus.git



More information about the Pkg-mozext-commits mailing list