diff --git a/common/Makefile b/common/Makefile index f5ab3ffa..827164c0 100644 --- a/common/Makefile +++ b/common/Makefile @@ -21,13 +21,14 @@ JAR_DIRS = content skin locale JAR_TEXTS = js css dtd xml xul html xhtml xsl JAR_BINS = png -JAR = chrome/$(NAME).jar +CHROME = chrome/ +JAR = $(CHROME)$(NAME).jar XPI_BASES = $(JAR_BASES) $(TOP)/.. XPI_FILES = install.rdf TODO AUTHORS Donors NEWS LICENSE.txt XPI_DIRS = modules components chrome defaults -XPI_TEXTS = js jsm -XPI_BINS = jar +XPI_TEXTS = js jsm $(JAR_TEXTS) +XPI_BINS = $(JAR_BINS) XPI_NAME = $(NAME)_$(VERSION) XPI_PATH = ../downloads/$(XPI_NAME) @@ -46,7 +47,7 @@ CURL ?= curl #### rules -TARGETS = all help info jar xpi install clean distclean install installxpi $(JAR) +TARGETS = all help info jar xpi install clean distclean install installxpi $(CHROME) $(JAR) $(TARGETS:%=\%.%): echo MAKE $* $(@:$*.%=%) $(MAKE) -C $* $(@:$*.%=%) @@ -157,7 +158,7 @@ distclean: #### xpi -$(XPI): $(JAR) +$(XPI): $(CHROME) @echo "Building XPI..." mkdir -p $(XPI_PATH) $(AWK) -v 'name=$(NAME)' -f $(BASE)/process_manifest.awk $(TOP)/chrome.manifest >$(XPI_PATH)/chrome.manifest @@ -166,8 +167,8 @@ $(XPI): $(JAR) #### jar -$(JAR): - @echo "Building JAR..." - $(MAKE_JAR) "$(JAR)" "$(JAR_BASES)" "$(JAR_DIRS)" "$(JAR_TEXTS)" "$(JAR_BINS)" "$(JAR_FILES)" +$(CHROME) $(JAR): + @echo "Packaging chrome..." + $(MAKE_JAR) -r "$(@)" "$(JAR_BASES)" "$(JAR_DIRS)" "$(JAR_TEXTS)" "$(JAR_BINS)" "$(JAR_FILES)" @echo "SUCCESS: $@" diff --git a/common/content/bookmarks.js b/common/content/bookmarks.js index 8ff23a0f..440a65eb 100644 --- a/common/content/bookmarks.js +++ b/common/content/bookmarks.js @@ -186,15 +186,6 @@ const Bookmarks = Module("bookmarks", { } }, - /** - * Returns the search engine for the given alias. - * - * @param {string} alias The alias of the search engine to be returned. - * @returns {nsISearchEngine} The search engine. - */ - getSearchEngine: function getSearchEngine(alias) - array.nth(this.searchEngines, function (e) e.keyword === alias, 0), - getSearchEngines: deprecated("Please use bookmarks.searchEngines instead", function getSearchEngines() this.searchEngines), /** * Returns a list of all visible search engines in the search @@ -204,7 +195,7 @@ const Bookmarks = Module("bookmarks", { get searchEngines() { let searchEngines = []; let aliases = {}; - return services.browserSearch.getVisibleEngines({}).map(function (engine) { + return array.toObject(services.browserSearch.getVisibleEngines({}).map(function (engine) { let alias = engine.alias; if (!alias || !/^[a-z_-]+$/.test(alias)) alias = engine.name.replace(/^\W*([a-zA-Z_-]+).*/, "$1").toLowerCase(); @@ -216,8 +207,8 @@ const Bookmarks = Module("bookmarks", { else aliases[alias] = 0; - return { keyword: alias, __proto__: engine, title: engine.description, icon: engine.iconURI && engine.iconURI.spec }; - }); + return [alias, { keyword: alias, __proto__: engine, title: engine.description, icon: engine.iconURI && engine.iconURI.spec }]; + })); }, /** @@ -239,7 +230,7 @@ const Bookmarks = Module("bookmarks", { getSuggestions: function getSuggestions(engineName, query, callback) { const responseType = "application/x-suggestions+json"; - let engine = this.getSearchEngine(engineName); + let engine = this.searchEngines[engineName]; if (engine && engine.supportsResponseType(responseType)) var queryURI = engine.getSubmission(query, responseType).uri.spec; if (!queryURI) @@ -295,7 +286,7 @@ const Bookmarks = Module("bookmarks", { param = url.substr(offset + 1); } - var engine = bookmarks.getSearchEngine(keyword); + var engine = bookmarks.searchEngines[keyword]; if (engine) { var submission = engine.getSubmission(param, null); return [submission.uri.spec, submission.postData]; @@ -602,14 +593,14 @@ const Bookmarks = Module("bookmarks", { let engines = bookmarks.searchEngines; context.title = ["Search Keywords"]; - context.completions = array(values(keywords)).concat(engines).array; + context.completions = iterAll(values(keywords), values(engines)); context.keys = { text: "keyword", description: "title", icon: "icon" }; if (!space || noSuggest) return; context.fork("suggest", keyword.length + space.length, this, "searchEngineSuggest", - keyword, true); + keyword, true); let item = keywords[keyword]; if (item && item.url.indexOf("%s") > -1) @@ -652,7 +643,7 @@ const Bookmarks = Module("bookmarks", { let engineList = (engineAliases || options["suggestengines"].join(",") || "google").split(","); engineList.forEach(function (name) { - let engine = services.browserSearch.getEngineByAlias(name); + let engine = bookmarks.searchEngines[name]; if (!engine) return; let [, word] = /^\s*(\S+)/.exec(context.filter) || []; diff --git a/common/content/io.js b/common/content/io.js index 7b009baa..5cd87618 100644 --- a/common/content/io.js +++ b/common/content/io.js @@ -11,7 +11,7 @@ plugins.contexts = {}; function Script(file) { - let self = plugins[file.path]; + let self = set.has(plugins, file.path) && plugins[file.path]; if (self) { if (self.onUnload) self.onUnload(); diff --git a/common/make_jar.sh b/common/make_jar.sh index 4abe91ab..488a6dbe 100644 --- a/common/make_jar.sh +++ b/common/make_jar.sh @@ -1,6 +1,9 @@ #!/bin/sh set -e +fromrepo= +if [ $1 = -r ]; then shift; fromrepo=1; fi + top=$(pwd) jar=$1 bases=$2 @@ -20,7 +23,7 @@ then sed() { $sed -E "$@"; } else sed() { $sed -r "$@"; } fi -if $HG root >/dev/null 2>&1 +if test -n "$fromrepo" && $HG root >/dev/null 2>&1 then root="$($HG root)" which cygpath >/dev/null 2>&1 && root=$(cygpath $root) @@ -28,7 +31,6 @@ then mf="$($HG --config ui.debug=false --config ui.verbose=false manifest)" find=$(which find) find() { - $find "$@" -name '*.jar' echo "$mf" | sed -n "s!$(pwd | sed "s!$root/?!!")/?!!p" | grep "^$1" exit 1 @@ -47,12 +49,14 @@ copytext() { ( echo "modified: $1"; diff -u "$1" "$2" | grep '^[-+][^-+]' ) } +[ -e "$top/$jar" ] && rm -rf "$top/$jar" + for base in $bases do ( set -e cd $base - [ ${jar##*.} = jar ] && stage="$stage/${base##*/}" + [ ${jar##*.} != xpi ] && stage="$stage/${base##*/}" for dir in $dirs do for f in $(getfiles "$bin" "$dir") @@ -74,8 +78,16 @@ do ) || exit 1 done -[ -f "$top/$jar" ] && rm -f "$top/$jar" -(set -e; cd $stage; zip -9r "$top/$jar" *) || exit 1 -rm -rf "$stage" +( + set -e; + cd $stage; + case $jar in + (*/) if [ "$stage" != "$top/$jar" ]; then mv * $top/$jar; fi;; + (*) zip -9r "$top/$jar" *;; + esac +) || exit 1 + +[ "$stage" != "$top/$jar" ] && rm -rf "$stage" +true # vim:se ft=sh sts=4 sw=4 et: diff --git a/common/process_manifest.awk b/common/process_manifest.awk index 17027823..de7aa94c 100644 --- a/common/process_manifest.awk +++ b/common/process_manifest.awk @@ -2,7 +2,10 @@ content && $NF ~ /^[a-z]/ { $NF = "/" name "/" $NF } content { sub(/^\.\./, "", $NF); - $NF = "jar:chrome/" name ".jar!" $NF + if (isjar) + $NF = "jar:chrome/" name ".jar!" $NF + else + $NF = "chrome" $NF } { sub("^\\.\\./common/", "", $NF)