Switch back to @mozilla.org/browser/clh;1 and fix tests

In Firefox 102, `-file` was being swallowed by `nsBrowserContentHandler`
in BrowserContentHandler.jsm, so ab7d916e0 overrode that by using the
same contract id for our main nsICommandLineHandler in
zotero-service.js. But `nsBrowserContentHandler` also handles `-chrome`,
which we were using in tests to pass runtests.html. There's no need to
pass in dynamically though -- we can just hard-code that and open the
window ourselves.
This commit is contained in:
Dan Stillman 2023-05-24 06:50:34 -04:00
parent 744e73bfdb
commit 722287b81a
6 changed files with 21 additions and 11 deletions

View file

@ -65,8 +65,8 @@ skin zotero default chrome/skin/default/zotero/
component {e4c61080-ec2d-11da-8ad9-0800200c9a66} components/zotero-service.js
component {531828f8-a16c-46be-b9aa-14845c3b010f} components/zotero-service.js
contract @zotero.org/Zotero;1 {e4c61080-ec2d-11da-8ad9-0800200c9a66}
contract @mozilla.org/commandlinehandler/general-startup;1?type=zotero {531828f8-a16c-46be-b9aa-14845c3b010f}
category command-line-handler m-zotero @mozilla.org/commandlinehandler/general-startup;1?type=zotero
contract @mozilla.org/browser/clh;1 {531828f8-a16c-46be-b9aa-14845c3b010f}
category command-line-handler m-zotero @mozilla.org/browser/clh;1
component {06a2ed11-d0a4-4ff0-a56f-a44545eee6ea} components/zotero-autocomplete.js
contract @mozilla.org/autocomplete/search;1?name=zotero {06a2ed11-d0a4-4ff0-a56f-a44545eee6ea}

View file

@ -3,5 +3,5 @@ resource zotero-unit test/resource/
resource zotero-unit-tests test/tests/
component {b8570031-be5e-46e8-9785-38cd50a5d911} test/components/zotero-unit.js
contract @mozilla.org/commandlinehandler/general-startup;1?type=zotero-unit {b8570031-be5e-46e8-9785-38cd50a5d911}
category command-line-handler m-zotero-unit @mozilla.org/commandlinehandler/general-startup;1?type=zotero-unit
contract @zotero.org/zotero/tests-clh;1 {b8570031-be5e-46e8-9785-38cd50a5d911}
category command-line-handler m-zotero-unit @zotero.org/zotero/tests-clh;1

View file

@ -24,6 +24,7 @@
***** END LICENSE BLOCK *****
*/
Components.utils.import("resource://gre/modules/ComponentUtils.jsm");
const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
function ZoteroUnit() {
this.wrappedJSObject = this;
@ -31,8 +32,8 @@ function ZoteroUnit() {
ZoteroUnit.prototype = {
/* nsICommandLineHandler */
handle:function(cmdLine) {
this.tests = cmdLine.handleFlagWithParam("test", false);
this.noquit = cmdLine.handleFlag("noquit", false);
this.tests = cmdLine.handleFlagWithParam("test", false);
this.noquit = cmdLine.handleFlag("noquit", false);
this.makeTestData = cmdLine.handleFlag("makeTestData", false);
this.noquit = !this.makeTestData && this.noquit;
this.runTests = !this.makeTestData;
@ -41,19 +42,27 @@ ZoteroUnit.prototype = {
this.stopAt = cmdLine.handleFlagWithParam("stopAtTestFile", false);
this.grep = cmdLine.handleFlagWithParam("grep", false);
this.timeout = cmdLine.handleFlagWithParam("ZoteroTestTimeout", false);
if (this.tests) {
Services.ww.openWindow(
null,
"chrome://zotero-unit/content/runtests.html",
"_blank",
"chrome,dialog=no,all",
Cc["@mozilla.org/array;1"].createInstance(Ci.nsIMutableArray)
);
cmdLine.preventDefault = true;
}
},
dump:function(x) {
dump(x);
},
contractID: "@mozilla.org/commandlinehandler/general-startup;1?type=zotero-unit",
classDescription: "Zotero Unit Command Line Handler",
classID: Components.ID("{b8570031-be5e-46e8-9785-38cd50a5d911}"),
service: true,
_xpcom_categories: [{category:"command-line-handler", entry:"m-zotero-unit"}],
QueryInterface: ChromeUtils.generateQI([Components.interfaces.nsICommandLineHandler])
};
var NSGetFactory = ComponentUtils.generateNSGetFactory([ZoteroUnit]);

View file

@ -1,3 +1,4 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"></meta>

View file

@ -3,7 +3,7 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
Components.utils.import("resource://gre/modules/osfile.jsm");
var EventUtils = Components.utils.import("resource://zotero-unit/EventUtils.jsm");
var ZoteroUnit = Components.classes["@mozilla.org/commandlinehandler/general-startup;1?type=zotero-unit"].
var ZoteroUnit = Components.classes["@zotero.org/zotero/tests-clh;1"].
getService(Components.interfaces.nsISupports).
wrappedJSObject;

View file

@ -168,7 +168,7 @@ ZOTERO_TEST=1 "$ROOT_DIR/app/scripts/dir_build" -q
makePath FX_PROFILE "$PROFILE"
MOZ_NO_REMOTE=1 NO_EM_RESTART=1 "$Z_EXECUTABLE" -profile "$FX_PROFILE" \
-chrome chrome://zotero-unit/content/runtests.html -test "$TESTS" -grep "$GREP" -ZoteroTest $Z_ARGS
-test "$TESTS" -grep "$GREP" -ZoteroTest $Z_ARGS
# Check for success
test -e "$PROFILE/success"