Closed Bug 1060858 Opened 6 years ago Closed 6 years ago

Ghostery 5.3.1 does not support SeaMonkey (was Ghostery toolbar button doesn't work)

Categories

(SeaMonkey :: General, defect)

SeaMonkey 2.29 Branch
x86_64
Windows 8.1
defect
Not set
normal

Tracking

(seamonkey2.30 wontfix, seamonkey2.31 affected, seamonkey2.32 fixed)

RESOLVED FIXED
seamonkey2.32
Tracking Status
seamonkey2.30 --- wontfix
seamonkey2.31 --- affected
seamonkey2.32 --- fixed

People

(Reporter: haertetest_extrem, Unassigned)

References

Details

User Story

TL;DR: Ghostery relies on addon-SDK. The addon-SDK has been rewritten for Firefox post-Australis. SeaMonkey uses the older toolbar customization code. AMO reviewers won't allow Ghostery to use a patched SDK that supports SeaMonkey.

http://www.dslreports.com/forum/r29307983-Seamonkey-New-Ghostery-version-5.3.1-no-longer-supports-SeaMonkey#29310345

> SeaMonkey support is not longer possible because Ghsotery relies on 
> addon-sdk and it, in turn, does not work correctly on SeaMonkey. 5.2.1 
> will be the last available version until such time that support for 
> SeaMonkey is re-added. The actual reason for this is because the 
> underlying API for icon placement has been re-written in addon-sdk to 
> support Australis, and since Ghostery relies on it, there is no simple 
> way to re-add it to SeaMonkey. On top of this, AMO (official mozilla 
> distribution store) has denied our submissions with older addon-sdk 
> patched to support SeaMonkey, so were out of luck for now.
User Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0 SeaMonkey/2.26.1 (Beta/Release)
Build ID: 20140612174402

Steps to reproduce:

Started 2.29 beta 2 (Candiates, build 1) with a clean folder.


Actual results:

Addon "Ghosters (5.2.1) sucessfully installed the Addon, but the Icon can't be opened in the toolbar (right side near the seamonkey Icon)


Expected results:

clicking the Ghostery Icon should open the tracker page of this addon
Flags: needinfo?(nobody)
Confirmed that it does not work in 2.29.
(It does in 2.26.1.)

> Error: Couldn't find the worker to receive this message. The script may not be
 initialized yet, or may already have been unloaded.
> Source File: resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///C:...
/extensions/firefox@ghostery.com.xpi!/bootstrap.js
> -> resource://firefox-at-ghostery-dot-com/sea-monkey-addon-sdk/lib/toolkit
/loader.js
> -> resource://firefox-at-ghostery-dot-com/sea-monkey-addon-sdk/lib/sdk/content/worker.js
Line: 624

624 being the 'throw new Error(ERR_DESTROYED);' line:

> function processMessage () {
>  if (!this._contentWorker)
>    throw new Error(ERR_DESTROYED);
>  if (this._frozen)
>    throw new Error(ERR_FROZEN);

SeaMonkey issue or Ghostery?
And as it seems there is no current support of SeaMonkey by Ghostery...
Flags: needinfo?(nobody)
Priority: -- → P1
Severity: normal → minor
Severity: minor → normal
Component: Themes → General
Priority: P1 → --
http://www.dslreports.com/forum/r29307983-Seamonkey-New-Ghostery-version-5.3.1-no-longer-supports-SeaMonkey#29310345

> SeaMonkey support is not longer possible because Ghsotery relies on 
> addon-sdk and it, in turn, does not work correctly on SeaMonkey. 5.2.1 
> will be the last available version until such time that support for 
> SeaMonkey is re-added. The actual reason for this is because the 
> underlying API for icon placement has been re-written in addon-sdk to 
> support Australis, and since Ghostery relies on it, there is no simple 
> way to re-add it to SeaMonkey. On top of this, AMO (official mozilla 
> distribution store) has denied our submissions with older addon-sdk 
> patched to support SeaMonkey, so were out of luck for now.
User Story: (updated)
Summary: Ghostery Icon can't be opened in the Bar → Ghostery toolbar button doesn
Possibilities:
1. Host a SeaMonkey compatible version of Ghostery on a site the seamonkey-project controls or is friendly to SeaMonkey.

2. Raise a bug in the AMO product to change AMO policy so that addons using the SDK won't be rejected just because they want to support SeaMonkey (or Thunderbird).
Summary: Ghostery toolbar button doesn → Ghostery 5.3.1 does not support SeaMonkey (was Ghostery toolbar button doesn't work)
Using a modified and old version of the SDK is a non-starter for AMO reviews, especially considering we would be making that sort of exception for only one add-on.

To try to come up with a solution I would need to understand what the current support of the SDK is in SeaMonkey, and what the future plans are. It would also be useful to understand how is Ghostery breaking in SeaMonkey and whether that can be worked around without having to modify the SDK or be stuck in an old version.
so there's nothing else to do then deleting this addon (5.2.1 which worked in SM 2.26.1 normally) from the SM 2.29.
(In reply to Mario from comment #5)
> so there's nothing else to do then deleting this addon (5.2.1 which worked
> in SM 2.26.1 normally) from the SM 2.29.

How can we contact the Ghostery developers? If what they need is a relatively simple change to the addon-SDK I'm sure the jetpack people would be willing to help get this into the SDK?
Status: UNCONFIRMED → NEW
Ever confirmed: true
(In reply to Philip Chee from comment #6)
 
> How can we contact the Ghostery developers? If what they need is a
> relatively simple change to the addon-SDK I'm sure the jetpack people would
> be willing to help get this into the SDK?

Take a look here: https://www.ghostery.com/en/contact
I've received some email from the Ghostery developers:

Hey Philip,

The developer who added and maintained seamonkey support (back when the modified addon sdk was allowed) recently left the company, so we don't have a lot of knowledge in that area. I honestly don't even know where to begin testing it on Seamonkey. For instance trying to 'cfx run' the extension using the seamonkey binary, the addon shows up in the addons page but is disabled because it is "incompatible with SeaMonkey 2.29". I don't even know how compatibility is determined.

Any tips? For instance how to force it to run even though it isn't compatible (and fail so that we can find the missing addon sdk support)

Also, this is what the developer who used to handle seamonkey support told us today when we asked about it:

"the addon SDK we build Ghostery on top of used to be separate from the actual Firefox program, so we could use whatever version we wanted and even tinker with it to make it compatible with SeaMonkey. Since Firefox 31 (or around that time) this is not the case anymore, so the extension uses the SDK that comes with Firefox. Since the addon SDK (at the current version) no longer supports SeaMonkey, there is nothing we can do to make it compatible with it."
After adding a seamonkey compatibility section to the install.rdf file, I get the following error after installing Ghostery into seamonkey:

console.error: ghostery:
  Message: Error: Unsupported Application: The module sdk/tabs/tab currently supports only Firefox, Fennec.
  Stack:
    incompatibility@resource://gre/modules/commonjs/sdk/loader/cuddlefish.js:82:1
CuddlefishLoader/options<.load@resource://gre/modules/commonjs/sdk/loader/cuddlefish.js:135:7
@resource://gre/modules/commonjs/sdk/tabs/helpers.js:15:7
CuddlefishLoader/options<.load@resource://gre/modules/commonjs/sdk/loader/cuddlefish.js:129:9
@resource://gre/modules/commonjs/sdk/content/worker.js:22:7
CuddlefishLoader/options<.load@resource://gre/modules/commonjs/sdk/loader/cuddlefish.js:129:9
@resource://gre/modules/commonjs/sdk/page-mod.js:17:7
CuddlefishLoader/options<.load@resource://gre/modules/commonjs/sdk/loader/cuddlefish.js:129:9
@resource://firefox-at-ghostery-dot-com/ghostery/lib/background.js:25:3
CuddlefishLoader/options<.load@resource://gre/modules/commonjs/sdk/loader/cuddlefish.js:129:9
run@resource://gre/modules/commonjs/sdk/addon/runner.js:170:9
startup/<@resource://gre/modules/commonjs/sdk/addon/runner.js:114:7
Handler.prototype.process@resource://gre/modules/Promise-backend.js:863:11
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise-backend.js:742:7

So at least sdk/tabs needs seamonkey support before Ghostery can work.
I've fiddled with the addon-SDK and managed to get the start page to show up resource://firefox-at-ghostery-dot-com/ghostery/data/walkthrough.html
What I did so far: in tab.js, tabs.js, and windows.js I added an "engines" entry for SeaMonkey support e.g.

module.metadata = {
  "stability": "unstable",
  "engines": {
    "Firefox": "*",
    "SeaMonkey": "*",
    "Fennec": "*"
  }
};

The Ghostery sub-menu appears in the Tools menu. And the Options settings seem to work but I haven't done any real testing.

>19:08	bmcdermott	RattyAway: nice! we do a lot of custom stuff with the toolbar button so i wouldn't be surprised if that doesn't work automatically
>19:10	RattyAway	bmcdermott: yeah I haven't found where the toolbar button code lives. It's 3:10 am here so I'll continue tomorrow
>19:11	bmcdermott	RattyAway: ok cool. let me know if you have any questions or need me to do anything
See Also: → 1069824
Oh and I just noticed the Ghostery button appearing on the extreme right of the navigation toolbar without me doing anything in addition to the above.. I think I didn't see it before because it's rather inconspicuous. The button appears to work - the panel pops up and no relevant errors shows up in the Error Console.
Depends on: 1071048
See Also: → 1072455
so is there a chance that the Ghostery will work in the next 2.30 SM Version???
(In reply to Mario from comment #12)
> so is there a chance that the Ghostery will work in the next 2.30 SM
> Version???
Depends on when the Addon-SDK is next uplifted to mozilla-central (Probably Firefox 35 / SM 2.32) and then perhaps ask for backport to SM 2.30beta.
Bug 1071048 landed in the Addon-SDK repository. Waiting for the next uplift to mozilla-central.
Hi, Brad!

In /resources/ghostery/lib/background.js There is this code:

> 	for (i = 0; i < windows.length; i++) {
> 		window = windows[i];
> 		if ('chrome://browser/content/browser.xul' != window.location) { continue; }
> 		var activeTab = SDK.tabsLib.getTabForWindow(window.content).id;
> 		Ghostery.activeTabs.push(activeTab);
> 	}

You might want to do something like:

var browserURL = "chrome://browser/content/browser.xul";
if (require('sdk/system/xul-app').name == 'SeaMonkey') {
	browserURL = "chrome://navigator/content/navigator.xul";
}

	for (i = 0; i < windows.length; i++) {
		window = windows[i];
		if (browserURL != window.location) { continue; }
....
Flags: needinfo?(bradmcdermott)
(In reply to Philip Chee from comment #15)
> Hi, Brad!
> 
> In /resources/ghostery/lib/background.js There is this code:
> 
> > 	for (i = 0; i < windows.length; i++) {
> > 		window = windows[i];
> > 		if ('chrome://browser/content/browser.xul' != window.location) { continue; }
> > 		var activeTab = SDK.tabsLib.getTabForWindow(window.content).id;
> > 		Ghostery.activeTabs.push(activeTab);
> > 	}
> 
> You might want to do something like:
> 
> var browserURL = "chrome://browser/content/browser.xul";
> if (require('sdk/system/xul-app').name == 'SeaMonkey') {
> 	browserURL = "chrome://navigator/content/navigator.xul";
> }
> 
> 	for (i = 0; i < windows.length; i++) {
> 		window = windows[i];
> 		if (browserURL != window.location) { continue; }
> ....

Ok I'll make a note to add that in. Thanks
Flags: needinfo?(bradmcdermott)
FIXED on SeaMonkey 2.32 due to fixes in Bug 1071048
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → seamonkey2.32
You need to log in before you can comment on or make changes to this bug.