From 754ad610489603f80ea38bbd2cf18b28f0d8bf1d Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 20 Apr 2018 20:11:26 -0400 Subject: [PATCH] Import XULRunner and make it produce the generic stub --- application/xulrunner/README.xulrunner | 13 + application/xulrunner/app.mozbuild | 13 + application/xulrunner/app/Makefile.in | 75 +++ application/xulrunner/app/default16.png | Bin 0 -> 744 bytes application/xulrunner/app/default32.png | Bin 0 -> 2084 bytes application/xulrunner/app/default48.png | Bin 0 -> 3846 bytes application/xulrunner/app/document.ico | Bin 0 -> 22486 bytes application/xulrunner/app/install_app.py | 221 +++++++++ .../xulrunner/app/macbuild/Info.plist.in | 31 ++ .../xulrunner/app/macbuild/InfoPlist.strings | Bin 0 -> 280 bytes application/xulrunner/app/moz.build | 70 +++ application/xulrunner/app/nsXULRunnerApp.cpp | 294 ++++++++++++ application/xulrunner/app/splash.rc | 22 + .../xulrunner/app/xulrunner.exe.manifest | 38 ++ application/xulrunner/app/xulrunner.ico | Bin 0 -> 22486 bytes application/xulrunner/app/xulrunner.js | 26 + application/xulrunner/config/mozconfig | 9 + .../xulrunner/config/mozconfigs/common | 7 + .../config/mozconfigs/common.override | 8 + .../config/mozconfigs/linux32/xulrunner | 9 + .../config/mozconfigs/linux32/xulrunner-qt | 15 + .../config/mozconfigs/linux64/xulrunner | 9 + .../mozconfigs/macosx-universal/xulrunner | 9 + .../config/mozconfigs/win32/xulrunner | 16 + .../config/mozconfigs/win64/xulrunner | 15 + application/xulrunner/configure.in | 11 + application/xulrunner/confvars.sh | 28 ++ application/xulrunner/examples/moz.build | 7 + .../xulrunner/examples/simple/application.ini | 43 ++ .../examples/simple/components/moz.build | 7 + .../simple/components/public/moz.build | 13 + .../components/public/nsISimpleTest.idl | 15 + .../simple/components/src/SimpleTest.cpp | 54 +++ .../simple/components/src/SimpleTest.js | 27 ++ .../simple/components/src/SimpleTest.manifest | 2 + .../examples/simple/components/src/moz.build | 21 + .../examples/simple/content/contents.rdf | 0 .../examples/simple/content/simple.js | 17 + .../examples/simple/content/simple.xul | 20 + .../examples/simple/icons/simple.ico | Bin 0 -> 29310 bytes application/xulrunner/examples/simple/jar.mn | 12 + .../examples/simple/locale/simple.dtd | 7 + .../xulrunner/examples/simple/moz.build | 22 + .../xulrunner/examples/simple/simple-prefs.js | 6 + application/xulrunner/installer/Makefile.in | 148 ++++++ .../xulrunner/installer/debian/changelog.in | 7 + application/xulrunner/installer/debian/compat | 1 + .../xulrunner/installer/debian/control | 48 ++ .../xulrunner/installer/debian/icon_base64 | 36 ++ application/xulrunner/installer/debian/menu | 2 + .../xulrunner/installer/debian/postinst.in | 42 ++ .../xulrunner/installer/debian/prerm.in | 29 ++ .../installer/debian/xulrunner.links.in | 2 + .../installer/debian/xulrunner.service.in | 4 + .../installer/libxul-embedding.pc.in | 10 + application/xulrunner/installer/libxul.pc.in | 11 + application/xulrunner/installer/moz.build | 6 + .../xulrunner/installer/mozilla-js.pc.in | 10 + .../xulrunner/installer/mozilla-nspr.pc.in | 11 + .../xulrunner/installer/mozilla-nss.pc.in | 10 + .../xulrunner/installer/mozilla-plugin.pc.in | 8 + application/xulrunner/locales/all-locales | 39 ++ application/xulrunner/moz.build | 11 + application/xulrunner/moz.configure | 7 + application/xulrunner/stub/Makefile.in | 11 + application/xulrunner/stub/moz.build | 51 ++ application/xulrunner/stub/nsXULStub.cpp | 445 ++++++++++++++++++ .../stub/xulrunner-stub.exe.manifest | 38 ++ application/xulrunner/stub/xulrunner-stub.rc | 6 + application/xulrunner/tools/redit/Makefile.in | 11 + application/xulrunner/tools/redit/moz.build | 15 + application/xulrunner/tools/redit/redit.cpp | 187 ++++++++ old-configure.in | 10 - 73 files changed, 2418 insertions(+), 10 deletions(-) create mode 100644 application/xulrunner/README.xulrunner create mode 100644 application/xulrunner/app.mozbuild create mode 100644 application/xulrunner/app/Makefile.in create mode 100644 application/xulrunner/app/default16.png create mode 100644 application/xulrunner/app/default32.png create mode 100644 application/xulrunner/app/default48.png create mode 100644 application/xulrunner/app/document.ico create mode 100644 application/xulrunner/app/install_app.py create mode 100644 application/xulrunner/app/macbuild/Info.plist.in create mode 100644 application/xulrunner/app/macbuild/InfoPlist.strings create mode 100644 application/xulrunner/app/moz.build create mode 100644 application/xulrunner/app/nsXULRunnerApp.cpp create mode 100644 application/xulrunner/app/splash.rc create mode 100644 application/xulrunner/app/xulrunner.exe.manifest create mode 100644 application/xulrunner/app/xulrunner.ico create mode 100644 application/xulrunner/app/xulrunner.js create mode 100644 application/xulrunner/config/mozconfig create mode 100644 application/xulrunner/config/mozconfigs/common create mode 100644 application/xulrunner/config/mozconfigs/common.override create mode 100644 application/xulrunner/config/mozconfigs/linux32/xulrunner create mode 100644 application/xulrunner/config/mozconfigs/linux32/xulrunner-qt create mode 100644 application/xulrunner/config/mozconfigs/linux64/xulrunner create mode 100644 application/xulrunner/config/mozconfigs/macosx-universal/xulrunner create mode 100644 application/xulrunner/config/mozconfigs/win32/xulrunner create mode 100644 application/xulrunner/config/mozconfigs/win64/xulrunner create mode 100644 application/xulrunner/configure.in create mode 100644 application/xulrunner/confvars.sh create mode 100644 application/xulrunner/examples/moz.build create mode 100644 application/xulrunner/examples/simple/application.ini create mode 100644 application/xulrunner/examples/simple/components/moz.build create mode 100644 application/xulrunner/examples/simple/components/public/moz.build create mode 100644 application/xulrunner/examples/simple/components/public/nsISimpleTest.idl create mode 100644 application/xulrunner/examples/simple/components/src/SimpleTest.cpp create mode 100644 application/xulrunner/examples/simple/components/src/SimpleTest.js create mode 100644 application/xulrunner/examples/simple/components/src/SimpleTest.manifest create mode 100644 application/xulrunner/examples/simple/components/src/moz.build create mode 100644 application/xulrunner/examples/simple/content/contents.rdf create mode 100644 application/xulrunner/examples/simple/content/simple.js create mode 100644 application/xulrunner/examples/simple/content/simple.xul create mode 100644 application/xulrunner/examples/simple/icons/simple.ico create mode 100644 application/xulrunner/examples/simple/jar.mn create mode 100644 application/xulrunner/examples/simple/locale/simple.dtd create mode 100644 application/xulrunner/examples/simple/moz.build create mode 100644 application/xulrunner/examples/simple/simple-prefs.js create mode 100644 application/xulrunner/installer/Makefile.in create mode 100644 application/xulrunner/installer/debian/changelog.in create mode 100644 application/xulrunner/installer/debian/compat create mode 100644 application/xulrunner/installer/debian/control create mode 100644 application/xulrunner/installer/debian/icon_base64 create mode 100644 application/xulrunner/installer/debian/menu create mode 100644 application/xulrunner/installer/debian/postinst.in create mode 100644 application/xulrunner/installer/debian/prerm.in create mode 100644 application/xulrunner/installer/debian/xulrunner.links.in create mode 100644 application/xulrunner/installer/debian/xulrunner.service.in create mode 100644 application/xulrunner/installer/libxul-embedding.pc.in create mode 100644 application/xulrunner/installer/libxul.pc.in create mode 100644 application/xulrunner/installer/moz.build create mode 100644 application/xulrunner/installer/mozilla-js.pc.in create mode 100644 application/xulrunner/installer/mozilla-nspr.pc.in create mode 100644 application/xulrunner/installer/mozilla-nss.pc.in create mode 100644 application/xulrunner/installer/mozilla-plugin.pc.in create mode 100644 application/xulrunner/locales/all-locales create mode 100644 application/xulrunner/moz.build create mode 100644 application/xulrunner/moz.configure create mode 100644 application/xulrunner/stub/Makefile.in create mode 100644 application/xulrunner/stub/moz.build create mode 100644 application/xulrunner/stub/nsXULStub.cpp create mode 100644 application/xulrunner/stub/xulrunner-stub.exe.manifest create mode 100644 application/xulrunner/stub/xulrunner-stub.rc create mode 100644 application/xulrunner/tools/redit/Makefile.in create mode 100644 application/xulrunner/tools/redit/moz.build create mode 100644 application/xulrunner/tools/redit/redit.cpp diff --git a/application/xulrunner/README.xulrunner b/application/xulrunner/README.xulrunner new file mode 100644 index 000000000..424b7a615 --- /dev/null +++ b/application/xulrunner/README.xulrunner @@ -0,0 +1,13 @@ +XULRunner is a package which can be used to run applications written in HTML +or XUL. It can also be used to embed the gecko rendering engine into +binary applications. + +XULRunner is not a product; it is a tool which can be used to create products. +It is a byproduct of Firefox development and the Mozilla community does not +have a strong commitment to support XULRunner development apart from Firefox +development. + +For more information about using XULRunner or how to use this binary package, +see the Mozilla Developer Center article: + +https://developer.mozilla.org/en/XULRunner diff --git a/application/xulrunner/app.mozbuild b/application/xulrunner/app.mozbuild new file mode 100644 index 000000000..7b8316016 --- /dev/null +++ b/application/xulrunner/app.mozbuild @@ -0,0 +1,13 @@ +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +include('/toolkit/toolkit.mozbuild') + +if CONFIG['MOZ_EXTENSIONS']: + DIRS += ['/extensions'] + +DIRS += [ + '/application/xulrunner', +] diff --git a/application/xulrunner/app/Makefile.in b/application/xulrunner/app/Makefile.in new file mode 100644 index 000000000..98e377d69 --- /dev/null +++ b/application/xulrunner/app/Makefile.in @@ -0,0 +1,75 @@ +# vim:set ts=8 sw=8 sts=8 et: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +GARBAGE += $(addprefix $(DIST)/bin/defaults/pref/,xulrunner.js) + +ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT)) +TK_LIBS := -framework Cocoa $(TK_LIBS) +endif + +ifndef MOZ_WINCONSOLE +ifdef MOZ_DEBUG +MOZ_WINCONSOLE = 1 +else +MOZ_WINCONSOLE = 0 +endif +endif + +# This switches $(INSTALL) to copy mode, like $(SYSINSTALL), so things that +# shouldn't get 755 perms need $(IFLAGS1) for either way of calling nsinstall. +NSDISTMODE = copy + +include $(topsrcdir)/config/config.mk + +include $(topsrcdir)/config/rules.mk + +DEFINES += -DXULRUNNER_ICO='"$(DIST)/branding/xulrunner.ico"' -DDOCUMENT_ICO='"$(DIST)/branding/document.ico"' + +ifdef MOZ_WIDGET_GTK +libs:: + $(INSTALL) $(IFLAGS1) $(DIST)/branding/default16.png $(DIST)/bin/chrome/icons/default + $(INSTALL) $(IFLAGS1) $(DIST)/branding/default32.png $(DIST)/bin/chrome/icons/default + $(INSTALL) $(IFLAGS1) $(DIST)/branding/default48.png $(DIST)/bin/chrome/icons/default +endif + +# XXX applications would need to supply this file +#export:: brand.dtd.in +# $(call py_action,preprocessor,$(DEFINES) $(ACDEFINES) $^ -o brand.dtd) + +ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT)) + +FRAMEWORK_NAME = XUL +FRAMEWORK_VERSION = $(MOZILLA_VERSION) + +FRAMEWORK_DIR = \ + $(DIST)/$(FRAMEWORK_NAME).framework/Versions/$(FRAMEWORK_VERSION) + +$(FRAMEWORK_DIR)/Resources: + $(NSINSTALL) -D $@ + +tools:: $(PROGRAM) $(FRAMEWORK_DIR)/Resources + $(NSINSTALL) $(srcdir)/macbuild/InfoPlist.strings $(FRAMEWORK_DIR)/Resources + sed -e 's/APP_VERSION/$(APP_VERSION)/' $(srcdir)/macbuild/Info.plist.in > $(FRAMEWORK_DIR)/Info.plist + rsync -av $(DIST)/bin/ $(FRAMEWORK_DIR) --exclude mangle --exclude shlibsign + rm -f $(DIST)/$(FRAMEWORK_NAME).framework/Versions/Current \ + $(DIST)/$(FRAMEWORK_NAME).framework/libxpcom.dylib \ + $(DIST)/$(FRAMEWORK_NAME).framework/XUL \ + $(DIST)/$(FRAMEWORK_NAME).framework/xulrunner + ln -s $(FRAMEWORK_VERSION) $(DIST)/$(FRAMEWORK_NAME).framework/Versions/Current + ln -s Versions/Current/libxpcom.dylib $(DIST)/$(FRAMEWORK_NAME).framework/libxpcom.dylib + ln -s Versions/Current/XUL $(DIST)/$(FRAMEWORK_NAME).framework/XUL + ln -s Versions/Current/xulrunner $(DIST)/$(FRAMEWORK_NAME).framework/xulrunner + +clean clobber:: + rm -rf $(DIST)/$(FRAMEWORK_NAME).framework +endif + +README_FILE = $(srcdir)/../README.xulrunner + +libs:: + $(INSTALL) $(IFLAGS1) $(README_FILE) $(DIST)/bin + $(INSTALL) $(IFLAGS1) $(topsrcdir)/LICENSE $(DIST)/bin + $(INSTALL) $(IFLAGS1) $(srcdir)/install_app.py $(DIST)/bin + diff --git a/application/xulrunner/app/default16.png b/application/xulrunner/app/default16.png new file mode 100644 index 0000000000000000000000000000000000000000..e74f5cf2e442458ea5c621e654f853a65031d1b5 GIT binary patch literal 744 zcmVP)GVQLHEyY3gAn5KA6SrB zSXi>LCy`)b!@^2p!_uO55@|(cTPNBiZ_;u#de-OJ-lw!)irCg8wS&fWOik*(G@jKQEhgsP)_)Pccc^F?5f=K zqi-brJN@XjQ?b#(GfpC6g$bK*SsaDL2z-QFL#wz%MVN?Bj9=m8&BH%C*l}S!o7Y}9 zNBZr^V46rKg%yjSLO~_BNcqD8`tl@|cLij`(q#Yg?V_>z28FwgFAjQ_9YeR{Ez6{; z6z<0|rFw^jdYeMNM72~$Pj}I~e=EtcAuPkmup)g3zywVEa5wWs!WSQ@IyQPThS)Mj zXCRF|njw}=<68#47a(SHC_M?%*b7`XVPBkua+<;i5FuV7h8vF&Ms3=TgQIKcN+K#P zynKnygGU6_CMY8V=qAhy%5FgO6Id3sns{~uksY8jTf)&Kh636?!M*#mb2)i}rGKpO&0fp`mQ3hL89?SBGGa}xR5clff@ aZ}l0cBPG#LK)$~K0000uM^u@ zd++DWnHvvhT|2$ELSm%RYWK{U?`OXAo8NC1{?ARkr_qhCoe1t=;BB8azH}lw`{^If-MjMLQ>T~jSYB+F z=4vs`vY;`UP_0B%gdoVQV@j!krc$05~WIv6p)V;S$BvUX4qkhOj80$Syw6#yL$4l+noO+ z=I@<1laX&qHUGs=l$K_mnmyWFtOb$DYC-V>H0Lhp%%C-M$54NBvc#;cql zQ`DRyKGb+voL>1g3twJ-cMhES)_vlEyPur2x=}8L$UqWGL40(E(#k@y`g%fCs}KoK zAV3Wj{p}uVn4tzK`7k3NWe|l_j!j`s9-r1LOAqjjdJ6uXzKsK)YH;73KMIe}9ddb& zy=N7F>Nv(a+;jt5if}VcOub5OEXp{v^Jt~<)?!jcTq_gTE4VC2-|8@W@e<`;m-r*A zXL$Uv@4dYPkAC6noWA2TBmv>-B7qMG57h_`PZCZwkiH-;j*iD8$cBnhcR+8mL)sgW z96O8;1G-l>(1R4cJHQKwkI$f@_-;B2e`V|G|GW{P^2r6xp7{w=wW^OoL_I-X-y)cq zB$%oryhrRET3=A8LCW^U7Tt|qvOz{ROc~zlGkN+Xd6tv)QliDfaHv5v(+#R?!4r=c%M>^%k;kTyQGhTG0SNCw2=E>csD4U+W2e~rks|AkkhL<& z$$7%LLj+R|;;@7`HiI?}JIv6zImX7+Zy26$0fetPF**5hoG+p|3~(YtNkL!@qCZ3g z5-$b*)FM6#FwPMrWh$#j>AkX!>I|R~5g(l*Hx}(ZA~RTH@lgPs5i-jWbv2r3hDw@bxP8$P`8jBIyWA5tTa^iI3cc!CnlQOfgKM(*~`I zV`eo3VbQ}79|Yv10N1QzeSm2XFj5dm2n0wESO>=8tix^I!k+&dW_uf*rRdQRo2QVc zpsglQWYLuC?`7D1>32%~+7K;okqec~Q$?lC(9Odts(iF6+6ec^(!cn9uZ z7qP7tR%>)RLZ?H#R^SZ~_sO>h`vB&0i_tx88Yd28`_St`QU#Gif42aT5-J|9zlyVv zMc&7c^xkI4jjX^8w_?Y5Z4|dnS?`4 zCo+(I}3aUD8qV20!3;V4R3@+aIgKL7@|*8Yuqnn`jEfld|r z{gsYw*_Vc#3~G? z3VozDIYm%am?r-AP4#op?Vi3Db0;w;R34uRl~gwi=s_d+@YS{8!- zz|a7Qa;U69{0#Jd2c74E>tout6nUo>0aL&t)R$pm6@n#jQxMibIA8#N6VxT>U4+pU zpapa|5OD7oV6TPj2SN=Y<34&P;r9dZ`nG>V-%oY#x&0R=kqnHox!Q^V O0000l&%{ZCKHYj02 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
    Anr-^+K|*vY0USpWb407*qo IM6N<$f>s(F=>Px# literal 0 HcmV?d00001 diff --git a/application/xulrunner/app/document.ico b/application/xulrunner/app/document.ico new file mode 100644 index 0000000000000000000000000000000000000000..31111632477422dd3c21256364fdcaf6385b20e8 GIT binary patch literal 22486 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 + + + +CFBundleInfoDictionaryVersion +6.0 +CFBundlePackageType +APPL +CFBundleSignature +???? +CFBundleExecutable +xulrunner +NSAppleScriptEnabled + +CFBundleGetInfoString +$infoString +CFBundleName +$appName +CFBundleShortVersionString +$version +CFBundleVersion +$version.$buildID +CFBundleIdentifier +$reverseVendor + + +""" + version = iniparser.get("App", "Version") + buildID = iniparser.get("App", "BuildID") + infoString = appName + " " + version + reverseVendor = "com.vendor.unknown" + appID = iniparser.get("App", "ID") + colonIndex = appID.find("@") + 1 + if (colonIndex != 0): + vendor = appID[colonIndex:] + reverseVendor = ".".join(vendor.split(".")[::-1]) + contents = contents.replace("$infoString", infoString) + contents = contents.replace("$appName", appName) + contents = contents.replace("$version", version) + contents = contents.replace("$buildID", buildID) + contents = contents.replace("$reverseVendor", reverseVendor) + infoPList = open(os.path.join(installDir, "Contents/Info.plist"), "w+b") + infoPList.write(contents) + infoPList.close() + + def makeAppName(leafName): + return leafName + +else: + # Implement xulrunnerStubName, installApp and makeAppName as above. + raise Exception("This operating system isn't supported for install_app.py yet!") +# End platform-specific support + +def resolvePath(path): + return os.path.realpath(path) + +def requireINIOption(iniparser, section, option): + if not (iniparser.has_option(section, option)): + raise Exception("application.ini must have a " + option + " option under the " + section + " section") + +def checkAppINI(appLocation): + if (os.path.isdir(appLocation)): + zipApp = None + appINIPath = os.path.join(appLocation, "application.ini") + if not (os.path.isfile(appINIPath)): + raise Exception(appINIPath + " does not exist") + appINI = open(appINIPath) + elif (zipfile.is_zipfile(appLocation)): + zipApp = zipfile.ZipFile(appLocation) + if not ("application.ini" in zipApp.namelist()): + raise Exception("jar:" + appLocation + "!/application.ini does not exist") + appINI = zipApp.open("application.ini") + else: + raise Exception("appLocation must be a directory containing application.ini or a zip file with application.ini at its root") + + # application.ini verification + iniparser = SafeConfigParser() + iniparser.readfp(appINI) + if not (iniparser.has_section("App")): + raise Exception("application.ini must have an App section") + if not (iniparser.has_section("Gecko")): + raise Exception("application.ini must have a Gecko section") + requireINIOption(iniparser, "App", "Name") + requireINIOption(iniparser, "App", "Version") + requireINIOption(iniparser, "App", "BuildID") + requireINIOption(iniparser, "App", "ID") + requireINIOption(iniparser, "Gecko", "MinVersion") + + return zipApp, iniparser + pass + +def copyGRE(greDir, targetDir): + shutil.copytree(greDir, targetDir, symlinks=True) + +def validateArguments(appLocation, installDir, appName, greDir): + # application directory / zip verification + appLocation = resolvePath(appLocation) + + # target directory + installDir = resolvePath(installDir) + + if (os.path.exists(installDir)): + raise Exception("installDir must not exist: " + cmds.installDir) + + greDir = resolvePath(greDir) + xulrunnerStubPath = os.path.isfile(os.path.join(greDir, xulrunnerStubName)) + if not xulrunnerStubPath: + raise Exception("XULRunner stub executable not found: " + os.path.join(greDir, xulrunnerStubName)) + + # appName + zipApp, iniparser = checkAppINI(appLocation) + if not appName: + appName = iniparser.get("App", "Name") + appName = makeAppName(appName) + pattern = re.compile("[\\\/\:*?\"<>|\x00]") + if pattern.search(appName): + raise Exception("App name has illegal characters for at least one operating system") + return zipApp, iniparser, appName + +def handleCommandLine(): + import argparse + + # Argument parsing. + parser = argparse.ArgumentParser( + description="XULRunner application installer", + usage="""install_app.py appLocation installDir greDir [--appName APPNAME] + install_app.py -h + install_app.py --version + """ + ) + parser.add_argument( + "appLocation", + action="store", + help="The directory or ZIP file containing application.ini as a top-level child file" + ) + parser.add_argument( + "installDir", + action="store", + help="The directory to install the application to" + ) + parser.add_argument( + "--greDir", + action="store", + help="The directory containing the Gecko SDK (usually where this Python script lives)", + default=os.path.dirname(sys.argv[0]) + ) + parser.add_argument( + "--appName", + action="store", + help="The name of the application to install" + ) + parser.add_argument("--version", action="version", version="%(prog)s 1.0") + + # The command code. + cmds = parser.parse_args() + try: + installApp(cmds.appLocation, cmds.installDir, cmds.appName, cmds.greDir) + except exn: + shutil.rmtree(cmds.installDir) + raise exn + print cmds.appName + " application installed to " + cmds.installDir + +if __name__ == '__main__': + handleCommandLine() diff --git a/application/xulrunner/app/macbuild/Info.plist.in b/application/xulrunner/app/macbuild/Info.plist.in new file mode 100644 index 000000000..69676b80c --- /dev/null +++ b/application/xulrunner/app/macbuild/Info.plist.in @@ -0,0 +1,31 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + xulrunner-bin + CFBundleIdentifier + org.mozilla.xulrunner + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + XULRunner + CFBundlePackageType + FMWK + CFBundleSignature + MOZB + CFBundleVersion + APP_VERSION + LSMinimumSystemVersion + 10.5 + LSMinimumSystemVersionByArchitecture + + i386 + 10.5.0 + x86_64 + 10.6.0 + + + diff --git a/application/xulrunner/app/macbuild/InfoPlist.strings b/application/xulrunner/app/macbuild/InfoPlist.strings new file mode 100644 index 0000000000000000000000000000000000000000..5d9eefd515ccab3741710a22bfaa184f3430fc80 GIT binary patch literal 280 zcmZvXPYZ%T6vXG;rx1@q_6LF@yd*?HcqoFdnOaePuEXw`)9hXLsK0%-i=z zJ$Z7pQlW$Py6UW_QYCPAuu=_E$bb%*u`ju0oPCv6U#o$=pnh1Dhi8WhHP=ix)Csy& z5&k*oC}6qTX-n?fDvZr?HRWBTjTW#udP6@26IN_pLXu08D&{)sWV3&M|2i*{2AWV~ abv0C<8o{+%!`s#+CadAz{?%tLX7~b +#include +#ifdef XP_WIN +#include +#if defined(_MSC_VER) && _MSC_VER < 1900 +#define snprintf _snprintf +#endif +#define strcasecmp _stricmp +#endif + +#include "nsAppRunner.h" +#include "nsIFile.h" +#include "nsCOMPtr.h" +#include "nsMemory.h" +#include "nsCRTGlue.h" +#include "nsStringAPI.h" +#include "nsServiceManagerUtils.h" +#include "plstr.h" +#include "prprf.h" +#include "prenv.h" +#include "nsINIParser.h" + +#ifdef XP_WIN +#define XRE_DONT_SUPPORT_XPSP2 // See https://bugzil.la/1023941#c32 +#include "nsWindowsWMain.cpp" +#endif + +#include "BinaryPath.h" + +#include "nsXPCOMPrivate.h" // for MAXPATHLEN and XPCOM_DLL + +using namespace mozilla; + +/** + * Output a string to the user. This method is really only meant to be used to + * output last-ditch error messages designed for developers NOT END USERS. + * + * @param isError + * Pass true to indicate severe errors. + * @param fmt + * printf-style format string followed by arguments. + */ +static void Output(bool isError, const char *fmt, ... ) +{ + va_list ap; + va_start(ap, fmt); + +#if (defined(XP_WIN) && !MOZ_WINCONSOLE) + wchar_t msg[2048]; + _vsnwprintf(msg, sizeof(msg)/sizeof(msg[0]), NS_ConvertUTF8toUTF16(fmt).get(), ap); + + UINT flags = MB_OK; + if (isError) + flags |= MB_ICONERROR; + else + flags |= MB_ICONINFORMATION; + + MessageBoxW(nullptr, msg, L"XULRunner", flags); +#else + vfprintf(stderr, fmt, ap); +#endif + + va_end(ap); +} + +/** + * Return true if |arg| matches the given argument name. + */ +static bool IsArg(const char* arg, const char* s) +{ + if (*arg == '-') + { + if (*++arg == '-') + ++arg; + return !strcasecmp(arg, s); + } + +#if defined(XP_WIN) + if (*arg == '/') + return !strcasecmp(++arg, s); +#endif + + return false; +} + +static nsresult +GetGREVersion(const char *argv0, + nsACString *aMilestone, + nsACString *aVersion) +{ + if (aMilestone) + aMilestone->AssignLiteral(""); + if (aVersion) + aVersion->AssignLiteral(""); + + nsCOMPtr iniFile; + nsresult rv = BinaryPath::GetFile(argv0, getter_AddRefs(iniFile)); + if (NS_FAILED(rv)) + return rv; + + iniFile->SetNativeLeafName(NS_LITERAL_CSTRING("platform.ini")); + + nsINIParser parser; + rv = parser.Init(iniFile); + if (NS_FAILED(rv)) + return rv; + + if (aMilestone) { + rv = parser.GetString("Build", "Milestone", *aMilestone); + if (NS_FAILED(rv)) + return rv; + } + if (aVersion) { + rv = parser.GetString("Build", "BuildID", *aVersion); + if (NS_FAILED(rv)) + return rv; + } + return NS_OK; +} + +static void Usage(const char *argv0) +{ + nsAutoCString milestone; + GetGREVersion(argv0, &milestone, nullptr); + + // display additional information (XXX make localizable?) + Output(false, + "Mozilla XULRunner %s\n\n" + "Usage: " XULRUNNER_PROGNAME " [OPTIONS]\n" + " " XULRUNNER_PROGNAME " APP-FILE [APP-OPTIONS...]\n" + "\n" + "OPTIONS\n" + " --app specify APP-FILE (optional)\n" + " -h, --help show this message\n" + " -v, --version show version\n" + " --gre-version print the GRE version string on stdout\n" + "\n" + "APP-FILE\n" + " Application initialization file.\n" + "\n" + "APP-OPTIONS\n" + " Application specific options.\n", + milestone.get()); +} + +XRE_GetFileFromPathType XRE_GetFileFromPath; +XRE_CreateAppDataType XRE_CreateAppData; +XRE_FreeAppDataType XRE_FreeAppData; +XRE_mainType XRE_main; + +static const nsDynamicFunctionLoad kXULFuncs[] = { + { "XRE_GetFileFromPath", (NSFuncPtr*) &XRE_GetFileFromPath }, + { "XRE_CreateAppData", (NSFuncPtr*) &XRE_CreateAppData }, + { "XRE_FreeAppData", (NSFuncPtr*) &XRE_FreeAppData }, + { "XRE_main", (NSFuncPtr*) &XRE_main }, + { nullptr, nullptr } +}; + +class AutoAppData +{ +public: + AutoAppData(nsIFile* aINIFile) : mAppData(nullptr) { + nsresult rv = XRE_CreateAppData(aINIFile, &mAppData); + if (NS_FAILED(rv)) + mAppData = nullptr; + } + ~AutoAppData() { + if (mAppData) + XRE_FreeAppData(mAppData); + } + + operator nsXREAppData*() const { return mAppData; } + nsXREAppData* operator -> () const { return mAppData; } + +private: + nsXREAppData* mAppData; +}; + +int main(int argc, char* argv[]) +{ + char exePath[MAXPATHLEN]; + nsresult rv = mozilla::BinaryPath::Get(argv[0], exePath); + if (NS_FAILED(rv)) { + Output(true, "Couldn't calculate the application directory.\n"); + return 255; + } + + char *lastSlash = strrchr(exePath, XPCOM_FILE_PATH_SEPARATOR[0]); + if (!lastSlash || (size_t(lastSlash - exePath) > MAXPATHLEN - sizeof(XPCOM_DLL) - 1)) + return 255; + + strcpy(++lastSlash, XPCOM_DLL); + + rv = XPCOMGlueStartup(exePath); + if (NS_FAILED(rv)) { + Output(true, "Couldn't load XPCOM.\n"); + return 255; + } + + if (argc > 1 && (IsArg(argv[1], "h") || + IsArg(argv[1], "help") || + IsArg(argv[1], "?"))) + { + Usage(argv[0]); + return 0; + } + + if (argc == 2 && (IsArg(argv[1], "v") || IsArg(argv[1], "version"))) + { + nsAutoCString milestone; + nsAutoCString version; + GetGREVersion(argv[0], &milestone, &version); + Output(false, "Mozilla XULRunner %s - %s\n", + milestone.get(), version.get()); + return 0; + } + + rv = XPCOMGlueLoadXULFunctions(kXULFuncs); + if (NS_FAILED(rv)) { + Output(true, "Couldn't load XRE functions.\n"); + return 255; + } + + if (argc > 1) { + nsAutoCString milestone; + rv = GetGREVersion(argv[0], &milestone, nullptr); + if (NS_FAILED(rv)) + return 2; + + if (IsArg(argv[1], "gre-version")) { + if (argc != 2) { + Usage(argv[0]); + return 1; + } + + printf("%s\n", milestone.get()); + return 0; + } + + if (IsArg(argv[1], "install-app")) { + Output(true, "--install-app support has been removed. Use 'python install-app.py' instead.\n"); + return 1; + } + } + + const char *appDataFile = getenv("XUL_APP_FILE"); + + if (!(appDataFile && *appDataFile)) { + if (argc < 2) { + Usage(argv[0]); + return 1; + } + + if (IsArg(argv[1], "app")) { + if (argc == 2) { + Usage(argv[0]); + return 1; + } + argv[1] = argv[0]; + ++argv; + --argc; + } + + appDataFile = argv[1]; + argv[1] = argv[0]; + ++argv; + --argc; + + static char kAppEnv[MAXPATHLEN]; + snprintf(kAppEnv, MAXPATHLEN, "XUL_APP_FILE=%s", appDataFile); + putenv(kAppEnv); + } + + nsCOMPtr appDataLF; + rv = XRE_GetFileFromPath(appDataFile, getter_AddRefs(appDataLF)); + if (NS_FAILED(rv)) { + Output(true, "Error: unrecognized application.ini path.\n"); + return 2; + } + + AutoAppData appData(appDataLF); + if (!appData) { + Output(true, "Error: couldn't parse application.ini.\n"); + return 2; + } + + return XRE_main(argc, argv, appData, 0); +} diff --git a/application/xulrunner/app/splash.rc b/application/xulrunner/app/splash.rc new file mode 100644 index 000000000..4374383ba --- /dev/null +++ b/application/xulrunner/app/splash.rc @@ -0,0 +1,22 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include +#include "nsNativeAppSupportWin.h" + +1 24 "xulrunner.exe.manifest" + +IDI_APPICON ICON XULRUNNER_ICO +IDI_DOCUMENT ICON DOCUMENT_ICO +IDI_APPLICATION ICON XULRUNNER_ICO + +STRINGTABLE DISCARDABLE +BEGIN +#ifdef DEBUG + IDS_STARTMENU_APPNAME, "Firefox Debug" +#else + IDS_STARTMENU_APPNAME, "Firefox" +#endif +END diff --git a/application/xulrunner/app/xulrunner.exe.manifest b/application/xulrunner/app/xulrunner.exe.manifest new file mode 100644 index 000000000..b08eea074 --- /dev/null +++ b/application/xulrunner/app/xulrunner.exe.manifest @@ -0,0 +1,38 @@ + + + +Mozilla XULRunner + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/xulrunner/app/xulrunner.ico b/application/xulrunner/app/xulrunner.ico new file mode 100644 index 0000000000000000000000000000000000000000..0518438a040d8fa9b5523893e9edbcf9faf9a38c GIT binary patch literal 22486 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 literal 0 HcmV?d00001 diff --git a/application/xulrunner/app/xulrunner.js b/application/xulrunner/app/xulrunner.js new file mode 100644 index 000000000..509bb48a5 --- /dev/null +++ b/application/xulrunner/app/xulrunner.js @@ -0,0 +1,26 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#filter substitution + +// We need to override the default values of these preferences since all.js +// assumes these are in the navigator package, which for us is nonexistent. +// XXX(darin): perhaps all.js should not be seamonkey specific +pref("general.useragent.locale", "@AB_CD@"); +pref("xpinstall.dialog.confirm", "chrome://mozapps/content/xpinstall/xpinstallConfirm.xul"); +pref("xpinstall.dialog.progress.chrome", "chrome://mozapps/content/extensions/extensions.xul"); +pref("xpinstall.dialog.progress.skin", "chrome://mozapps/content/extensions/extensions.xul"); +pref("xpinstall.dialog.progress.type.chrome", "Extension:Manager"); +pref("xpinstall.dialog.progress.type.skin", "Extension:Manager"); +pref("xpinstall.enabled", true); +#ifdef XP_WIN +pref("browser.preferences.instantApply", false); +#else +pref("browser.preferences.instantApply", true); +#endif +#ifdef XP_MACOSX +pref("browser.preferences.animateFadeIn", true); +#else +pref("browser.preferences.animateFadeIn", false); +#endif diff --git a/application/xulrunner/config/mozconfig b/application/xulrunner/config/mozconfig new file mode 100644 index 000000000..9fa972cac --- /dev/null +++ b/application/xulrunner/config/mozconfig @@ -0,0 +1,9 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# This file specifies the build flags for XULRunner. You can use it by adding: +# . $topsrcdir/xulrunner/config/mozconfig +# to the top of your mozconfig file. + +ac_add_options --enable-application=xulrunner diff --git a/application/xulrunner/config/mozconfigs/common b/application/xulrunner/config/mozconfigs/common new file mode 100644 index 000000000..a6811c575 --- /dev/null +++ b/application/xulrunner/config/mozconfigs/common @@ -0,0 +1,7 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# This file is included at the top of all xulrunner mozconfigs + +. "$topsrcdir/build/mozconfig.common" diff --git a/application/xulrunner/config/mozconfigs/common.override b/application/xulrunner/config/mozconfigs/common.override new file mode 100644 index 000000000..8d719a5b5 --- /dev/null +++ b/application/xulrunner/config/mozconfigs/common.override @@ -0,0 +1,8 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# This file is included at the bottom of all xulrunner mozconfigs + +. "$topsrcdir/build/mozconfig.common.override" +. "$topsrcdir/build/mozconfig.cache" diff --git a/application/xulrunner/config/mozconfigs/linux32/xulrunner b/application/xulrunner/config/mozconfigs/linux32/xulrunner new file mode 100644 index 000000000..171674f8c --- /dev/null +++ b/application/xulrunner/config/mozconfigs/linux32/xulrunner @@ -0,0 +1,9 @@ +export MOZILLA_OFFICIAL=1 +export JAVA_HOME=/tools/jdk + +ac_add_options --enable-application=xulrunner +ac_add_options --disable-tests + +. $topsrcdir/build/unix/mozconfig.linux32 + +. "$topsrcdir/xulrunner/config/mozconfigs/common.override" diff --git a/application/xulrunner/config/mozconfigs/linux32/xulrunner-qt b/application/xulrunner/config/mozconfigs/linux32/xulrunner-qt new file mode 100644 index 000000000..54e4ecb8f --- /dev/null +++ b/application/xulrunner/config/mozconfigs/linux32/xulrunner-qt @@ -0,0 +1,15 @@ +export MOZILLA_OFFICIAL=1 +export JAVA_HOME=/tools/jdk + +ac_add_options --enable-application=xulrunner +ac_add_options --disable-tests + +. $topsrcdir/build/unix/mozconfig.linux32 + +# QT Options +export PKG_CONFIG_PATH=/tools/qt-4.6.3/qt/lib/pkgconfig +ac_add_options --with-qtdir=/tools/qt-4.6.3/qt +ac_add_options --enable-default-toolkit=cairo-qt +ac_add_options --disable-crashreporter + +. "$topsrcdir/xulrunner/config/mozconfigs/common.override" diff --git a/application/xulrunner/config/mozconfigs/linux64/xulrunner b/application/xulrunner/config/mozconfigs/linux64/xulrunner new file mode 100644 index 000000000..c18a12f67 --- /dev/null +++ b/application/xulrunner/config/mozconfigs/linux64/xulrunner @@ -0,0 +1,9 @@ +export MOZILLA_OFFICIAL=1 +export JAVA_HOME=/tools/jdk + +ac_add_options --enable-application=xulrunner +ac_add_options --disable-tests + +. $topsrcdir/build/unix/mozconfig.linux + +. "$topsrcdir/xulrunner/config/mozconfigs/common.override" diff --git a/application/xulrunner/config/mozconfigs/macosx-universal/xulrunner b/application/xulrunner/config/mozconfigs/macosx-universal/xulrunner new file mode 100644 index 000000000..ac7e24fe2 --- /dev/null +++ b/application/xulrunner/config/mozconfigs/macosx-universal/xulrunner @@ -0,0 +1,9 @@ +. $topsrcdir/build/macosx/universal/mozconfig + +export MOZILLA_OFFICIAL=1 + +ac_add_options --enable-application=xulrunner +ac_add_options --disable-tests +ac_add_options --with-xulrunner-stub-name=xulrunner-stub + +. "$topsrcdir/xulrunner/config/mozconfigs/common.override" diff --git a/application/xulrunner/config/mozconfigs/win32/xulrunner b/application/xulrunner/config/mozconfigs/win32/xulrunner new file mode 100644 index 000000000..4c8b596a5 --- /dev/null +++ b/application/xulrunner/config/mozconfigs/win32/xulrunner @@ -0,0 +1,16 @@ +. "$topsrcdir/xulrunner/config/mozconfigs/common" + +export MOZILLA_OFFICIAL=1 +export JAVA_HOME=/d/jdk1.6.0_14 + +ac_add_options --enable-application=xulrunner +ac_add_options --enable-jemalloc +ac_add_options --disable-tests + +if test "$PROCESSOR_ARCHITECTURE" = "AMD64" -o "$PROCESSOR_ARCHITEW6432" = "AMD64"; then + . $topsrcdir/build/win32/mozconfig.vs2013-win64 +else + . $topsrcdir/build/win32/mozconfig.vs2010 +fi + +. "$topsrcdir/xulrunner/config/mozconfigs/common.override" diff --git a/application/xulrunner/config/mozconfigs/win64/xulrunner b/application/xulrunner/config/mozconfigs/win64/xulrunner new file mode 100644 index 000000000..7dbade2bb --- /dev/null +++ b/application/xulrunner/config/mozconfigs/win64/xulrunner @@ -0,0 +1,15 @@ +. "$topsrcdir/xulrunner/config/mozconfigs/common" + +ac_add_options --target=x86_64-pc-mingw32 +ac_add_options --host=x86_64-pc-mingw32 + +export MOZILLA_OFFICIAL=1 +export JAVA_HOME=/d/jdk1.6.0_14 + +ac_add_options --enable-application=xulrunner +ac_add_options --enable-jemalloc +ac_add_options --disable-tests + +. $topsrcdir/build/win64/mozconfig.vs2013 + +. "$topsrcdir/xulrunner/config/mozconfigs/common.override" diff --git a/application/xulrunner/configure.in b/application/xulrunner/configure.in new file mode 100644 index 000000000..825faaddd --- /dev/null +++ b/application/xulrunner/configure.in @@ -0,0 +1,11 @@ +dnl -*- Mode: Autoconf; tab-width: 2; indent-tabs-mode: nil; -*- +dnl vi: set tabstop=2 shiftwidth=2 expandtab: +dnl This Source Code Form is subject to the terms of the Mozilla Public +dnl License, v. 2.0. If a copy of the MPL was not distributed with this +dnl file, You can obtain one at http://mozilla.org/MPL/2.0/. + +dnl Things we need to carry from confvars.sh +AC_SUBST(MOZ_XULRUNNER) +AC_DEFINE(MOZ_XULRUNNER) + +dnl Optional parts of the build. diff --git a/application/xulrunner/confvars.sh b/application/xulrunner/confvars.sh new file mode 100644 index 000000000..a317df2a6 --- /dev/null +++ b/application/xulrunner/confvars.sh @@ -0,0 +1,28 @@ +#! /bin/sh +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +MOZ_XULRUNNER=1 +MC_OFFICIAL=1 + +MOZ_APP_NAME=xulrunner +MOZ_APP_DISPLAYNAME=XULRunner +MOZ_APP_VERSION=$MOZILLA_VERSION +MOZ_CHROME_FILE_FORMAT=omni + +MOZ_UPDATER=1 + +if test "$OS_ARCH" = "WINNT"; then + MOZ_MAINTENANCE_SERVICE= +fi + +MOZ_PLACES=1 +MOZ_WEBRTC=1 +MOZ_WEBGL_CONFORMANT=1 + +MOZ_EXTENSIONS_DEFAULT=" gio" + +MOZ_SERVICES_COMMON=1 +MOZ_SERVICES_SYNC=1 +MOZ_SERVICES_HEALTHREPORT= diff --git a/application/xulrunner/examples/moz.build b/application/xulrunner/examples/moz.build new file mode 100644 index 000000000..a1782b42f --- /dev/null +++ b/application/xulrunner/examples/moz.build @@ -0,0 +1,7 @@ +# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +DIRS += ['simple'] diff --git a/application/xulrunner/examples/simple/application.ini b/application/xulrunner/examples/simple/application.ini new file mode 100644 index 000000000..39c051422 --- /dev/null +++ b/application/xulrunner/examples/simple/application.ini @@ -0,0 +1,43 @@ +#filter substitution +[App] +; +; This field specifies your organization's name. This field is recommended, +; but optional. +Vendor=MozillaTest +; +; This field specifies your application's name. This field is required. +Name=Simple +; +; This field specifies your application's version. This field is required. +Version=0.1 +; +; This field specifies your application's build ID (timestamp). This field is +; required. +BuildID=20070625 +; +; This field specifies a compact copyright notice for your application. This +; field is optional. +Copyright=Copyright (c) 2004 Mozilla.org +; +; This ID is just an example. Every XUL app ought to have it's own unique ID. +; You can use the microsoft "guidgen" or "uuidgen" tools, or go on +; irc.mozilla.org and /msg botbot uuid. This field is optional. +ID={3aea3f07-ffe3-4060-bb03-bff3a5365e90} + +[Gecko] +; +; This field is required. It specifies the minimum Gecko version that this +; application requires. +MinVersion=@MOZILLA_VERSION_U@ +; +; This field is optional. It specifies the maximum Gecko version that this +; application requires. It should be specified if your application uses +; unfrozen interfaces. +MaxVersion=@MOZILLA_VERSION_U@ + +[Shell] +; +; This field specifies the location of your application's main icon with file +; extension excluded. NOTE: Unix style file separators are required. This +; field is optional. +Icon=chrome/icons/default/simple diff --git a/application/xulrunner/examples/simple/components/moz.build b/application/xulrunner/examples/simple/components/moz.build new file mode 100644 index 000000000..8ff468534 --- /dev/null +++ b/application/xulrunner/examples/simple/components/moz.build @@ -0,0 +1,7 @@ +# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +DIRS += ['public', 'src'] diff --git a/application/xulrunner/examples/simple/components/public/moz.build b/application/xulrunner/examples/simple/components/public/moz.build new file mode 100644 index 000000000..3a611f85a --- /dev/null +++ b/application/xulrunner/examples/simple/components/public/moz.build @@ -0,0 +1,13 @@ +# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +XPIDL_SOURCES += [ + 'nsISimpleTest.idl', +] + +XPIDL_MODULE = 'simple' + +XPI_NAME = 'simple' diff --git a/application/xulrunner/examples/simple/components/public/nsISimpleTest.idl b/application/xulrunner/examples/simple/components/public/nsISimpleTest.idl new file mode 100644 index 000000000..99b9b86af --- /dev/null +++ b/application/xulrunner/examples/simple/components/public/nsISimpleTest.idl @@ -0,0 +1,15 @@ +/* vim:set ts=2 sw=2 sts=2 et cin: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsISupports.idl" + +[scriptable, uuid(f2f71d91-0451-47ec-aaa0-166663a7711a)] +interface nsISimpleTest : nsISupports +{ + /** + * This interface adds two numbers together and returns the result. + */ + long add(in long a, in long b); +}; diff --git a/application/xulrunner/examples/simple/components/src/SimpleTest.cpp b/application/xulrunner/examples/simple/components/src/SimpleTest.cpp new file mode 100644 index 000000000..06249abdd --- /dev/null +++ b/application/xulrunner/examples/simple/components/src/SimpleTest.cpp @@ -0,0 +1,54 @@ +/* vim:set ts=2 sw=2 sts=2 et cin: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include +#include "nsISimpleTest.h" +#include "mozilla/ModuleUtils.h" + +class SimpleTest : public nsISimpleTest +{ + ~SimpleTest() {} +public: + NS_DECL_ISUPPORTS + NS_DECL_NSISIMPLETEST +}; + +NS_IMPL_ISUPPORTS(SimpleTest, nsISimpleTest) + +NS_IMETHODIMP +SimpleTest::Add(int32_t a, int32_t b, int32_t *r) +{ + printf("add(%d,%d) from C++\n", a, b); + + *r = a + b; + return NS_OK; +} + +NS_GENERIC_FACTORY_CONSTRUCTOR(SimpleTest) + +// 5e14b432-37b6-4377-923b-c987418d8429 +#define SIMPLETEST_CID \ + { 0x5e14b432, 0x37b6, 0x4377, \ + { 0x92, 0x3b, 0xc9, 0x87, 0x41, 0x8d, 0x84, 0x29 } } + +NS_DEFINE_NAMED_CID(SIMPLETEST_CID); + +static const mozilla::Module::CIDEntry kSimpleCIDs[] = { + { &kSIMPLETEST_CID, false, nullptr, SimpleTestConstructor }, + { nullptr } +}; + +static const mozilla::Module::ContractIDEntry kSimpleContracts[] = { + { "@test.mozilla.org/simple-test;1?impl=c++", &kSIMPLETEST_CID }, + { nullptr } +}; + +static const mozilla::Module kSimpleModule = { + mozilla::Module::kVersion, + kSimpleCIDs, + kSimpleContracts +}; + +NSMODULE_DEFN(SimpleTestModule) = &kSimpleModule; diff --git a/application/xulrunner/examples/simple/components/src/SimpleTest.js b/application/xulrunner/examples/simple/components/src/SimpleTest.js new file mode 100644 index 000000000..e6cf90660 --- /dev/null +++ b/application/xulrunner/examples/simple/components/src/SimpleTest.js @@ -0,0 +1,27 @@ +/* vim:set ts=2 sw=2 sts=2 et cin: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); + +function SimpleTest() { +} + +SimpleTest.prototype = { + classID: Components.ID("{4177e257-a0dc-49b9-a774-522a000a49fa}"), + + QueryInterface: function(iid) { + if (iid.equals(Components.interfaces.nsISimpleTest) || + iid.equals(Components.interfaces.nsISupports)) + return this; + throw Components.results.NS_ERROR_NO_INTERFACE; + }, + + add: function(a, b) { + dump("add(" + a + "," + b + ") from JS\n"); + return a + b; + } +}; + +this.NSGetFactory = XPCOMUtils.generateNSGetFactory([SimpleTest]); diff --git a/application/xulrunner/examples/simple/components/src/SimpleTest.manifest b/application/xulrunner/examples/simple/components/src/SimpleTest.manifest new file mode 100644 index 000000000..c7388b9d7 --- /dev/null +++ b/application/xulrunner/examples/simple/components/src/SimpleTest.manifest @@ -0,0 +1,2 @@ +component {4177e257-a0dc-49b9-a774-522a000a49fa} SimpleTest.js +contract @test.mozilla.org/simple-test;1?impl=js {4177e257-a0dc-49b9-a774-522a000a49fa} diff --git a/application/xulrunner/examples/simple/components/src/moz.build b/application/xulrunner/examples/simple/components/src/moz.build new file mode 100644 index 000000000..153bfdd0c --- /dev/null +++ b/application/xulrunner/examples/simple/components/src/moz.build @@ -0,0 +1,21 @@ +# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +SOURCES += [ + 'SimpleTest.cpp', +] + +XPCOMBinaryComponent('simpletest') + +EXTRA_COMPONENTS += [ + 'SimpleTest.js', + 'SimpleTest.manifest', +] + +XPI_NAME = 'simple' + +if CONFIG['GNU_CXX']: + CXXFLAGS += ['-Wshadow'] diff --git a/application/xulrunner/examples/simple/content/contents.rdf b/application/xulrunner/examples/simple/content/contents.rdf new file mode 100644 index 000000000..e69de29bb diff --git a/application/xulrunner/examples/simple/content/simple.js b/application/xulrunner/examples/simple/content/simple.js new file mode 100644 index 000000000..acf6f1029 --- /dev/null +++ b/application/xulrunner/examples/simple/content/simple.js @@ -0,0 +1,17 @@ +/* vim:set ts=2 sw=2 sts=2 et cin: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +function onButtonClick() { + var textbox = document.getElementById("textbox"); + + var contractid = (textbox.value % 2 == 0) ? + "@test.mozilla.org/simple-test;1?impl=js" : + "@test.mozilla.org/simple-test;1?impl=c++"; + + var test = Components.classes[contractid]. + createInstance(Components.interfaces.nsISimpleTest); + + textbox.value = test.add(textbox.value, 1); +} diff --git a/application/xulrunner/examples/simple/content/simple.xul b/application/xulrunner/examples/simple/content/simple.xul new file mode 100644 index 000000000..6ff915d0c --- /dev/null +++ b/application/xulrunner/examples/simple/content/simple.xul @@ -0,0 +1,20 @@ + +# vim:set ts=8 sw=8 sts=8 noet: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + + + + + +