greasemonkey / greasemonkey

Greasemonkey is a user script manager for Firefox.
http://www.greasespot.net/
Other
2.32k stars 327 forks source link

Unexpected behaviour if MOZ_SERVICES_SYNC is disabled for firefox compile #2003

Closed stevenhoneyman closed 9 years ago

stevenhoneyman commented 10 years ago

One of the configure variables for firefox during build time is MOZ_SERVICES_SYNC. This prevents the Sync service from being compiled in. Greasemonkey is the only thing I could find a problem with - it still runs, still works, and still applies any userscripts that I had installed -- but the menu doesn't list any scripts, the options window just hangs (nothing happens clicking OK), and "Manage User Scripts" isn't there at all.

arantius commented 10 years ago

Can you check the error console?

stevenhoneyman commented 10 years ago

Before I go looking for something that I might have disabled... can you point me in the right direction of where I should be looking for that? I thought they disabled the Error Console years ago?

(If it's the web developer console, nothing in that shown for this issue)

arantius commented 10 years ago

I still call it that because "Browser Console" .. blech. Ctrl-Shift-J should do it.

stevenhoneyman commented 10 years ago

Ah-ha! that did it. This is the log from open firefox, click the GM dropdown button, click "manage user scripts" (which just opens the extentions page, because GM User Scripts has gone). I then clicked "preferences" for greasemonkey, and tried to click OK (which does nothing visibly)

It doesn't look happy!

TypeError: GM_BrowserUI.gmSvc is undefined browser.js:100
Error: Could not import util getService:
[Exception... "Component returned failure code: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]"  nsresult: "0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE)"  location: "JS frame :: resource://greasemonkey/util/getService.js :: <TOP_LEVEL> :: line 3"  data: no] util.js:27
TypeError: GM_BrowserUI.gmSvc is undefined browser.js:94
Use of getUserData() or setUserData() is deprecated.  Use WeakMap or element.dataset instead. requestNotifier.js:63
TypeError: GM_BrowserUI.gmSvc is undefined browser.js:100
TypeError: GM_BrowserUI.gmSvc is undefined browser.js:94
Error: Could not import util getService:
[Exception... "Component returned failure code: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]"  nsresult: "0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE)"  location: "JS frame :: resource://greasemonkey/util/getService.js :: <TOP_LEVEL> :: line 3"  data: no] util.js:27
[Exception... "Attempting to show unknown type greasemonkey-user-script"  nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)"  location: "JS frame :: chrome://mozapps/content/extensions/extensions.js :: gListView_show :: line 2573"  data: no] extensions.js:2573
TypeError: GM_BrowserUI.gmSvc is undefined browser.js:94
Use of getUserData() or setUserData() is deprecated.  Use WeakMap or element.dataset instead. requestNotifier.js:63
TypeError: GM_BrowserUI.gmSvc is undefined browser.js:100
A promise chain failed to handle a rejection.

Date: Thu Aug 28 2014 20:56:07 GMT+0100 (BST)
Full Message: Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIXPCComponents_Utils.import] XPCOMUtils.jsm:226
Use of getUserData() or setUserData() is deprecated.  Use WeakMap or element.dataset instead. requestNotifier.js:63
TypeError: GM_BrowserUI.gmSvc is undefined browser.js:94
Use of getUserData() or setUserData() is deprecated.  Use WeakMap or element.dataset instead. requestNotifier.js:63
TypeError: GM_BrowserUI.gmSvc is undefined browser.js:100
stevenhoneyman commented 10 years ago

Now I have something to look for... Seems related: https://github.com/greasemonkey/greasemonkey/issues/1842

arantius commented 10 years ago

From those, it looks like we need an error somewhere at initial launch time to know why the service object wasn't correctly created. (Most of those are just pointing to it missing.)

Ventero commented 10 years ago

I think Full Message: Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIXPCComponents_Utils.import] XPCOMUtils.jsm:226 might be the root cause for this issue, probably triggered by line 19 ff. in sync.js - I'd assume for a build without sync service, there won't be any JS files under resource://sync-service/. This in turn then would cause the import of sync.js in greasemonkey.js to fail.

stevenhoneyman commented 10 years ago

I've still got my "sync-less" build if you want me to test anything out or provide more info

Ventero commented 10 years ago

https://github.com/Ventero/greasemonkey/commit/63d11dec52bedda8291380087c52f69dd3eb4414 should fix this issue, if I'm not mistaken. I couldn't verify this myself though, as I seem to be hitting https://bugzilla.mozilla.org/show_bug.cgi?id=883679 (or a similar bug) with my sync-less build.

stevenhoneyman commented 10 years ago

Great work! It does indeed fix the issue:

2.2 Stable (no "User Scripts" option on the left): before

With your git branch (notice there is no Sync option in firefox prefs at all!): after