diff options
Diffstat (limited to 'bandwagon/content/ui/overlays/browserOverlayController.js')
-rw-r--r-- | bandwagon/content/ui/overlays/browserOverlayController.js | 132 |
1 files changed, 85 insertions, 47 deletions
diff --git a/bandwagon/content/ui/overlays/browserOverlayController.js b/bandwagon/content/ui/overlays/browserOverlayController.js index 0e17c2a..868ac37 100644 --- a/bandwagon/content/ui/overlays/browserOverlayController.js +++ b/bandwagon/content/ui/overlays/browserOverlayController.js @@ -56,28 +56,22 @@ Bandwagon.Controller.BrowserOverlay.initBandwagon = function() bandwagonService.init(); - // Set up uninstall observer - bandwagonService.startUninstallObserver(); } catch (e) { Bandwagon.Logger.error("Error initializing bandwagon: " + e); } - try - { - gBrowser.addEventListener("DOMContentLoaded", Bandwagon.Controller.BrowserOverlay.addSubscriptionRefreshEventListenerToDocument, true); - } - catch (e) - { - Bandwagon.Logger.debug("Error adding subscription refresh event listener to document (probably harmless): " + e); - } + /** OBSOLETE + // add listener to every page loaded in the browser - listen for our custom bandwagonSubscribe event + gBrowser.addEventListener("load", Bandwagon.Controller.BrowserOverlay.addSubscribeEventListenerToDocument, true); + */ + + gBrowser.addEventListener("load", Bandwagon.Controller.BrowserOverlay.addSubscriptionRefreshEventListenerToDocument, true); } Bandwagon.Controller.BrowserOverlay.addSubscriptionRefreshEventListenerToDocument = function(event) { - Bandwagon.Logger.debug("In Bandwagon.Controller.BrowserOverlay.addSubscriptionRefreshEventListenerToDocument()"); - if (event.originalTarget instanceof HTMLDocument) { var doc = event.originalTarget; @@ -89,18 +83,12 @@ Bandwagon.Controller.BrowserOverlay.addSubscriptionRefreshEventListenerToDocumen doc=doc.defaultView.frameElement.ownerDocument; } } + + // TODO only add to AMO - if (doc && doc.defaultView && doc.defaultView.location && doc.defaultView.location.host) - { - var docHost = doc.defaultView.location.host; + doc.addEventListener("bandwagonRefresh", Bandwagon.Controller.BrowserOverlay.handleSubscriptionRefreshEvent, true); - if (docHost == Bandwagon.Preferences.getPreference("amo_host")) - { - Bandwagon.Logger.debug("This document is on $amo_host, will add bandwagonRefresh listener"); - - doc.addEventListener("bandwagonRefresh", Bandwagon.Controller.BrowserOverlay.handleSubscriptionRefreshEvent, true); - } - } + Bandwagon.Logger.debug("added bandwagonRefresh listener"); } } @@ -111,6 +99,75 @@ Bandwagon.Controller.BrowserOverlay.handleSubscriptionRefreshEvent = function(ev bandwagonService.updateCollectionsList(); } +/** OBSOLETE +Bandwagon.Controller.BrowserOverlay.addSubscribeEventListenerToDocument = function(event) +{ + if (event.originalTarget instanceof HTMLDocument) + { + var doc = event.originalTarget; + + if (event.originalTarget.defaultView.frameElement) + { + while (doc.defaultView.frameElement) + { + doc=doc.defaultView.frameElement.ownerDocument; + } + } + + doc.addEventListener("bandwagonSubscribe", Bandwagon.Controller.BrowserOverlay.handleSubscribeEvent, true); + + //Bandwagon.Logger.debug("added bandwagonSubscribe listener"); + } +} +*/ + +/** OBSOLETE +Bandwagon.Controller.BrowserOverlay.handleSubscribeEvent = function(event) +{ + if (event.target && event.target.getAttribute("href")) + { + var collectionURL = event.target.getAttribute("href"); + + Bandwagon.Logger.info("Received subscribe event for collection: " + collectionURL); + + Bandwagon.Controller.BrowserOverlay._openExtensionManagerCollectionsPaneWithSubscribe(collectionURL); + } + else + { + Bandwagon.Logger.error("Missing data payload in bandwagonSubscribe event"); + } +} +*/ + +/** OBSOLETE +Bandwagon.Controller.BrowserOverlay._openExtensionManagerCollectionsPaneWithSubscribe = function(collectionURL) +{ + const EMTYPE = "Extension:Manager"; + var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] + .getService(Components.interfaces.nsIWindowMediator); + var theEM = wm.getMostRecentWindow(EMTYPE); + + if (theEM) + { + // extensions manager window already open - focus, show collections pane, call doShowCollectionPreview + + theEM.focus(); + theEM.showView('bandwagon-collections'); + + setTimeout(function() { Bandwagon.Controller.CollectionsPane.doShowCollectionPreview(collectionURL); }, 500); + } + else + { + // extensions manager window NOT already open - open with 'subscribe' argument (this will show collection pane, call doShowCollectionPreview) + + const EMURL = "chrome://mozapps/content/extensions/extensions.xul"; + const EMFEATURES = "chrome,menubar,extra-chrome,toolbar,dialog=no,resizable"; + + window.openDialog(EMURL, "", EMFEATURES, {subscribe: collectionURL}); + } +} +*/ + Bandwagon.Controller.BrowserOverlay._removeLoadListener = function() { window.removeEventListener("load", Bandwagon.init, true); @@ -131,18 +188,9 @@ Bandwagon.Controller.BrowserOverlay.openFirstRunLandingPage = function() /* Toolbar button action - Open add-ons window with Subscriptions tab focused */ Bandwagon.Controller.BrowserOverlay.openAddons = function() { - var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] - .getService(Components.interfaces.nsIWindowMediator); - var win = wm.getMostRecentWindow("Extension:Manager"); - if (win) { - win.focus(); - } - else - { - const EMURL = "chrome://mozapps/content/extensions/extensions.xul"; - const EMFEATURES = "chrome,menubar,extra-chrome,toolbar,dialog=no,resizable"; - window.openDialog(EMURL, "", EMFEATURES, "bandwagon-collections"); - } + const EMURL = "chrome://mozapps/content/extensions/extensions.xul"; + const EMFEATURES = "chrome,menubar,extra-chrome,toolbar,dialog=no,resizable"; + window.openDialog(EMURL, "", EMFEATURES, "bandwagon-collections"); } Bandwagon.Controller.BrowserOverlay.showNewAddonsAlert = function(collection) @@ -151,18 +199,8 @@ Bandwagon.Controller.BrowserOverlay.showNewAddonsAlert = function(collection) var bandwagonStrings = document.getElementById("bandwagon-strings"); - var alertsService; - - try - { - alertsService = Components.classes["@mozilla.org/alerts-service;1"] - .getService(Components.interfaces.nsIAlertsService); - } - catch (e) - { - Bandwagon.Logger.warn("Can't get a reference to the alerts service on this platform: " + e); - return; - } + var alertsService = Components.classes["@mozilla.org/alerts-service;1"] + .getService(Components.interfaces.nsIAlertsService); var unnotifiedCount = collection.getUnnotifiedAddons().length; var collectionName = (collection.name?collection.name:collection.resourceURL); @@ -221,7 +259,7 @@ Bandwagon.Controller.BrowserOverlay.showNewAddonsAlert = function(collection) } catch (e) { - Bandwagon.Logger.warn("Error showing alert notification on this platform: " + e); + Bandwagon.Logger.debug(e); } } |