am c547a4d5: Please do not merge (already submitted downstream); check entire recovery partition on startup

* commit 'c547a4d50b92c8f8173bf4222169f87200a76dba':
  Please do not merge (already submitted downstream); check entire recovery partition on startup
diff --git a/CleanSpec.mk b/CleanSpec.mk
index cab6242..d103aa6 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -103,6 +103,10 @@
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/JAVA_LIBRARIES/*)
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/framework/*)
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/build.prop)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/app/*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/APPS/*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/build.prop)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libbcinfo_intermediates)
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/build.prop)
 
 # ************************************************
diff --git a/core/build_id.mk b/core/build_id.mk
index 6da16e0..70bd235 100644
--- a/core/build_id.mk
+++ b/core/build_id.mk
@@ -23,7 +23,7 @@
 # (like "TC1-RC5").  It must be a single word, and is
 # capitalized by convention.
 #
-BUILD_ID := ICS_MR0
+BUILD_ID := MR1
 
 # DISPLAY_BUILD_NUMBER should only be set for development branches,
 # If set, the BUILD_NUMBER (cl) is appended to the BUILD_ID for
diff --git a/core/clear_vars.mk b/core/clear_vars.mk
index d9f3372..66e6232 100644
--- a/core/clear_vars.mk
+++ b/core/clear_vars.mk
@@ -114,6 +114,7 @@
 LOCAL_PROTOC_FLAGS:=
 LOCAL_NO_CRT:=
 LOCAL_PROPRIETARY_MODULE:=
+LOCAL_CTS_TEST_PACKAGE:=
 
 # Trim MAKEFILE_LIST so that $(call my-dir) doesn't need to
 # iterate over thousands of entries every time.
diff --git a/core/definitions.mk b/core/definitions.mk
index 1a7cf4b..683ae16 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -843,11 +843,13 @@
 @echo "Protoc: $@ <= $(PRIVATE_PROTO_SRC_FILES)"
 @rm -rf $(PRIVATE_PROTO_JAVA_OUTPUT_DIR)
 @mkdir -p $(PRIVATE_PROTO_JAVA_OUTPUT_DIR)
-$(hide) $(PROTOC) \
-	$(addprefix --proto_path=, $(PRIVATE_PROTO_INCLUDES)) \
-	$(PRIVATE_PROTO_JAVA_OUTPUT_OPTION)=$(PRIVATE_PROTO_JAVA_OUTPUT_DIR) \
-	$(PRIVATE_PROTOC_FLAGS) \
-	$(PRIVATE_PROTO_SRC_FILES)
+$(hide) for f in $(PRIVATE_PROTO_SRC_FILES); do \
+        $(PROTOC) \
+        $(addprefix --proto_path=, $(PRIVATE_PROTO_INCLUDES)) \
+        $(PRIVATE_PROTO_JAVA_OUTPUT_OPTION)=$(PRIVATE_PROTO_JAVA_OUTPUT_DIR) \
+        $(PRIVATE_PROTOC_FLAGS) \
+        $$f; \
+        done
 $(hide) touch $@
 endef
 
@@ -1586,10 +1588,9 @@
 define add-dex-to-package
 $(if $(filter classes.dex,$(notdir $(PRIVATE_DEX_FILE))),\
 $(hide) $(AAPT) add -k $@ $(PRIVATE_DEX_FILE),\
-$(eval _adtp_classes.dex := $(dir $(PRIVATE_DEX_FILE))/classes.dex)\
-$(hide) cp $(PRIVATE_DEX_FILE) $(_adtp_classes.dex) && \
-$(AAPT) add -k $@ $(_adtp_classes.dex) && \
-rm -f $(_adtp_classes.dex))
+$(hide) _adtp_classes_dex=$(dir $(PRIVATE_DEX_FILE))classes.dex; \
+cp $(PRIVATE_DEX_FILE) $$_adtp_classes_dex && \
+$(AAPT) add -k $@ $$_adtp_classes_dex && rm -f $$_adtp_classes_dex)
 endef
 
 define add-java-resources-to-package
diff --git a/core/main.mk b/core/main.mk
index 3cc97a6..569d4dc 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -665,6 +665,11 @@
   $(info Removing from sdk:)$(foreach d,$(target_gnu_MODULES),$(info : $(d)))
   modules_to_install := \
               $(filter-out $(target_gnu_MODULES),$(modules_to_install))
+
+  # Ensure every module listed in PRODUCT_PACKAGES gets something installed
+  $(foreach m, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES), \
+      $(if $(strip $(ALL_MODULES.$(m).INSTALLED)),,\
+          $(error Module '$(m)' in PRODUCT_PACKAGES has nothing to install!)))
 endif
 
 
diff --git a/core/package.mk b/core/package.mk
index 0cca209..52d52a2 100644
--- a/core/package.mk
+++ b/core/package.mk
@@ -295,6 +295,18 @@
       $(addsuffix $(so_suffix), \
         $(LOCAL_JNI_SHARED_LIBRARIES)))
 
+# App explicitly requires the prebuilt NDK libstlport_shared.so.
+# libstlport_shared.so should never go to the system image.
+# Instead it should be packaged into the apk.
+ifeq (stlport_shared,$(LOCAL_NDK_STL_VARIANT))
+ifndef LOCAL_NDK_VERSION
+$(error LOCAL_NDK_VERSION has to be defined together with LOCAL_NDK_STL_VARIANT, \
+    LOCAL_PACKAGE_NAME=$(LOCAL_PACKAGE_NAME))
+endif
+jni_shared_libraries += \
+    $(HISTORICAL_NDK_VERSIONS_ROOT)/android-ndk-r$(LOCAL_NDK_VERSION)/sources/cxx-stl/stlport/libs/$(TARGET_CPU_ABI)/libstlport_shared.so
+endif
+
 # Set the abi directory used by the local JNI shared libraries.
 # (Doesn't change how the local shared libraries are compiled, just
 # sets where they are stored in the apk.)
diff --git a/core/pathmap.mk b/core/pathmap.mk
index 6c6ff2e..60fbfd2 100644
--- a/core/pathmap.mk
+++ b/core/pathmap.mk
@@ -101,3 +101,17 @@
 #
 FRAMEWORKS_BASE_JAVA_SRC_DIRS := \
 	$(addprefix frameworks/base/,$(FRAMEWORKS_BASE_SUBDIRS))
+
+#
+# A list of all source roots under frameworks/support.
+#
+FRAMEWORKS_SUPPORT_SUBDIRS := \
+	v4 \
+	v13 \
+
+#
+# A version of FRAMEWORKS_SUPPORT_SUBDIRS that is expanded to full paths from
+# the root of the tree.
+#
+FRAMEWORKS_SUPPORT_JAVA_SRC_DIRS := \
+	$(addprefix frameworks/support/,$(FRAMEWORKS_SUPPORT_SUBDIRS))
diff --git a/core/product.mk b/core/product.mk
index 0ab9ae0..f48d2be 100644
--- a/core/product.mk
+++ b/core/product.mk
@@ -77,12 +77,11 @@
     PRODUCT_EXTRA_RECOVERY_KEYS \
     PRODUCT_PACKAGE_OVERLAYS \
     DEVICE_PACKAGE_OVERLAYS \
-    PRODUCT_CONTRIBUTORS_FILE \
     PRODUCT_TAGS \
     PRODUCT_SDK_ADDON_NAME \
     PRODUCT_SDK_ADDON_COPY_FILES \
     PRODUCT_SDK_ADDON_COPY_MODULES \
-    PRODUCT_SDK_ADDON_DOC_MODULE \
+    PRODUCT_SDK_ADDON_DOC_MODULES \
     PRODUCT_DEFAULT_WIFI_CHANNELS \
     PRODUCT_DEFAULT_DEV_CERTIFICATE \
 
diff --git a/core/product_config.mk b/core/product_config.mk
index e063e42..c455723 100644
--- a/core/product_config.mk
+++ b/core/product_config.mk
@@ -286,10 +286,6 @@
 PRODUCT_COPY_FILES := \
     $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_COPY_FILES))
 
-# The HTML file containing the contributors to the project.
-PRODUCT_CONTRIBUTORS_FILE := \
-    $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_CONTRIBUTORS_FILE))
-
 # A list of property assignments, like "key = value", with zero or more
 # whitespace characters on either side of the '='.
 PRODUCT_PROPERTY_OVERRIDES := \
diff --git a/core/tasks/cts.mk b/core/tasks/cts.mk
index fcdd987..45dcd0f 100644
--- a/core/tasks/cts.mk
+++ b/core/tasks/cts.mk
@@ -42,7 +42,7 @@
 $(cts_dir)/all_cts_files_stamp: PRIVATE_JUNIT_HOST_JAR := $(junit_host_jar)
 
 -include cts/CtsHostLibraryList.mk
-$(cts_dir)/all_cts_files_stamp: $(CTS_CASE_LIST) $(junit_host_jar) $(HOSTTESTLIB_JAR) $(CTS_HOST_LIBRARY_JARS) $(TF_JAR) $(CTS_TF_JAR) $(CTS_TF_EXEC_PATH) $(CTS_TF_README_PATH) $(ACP)
+$(cts_dir)/all_cts_files_stamp: $(CTS_CASE_LIST) $(CTS_TEST_CASES) $(junit_host_jar) $(HOSTTESTLIB_JAR) $(CTS_HOST_LIBRARY_JARS) $(TF_JAR) $(CTS_TF_JAR) $(CTS_TF_EXEC_PATH) $(CTS_TF_README_PATH) $(ACP)
 # Make necessary directory for CTS
 	$(hide) rm -rf $(PRIVATE_CTS_DIR)
 	$(hide) mkdir -p $(TMP_DIR)
@@ -53,8 +53,8 @@
 # Copy executable and JARs to CTS directory
 	$(hide) $(ACP) -fp $(DDMLIB_JAR) $(PRIVATE_JUNIT_HOST_JAR) $(HOSTTESTLIB_JAR) $(CTS_HOST_LIBRARY_JARS) $(TF_JAR) $(CTS_TF_JAR) $(CTS_TF_EXEC_PATH) $(CTS_TF_README_PATH) $(PRIVATE_DIR)/tools
 # Change mode of the executables
-	$(foreach apk,$(CTS_CASE_LIST), \
-			$(call copy-testcase-apk,$(apk)))
+	$(foreach apk,$(CTS_CASE_LIST),$(call copy-testcase-apk,$(apk)))
+	$(foreach testcase,$(CTS_TEST_CASES),$(call copy-testcase,$(testcase)))
 	$(hide) touch $@
 
 # Generate the test descriptions for the core-tests
@@ -165,9 +165,12 @@
 $(APP_SECURITY_LIB): $(HOST_OUT_JAVA_LIBRARIES)/CtsAppSecurityTests.jar $(cts_dir)/all_cts_files_stamp $(ACP)
 	$(ACP) -fv $(HOST_OUT_JAVA_LIBRARIES)/CtsAppSecurityTests.jar $(APP_SECURITY_LIB)
 
+
 # Generate the default test plan for User.
 # Usage: buildCts.py <testRoot> <ctsOutputDir> <tempDir> <androidRootDir> <docletPath>
-$(DEFAULT_TEST_PLAN): $(cts_dir)/all_cts_files_stamp $(cts_dir)/all_cts_core_files_stamp $(cts_tools_src_dir)/utils/buildCts.py $(CORE_VM_TEST_TF_DESC) $(CORE_VM_TEST_DESC) $(APP_SECURITY_LIB) $(HOST_OUT_JAVA_LIBRARIES)/descGen.jar
+
+$(DEFAULT_TEST_PLAN): $(cts_dir)/all_cts_files_stamp $(cts_dir)/all_cts_core_files_stamp $(cts_tools_src_dir)/utils/buildCts.py $(CORE_VM_TEST_TF_DESC) $(CORE_VM_TEST_DESC) $(APP_SECURITY_LIB) $(HOST_OUT_JAVA_LIBRARIES)/descGen.jar $(CTS_TEST_XMLS) | $(ACP)
+	$(hide) $(ACP) -fp $(CTS_TEST_XMLS) $(PRIVATE_DIR)/repository/testcases
 	$(hide) $(cts_tools_src_dir)/utils/buildCts.py cts/tests/tests/ $(PRIVATE_DIR) $(TMP_DIR) \
 		$(TOP) $(HOST_OUT_JAVA_LIBRARIES)/descGen.jar
 
@@ -194,3 +197,9 @@
 	$(PRIVATE_DIR)/repository/testcases/$(1).apk
 
 endef
+
+define copy-testcase
+
+$(hide) $(ACP) -fp $(1) $(PRIVATE_DIR)/repository/testcases/$(notdir $1)
+
+endef
diff --git a/core/tasks/sdk-addon.mk b/core/tasks/sdk-addon.mk
index f3aec65..5a24a00 100644
--- a/core/tasks/sdk-addon.mk
+++ b/core/tasks/sdk-addon.mk
@@ -69,26 +69,21 @@
   $(eval sdk_addon_deps += $(_dest)) \
  )
 
-# We don't know about all of the docs files, so depend on the timestamp for
-# that, and record the directory, and the packaging rule will just copy the
+# We don't know about all of the docs files, so depend on the timestamps for
+# them, and record the directories, and the packaging rule will just copy the
 # whole thing.
-doc_module := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SDK_ADDON_DOC_MODULE))
-ifneq ($(doc_module),)
-  doc_timestamp := $(call doc-timestamp-for, $(doc_module))
-  sdk_addon_deps += $(doc_timestamp)
-  $(full_target): PRIVATE_DOCS_DIR := $(OUT_DOCS)/$(doc_module)
-else
-  $(full_target): PRIVATE_DOCS_DIR :=
-endif
+doc_modules := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SDK_ADDON_DOC_MODULES))
+sdk_addon_deps += $(foreach dm, $(doc_modules), $(call doc-timestamp-for, $(dm)))
+$(full_target): PRIVATE_DOCS_DIRS := $(addprefix $(OUT_DOCS)/, $(doc_modules))
 
 $(full_target): PRIVATE_STAGING_DIR := $(staging)
 
 $(full_target): $(sdk_addon_deps) | $(ACP)
 	@echo Packaging SDK Addon: $@
-	$(hide) mkdir -p $(PRIVATE_STAGING_DIR)/docs/reference
-	$(hide) if [ -n "$(PRIVATE_DOCS_DIR)" ] ; then \
-	    $(ACP) -r $(PRIVATE_DOCS_DIR)/* $(PRIVATE_STAGING_DIR)/docs/reference ;\
-	  fi
+	$(hide) mkdir -p $(PRIVATE_STAGING_DIR)/docs
+	$(hide) for d in $(PRIVATE_DOCS_DIRS); do \
+	    $(ACP) -r $$d $(PRIVATE_STAGING_DIR)/docs ;\
+	  done
 	$(hide) mkdir -p $(dir $@)
 	$(hide) ( F=$$(pwd)/$@ ; cd $(PRIVATE_STAGING_DIR)/.. && zip -rq $$F * )
 
diff --git a/core/version_defaults.mk b/core/version_defaults.mk
index c5fabf1..bff8ef9 100644
--- a/core/version_defaults.mk
+++ b/core/version_defaults.mk
@@ -41,7 +41,7 @@
   # which is the version that we reveal to the end user.
   # Update this value when the platform version changes (rather
   # than overriding it somewhere else).  Can be an arbitrary string.
-  PLATFORM_VERSION := 4.0.2
+  PLATFORM_VERSION := 4.0.4
 endif
 
 ifeq "" "$(PLATFORM_SDK_VERSION)"
@@ -53,7 +53,7 @@
   # intermediate builds).  During development, this number remains at the
   # SDK version the branch is based on and PLATFORM_VERSION_CODENAME holds
   # the code-name of the new development work.
-  PLATFORM_SDK_VERSION := 14
+  PLATFORM_SDK_VERSION := 15
 endif
 
 ifeq "" "$(PLATFORM_VERSION_CODENAME)"
diff --git a/target/board/generic/BoardConfig.mk b/target/board/generic/BoardConfig.mk
index 229ea9c..57e60d3 100644
--- a/target/board/generic/BoardConfig.mk
+++ b/target/board/generic/BoardConfig.mk
@@ -39,3 +39,7 @@
 
 # Build OpenGLES emulation guest and host libraries
 BUILD_EMULATOR_OPENGL := true
+
+# Build and enable the OpenGL ES View renderer. When running on the emulator,
+# the GLES renderer disables itself if host GL acceleration isn't available.
+USE_OPENGL_RENDERER := true
diff --git a/target/board/generic/device.mk b/target/board/generic/device.mk
index 8b187d5..4edcc19 100644
--- a/target/board/generic/device.mk
+++ b/target/board/generic/device.mk
@@ -19,7 +19,8 @@
 
 PRODUCT_PROPERTY_OVERRIDES := \
     ro.ril.hsxpa=1 \
-    ro.ril.gprsclass=10
+    ro.ril.gprsclass=10 \
+    ro.adb.qemud=1
 
 PRODUCT_COPY_FILES := \
     development/data/etc/apns-conf.xml:system/etc/apns-conf.xml \
diff --git a/target/board/generic_x86/device.mk b/target/board/generic_x86/device.mk
index 1055cba..0dd2bc0 100644
--- a/target/board/generic_x86/device.mk
+++ b/target/board/generic_x86/device.mk
@@ -19,7 +19,8 @@
 
 PRODUCT_PROPERTY_OVERRIDES := \
     ro.ril.hsxpa=1 \
-    ro.ril.gprsclass=10
+    ro.ril.gprsclass=10 \
+    ro.adb.qemud=1
 
 PRODUCT_COPY_FILES := \
     development/data/etc/apns-conf.xml:system/etc/apns-conf.xml \
diff --git a/target/board/vbox_x86/device.mk b/target/board/vbox_x86/device.mk
index a76d8fa..66a6e84 100644
--- a/target/board/vbox_x86/device.mk
+++ b/target/board/vbox_x86/device.mk
@@ -21,7 +21,8 @@
 
 PRODUCT_PROPERTY_OVERRIDES := \
     ro.ril.hsxpa=1 \
-    ro.ril.gprsclass=10
+    ro.ril.gprsclass=10 \
+    ro.adb.qemud=1
 
 LOCAL_KERNEL := prebuilt/android-x86/kernel/kernel-vbox
 
diff --git a/target/product/core.mk b/target/product/core.mk
index 3b05659..abb2d9f 100644
--- a/target/product/core.mk
+++ b/target/product/core.mk
@@ -26,7 +26,6 @@
     ApplicationsProvider \
     BackupRestoreConfirmation \
     Browser \
-    Bugreport \
     Contacts \
     ContactsProvider \
     DefaultContainerService \
@@ -41,11 +40,9 @@
     SettingsProvider \
     SharedStorageBackup \
     TelephonyProvider \
-    TtsService \
     UserDictionaryProvider \
     VpnDialogs \
     apache-xml \
-    bluetooth-health \
     bouncycastle \
     bu \
     cacerts \
@@ -63,7 +60,6 @@
     ext \
     filterfw \
     framework-res \
-    hostapd \
     hprof-conv \
     icu.dat \
     installd \
@@ -75,7 +71,6 @@
     libOpenSLES \
     libaudiopreprocessing \
     libcrypto \
-    libdex \
     libdvm \
     libexpat \
     libfilterfw \
@@ -83,7 +78,6 @@
     libgabi++ \
     libicui18n \
     libicuuc \
-    libjavacore \
     libnativehelper \
     libnfc_ndef \
     libpowermanager \
@@ -103,8 +97,7 @@
     libwilhelm \
     libz \
     screencap \
-    sensorservice \
-    wpa_supplicant.conf
+    sensorservice
 
 # host-only dependencies
 ifeq ($(WITH_HOST_DALVIK),true)
@@ -112,6 +105,5 @@
         apache-xml-hostdex \
         bouncycastle-hostdex \
         core-hostdex \
-        libjavacore-host \
         dalvik
 endif
diff --git a/target/product/generic_armv5.mk b/target/product/generic_armv5.mk
index d419e70..daa321a 100644
--- a/target/product/generic_armv5.mk
+++ b/target/product/generic_armv5.mk
@@ -18,7 +18,6 @@
 # It includes the base Android platform.
 
 $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk)
 
 # Overrides
 PRODUCT_BRAND := generic_armv5
diff --git a/target/product/generic_no_telephony.mk b/target/product/generic_no_telephony.mk
index 416ab25..0d87fc3 100644
--- a/target/product/generic_no_telephony.mk
+++ b/target/product/generic_no_telephony.mk
@@ -20,7 +20,6 @@
 PRODUCT_POLICY := android.policy_phone
 
 PRODUCT_PACKAGES := \
-    AccountAndSyncSettings \
     DeskClock \
     AlarmProvider \
     Bluetooth \
@@ -43,7 +42,10 @@
     SystemUI \
     Updater \
     CalendarProvider \
-    SyncProvider
+    SyncProvider \
+    bluetooth-health \
+    hostapd \
+    wpa_supplicant.conf
 
 PRODUCT_PACKAGES += \
     icu.dat
diff --git a/target/product/generic_x86.mk b/target/product/generic_x86.mk
index 7e77a27..86710c4 100644
--- a/target/product/generic_x86.mk
+++ b/target/product/generic_x86.mk
@@ -18,7 +18,6 @@
 # It includes the base Android platform.
 
 $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk)
 
 # Overrides
 PRODUCT_BRAND := generic_x86
diff --git a/target/product/languages_full.mk b/target/product/languages_full.mk
index e494fad..35ab1f1 100644
--- a/target/product/languages_full.mk
+++ b/target/product/languages_full.mk
@@ -21,5 +21,4 @@
 
 # Those are all the locales that have translations and are displayable
 # by TextView in this branch.
-PRODUCT_LOCALES := en_US fr_FR it_IT es_ES de_DE nl_NL cs_CZ pl_PL ja_JP zh_TW zh_CN ru_RU ko_KR nb_NO es_US da_DK el_GR tr_TR pt_PT pt_BR rm_CH sv_SE bg_BG ca_ES en_GB fi_FI hi_IN hr_HR hu_HU in_ID iw_IL lt_LT lv_LV ro_RO sk_SK sl_SI sr_RS uk_UA vi_VN tl_PH ar_EG fa_IR th_TH sw_TZ ms_MY af_ZA zu_ZA
-# We don't have the fonts to display am_ET yet
+PRODUCT_LOCALES := en_US fr_FR it_IT es_ES de_DE nl_NL cs_CZ pl_PL ja_JP zh_TW zh_CN ru_RU ko_KR nb_NO es_US da_DK el_GR tr_TR pt_PT pt_BR rm_CH sv_SE bg_BG ca_ES en_GB fi_FI hi_IN hr_HR hu_HU in_ID iw_IL lt_LT lv_LV ro_RO sk_SK sl_SI sr_RS uk_UA vi_VN tl_PH ar_EG fa_IR th_TH sw_TZ ms_MY af_ZA zu_ZA am_ET hi_IN
diff --git a/target/product/large_emu_hw.mk b/target/product/large_emu_hw.mk
index 9224130..15b1bed 100644
--- a/target/product/large_emu_hw.mk
+++ b/target/product/large_emu_hw.mk
@@ -20,7 +20,6 @@
 PRODUCT_POLICY := android.policy_mid
 
 PRODUCT_PACKAGES := \
-    AccountAndSyncSettings \
     CarHome \
     DeskClock \
     AlarmProvider \
@@ -42,7 +41,11 @@
     Sync \
     Updater \
     CalendarProvider \
-    SyncProvider
+    SyncProvider \
+    bluetooth-health \
+    hostapd \
+    wpa_supplicant.conf
+
 
 $(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk)
 
diff --git a/target/product/locales_full.mk b/target/product/locales_full.mk
index cab2b91..1031303 100644
--- a/target/product/locales_full.mk
+++ b/target/product/locales_full.mk
@@ -1,3 +1,3 @@
-PRODUCT_LOCALES := cs_CZ da_DK de_AT de_CH de_DE de_LI el_GR en_AU en_CA en_GB en_NZ en_SG en_US es_ES fr_CA fr_CH fr_BE fr_FR it_CH it_IT ja_JP ko_KR nb_NO nl_BE nl_NL pl_PL pt_PT ru_RU sv_SE tr_TR zh_CN zh_HK zh_TW
+PRODUCT_LOCALES := cs_CZ da_DK de_AT de_CH de_DE de_LI el_GR en_AU en_CA en_GB en_NZ en_SG en_US es_ES fr_CA fr_CH fr_BE fr_FR it_CH it_IT ja_JP ko_KR nb_NO nl_BE nl_NL pl_PL pt_PT ru_RU sv_SE tr_TR zh_CN zh_HK zh_TW am_ET hi_IN
 
 $(call inherit-product, build/target/product/languages_full.mk)
diff --git a/target/product/sdk.mk b/target/product/sdk.mk
index 61d30d8..ceb1898 100644
--- a/target/product/sdk.mk
+++ b/target/product/sdk.mk
@@ -30,21 +30,18 @@
 	libWnnEngDic \
 	libWnnJpnDic \
 	libwnndict \
-    Phone \
+	Phone \
 	PinyinIME \
 	Protips \
 	SoftKeyboard \
 	SystemUI \
 	Launcher2 \
-	AccountAndSyncSettings \
 	Development \
 	DrmProvider \
 	Fallback \
-	GPSEnable \
 	Settings \
 	SdkSetup \
 	CustomLocale \
-	gpstest \
 	sqlite3 \
 	LatinIME \
 	CertInstaller \
diff --git a/tools/droiddoc/templates-sdk/assets/android-developer-docs.css b/tools/droiddoc/templates-sdk/assets/android-developer-docs.css
index 03073eb..6cc4a97 100644
--- a/tools/droiddoc/templates-sdk/assets/android-developer-docs.css
+++ b/tools/droiddoc/templates-sdk/assets/android-developer-docs.css
@@ -72,7 +72,9 @@
   zoom:1;
 }
 
+#side-nav li span.heading,
 #side-nav li h2 {
+  display:block;
   font-size:12px;
   font-weight: bold;
   margin:.5em 0 0 0;
@@ -706,6 +708,18 @@
   width:auto;
 }
 
+div.design-announce {
+  border-top:1px solid #33B5E5;
+  border-bottom:1px solid #33B5E5;
+  padding:5px 10px 10px 55px;
+  margin:2em 0;
+  background:url('../design/static/ico_styleguide.png') 5px 13px no-repeat;
+}
+
+div.design-announce p {
+  margin: .5em 0 0 0;
+}
+
 div.special {
   padding: .5em 1em 1em 1em;
   margin: 0 0 1em;
diff --git a/tools/droiddoc/templates-sdk/assets/images/home/google-plus-small.png b/tools/droiddoc/templates-sdk/assets/images/home/google-plus-small.png
new file mode 100644
index 0000000..5bb7d7a
--- /dev/null
+++ b/tools/droiddoc/templates-sdk/assets/images/home/google-plus-small.png
Binary files differ
diff --git a/tools/droiddoc/templates-sdk/assets/images/home/google-plus.png b/tools/droiddoc/templates-sdk/assets/images/home/google-plus.png
new file mode 100644
index 0000000..90871e1
--- /dev/null
+++ b/tools/droiddoc/templates-sdk/assets/images/home/google-plus.png
Binary files differ
diff --git a/tools/droiddoc/templates-sdk/components/masthead.cs b/tools/droiddoc/templates-sdk/components/masthead.cs
index e521489..5910107 100644
--- a/tools/droiddoc/templates-sdk/components/masthead.cs
+++ b/tools/droiddoc/templates-sdk/components/masthead.cs
@@ -28,7 +28,8 @@
              	   //-->
              	</script>
             </span>
-          <?cs /if ?>
+          <?cs /if ?>&nbsp;&nbsp;
+          <a href="<?cs var:toroot ?>design/index.html">Android Design</a>&nbsp;&nbsp;
           <a href="http://www.android.com">Android.com</a>
           </div><?cs 
           call:default_search_box() ?><?cs 
diff --git a/tools/droiddoc/templates-sdk/customizations.cs b/tools/droiddoc/templates-sdk/customizations.cs
index cfeab16..1285016 100644
--- a/tools/droiddoc/templates-sdk/customizations.cs
+++ b/tools/droiddoc/templates-sdk/customizations.cs
@@ -1,7 +1,7 @@
 <?cs 
 def:sdk_nav() ?>
   <div class="g-section g-tpl-240" id="body-content">
-    <div class="g-unit g-first" id="side-nav">
+    <div class="g-unit g-first" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
       <div id="devdoc-nav"><?cs 
         include:"../../../../frameworks/base/docs/html/sdk/sdk_toc.cs" ?>
       </div>
@@ -10,7 +10,7 @@
 <?cs 
 def:resources_tab_nav() ?>
   <div class="g-section g-tpl-200" id="body-content">
-    <div class="g-unit g-first" id="side-nav">
+    <div class="g-unit g-first" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
       <div id="devdoc-nav"><?cs 
         include:"../../../../frameworks/base/docs/html/resources/resources_toc.cs" ?>
       </div>
@@ -24,7 +24,7 @@
 <?cs 
 def:guide_nav() ?>
   <div class="g-section g-tpl-240" id="body-content">
-    <div class="g-unit g-first" id="side-nav">
+    <div class="g-unit g-first" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
       <div id="devdoc-nav"><?cs 
         include:"../../../../frameworks/base/docs/html/guide/guide_toc.cs" ?>
       </div>
@@ -39,7 +39,7 @@
 <?cs # The default side navigation for the reference docs ?><?cs 
 def:default_left_nav() ?>
   <div class="g-section g-tpl-240" id="body-content">
-    <div class="g-unit g-first" id="side-nav">
+    <div class="g-unit g-first" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
       <div id="swapper">
         <div id="nav-panels">
           <div id="resize-packages-nav">
@@ -138,9 +138,11 @@
 <?cs 
 def:custom_footerlinks() ?>
   <p>
-    <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
-    <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
-    <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+    <a href="http://www.google.com/intl/en/policies/" target="_blank">Privacy &amp; Terms</a> -
+    <a href="http://www.android.com/branding.html" target="_blank">Brand Guidelines</a> -
+    <a
+href="http://code.google.com/p/android/issues/entry?template=Developer%20Documentation"
+target="_blank">Report Document Issues</a>
   </p><?cs 
 /def ?>
 
diff --git a/tools/droiddoc/templates-sdk/docpage.cs b/tools/droiddoc/templates-sdk/docpage.cs
index 3c11865..c9ced96 100644
--- a/tools/droiddoc/templates-sdk/docpage.cs
+++ b/tools/droiddoc/templates-sdk/docpage.cs
@@ -2,19 +2,19 @@
 <?cs include:"macros.cs" ?>
 <html>
 <?cs include:"head_tag.cs" ?>
-<body class="gc-documentation">
+<body class="gc-documentation" itemscope itemtype="http://schema.org/Article">
 <?cs include:"header.cs" ?>
 
 <div class="g-unit" id="doc-content"><a name="top"></a>
 
 <div id="jd-header" class="guide-header">
-  <span class="crumb">
+  <span class="crumb" itemprop="breadcrumb">
     <?cs if:parent.link ?>
       <a href="<?cs var:parent.link ?>"><?cs var:parent.title ?></a>:
     <?cs else ?>&nbsp;
     <?cs /if ?>
   </span>
-<h1><?cs var:page.title ?></h1>
+<h1 itemprop="name"><?cs var:page.title ?></h1>
 </div>
 
   <?cs # THIS IS THE MAIN DOC CONTENT ?>
@@ -61,7 +61,7 @@
     <?cs /if ?><?cs # end if trainingnavtop ?>
 
 
-    <div class="jd-descr">
+    <div class="jd-descr" itemprop="articleBody">
     <?cs call:tag_list(root.descr) ?>
     </div>
 
diff --git a/tools/droiddoc/templates-sdk/head_tag.cs b/tools/droiddoc/templates-sdk/head_tag.cs
index fd8aad6..0ecda7b 100644
--- a/tools/droiddoc/templates-sdk/head_tag.cs
+++ b/tools/droiddoc/templates-sdk/head_tag.cs
@@ -1,5 +1,8 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<?cs if:page.metaDescription ?>
+<meta name="Description" content="<?cs var:page.metaDescription ?>">
+<?cs /if ?>
 <link rel="shortcut icon" type="image/x-icon" href="<?cs var:toroot ?>favicon.ico" />
 <title><?cs 
   if:page.title ?><?cs 
diff --git a/tools/droiddoc/templates-sdk/sdkpage.cs b/tools/droiddoc/templates-sdk/sdkpage.cs
index 331411f..f6c7cfa 100644
--- a/tools/droiddoc/templates-sdk/sdkpage.cs
+++ b/tools/droiddoc/templates-sdk/sdkpage.cs
@@ -12,7 +12,7 @@
 <?cs else ?>
   <?cs include:"head_tag.cs" ?>
 <?cs /if ?>
-<body class="gc-documentation">
+<body class="gc-documentation" itemscope itemtype="http://schema.org/CreativeWork">
 <a name="top"></a>
 <?cs call:custom_masthead() ?>
 
@@ -42,10 +42,11 @@
 <div class="g-unit" id="doc-content" >
   <div id="jd-header" class="guide-header" >
     <span class="crumb">&nbsp;</span>
-    <h1><?cs if:android.whichdoc == "online" ?>Download the <?cs /if ?><?cs var:page.title ?></h1>
+    <h1 itemprop="name"><?cs if:android.whichdoc == "online" ?>Download the <?cs /if ?><?cs
+var:page.title ?></h1>
   </div>
 
-  <div id="jd-content">
+  <div id="jd-content" itemprop="description">
 
 <?cs if:sdk.not_latest_version ?>
   <div class="special">