author | Philipp von Weitershausen <philipp@weitershausen.de> |
Wed, 07 Dec 2011 07:52:26 +0800 | |
changeset 82129 | e2ba243f96a5705bd20f4a591bf724e19cd821eb |
parent 82128 | 73b2370adc9d807ff421af9862424d2a321ce9b3 |
child 82130 | 12c1f73c461f4c2657ead0cf7da1c9e4b744d1bb |
push id | 21582 |
push user | bmo@edmorley.co.uk |
push date | Wed, 07 Dec 2011 09:30:09 +0000 |
treeherder | mozilla-central@489f2d51b011 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | cjones |
bugs | 699876 |
milestone | 11.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
copy from mobile/xul/Makefile.in copy to b2g/Makefile.in --- a/mobile/xul/Makefile.in +++ b/b2g/Makefile.in @@ -10,49 +10,39 @@ # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License # for the specific language governing rights and limitations under the # License. # # The Original Code is Mozilla. # # The Initial Developer of the Original Code is # the Mozilla Foundation <http://www.mozilla.org/>. -# Portions created by the Initial Developer are Copyright (C) 2007 +# Portions created by the Initial Developer are Copyright (C) 2011 # the Initial Developer. All Rights Reserved. # # Contributor(s): -# Mark Finkle <mfinkle@mozilla.com> -# Joel Maher <jmaher@mozilla.com> +# Chris Jones <jones.chris.g@gmail.com> # # Alternatively, the contents of this file may be used under the terms of # either the GNU General Public License Version 2 or later (the "GPL"), or # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), # in which case the provisions of the GPL or the LGPL are applicable instead # of those above. If you wish to allow use of your version of this file only # under the terms of either the GPL or the LGPL, and not to allow others to # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** -DEPTH = ../.. +DEPTH = .. topsrcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk -DIRS = chrome locales components modules themes/core app - -ifndef LIBXUL_SDK -PARALLEL_DIRS += $(DEPTH)/xulrunner/tools/redit -endif +DIRS = chrome locales app include $(topsrcdir)/config/rules.mk include $(topsrcdir)/testing/testsuite-targets.mk - -package-mobile-tests: - $(MAKE) stage-mochitest DIST_BIN=$(DEPTH)/$(DIST)/bin/xulrunner - $(NSINSTALL) -D $(DIST)/$(PKG_PATH) - @(cd $(PKG_STAGE) && tar $(TAR_CREATE_FLAGS) - *) | bzip2 -f > $(DIST)/$(PKG_PATH)$(TEST_PACKAGE)
copy from mobile/xul/app/Makefile.in copy to b2g/app/Makefile.in --- a/mobile/xul/app/Makefile.in +++ b/b2g/app/Makefile.in @@ -10,99 +10,100 @@ # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License # for the specific language governing rights and limitations under the # License. # # The Original Code is Mozilla. # # The Initial Developer of the Original Code is # the Mozilla Foundation <http://www.mozilla.org/>. -# Portions created by the Initial Developer are Copyright (C) 2007 +# Portions created by the Initial Developer are Copyright (C) 2011 # the Initial Developer. All Rights Reserved. # # Contributor(s): -# Mark Finkle <mfinkle@mozilla.com> +# Chris Jones <jones.chris.g@gmail.com> # # Alternatively, the contents of this file may be used under the terms of # either the GNU General Public License Version 2 or later (the "GPL"), or # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), # in which case the provisions of the GPL or the LGPL are applicable instead # of those above. If you wish to allow use of your version of this file only # under the terms of either the GPL or the LGPL, and not to allow others to # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** -DEPTH = ../../.. +DEPTH = ../.. topsrcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk -DIRS = profile/extensions - -PREF_JS_EXPORTS = $(srcdir)/mobile.js +PREF_JS_EXPORTS = $(srcdir)/b2g.js ifndef LIBXUL_SDK -ifneq (Android,$(OS_TARGET)) PROGRAM=$(MOZ_APP_NAME)$(BIN_SUFFIX) CPPSRCS = nsBrowserApp.cpp LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/base LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/build LOCAL_INCLUDES += -I$(DEPTH)/build DEFINES += -DXPCOM_GLUE STL_FLAGS= +LIBS += $(JEMALLOC_LIBS) + LIBS += \ $(EXTRA_DSO_LIBS) \ $(XPCOM_STANDALONE_GLUE_LDOPTS) \ $(NULL) -ifeq ($(MOZ_PLATFORM_MAEMO),6) -LIBS += \ - $(LIBXUL_DIST)/../widget/src/qt/faststartupqt/$(LIB_PREFIX)faststartupqt.$(LIB_SUFFIX) \ - $(MOZ_QT_LIBS) \ - $(NULL) -LOCAL_INCLUDES += -I$(topsrcdir)/widget/src/qt/faststartupqt $(TK_CFLAGS) -endif - ifeq ($(OS_ARCH),WINNT) OS_LIBS += $(call EXPAND_LIBNAME,version) endif ifdef _MSC_VER # Always enter a Windows program through wmain, whether or not we're # a console application. WIN32_EXE_LDFLAGS += -ENTRY:wmainCRTStartup endif -endif endif #LIBXUL_SDK -# Make sure the standalone glue doesn't try to get libxpcom.so from mobile/app. +# Make sure the standalone glue doesn't try to get libxpcom.so from b2g/app. NSDISTMODE = copy include $(topsrcdir)/config/rules.mk -APP_ICON = mobile +APP_ICON = b2g DEFINES += \ -DAPP_NAME=$(MOZ_APP_NAME) \ -DAPP_VERSION=$(MOZ_APP_VERSION) \ -DMOZ_UPDATER=$(MOZ_UPDATER) \ $(NULL) +# strip a trailing slash from the repo URL because it's not always present, +# and we want to construct a working URL in buildconfig.html +# make+shell+sed = awful +_dollar=$$ +SOURCE_REPO := $(shell cd $(srcdir)/.. && hg showconfig paths.default 2>/dev/null | head -n1 | sed -e "s/^ssh:/http:/" -e "s/\/$(_dollar)//" ) +# extra sanity check for old versions of hg +# that don't support showconfig +ifeq (http,$(patsubst http%,http,$(SOURCE_REPO))) +DEFINES += -DMOZ_SOURCE_REPO="$(SOURCE_REPO)" +endif + ifeq ($(OS_ARCH),WINNT) REDIT_PATH = $(LIBXUL_DIST)/bin endif APP_BINARY = $(MOZ_APP_NAME)$(BIN_SUFFIX) ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT)) @@ -126,17 +127,17 @@ else APPFILES = MacOS endif libs repackage:: mkdir -p $(DIST)/$(APP_NAME).app/Contents/MacOS rsync -a --exclude "*.in" $(srcdir)/macbuild/Contents $(DIST)/$(APP_NAME).app --exclude English.lproj mkdir -p $(DIST)/$(APP_NAME).app/Contents/Resources/$(AB).lproj rsync -a --exclude "*.in" $(srcdir)/macbuild/Contents/Resources/English.lproj/ $(DIST)/$(APP_NAME).app/Contents/Resources/$(AB).lproj - sed -e "s/%APP_VERSION%/$(APP_VERSION)/" -e "s/%APP_NAME%/$(APP_NAME)/" -e "s/%APP_BINARY%/$(APP_BINARY)/" $(srcdir)/macbuild/Contents/Info.plist.in > $(DIST)/$(APP_NAME).app/Contents/Info.plist + sed -e "s/%MOZ_APP_VERSION%/$(MOZ_APP_VERSION)/" -e "s/%MOZ_APP_NAME%/$(MOZ_APP_NAME)/" -e "s/%APP_VERSION%/$(APP_VERSION)/" -e "s/%APP_NAME%/$(APP_NAME)/" -e "s/%APP_BINARY%/$(APP_BINARY)/" $(srcdir)/macbuild/Contents/Info.plist.in > $(DIST)/$(APP_NAME).app/Contents/Info.plist sed -e "s/%APP_VERSION%/$(APP_VERSION)/" -e "s/%APP_NAME%/$(APP_NAME)/" $(srcdir)/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in | iconv -f UTF-8 -t UTF-16 > $(DIST)/$(APP_NAME).app/Contents/Resources/$(AB).lproj/InfoPlist.strings rsync -a $(DIST)/bin/ $(DIST)/$(APP_NAME).app/Contents/$(APPFILES) $(RM) $(DIST)/$(APP_NAME).app/Contents/$(APPFILES)/mangle $(DIST)/$(APP_NAME).app/Contents/$(APPFILES)/shlibsign ifdef LIBXUL_SDK cp $(LIBXUL_DIST)/bin/xulrunner$(BIN_SUFFIX) $(DIST)/$(APP_NAME).app/Contents/MacOS/$(APP_BINARY) rsync -a --exclude nsinstall --copy-unsafe-links $(LIBXUL_DIST)/XUL.framework $(DIST)/$(APP_NAME).app/Contents/Frameworks else rm -f $(DIST)/$(APP_NAME).app/Contents/MacOS/$(PROGRAM) @@ -152,21 +153,16 @@ ifdef LIBXUL_SDK endif ifndef SKIP_COPY_XULRUNNER ifdef LIBXUL_SDK $(NSINSTALL) -D $(DIST)/bin/xulrunner (cd $(LIBXUL_SDK)/bin && tar $(TAR_CREATE_FLAGS) - .) | (cd $(DIST)/bin/xulrunner && tar -xf -) endif endif # SKIP_COPY_XULRUNNER -ifeq ($(MOZ_PLATFORM_MAEMO),6) - $(NSINSTALL) -D $(DIST)/bin/res/drawable - cp $(srcdir)/maemo/* $(DIST)/bin/res/drawable/ - cp $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/content/favicon32.png $(DIST)/bin/res/drawable/ -endif $(NSINSTALL) -D $(DIST)/bin/chrome/icons/default ifeq ($(OS_ARCH),WINNT) cp $(srcdir)/$(APP_ICON).ico $(DIST)/bin/chrome/icons/default/$(APP_ICON).ico $(REDIT_PATH)/redit$(HOST_BIN_SUFFIX) $(DIST)/bin/$(APP_BINARY) $(srcdir)/$(APP_ICON).ico endif endif
new file mode 100644 index 0000000000000000000000000000000000000000..38312abac42830818edef700470cf1c59b25bb81 GIT binary patch literal 4286 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
new file mode 100644 --- /dev/null +++ b/b2g/app/b2g.js @@ -0,0 +1,395 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Mobile Browser. + * + * The Initial Developer of the Original Code is + * Mozilla Corporation. + * Portions created by the Initial Developer are Copyright (C) 2008 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Matt Brubeck <mbrubeck@mozilla.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#filter substitution + +pref("toolkit.defaultChromeURI", "chrome://browser/content/shell.xul"); +pref("general.useragent.compatMode.firefox", true); +pref("browser.chromeURL", "chrome://browser/content/"); +#ifdef MOZ_OFFICIAL_BRANDING +pref("browser.homescreenURL", "file:///system/home/homescreen.html"); +#else +pref("browser.homescreenURL", "file:///data/local/homescreen.html,file:///system/home/homescreen.html"); +#endif + +// Device pixel to CSS px ratio, in percent. Set to -1 to calculate based on display density. +pref("browser.viewport.scaleRatio", -1); + +/* allow scrollbars to float above chrome ui */ +pref("ui.scrollbarsCanOverlapContent", 1); + +/* cache prefs */ +pref("browser.cache.disk.enable", false); +pref("browser.cache.disk.capacity", 0); // kilobytes +pref("browser.cache.disk.smart_size.enabled", false); +pref("browser.cache.disk.smart_size.first_run", false); + +pref("browser.cache.memory.enable", true); +pref("browser.cache.memory.capacity", 1024); // kilobytes + +/* image cache prefs */ +pref("image.cache.size", 1048576); // bytes + +/* offline cache prefs */ +pref("browser.offline-apps.notify", true); +pref("browser.cache.offline.enable", true); +pref("browser.cache.offline.capacity", 5120); // kilobytes +pref("offline-apps.quota.max", 2048); // kilobytes +pref("offline-apps.quota.warn", 1024); // kilobytes + +/* protocol warning prefs */ +pref("network.protocol-handler.warn-external.tel", false); +pref("network.protocol-handler.warn-external.mailto", false); +pref("network.protocol-handler.warn-external.vnd.youtube", false); + +/* http prefs */ +pref("network.http.pipelining", true); +pref("network.http.pipelining.ssl", true); +pref("network.http.proxy.pipelining", true); +pref("network.http.pipelining.maxrequests" , 6); +pref("network.http.keep-alive.timeout", 600); +pref("network.http.max-connections", 6); +pref("network.http.max-connections-per-server", 4); +pref("network.http.max-persistent-connections-per-server", 4); +pref("network.http.max-persistent-connections-per-proxy", 4); + +// See bug 545869 for details on why these are set the way they are +pref("network.buffer.cache.count", 24); +pref("network.buffer.cache.size", 16384); + +/* session history */ +pref("browser.sessionhistory.max_total_viewers", 1); +pref("browser.sessionhistory.max_entries", 50); + +/* session store */ +pref("browser.sessionstore.resume_session_once", false); +pref("browser.sessionstore.resume_from_crash", true); +pref("browser.sessionstore.resume_from_crash_timeout", 60); // minutes +pref("browser.sessionstore.interval", 10000); // milliseconds +pref("browser.sessionstore.max_tabs_undo", 1); + +/* these should help performance */ +pref("mozilla.widget.force-24bpp", true); +pref("mozilla.widget.use-buffer-pixmap", true); +pref("mozilla.widget.disable-native-theme", true); +pref("layout.reflow.synthMouseMove", false); + +/* download manager (don't show the window or alert) */ +pref("browser.download.useDownloadDir", true); +pref("browser.download.folderList", 1); // Default to ~/Downloads +pref("browser.download.manager.showAlertOnComplete", false); +pref("browser.download.manager.showAlertInterval", 2000); +pref("browser.download.manager.retention", 2); +pref("browser.download.manager.showWhenStarting", false); +pref("browser.download.manager.closeWhenDone", true); +pref("browser.download.manager.openDelay", 0); +pref("browser.download.manager.focusWhenStarting", false); +pref("browser.download.manager.flashCount", 2); +pref("browser.download.manager.displayedHistoryDays", 7); + +/* download alerts (disabled above) */ +pref("alerts.slideIncrement", 1); +pref("alerts.slideIncrementTime", 10); +pref("alerts.totalOpenTime", 6000); +pref("alerts.height", 50); + +/* download helper */ +pref("browser.helperApps.deleteTempFileOnExit", false); + +/* password manager */ +pref("signon.rememberSignons", true); +pref("signon.expireMasterPassword", false); +pref("signon.SignonFileName", "signons.txt"); + +/* autocomplete */ +pref("browser.formfill.enable", true); + +/* spellcheck */ +pref("layout.spellcheckDefault", 0); + +/* block popups by default, and notify the user about blocked popups */ +pref("dom.disable_open_during_load", true); +pref("privacy.popups.showBrowserMessage", true); + +pref("keyword.enabled", true); +pref("keyword.URL", "http://www.google.com/m?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q="); + +pref("accessibility.typeaheadfind", false); +pref("accessibility.typeaheadfind.timeout", 5000); +pref("accessibility.typeaheadfind.flashBar", 1); +pref("accessibility.typeaheadfind.linksonly", false); +pref("accessibility.typeaheadfind.casesensitive", 0); + +// pointer to the default engine name +pref("browser.search.defaultenginename", "chrome://browser/locale/region.properties"); + +// SSL error page behaviour +pref("browser.ssl_override_behavior", 2); +pref("browser.xul.error_pages.expert_bad_cert", false); + +// disable logging for the search service by default +pref("browser.search.log", false); + +// disable updating +pref("browser.search.update", false); +pref("browser.search.update.log", false); +pref("browser.search.updateinterval", 6); + +// enable search suggestions by default +pref("browser.search.suggest.enabled", true); + +// tell the search service that we don't really expose the "current engine" +pref("browser.search.noCurrentEngine", true); + +// enable xul error pages +pref("browser.xul.error_pages.enabled", true); + +// disable color management +pref("gfx.color_management.mode", 0); + +// don't allow JS to move and resize existing windows +pref("dom.disable_window_move_resize", true); + +// prevent click image resizing for nsImageDocument +pref("browser.enable_click_image_resizing", false); + +// controls which bits of private data to clear. by default we clear them all. +pref("privacy.item.cache", true); +pref("privacy.item.cookies", true); +pref("privacy.item.offlineApps", true); +pref("privacy.item.history", true); +pref("privacy.item.formdata", true); +pref("privacy.item.downloads", true); +pref("privacy.item.passwords", true); +pref("privacy.item.sessions", true); +pref("privacy.item.geolocation", true); +pref("privacy.item.siteSettings", true); +pref("privacy.item.syncAccount", true); + +// URL to the Learn More link XXX this is the firefox one. Bug 495578 fixes this. +pref("browser.geolocation.warning.infoURL", "http://www.mozilla.com/%LOCALE%/firefox/geolocation/"); + +// base url for the wifi geolocation network provider +pref("geo.wifi.uri", "https://maps.googleapis.com/maps/api/browserlocation/json"); + +// enable geo +pref("geo.enabled", true); + +// content sink control -- controls responsiveness during page load +// see https://bugzilla.mozilla.org/show_bug.cgi?id=481566#c9 +pref("content.sink.enable_perf_mode", 2); // 0 - switch, 1 - interactive, 2 - perf +pref("content.sink.pending_event_mode", 0); +pref("content.sink.perf_deflect_count", 1000000); +pref("content.sink.perf_parse_time", 50000000); + +pref("javascript.options.mem.high_water_mark", 32); + +// Maximum scripts runtime before showing an alert +pref("dom.max_chrome_script_run_time", 0); // disable slow script dialog for chrome +pref("dom.max_script_run_time", 20); + +// plugins +pref("plugin.disable", true); +pref("dom.ipc.plugins.enabled", true); + +// product URLs +// The breakpad report server to link to in about:crashes +pref("breakpad.reportURL", "http://crash-stats.mozilla.com/report/index/"); +pref("app.releaseNotesURL", "http://www.mozilla.com/%LOCALE%/b2g/%VERSION%/releasenotes/"); +pref("app.support.baseURL", "http://support.mozilla.com/b2g"); +pref("app.feedbackURL", "http://input.mozilla.com/feedback/"); +pref("app.privacyURL", "http://www.mozilla.com/%LOCALE%/m/privacy.html"); +pref("app.creditsURL", "http://www.mozilla.org/credits/"); +pref("app.featuresURL", "http://www.mozilla.com/%LOCALE%/b2g/features/"); +pref("app.faqURL", "http://www.mozilla.com/%LOCALE%/b2g/faq/"); + +// Name of alternate about: page for certificate errors (when undefined, defaults to about:neterror) +pref("security.alternate_certificate_error_page", "certerror"); + +pref("security.warn_viewing_mixed", false); // Warning is disabled. See Bug 616712. + +// Override some named colors to avoid inverse OS themes +pref("ui.-moz-dialog", "#efebe7"); +pref("ui.-moz-dialogtext", "#101010"); +pref("ui.-moz-field", "#fff"); +pref("ui.-moz-fieldtext", "#1a1a1a"); +pref("ui.-moz-buttonhoverface", "#f3f0ed"); +pref("ui.-moz-buttonhovertext", "#101010"); +pref("ui.-moz-combobox", "#fff"); +pref("ui.-moz-comboboxtext", "#101010"); +pref("ui.buttonface", "#ece7e2"); +pref("ui.buttonhighlight", "#fff"); +pref("ui.buttonshadow", "#aea194"); +pref("ui.buttontext", "#101010"); +pref("ui.captiontext", "#101010"); +pref("ui.graytext", "#b1a598"); +pref("ui.highlight", "#fad184"); +pref("ui.highlighttext", "#1a1a1a"); +pref("ui.infobackground", "#f5f5b5"); +pref("ui.infotext", "#000"); +pref("ui.menu", "#f7f5f3"); +pref("ui.menutext", "#101010"); +pref("ui.threeddarkshadow", "#000"); +pref("ui.threedface", "#ece7e2"); +pref("ui.threedhighlight", "#fff"); +pref("ui.threedlightshadow", "#ece7e2"); +pref("ui.threedshadow", "#aea194"); +pref("ui.window", "#efebe7"); +pref("ui.windowtext", "#101010"); +pref("ui.windowframe", "#efebe7"); + +// replace newlines with spaces on paste into single-line text boxes +pref("editor.singleLine.pasteNewlines", 2); + +// threshold where a tap becomes a drag, in 1/240" reference pixels +// The names of the preferences are to be in sync with nsEventStateManager.cpp +pref("ui.dragThresholdX", 25); +pref("ui.dragThresholdY", 25); + +// Layers Acceleration +pref("layers.acceleration.disabled", false); + +// Web Notifications +pref("notification.feature.enabled", true); + +// IndexedDB +pref("indexedDB.feature.enabled", true); +pref("dom.indexedDB.warningQuota", 5); + +// prevent video elements from preloading too much data +pref("media.preload.default", 1); // default to preload none +pref("media.preload.auto", 2); // preload metadata if preload=auto + +// 0: don't show fullscreen keyboard +// 1: always show fullscreen keyboard +// -1: show fullscreen keyboard based on threshold pref +pref("widget.ime.android.landscape_fullscreen", -1); +pref("widget.ime.android.fullscreen_threshold", 250); // in hundreths of inches + +// optimize images memory usage +pref("image.mem.decodeondraw", true); +pref("content.image.allow_locking", false); +pref("image.mem.min_discard_timeout_ms", 10000); + +// enable touch events interfaces +pref("dom.w3c_touch_events.enabled", true); +pref("dom.w3c_touch_events.safetyX", 0); // escape borders in units of 1/240" +pref("dom.w3c_touch_events.safetyY", 120); // escape borders in units of 1/240" + +#ifdef MOZ_SAFE_BROWSING +// Safe browsing does nothing unless this pref is set +pref("browser.safebrowsing.enabled", true); + +// Prevent loading of pages identified as malware +pref("browser.safebrowsing.malware.enabled", true); + +// Non-enhanced mode (local url lists) URL list to check for updates +pref("browser.safebrowsing.provider.0.updateURL", "http://safebrowsing.clients.google.com/safebrowsing/downloads?client={moz:client}&appver={moz:version}&pver=2.2"); + +pref("browser.safebrowsing.dataProvider", 0); + +// Does the provider name need to be localizable? +pref("browser.safebrowsing.provider.0.name", "Google"); +pref("browser.safebrowsing.provider.0.keyURL", "https://sb-ssl.google.com/safebrowsing/newkey?client={moz:client}&appver={moz:version}&pver=2.2"); +pref("browser.safebrowsing.provider.0.reportURL", "http://safebrowsing.clients.google.com/safebrowsing/report?"); +pref("browser.safebrowsing.provider.0.gethashURL", "http://safebrowsing.clients.google.com/safebrowsing/gethash?client={moz:client}&appver={moz:version}&pver=2.2"); + +// HTML report pages +pref("browser.safebrowsing.provider.0.reportGenericURL", "http://{moz:locale}.phish-generic.mozilla.com/?hl={moz:locale}"); +pref("browser.safebrowsing.provider.0.reportErrorURL", "http://{moz:locale}.phish-error.mozilla.com/?hl={moz:locale}"); +pref("browser.safebrowsing.provider.0.reportPhishURL", "http://{moz:locale}.phish-report.mozilla.com/?hl={moz:locale}"); +pref("browser.safebrowsing.provider.0.reportMalwareURL", "http://{moz:locale}.malware-report.mozilla.com/?hl={moz:locale}"); +pref("browser.safebrowsing.provider.0.reportMalwareErrorURL", "http://{moz:locale}.malware-error.mozilla.com/?hl={moz:locale}"); + +// FAQ URLs +pref("browser.safebrowsing.warning.infoURL", "http://www.mozilla.com/%LOCALE%/%APP%/phishing-protection/"); +pref("browser.geolocation.warning.infoURL", "http://www.mozilla.com/%LOCALE%/%APP%/geolocation/"); + +// Name of the about: page contributed by safebrowsing to handle display of error +// pages on phishing/malware hits. (bug 399233) +pref("urlclassifier.alternate_error_page", "blocked"); + +// The number of random entries to send with a gethash request. +pref("urlclassifier.gethashnoise", 4); + +// The list of tables that use the gethash request to confirm partial results. +pref("urlclassifier.gethashtables", "goog-phish-shavar,goog-malware-shavar"); + +// If an urlclassifier table has not been updated in this number of seconds, +// a gethash request will be forced to check that the result is still in +// the database. +pref("urlclassifier.confirm-age", 2700); + +// Maximum size of the sqlite3 cache during an update, in bytes +pref("urlclassifier.updatecachemax", 4194304); + +// URL for checking the reason for a malware warning. +pref("browser.safebrowsing.malware.reportURL", "http://safebrowsing.clients.google.com/safebrowsing/diagnostic?client=%NAME%&hl=%LOCALE%&site="); +#endif + +// True if this is the first time we are showing about:firstrun +pref("browser.firstrun.show.uidiscovery", true); +pref("browser.firstrun.show.localepicker", true); + +// initiated by a user +pref("content.ime.strict_policy", true); + +// True if you always want dump() to work +// +// On Android, you also need to do the following for the output +// to show up in logcat: +// +// $ adb shell stop +// $ adb shell setprop log.redirect-stdio true +// $ adb shell start +pref("browser.dom.window.dump.enabled", false); + + + +// Temporarily relax file:// origin checks so that we can use <img>s +// from other dirs as webgl textures and more. Remove me when we have +// installable apps or wifi support. +pref("security.fileuri.strict_origin_policy", false); + +// Temporarily force-enable GL compositing. This is default-disabled +// deep within the bowels of the widgetry system. Remove me when GL +// compositing isn't default disabled in widget/src/android. +pref("layers.acceleration.force-enabled", true); + +// screen.enabled and screen.brightness properties. +pref("dom.screenEnabledProperty.enabled", true); +pref("dom.screenBrightnessProperty.enabled", true);
copy from mobile/xul/app/macbuild/Contents/Info.plist.in copy to b2g/app/macbuild/Contents/Info.plist.in --- a/mobile/xul/app/macbuild/Contents/Info.plist.in +++ b/b2g/app/macbuild/Contents/Info.plist.in @@ -24,17 +24,17 @@ <string>HTML</string> </array> <key>CFBundleTypeRole</key> <string>Viewer</string> </dict> <dict> <key>CFBundleTypeExtensions</key> <array> - <string>text</string> + <string>text</string> <string>txt</string> <string>js</string> <string>log</string> <string>css</string> <string>xul</string> <string>rdf</string> </array> <key>CFBundleTypeIconFile</key> @@ -67,25 +67,25 @@ <string>JPEG</string> <string>PNGf</string> </array> <key>CFBundleTypeRole</key> <string>Viewer</string> </dict> </array> <key>CFBundleExecutable</key> - <string>fennec</string> + <string>%MOZ_APP_NAME%</string> <key>CFBundleGetInfoString</key> <string>%APP_NAME% %APP_VERSION%</string> <key>CFBundleIconFile</key> - <string>fennec</string> + <string>%MOZ_APP_NAME%</string> <key>CFBundleIdentifier</key> - <string>org.mozilla.fennec</string> + <string>org.mozilla.b2g</string> <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> + <string>%MOZ_APP_VERSION%</string> <key>CFBundleName</key> <string>%APP_NAME%</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> <string>%APP_VERSION%</string> <key>CFBundleSignature</key> <string>MOZB</string>
copy from mobile/xul/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in copy to b2g/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in
copy from mobile/xul/app/nsBrowserApp.cpp copy to b2g/app/nsBrowserApp.cpp --- a/mobile/xul/app/nsBrowserApp.cpp +++ b/b2g/app/nsBrowserApp.cpp @@ -64,23 +64,16 @@ #define snprintf _snprintf #define strcasecmp _stricmp #endif #include "BinaryPath.h" #include "nsXPCOMPrivate.h" // for MAXPATHLEN and XPCOM_DLL #include "mozilla/Telemetry.h" -#if MOZ_PLATFORM_MAEMO == 6 -#include "nsFastStartupQt.h" -// this used by nsQAppInstance, but defined only in nsAppRunner -// FastStartupQt using gArgc/v so we need to define it here -int gArgc; -char **gArgv; -#endif static void Output(const char *fmt, ... ) { va_list ap; va_start(ap, fmt); #if defined(XP_WIN) && !MOZ_WINCONSOLE PRUnichar msg[2048]; @@ -206,35 +199,16 @@ static int do_main(const char *exePath, return 255; } result = XRE_main(argc, argv, &sAppData); } return result; } -#if MOZ_PLATFORM_MAEMO == 6 -static bool -GeckoPreLoader(const char* execPath) -{ - nsresult rv = XPCOMGlueStartup(execPath); - if (NS_FAILED(rv)) { - Output("Couldn't load XPCOM.\n"); - return false; - } - - rv = XPCOMGlueLoadXULFunctions(kXULFuncs); - if (NS_FAILED(rv)) { - Output("Couldn't load XRE functions.\n"); - return false; - } - return true; -} -#endif - int main(int argc, char* argv[]) { char exePath[MAXPATHLEN]; nsresult rv = mozilla::BinaryPath::Get(argv[0], exePath); if (NS_FAILED(rv)) { Output("Couldn't calculate the application directory.\n"); return 255; @@ -259,34 +233,30 @@ int main(int argc, char* argv[]) IO_COUNTERS ioCounters; gotCounters = GetProcessIoCounters(GetCurrentProcess(), &ioCounters); if (gotCounters && !ioCounters.ReadOperationCount) #endif { XPCOMGlueEnablePreload(); } -#if MOZ_PLATFORM_MAEMO == 6 - nsFastStartup startup; - startup.CreateFastStartup(argc, argv, exePath, GeckoPreLoader); -#else + rv = XPCOMGlueStartup(exePath); if (NS_FAILED(rv)) { Output("Couldn't load XPCOM.\n"); return 255; } // Reset exePath so that it is the directory name and not the xpcom dll name *lastSlash = 0; rv = XPCOMGlueLoadXULFunctions(kXULFuncs); if (NS_FAILED(rv)) { Output("Couldn't load XRE functions.\n"); return 255; } -#endif #ifdef XRE_HAS_DLL_BLOCKLIST XRE_SetupDllBlocklist(); #endif if (gotCounters) { #if defined(XP_WIN) XRE_TelemetryAccumulate(mozilla::Telemetry::EARLY_GLUESTARTUP_READ_OPS,
copy from mobile/xul/branding/official/Makefile.in copy to b2g/branding/official/Makefile.in --- a/mobile/xul/branding/official/Makefile.in +++ b/b2g/branding/official/Makefile.in @@ -29,17 +29,17 @@ # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** -DEPTH = ../../../.. +DEPTH = ../../.. topsrcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk DIRS = \ content \
copy from mobile/xul/branding/official/android-resources.mn copy to b2g/branding/official/android-resources.mn --- a/mobile/xul/branding/official/android-resources.mn +++ b/b2g/branding/official/android-resources.mn @@ -1,6 +1,1 @@ -mobile/xul/app/android/drawable/alertaddons.png -mobile/xul/app/android/drawable/alertdownloads.png -mobile/xul/branding/official/content/splash.png -mobile/xul/branding/official/content/splash_v9.9.png -mobile/xul/branding/official/content/splash_v8.9.png -mobile/xul/branding/official/content/favicon32.png +b2g/branding/official/content/splash.png
copy from mobile/xul/branding/official/configure.sh copy to b2g/branding/official/configure.sh --- a/mobile/xul/branding/official/configure.sh +++ b/b2g/branding/official/configure.sh @@ -1,3 +1,3 @@ -MOZ_APP_DISPLAYNAME=Firefox -ANDROID_PACKAGE_NAME=org.mozilla.firefox +MOZ_APP_DISPLAYNAME=B2G +ANDROID_PACKAGE_NAME=org.mozilla.b2g MOZ_UPDATER=
copy from mobile/xul/branding/official/content/Makefile.in copy to b2g/branding/official/content/Makefile.in --- a/mobile/xul/branding/official/content/Makefile.in +++ b/b2g/branding/official/content/Makefile.in @@ -1,25 +1,12 @@ # Branding Makefile # - jars chrome artwork -DEPTH = ../../../../.. +DEPTH = ../../../.. topsrcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk include $(topsrcdir)/config/rules.mk -LINUX_BRANDING_FILES = \ - fennec_26x26.png \ - fennec_40x40.png \ - fennec_48x48.png \ - fennec_72x72.png \ - fennec_scalable.png \ - fennec_maemo_icon26.txt \ - $(NULL) - -export:: - $(NSINSTALL) -D $(DIST)/branding - cp $(addprefix $(srcdir)/, $(LINUX_BRANDING_FILES)) $(DIST)/branding/ - $(NSINSTALL) -D $(DIST)/install
copy from mobile/xul/branding/official/content/about.png copy to b2g/branding/official/content/about.png
copy from mobile/xul/branding/official/content/favicon32.png copy to b2g/branding/official/content/favicon32.png
new file mode 100644 index 0000000000000000000000000000000000000000..b7513c2e4689ae656c99a0e79ae266a5931594e3 GIT binary patch literal 5302 zc$@*Y6iMreP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^02E$HL_t(&-sPHkl;u@*??3zeraRWuT|HIxL^pId zfd-mx1`$DmLTgmir%6b7Jj6U#CSDSUyce7hTu&olVq%O&0b@kp;w2(#7@{Bn3C*B1 zLpR;f-PLndSJkbmJN?FU_WR=&1eZ#J&zFDRZ>_!Vx#RhMe`oJ~zI&f5{9-TT)i+d~ zR7<LUfQZ35OJ^>FeKDlnmwq@LTt_yu>;Gy(`FXxnS#dty1K$V0^I7OE{pEAXhu50H zp*3bf>E!BAZB4yaTI6}2M4p$H`^w{ay}Y|6;S)!G_{@R$A8*+ONACqJKvY{z+TQmc zM*yH)AMDo!XMEZ(uezkPWJP)8yc41==dG7B){e5euSCD^5r~kXEHOgUT6VQE9&P0A zU!FJ`Klbszns(DW{~{T`?|OjJqBBU2J@ShokbdQLM3?;&>EFGc=r`}7yy};U$G+DC zzUp<0M1l{QzBRu$uy`rUFW#gVzIijRUbR3pLsuH4>y&;^2<Cs?q9~vuil`h_xMkOb z-v8GR%FGiF(Hwi~UAbFvD@SfhS@rAGTKCbO9{+a{@PFEiT4cRJo&x+U_|+Hx0j0(7 zEA<VIEL?ZGu6@mk^4hH%WnsmzuTij}Y$Ow?8psrKr3V~E6)Y;bLS#fY4)sgl7OUs} z>Ko-dcP+i?>v!+{?M~~$KW6M}_qAV1(EY^Szvb1GuDGA{mh=BGy5fFHtGCiOveXOL zTyndXM?YQduZ=8P_Zl5NVXd6?s`Z+*VoZ{;p$sLI+$mkBWX_Q~N9G*4Q?hwWt<uS? ztf~20*>r(i^Vx0u-rJAUXK%l3%SCVB^lj>w{-u6p$*3OwgxUU{^{<RT_Qh8b{g($x zZa#OT7WNu|ByERDxaEHQ{<oA$=)khm34<Cd)(kT{)sne(K_Mw=HbvSxM(UKz_Q2*& z$(<v0O5z-;btKNxwT{fGEFP@zhU@--^WVQip4+pVyKdf8`q-yV{@p7-ch14be*a5f zA3kn2ctr%lcRvJxYi9pjr`qA2SDpT082)}C^>ac`wQpdhl%jypI7zyWi8*29p<7vW z^;=o?uJy<_ZX|UDnRC6n?I3l$NG5TP*eQuBN9IxvPPOSaTAcnHzs8lH%k}>IcbE^o zC+BUSzK|RCZG6YxZ_eF4_UV&P1~~NH*Zli}xOvU-Z_qBcxw)j$wT0b$_a<|+7=YSB z85&uxesx%a{t-?%WhsC1(67=ryN{@1Ik4%?wEp}5Vkpb-1dIqqq!$4Sg;P?LsWiu` z5UXSRo>{VvB{?+7l5)sjT>CAi?w-^IL%B?Hk-lN$U(2mq9<%1+HRr9pa@!BKe_)VP z{&eQ$gE&9hKHIhPN-+~-TxNc_{!aN|^#Z--+#~drpA#Dmu`OB8g4=H(=~(FVpzd+c z+rPw_NlMcx72m^G5D!F!!Z|VvbI!8!SWH$FwAux6JEuLDv-hb9&RRFk;Rh~Z^MxOm zUAN~fsQo>+Kk}dW@cMCi-zIr*X5Ym_gRAeFncj903(mazrxQ5%rm~kEnOoYP$;nme zKci3lddQ94M`dQ0Fl9o#T9x(f2RM>jC<%l0gsYFgfpb<?>0}9oF*t>i5ds8<k|9_h zo;eWH?ppH9k|mBbcH|w$@bcrh{<~8wUhsYPZGQ{<9)FNU(|cv{$iL_XpE=Lm{YN+P zJMX@9`$u8Tf-~>Ve`XAH+ScsblSXr%FnY;SAf&xJW#X`qwuP)!5Kqi9J>CT0Q116A z)DdrfEzT7r77`1wQ`)LDfi}=lrBx^^7FAe1+D8}##B&8Uffbt<GkD?vi&n1W^6L)4 z?1QX6tp=qvw4dE4zwxFvKU%v^Tlef<e#Jjt@cS<t#JAs<k@Wd`{MKP+p6?JJ=wS04 zS12~M^QH(&sV0OKA=47Sd+pgY=B9{Emspx~=+XhYR_PQ<*FncAsX}gGczKOATNbh6 z>?LI46D+7Qyk#ZJH=V?W*N#DQfa*!hP+3Cz@q>Ky^Xug^e>cVA)wQ?$-~*@BergOf zt{tUF@}N}r&ukv(l1;?e+<_P3oW%*K2<jO;1L7MzPsof<sIy#t`7(<2YX~%>TUx-^ z{ml%$|5JEjg~B<kKp~J?h;t=Qp_^Lbwh|`>7u2Zqmzf(lg`JN~v3|og>Zh+}`g<K# z4K(y^?>kPiEZ#i4et8YHw||Vl<cAhB^r1t{Ts!jKY&Jb1ITmA6*V{d_9QAw@Z~&en zK`*<A0#;GaBMAyBV|$RgVYqXUWy>O-Z#rC-;6$+w)H(_Wg(?<9S_nlEG4`E%NxMz@ zH=WMJjvajS5y$a^IWn@JaB)O)wk9VnK1wU6QmVzlqgTR~FTI4o@U;{3NmW0V&J?OC z;w&H@DuOE<4uguKC}O~~V676AeS+!`^>a2*T{%kj-~-e@ehuRf4sdkO9QENroK>7t z3aey=BZ~{N!jPm&JTpQ2*aTi*jU10~;bL~|e4g&+n7~*{0~VJZPhs}r5fP7#t={q_ z4nFq5jcmT|N&LzGT4MMM39~n@_)QLHWL+zHyHFw{&IzjE9JrV681ov(_#R<dIO&f+ zO0;Z%>PSC#k6y%|eRLN)D(g7=(lVV+fjY3xkz2>?-f@z~9RA`ZST7`Tioa?N?Va06 z?zxk>xrAMwkY<7&NvJGO@Rkpf9c)9AlQxs(0GqFSvKPcd*Id-o^(MGF4;9-{CGbSm z$MqZqX9P8%y&Vei3?>ZlN)bU{Kgkm};q82kcV2lXzx6jw#!q=8C;iF=#EH=ESUO!t zocSb)khBvz(+#G#KS^_9oI-qTl7O`wIW)<KetiRnk2pjNlIeteJO)vWhN^i=YoE7a z+xvg%Mu1&^HG=Og{U&p_p14T%cZX~t&L(P9>48RZi9^cfMd0EIUMV1`g!ttWLA^@f zf{-h28|UtYzsAOMPa=u};#@IVjtaOeWA>TdL`xQ7qll#4B`-4E?&q=j4vN`nOc>$j zn$*%=Ty^;xlE$;tSFR>`{xM3Y&4Je^cJ`1qk9wO1hLX)Qj|_ff@QlMPA3!GZGc}al zCSt5p93F_E4lsi84eIp>1l5qzK!vEkOnG4+k#F#$5@(-M=AT(X(oM*c7=!m>lD26| zp#`0%p28NE!dh&WVY38O!T7i|BdC_y_V}}W`T9E3cL?<p%1l2QLeYjIrc|kL@19`m z<!6P{6Hm=90eS>%D0_o0VbQfXMP1><L_TUA8VM2@yuc9ELmD&6*r674jcJSt*?01( zY<+c^Ge$eiJlbSIR6#sJq-QVGooTyE*6Cm!6h#i!qE1m~QCpzS;`u&D$Hy^2i)gfp zn>#>xSs5ip(?lCBD-X2>xN5lY8Z)l?VipPpgCyM@8(S1OMARCb5yS`tf)^MhH0*k& z&5kEJ7!L*_*jru3Cw9J>|M9&e{O8v<DCrbQYawFh!O!DYRm_rA<c$U{PthXBSqsjh zR&mZE>QD=Lrvq)Jwk{$&FonOcKwKBHMD`sLCexBGI=yT6-qLNqNI+t5_1uoxk}mYY zfK$Z-)PeC0#upkh1^b^%7#Q$~0vIxugR2))|D}x#m^Iv)I{L~1S)3vQh`cCu6$MQQ zSFHo<=<fItF3VBpKwWPYoC9ZZg@xQv9LsT?4yIH>XQt3JW#97^*1l>X@$|O*yqnTJ zFG`8IC#FkzCo{II<f*7r!CCDEt}m!>m}}%zA{eMCeHG9M-nnU(Vx~!6D4}Ptg~g=_ zHqCHJic8bpIL&(FP8VA!&hv3ug4zsMWVk%X<po7ICI}s*2^uaXYjjXaD4I=NTrf84 z>y0<=l0%Qr{HT}A=Lxj;v^^K+)*02fZN-V;5by*wy*nw^Qm;7b6``-H4Afw_lJkZB zKgV=CWJyYr6eNiyjxBkTW8)OlZX%sFHc3h2g0wM3J~@uF7MJC?G{@#Sd66TngpJ1~ zFxem&G!#vXiIk$5l6IZ`(WS>^)!u_N_GUN!n3Pbfhppv7Nw_#qRJ};WSj7cB@G4NL z2woS;p`%oS$Uu@RTkG2y4gV*1bk5}d^kiZJP7TMnAbNtc`VO#e#9~&iVt08xU)?dv z4d3pgJTyXn<asb=-gT7jffj%H-WgVv+a!}YVdZJUg(0??QOstL<&y17b*kZH;-G!} zCn~bX*6{&XFMqOK2vHS+YJe9BURm%<K3OXvKHR2KfzVTG6=()kYRmiaBh%Y>T!?j! zhzt*<!1UHwgn=_RGjQexe&=t7_}hm|Fm(VeQq(z$!jVtSa^SYz^p8(d;L*R@r+YX- zttD?2I9re%OBp}p8k;|#EO=2)Pkwx3Z`9}Ck<aEhtJ<6_P<1^CVSDiq^+)tA@TgXl zYR%x4JtRxm{z!{vBO|vSo^eD05QG$X*uv3mq#WH7^R>_K<dawZGj~4NMWTL+Zi^yG z$&-w{oASC-r&-`P$!07f78mDemXS45Y?5P}xyFs0?o9r^ACuF=SNAl<=0}TXe{h09 z1g57829}0oiKXNT;yFy<5iIS)Yqn4n>-*FOh1QOkhmU3qkB0OQ`2?W>RcvAzrp=wx zBix)`$TQ(4h<yS-#WZIrIxU=dy^Sn!oVIL=U@j+X7xXQIqTQ=M@@9_sN;;ED+{_P$ z0snB%8+~5?o#J0(;NgwJSx+ii&aF<|rAewfJMBbK{EEQ@K1HfX*@ymq{4_yPywKyU za|7=BR)_dVhBiD(A(TSLv{&U%re4jq@Kt2B0X$l0rWBcg2~oe=>x^nfHJ#xNCr*;g z6xdFJ6d^?d>2ylb&GE}ZcPuB*t2+<uSY5pHnWulUD{=2CgZO4qnlUkx3UThVf54Za zr6H98AHO8{B@e$Oc)sAd0;3iadh}J`SH8N6vMU%fgX~RLL8TA+2f*`sm4xbi=WG_5 z<4{=&K^-#3WvlPyZ-47aW}_34=5rJ=m`Lf2rMO&?-0IQ2p&S}N`G;#u_JULHeSGdG zO3Dky9BFJjo-g;?+)-GSxsGGcju;UrQm~n&NFBCNtmk9Hh{E{H6(L`~bb{q;hL|m_ zr8-o{t5kdGtFagM-w*pAfTwSTu?JxM5&DjPo2|>XbAIJvKJ&&$nJb@w?KVh`WfaXE z+p^?Mhd4)f(#kbYoWq*c_1XG|-(9?HU+CM*%;g&RUpO*bgla^S*vZI>5-Zl0!GoYA zcp><anct<s7=tm23Z%~Gxkkig|8yFyU<HuE;co%a{B$|B!13IlHOcqKwC6GwpSGCr zxDjTz?S>>p!d`52$5R%Ej??bCf=@&baPe1u`%`_VzV`$FW_S9oQU6C%T|ITK5VFFm zAac?vHOe)?k39Smc#*;P1uqax(9=Ce1n~reWuhy5XZHY)9?qF)r&NQSQ<pm4baKJE z6$RBeqtUP|SXsjFE0b$TXWuaheM+N?Xg_@zwT{p3*n-yk_0K<7p4-38JAc)s-`M^$ z34CMN@YYGkSBE&c?3rydnUtGWDGH@h@;LSMI*P?Fc?6{%a6jzHZR62Xp#}_!hochY z^i?799ZIj&*z8);xVH(G2Ymbhe9zHs<rE_HZCFP4;2h1JGgOxcJhAjRee2eSw0C$P z>%VmTBhRUFyvWa9f!h`u-ZAC4W1+dE5c$Tzw$oHq#27q*GtQ`^ID(SF3k}}9S~UR} zucu(8r)fbPE_bMP*c_~a9|d4j{J`Laj;L(NJ1H&{hR$9}e9V!J9bsTyNO@&hy;LQS zxw&>(<6QugUtY)X<-1<qg>D-V-Z88E{UYz`B$w-scAdtmQZM<~Jm=I?YXl*9q2QMc zelYJko**6=Q4mE$F(?u$LDW;F@f27mc)lYn32HN<A&>g;gQSU1P)R8HZOytOQDB%U z<ZG+1YF^g3dB_f2(Rjs2OySLg=ChHScOT817K-?uY5+1i5;D9r!V44=Kv?qdLW8LG zx))Y)>M$tkdNqNwAVvrx2+L6FQ~ZkGLs2f_$klaQl*+!Cve+~*pIrWj?GL`7JYVS< znFkDbu;|K)dE3^ixo%&}X;k(k%L?^SDVIHtJE21VphuAx1d$L{4MF5#e8u+_BZ^=# zMtkDTfI8Qk*hnwc`i8W~FgB&!@0d!$onLv%{kKnjx7Y(5^$f9fKO5xBogI`Fh9A%M zNbKa`1w;PnnRSup8!?_}QCMasbBWuQzJY)sG`OU|rA4pWDjc}^cu;VK;tB-|&h=_; zo2F!iLpw&FZ7mctwk*EkzUs$5x4m%)NPw;?*~{JKm%9QW1nRpAJ@!<`9$Q`Y`d5Z5 z76WRGc%G0YPG=``v6<ouaG9N7T1BkGWe%4W*i6Y1OPV?g3Y<&z;pv6)t)rWCqBAJ{ zvE%VL{^Ipd@BhI(_*tL@6hAKkonHwbs7@;By<K;3qR{xP8f!-f0?D0I&o?4QDH5v` zPMkBOu_J9+vW~^ZjwDu6>$E_GNRSXUB_pM!Ro%L7R+xN#`cI#nzW$3(&us&mz!We& zPvqx{ffwG7fB|6fyo~_Ez|eaK%-gmeUl}3JD_&sKdI-5ioh1l_sA4n>kT7ycWROts zBf*6RQxDbDOUcwhZGYtJ6Wi`d`3E2djsO$DvH9+N{);&14uKjl1T31jg+MKY(f5p& zH=R8i9ak=NbOtjsSociL=7S5$Mlyx{Ime_Pr0N-$DDnQ;qWRqO-HAI6b$8FfUZ5c` zr#;}4z#Pzd;UxbTbyDxmTOH^F2IooCfodK4he9dYOqX|kX$_V<D#F5{!Y!N5T<bZ@ zKA@dJqCIf!d7A@ffX2Mfr}I9q|F8aPAoFn%0wtg_Z?*a7!Mxk~^B}U9%u~$!bTaQQ zZJ;}E#S0z$|B(Mm{FIdYf_d|g@{&0mFC5zU#&+J6|KG3w1JUppYOd{$F#rGn07*qo IM6N<$g8mX-d;kCd
new file mode 100644 index 0000000000000000000000000000000000000000..c8bee8fca98d4e57315f1198594ff31d48caefad GIT binary patch literal 8267 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 JPDHLkV1lvM5PJXs
copy from mobile/xul/branding/official/content/logo.png copy to b2g/branding/official/content/logo.png
copy from mobile/xul/branding/official/content/logoWordmark.png copy to b2g/branding/official/content/logoWordmark.png
copy from mobile/xul/branding/official/content/splash.png copy to b2g/branding/official/content/splash.png
copy from mobile/xul/branding/official/locales/Makefile.in copy to b2g/branding/official/locales/Makefile.in --- a/mobile/xul/branding/official/locales/Makefile.in +++ b/b2g/branding/official/locales/Makefile.in @@ -29,19 +29,19 @@ # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** -DEPTH = ../../../../.. +DEPTH = ../../../.. topsrcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ -relativesrcdir = mobile/branding/official/locales +relativesrcdir = b2g/branding/official/locales include $(DEPTH)/config/autoconf.mk DEFINES += -DAB_CD=$(AB_CD) include $(topsrcdir)/config/rules.mk
copy from mobile/xul/branding/official/locales/en-US/brand.dtd copy to b2g/branding/official/locales/en-US/brand.dtd --- a/mobile/xul/branding/official/locales/en-US/brand.dtd +++ b/b2g/branding/official/locales/en-US/brand.dtd @@ -1,4 +1,4 @@ -<!ENTITY brandShortName "Firefox"> -<!ENTITY brandFullName "Mozilla Firefox"> +<!ENTITY brandShortName "B2G"> +<!ENTITY brandFullName "Mozilla B2G"> <!ENTITY vendorShortName "Mozilla"> -<!ENTITY logoTrademark "Firefox and the Firefox logos are trademarks of the Mozilla Foundation."> +<!ENTITY logoTrademark "B2G and the B2G logos are trademarks of the Mozilla Foundation.">
copy from mobile/xul/branding/official/locales/en-US/brand.properties copy to b2g/branding/official/locales/en-US/brand.properties --- a/mobile/xul/branding/official/locales/en-US/brand.properties +++ b/b2g/branding/official/locales/en-US/brand.properties @@ -1,2 +1,2 @@ -brandShortName=Firefox -brandFullName=Mozilla Firefox +brandShortName=B2G +brandFullName=Mozilla B2G
copy from mobile/xul/branding/unofficial/Makefile.in copy to b2g/branding/unofficial/Makefile.in --- a/mobile/xul/branding/unofficial/Makefile.in +++ b/b2g/branding/unofficial/Makefile.in @@ -29,17 +29,17 @@ # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** -DEPTH = ../../../.. +DEPTH = ../../.. topsrcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk DIRS = \ content \
copy from mobile/xul/branding/unofficial/android-resources.mn copy to b2g/branding/unofficial/android-resources.mn --- a/mobile/xul/branding/unofficial/android-resources.mn +++ b/b2g/branding/unofficial/android-resources.mn @@ -1,6 +1,1 @@ -mobile/xul/app/android/drawable/alertaddons.png -mobile/xul/app/android/drawable/alertdownloads.png -mobile/xul/branding/unofficial/content/splash.png -mobile/xul/branding/unofficial/content/splash_v9.9.png -mobile/xul/branding/unofficial/content/splash_v8.9.png -mobile/xul/branding/unofficial/content/favicon32.png +b2g/branding/unofficial/content/splash.png
copy from mobile/xul/branding/unofficial/configure.sh copy to b2g/branding/unofficial/configure.sh --- a/mobile/xul/branding/unofficial/configure.sh +++ b/b2g/branding/unofficial/configure.sh @@ -1,3 +1,3 @@ -ANDROID_PACKAGE_NAME=org.mozilla.fennec_`echo $USER` -MOZ_APP_DISPLAYNAME=Fennec +ANDROID_PACKAGE_NAME=org.mozilla.b2g_`echo $USER` +MOZ_APP_DISPLAYNAME=B2G MOZ_UPDATER=
copy from mobile/xul/branding/unofficial/content/Makefile.in copy to b2g/branding/unofficial/content/Makefile.in --- a/mobile/xul/branding/unofficial/content/Makefile.in +++ b/b2g/branding/unofficial/content/Makefile.in @@ -1,25 +1,11 @@ # Branding Makefile # - jars chrome artwork -DEPTH = ../../../../.. +DEPTH = ../../../.. topsrcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk include $(topsrcdir)/config/rules.mk - -LINUX_BRANDING_FILES = \ - fennec_26x26.png \ - fennec_40x40.png \ - fennec_48x48.png \ - fennec_72x72.png \ - fennec_scalable.png \ - fennec_maemo_icon26.txt \ - $(NULL) - -export:: - $(NSINSTALL) -D $(DIST)/branding - cp $(addprefix $(srcdir)/, $(LINUX_BRANDING_FILES)) $(DIST)/branding/ - $(NSINSTALL) -D $(DIST)/install
copy from mobile/xul/branding/unofficial/content/about.png copy to b2g/branding/unofficial/content/about.png
copy from mobile/xul/branding/unofficial/content/favicon32.png copy to b2g/branding/unofficial/content/favicon32.png
new file mode 100644 index 0000000000000000000000000000000000000000..3ae248c857d7010eee72e3f20f5a8fbaeed4f196 GIT binary patch literal 4053 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 Hu0mjfcGdKw
new file mode 100644 index 0000000000000000000000000000000000000000..fe980153be29d7d4d01066de16a0fd28ae0e223c GIT binary patch literal 5897 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
copy from mobile/xul/branding/unofficial/content/jar.mn copy to b2g/branding/unofficial/content/jar.mn
copy from mobile/xul/branding/unofficial/content/logo.png copy to b2g/branding/unofficial/content/logo.png
copy from mobile/xul/branding/unofficial/content/logoWordmark.png copy to b2g/branding/unofficial/content/logoWordmark.png
copy from mobile/xul/branding/unofficial/content/splash.png copy to b2g/branding/unofficial/content/splash.png
copy from mobile/xul/branding/unofficial/locales/Makefile.in copy to b2g/branding/unofficial/locales/Makefile.in --- a/mobile/xul/branding/unofficial/locales/Makefile.in +++ b/b2g/branding/unofficial/locales/Makefile.in @@ -30,19 +30,19 @@ # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** -DEPTH = ../../../../.. +DEPTH = ../../../.. topsrcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ -relativesrcdir = mobile/branding/unofficial/locales +relativesrcdir = b2g/branding/unofficial/locales include $(DEPTH)/config/autoconf.mk DEFINES += -DAB_CD=$(AB_CD) include $(topsrcdir)/config/rules.mk
copy from mobile/xul/branding/unofficial/locales/en-US/brand.dtd copy to b2g/branding/unofficial/locales/en-US/brand.dtd --- a/mobile/xul/branding/unofficial/locales/en-US/brand.dtd +++ b/b2g/branding/unofficial/locales/en-US/brand.dtd @@ -1,4 +1,4 @@ -<!ENTITY brandShortName "Fennec"> -<!ENTITY brandFullName "Mozilla Fennec"> +<!ENTITY brandShortName "B2G"> +<!ENTITY brandFullName "Mozilla B2G"> <!ENTITY vendorShortName "Mozilla"> <!ENTITY logoTrademark "">
copy from mobile/xul/branding/unofficial/locales/en-US/brand.properties copy to b2g/branding/unofficial/locales/en-US/brand.properties --- a/mobile/xul/branding/unofficial/locales/en-US/brand.properties +++ b/b2g/branding/unofficial/locales/en-US/brand.properties @@ -1,2 +1,2 @@ -brandShortName=Fennec -brandFullName=Mozilla Fennec +brandShortName=B2G +brandFullName=Mozilla B2G
copy from mobile/xul/branding/unofficial/locales/jar.mn copy to b2g/branding/unofficial/locales/jar.mn
copy from mobile/xul/build.mk copy to b2g/build.mk --- a/mobile/xul/build.mk +++ b/b2g/build.mk @@ -31,19 +31,16 @@ # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** ifndef LIBXUL_SDK -# Needed for building our components as part of libxul -APP_LIBXUL_DIRS += mobile/xul/components/build - include $(topsrcdir)/toolkit/toolkit-tiers.mk else ifdef ENABLE_TESTS tier_testharness_dirs += \ testing/mochitest \ $(NULL) endif endif @@ -55,43 +52,37 @@ tier_app_dirs += extensions endif ifdef MOZ_SERVICES_SYNC tier_app_dirs += services endif tier_app_dirs += \ $(MOZ_BRANDING_DIRECTORY) \ - mobile/xul \ + b2g \ $(NULL) installer: - @$(MAKE) -C mobile/xul/installer installer + @$(MAKE) -C b2g/installer installer package: - @$(MAKE) -C mobile/xul/installer + @$(MAKE) -C b2g/installer install:: - @echo "Mobile can't be installed directly." + @echo "B2G can't be installed directly." @exit 1 -deb: package - @$(MAKE) -C mobile/xul/installer deb - upload:: - @$(MAKE) -C mobile/xul/installer upload + @$(MAKE) -C b2g/installer upload ifdef ENABLE_TESTS # Implemented in testing/testsuite-targets.mk mochitest-browser-chrome: $(RUN_MOCHITEST) --browser-chrome $(CHECK_TEST_ERROR) mochitest:: mochitest-browser-chrome .PHONY: mochitest-browser-chrome endif -ifeq ($(OS_TARGET),Linux) -deb: installer -endif
copy from mobile/xul/chrome/Makefile.in copy to b2g/chrome/Makefile.in --- a/mobile/xul/chrome/Makefile.in +++ b/b2g/chrome/Makefile.in @@ -30,26 +30,21 @@ # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** -DEPTH = ../../.. +DEPTH = ../.. topsrcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk DEFINES += -DAB_CD=$(MOZ_UI_LOCALE) \ -DPACKAGE=browser \ -DMOZ_APP_VERSION=$(MOZ_APP_VERSION) \ $(NULL) - -ifdef ENABLE_TESTS -DIRS += tests -endif - include $(topsrcdir)/config/rules.mk
copy from mobile/xul/chrome/content/commandUtil.js copy to b2g/chrome/content/commandUtil.js --- a/mobile/xul/chrome/content/commandUtil.js +++ b/b2g/chrome/content/commandUtil.js @@ -34,164 +34,164 @@ * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /** * Command Updater */ -var CommandUpdater = { +let CommandUpdater = { /** * Gets a controller that can handle a particular command. - * @param command - * A command to locate a controller for, preferring controllers that - * show the command as enabled. - * @returns In this order of precedence: + * @param {string} command + * A command to locate a controller for, preferring controllers that + * show the command as enabled. + * @return {object} In this order of precedence: * - the first controller supporting the specified command * associated with the focused element that advertises the - * command as ENABLED + * command as ENABLED. * - the first controller supporting the specified command * associated with the global window that advertises the - * command as ENABLED + * command as ENABLED. * - the first controller supporting the specified command - * associated with the focused element + * associated with the focused element. * - the first controller supporting the specified command - * associated with the global window + * associated with the global window. */ _getControllerForCommand: function(command) { try { - var controller = top.document.commandDispatcher.getControllerForCommand(command); + let commandDispatcher = top.document.commandDispatcher; + let controller = commandDispatcher.getControllerForCommand(command); if (controller && controller.isCommandEnabled(command)) return controller; } - catch(e) { - } - var controllerCount = window.controllers.getControllerCount(); - for (var i = 0; i < controllerCount; ++i) { - var current = window.controllers.getControllerAt(i); + catch (e) { } + + let controllerCount = window.controllers.getControllerCount(); + for (let i = 0; i < controllerCount; ++i) { + let current = window.controllers.getControllerAt(i); try { - if (current.supportsCommand(command) && current.isCommandEnabled(command)) + if (current.supportsCommand(command) && + current.isCommandEnabled(command)) return current; } - catch (e) { - } + catch (e) { } } return controller || window.controllers.getControllerForCommand(command); }, /** * Updates the state of a XUL <command> element for the specified command * depending on its state. - * @param command - * The name of the command to update the XUL <command> element for + * @param {string} command + * The name of the command to update the XUL <command> element for. */ updateCommand: function(command) { - var enabled = false; + let enabled = false; try { - var controller = this._getControllerForCommand(command); + let controller = this._getControllerForCommand(command); if (controller) { enabled = controller.isCommandEnabled(command); } } - catch(ex) { } + catch (ex) { } this.enableCommand(command, enabled); }, /** * Updates the state of a XUL <command> element for the specified command * depending on its state. - * @param command - * The name of the command to update the XUL <command> element for + * @param {string} command + * The name of the command to update the XUL <command> element for. */ updateCommands: function(_commands) { - var commands = _commands.split(","); - for (var command in commands) { + let commands = _commands.split(','); + for (let command in commands) { this.updateCommand(commands[command]); } }, /** * Enables or disables a XUL <command> element. - * @param command - * The name of the command to enable or disable - * @param enabled + * @param {string} command + * The name of the command to enable or disable. + * @param {bool} enabled * true if the command should be enabled, false otherwise. */ enableCommand: function(command, enabled) { - var element = document.getElementById(command); + let element = document.getElementById(command); if (!element) return; + if (enabled) - element.removeAttribute("disabled"); + element.removeAttribute('disabled'); else - element.setAttribute("disabled", "true"); + element.setAttribute('disabled', 'true'); }, /** * Performs the action associated with a specified command using the most * relevant controller. - * @param command + * @param {string} command * The command to perform. */ doCommand: function(command) { - var controller = this._getControllerForCommand(command); + let controller = this._getControllerForCommand(command); if (!controller) return; controller.doCommand(command); }, /** * Changes the label attribute for the specified command. - * @param command + * @param {string} command * The command to update. - * @param labelAttribute + * @param {string} labelAttribute * The label value to use. */ setMenuValue: function(command, labelAttribute) { - var commandNode = top.document.getElementById(command); - if (commandNode) - { - var label = commandNode.getAttribute(labelAttribute); - if ( label ) + let commandNode = top.document.getElementById(command); + if (commandNode) { + let label = commandNode.getAttribute(labelAttribute); + if (label) commandNode.setAttribute('label', label); } }, /** * Changes the accesskey attribute for the specified command. - * @param command + * @param {string} command * The command to update. - * @param valueAttribute + * @param {string} valueAttribute * The value attribute to use. */ setAccessKey: function(command, valueAttribute) { - var commandNode = top.document.getElementById(command); - if (commandNode) - { - var value = commandNode.getAttribute(valueAttribute); - if ( value ) + let commandNode = top.document.getElementById(command); + if (commandNode) { + let value = commandNode.getAttribute(valueAttribute); + if (value) commandNode.setAttribute('accesskey', value); } }, /** * Inform all the controllers attached to a node that an event has occurred - * (e.g. the tree controllers need to be informed of blur events so that they can change some of the - * menu items back to their default values) - * @param node - * The node receiving the event - * @param event + * (e.g. the tree controllers need to be informed of blur events so that they + * can change some of the menu items back to their default values) + * @param {node} node + * The node receiving the event. + * @param {event} event * The event. */ onEvent: function(node, event) { - var numControllers = node.controllers.getControllerCount(); - var controller; + let numControllers = node.controllers.getControllerCount(); + let controller; - for ( var controllerIndex = 0; controllerIndex < numControllers; controllerIndex++ ) - { - controller = node.controllers.getControllerAt(controllerIndex); - if ( controller ) + for (let i = 0; i < numControllers; i++) { + controller = node.controllers.getControllerAt(i); + if (controller) controller.onEvent(event); } } }; +
copy from mobile/xul/chrome/content/netError.xhtml copy to b2g/chrome/content/netError.xhtml --- a/mobile/xul/chrome/content/netError.xhtml +++ b/b2g/chrome/content/netError.xhtml @@ -313,17 +313,16 @@ <h1 id="et_fileNotFound">&fileNotFound.title;</h1> <h1 id="et_malformedURI">&malformedURI.title;</h1> <h1 id="et_protocolNotFound">&protocolNotFound.title;</h1> <h1 id="et_connectionFailure">&connectionFailure.title;</h1> <h1 id="et_netTimeout">&netTimeout.title;</h1> <h1 id="et_redirectLoop">&redirectLoop.title;</h1> <h1 id="et_unknownSocketType">&unknownSocketType.title;</h1> <h1 id="et_netReset">&netReset.title;</h1> - <h1 id="et_notCached">¬Cached.title;</h1> <h1 id="et_netOffline">&netOffline.title;</h1> <h1 id="et_netInterrupt">&netInterrupt.title;</h1> <h1 id="et_deniedPortAccess">&deniedPortAccess.title;</h1> <h1 id="et_proxyResolveFailure">&proxyResolveFailure.title;</h1> <h1 id="et_proxyConnectFailure">&proxyConnectFailure.title;</h1> <h1 id="et_contentEncodingError">&contentEncodingError.title;</h1> <h1 id="et_unsafeContentType">&unsafeContentType.title;</h1> <h1 id="et_nssFailure2">&nssFailure2.title;</h1> @@ -338,17 +337,16 @@ <div id="ed_fileNotFound">&fileNotFound.longDesc;</div> <div id="ed_malformedURI">&malformedURI.longDesc;</div> <div id="ed_protocolNotFound">&protocolNotFound.longDesc;</div> <div id="ed_connectionFailure">&connectionFailure.longDesc;</div> <div id="ed_netTimeout">&netTimeout.longDesc;</div> <div id="ed_redirectLoop">&redirectLoop.longDesc;</div> <div id="ed_unknownSocketType">&unknownSocketType.longDesc;</div> <div id="ed_netReset">&netReset.longDesc;</div> - <div id="ed_notCached">¬Cached.longDesc;</div> <div id="ed_netOffline">&netOffline.longDesc2;</div> <div id="ed_netInterrupt">&netInterrupt.longDesc;</div> <div id="ed_deniedPortAccess">&deniedPortAccess.longDesc;</div> <div id="ed_proxyResolveFailure">&proxyResolveFailure.longDesc2;</div> <div id="ed_proxyConnectFailure">&proxyConnectFailure.longDesc;</div> <div id="ed_contentEncodingError">&contentEncodingError.longDesc;</div> <div id="ed_unsafeContentType">&unsafeContentType.longDesc;</div> <div id="ed_nssFailure2">&nssFailure2.longDesc;</div>
new file mode 100644 --- /dev/null +++ b/b2g/chrome/content/shell.js @@ -0,0 +1,220 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is B2G. + * + * The Initial Developer of the Original Code is + * Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2011 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +const Cc = Components.classes; +const Ci = Components.interfaces; +const Cu = Components.utils; +const CC = Components.Constructor; + +Cu.import('resource://gre/modules/Services.jsm'); + +const LocalFile = CC('@mozilla.org/file/local;1', + 'nsILocalFile', + 'initWithPath'); +var shell = { + get home() { + delete this.home; + return this.home = document.getElementById('homescreen'); + }, + + get homeSrc() { + try { + let homeSrc = Cc['@mozilla.org/process/environment;1'] + .getService(Ci.nsIEnvironment) + .get('B2G_HOMESCREEN'); + if (homeSrc) + return homeSrc; + } catch (e) {} + + let urls = Services.prefs.getCharPref('browser.homescreenURL').split(','); + for (let i = 0; i < urls.length; i++) { + let url = urls[i]; + if (url.substring(0, 7) != 'file://') + return url; + + let file = new LocalFile(url.substring(7, url.length)); + if (file.exists()) + return url; + } + return null; + }, + + start: function shell_init() { + window.controllers.appendController(this); + window.addEventListener('keypress', this); + this.home.addEventListener('load', this, true); + + let ioService = Cc['@mozilla.org/network/io-service;1'] + .getService(Ci.nsIIOService2); + ioService.offline = false; + + let browser = this.home; + browser.homePage = this.homeSrc; + browser.goHome(); + }, + + stop: function shell_stop() { + window.controllers.removeController(this); + window.removeEventListener('keypress', this); + }, + + supportsCommand: function shell_supportsCommand(cmd) { + let isSupported = false; + switch (cmd) { + case 'cmd_close': + isSupported = true; + break; + default: + isSupported = false; + break; + } + return isSupported; + }, + + isCommandEnabled: function shell_isCommandEnabled(cmd) { + return true; + }, + + doCommand: function shell_doCommand(cmd) { + switch (cmd) { + case 'cmd_close': + this.sendEvent(this.home.contentWindow, 'appclose'); + break; + } + }, + + handleEvent: function shell_handleEvent(evt) { + switch (evt.type) { + case 'keypress': + switch (evt.keyCode) { + case evt.DOM_VK_HOME: + this.sendEvent(this.home.contentWindow, 'home'); + break; + case evt.DOM_VK_SLEEP: + screen.mozEnabled = !screen.mozEnabled; + break; + case evt.DOM_VK_ESCAPE: + if (evt.getPreventDefault()) + return; + this.doCommand('cmd_close'); + break; + } + break; + case 'load': + this.home.removeEventListener('load', this, true); + this.sendEvent(window, 'ContentStart'); + break; + } + }, + sendEvent: function shell_sendEvent(content, type, details) { + let event = content.document.createEvent('CustomEvent'); + event.initCustomEvent(type, true, true, details ? details : {}); + content.dispatchEvent(event); + } +}; + +(function VirtualKeyboardManager() { + let activeElement = null; + let isKeyboardOpened = false; + + let constructor = { + handleEvent: function vkm_handleEvent(evt) { + let contentWindow = shell.home.contentWindow.wrappedJSObject; + + switch (evt.type) { + case 'ContentStart': + contentWindow.navigator.mozKeyboard = new MozKeyboard(); + break; + case 'keypress': + if (evt.keyCode != evt.DOM_VK_ESCAPE || !isKeyboardOpened) + return; + + shell.sendEvent(contentWindow, 'hideime'); + isKeyboardOpened = false; + + evt.preventDefault(); + evt.stopPropagation(); + break; + case 'mousedown': + if (evt.target != activeElement || isKeyboardOpened) + return; + + let type = activeElement.type; + shell.sendEvent(contentWindow, 'showime', { type: type }); + isKeyboardOpened = true; + break; + } + }, + observe: function vkm_observe(subject, topic, data) { + let contentWindow = shell.home.contentWindow; + + let shouldOpen = parseInt(data); + if (shouldOpen && !isKeyboardOpened) { + activeElement = Cc['@mozilla.org/focus-manager;1'] + .getService(Ci.nsIFocusManager) + .focusedElement; + if (!activeElement) + return; + + let type = activeElement.type; + shell.sendEvent(contentWindow, 'showime', { type: type }); + } else if (!shouldOpen && isKeyboardOpened) { + shell.sendEvent(contentWindow, 'hideime'); + } + isKeyboardOpened = shouldOpen; + } + }; + + Services.obs.addObserver(constructor, "ime-enabled-state-changed", false); + ['ContentStart', 'keypress', 'mousedown'].forEach(function vkm_events(type) { + window.addEventListener(type, constructor, true); + }); +})(); + + +function MozKeyboard() { +} + +MozKeyboard.prototype = { + sendKey: function mozKeyboardSendKey(keyCode) { + var utils = window.QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIDOMWindowUtils); + ['keydown', 'keypress', 'keyup'].forEach(function sendKeyEvents(type) { + utils.sendKeyEvent(type, keyCode, keyCode, null); + }); + } +}; +
new file mode 100644 --- /dev/null +++ b/b2g/chrome/content/shell.xul @@ -0,0 +1,60 @@ +<?xml version="1.0"?> + +<!-- ***** BEGIN LICENSE BLOCK ***** + - Version: MPL 1.1/GPL 2.0/LGPL 2.1 + - + - The contents of this file are subject to the Mozilla Public License Version + - 1.1 (the "License"); you may not use this file except in compliance with + - the License. You may obtain a copy of the License at + - http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS IS" basis, + - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + - for the specific language governing rights and limitations under the + - License. + - + - The Original Code is Mozilla Mobile Browser. + - + - The Initial Developer of the Original Code is + - Mozilla Corporation. + - Portions created by the Initial Developer are Copyright (C) 2011 + - the Initial Developer. All Rights Reserved. + - + - Contributor(s): + - Chris Jones <jones.chris.g@gmail.com> + - + - Alternatively, the contents of this file may be used under the terms of + - either the GNU General Public License Version 2 or later (the "GPL"), or + - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + - in which case the provisions of the GPL or the LGPL are applicable instead + - of those above. If you wish to allow use of your version of this file only + - under the terms of either the GPL or the LGPL, and not to allow others to + - use your version of this file under the terms of the MPL, indicate your + - decision by deleting the provisions above and replace them with the notice + - and other provisions required by the LGPL or the GPL. If you do not delete + - the provisions above, a recipient may use your version of this file under + - the terms of any one of the MPL, the GPL or the LGPL. + - + - ***** END LICENSE BLOCK ***** --> + +<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + id="shell" + width="480" height="800" +#ifdef ANDROID + sizemode="fullscreen" +#endif + style="background: black; overflow: hidden;" + onload="shell.start();" + onunload="shell.stop();"> + + <script type="application/javascript" src="chrome://browser/content/commandUtil.js"/> + <script type="application/javascript" src="chrome://browser/content/shell.js"/> + <script type="application/javascript" src="chrome://browser/content/touch.js"/> + + <commandset id="mainCommandSet"> + <command id="cmd_close" oncommand="CommandUpdater.doCommand(this.id);"/> + </commandset> + + <browser id="homescreen" type="content-primary" flex="1" style="overflow: hidden;"/> +</window> +
new file mode 100644 --- /dev/null +++ b/b2g/chrome/content/touch.js @@ -0,0 +1,240 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is B2G. + * + * The Initial Developer of the Original Code is + * the Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2011 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +(function touchEventHandler() { + let debugging = false; + function debug(str) { + if (debugging) + dump(str + '\n'); + }; + + let contextMenuTimeout = 0; + + // This guard is used to not re-enter the events processing loop for + // self dispatched events + let ignoreEvents = false; + + // During a 'touchstart' and the first 'touchmove' mouse events can be + // prevented for the current touch sequence. + let canPreventMouseEvents = false; + + // Used to track the first mousemove and to cancel click dispatc if it's not + // true. + let isNewTouchAction = false; + + // If this is set to true all mouse events will be cancelled by calling + // both evt.preventDefault() and evt.stopPropagation(). + // This will not prevent a contextmenu event to be fired. + // This can be turned on if canPreventMouseEvents is true and the consumer + // application call evt.preventDefault(); + let preventMouseEvents = false; + + let TouchEventHandler = { + events: ['mousedown', 'mousemove', 'mouseup', 'click', 'unload'], + start: function teh_start() { + this.events.forEach((function(evt) { + shell.home.addEventListener(evt, this, true); + }).bind(this)); + }, + stop: function teh_stop() { + this.events.forEach((function(evt) { + shell.home.removeEventListener(evt, this, true); + }).bind(this)); + }, + handleEvent: function teh_handleEvent(evt) { + if (evt.button || ignoreEvents) + return; + + let eventTarget = this.target; + let type = ''; + switch (evt.type) { + case 'mousedown': + debug('mousedown:'); + + this.target = evt.target; + this.timestamp = evt.timeStamp; + evt.target.setCapture(false); + + preventMouseEvents = false; + canPreventMouseEvents = true; + isNewTouchAction = true; + + contextMenuTimeout = + this.sendContextMenu(evt.target, evt.pageX, evt.pageY, 2000); + this.startX = evt.pageX; + this.startY = evt.pageY; + type = 'touchstart'; + break; + + case 'mousemove': + if (!eventTarget) + return; + + // On device a mousemove event if fired right after the mousedown + // because of the size of the finger, so let's ignore what happens + // below 5ms + if (evt.timeStamp - this.timestamp < 30) + break; + + if (isNewTouchAction) { + canPreventMouseEvents = true; + isNewTouchAction = false; + } + + if (Math.abs(this.startX - evt.pageX) > 15 || + Math.abs(this.startY - evt.pageY) > 15) + window.clearTimeout(contextMenuTimeout); + type = 'touchmove'; + break; + + case 'mouseup': + if (!eventTarget) + return; + debug('mouseup:'); + + window.clearTimeout(contextMenuTimeout); + eventTarget.ownerDocument.releaseCapture(); + this.target = null; + type = 'touchend'; + break; + + case 'unload': + if (!eventTarget) + return; + + window.clearTimeout(contextMenuTimeout); + eventTarget.ownerDocument.releaseCapture(); + this.target = null; + TouchEventHandler.stop(); + return; + + case 'click': + if (!isNewTouchAction) { + debug('click: cancel'); + + evt.preventDefault(); + evt.stopPropagation(); + } else { + // Mouse events has been cancelled so dispatch a sequence + // of events to where touchend has been fired + if (preventMouseEvents) { + let target = evt.target; + ignoreEvents = true; + try { + this.fireMouseEvent('mousemove', evt); + this.fireMouseEvent('mousedown', evt); + this.fireMouseEvent('mouseup', evt); + } catch (e) { + alert(e); + } + evt.preventDefault(); + evt.stopPropagation(); + ignoreEvents = false; + } + + debug('click: fire'); + } + return; + } + + let target = eventTarget || this.target; + if (target && type) { + let touchEvent = this.sendTouchEvent(evt, target, type); + if (touchEvent.getPreventDefault() && canPreventMouseEvents) + preventMouseEvents = true; + } + + if (preventMouseEvents) { + evt.preventDefault(); + evt.stopPropagation(); + + if (type != 'touchmove') + debug('cancelled (fire ' + type + ')'); + } + }, + fireMouseEvent: function teh_fireMouseEvent(type, evt) { + debug(type + ': fire'); + + let content = evt.target.ownerDocument.defaultView; + var utils = content.QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIDOMWindowUtils); + utils.sendMouseEvent(type, evt.pageX, evt.pageY, 0, 1, 0, true); + }, + sendContextMenu: function teh_sendContextMenu(target, x, y, delay) { + let doc = target.ownerDocument; + let evt = doc.createEvent('MouseEvent'); + evt.initMouseEvent('contextmenu', true, true, doc.defaultView, + 0, x, y, x, y, false, false, false, false, + 0, null); + + let timeout = window.setTimeout((function contextMenu() { + debug('fire context-menu'); + + target.dispatchEvent(evt); + if (!evt.getPreventDefault()) + return; + + doc.releaseCapture(); + this.target = null; + + isNewTouchAction = false; + }).bind(this), delay); + return timeout; + }, + sendTouchEvent: function teh_sendTouchEvent(evt, target, name) { + let touchEvent = document.createEvent('touchevent'); + let point = document.createTouch(window, target, 0, + evt.pageX, evt.pageY, + evt.screenX, evt.screenY, + evt.clientX, evt.clientY, + 1, 1, 0, 0); + let touches = document.createTouchList(point); + let targetTouches = touches; + let changedTouches = touches; + touchEvent.initTouchEvent(name, true, true, window, 0, + false, false, false, false, + touches, targetTouches, changedTouches); + target.dispatchEvent(touchEvent); + return touchEvent; + } + }; + + window.addEventListener('ContentStart', function touchStart(evt) { + window.removeEventListener('ContentStart', touchStart); + TouchEventHandler.start(); + }); +})(); +
copy from mobile/xul/chrome/jar.mn copy to b2g/chrome/jar.mn --- a/mobile/xul/chrome/jar.mn +++ b/b2g/chrome/jar.mn @@ -1,89 +1,13 @@ #filter substitution chrome.jar: +% content branding %content/branding/ % content browser %content/ -* content/about.xhtml (content/about.xhtml) - content/config.xul (content/config.xul) - content/config.js (content/config.js) - content/aboutCertError.xhtml (content/aboutCertError.xhtml) - content/aboutHome.xhtml (content/aboutHome.xhtml) - content/localePicker.xul (content/localePicker.xul) - content/localePicker.js (content/localePicker.js) -* content/aboutRights.xhtml (content/aboutRights.xhtml) - content/blockedSite.xhtml (content/blockedSite.xhtml) - content/languages.properties (content/languages.properties) -* content/browser.xul (content/browser.xul) -* content/browser.js (content/browser.js) -* content/browser-ui.js (content/browser-ui.js) -* content/browser-scripts.js (content/browser-scripts.js) -* content/common-ui.js (content/common-ui.js) -* content/AlertsHelper.js (content/AlertsHelper.js) - content/AppMenu.js (content/AppMenu.js) -* content/AwesomePanel.js (content/AwesomePanel.js) - content/BookmarkHelper.js (content/BookmarkHelper.js) - content/BookmarkPopup.js (content/BookmarkPopup.js) - content/CharsetMenu.js (content/CharsetMenu.js) - content/ContentPopupHelper.js (content/ContentPopupHelper.js) -* content/ContextCommands.js (content/ContextCommands.js) - content/IndexedDB.js (content/IndexedDB.js) - content/MenuListHelperUI.js (content/MenuListHelperUI.js) - content/OfflineApps.js (content/OfflineApps.js) -* content/PageActions.js (content/PageActions.js) - content/SelectHelperUI.js (content/SelectHelperUI.js) - content/SelectionHelper.js (content/SelectionHelper.js) - content/SharingUI.js (content/SharingUI.js) - content/TabletSidebar.js (content/TabletSidebar.js) - content/TabsPopup.js (content/TabsPopup.js) - content/MasterPasswordUI.js (content/MasterPasswordUI.js) -* content/content.js (content/content.js) - content/commandUtil.js (content/commandUtil.js) -* content/bindings.xml (content/bindings.xml) - content/tabs.xml (content/tabs.xml) - content/bindings/checkbox.xml (content/bindings/checkbox.xml) -* content/bindings/browser.xml (content/bindings/browser.xml) - content/bindings/browser.js (content/bindings/browser.js) - content/notification.xml (content/notification.xml) - content/bindings/extensions.xml (content/bindings/extensions.xml) - content/bindings/downloads.xml (content/bindings/downloads.xml) - content/bindings/console.xml (content/bindings/console.xml) - content/bindings/dialog.xml (content/bindings/dialog.xml) - content/bindings/pageaction.xml (content/bindings/pageaction.xml) - content/bindings/arrowbox.xml (content/bindings/arrowbox.xml) - content/browser.css (content/browser.css) - content/cursor.css (content/cursor.css) -% content branding %content/branding/ - content/sanitize.js (content/sanitize.js) -* content/input.js (content/input.js) -* content/Util.js (content/Util.js) - content/forms.js (content/forms.js) -* content/preferences.js (content/preferences.js) - content/exceptions.js (content/exceptions.js) -* content/extensions.js (content/extensions.js) -* content/downloads.js (content/downloads.js) - content/console.js (content/console.js) - content/prompt/alert.xul (content/prompt/alert.xul) - content/prompt/confirm.xul (content/prompt/confirm.xul) - content/prompt/prompt.xul (content/prompt/prompt.xul) - content/prompt/promptPassword.xul (content/prompt/promptPassword.xul) - content/prompt/select.xul (content/prompt/select.xul) - content/prompt/prompt.js (content/prompt/prompt.js) - content/share.xul (content/share.xul) - content/webapps.xul (content/webapps.xul) - content/WebappsUI.js (content/WebappsUI.js) - content/masterPassword.xul (content/masterPassword.xul) - content/removeMasterPassword.xul (content/removeMasterPassword.xul) - content/AnimatedZoom.js (content/AnimatedZoom.js) -#ifdef MOZ_SERVICES_SYNC - content/sync.js (content/sync.js) -#endif - content/LoginManagerChild.js (content/LoginManagerChild.js) - content/fullscreen-video.js (content/fullscreen-video.js) - content/fullscreen-video.xhtml (content/fullscreen-video.xhtml) - content/netError.xhtml (content/netError.xhtml) - content/CapturePickerUI.js (content/CapturePickerUI.js) - content/CaptureDialog.js (content/CaptureDialog.js) - content/CaptureDialog.xul (content/CaptureDialog.xul) - -% override chrome://global/content/config.xul chrome://browser/content/config.xul +* content/shell.xul (content/shell.xul) + content/shell.js (content/shell.js) + content/touch.js (content/touch.js) + content/commandUtil.js (content/commandUtil.js) + % override chrome://global/content/netError.xhtml chrome://browser/content/netError.xhtml + content/netError.xhtml (content/netError.xhtml)
copy from mobile/xul/confvars.sh copy to b2g/confvars.sh --- a/mobile/xul/confvars.sh +++ b/b2g/confvars.sh @@ -30,44 +30,40 @@ # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** -MOZ_APP_BASENAME=Fennec +MOZ_APP_BASENAME=B2G MOZ_APP_VENDOR=Mozilla MOZ_APP_VERSION=11.0a1 -MOZ_BRANDING_DIRECTORY=mobile/xul/branding/unofficial -MOZ_OFFICIAL_BRANDING_DIRECTORY=mobile/xul/branding/official +MOZ_BRANDING_DIRECTORY=b2g/branding/unofficial +MOZ_OFFICIAL_BRANDING_DIRECTORY=b2g/branding/official # MOZ_APP_DISPLAYNAME is set by branding/configure.sh MOZ_SAFE_BROWSING= -MOZ_SERVICES_SYNC=1 +MOZ_SERVICES_SYNC= MOZ_DISABLE_DOMCRYPTO=1 +MOZ_APP_STATIC_INI=1 + +if test "$OS_TARGET" = "Android"; then +MOZ_CAPTURE=1 +MOZ_RAW=1 +fi + +# use custom widget for html:select +MOZ_USE_NATIVE_POPUP_WINDOWS=1 if test "$LIBXUL_SDK"; then MOZ_XULRUNNER=1 else MOZ_XULRUNNER= MOZ_PLACES=1 fi -if test "$OS_TARGET" = "Android"; then -MOZ_CAPTURE=1 -MOZ_RAW=1 -fi - -# Needed for building our components as part of libxul -MOZ_APP_COMPONENT_LIBS="browsercomps" -MOZ_APP_COMPONENT_INCLUDE=nsBrowserComponents.h - -# use custom widget for html:select -MOZ_USE_NATIVE_POPUP_WINDOWS=1 - -MOZ_APP_ID={a23983c0-fd0e-11dc-95ff-0800200c9a66} +MOZ_APP_ID={3c2e2abc-06d4-11e1-ac3b-374f68613e61} MOZ_EXTENSION_MANAGER=1 -MOZ_APP_STATIC_INI=1
copy from mobile/xul/installer/Makefile.in copy to b2g/installer/Makefile.in --- a/mobile/xul/installer/Makefile.in +++ b/b2g/installer/Makefile.in @@ -31,41 +31,35 @@ # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** -DEPTH = ../../.. +DEPTH = ../.. topsrcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk - -# overwrite mobile-l10n.js with a matchOS=true one for multi-locale builds -ifeq ($(AB_CD),multi) -PREF_JS_EXPORTS = $(srcdir)/mobile-l10n.js -endif - include $(topsrcdir)/config/rules.mk MOZ_PKG_REMOVALS = $(srcdir)/removed-files.in MOZ_PKG_MANIFEST_P = $(srcdir)/package-manifest.in MOZ_NONLOCALIZED_PKG_LIST = \ xpcom \ browser \ - mobile \ + b2g \ $(NULL) -MOZ_LOCALIZED_PKG_LIST = $(AB_CD) multilocale +MOZ_LOCALIZED_PKG_LIST = $(AB_CD) DEFINES += \ -DAB_CD=$(AB_CD) \ -DMOZ_APP_NAME=$(MOZ_APP_NAME) \ -DPREF_DIR=$(PREF_DIR) \ $(NULL) ifeq ($(MOZ_CHROME_FILE_FORMAT),jar) @@ -93,24 +87,16 @@ else # Every other platform just winds up in dist/bin BINPATH = bin endif DEFINES += -DBINPATH=$(BINPATH) ifdef MOZ_PKG_MANIFEST_P $(MOZ_PKG_MANIFEST): $(MOZ_PKG_MANIFEST_P) FORCE $(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $< > $@ -ifdef MOZ_CHROME_MULTILOCALE - printf "\n[multilocale]\n" >> $@ - for LOCALE in en-US $(MOZ_CHROME_MULTILOCALE) ;\ - do \ - printf "$(BINPATH)/chrome/$$LOCALE$(JAREXT)\n" >> $@; \ - printf "$(BINPATH)/chrome/$$LOCALE.manifest\n" >> $@; \ - done -endif GARBAGE += $(MOZ_PKG_MANIFEST) endif ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT))) PACKAGE_XULRUNNER = UNPACKAGE = else @@ -124,134 +110,17 @@ else MOZ_GRE_PKG_DIR=$(MOZ_PKG_DIR) endif package-xulrunner: ifdef LIBXUL_SDK ifndef SYSTEM_LIBXUL @echo "Packaging xulrunner..." @rm -rf $(LIBXUL_DIST)/xulrunner* - @$(MAKE) -C $(LIBXUL_DIST)/.. package || echo "Perhaps you're trying to package a prebuilt SDK. See 'https://wiki.mozilla.org/Mobile/Build/Fennec#Build' for more information." + @$(MAKE) -C $(LIBXUL_DIST)/.. package || echo "Perhaps you're trying to package a prebuilt SDK. See 'https://wiki.mozilla.org/B2G' for more information." @cd $(DIST)/$(MOZ_PKG_DIR); $(UNMAKE_PACKAGE) @echo "Removing unpackaged files... (the ones xulrunner/installer keeps)" @cd $(DIST)/$(MOZ_PKG_DIR)/xulrunner; rm -rf $(NO_PKG_FILES) else @echo "Using system xulrunner..." endif endif -ifeq ($(OS_TARGET),Linux) -GRE_MILESTONE = $(shell $(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(LIBXUL_DIST)/bin/platform.ini Build Milestone) -GRE_BUILDID = $(shell $(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(LIBXUL_DIST)/bin/platform.ini Build BuildID) -ABS_OBJDIR=`cd $(DEPTH); pwd` -ABS_TOPSRCDIR=$(shell cd $(topsrcdir); pwd) -BASE64_ICON = dist/branding/fennec_maemo_icon26.txt -MOZ_DEB_TIMESTAMP = "$(shell date +"%a, %d %b %Y %T %z" )" - -DEB_PKG_VERSION = $(shell echo $(MOZ_APP_VERSION) | $(PERL) -pe 's/pre/~$(GRE_BUILDID)/; s/^([0-9.]+)([a-z][0-9]+)/$$1~$$2/') - -DEB_BUILD_ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH) -# package name should match mobile/installer/debian/changelog.in -DEB_PKG_NAME = $(MOZ_PKG_APPNAME)_$(DEB_PKG_VERSION)_$(DEB_BUILD_ARCH).deb - -DEFINES += \ - -DGRE_MILESTONE=$(GRE_MILESTONE) \ - -DGRE_BUILDID=$(GRE_BUILDID) \ - -Dinstalldir=$(installdir) \ - -DMOZ_APP_DISPLAYNAME="$(MOZ_APP_DISPLAYNAME)" \ - -DMOZ_APP_VERSION=$(MOZ_APP_VERSION) \ - -DABS_OBJDIR=$(ABS_OBJDIR) \ - -DBASE64_ICON=$(BASE64_ICON) \ - -DMOZ_DEB_TIMESTAMP=$(MOZ_DEB_TIMESTAMP) \ - -DDEB_PKG_VERSION=$(DEB_PKG_VERSION) \ - $(NULL) - -DEBDESTDIR=debian/$(MOZ_APP_NAME) - -PP_DEB_FILES = debian/control \ - debian/changelog \ - debian/$(MOZ_APP_NAME).desktop \ - debian/$(MOZ_APP_NAME).links \ - debian/$(MOZ_APP_NAME).service \ - debian/compat \ - debian/files \ - debian/menu \ - debian/fennec.preinst \ - debian/fennec.prerm \ - debian/fennec.postinst \ - $(NULL) - -ifeq ($(MOZ_PLATFORM_MAEMO),6) -PP_DEB_FILES += debian/fennec.aegis \ - debian/backup \ - debian/restore \ - debian/fennec.conf \ - debian/fennec-cud.sh \ - debian/fennec-rfs.sh \ - debian/fennec.policy \ - $(NULL) -endif - -$(PP_DEB_FILES): - @$(EXIT_ON_ERROR) \ - for f in $(PP_DEB_FILES); do \ - src=$(srcdir)/debian/`basename $$f`.in; \ - echo $$src ">" $$f ;\ - $(RM) -f $$f; \ - mkdir -p debian; \ - $(PYTHON) $(topsrcdir)/config/Preprocessor.py \ - $(AUTOMATION_PPARGS) $(DEFINES) $(ACDEFINES) $$src > $$f; \ - done - -deb: $(PP_DEB_FILES) $(DIST)/branding/$(MOZ_APP_NAME)_scalable.png \ - $(DIST)/branding/$(MOZ_APP_NAME)_26x26.png \ - $(DIST)/branding/$(MOZ_APP_NAME)_40x40.png - rm -rf $(DEBDESTDIR)/$(installdir)/* - $(NSINSTALL) -D $(DEBDESTDIR)/$(installdir) - cp -pRL $(DIST)/$(MOZ_APP_NAME)/* $(DEBDESTDIR)/$(installdir) -ifeq ($(MOZ_PLATFORM_MAEMO),6) - $(NSINSTALL) debian/$(MOZ_APP_NAME).desktop $(DEBDESTDIR)/usr/share/applications/ - $(NSINSTALL) -D $(DEBDESTDIR)/usr/share/dbus-1/services/ - cp debian/$(MOZ_APP_NAME).service $(DEBDESTDIR)/usr/share/dbus-1/services/org.mozilla.$(MOZ_APP_NAME).service - $(NSINSTALL) -D $(DEBDESTDIR)/usr/share/themes/blanco/meegotouch/icons/ - cp $(DIST)/branding/$(MOZ_APP_NAME)_scalable.png $(DEBDESTDIR)/usr/share/themes/blanco/meegotouch/icons/$(MOZ_APP_NAME).png - $(NSINSTALL) -D $(DEBDESTDIR)/usr/share/backup-framework/applications - $(NSINSTALL) -D $(DEBDESTDIR)/usr/share/$(MOZ_APP_NAME) - $(NSINSTALL) -D $(DEBDESTDIR)/etc/osso-cud-scripts - $(NSINSTALL) -D $(DEBDESTDIR)/etc/osso-rfs-scripts - $(NSINSTALL) -m 755 debian/backup $(DEBDESTDIR)/usr/share/$(MOZ_APP_NAME)/ - $(NSINSTALL) -m 755 debian/restore $(DEBDESTDIR)/usr/share/$(MOZ_APP_NAME)/ - cp debian/$(MOZ_APP_NAME).conf $(DEBDESTDIR)/usr/share/backup-framework/applications/$(MOZ_APP_NAME).conf - cp debian/$(MOZ_APP_NAME)-cud.sh $(DEBDESTDIR)/etc/osso-cud-scripts/$(MOZ_APP_NAME)-cud.sh - cp debian/$(MOZ_APP_NAME)-rfs.sh $(DEBDESTDIR)/etc/osso-rfs-scripts/$(MOZ_APP_NAME)-rfs.sh - $(NSINSTALL) -D $(DEBDESTDIR)/usr/share/policy/etc/syspart.conf.d - cp debian/$(MOZ_APP_NAME).policy $(DEBDESTDIR)/usr/share/policy/etc/syspart.conf.d/$(MOZ_APP_NAME) -else - $(NSINSTALL) debian/$(MOZ_APP_NAME).desktop $(DEBDESTDIR)/usr/share/applications/hildon/ - $(NSINSTALL) -D $(DEBDESTDIR)/usr/share/dbus-1/services/ - cp debian/$(MOZ_APP_NAME).service $(DEBDESTDIR)/usr/share/dbus-1/services/org.mozilla.$(MOZ_APP_NAME).service - $(NSINSTALL) -D $(DEBDESTDIR)/usr/share/icons/hicolor/scalable/hildon/ - cp $(DIST)/branding/$(MOZ_APP_NAME)_scalable.png $(DEBDESTDIR)/usr/share/icons/hicolor/scalable/hildon/$(MOZ_APP_NAME).png - $(NSINSTALL) -D $(DEBDESTDIR)/usr/share/icons/hicolor/26x26/hildon/ - cp $(DIST)/branding/$(MOZ_APP_NAME)_26x26.png $(DEBDESTDIR)/usr/share/icons/hicolor/26x26/hildon/$(MOZ_APP_NAME).png - $(NSINSTALL) -D $(DEBDESTDIR)/usr/share/icons/hicolor/40x40/hildon/ - cp $(DIST)/branding/$(MOZ_APP_NAME)_40x40.png $(DEBDESTDIR)/usr/share/icons/hicolor/40x40/hildon/$(MOZ_APP_NAME).png -endif - fakeroot dh_link; fakeroot dh_fixperms; fakeroot dh_installdeb; fakeroot dh_shlibdeps; fakeroot dh_gencontrol; fakeroot dh_md5sums; fakeroot dh_builddeb; - -# a defined CONTENTMANAGER implicitly means MOZ_PLATFORM_MAEMO is equals 6 -# in case you use CONTENTMANGER you need to sign your package to gain tracker access. -ifeq ($(MOZ_PLATFORM_MAEMO),6) - if test -e "/usr/bin/aegis-deb-add"; then \ - fakeroot aegis-deb-add -control $(DEBDESTDIR)/DEBIAN/control .. debian/fennec.aegis=_aegis; \ - else \ - echo aegis-builder not found, security signing failed!; \ - fi -endif - - echo $(DEB_PKG_NAME) > $(DIST)/deb_name.txt - -installer: deb - @echo Installer DEB created! - -# relative to $(DIST) -UPLOAD_EXTRA_FILES += ../mobile/$(DEB_PKG_NAME) deb_name.txt -endif
copy from mobile/xul/installer/package-manifest.in copy to b2g/installer/package-manifest.in --- a/mobile/xul/installer/package-manifest.in +++ b/b2g/installer/package-manifest.in @@ -1,9 +1,9 @@ -; Package file for the Fennec build. +; Package file for the B2G build. ; ; File format: ; ; [] designates a toplevel component. Example: [xpcom] ; - in front of a file specifies it to be removed from the destination ; * wildcard support to recursively copy the entire directory ; ; file comment ; @@ -16,17 +16,17 @@ @APPNAME@/Contents/PkgInfo @APPNAME@/Contents/Plug-Ins/ @APPNAME@/Contents/Resources/ #endif [@AB_CD@] @BINPATH@/chrome/@AB_CD@@JAREXT@ @BINPATH@/chrome/@AB_CD@.manifest -@BINPATH@/@PREF_DIR@/mobile-l10n.js +@BINPATH@/@PREF_DIR@/b2g-l10n.js @BINPATH@/searchplugins/* @BINPATH@/defaults/profile/bookmarks.html @BINPATH@/defaults/profile/localstore.rdf @BINPATH@/defaults/profile/mimeTypes.rdf @BINPATH@/defaults/profile/chrome/* #ifdef MOZ_UPDATER @BINPATH@/update.locale @BINPATH@/updater.ini @@ -42,63 +42,57 @@ #ifndef MOZ_STATIC_JS @BINPATH@/@DLL_PREFIX@mozjs@DLL_SUFFIX@ #endif @BINPATH@/@DLL_PREFIX@plc4@DLL_SUFFIX@ @BINPATH@/@DLL_PREFIX@plds4@DLL_SUFFIX@ @BINPATH@/@DLL_PREFIX@xpcom@DLL_SUFFIX@ @BINPATH@/@DLL_PREFIX@nspr4@DLL_SUFFIX@ @BINPATH@/@DLL_PREFIX@mozalloc@DLL_SUFFIX@ -@BINPATH@/@DLL_PREFIX@mozutils@DLL_SUFFIX@ #ifdef XP_MACOSX @BINPATH@/XUL #else @BINPATH@/@DLL_PREFIX@xul@DLL_SUFFIX@ #endif #ifdef XP_MACOSX @BINPATH@/@MOZ_CHILD_PROCESS_NAME@.app/ #else @BINPATH@/@MOZ_CHILD_PROCESS_NAME@ #endif #ifdef XP_WIN32 +#ifndef MOZ_MEMORY #if _MSC_VER == 1400 @BINPATH@/Microsoft.VC80.CRT.manifest @BINPATH@/msvcm80.dll @BINPATH@/msvcp80.dll @BINPATH@/msvcr80.dll #elif _MSC_VER == 1500 @BINPATH@/Microsoft.VC90.CRT.manifest @BINPATH@/msvcm90.dll @BINPATH@/msvcp90.dll @BINPATH@/msvcr90.dll #elif _MSC_VER == 1600 @BINPATH@/msvcp100.dll @BINPATH@/msvcr100.dll -#elif _MSC_VER == 1700 -@BINPATH@/msvcp110.dll -@BINPATH@/msvcr110.dll #endif - +#else +@BINPATH@/mozcrt19.dll +@BINPATH@/mozcpp19.dll #endif - +#endif #ifdef ANDROID @BINPATH@/AndroidManifest.xml @BINPATH@/resources.arsc -@BINPATH@/package-name.txt @BINPATH@/classes.dex @BINPATH@/@DLL_PREFIX@mozutils@DLL_SUFFIX@ @BINPATH@/res/drawable @BINPATH@/res/drawable-hdpi @BINPATH@/res/layout #endif -#ifdef MOZ_PLATFORM_MAEMO -@BINPATH@/res/drawable -#endif - [browser] ; [Base Browser Files] #ifndef XP_UNIX @BINPATH@/@MOZ_APP_NAME@.exe #else @BINPATH@/@MOZ_APP_NAME@-bin @BINPATH@/@MOZ_APP_NAME@ #endif @@ -146,35 +140,30 @@ @BINPATH@/components/content_html.xpt @BINPATH@/components/content_xslt.xpt @BINPATH@/components/content_xtf.xpt @BINPATH@/components/cookie.xpt @BINPATH@/components/directory.xpt @BINPATH@/components/docshell.xpt @BINPATH@/components/dom.xpt @BINPATH@/components/dom_base.xpt -#ifdef MOZ_B2G_RIL -@BINPATH@/components/dom_telephony.xpt -@BINPATH@/components/dom_telephony_worker.xpt -#endif @BINPATH@/components/dom_battery.xpt @BINPATH@/components/dom_canvas.xpt @BINPATH@/components/dom_core.xpt @BINPATH@/components/dom_css.xpt @BINPATH@/components/dom_events.xpt @BINPATH@/components/dom_geolocation.xpt @BINPATH@/components/dom_notification.xpt @BINPATH@/components/dom_html.xpt @BINPATH@/components/dom_indexeddb.xpt @BINPATH@/components/dom_offline.xpt @BINPATH@/components/dom_json.xpt @BINPATH@/components/dom_range.xpt @BINPATH@/components/dom_sidebar.xpt @BINPATH@/components/dom_storage.xpt -@BINPATH@/components/dom_sms.xpt @BINPATH@/components/dom_stylesheets.xpt @BINPATH@/components/dom_threads.xpt @BINPATH@/components/dom_traversal.xpt @BINPATH@/components/dom_views.xpt @BINPATH@/components/dom_xbl.xpt @BINPATH@/components/dom_xpath.xpt @BINPATH@/components/dom_xul.xpt @BINPATH@/components/dom_loadsave.xpt @@ -248,16 +237,19 @@ @BINPATH@/components/storage.xpt @BINPATH@/components/telemetry.xpt @BINPATH@/components/toolkitprofile.xpt #ifdef MOZ_ENABLE_XREMOTE @BINPATH@/components/toolkitremote.xpt #endif @BINPATH@/components/txtsvc.xpt @BINPATH@/components/txmgr.xpt +#ifdef MOZ_USE_NATIVE_UCONV +@BINPATH@/components/ucnative.xpt +#endif @BINPATH@/components/uconv.xpt @BINPATH@/components/unicharutil.xpt #ifdef MOZ_UPDATER @BINPATH@/components/update.xpt #endif @BINPATH@/components/uriloader.xpt @BINPATH@/components/urlformatter.xpt @BINPATH@/components/webBrowser_core.xpt @@ -277,16 +269,17 @@ @BINPATH@/components/xpcom_threads.xpt @BINPATH@/components/xpcom_xpti.xpt @BINPATH@/components/xpconnect.xpt @BINPATH@/components/xulapp.xpt @BINPATH@/components/xul.xpt @BINPATH@/components/xuldoc.xpt @BINPATH@/components/xultmpl.xpt @BINPATH@/components/zipwriter.xpt +@BINPATH@/components/webapps.xpt ; JavaScript components @BINPATH@/components/ConsoleAPI.manifest @BINPATH@/components/ConsoleAPI.js @BINPATH@/components/FeedProcessor.manifest @BINPATH@/components/FeedProcessor.js @BINPATH@/components/BrowserFeeds.manifest @BINPATH@/components/FeedConverter.js @@ -300,16 +293,18 @@ @BINPATH@/components/nsSetDefaultBrowser.manifest @BINPATH@/components/nsSetDefaultBrowser.js @BINPATH@/components/BrowserPlaces.manifest @BINPATH@/components/nsPrivateBrowsingService.manifest @BINPATH@/components/nsPrivateBrowsingService.js @BINPATH@/components/toolkitsearch.manifest @BINPATH@/components/nsSearchService.js @BINPATH@/components/nsSearchSuggestions.js +@BINPATH@/components/nsTryToClose.manifest +@BINPATH@/components/nsTryToClose.js @BINPATH@/components/passwordmgr.manifest @BINPATH@/components/nsLoginInfo.js @BINPATH@/components/nsLoginManager.js @BINPATH@/components/nsLoginManagerPrompter.js @BINPATH@/components/storage-Legacy.js @BINPATH@/components/storage-mozStorage.js @BINPATH@/components/crypto-SDR.js @BINPATH@/components/jsconsole-clhandler.manifest @@ -384,22 +379,16 @@ @BINPATH@/components/contentSecurityPolicy.manifest @BINPATH@/components/contentSecurityPolicy.js @BINPATH@/components/contentAreaDropListener.manifest @BINPATH@/components/contentAreaDropListener.js @BINPATH@/components/messageWakeupService.js @BINPATH@/components/messageWakeupService.manifest @BINPATH@/components/nsFilePicker.js @BINPATH@/components/nsFilePicker.manifest -#ifdef MOZ_B2G_RIL -@BINPATH@/components/nsTelephonyWorker.manifest -@BINPATH@/components/nsTelephonyWorker.js -@BINPATH@/components/Telephony.manifest -@BINPATH@/components/Telephony.js -#endif #ifdef XP_MACOSX @BINPATH@/components/libalerts_s.dylib #endif #ifdef MOZ_ENABLE_DBUS @BINPATH@/components/@DLL_PREFIX@dbusservice@DLL_SUFFIX@ #endif @BINPATH@/components/nsINIProcessor.manifest @BINPATH@/components/nsINIProcessor.js @@ -462,18 +451,17 @@ #ifndef XP_MACOSX @BINPATH@/icons/*.xpm @BINPATH@/icons/*.png #endif #endif ; [Default Preferences] ; All the pref files must be part of base to prevent migration bugs -@BINPATH@/@PREF_DIR@/mobile.js -@BINPATH@/@PREF_DIR@/mobile-branding.js +@BINPATH@/@PREF_DIR@/b2g.js @BINPATH@/@PREF_DIR@/channel-prefs.js #ifdef MOZ_SERVICES_SYNC @BINPATH@/@PREF_DIR@/services-sync.js #endif @BINPATH@/greprefs.js @BINPATH@/defaults/autoconfig/platform.js @BINPATH@/defaults/autoconfig/prefcalls.js @BINPATH@/defaults/profile/prefs.js @@ -513,17 +501,19 @@ @BINPATH@/res/entityTables/* #ifdef XP_MACOSX @BINPATH@/res/MainMenu.nib/ #endif ; svg @BINPATH@/res/svg.css @BINPATH@/components/dom_svg.xpt +#ifdef MOZ_SMIL @BINPATH@/components/dom_smil.xpt +#endif ; [Personal Security Manager] ; @BINPATH@/@DLL_PREFIX@nssckbi@DLL_SUFFIX@ @BINPATH@/components/pipboot.xpt @BINPATH@/components/pipnss.xpt @BINPATH@/components/pippki.xpt @BINPATH@/@DLL_PREFIX@nss3@DLL_SUFFIX@ @@ -587,42 +577,12 @@ bin/libfreebl_32int64_3.so bin/components/@DLL_PREFIX@nkgnomevfs@DLL_SUFFIX@ #endif ; [OS/2] #ifdef XP_OS2 @BINPATH@/MozSounds.cmd #endif -[mobile] +[b2g] @BINPATH@/chrome/icons/ @BINPATH@/chrome/chrome@JAREXT@ @BINPATH@/chrome/chrome.manifest -@BINPATH@/components/AboutRedirector.js -@BINPATH@/components/AddonUpdateService.js -@BINPATH@/components/AlertsService.js -@BINPATH@/components/AutoCompleteCache.js -@BINPATH@/components/BlocklistPrompt.js -@BINPATH@/components/BrowserCLH.js -@BINPATH@/components/BrowserStartup.js -@BINPATH@/components/ContentDispatchChooser.js -@BINPATH@/components/ContentPermissionPrompt.js -@BINPATH@/components/DirectoryProvider.js -@BINPATH@/components/DownloadManagerUI.js -@BINPATH@/components/FormAutoComplete.js -@BINPATH@/components/HelperAppDialog.js -@BINPATH@/components/LoginManager.js -@BINPATH@/components/LoginManagerPrompter.js -@BINPATH@/components/MobileComponents.manifest -@BINPATH@/components/MobileComponents.xpt -@BINPATH@/components/PromptService.js -@BINPATH@/components/SessionStore.js -@BINPATH@/components/Sidebar.js -#ifdef MOZ_SAFE_BROWSING -@BINPATH@/components/SafeBrowsing.js -#endif -#ifdef MOZ_UPDATER -@BINPATH@/components/UpdatePrompt.js -#endif -@BINPATH@/components/XPIDialogService.js -@BINPATH@/components/CapturePicker.js -@BINPATH@/components/browsercomps.xpt -@BINPATH@/extensions/feedback@mobile.mozilla.org.xpi
copy from mobile/xul/installer/removed-files.in copy to b2g/installer/removed-files.in --- a/mobile/xul/installer/removed-files.in +++ b/b2g/installer/removed-files.in @@ -1,30 +1,1 @@ -update.locale README.txt -components/nsTryToClose.js -#if MOZ_UPDATE_CHANNEL != beta -extensions/feedback@mobile.mozilla.org.xpi -#endif -#ifdef XP_WIN - #if _MSC_VER != 1400 - @BINPATH@/Microsoft.VC80.CRT.manifest - @BINPATH@/msvcm80.dll - @BINPATH@/msvcp80.dll - @BINPATH@/msvcr80.dll - #endif - #if _MSC_VER != 1500 - @BINPATH@/Microsoft.VC90.CRT.manifest - @BINPATH@/msvcm90.dll - @BINPATH@/msvcp90.dll - @BINPATH@/msvcr90.dll - #endif - #if _MSC_VER != 1600 - @BINPATH@/msvcp100.dll - @BINPATH@/msvcr100.dll - #endif - #if _MSC_VER != 1700 - @BINPATH@/msvcp110.dll - @BINPATH@/msvcr110.dll - #endif - mozcrt19.dll - mozcpp19.dll -#endif
copy from mobile/xul/locales/Makefile.in copy to b2g/locales/Makefile.in --- a/mobile/xul/locales/Makefile.in +++ b/b2g/locales/Makefile.in @@ -1,249 +1,227 @@ +# vim:set ts=8 sw=8 sts=8 noet: # ***** BEGIN LICENSE BLOCK ***** # Version: MPL 1.1/GPL 2.0/LGPL 2.1 # # The contents of this file are subject to the Mozilla Public License Version # 1.1 (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS IS" basis, # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License # for the specific language governing rights and limitations under the # License. # -# The Original Code is Mozilla. +# The Original Code is the Mozilla Browser code. # # The Initial Developer of the Original Code is -# the Mozilla Foundation <http://www.mozilla.org/>. -# Portions created by the Initial Developer are Copyright (C) 2007 +# Benjamin Smedberg <bsmedberg@covad.net> +# Portions created by the Initial Developer are Copyright (C) 2004 # the Initial Developer. All Rights Reserved. # # Contributor(s): -# Mark Finkle <mfinkle@mozilla.com> -# Axel Hecht <l10n@mozilla.com> # # Alternatively, the contents of this file may be used under the terms of # either the GNU General Public License Version 2 or later (the "GPL"), or # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), # in which case the provisions of the GPL or the LGPL are applicable instead # of those above. If you wish to allow use of your version of this file only # under the terms of either the GPL or the LGPL, and not to allow others to # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** -DEPTH = ../../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ -relativesrcdir = mobile/xul/locales +DEPTH = ../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ +relativesrcdir = b2g/locales include $(DEPTH)/config/autoconf.mk + include $(topsrcdir)/config/config.mk ifdef LOCALE_MERGEDIR -vpath book%.inc $(LOCALE_MERGEDIR)/mobile/profile -endif -vpath book%.inc $(LOCALE_SRCDIR)/profile -ifdef LOCALE_MERGEDIR -vpath book%.inc @srcdir@/en-US/profile -endif - -ifdef LOCALE_MERGEDIR -vpath crashreporter%.ini $(LOCALE_MERGEDIR)/mobile/crashreporter +vpath crashreporter%.ini $(LOCALE_MERGEDIR)/b2g/crashreporter endif vpath crashreporter%.ini $(LOCALE_SRCDIR)/crashreporter ifdef LOCALE_MERGEDIR vpath crashreporter%.ini @srcdir@/en-US/crashreporter endif + SUBMAKEFILES += \ - $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/Makefile \ - $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales/Makefile \ - $(NULL) + $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/Makefile \ + $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales/Makefile \ + $(NULL) + +# This makefile uses variable overrides from the libs-% target to +# build non-default locales to non-default dist/ locations. Be aware! -MOZ_LANGPACK_EID=langpack-$(AB_CD)@firefox-mobile.mozilla.org -PREF_JS_EXPORTS = $(firstword $(wildcard $(LOCALE_SRCDIR)/mobile-l10n.js) \ - @srcdir@/en-US/mobile-l10n.js ) +PWD := $(CURDIR) -# Shouldn't := DEB_BUILD_ARCH despite the $(shell ) as deb isn't everywhere -DEB_BUILD_ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH) -DATASTAGE = $(CURDIR)/data-stage +# These are defaulted to be compatible with the files the wget-en-US target +# pulls. You may override them if you provide your own files. You _must_ +# override them when MOZ_PKG_PRETTYNAMES is defined - the defaults will not +# work in that case. +ZIP_IN ?= $(_ABS_DIST)/$(PACKAGE) +WIN32_INSTALLER_IN ?= $(_ABS_DIST)/$(PKG_INST_PATH)$(PKG_INST_BASENAME).exe +RETRIEVE_WINDOWS_INSTALLER = 1 -SEARCH_PLUGINS = $(shell cat \ - $(firstword $(wildcard $(LOCALE_SRCDIR)/searchplugins/list.txt) \ - @srcdir@/en-US/searchplugins/list.txt ) ) +MOZ_LANGPACK_EID=langpack-$(AB_CD)@b2g.mozilla.org -tmp-search.jar.mn:: - printf "$(AB_CD).jar:" > $@ - printf "$(foreach plugin,$(SEARCH_PLUGINS),$(subst __PLUGIN_SUBST__,$(plugin), \n locale/$(AB_CD)/browser/searchplugins/__PLUGIN_SUBST__.xml (__PLUGIN_SUBST__.xml)))" >> $@ - @echo >> $@ +PREF_JS_EXPORTS = $(call MERGE_FILE,b2g-l10n.js) -searchplugins: tmp-search.jar.mn - $(PYTHON) $(MOZILLA_DIR)/config/JarMaker.py \ - $(QUIET) -j $(FINAL_TARGET)/chrome \ - -s $(topsrcdir)/$(relativesrcdir)/en-US/searchplugins \ - -s $(LOCALE_SRCDIR)/searchplugins \ - $(MAKE_JARS_FLAGS) tmp-search.jar.mn +ifneq (,$(filter cocoa,$(MOZ_WIDGET_TOOLKIT))) +MOZ_PKG_MAC_DSSTORE=$(_ABS_DIST)/branding/dsstore +MOZ_PKG_MAC_BACKGROUND=$(_ABS_DIST)/branding/background.png +MOZ_PKG_MAC_ICON=$(_ABS_DIST)/branding/disk.icns +MOZ_PKG_MAC_EXTRA=--symlink "/Applications:/ " +endif -export:: searchplugins - -GARBAGE += tmp-search.jar.mn +ifeq (WINNT,$(OS_ARCH)) +UNINSTALLER_PACKAGE_HOOK = $(RM) -r $(STAGEDIST)/uninstall; \ + $(NSINSTALL) -D $(STAGEDIST)/uninstall; \ + cp ../installer/windows/l10ngen/helper.exe $(STAGEDIST)/uninstall; \ + $(RM) $(_ABS_DIST)/l10n-stage/setup.exe; \ + cp ../installer/windows/l10ngen/setup.exe $(_ABS_DIST)/l10n-stage; \ + $(NULL) +endif include $(topsrcdir)/config/rules.mk include $(topsrcdir)/toolkit/locales/l10n.mk -clobber-zip: - $(RM) $(STAGEDIST)/chrome/$(AB_CD).jar \ - $(STAGEDIST)/chrome/$(AB_CD).manifest \ - $(STAGEDIST)/defaults/preferences/mobile-l10n.js - $(RM) -r $(STAGEDIST)/dictionaries \ - $(STAGEDIST)/hyphenation \ - $(STAGEDIST)/defaults/profile \ - $(STAGEDIST)/chrome/$(AB_CD) +$(STAGEDIST): $(DIST)/branding + +$(DIST)/branding: + $(NSINSTALL) -D $@ + +libs:: + @if test -f "$(LOCALE_SRCDIR)/existing-profile-defaults.js"; then \ + $(PYTHON) $(topsrcdir)/config/Preprocessor.py $(PREF_PPFLAGS) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) \ + $(LOCALE_SRCDIR)/existing-profile-defaults.js > $(FINAL_TARGET)/defaults/existing-profile-defaults.js; \ + fi +install:: + @if test -f "$(LOCALE_SRCDIR)/existing-profile-defaults.js"; then \ + $(PYTHON) $(topsrcdir)/config/Preprocessor.py $(PREF_PPFLAGS) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) \ + $(LOCALE_SRCDIR)/existing-profile-defaults.js > $(DESTDIR)$(mozappdir)/defaults/existing-profile-defaults.js; \ + fi + +NO_JA_JP_MAC_AB_CD := $(if $(filter ja-JP-mac, $(AB_CD)),ja,$(AB_CD)) libs-%: $(NSINSTALL) -D $(DIST)/install @$(MAKE) -C ../../toolkit/locales libs-$* BOTH_MANIFESTS=1 @$(MAKE) -C ../../services/sync/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1 + @$(MAKE) -C ../../extensions/spellcheck/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1 @$(MAKE) -C ../../intl/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1 - @$(MAKE) -B bookmarks.json AB_CD=$* - @$(MAKE) -B searchplugins AB_CD=$* XPI_NAME=locale-$* - @$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=defaults/preferences BOTH_MANIFESTS=1 + @$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=$(PREF_DIR) BOTH_MANIFESTS=1 @$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1 -# Tailored target to just add the chrome processing for multi-locale builds -chrome-%: - @$(MAKE) -C $(DEPTH)/toolkit/locales chrome-$* - @$(MAKE) -C $(DEPTH)/services/sync/locales chrome AB_CD=$* - @$(MAKE) -B bookmarks.json AB_CD=$* - @$(MAKE) -B searchplugins AB_CD=$* - @$(MAKE) chrome AB_CD=$* - @$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales chrome AB_CD=$* -ifeq ($(OS_TARGET),Android) - @$(MAKE) -C $(DEPTH)/embedding/android chrome AB_CD=$* + +repackage-win32-installer: WIN32_INSTALLER_OUT=$(_ABS_DIST)/$(PKG_INST_PATH)$(PKG_INST_BASENAME).exe +repackage-win32-installer: $(call ESCAPE_SPACE,$(WIN32_INSTALLER_IN)) $(SUBMAKEFILES) libs-$(AB_CD) + @echo "Repackaging $(WIN32_INSTALLER_IN) into $(WIN32_INSTALLER_OUT)." + $(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY) export + $(MAKE) -C ../installer/windows CONFIG_DIR=l10ngen l10ngen/setup.exe l10ngen/7zSD.sfx + $(MAKE) repackage-zip \ + AB_CD=$(AB_CD) \ + MOZ_PKG_FORMAT=SFX7Z \ + ZIP_IN="$(WIN32_INSTALLER_IN)" \ + ZIP_OUT="$(WIN32_INSTALLER_OUT)" \ + SFX_HEADER="$(PWD)/../installer/windows/l10ngen/7zSD.sfx \ + $(topsrcdir)/b2g/installer/windows/app.tag" + +ifeq (WINNT,$(OS_ARCH)) +repackage-win32-installer-%: + @$(MAKE) repackage-win32-installer AB_CD=$* WIN32_INSTALLER_IN="$(WIN32_INSTALLER_IN)" +else +repackage-win32-installer-%: ; endif -# This is a generic target that will make a langpack and repack tarball -# builds. It is called from the tinderbox scripts. Alter it with caution. -installers-%: clobber-% langpack-% repackage-zip-% +clobber-zip: + $(RM) $(STAGEDIST)/chrome/$(AB_CD).jar \ + $(STAGEDIST)/chrome/$(AB_CD).manifest \ + $(STAGEDIST)/defaults/pref/b2g-l10n.js + $(STAGEDIST)/dictionaries \ + $(STAGEDIST)/hyphenation \ + $(STAGEDIST)/defaults/profile \ + $(STAGEDIST)/chrome/$(AB_CD) + + +langpack: langpack-$(AB_CD) + +# This is a generic target that will make a langpack, repack ZIP (+tarball) +# builds, and repack an installer if applicable. It is called from the +# tinderbox scripts. Alter it with caution. + +installers-%: clobber-% langpack-% repackage-win32-installer-% repackage-zip-% @echo "repackaging done" -NO_JA_JP_MAC_AB_CD := $(if $(filter ja-JP-mac, $(AB_CD)),ja,$(AB_CD)) - -bookmarks.json: bookmarks.inc generic/profile/bookmarks.json.in - $(PYTHON) $(topsrcdir)/config/Preprocessor.py \ - -I $< \ - -DAB_CD=$(NO_JA_JP_MAC_AB_CD) \ - $(srcdir)/generic/profile/bookmarks.json.in \ - > $@ - -export:: bookmarks.json - ifdef MOZ_UPDATER -ifdef LOCALE_MERGEDIR -UPDATER_INI := $(firstword $(wildcard $(LOCALE_MERGEDIR)/updater/updater.ini) \ - $(wildcard $(LOCALE_SRCDIR)/updater/updater.ini) \ - $(srcdir)/en-US/updater/updater.ini ) +libs:: $(call MERGE_FILE,updater/updater.ini) +ifeq ($(OS_ARCH),WINNT) + cat $< $(srcdir)/../installer/windows/nsis/updater_append.ini | \ + sed -e "s/^InfoText=/Info=/" -e "s/^TitleText=/Title=/" | \ + sed -e "s/%MOZ_APP_DISPLAYNAME%/$(MOZ_APP_DISPLAYNAME)/" > \ + $(FINAL_TARGET)/updater.ini else -UPDATER_INI := $(addprefix $(LOCALE_SRCDIR)/,updater/updater.ini) -endif -libs:: $(UPDATER_INI) cat $< | \ sed -e "s/^InfoText=/Info=/" -e "s/^TitleText=/Title=/" | \ sed -e "s/%MOZ_APP_DISPLAYNAME%/$(MOZ_APP_DISPLAYNAME)/" > \ $(FINAL_TARGET)/updater.ini endif +endif ifdef MOZ_CRASHREPORTER libs:: crashreporter-override.ini $(SYSINSTALL) $(IFLAGS1) $^ $(FINAL_TARGET) endif -# When we unpack fennec on MacOS X the platform.ini and application.ini are in slightly +# When we unpack b2g on MacOS X the platform.ini and application.ini are in slightly # different locations that on all other platforms ifeq (Darwin, $(OS_ARCH)) ifdef LIBXUL_SDK GECKO_PLATFORM_INI_PATH="$(STAGEDIST)/../Frameworks/XUL.framework/Versions/$(MOZILLA_VERSION)/platform.ini" else GECKO_PLATFORM_INI_PATH="$(STAGEDIST)/platform.ini" endif -FENNEC_APPLICATION_INI_PATH="$(STAGEDIST)/application.ini" +B2G_APPLICATION_INI_PATH="$(STAGEDIST)/application.ini" else ifdef LIBXUL_SDK GECKO_PLATFORM_INI_PATH="$(STAGEDIST)/xulrunner/platform.ini" else GECKO_PLATFORM_INI_PATH="$(STAGEDIST)/platform.ini" endif -FENNEC_APPLICATION_INI_PATH="$(STAGEDIST)/application.ini" +B2G_APPLICATION_INI_PATH="$(STAGEDIST)/application.ini" endif + ident: @printf "gecko_revision " @$(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(GECKO_PLATFORM_INI_PATH) Build SourceStamp - @printf "fennec_revision " - @$(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(FENNEC_APPLICATION_INI_PATH) App SourceStamp + @printf "b2g_revision " + @$(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(B2G_APPLICATION_INI_PATH) App SourceStamp @printf "buildid " - @$(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(FENNEC_APPLICATION_INI_PATH) App BuildID - -# special targets just to do the debian single locale packages -wget-DEB_PKG_NAME: -ifndef WGET - $(error Wget not installed) -endif -ifndef EN_US_BINARY_URL - $(error EN_US_BINARY_URL not defined) -endif - @$(WGET) -q -O - $(EN_US_BINARY_URL)/deb_name.txt - -wget-deb: -ifndef WGET - $(error Wget not installed) -endif -ifndef EN_US_BINARY_URL - $(error EN_US_BINARY_URL not defined) -endif -ifndef DEB_PKG_NAME - $(error DEB_PKG_NAME not defined) -endif - $(WGET) -nv -N $(EN_US_BINARY_URL)/$(DEB_PKG_NAME) - -$(DATASTAGE): $(DEB_PKG_NAME) - $(RM) -rf $(DATASTAGE) - $(NSINSTALL) -D $(DATASTAGE)/DEBIAN - ar -p $(DEB_PKG_NAME) data.tar.gz | $(TAR) -zx -C $(DATASTAGE) - $(MAKE) clobber-zip AB_CD=en-US STAGEDIST=$(DATASTAGE)/$(installdir) - ar -p $(DEB_PKG_NAME) control.tar.gz | $(TAR) -zx -C $(DATASTAGE)/DEBIAN -# XXX hack around multi-locale deb right now - $(RM) $(DATASTAGE)/$(installdir)/chrome/??.* - $(RM) $(DATASTAGE)/$(installdir)/chrome/??-??.* - -repackage-deb: $(DATASTAGE) - $(RM) -rf $(AB_CD) - $(NSINSTALL) -D $(AB_CD)/tmp - cd $(DIST)/xpi-stage/locale-$(AB_CD) && \ - $(TAR) --exclude=install.rdf --exclude=chrome.manifest --exclude=crashreporter.app $(TAR_CREATE_FLAGS) - * | ( cd $(DATASTAGE)/$(installdir) && $(TAR) -xf - ) - cd $(DATASTAGE) && $(TAR) $(TAR_CREATE_FLAGS) - * | (cd $(CURDIR)/$(AB_CD)/tmp && $(TAR) -xf - ) - $(MAKE) clobber-zip STAGEDIST=$(DATASTAGE)/$(installdir) - cd $(AB_CD) && dpkg-deb -b tmp $(DEB_PKG_NAME) - $(RM) -rf $(AB_CD)/tmp - -deb-%: AB_CD=$* -deb-%: clobber-% langpack-% -ifndef DEB_PKG_NAME - $(error DEB_PKG_NAME not defined) -endif - @$(MAKE) repackage-deb AB_CD=$(AB_CD) DEB_PKG_NAME=$(DEB_PKG_NAME) + @$(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(B2G_APPLICATION_INI_PATH) App BuildID merge-%: ifdef LOCALE_MERGEDIR $(RM) -rf $(LOCALE_MERGEDIR) MACOSX_DEPLOYMENT_TARGET= compare-locales -m $(LOCALE_MERGEDIR) $(srcdir)/l10n.ini $(L10NBASEDIR) $* endif @echo + +# test target, depends on make package +# try to repack x-test, with just toolkit/defines.inc being there +l10n-check:: + $(RM) -rf x-test + $(NSINSTALL) -D x-test/toolkit + echo "#define MOZ_LANG_TITLE Just testing" > x-test/toolkit/defines.inc + $(MAKE) installers-x-test L10NBASEDIR="$(PWD)" LOCALE_MERGEDIR="$(PWD)/mergedir"
new file mode 100644 --- /dev/null +++ b/b2g/locales/en-US/b2g-l10n.js @@ -0,0 +1,39 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is the Firefox browser. +# +# The Initial Developer of the Original Code is +# Benjamin Smedberg <bsmedberg@covad.net> +# Portions created by the Initial Developer are Copyright (C) 2004 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +#filter substitution + +pref("general.useragent.locale", "@AB_CD@");
copy from mobile/xul/locales/en-US/chrome/aboutCertError.dtd copy to b2g/locales/en-US/chrome/aboutCertError.dtd
copy from mobile/xul/locales/en-US/chrome/notification.dtd copy to b2g/locales/en-US/chrome/notification.dtd
copy from mobile/xul/locales/en-US/chrome/overrides/appstrings.properties copy to b2g/locales/en-US/chrome/overrides/appstrings.properties
copy from mobile/xul/locales/en-US/chrome/overrides/netError.dtd copy to b2g/locales/en-US/chrome/overrides/netError.dtd
copy from mobile/xul/locales/en-US/chrome/overrides/passwordmgr.properties copy to b2g/locales/en-US/chrome/overrides/passwordmgr.properties
copy from mobile/xul/locales/en-US/chrome/phishing.dtd copy to b2g/locales/en-US/chrome/phishing.dtd
copy from mobile/xul/locales/en-US/crashreporter/crashreporter-override.ini copy to b2g/locales/en-US/crashreporter/crashreporter-override.ini --- a/mobile/xul/locales/en-US/crashreporter/crashreporter-override.ini +++ b/b2g/locales/en-US/crashreporter/crashreporter-override.ini @@ -1,10 +1,10 @@ # This file is in the UTF-8 encoding [Strings] # LOCALIZATION NOTE (CrashReporterProductErrorText2): %s is replaced with another string containing detailed information. -CrashReporterProductErrorText2=Firefox has crashed. Unfortunately the crash reporter is unable to submit a crash report.\n\nDetails: %s -CrashReporterDescriptionText2=Firefox has crashed. Your tabs will be listed on the Firefox Start page when you restart.\n\nPlease help us fix the problem! +CrashReporterProductErrorText2=B2G has crashed. Unfortunately the crash reporter is unable to submit a crash report.\n\nDetails: %s +CrashReporterDescriptionText2=B2G has crashed. Your tabs will be listed on the B2G Start page when you restart.\n\nPlease help us fix the problem! # LOCALIZATION NOTE (CheckSendReport): The %s is replaced with the vendor name. CheckSendReport=Send %s a crash report CheckIncludeURL=Include the page address -Quit2=Quit Firefox -Restart=Restart Firefox +Quit2=Quit B2G +Restart=Restart B2G
copy from mobile/xul/locales/en-US/installer/setup.ini copy to b2g/locales/en-US/installer/setup.ini
copy from mobile/xul/locales/en-US/updater/updater.ini copy to b2g/locales/en-US/updater/updater.ini
copy from mobile/xul/locales/filter.py copy to b2g/locales/filter.py --- a/mobile/xul/locales/filter.py +++ b/b2g/locales/filter.py @@ -33,28 +33,32 @@ # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** def test(mod, path, entity = None): import re - # ignore anything but mobile, which is our local repo checkout name + # ignore anything but b2g, which is our local repo checkout name if mod not in ("netwerk", "dom", "toolkit", "security/manager", "services/sync", "embedding/android", - "mobile/xul"): + "b2g"): return False - if mod != "mobile/xul": - # we only have exceptions for mobile + # Ignore Lorentz strings, at least temporarily + if mod == "toolkit" and path == "chrome/mozapps/plugins/plugins.dtd": + if entity.startswith('reloadPlugin.'): return False + if entity.startswith('report.'): return False + + if mod != "b2g": + # we only have exceptions for b2g return True if not entity: - return not (re.match(r"searchplugins\/.+\.xml", path) or - re.match(r"mobile-l10n.js", path) or + return not (re.match(r"b2g-l10n.js", path) or re.match(r"defines.inc", path)) if path == "defines.inc": return entity != "MOZ_LANGPACK_CONTRIBUTORS" if path != "chrome/region.properties": # only region.properties exceptions remain, compare all others return True
copy from mobile/xul/locales/generic/install.rdf copy to b2g/locales/generic/install.rdf --- a/mobile/xul/locales/generic/install.rdf +++ b/b2g/locales/generic/install.rdf @@ -48,15 +48,15 @@ em:type="8" em:creator="@MOZ_LANGPACK_CREATOR@"> #ifdef MOZ_LANGPACK_CONTRIBUTORS @MOZ_LANGPACK_CONTRIBUTORS@ #endif <em:targetApplication> <Description> - <em:id>{a23983c0-fd0e-11dc-95ff-0800200c9a66}</em:id> + <em:id>{3c2e2abc-06d4-11e1-ac3b-374f68613e61}</em:id> <em:minVersion>@MOZ_APP_VERSION@</em:minVersion> <em:maxVersion>@MOZ_APP_VERSION@</em:maxVersion> </Description> </em:targetApplication> </Description> </RDF>
copy from mobile/xul/locales/jar.mn copy to b2g/locales/jar.mn --- a/mobile/xul/locales/jar.mn +++ b/b2g/locales/jar.mn @@ -1,31 +1,12 @@ #filter substitution @AB_CD@.jar: % locale browser @AB_CD@ %locale/@AB_CD@/browser/ locale/@AB_CD@/browser/about.dtd (%chrome/about.dtd) locale/@AB_CD@/browser/aboutCertError.dtd (%chrome/aboutCertError.dtd) - locale/@AB_CD@/browser/aboutHome.dtd (%chrome/aboutHome.dtd) - locale/@AB_CD@/browser/browser.dtd (%chrome/browser.dtd) - locale/@AB_CD@/browser/browser.properties (%chrome/browser.properties) - locale/@AB_CD@/browser/config.dtd (%chrome/config.dtd) - locale/@AB_CD@/browser/localepicker.properties (%chrome/localepicker.properties) - locale/@AB_CD@/browser/region.properties (%chrome/region.properties) - locale/@AB_CD@/browser/preferences.dtd (%chrome/preferences.dtd) - locale/@AB_CD@/browser/checkbox.dtd (%chrome/checkbox.dtd) locale/@AB_CD@/browser/notification.dtd (%chrome/notification.dtd) - locale/@AB_CD@/browser/sync.dtd (%chrome/sync.dtd) - locale/@AB_CD@/browser/sync.properties (%chrome/sync.properties) - locale/@AB_CD@/browser/prompt.dtd (%chrome/prompt.dtd) locale/@AB_CD@/browser/webapps.dtd (%chrome/webapps.dtd) - locale/@AB_CD@/browser/feedback.dtd (%chrome/feedback.dtd) locale/@AB_CD@/browser/phishing.dtd (%chrome/phishing.dtd) - locale/@AB_CD@/browser/bookmarks.json (bookmarks.json) - locale/@AB_CD@/browser/searchplugins/list.txt (%searchplugins/list.txt) -# Fennec-specific overrides of generic strings * locale/@AB_CD@/browser/netError.dtd (%chrome/overrides/netError.dtd) % override chrome://global/locale/netError.dtd chrome://browser/locale/netError.dtd -* locale/@AB_CD@/browser/appstrings.properties (%chrome/overrides/appstrings.properties) -% override chrome://global/locale/appstrings.properties chrome://browser/locale/appstrings.properties -* locale/@AB_CD@/browser/passwordmgr.properties (%chrome/overrides/passwordmgr.properties) -% override chrome://passwordmgr/locale/passwordmgr.properties chrome://browser/locale/passwordmgr.properties
copy from mobile/xul/locales/l10n.ini copy to b2g/locales/l10n.ini --- a/mobile/xul/locales/l10n.ini +++ b/b2g/locales/l10n.ini @@ -1,11 +1,10 @@ [general] -depth = ../../.. -all = mobile/xul/locales/all-locales +depth = ../.. +all = b2g/locales/all-locales [compare] -dirs = mobile/xul +dirs = b2g [includes] toolkit = toolkit/locales/l10n.ini services_sync = services/sync/locales/l10n.ini -embedding_android = embedding/android/locales/l10n.ini
copy from mobile/xul/makefiles.sh copy to b2g/makefiles.sh --- a/mobile/xul/makefiles.sh +++ b/b2g/makefiles.sh @@ -10,49 +10,44 @@ # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License # for the specific language governing rights and limitations under the # License. # # The Original Code is Mozilla. # # The Initial Developer of the Original Code is # the Mozilla Foundation <http://www.mozilla.org/>. -# Portions created by the Initial Developer are Copyright (C) 2007 +# Portions created by the Initial Developer are Copyright (C) 2011 # the Initial Developer. All Rights Reserved. # # Contributor(s): -# Mark Finkle <mfinkle@mozilla.com> # # Alternatively, the contents of this file may be used under the terms of # either the GNU General Public License Version 2 or later (the "GPL"), or # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), # in which case the provisions of the GPL or the LGPL are applicable instead # of those above. If you wish to allow use of your version of this file only # under the terms of either the GPL or the LGPL, and not to allow others to # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** add_makefiles " -mobile/xul/app/Makefile -mobile/xul/app/profile/extensions/Makefile +netwerk/locales/Makefile +dom/locales/Makefile +toolkit/locales/Makefile +security/manager/locales/Makefile +b2g/app/Makefile $MOZ_BRANDING_DIRECTORY/Makefile -$MOZ_BRANDING_DIRECTORY/content/Makefile -$MOZ_BRANDING_DIRECTORY/locales/Makefile -mobile/xul/chrome/Makefile -mobile/xul/components/Makefile -mobile/xul/components/build/Makefile -mobile/xul/modules/Makefile -mobile/xul/installer/Makefile -mobile/xul/locales/Makefile -mobile/xul/Makefile -mobile/xul/themes/core/Makefile -" +b2g/chrome/Makefile +b2g/installer/Makefile +b2g/locales/Makefile +b2g/Makefile" -if [ "$ENABLE_TESTS" ]; then - add_makefiles " - mobile/xul/chrome/tests/Makefile - " +if test -n "$MOZ_UPDATE_PACKAGING"; then + add_makefiles " + tools/update-packaging/Makefile + " fi