Bug 699876 - Import the initial b2g/ directory. r=cjones
authorPhilipp von Weitershausen <philipp@weitershausen.de>
Wed, 07 Dec 2011 07:52:26 +0800
changeset 83768 e2ba243f96a5705bd20f4a591bf724e19cd821eb
parent 83767 73b2370adc9d807ff421af9862424d2a321ce9b3
child 83769 12c1f73c461f4c2657ead0cf7da1c9e4b744d1bb
push id519
push userakeybl@mozilla.com
push dateWed, 01 Feb 2012 00:38:35 +0000
treeherdermozilla-beta@788ea1ef610b [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerscjones
bugs699876
milestone11.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
Bug 699876 - Import the initial b2g/ directory. r=cjones
b2g/LICENSE
b2g/Makefile.in
b2g/app/Makefile.in
b2g/app/b2g.ico
b2g/app/b2g.js
b2g/app/macbuild/Contents/Info.plist.in
b2g/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in
b2g/app/nsBrowserApp.cpp
b2g/branding/official/Makefile.in
b2g/branding/official/android-resources.mn
b2g/branding/official/configure.sh
b2g/branding/official/content/Makefile.in
b2g/branding/official/content/about.png
b2g/branding/official/content/favicon32.png
b2g/branding/official/content/icon48.png
b2g/branding/official/content/icon64.png
b2g/branding/official/content/jar.mn
b2g/branding/official/content/logo.png
b2g/branding/official/content/logoWordmark.png
b2g/branding/official/content/splash.png
b2g/branding/official/locales/Makefile.in
b2g/branding/official/locales/en-US/brand.dtd
b2g/branding/official/locales/en-US/brand.properties
b2g/branding/official/locales/jar.mn
b2g/branding/unofficial/Makefile.in
b2g/branding/unofficial/android-resources.mn
b2g/branding/unofficial/configure.sh
b2g/branding/unofficial/content/Makefile.in
b2g/branding/unofficial/content/about.png
b2g/branding/unofficial/content/favicon32.png
b2g/branding/unofficial/content/icon48.png
b2g/branding/unofficial/content/icon64.png
b2g/branding/unofficial/content/jar.mn
b2g/branding/unofficial/content/logo.png
b2g/branding/unofficial/content/logoWordmark.png
b2g/branding/unofficial/content/splash.png
b2g/branding/unofficial/locales/Makefile.in
b2g/branding/unofficial/locales/en-US/brand.dtd
b2g/branding/unofficial/locales/en-US/brand.properties
b2g/branding/unofficial/locales/jar.mn
b2g/build.mk
b2g/chrome/Makefile.in
b2g/chrome/content/commandUtil.js
b2g/chrome/content/netError.xhtml
b2g/chrome/content/shell.js
b2g/chrome/content/shell.xul
b2g/chrome/content/touch.js
b2g/chrome/jar.mn
b2g/confvars.sh
b2g/installer/Makefile.in
b2g/installer/package-manifest.in
b2g/installer/removed-files.in
b2g/locales/Makefile.in
b2g/locales/all-locales
b2g/locales/en-US/b2g-l10n.js
b2g/locales/en-US/chrome/about.dtd
b2g/locales/en-US/chrome/aboutCertError.dtd
b2g/locales/en-US/chrome/notification.dtd
b2g/locales/en-US/chrome/overrides/appstrings.properties
b2g/locales/en-US/chrome/overrides/netError.dtd
b2g/locales/en-US/chrome/overrides/passwordmgr.properties
b2g/locales/en-US/chrome/phishing.dtd
b2g/locales/en-US/chrome/webapps.dtd
b2g/locales/en-US/crashreporter/crashreporter-override.ini
b2g/locales/en-US/defines.inc
b2g/locales/en-US/installer/setup.ini
b2g/locales/en-US/updater/updater.ini
b2g/locales/filter.py
b2g/locales/generic/install.rdf
b2g/locales/jar.mn
b2g/locales/l10n.ini
b2g/makefiles.sh
copy from mobile/xul/LICENSE
copy to b2g/LICENSE
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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b7513c2e4689ae656c99a0e79ae266a5931594e3
GIT binary patch
literal 5302
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
IM6N<$g8mX-d;kCd
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c8bee8fca98d4e57315f1198594ff31d48caefad
GIT binary patch
literal 8267
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
JPDHLkV1lvM5PJXs
copy from mobile/xul/branding/official/content/jar.mn
copy to b2g/branding/official/content/jar.mn
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/official/locales/jar.mn
copy to b2g/branding/official/locales/jar.mn
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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3ae248c857d7010eee72e3f20f5a8fbaeed4f196
GIT binary patch
literal 4053
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
Hu0mjfcGdKw
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..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">&notCached.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">&notCached.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"
copy from mobile/xul/locales/all-locales
copy to b2g/locales/all-locales
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/about.dtd
copy to b2g/locales/en-US/chrome/about.dtd
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/chrome/webapps.dtd
copy to b2g/locales/en-US/chrome/webapps.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/defines.inc
copy to b2g/locales/en-US/defines.inc
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