From 7e101699094f130965df440ae6e1572a4ab10c08 Mon Sep 17 00:00:00 2001 From: SzuWei Lin Date: Tue, 18 Jul 2017 13:42:12 +0800 Subject: [PATCH 001/421] Share system properties with all GSI project with treble_system.prop Use TARGET_SYSTEM_PROP to assign a common system property file in each GSI BoardConfig.mk Bug: 62647757 Test: make and check the file system/build.prop in out folder Change-Id: Ifb3e02356869f97573a3690a6d67c2b4a9471c46 --- target/board/generic_arm64_a/BoardConfig.mk | 3 +++ target/board/generic_arm64_ab/BoardConfig.mk | 3 +++ target/board/generic_arm64_ab/system.prop | 0 target/board/generic_arm_a/BoardConfig.mk | 3 +++ target/board/generic_arm_a/system.prop | 0 .../board/{generic_arm64_a/system.prop => treble_system.prop} | 0 6 files changed, 9 insertions(+) delete mode 100644 target/board/generic_arm64_ab/system.prop delete mode 100644 target/board/generic_arm_a/system.prop rename target/board/{generic_arm64_a/system.prop => treble_system.prop} (100%) diff --git a/target/board/generic_arm64_a/BoardConfig.mk b/target/board/generic_arm64_a/BoardConfig.mk index fbac4171ac..2e3ef78ab8 100644 --- a/target/board/generic_arm64_a/BoardConfig.mk +++ b/target/board/generic_arm64_a/BoardConfig.mk @@ -17,6 +17,9 @@ # Common boardconfig settings for generic AOSP products targetting mobile # (phone/table) devices. +# System properties +TARGET_SYSTEM_PROP := build/make/target/board/treble_system.prop + # Bootloader is not part of generic AOSP image TARGET_NO_BOOTLOADER := true diff --git a/target/board/generic_arm64_ab/BoardConfig.mk b/target/board/generic_arm64_ab/BoardConfig.mk index e05f345e4b..b749eb0df2 100644 --- a/target/board/generic_arm64_ab/BoardConfig.mk +++ b/target/board/generic_arm64_ab/BoardConfig.mk @@ -17,6 +17,9 @@ # Common boardconfig settings for generic AOSP products targetting mobile # (phone/table) devices. +# System properties +TARGET_SYSTEM_PROP := build/make/target/board/treble_system.prop + # Bootloader is not part of generic AOSP image TARGET_NO_BOOTLOADER := true diff --git a/target/board/generic_arm64_ab/system.prop b/target/board/generic_arm64_ab/system.prop deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/target/board/generic_arm_a/BoardConfig.mk b/target/board/generic_arm_a/BoardConfig.mk index 6c1b36f60f..9da72a3809 100644 --- a/target/board/generic_arm_a/BoardConfig.mk +++ b/target/board/generic_arm_a/BoardConfig.mk @@ -17,6 +17,9 @@ # Common boardconfig settings for generic AOSP products targetting mobile # (phone/table) devices. +# System properties +TARGET_SYSTEM_PROP := build/make/target/board/treble_system.prop + # Bootloader is not part of generic AOSP image TARGET_NO_BOOTLOADER := true diff --git a/target/board/generic_arm_a/system.prop b/target/board/generic_arm_a/system.prop deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/target/board/generic_arm64_a/system.prop b/target/board/treble_system.prop similarity index 100% rename from target/board/generic_arm64_a/system.prop rename to target/board/treble_system.prop From 5677b877fbeb500b6c81228e49ddb35375ca3446 Mon Sep 17 00:00:00 2001 From: SzuWei Lin Date: Mon, 10 Jul 2017 15:09:32 +0800 Subject: [PATCH 002/421] Force generic system image to load dex pre-opt from system Generic system image always generates dex pre-opt in system image, to improve the time of first boot. But the property ro.cp_system_other_odex could be defined in vendor image, so we disable the property in generic system image to force dex pre-opt be loaded from system image. Bug: 62645784 Test: Test the patch on a A/B project with GSI, confirm the dex pre-opt is loaded from GSI. Change-Id: I71b4a5bed517841b5f889d21d73429fa91da25ba --- target/board/treble_system.prop | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/board/treble_system.prop b/target/board/treble_system.prop index e69de29bb2..bedf10c521 100644 --- a/target/board/treble_system.prop +++ b/target/board/treble_system.prop @@ -0,0 +1,2 @@ +# GSI always generate dex pre-opt in system image +ro.cp_system_other_odex=0 From fbc4835faaf7ecacc008d12b1a8d1a04aaf27475 Mon Sep 17 00:00:00 2001 From: SzuWei Lin Date: Fri, 30 Jun 2017 17:01:10 +0800 Subject: [PATCH 003/421] Add new product aosp_arm_ab The product is for GSI with ARM 32-bits and A/B update. Bug: 38339485 Test: Build pass Change-Id: Ifad208d2e625f30d0a3dd964d53d81257eeefabf --- target/board/generic_arm_ab/BoardConfig.mk | 68 ++++++++++++++++++++++ target/product/AndroidProducts.mk | 1 + target/product/aosp_arm_ab.mk | 35 +++++++++++ 3 files changed, 104 insertions(+) create mode 100644 target/board/generic_arm_ab/BoardConfig.mk create mode 100644 target/product/aosp_arm_ab.mk diff --git a/target/board/generic_arm_ab/BoardConfig.mk b/target/board/generic_arm_ab/BoardConfig.mk new file mode 100644 index 0000000000..58d597b2fc --- /dev/null +++ b/target/board/generic_arm_ab/BoardConfig.mk @@ -0,0 +1,68 @@ +# +# Copyright (C) 2017 The Android Open-Source Project +# +# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Common boardconfig settings for generic AOSP products targetting mobile +# (phone/table) devices. + +# System properties +TARGET_SYSTEM_PROP := build/make/target/board/treble_system.prop + +# Bootloader is not part of generic AOSP image +TARGET_NO_BOOTLOADER := true + +# Kernel is also not part of generic AOSP image +TARGET_NO_KERNEL := true + +# system.img is always ext4 with sparse option +TARGET_USERIMAGES_USE_EXT4 := true +TARGET_USERIMAGES_SPARSE_EXT_DISABLED := false +TARGET_USES_MKE2FS := true + +# Enable dex pre-opt to speed up initial boot +ifeq ($(HOST_OS),linux) + ifeq ($(WITH_DEXPREOPT),) + WITH_DEXPREOPT := true + WITH_DEXPREOPT_PIC := true + ifneq ($(TARGET_BUILD_VARIANT),user) + # Retain classes.dex in APK's for non-user builds + DEX_PREOPT_DEFAULT := nostripping + endif + endif +endif + +# Generic AOSP image always requires separate vendor.img +TARGET_COPY_OUT_VENDOR := vendor + +# Generic AOSP image does NOT support HWC1 +TARGET_USES_HWC2 := true + +TARGET_ARCH := arm +TARGET_ARCH_VARIANT := armv7-a-neon +TARGET_CPU_ABI := armeabi-v7a +TARGET_CPU_ABI2 := armeabi +TARGET_CPU_VARIANT := generic + +# Enable A/B update +TARGET_NO_RECOVERY := true +BOARD_BUILD_SYSTEM_ROOT_IMAGE := true + +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1610612736 + +# TODO(b/35790399): remove when b/35790399 is fixed. +BOARD_NAND_SPARE_SIZE := 0 +BOARD_FLASH_BLOCK_SIZE := 512 + +BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true diff --git a/target/product/AndroidProducts.mk b/target/product/AndroidProducts.mk index 285fc3930f..19106e01a1 100644 --- a/target/product/AndroidProducts.mk +++ b/target/product/AndroidProducts.mk @@ -52,6 +52,7 @@ PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/generic_mips.mk \ $(LOCAL_DIR)/aosp_arm.mk \ $(LOCAL_DIR)/aosp_arm_a.mk \ + $(LOCAL_DIR)/aosp_arm_ab.mk \ $(LOCAL_DIR)/full.mk \ $(LOCAL_DIR)/aosp_x86.mk \ $(LOCAL_DIR)/aosp_x86_arm.mk \ diff --git a/target/product/aosp_arm_ab.mk b/target/product/aosp_arm_ab.mk new file mode 100644 index 0000000000..423d38fbae --- /dev/null +++ b/target/product/aosp_arm_ab.mk @@ -0,0 +1,35 @@ +# +# Copyright (C) 2017 The Android Open-Source Project +# +# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at +# /vendor/[build|default].prop when build split is on. In order to have sysprops +# on the generic system image, place them in build/make/target/board/generic_arm_a/ +# system.prop. + +include build/make/target/product/treble_common.mk + +AB_OTA_UPDATER := true +AB_OTA_PARTITIONS := system +PRODUCT_PACKAGES += \ + update_engine \ + update_verifier + +$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk) + +PRODUCT_NAME := aosp_arm_ab +PRODUCT_DEVICE := generic_arm_ab +PRODUCT_BRAND := Android +PRODUCT_MODEL := AOSP on ARM32 From 4b189c810e32fb73f0cc9085ec78379011699ab7 Mon Sep 17 00:00:00 2001 From: SzuWei Lin Date: Mon, 3 Jul 2017 17:34:25 +0800 Subject: [PATCH 004/421] Add new products aosp_x86_a and aosp_x86_64_a The product is for GSI with x86 64-bits and 32-bits without A/B update. Bug: 38339837 Test: Build pass and boot to home screen on 32/64-bits x86 emulator by replacing system image with GSI Change-Id: I9f956bc35ba5700900df7c2fca45bf794684a418 --- target/board/generic_x86_64_a/BoardConfig.mk | 68 ++++++++++++++++++++ target/board/generic_x86_a/BoardConfig.mk | 62 ++++++++++++++++++ target/product/AndroidProducts.mk | 2 + target/product/aosp_x86_64_a.mk | 30 +++++++++ target/product/aosp_x86_a.mk | 29 +++++++++ 5 files changed, 191 insertions(+) create mode 100644 target/board/generic_x86_64_a/BoardConfig.mk create mode 100644 target/board/generic_x86_a/BoardConfig.mk create mode 100644 target/product/aosp_x86_64_a.mk create mode 100644 target/product/aosp_x86_a.mk diff --git a/target/board/generic_x86_64_a/BoardConfig.mk b/target/board/generic_x86_64_a/BoardConfig.mk new file mode 100644 index 0000000000..bd1f750e3b --- /dev/null +++ b/target/board/generic_x86_64_a/BoardConfig.mk @@ -0,0 +1,68 @@ +# +# Copyright (C) 2017 The Android Open-Source Project +# +# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Common boardconfig settings for generic AOSP products targetting mobile +# (phone/table) devices. + +# System properties +TARGET_SYSTEM_PROP := build/make/target/board/treble_system.prop + +# Bootloader is not part of generic AOSP image +TARGET_NO_BOOTLOADER := true + +# Kernel is also not part of generic AOSP image +TARGET_NO_KERNEL := true + +# system.img is always ext4 with sparse option +TARGET_USERIMAGES_USE_EXT4 := true +TARGET_USERIMAGES_SPARSE_EXT_DISABLED := false +TARGET_USES_MKE2FS := true + +# Enable dex pre-opt to speed up initial boot +ifeq ($(HOST_OS),linux) + ifeq ($(WITH_DEXPREOPT),) + WITH_DEXPREOPT := true + WITH_DEXPREOPT_PIC := true + ifneq ($(TARGET_BUILD_VARIANT),user) + # Retain classes.dex in APK's for non-user builds + DEX_PREOPT_DEFAULT := nostripping + endif + endif +endif + +# Generic AOSP image always requires separate vendor.img +TARGET_COPY_OUT_VENDOR := vendor + +# Generic AOSP image does NOT support HWC1 +TARGET_USES_HWC2 := true + +TARGET_CPU_ABI := x86_64 +TARGET_ARCH := x86_64 +TARGET_ARCH_VARIANT := x86_64 + +TARGET_2ND_CPU_ABI := x86 +TARGET_2ND_ARCH := x86 +TARGET_2ND_ARCH_VARIANT := x86_64 + +TARGET_USES_64_BIT_BINDER := true + +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1610612736 # 1.5 GB + +# TODO(b/35790399): remove when b/35790399 is fixed. +BOARD_NAND_SPARE_SIZE := 0 +BOARD_FLASH_BLOCK_SIZE := 512 + +BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true diff --git a/target/board/generic_x86_a/BoardConfig.mk b/target/board/generic_x86_a/BoardConfig.mk new file mode 100644 index 0000000000..4ca6ebe86d --- /dev/null +++ b/target/board/generic_x86_a/BoardConfig.mk @@ -0,0 +1,62 @@ +# +# Copyright (C) 2017 The Android Open-Source Project +# +# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Common boardconfig settings for generic AOSP products targetting mobile +# (phone/table) devices. + +# System properties +TARGET_SYSTEM_PROP := build/make/target/board/treble_system.prop + +# Bootloader is not part of generic AOSP image +TARGET_NO_BOOTLOADER := true + +# Kernel is also not part of generic AOSP image +TARGET_NO_KERNEL := true + +# system.img is always ext4 with sparse option +TARGET_USERIMAGES_USE_EXT4 := true +TARGET_USERIMAGES_SPARSE_EXT_DISABLED := false +TARGET_USES_MKE2FS := true + +# Enable dex pre-opt to speed up initial boot +ifeq ($(HOST_OS),linux) + ifeq ($(WITH_DEXPREOPT),) + WITH_DEXPREOPT := true + WITH_DEXPREOPT_PIC := true + ifneq ($(TARGET_BUILD_VARIANT),user) + # Retain classes.dex in APK's for non-user builds + DEX_PREOPT_DEFAULT := nostripping + endif + endif +endif + +# Generic AOSP image always requires separate vendor.img +TARGET_COPY_OUT_VENDOR := vendor + +# Generic AOSP image does NOT support HWC1 +TARGET_USES_HWC2 := true + +TARGET_CPU_ABI := x86 +TARGET_ARCH := x86 +TARGET_ARCH_VARIANT := x86 + +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1610612736 # 1.5 GB + +# TODO(b/35790399): remove when b/35790399 is fixed. +BOARD_NAND_SPARE_SIZE := 0 +BOARD_FLASH_BLOCK_SIZE := 512 + +BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true diff --git a/target/product/AndroidProducts.mk b/target/product/AndroidProducts.mk index 285fc3930f..a82036ccde 100644 --- a/target/product/AndroidProducts.mk +++ b/target/product/AndroidProducts.mk @@ -54,6 +54,7 @@ PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/aosp_arm_a.mk \ $(LOCAL_DIR)/full.mk \ $(LOCAL_DIR)/aosp_x86.mk \ + $(LOCAL_DIR)/aosp_x86_a.mk \ $(LOCAL_DIR)/aosp_x86_arm.mk \ $(LOCAL_DIR)/full_x86.mk \ $(LOCAL_DIR)/aosp_mips.mk \ @@ -63,6 +64,7 @@ PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/aosp_arm64_ab.mk \ $(LOCAL_DIR)/aosp_mips64.mk \ $(LOCAL_DIR)/aosp_x86_64.mk \ + $(LOCAL_DIR)/aosp_x86_64_a.mk \ $(LOCAL_DIR)/sdk_phone_armv7.mk \ $(LOCAL_DIR)/sdk_phone_x86.mk \ $(LOCAL_DIR)/sdk_phone_mips.mk \ diff --git a/target/product/aosp_x86_64_a.mk b/target/product/aosp_x86_64_a.mk new file mode 100644 index 0000000000..eab8b4abe6 --- /dev/null +++ b/target/product/aosp_x86_64_a.mk @@ -0,0 +1,30 @@ +# +# Copyright (C) 2017 The Android Open-Source Project +# +# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at +# /vendor/[build|default].prop when build split is on. In order to have sysprops +# on the generic system image, place them in build/make/target/board/generic_arm64_a/ +# system.prop. + +include build/make/target/product/treble_common.mk + +$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk) + +PRODUCT_NAME := aosp_x86_64_a +PRODUCT_DEVICE := generic_x86_64_a +PRODUCT_BRAND := Android +PRODUCT_MODEL := AOSP on x86_64 diff --git a/target/product/aosp_x86_a.mk b/target/product/aosp_x86_a.mk new file mode 100644 index 0000000000..df8410730c --- /dev/null +++ b/target/product/aosp_x86_a.mk @@ -0,0 +1,29 @@ +# +# Copyright (C) 2017 The Android Open-Source Project +# +# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at +# /vendor/[build|default].prop when build split is on. In order to have sysprops +# on the generic system image, place them in build/make/target/board/generic_arm64_a/ +# system.prop. + +include build/make/target/product/treble_common.mk + +$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk) + +PRODUCT_NAME := aosp_x86_a +PRODUCT_DEVICE := generic_x86_a +PRODUCT_BRAND := Android +PRODUCT_MODEL := AOSP on x86 From b0b1a24b1e039f9db25b6e549164af4992be188e Mon Sep 17 00:00:00 2001 From: Michael Schwartz Date: Tue, 18 Jul 2017 10:05:13 -0700 Subject: [PATCH 005/421] Support prebuilt bootimage Bug: 63676296 Test: `m -j` and inspect artifacts Change-Id: Id32d8a7151a8e99b45aa58ee9971def9734eaf78 --- core/Makefile | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/core/Makefile b/core/Makefile index af3c4cb9d7..d6d4bf2ea1 100644 --- a/core/Makefile +++ b/core/Makefile @@ -579,6 +579,8 @@ ramdisk-nodeps: $(MKBOOTFS) | $(MINIGZIP) @echo "make $@: ignoring dependencies" $(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_ROOT_OUT) | $(MINIGZIP) > $(INSTALLED_RAMDISK_TARGET) +INSTALLED_BOOTIMAGE_TARGET := $(PRODUCT_OUT)/boot.img + ifneq ($(strip $(TARGET_NO_KERNEL)),true) # ----------------------------------------------------------------- @@ -617,8 +619,6 @@ INTERNAL_MKBOOTIMG_VERSION_ARGS := \ --os_version $(PLATFORM_VERSION) \ --os_patch_level $(PLATFORM_SECURITY_PATCH) -INSTALLED_BOOTIMAGE_TARGET := $(PRODUCT_OUT)/boot.img - # BOARD_USES_RECOVERY_AS_BOOT = true must have BOARD_BUILD_SYSTEM_ROOT_IMAGE = true. ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true) ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true) @@ -701,6 +701,13 @@ endif # TARGET_BOOTIMAGE_USE_EXT2 endif # BOARD_USES_RECOVERY_AS_BOOT else # TARGET_NO_KERNEL +ifdef BOARD_PREBUILT_BOOTIMAGE +ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true) +# Remove when b/63676296 is resolved. +$(error Prebuilt bootimage is only supported for AB targets) +endif +$(eval $(call copy-one-file,$(BOARD_PREBUILT_BOOTIMAGE),$(INSTALLED_BOOTIMAGE_TARGET))) +else INTERNAL_KERNEL_CMDLINE := $(strip $(BOARD_KERNEL_CMDLINE)) # HACK: The top-level targets depend on the bootimage. Not all targets # can produce a bootimage, though, and emulator targets need the ramdisk @@ -709,6 +716,7 @@ INTERNAL_KERNEL_CMDLINE := $(strip $(BOARD_KERNEL_CMDLINE)) # kernel-less inputs. INSTALLED_BOOTIMAGE_TARGET := $(INSTALLED_RAMDISK_TARGET) endif +endif # ----------------------------------------------------------------- # NOTICE files @@ -2482,6 +2490,10 @@ ifdef BOARD_PREBUILT_VENDORIMAGE $(hide) mkdir -p $(zip_root)/IMAGES $(hide) cp $(INSTALLED_VENDORIMAGE_TARGET) $(zip_root)/IMAGES/ endif +ifdef BOARD_PREBUILT_BOOTIMAGE + $(hide) mkdir -p $(zip_root)/IMAGES + $(hide) cp $(INSTALLED_BOOTIMAGE_TARGET) $(zip_root)/IMAGES/ +endif ifdef BOARD_PREBUILT_DTBOIMAGE $(hide) mkdir -p $(zip_root)/PREBUILT_IMAGES $(hide) cp $(INSTALLED_DTBOIMAGE_TARGET) $(zip_root)/PREBUILT_IMAGES/ From 06956fe54c1fdd36904a1f889597ceee9c38133e Mon Sep 17 00:00:00 2001 From: SzuWei Lin Date: Mon, 3 Jul 2017 18:28:40 +0800 Subject: [PATCH 006/421] Add new products aosp_x86_ab and aosp_x86_64_ab The product is for GSI with x86 64-bits and 32-bits with A/B update. Bug: 38339398 Test: Build pass Change-Id: I1f945a812e0fbf8c4266d2f91624c2c674941383 --- target/board/generic_x86_64_ab/BoardConfig.mk | 71 +++++++++++++++++++ target/board/generic_x86_ab/BoardConfig.mk | 65 +++++++++++++++++ target/product/AndroidProducts.mk | 2 + target/product/aosp_x86_64_ab.mk | 36 ++++++++++ target/product/aosp_x86_ab.mk | 35 +++++++++ 5 files changed, 209 insertions(+) create mode 100644 target/board/generic_x86_64_ab/BoardConfig.mk create mode 100644 target/board/generic_x86_ab/BoardConfig.mk create mode 100644 target/product/aosp_x86_64_ab.mk create mode 100644 target/product/aosp_x86_ab.mk diff --git a/target/board/generic_x86_64_ab/BoardConfig.mk b/target/board/generic_x86_64_ab/BoardConfig.mk new file mode 100644 index 0000000000..41bd7b7345 --- /dev/null +++ b/target/board/generic_x86_64_ab/BoardConfig.mk @@ -0,0 +1,71 @@ +# +# Copyright (C) 2017 The Android Open-Source Project +# +# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Common boardconfig settings for generic AOSP products targetting mobile +# (phone/table) devices. + +# System properties +TARGET_SYSTEM_PROP := build/make/target/board/treble_system.prop + +# Bootloader is not part of generic AOSP image +TARGET_NO_BOOTLOADER := true + +# Kernel is also not part of generic AOSP image +TARGET_NO_KERNEL := true + +# system.img is always ext4 with sparse option +TARGET_USERIMAGES_USE_EXT4 := true +TARGET_USERIMAGES_SPARSE_EXT_DISABLED := false +TARGET_USES_MKE2FS := true + +# Enable dex pre-opt to speed up initial boot +ifeq ($(HOST_OS),linux) + ifeq ($(WITH_DEXPREOPT),) + WITH_DEXPREOPT := true + WITH_DEXPREOPT_PIC := true + ifneq ($(TARGET_BUILD_VARIANT),user) + # Retain classes.dex in APK's for non-user builds + DEX_PREOPT_DEFAULT := nostripping + endif + endif +endif + +# Generic AOSP image always requires separate vendor.img +TARGET_COPY_OUT_VENDOR := vendor + +# Generic AOSP image does NOT support HWC1 +TARGET_USES_HWC2 := true + +TARGET_CPU_ABI := x86_64 +TARGET_ARCH := x86_64 +TARGET_ARCH_VARIANT := x86_64 + +TARGET_2ND_CPU_ABI := x86 +TARGET_2ND_ARCH := x86 +TARGET_2ND_ARCH_VARIANT := x86_64 + +TARGET_USES_64_BIT_BINDER := true + +# Enable A/B update +BOARD_BUILD_SYSTEM_ROOT_IMAGE := true + +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1610612736 # 1.5 GB + +# TODO(b/35790399): remove when b/35790399 is fixed. +BOARD_NAND_SPARE_SIZE := 0 +BOARD_FLASH_BLOCK_SIZE := 512 + +BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true diff --git a/target/board/generic_x86_ab/BoardConfig.mk b/target/board/generic_x86_ab/BoardConfig.mk new file mode 100644 index 0000000000..6a286674dd --- /dev/null +++ b/target/board/generic_x86_ab/BoardConfig.mk @@ -0,0 +1,65 @@ +# +# Copyright (C) 2017 The Android Open-Source Project +# +# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Common boardconfig settings for generic AOSP products targetting mobile +# (phone/table) devices. + +# System properties +TARGET_SYSTEM_PROP := build/make/target/board/treble_system.prop + +# Bootloader is not part of generic AOSP image +TARGET_NO_BOOTLOADER := true + +# Kernel is also not part of generic AOSP image +TARGET_NO_KERNEL := true + +# system.img is always ext4 with sparse option +TARGET_USERIMAGES_USE_EXT4 := true +TARGET_USERIMAGES_SPARSE_EXT_DISABLED := false +TARGET_USES_MKE2FS := true + +# Enable dex pre-opt to speed up initial boot +ifeq ($(HOST_OS),linux) + ifeq ($(WITH_DEXPREOPT),) + WITH_DEXPREOPT := true + WITH_DEXPREOPT_PIC := true + ifneq ($(TARGET_BUILD_VARIANT),user) + # Retain classes.dex in APK's for non-user builds + DEX_PREOPT_DEFAULT := nostripping + endif + endif +endif + +# Generic AOSP image always requires separate vendor.img +TARGET_COPY_OUT_VENDOR := vendor + +# Generic AOSP image does NOT support HWC1 +TARGET_USES_HWC2 := true + +TARGET_CPU_ABI := x86 +TARGET_ARCH := x86 +TARGET_ARCH_VARIANT := x86 + +# Enable A/B update +BOARD_BUILD_SYSTEM_ROOT_IMAGE := true + +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1610612736 # 1.5 GB + +# TODO(b/35790399): remove when b/35790399 is fixed. +BOARD_NAND_SPARE_SIZE := 0 +BOARD_FLASH_BLOCK_SIZE := 512 + +BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true diff --git a/target/product/AndroidProducts.mk b/target/product/AndroidProducts.mk index b95a28687f..9e2adee014 100644 --- a/target/product/AndroidProducts.mk +++ b/target/product/AndroidProducts.mk @@ -56,6 +56,7 @@ PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/full.mk \ $(LOCAL_DIR)/aosp_x86.mk \ $(LOCAL_DIR)/aosp_x86_a.mk \ + $(LOCAL_DIR)/aosp_x86_ab.mk \ $(LOCAL_DIR)/aosp_x86_arm.mk \ $(LOCAL_DIR)/full_x86.mk \ $(LOCAL_DIR)/aosp_mips.mk \ @@ -66,6 +67,7 @@ PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/aosp_mips64.mk \ $(LOCAL_DIR)/aosp_x86_64.mk \ $(LOCAL_DIR)/aosp_x86_64_a.mk \ + $(LOCAL_DIR)/aosp_x86_64_ab.mk \ $(LOCAL_DIR)/sdk_phone_armv7.mk \ $(LOCAL_DIR)/sdk_phone_x86.mk \ $(LOCAL_DIR)/sdk_phone_mips.mk \ diff --git a/target/product/aosp_x86_64_ab.mk b/target/product/aosp_x86_64_ab.mk new file mode 100644 index 0000000000..4fb2acfcd0 --- /dev/null +++ b/target/product/aosp_x86_64_ab.mk @@ -0,0 +1,36 @@ +# +# Copyright (C) 2017 The Android Open-Source Project +# +# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at +# /vendor/[build|default].prop when build split is on. In order to have sysprops +# on the generic system image, place them in build/make/target/board/generic_arm64_a/ +# system.prop. + +include build/make/target/product/treble_common.mk + +AB_OTA_UPDATER := true +AB_OTA_PARTITIONS := system +PRODUCT_PACKAGES += \ + update_engine \ + update_verifier + +$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk) + +PRODUCT_NAME := aosp_x86_64_ab +PRODUCT_DEVICE := generic_x86_64_ab +PRODUCT_BRAND := Android +PRODUCT_MODEL := AOSP on x86_64 diff --git a/target/product/aosp_x86_ab.mk b/target/product/aosp_x86_ab.mk new file mode 100644 index 0000000000..4bd63ab4e6 --- /dev/null +++ b/target/product/aosp_x86_ab.mk @@ -0,0 +1,35 @@ +# +# Copyright (C) 2017 The Android Open-Source Project +# +# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at +# /vendor/[build|default].prop when build split is on. In order to have sysprops +# on the generic system image, place them in build/make/target/board/generic_arm64_a/ +# system.prop. + +include build/make/target/product/treble_common.mk + +AB_OTA_UPDATER := true +AB_OTA_PARTITIONS := system +PRODUCT_PACKAGES += \ + update_engine \ + update_verifier + +$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk) + +PRODUCT_NAME := aosp_x86_ab +PRODUCT_DEVICE := generic_x86_ab +PRODUCT_BRAND := Android +PRODUCT_MODEL := AOSP on x86 From 481660ef3419ba84e798a2659a747bf3f3e90945 Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Fri, 16 Jun 2017 10:24:54 -0700 Subject: [PATCH 007/421] Build: Change SANITIZE_LITE install settings Under SANITIZE_LITE, the default app_process is not instrumented. Embedding sanitized libraries into APKs will lead to crashing apps. So move second-stage APKs to /data/asan. The tradeoff is that for now we won't run these sanitized binaries. Adding support for that is future work. Also do not do a rebuild of the boot image. This would invalidate the first-stage results. Note that this is technically dangerous, as stack overflow guard sizes will not be adapted for ASAN runs. However, this is a general incompatibility. Also do not rebuild system_other. Apps are not rebuilt, so it will create an empty image. Bug: 36458146 Test: m && m SANITIZE_TARGET=address SANITIZE_LITE=true Change-Id: I3898bc53cad264529f126e6bf0af9c6ca1736877 --- core/Makefile | 3 +++ core/dex_preopt.mk | 5 +++++ core/dex_preopt_libart_boot.mk | 8 ++++++++ core/envsetup.mk | 30 ++++++++++++++++++++++++++---- 4 files changed, 42 insertions(+), 4 deletions(-) diff --git a/core/Makefile b/core/Makefile index d6d4bf2ea1..8cd2863790 100644 --- a/core/Makefile +++ b/core/Makefile @@ -1786,8 +1786,11 @@ endef # We just build this directly to the install location. INSTALLED_SYSTEMOTHERIMAGE_TARGET := $(BUILT_SYSTEMOTHERIMAGE_TARGET) +ifneq (true,$(SANITIZE_LITE)) +# Only create system_other when not building the second stage of a SANITIZE_LITE build. $(INSTALLED_SYSTEMOTHERIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_SYSTEMOTHERIMAGE_FILES) $(INSTALLED_FILES_FILE_SYSTEMOTHER) $(build-systemotherimage-target) +endif .PHONY: systemotherimage-nodeps systemotherimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS) diff --git a/core/dex_preopt.mk b/core/dex_preopt.mk index 0606c83bc9..439f7e5659 100644 --- a/core/dex_preopt.mk +++ b/core/dex_preopt.mk @@ -24,7 +24,12 @@ DEX_PREOPT_DEFAULT ?= true SYSTEM_OTHER_ODEX_FILTER ?= app/% priv-app/% # Method returning whether the install path $(1) should be for system_other. +# Under SANITIZE_LITE, we do not want system_other. Just put things under /data/asan. +ifeq ($(SANITIZE_LITE),true) +install-on-system-other = +else install-on-system-other = $(filter-out $(PRODUCT_DEXPREOPT_SPEED_APPS) $(PRODUCT_SYSTEM_SERVER_APPS),$(basename $(notdir $(filter $(foreach f,$(SYSTEM_OTHER_ODEX_FILTER),$(TARGET_OUT)/$(f)),$(1))))) +endif # The default values for pre-opting: always preopt PIC. # Conditional to building on linux, as dex2oat currently does not work on darwin. diff --git a/core/dex_preopt_libart_boot.mk b/core/dex_preopt_libart_boot.mk index 6e49f64acf..955bd9a761 100644 --- a/core/dex_preopt_libart_boot.mk +++ b/core/dex_preopt_libart_boot.mk @@ -58,6 +58,12 @@ my_boot_image_flags := --compiler-filter=speed-profile my_boot_image_flags += --profile-file=$(my_out_boot_image_profile_location) endif +ifneq (addresstrue,$(SANITIZE_TARGET)$(SANITIZE_LITE)) +# Skip recompiling the boot image for the second sanitization phase. We'll get separate paths +# and invalidate first-stage artifacts which are crucial to SANITIZE_LITE builds. +# Note: this is technically incorrect. Compiled code contains stack checks which may depend +# on ASAN settings. + $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME): PRIVATE_BOOT_IMAGE_FLAGS := $(my_boot_image_flags) $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME): PRIVATE_2ND_ARCH_VAR_PREFIX := $(my_2nd_arch_prefix) # Use dex2oat debug version for better error reporting @@ -85,3 +91,5 @@ $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) : $(LIBART_TARGE --no-generate-debug-info --generate-build-id \ --multi-image --no-inline-from=core-oj.jar \ $(PRODUCT_DEX_PREOPT_BOOT_FLAGS) $(GLOBAL_DEXPREOPT_FLAGS) $(ART_BOOT_IMAGE_EXTRA_ARGS) + +endif diff --git a/core/envsetup.mk b/core/envsetup.mk index 46066e3462..0288492e8d 100644 --- a/core/envsetup.mk +++ b/core/envsetup.mk @@ -421,8 +421,16 @@ TARGET_OUT_COMMON_GEN := $(TARGET_COMMON_OUT_ROOT)/gen TARGET_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM) ifneq ($(filter address,$(SANITIZE_TARGET)),) target_out_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system +ifeq ($(SANITIZE_LITE),true) +# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not +# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. +target_out_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system +else +target_out_app_base := $(TARGET_OUT) +endif else target_out_shared_libraries_base := $(TARGET_OUT) +target_out_app_base := $(TARGET_OUT) endif TARGET_OUT_EXECUTABLES := $(TARGET_OUT)/bin @@ -436,8 +444,8 @@ TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib endif TARGET_OUT_RENDERSCRIPT_BITCODE := $(TARGET_OUT_SHARED_LIBRARIES) TARGET_OUT_JAVA_LIBRARIES := $(TARGET_OUT)/framework -TARGET_OUT_APPS := $(TARGET_OUT)/app -TARGET_OUT_APPS_PRIVILEGED := $(TARGET_OUT)/priv-app +TARGET_OUT_APPS := $(target_out_app_base)/app +TARGET_OUT_APPS_PRIVILEGED := $(target_out_app_base)/priv-app TARGET_OUT_KEYLAYOUT := $(TARGET_OUT)/usr/keylayout TARGET_OUT_KEYCHARS := $(TARGET_OUT)/usr/keychars TARGET_OUT_ETC := $(TARGET_OUT)/etc @@ -445,7 +453,13 @@ TARGET_OUT_NOTICE_FILES := $(TARGET_OUT_INTERMEDIATES)/NOTICE_FILES TARGET_OUT_FAKE := $(PRODUCT_OUT)/fake_packages TARGET_OUT_TESTCASES := $(PRODUCT_OUT)/testcases +ifeq ($(SANITIZE_LITE),true) +# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not +# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. +TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_OTHER) +else TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_OTHER) +endif # Out for TARGET_2ND_ARCH TARGET_2ND_ARCH_VAR_PREFIX := $(HOST_2ND_ARCH_VAR_PREFIX) @@ -514,8 +528,16 @@ TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache TARGET_OUT_VENDOR := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR) ifneq ($(filter address,$(SANITIZE_TARGET)),) target_out_vendor_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/vendor +ifeq ($(SANITIZE_LITE),true) +# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not +# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. +target_out_vendor_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/vendor +else +target_out_vendor_app_base := $(TARGET_OUT_VENDOR) +endif else target_out_vendor_shared_libraries_base := $(TARGET_OUT_VENDOR) +target_out_vendor_app_base := $(TARGET_OUT_VENDOR) endif TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR)/bin @@ -527,8 +549,8 @@ TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base) endif TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE := $(TARGET_OUT_VENDOR_SHARED_LIBRARIES) TARGET_OUT_VENDOR_JAVA_LIBRARIES := $(TARGET_OUT_VENDOR)/framework -TARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR)/app -TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(TARGET_OUT_VENDOR)/priv-app +TARGET_OUT_VENDOR_APPS := $(target_out_vendor_app_base)/app +TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(target_out_vendor_app_base)/priv-app TARGET_OUT_VENDOR_ETC := $(TARGET_OUT_VENDOR)/etc $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR_EXECUTABLES) From ca0adce23564c4b01304423c1cfe3ec409784b3b Mon Sep 17 00:00:00 2001 From: Todd Poynor Date: Wed, 12 Jul 2017 20:25:19 -0700 Subject: [PATCH 008/421] thermal: Add Thermal HAL 1.1 to treble_common.mk Add rev 1.1 of Thermal HAL. Test: VtsHalThermalV1_1TargetTest; plus manual on marlin Bug: 30982366 Change-Id: Iaaef326e5d2bad05d934614b79c7c44e7592fdc4 --- target/product/treble_common.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/target/product/treble_common.mk b/target/product/treble_common.mk index 52e244161d..95ae1dbcda 100644 --- a/target/product/treble_common.mk +++ b/target/product/treble_common.mk @@ -75,6 +75,7 @@ PRODUCT_PACKAGES := \ android.hardware.tetheroffload.config@1.0 \ android.hardware.tetheroffload.control@1.0 \ android.hardware.thermal@1.0 \ + android.hardware.thermal@1.1 \ android.hardware.tv.cec@1.0 \ android.hardware.tv.input@1.0 \ android.hardware.usb@1.0 \ From d006688090e7ef31985dd728c2b92e4951371d57 Mon Sep 17 00:00:00 2001 From: Todd Poynor Date: Tue, 13 Jun 2017 18:36:50 -0700 Subject: [PATCH 009/421] thermalserviced: add ThermalService daemon Add ThermalService daemon to embedded.mk as part of the minimal build of open source parts of the tree. Test: manual on marlin Bug: 30982366 Change-Id: I8315a8f5871ec24d8970deaa8527ee74db1c4dc7 --- target/product/embedded.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/target/product/embedded.mk b/target/product/embedded.mk index 22c6112336..aefba439a9 100644 --- a/target/product/embedded.mk +++ b/target/product/embedded.mk @@ -76,6 +76,7 @@ PRODUCT_PACKAGES += \ shell_and_utilities \ storaged \ surfaceflinger \ + thermalserviced \ tombstoned \ tzdatacheck \ vndservice \ From b56fcf400f72ddd096df98993b015acef3487e2e Mon Sep 17 00:00:00 2001 From: Ian Pedowitz Date: Fri, 28 Jul 2017 07:57:32 -0700 Subject: [PATCH 010/421] master is now P Fixes: 64141010 Test: source build/envsetup.sh && lunch marlin-userdebug ============================================ PLATFORM_VERSION_CODENAME=P PLATFORM_VERSION=P TARGET_PRODUCT=marlin TARGET_BUILD_VARIANT=userdebug TARGET_BUILD_TYPE=release TARGET_PLATFORM_VERSION=PPR1 TARGET_BUILD_APPS= TARGET_ARCH=arm64 TARGET_ARCH_VARIANT=armv8-a TARGET_CPU_VARIANT=kryo TARGET_2ND_ARCH=arm TARGET_2ND_ARCH_VARIANT=armv7-a-neon TARGET_2ND_CPU_VARIANT=kryo HOST_ARCH=x86_64 HOST_2ND_ARCH=x86 HOST_OS=linux HOST_OS_EXTRA=Linux-4.4.0-79-generic-x86_64-Ubuntu-14.04.5-LTS HOST_CROSS_OS=windows HOST_CROSS_ARCH=x86 HOST_CROSS_2ND_ARCH=x86_64 HOST_BUILD_TYPE=release BUILD_ID=MASTER OUT_DIR=out AUX_OS_VARIANT_LIST= ============================================ Change-Id: I2d9019af8c4e24e34c743be85d4e0ff224de9d17 --- core/version_defaults.mk | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/version_defaults.mk b/core/version_defaults.mk index c4fb857199..202ce858e5 100644 --- a/core/version_defaults.mk +++ b/core/version_defaults.mk @@ -38,8 +38,8 @@ ifdef INTERNAL_BUILD_ID_MAKEFILE include $(INTERNAL_BUILD_ID_MAKEFILE) endif -DEFAULT_PLATFORM_VERSION := OPM1 -MIN_PLATFORM_VERSION := OPM1 +DEFAULT_PLATFORM_VERSION := PPR1 +MIN_PLATFORM_VERSION := PPR1 MAX_PLATFORM_VERSION := PPR1 ALLOWED_VERSIONS := $(call allowed-platform-versions,\ @@ -73,7 +73,6 @@ endif # When you change PLATFORM_VERSION for a given PLATFORM_SDK_VERSION # please add that PLATFORM_VERSION to the following text file: # cts/tests/tests/os/assets/platform_versions.txt -PLATFORM_VERSION.OPM1 := OMR1 PLATFORM_VERSION.PPR1 := P # These are the current development codenames, if the build is not a final From e3879e8512dc20778a9d379c0187662444feafde Mon Sep 17 00:00:00 2001 From: Yi Jin Date: Mon, 31 Jul 2017 11:51:16 -0700 Subject: [PATCH 011/421] Add incident_helper to base build Test: NA Change-Id: Idb567ad2a84977d7fd4eb1ebf3bfb24a157664f3 --- target/product/base.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/target/product/base.mk b/target/product/base.mk index 84feaf75a7..31075051ec 100644 --- a/target/product/base.mk +++ b/target/product/base.mk @@ -44,6 +44,7 @@ PRODUCT_PACKAGES += \ ime \ incidentd \ incident \ + incident_helper \ incident_report \ input \ javax.obex \ From 4e165ce1712f3db0cb25fe91e5a8765e73389710 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Wed, 2 Aug 2017 14:41:58 -0700 Subject: [PATCH 012/421] Copy resources from classes.jar when using AAPT2 When building with javac but without AAPT2 the final package is created by copying classes.jar, deleting the class files, and adding in the dex files. This leaves any non-class java resources in the final package. When using AAPT2, the final package is created from AAPT2's package-res.apk, so the java resources have to be added back into the package manually. Bug: 64272170 Test: m -j SystemUITests, check that the apk contains mockito-extensions/* Change-Id: I6649f7f2fbf63ff5001f4731e22960f857726c70 --- core/definitions.mk | 11 +++++++++++ core/package_internal.mk | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/core/definitions.mk b/core/definitions.mk index 86bda9ea5a..8d9f7f5e8e 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2692,6 +2692,17 @@ define add-carried-jack-resources fi endef +# Add resources (non .class files) from a jar to a package +# $(1): the package file +# $(2): the jar file +# $(3): temporary directory +define add-jar-resources-to-package + rm -rf $(3) + mkdir -p $(3) + unzip -qo $(2) -d $(3) $$(zipinfo -1 $(2) | grep -v -E "\.class$$") + $(JAR) uf $(1) -C $(3) . +endef + # Sign a package using the specified key/cert. # define sign-package diff --git a/core/package_internal.mk b/core/package_internal.mk index 74dd15ed54..d8e3e83210 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -563,7 +563,10 @@ else $(my_res_package) $(LOCAL_BUILT_MODULE): PRIVATE_PRODUCT_AAPT_PREF_CONFIG := $(PRODUCT_AAPT_PREF_CONFIG) endif endif + $(LOCAL_BUILT_MODULE): PRIVATE_DONT_DELETE_JAR_DIRS := $(LOCAL_DONT_DELETE_JAR_DIRS) +$(LOCAL_BUILT_MODULE): PRIVATE_RESOURCE_INTERMEDIATES_DIR := $(intermediates.COMMON)/resources +$(LOCAL_BUILT_MODULE): PRIVATE_FULL_CLASSES_JAR := $(full_classes_jar) $(LOCAL_BUILT_MODULE) : $(jni_shared_libraries) ifdef LOCAL_USE_AAPT2 $(LOCAL_BUILT_MODULE): PRIVATE_RES_PACKAGE := $(my_res_package) @@ -592,6 +595,9 @@ ifeq ($(full_classes_jar),) $(if $(PRIVATE_EXTRA_JAR_ARGS),$(call add-java-resources-to,$@)) else # full_classes_jar $(add-dex-to-package) +ifdef LOCAL_USE_AAPT2 + $(call add-jar-resources-to-package,$@,$(PRIVATE_FULL_CLASSES_JAR),$(PRIVATE_RESOURCE_INTERMEDIATES_DIR)) +endif endif # full_classes_jar ifdef LOCAL_JACK_ENABLED $(add-carried-jack-resources) From 865d54caf29acbf576b70428da015a38603dec8e Mon Sep 17 00:00:00 2001 From: Jeff Hao Date: Wed, 2 Aug 2017 16:45:49 -0700 Subject: [PATCH 013/421] Add dirty-images-objects handling to boot image build. Allows grouping of classes with dirty static fields to be grouped together in the image to have fewer dirty pages. Bug: 62554875 Test: mm test-art-host Change-Id: I2486d2704d74a192f1ecdc02589e569b61efa4ae --- core/dex_preopt_libart.mk | 4 ++++ core/dex_preopt_libart_boot.mk | 9 ++++++++- target/product/base.mk | 4 ++++ target/product/core_minimal.mk | 4 ++++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/core/dex_preopt_libart.mk b/core/dex_preopt_libart.mk index 47fdba610d..44a05febbf 100644 --- a/core/dex_preopt_libart.mk +++ b/core/dex_preopt_libart.mk @@ -25,6 +25,10 @@ PRELOADED_CLASSES := $(call word-colon,1,$(firstword \ COMPILED_CLASSES := $(call word-colon,1,$(firstword \ $(filter %system/etc/compiled-classes,$(PRODUCT_COPY_FILES)))) +# Use the first dirty-image-objects file in PRODUCT_COPY_FILES. +DIRTY_IMAGE_OBJECTS := $(call word-colon,1,$(firstword \ + $(filter %system/etc/dirty-image-objects,$(PRODUCT_COPY_FILES)))) + define get-product-default-property $(strip $(patsubst $(1)=%,%,$(filter $(1)=%,$(PRODUCT_DEFAULT_PROPERTY_OVERRIDES)))) endef diff --git a/core/dex_preopt_libart_boot.mk b/core/dex_preopt_libart_boot.mk index 955bd9a761..b22a98f8b0 100644 --- a/core/dex_preopt_libart_boot.mk +++ b/core/dex_preopt_libart_boot.mk @@ -37,6 +37,12 @@ ifneq ($(COMPILED_CLASSES),) COMPILED_CLASSES_FLAGS := --compiled-classes=$(COMPILED_CLASSES) endif +# If we have a dirty-image-objects file, create a parameter. +DIRTY_IMAGE_OBJECTS_FLAGS := +ifneq ($(DIRTY_IMAGE_OBJECTS),) + DIRTY_IMAGE_OBJECTS_FLAGS := --dirty-image-objects=$(DIRTY_IMAGE_OBJECTS) +endif + # The rule to install boot.art # Depends on installed boot.oat, boot-*.art, boot-*.oat $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_INSTALLED_IMAGE) : $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) | $(ACP) $($(my_2nd_arch_prefix)LIBART_TARGET_BOOT_ART_EXTRA_INSTALLED_FILES) @@ -53,6 +59,7 @@ $($(my_2nd_arch_prefix)LIBART_TARGET_BOOT_ART_EXTRA_INSTALLED_FILES) : $($(my_2n ifeq (,$(my_out_boot_image_profile_location)) my_boot_image_flags := $(COMPILED_CLASSES_FLAGS) my_boot_image_flags += --image-classes=$(PRELOADED_CLASSES) +my_boot_image_flags += $(DIRTY_IMAGE_OBJECTS_FLAGS) else my_boot_image_flags := --compiler-filter=speed-profile my_boot_image_flags += --profile-file=$(my_out_boot_image_profile_location) @@ -67,7 +74,7 @@ ifneq (addresstrue,$(SANITIZE_TARGET)$(SANITIZE_LITE)) $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME): PRIVATE_BOOT_IMAGE_FLAGS := $(my_boot_image_flags) $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME): PRIVATE_2ND_ARCH_VAR_PREFIX := $(my_2nd_arch_prefix) # Use dex2oat debug version for better error reporting -$($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) : $(LIBART_TARGET_BOOT_DEX_FILES) $(PRELOADED_CLASSES) $(COMPILED_CLASSES) $(DEX2OAT_DEPENDENCY) $(my_out_profile_location) +$($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) : $(LIBART_TARGET_BOOT_DEX_FILES) $(PRELOADED_CLASSES) $(COMPILED_CLASSES) $(DIRTY_IMAGE_OBJECTS) $(DEX2OAT_DEPENDENCY) $(my_out_profile_location) @echo "target dex2oat: $@" @mkdir -p $(dir $@) @mkdir -p $(dir $($(PRIVATE_2ND_ARCH_VAR_PREFIX)LIBART_TARGET_BOOT_OAT_UNSTRIPPED)) diff --git a/target/product/base.mk b/target/product/base.mk index 31075051ec..ef3937975f 100644 --- a/target/product/base.mk +++ b/target/product/base.mk @@ -159,5 +159,9 @@ PRODUCT_COPY_FILES := $(call add-to-product-copy-files-if-exists,\ PRODUCT_COPY_FILES += $(call add-to-product-copy-files-if-exists,\ frameworks/base/compiled-classes:system/etc/compiled-classes) +# Note: it is acceptable to not have a dirty-image-objects file. In that case, the special bin +# for known dirty objects in the image will be empty. +PRODUCT_COPY_FILES += $(call add-to-product-copy-files-if-exists,\ + frameworks/base/dirty-image-objects:system/etc/dirty-image-objects) $(call inherit-product, $(SRC_TARGET_DIR)/product/embedded.mk) diff --git a/target/product/core_minimal.mk b/target/product/core_minimal.mk index a40f21605b..7b5a16041c 100644 --- a/target/product/core_minimal.mk +++ b/target/product/core_minimal.mk @@ -150,6 +150,10 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += $(call add-to-product-copy-files-if-exists,\ frameworks/base/compiled-classes-phone:system/etc/compiled-classes) +# Enable dirty image object binning to reduce dirty pages in the image. +PRODUCT_COPY_FILES += $(call add-to-product-copy-files-if-exists,\ + frameworks/base/dirty-image-objects-phone:system/etc/dirty-image-objects) + # On userdebug builds, collect more tombstones by default. ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT))) PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \ From a7e336d17a4a59d908e4bae53da2a12f455b12dc Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Thu, 3 Aug 2017 01:24:17 +0000 Subject: [PATCH 014/421] Revert "Copy resources from classes.jar when using AAPT2" This reverts commit 4e165ce1712f3db0cb25fe91e5a8765e73389710. Broke builds with missing classes.jar Change-Id: I59f25a361eca1b8d8df9de4e99dfa0fc06c0fb55 --- core/definitions.mk | 11 ----------- core/package_internal.mk | 6 ------ 2 files changed, 17 deletions(-) diff --git a/core/definitions.mk b/core/definitions.mk index 8d9f7f5e8e..86bda9ea5a 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2692,17 +2692,6 @@ define add-carried-jack-resources fi endef -# Add resources (non .class files) from a jar to a package -# $(1): the package file -# $(2): the jar file -# $(3): temporary directory -define add-jar-resources-to-package - rm -rf $(3) - mkdir -p $(3) - unzip -qo $(2) -d $(3) $$(zipinfo -1 $(2) | grep -v -E "\.class$$") - $(JAR) uf $(1) -C $(3) . -endef - # Sign a package using the specified key/cert. # define sign-package diff --git a/core/package_internal.mk b/core/package_internal.mk index d8e3e83210..74dd15ed54 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -563,10 +563,7 @@ else $(my_res_package) $(LOCAL_BUILT_MODULE): PRIVATE_PRODUCT_AAPT_PREF_CONFIG := $(PRODUCT_AAPT_PREF_CONFIG) endif endif - $(LOCAL_BUILT_MODULE): PRIVATE_DONT_DELETE_JAR_DIRS := $(LOCAL_DONT_DELETE_JAR_DIRS) -$(LOCAL_BUILT_MODULE): PRIVATE_RESOURCE_INTERMEDIATES_DIR := $(intermediates.COMMON)/resources -$(LOCAL_BUILT_MODULE): PRIVATE_FULL_CLASSES_JAR := $(full_classes_jar) $(LOCAL_BUILT_MODULE) : $(jni_shared_libraries) ifdef LOCAL_USE_AAPT2 $(LOCAL_BUILT_MODULE): PRIVATE_RES_PACKAGE := $(my_res_package) @@ -595,9 +592,6 @@ ifeq ($(full_classes_jar),) $(if $(PRIVATE_EXTRA_JAR_ARGS),$(call add-java-resources-to,$@)) else # full_classes_jar $(add-dex-to-package) -ifdef LOCAL_USE_AAPT2 - $(call add-jar-resources-to-package,$@,$(PRIVATE_FULL_CLASSES_JAR),$(PRIVATE_RESOURCE_INTERMEDIATES_DIR)) -endif endif # full_classes_jar ifdef LOCAL_JACK_ENABLED $(add-carried-jack-resources) From 6fedebf9364e5af731aafc7c1a529f2e27c6725f Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Thu, 3 Aug 2017 03:17:34 +0000 Subject: [PATCH 015/421] Revert "Revert "Copy resources from classes.jar when using AAPT2"" This reverts commit a7e336d17a4a59d908e4bae53da2a12f455b12dc. Reapplies I6649f7f2fbf63ff5001f4731e22960f857726c70 with fix for jack builds. Bug: 64272170 Test: https://android-build.googleplex.com/builds/view-workplan?viewType=Table&workplanId=L93000000088657848&nodeType=Trybot Change-Id: Id66aebfc2c26a4467e6cf25e4372080882f0b286 --- core/definitions.mk | 11 +++++++++++ core/package_internal.mk | 8 ++++++++ 2 files changed, 19 insertions(+) diff --git a/core/definitions.mk b/core/definitions.mk index 86bda9ea5a..8d9f7f5e8e 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2692,6 +2692,17 @@ define add-carried-jack-resources fi endef +# Add resources (non .class files) from a jar to a package +# $(1): the package file +# $(2): the jar file +# $(3): temporary directory +define add-jar-resources-to-package + rm -rf $(3) + mkdir -p $(3) + unzip -qo $(2) -d $(3) $$(zipinfo -1 $(2) | grep -v -E "\.class$$") + $(JAR) uf $(1) -C $(3) . +endef + # Sign a package using the specified key/cert. # define sign-package diff --git a/core/package_internal.mk b/core/package_internal.mk index 74dd15ed54..c4a0d622ff 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -563,7 +563,10 @@ else $(my_res_package) $(LOCAL_BUILT_MODULE): PRIVATE_PRODUCT_AAPT_PREF_CONFIG := $(PRODUCT_AAPT_PREF_CONFIG) endif endif + $(LOCAL_BUILT_MODULE): PRIVATE_DONT_DELETE_JAR_DIRS := $(LOCAL_DONT_DELETE_JAR_DIRS) +$(LOCAL_BUILT_MODULE): PRIVATE_RESOURCE_INTERMEDIATES_DIR := $(intermediates.COMMON)/resources +$(LOCAL_BUILT_MODULE): PRIVATE_FULL_CLASSES_JAR := $(full_classes_jar) $(LOCAL_BUILT_MODULE) : $(jni_shared_libraries) ifdef LOCAL_USE_AAPT2 $(LOCAL_BUILT_MODULE): PRIVATE_RES_PACKAGE := $(my_res_package) @@ -592,6 +595,11 @@ ifeq ($(full_classes_jar),) $(if $(PRIVATE_EXTRA_JAR_ARGS),$(call add-java-resources-to,$@)) else # full_classes_jar $(add-dex-to-package) +ifdef LOCAL_USE_AAPT2 +ifndef LOCAL_JACK_ENABLED + $(call add-jar-resources-to-package,$@,$(PRIVATE_FULL_CLASSES_JAR),$(PRIVATE_RESOURCE_INTERMEDIATES_DIR)) +endif +endif endif # full_classes_jar ifdef LOCAL_JACK_ENABLED $(add-carried-jack-resources) From 6210536fb5b6e5b154fd36725876099dc5ce008c Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Thu, 13 Jul 2017 17:10:15 -0400 Subject: [PATCH 016/421] Add task for API diffs Test: make api-diff Change-Id: Ifb788069bf1d882a52e8429e056070675f866986 --- core/apidiff.mk | 177 ++++++++++++++++++++++++++++++++++++++++++ core/clear_vars.mk | 2 + core/config.mk | 1 + core/tasks/apidiff.mk | 21 +++++ 4 files changed, 201 insertions(+) create mode 100644 core/apidiff.mk create mode 100644 core/tasks/apidiff.mk diff --git a/core/apidiff.mk b/core/apidiff.mk new file mode 100644 index 0000000000..3307469006 --- /dev/null +++ b/core/apidiff.mk @@ -0,0 +1,177 @@ +# +# Copyright (C) 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +## +## +## Common to both jdiff and javadoc +## +## + +LOCAL_IS_HOST_MODULE := $(call true-or-empty,$(LOCAL_IS_HOST_MODULE)) +ifeq ($(LOCAL_IS_HOST_MODULE),true) +my_prefix := HOST_ +LOCAL_HOST_PREFIX := +else +my_prefix := TARGET_ +endif + +LOCAL_MODULE_CLASS := $(strip $(LOCAL_MODULE_CLASS)) +ifndef LOCAL_MODULE_CLASS +$(error $(LOCAL_PATH): LOCAL_MODULE_CLASS not defined) +endif + +full_src_files := $(patsubst %,$(LOCAL_PATH)/%,$(LOCAL_SRC_FILES)) +out_dir := $(OUT_DOCS)/$(LOCAL_MODULE)/api_diff/current +full_target := $(call doc-timestamp-for,$(LOCAL_MODULE)-diff) + +ifeq ($(LOCAL_IS_HOST_MODULE),true) +$(full_target): PRIVATE_BOOTCLASSPATH := +full_java_libs := $(addprefix $(HOST_OUT_JAVA_LIBRARIES)/,\ + $(addsuffix $(COMMON_JAVA_PACKAGE_SUFFIX),$(LOCAL_JAVA_LIBRARIES))) +full_java_lib_deps := $(full_java_libs) + +else + +ifneq ($(LOCAL_SDK_VERSION),) + ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),current) + # Use android_stubs_current if LOCAL_SDK_VERSION is current and no TARGET_BUILD_APPS. + LOCAL_JAVA_LIBRARIES := android_stubs_current $(LOCAL_JAVA_LIBRARIES) + $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, android_stubs_current) + else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),system_current) + LOCAL_JAVA_LIBRARIES := android_system_stubs_current $(LOCAL_JAVA_LIBRARIES) + $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, android_system_stubs_current) + else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),test_current) + LOCAL_JAVA_LIBRARIES := android_test_stubs_current $(LOCAL_JAVA_LIBRARIES) + $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, android_test_stubs_current) + else + LOCAL_JAVA_LIBRARIES := sdk_v$(LOCAL_SDK_VERSION) $(LOCAL_JAVA_LIBRARIES) + $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, sdk_v$(LOCAL_SDK_VERSION)) + endif +else + LOCAL_JAVA_LIBRARIES := core-oj core-libart ext framework $(LOCAL_JAVA_LIBRARIES) + $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, core-oj):$(call java-lib-files, core-libart) +endif # LOCAL_SDK_VERSION +LOCAL_JAVA_LIBRARIES := $(sort $(LOCAL_JAVA_LIBRARIES)) + +full_java_libs := $(call java-lib-files,$(LOCAL_JAVA_LIBRARIES)) $(LOCAL_CLASSPATH) +full_java_lib_deps := $(call java-lib-deps,$(LOCAL_JAVA_LIBRARIES)) $(LOCAL_CLASSPATH) +endif # !LOCAL_IS_HOST_MODULE + +$(full_target): PRIVATE_CLASSPATH := $(subst $(space),:,$(full_java_libs)) +$(full_target): PRIVATE_DOCLAVA_CLASSPATH := $(HOST_OUT_JAVA_LIBRARIES)/jsilver$(COMMON_JAVA_PACKAGE_SUFFIX):$(HOST_OUT_JAVA_LIBRARIES)/doclava$(COMMON_JAVA_PACKAGE_SUFFIX) + +intermediates.COMMON := $(call local-intermediates-dir,COMMON) + +$(full_target): PRIVATE_SOURCE_PATH := $(call normalize-path-list,$(LOCAL_DROIDDOC_SOURCE_PATH)) +$(full_target): PRIVATE_JAVA_FILES := $(filter %.java,$(full_src_files)) +$(full_target): PRIVATE_JAVA_FILES += $(addprefix $($(my_prefix)OUT_COMMON_INTERMEDIATES)/, $(filter %.java,$(LOCAL_INTERMEDIATE_SOURCES))) +$(full_target): PRIVATE_SOURCE_INTERMEDIATES_DIR := $(intermediates.COMMON)/src +$(full_target): PRIVATE_SRC_LIST_FILE := $(intermediates.COMMON)/droiddoc-src-list + +ifneq ($(strip $(LOCAL_ADDITIONAL_JAVA_DIR)),) +$(full_target): PRIVATE_ADDITIONAL_JAVA_DIR := $(LOCAL_ADDITIONAL_JAVA_DIR) +endif + +# Lists the input files for the doc build into a text file +# suitable for the @ syntax of javadoc. +# $(1): the file to create +# $(2): files to include +# $(3): list of directories to search for java files in +define prepare-doc-source-list +$(hide) mkdir -p $(dir $(1)) +$(call dump-words-to-file, $(2), $(1)) +$(hide) for d in $(3) ; do find $$d -name '*.java' -and -not -name '.*' >> $(1) 2> /dev/null ; done ; true +endef + +## +## +## jdiff only +## +## + +jdiff := \ + $(HOST_JDK_TOOLS_JAR) \ + $(HOST_OUT_JAVA_LIBRARIES)/jdiff$(COMMON_JAVA_PACKAGE_SUFFIX) + +doclava := \ + $(HOST_JDK_TOOLS_JAR) \ + $(HOST_OUT_JAVA_LIBRARIES)/doclava$(COMMON_JAVA_PACKAGE_SUFFIX) + +$(full_target): PRIVATE_NEWAPI := $(LOCAL_APIDIFF_NEWAPI) +$(full_target): PRIVATE_OLDAPI := $(LOCAL_APIDIFF_OLDAPI) +$(full_target): PRIVATE_OUT_DIR := $(out_dir) +$(full_target): PRIVATE_OUT_NEWAPI := $(out_dir)/current.xml +$(full_target): PRIVATE_OUT_OLDAPI := $(out_dir)/$(notdir $(basename $(LOCAL_APIDIFF_OLDAPI))).xml +$(full_target): PRIVATE_DOCLETPATH := $(HOST_OUT_JAVA_LIBRARIES)/jdiff$(COMMON_JAVA_PACKAGE_SUFFIX) +$(full_target): \ + $(full_src_files) \ + $(full_java_lib_deps) \ + $(jdiff) \ + $(doclava) \ + $(LOCAL_MODULE)-docs \ + $(LOCAL_ADDITIONAL_DEPENDENCIES) + @echo Generating API diff: $(PRIVATE_OUT_DIR) + @echo Old API: $(PRIVATE_OLDAPI) + @echo New API: $(PRIVATE_NEWAPI) + @echo Old XML: $(PRIVATE_OUT_OLDAPI) + @echo New XML: $(PRIVATE_OUT_NEWAPI) + $(hide) mkdir -p $(dir $@) + @echo Converting API files to XML... + $(hide) mkdir -p $(PRIVATE_OUT_DIR) + $(hide) ( \ + $(JAVA) \ + $(addprefix -classpath ,$(PRIVATE_CLASSPATH):$(PRIVATE_DOCLAVA_CLASSPATH):$(PRIVATE_BOOTCLASSPATH):$(HOST_JDK_TOOLS_JAR)) \ + com.google.doclava.apicheck.ApiCheck \ + -convert2xml \ + $(basename $(PRIVATE_NEWAPI)).txt \ + $(basename $(PRIVATE_OUT_NEWAPI)).xml \ + ) || (rm -rf $(PRIVATE_OUT_DIR) $(PRIVATE_SRC_LIST_FILE); exit 45) + $(hide) ( \ + $(JAVA) \ + $(addprefix -classpath ,$(PRIVATE_CLASSPATH):$(PRIVATE_DOCLAVA_CLASSPATH):$(PRIVATE_BOOTCLASSPATH):$(HOST_JDK_TOOLS_JAR)) \ + com.google.doclava.apicheck.ApiCheck \ + -convert2xml \ + $(basename $(PRIVATE_OLDAPI)).txt \ + $(basename $(PRIVATE_OUT_OLDAPI)).xml \ + ) || (rm -rf $(PRIVATE_OUT_DIR) $(PRIVATE_SRC_LIST_FILE); exit 45) + @echo Running JDiff... + $(call prepare-doc-source-list,$(PRIVATE_SRC_LIST_FILE),$(PRIVATE_JAVA_FILES), \ + $(PRIVATE_SOURCE_INTERMEDIATES_DIR) $(PRIVATE_ADDITIONAL_JAVA_DIR)) + $(hide) ( \ + $(JAVADOC) \ + -encoding UTF-8 \ + \@$(PRIVATE_SRC_LIST_FILE) \ + -J-Xmx1600m \ + -XDignore.symbol.file \ + -quiet \ + -doclet jdiff.JDiff \ + -docletpath $(PRIVATE_DOCLETPATH) \ + $(addprefix -bootclasspath ,$(PRIVATE_BOOTCLASSPATH)) \ + $(addprefix -classpath ,$(PRIVATE_CLASSPATH)) \ + -sourcepath $(PRIVATE_SOURCE_PATH)$(addprefix :,$(PRIVATE_CLASSPATH)) \ + -d $(PRIVATE_OUT_DIR) \ + -newapi $(notdir $(basename $(PRIVATE_OUT_NEWAPI))) \ + -newapidir $(dir $(PRIVATE_OUT_NEWAPI)) \ + -oldapi $(notdir $(basename $(PRIVATE_OUT_OLDAPI))) \ + -oldapidir $(dir $(PRIVATE_OUT_OLDAPI)) \ + -javadocnew ../../../reference/ \ + && touch -f $@ \ + ) || (rm -rf $(PRIVATE_OUT_DIR) $(PRIVATE_SRC_LIST_FILE); exit 45) + +ALL_DOCS += $(full_target) + +.PHONY: $(LOCAL_MODULE)-diff +$(LOCAL_MODULE)-diff : $(full_target) diff --git a/core/clear_vars.mk b/core/clear_vars.mk index 6ac2602011..d2e7a6cada 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -14,6 +14,8 @@ LOCAL_AIDL_INCLUDES:= LOCAL_ALLOW_UNDEFINED_SYMBOLS:= LOCAL_ANNOTATION_PROCESSORS:= LOCAL_ANNOTATION_PROCESSOR_CLASSES:= +LOCAL_APIDIFF_NEWAPI:= +LOCAL_APIDIFF_OLDAPI:= LOCAL_APK_LIBRARIES:= LOCAL_ARM_MODE:= LOCAL_ASFLAGS:= diff --git a/core/config.mk b/core/config.mk index 80f74871bf..c17b0f56fa 100644 --- a/core/config.mk +++ b/core/config.mk @@ -112,6 +112,7 @@ BUILD_JAVA_LIBRARY:= $(BUILD_SYSTEM)/java_library.mk BUILD_STATIC_JAVA_LIBRARY:= $(BUILD_SYSTEM)/static_java_library.mk BUILD_HOST_JAVA_LIBRARY:= $(BUILD_SYSTEM)/host_java_library.mk BUILD_DROIDDOC:= $(BUILD_SYSTEM)/droiddoc.mk +BUILD_APIDIFF:= $(BUILD_SYSTEM)/apidiff.mk BUILD_COPY_HEADERS := $(BUILD_SYSTEM)/copy_headers.mk BUILD_NATIVE_TEST := $(BUILD_SYSTEM)/native_test.mk BUILD_NATIVE_BENCHMARK := $(BUILD_SYSTEM)/native_benchmark.mk diff --git a/core/tasks/apidiff.mk b/core/tasks/apidiff.mk new file mode 100644 index 0000000000..4eb59afbb9 --- /dev/null +++ b/core/tasks/apidiff.mk @@ -0,0 +1,21 @@ +# Copyright (C) 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# Rules for building API diffs. +# + +.PHONY: api-diff + +api-diff: offline-sdk-referenceonly-diff From b267e519393590446bbaa2c0e916128039234117 Mon Sep 17 00:00:00 2001 From: Roozbeh Pournader Date: Wed, 9 Aug 2017 12:42:17 -0700 Subject: [PATCH 017/421] Remove locales_full.mk The file was old and a source of confusion. languages_full.mk should be used instead. Change-Id: I904ff7687cbaa1f9ccdb7f0e3c3e3334d31421e8 Fixes: 64527460 Test: make -j checkbuild --- target/product/full_base.mk | 2 +- target/product/locales_full.mk | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) delete mode 100644 target/product/locales_full.mk diff --git a/target/product/full_base.mk b/target/product/full_base.mk index 65bdf0f1b4..f8e9b2ac6e 100644 --- a/target/product/full_base.mk +++ b/target/product/full_base.mk @@ -52,7 +52,7 @@ $(call inherit-product-if-exists, frameworks/base/data/sounds/AllAudio.mk) $(call inherit-product-if-exists, external/svox/pico/lang/all_pico_languages.mk) # Get a list of languages. -$(call inherit-product, $(SRC_TARGET_DIR)/product/locales_full.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk) # Get everything else from the parent package $(call inherit-product, $(SRC_TARGET_DIR)/product/generic_no_telephony.mk) diff --git a/target/product/locales_full.mk b/target/product/locales_full.mk deleted file mode 100644 index 3a90d2b885..0000000000 --- a/target/product/locales_full.mk +++ /dev/null @@ -1,3 +0,0 @@ -PRODUCT_LOCALES := en_US cs_CZ da_DK de_AT de_CH de_DE de_LI el_GR en_AU en_CA en_GB en_NZ en_SG eo_EU 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) From 7bfc57a9bb0ff963fd60a7311b1b924dcf85cc77 Mon Sep 17 00:00:00 2001 From: Bowgo Tsai Date: Fri, 28 Jul 2017 20:22:05 +0800 Subject: [PATCH 018/421] Copy adbd from system/bin to recovery/root/sbin This change will be submitted with other changes moving adbd from root/sbin to system/bin. We need to copy it specifically to recovery root. Previously it was copied by rsync $(TARGET_ROOT_OUT) $(TARGET_RECOVERY_OUT). Bug: 63910933 Test: normal boot sailfish, checks adb works Test: recovery boot sailfish, checks adb works Test: normal boot bullhead, checks adb works Test: recovery boot bullhead, checks adb works Change-Id: Ib49605f97a190aec2648cb000d1159b6e15db673 --- CleanSpec.mk | 4 ++++ core/Makefile | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CleanSpec.mk b/CleanSpec.mk index 6a3e53e393..63d6f666c7 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -428,6 +428,10 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/nativetest*) $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/*/*/classes*.jack) $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/*/*/jack*) +# Move adbd from $(PRODUCT_OUT)/root/sbin to $(PRODUCT_OUT)/system/bin +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/root/sbin/adbd) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/symbols/sbin/adbd) + # ************************************************ # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST # ************************************************ diff --git a/core/Makefile b/core/Makefile index 0123a3fabd..0885326a4b 100644 --- a/core/Makefile +++ b/core/Makefile @@ -1198,6 +1198,8 @@ define build-recoveryimage-target @echo Copying baseline ramdisk... # Use rsync because "cp -Rf" fails to overwrite broken symlinks on Mac. $(hide) rsync -a --exclude=etc --exclude=sdcard $(IGNORE_RECOVERY_SEPOLICY) $(IGNORE_CACHE_LINK) $(TARGET_ROOT_OUT) $(TARGET_RECOVERY_OUT) + # Copy adbd from system/bin to recovery/root/sbin + $(hide) cp -f $(TARGET_OUT_EXECUTABLES)/adbd $(TARGET_RECOVERY_ROOT_OUT)/sbin/adbd @echo Modifying ramdisk contents... $(if $(BOARD_RECOVERY_KERNEL_MODULES), \ $(call build-image-kernel-modules,$(BOARD_RECOVERY_KERNEL_MODULES),$(TARGET_RECOVERY_ROOT_OUT),,$(call intermediates-dir-for,PACKAGING,depmod_recovery))) @@ -1252,6 +1254,8 @@ define build-recoveryimage-target @echo ----- Made recovery image: $(1) -------- endef +ADBD := $(TARGET_OUT_EXECUTABLES)/adbd + ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true) ifeq (true,$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_BOOT_SIGNER)) $(INSTALLED_BOOTIMAGE_TARGET) : $(BOOT_SIGNER) @@ -1262,7 +1266,7 @@ endif ifeq (true,$(BOARD_AVB_ENABLE)) $(INSTALLED_BOOTIMAGE_TARGET) : $(AVBTOOL) $(BOARD_AVB_BOOT_KEY_PATH) endif -$(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \ +$(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) $(ADBD) \ $(INSTALLED_RAMDISK_TARGET) \ $(INTERNAL_RECOVERYIMAGE_FILES) \ $(recovery_initrc) $(recovery_sepolicy) $(recovery_kernel) \ @@ -1277,7 +1281,7 @@ $(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \ $(call build-recoveryimage-target, $@) endif -$(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \ +$(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) $(ADBD) \ $(INSTALLED_RAMDISK_TARGET) \ $(INSTALLED_BOOTIMAGE_TARGET) \ $(INTERNAL_RECOVERYIMAGE_FILES) \ From 11de0ee8d5833b5d7415f81cd502912f4e173bdf Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Mon, 14 Aug 2017 17:18:51 -0700 Subject: [PATCH 019/421] Add default Settings Intelligence to package list. Bug: 64692910 Test: builds Change-Id: If3dedcfa1b5e7b926a87c0bf91484fb840b1b9b8 --- target/product/core.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/target/product/core.mk b/target/product/core.mk index a2b0f1c551..3771b7ea9c 100644 --- a/target/product/core.mk +++ b/target/product/core.mk @@ -53,6 +53,7 @@ PRODUCT_PACKAGES += \ ProxyHandler \ QuickSearchBox \ Settings \ + SettingsIntelligence \ SharedStorageBackup \ StorageManager \ Telecom \ From 86d0b1421351452192d6b2e2a15440ec0fe3a247 Mon Sep 17 00:00:00 2001 From: Adam Lesinski Date: Wed, 16 Aug 2017 15:52:53 -0700 Subject: [PATCH 020/421] Enable apps to build with resource namespaces Setting LOCAL_AAPT_NAMESPACES := true enables namespaces for an app and requires any library resources to be fully qualified by their package. Test: manual Change-Id: Ia6bfc82ee8b8d6335f8e7c2abe94ce36467a012d --- core/clear_vars.mk | 1 + core/package_internal.mk | 7 ++++++- core/static_java_library.mk | 5 ++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/core/clear_vars.mk b/core/clear_vars.mk index a6878669c5..750e8cef22 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -6,6 +6,7 @@ LOCAL_32_BIT_ONLY:= LOCAL_AAPT_FLAGS:= LOCAL_AAPT_INCLUDE_ALL_RESOURCES:= +LOCAL_AAPT_NAMESPACES:= LOCAL_ADDITIONAL_CERTIFICATES:= LOCAL_ADDITIONAL_DEPENDENCIES:= LOCAL_ADDITIONAL_HTML_DIR:= diff --git a/core/package_internal.mk b/core/package_internal.mk index 39b58ea577..6611470d6d 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -406,8 +406,13 @@ endif # renderscript_target_api < 21 endif # renderscript_target_api is set my_asset_dirs := $(LOCAL_ASSET_DIR) my_full_asset_paths := $(all_assets) + # Add AAPT2 link specific flags. -$(my_res_package): PRIVATE_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) --no-static-lib-packages +$(my_res_package): PRIVATE_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) +ifndef LOCAL_AAPT_NAMESPACES + $(my_res_package): PRIVATE_AAPT_FLAGS += --no-static-lib-packages +endif + include $(BUILD_SYSTEM)/aapt2.mk else # LOCAL_USE_AAPT2 diff --git a/core/static_java_library.mk b/core/static_java_library.mk index 1373011d83..1e7401468a 100644 --- a/core/static_java_library.mk +++ b/core/static_java_library.mk @@ -128,7 +128,10 @@ endif # add --non-constant-id to prevent inlining constants. # AAR needs text symbol file R.txt. ifdef LOCAL_USE_AAPT2 -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) --static-lib --no-static-lib-packages +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) --static-lib +ifndef LOCAL_AAPT_NAMESPACES + $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_AAPT_FLAGS += --no-static-lib-packages +endif $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_PRODUCT_AAPT_CONFIG := $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_PRODUCT_AAPT_PREF_CONFIG := $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_AAPT_CHARACTERISTICS := From 9c3125e983c690d90d9b3bc19c7d7fe0da9c2cf9 Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Thu, 17 Aug 2017 16:40:07 -0400 Subject: [PATCH 021/421] Fix tabs in apidiff.mk Prevent "parse error in an unevaluated line" warnings at compile time. Test: make -j32 Change-Id: I318ce38c7af62b7ed12049775825db9a146b3375 --- core/apidiff.mk | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/core/apidiff.mk b/core/apidiff.mk index 3307469006..1a7467d952 100644 --- a/core/apidiff.mk +++ b/core/apidiff.mk @@ -47,18 +47,18 @@ else ifneq ($(LOCAL_SDK_VERSION),) ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),current) - # Use android_stubs_current if LOCAL_SDK_VERSION is current and no TARGET_BUILD_APPS. - LOCAL_JAVA_LIBRARIES := android_stubs_current $(LOCAL_JAVA_LIBRARIES) - $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, android_stubs_current) + # Use android_stubs_current if LOCAL_SDK_VERSION is current and no TARGET_BUILD_APPS. + LOCAL_JAVA_LIBRARIES := android_stubs_current $(LOCAL_JAVA_LIBRARIES) + $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, android_stubs_current) else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),system_current) - LOCAL_JAVA_LIBRARIES := android_system_stubs_current $(LOCAL_JAVA_LIBRARIES) - $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, android_system_stubs_current) + LOCAL_JAVA_LIBRARIES := android_system_stubs_current $(LOCAL_JAVA_LIBRARIES) + $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, android_system_stubs_current) else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),test_current) - LOCAL_JAVA_LIBRARIES := android_test_stubs_current $(LOCAL_JAVA_LIBRARIES) - $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, android_test_stubs_current) + LOCAL_JAVA_LIBRARIES := android_test_stubs_current $(LOCAL_JAVA_LIBRARIES) + $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, android_test_stubs_current) else - LOCAL_JAVA_LIBRARIES := sdk_v$(LOCAL_SDK_VERSION) $(LOCAL_JAVA_LIBRARIES) - $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, sdk_v$(LOCAL_SDK_VERSION)) + LOCAL_JAVA_LIBRARIES := sdk_v$(LOCAL_SDK_VERSION) $(LOCAL_JAVA_LIBRARIES) + $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, sdk_v$(LOCAL_SDK_VERSION)) endif else LOCAL_JAVA_LIBRARIES := core-oj core-libart ext framework $(LOCAL_JAVA_LIBRARIES) From 8fe458751e8d97920de622c0d83e30d1cc600ede Mon Sep 17 00:00:00 2001 From: Bowgo Tsai Date: Fri, 18 Aug 2017 04:33:12 +0000 Subject: [PATCH 022/421] Revert "Copy adbd from system/bin to recovery/root/sbin" This reverts commit 7bfc57a9bb0ff963fd60a7311b1b924dcf85cc77. Change-Id: I7d74bbef8e443ff664b87656b5704e732fa96113 --- CleanSpec.mk | 4 ---- core/Makefile | 8 ++------ 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/CleanSpec.mk b/CleanSpec.mk index 63d6f666c7..6a3e53e393 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -428,10 +428,6 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/nativetest*) $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/*/*/classes*.jack) $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/*/*/jack*) -# Move adbd from $(PRODUCT_OUT)/root/sbin to $(PRODUCT_OUT)/system/bin -$(call add-clean-step, rm -rf $(PRODUCT_OUT)/root/sbin/adbd) -$(call add-clean-step, rm -rf $(PRODUCT_OUT)/symbols/sbin/adbd) - # ************************************************ # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST # ************************************************ diff --git a/core/Makefile b/core/Makefile index 0885326a4b..0123a3fabd 100644 --- a/core/Makefile +++ b/core/Makefile @@ -1198,8 +1198,6 @@ define build-recoveryimage-target @echo Copying baseline ramdisk... # Use rsync because "cp -Rf" fails to overwrite broken symlinks on Mac. $(hide) rsync -a --exclude=etc --exclude=sdcard $(IGNORE_RECOVERY_SEPOLICY) $(IGNORE_CACHE_LINK) $(TARGET_ROOT_OUT) $(TARGET_RECOVERY_OUT) - # Copy adbd from system/bin to recovery/root/sbin - $(hide) cp -f $(TARGET_OUT_EXECUTABLES)/adbd $(TARGET_RECOVERY_ROOT_OUT)/sbin/adbd @echo Modifying ramdisk contents... $(if $(BOARD_RECOVERY_KERNEL_MODULES), \ $(call build-image-kernel-modules,$(BOARD_RECOVERY_KERNEL_MODULES),$(TARGET_RECOVERY_ROOT_OUT),,$(call intermediates-dir-for,PACKAGING,depmod_recovery))) @@ -1254,8 +1252,6 @@ define build-recoveryimage-target @echo ----- Made recovery image: $(1) -------- endef -ADBD := $(TARGET_OUT_EXECUTABLES)/adbd - ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true) ifeq (true,$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_BOOT_SIGNER)) $(INSTALLED_BOOTIMAGE_TARGET) : $(BOOT_SIGNER) @@ -1266,7 +1262,7 @@ endif ifeq (true,$(BOARD_AVB_ENABLE)) $(INSTALLED_BOOTIMAGE_TARGET) : $(AVBTOOL) $(BOARD_AVB_BOOT_KEY_PATH) endif -$(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) $(ADBD) \ +$(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \ $(INSTALLED_RAMDISK_TARGET) \ $(INTERNAL_RECOVERYIMAGE_FILES) \ $(recovery_initrc) $(recovery_sepolicy) $(recovery_kernel) \ @@ -1281,7 +1277,7 @@ $(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) $(ADBD) \ $(call build-recoveryimage-target, $@) endif -$(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) $(ADBD) \ +$(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \ $(INSTALLED_RAMDISK_TARGET) \ $(INSTALLED_BOOTIMAGE_TARGET) \ $(INTERNAL_RECOVERYIMAGE_FILES) \ From 7ea726d2b9eb76013f4e0c36508ca597bb7f2834 Mon Sep 17 00:00:00 2001 From: Jeff Vander Stoep Date: Tue, 22 Aug 2017 13:21:44 -0700 Subject: [PATCH 023/421] embedded.mk: move dependencies to sepolicy Some selinux build packages are defined in embedded.mk, others are defined in system/sepolicy/Android.mk. Move all to sepolicy as a dependency of the phony package selinux_policy which is defined in embedded.mk. Test: build Marlin (Treble) and Angler (non-Treble) Change-Id: I734c2909354349d146c6f78beb74bd990d9af30d (cherry picked from commit 2430b029d099dde8e1a8bc2f13a255272670a397) --- target/product/embedded.mk | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/target/product/embedded.mk b/target/product/embedded.mk index aefba439a9..17d4a20132 100644 --- a/target/product/embedded.mk +++ b/target/product/embedded.mk @@ -86,20 +86,10 @@ PRODUCT_PACKAGES += \ system_manifest.xml \ system_compatibility_matrix.xml \ -# SELinux packages +# SELinux packages are added as dependencies of the selinux_policy +# phony package. PRODUCT_PACKAGES += \ - nonplat_mac_permissions.xml \ - nonplat_property_contexts \ - nonplat_seapp_contexts \ - nonplat_service_contexts \ - nonplat_hwservice_contexts \ - plat_mac_permissions.xml \ - plat_property_contexts \ - plat_seapp_contexts \ - plat_service_contexts \ - plat_hwservice_contexts \ selinux_policy \ - vndservice_contexts # AID Generation for # and From 7cce9df82e6346d8c3d9cfab3e0fde9ef8b29d2a Mon Sep 17 00:00:00 2001 From: SzuWei Lin Date: Thu, 24 Aug 2017 12:03:13 +0800 Subject: [PATCH 024/421] Normalize the 2nd CPU architect of 64 bits arm GSI In order to let GSI more generic. Normalize the 64 bits arm GSI to be: TARGET_2ND_ARCH_VARIANT := armv8-a TARGET_2ND_CPU_VARIANT := generic Bug: 64775084 Test: Build pass and boot to home screen Change-Id: I1dd5aa8524c1d243f832372bf7e3e64fae09e945 --- target/board/generic_arm64_a/BoardConfig.mk | 2 +- target/board/generic_arm64_ab/BoardConfig.mk | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/target/board/generic_arm64_a/BoardConfig.mk b/target/board/generic_arm64_a/BoardConfig.mk index 4729744736..34a8ac0012 100644 --- a/target/board/generic_arm64_a/BoardConfig.mk +++ b/target/board/generic_arm64_a/BoardConfig.mk @@ -23,7 +23,7 @@ TARGET_CPU_ABI2 := TARGET_CPU_VARIANT := generic TARGET_2ND_ARCH := arm -TARGET_2ND_ARCH_VARIANT := armv7-a-neon +TARGET_2ND_ARCH_VARIANT := armv8-a TARGET_2ND_CPU_ABI := armeabi-v7a TARGET_2ND_CPU_ABI2 := armeabi TARGET_2ND_CPU_VARIANT := generic diff --git a/target/board/generic_arm64_ab/BoardConfig.mk b/target/board/generic_arm64_ab/BoardConfig.mk index 1cab844744..ea5cc964dd 100644 --- a/target/board/generic_arm64_ab/BoardConfig.mk +++ b/target/board/generic_arm64_ab/BoardConfig.mk @@ -23,11 +23,10 @@ TARGET_CPU_ABI2 := TARGET_CPU_VARIANT := generic TARGET_2ND_ARCH := arm -TARGET_2ND_ARCH_VARIANT := armv7-a-neon +TARGET_2ND_ARCH_VARIANT := armv8-a TARGET_2ND_CPU_ABI := armeabi-v7a TARGET_2ND_CPU_ABI2 := armeabi -# TODO(jiyong) can we set krait here? -TARGET_2ND_CPU_VARIANT := cortex-a15 +TARGET_2ND_CPU_VARIANT := generic # Enable A/B update TARGET_NO_RECOVERY := true From 204dd14a2ca2483fd6da4d98dfc7a2910564c076 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Wed, 9 Aug 2017 16:24:02 -0700 Subject: [PATCH 025/421] Use java variables from soong Use TARGET_JAVAC and HOST_JAVAC exported from soong. Test: m -j checkbuild Change-Id: Ic094174149ea304c0b06ddc023417acf3602d5a3 --- core/combo/javac.mk | 37 +++++-------------------------------- 1 file changed, 5 insertions(+), 32 deletions(-) diff --git a/core/combo/javac.mk b/core/combo/javac.mk index 0538c5299d..835ee82709 100644 --- a/core/combo/javac.mk +++ b/core/combo/javac.mk @@ -1,12 +1,11 @@ # Selects a Java compiler. # # Inputs: -# CUSTOM_JAVA_COMPILER -- "eclipse", "openjdk". or nothing for the system -# default -# ALTERNATE_JAVAC -- the alternate java compiler to use +# OVERRIDE_ANDROID_JAVA_HOME -- alternate location to use for jdk # # Outputs: -# COMMON_JAVAC -- Java compiler command with common arguments +# ANDROID_JAVA_HOME -- Directory that contains JDK +# ANDROID_JAVA_TOOLCHAIN -- Directory that contains javac and other java tools # ifndef ANDROID_COMPILE_WITH_JACK @@ -23,8 +22,6 @@ ifndef ANDROID_COMPILE_WITH_JACK endif endif -common_jdk_flags := -Xmaxerrs 9999999 - ifeq ($(OVERRIDE_ANDROID_JAVA_HOME),) ANDROID_JAVA_HOME := prebuilts/jdk/jdk8/$(HOST_PREBUILT_TAG) else @@ -34,30 +31,6 @@ endif ANDROID_JAVA_TOOLCHAIN := $(ANDROID_JAVA_HOME)/bin export JAVA_HOME := $(abspath $(ANDROID_JAVA_HOME)) -# Use the indexer wrapper to index the codebase instead of the javac compiler -ifeq ($(ALTERNATE_JAVAC),) -JAVACC := $(ANDROID_JAVA_TOOLCHAIN)/javac -else -JAVACC := $(ALTERNATE_JAVAC) -endif - +# TODO(ccross): remove this, it is needed for now because it is used by +# config.mk before makevars from soong are loaded JAVA := $(ANDROID_JAVA_TOOLCHAIN)/java -JAVADOC := $(ANDROID_JAVA_TOOLCHAIN)/javadoc -JAR := $(ANDROID_JAVA_TOOLCHAIN)/jar - -# The actual compiler can be wrapped by setting the JAVAC_WRAPPER var. -ifdef JAVAC_WRAPPER - ifneq ($(JAVAC_WRAPPER),$(firstword $(JAVACC))) - JAVACC := $(JAVAC_WRAPPER) $(JAVACC) - endif -endif - -COMMON_JAVAC := $(JAVACC) -J-Xmx2048M $(common_jdk_flags) - -GLOBAL_JAVAC_DEBUG_FLAGS := -g - -HOST_JAVAC ?= $(COMMON_JAVAC) -TARGET_JAVAC ?= $(COMMON_JAVAC) - -#$(info HOST_JAVAC=$(HOST_JAVAC)) -#$(info TARGET_JAVAC=$(TARGET_JAVAC)) From 20f0f86e07d741ff15e1367e7e0888b1cfcff91f Mon Sep 17 00:00:00 2001 From: Mathieu Chartier Date: Mon, 28 Aug 2017 14:19:35 -0700 Subject: [PATCH 026/421] Allow system server jars for WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY Renamed WITH_DEXPREOPT_BOOT_IMG_ONLY to WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY and changed the behavior accordingly. Preopt system server jars since selinux prevents system server from loading anything from /data. If we don't do this they will need to be extracted which is not favorable for RAM usage or performance. Test: make and flash and look at system server maps Bug: 65122284 Bug: 62356545 (cherry picked from commit 418258cee9d8b97dcff17653de562e465957d360) Change-Id: I2e70c80a86327b455450b95144f21020e7bf0c6f --- core/dex_preopt.mk | 6 +++--- core/dex_preopt_odex_install.mk | 9 ++++++--- core/product.mk | 2 +- target/board/generic/BoardConfig.mk | 2 +- target/board/generic_arm64/BoardConfig.mk | 2 +- target/board/generic_mips/BoardConfig.mk | 2 +- target/board/generic_mips64/BoardConfig.mk | 2 +- target/board/generic_x86/BoardConfig.mk | 2 +- target/board/generic_x86_64/BoardConfig.mk | 2 +- target/board/generic_x86_arm/BoardConfig.mk | 2 +- 10 files changed, 17 insertions(+), 14 deletions(-) diff --git a/core/dex_preopt.mk b/core/dex_preopt.mk index 439f7e5659..09c8311503 100644 --- a/core/dex_preopt.mk +++ b/core/dex_preopt.mk @@ -35,10 +35,10 @@ endif # Conditional to building on linux, as dex2oat currently does not work on darwin. ifeq ($(HOST_OS),linux) WITH_DEXPREOPT ?= true -# For an eng build only pre-opt the boot image. This gives reasonable performance and still -# allows a simple workflow: building in frameworks/base and syncing. +# For an eng build only pre-opt the boot image and system server. This gives reasonable performance +# and still allows a simple workflow: building in frameworks/base and syncing. ifeq (eng,$(TARGET_BUILD_VARIANT)) - WITH_DEXPREOPT_BOOT_IMG_ONLY ?= true + WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY ?= true endif # Add mini-debug-info to the boot classpath unless explicitly asked not to. ifneq (false,$(WITH_DEXPREOPT_DEBUG_INFO)) diff --git a/core/dex_preopt_odex_install.mk b/core/dex_preopt_odex_install.mk index 032c5d350b..cfcfca5021 100644 --- a/core/dex_preopt_odex_install.mk +++ b/core/dex_preopt_odex_install.mk @@ -33,9 +33,12 @@ endif ifeq (,$(strip $(built_dex)$(my_prebuilt_src_file))) # contains no java code LOCAL_DEX_PREOPT := endif -# if WITH_DEXPREOPT_BOOT_IMG_ONLY=true and module is not in boot class path skip -ifeq (true,$(WITH_DEXPREOPT_BOOT_IMG_ONLY)) -ifeq ($(filter $(DEXPREOPT_BOOT_JARS_MODULES),$(LOCAL_MODULE)),) +# if WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY=true and module is not in boot class path skip +# Also preopt system server jars since selinux prevents system server from loading anything from +# /data. If we don't do this they will need to be extracted which is not favorable for RAM usage +# or performance. +ifeq (true,$(WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY)) +ifeq ($(filter $(PRODUCT_SYSTEM_SERVER_JARS) $(DEXPREOPT_BOOT_JARS_MODULES),$(LOCAL_MODULE)),) LOCAL_DEX_PREOPT := endif endif diff --git a/core/product.mk b/core/product.mk index 1a0e8c6a61..8c24ae7f71 100644 --- a/core/product.mk +++ b/core/product.mk @@ -303,7 +303,7 @@ _product_stash_var_list += \ _product_stash_var_list += \ DEFAULT_SYSTEM_DEV_CERTIFICATE \ WITH_DEXPREOPT \ - WITH_DEXPREOPT_BOOT_IMG_ONLY \ + WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY \ WITH_DEXPREOPT_APP_IMAGE # diff --git a/target/board/generic/BoardConfig.mk b/target/board/generic/BoardConfig.mk index 8bb3ed0d90..331f082196 100644 --- a/target/board/generic/BoardConfig.mk +++ b/target/board/generic/BoardConfig.mk @@ -34,7 +34,7 @@ USE_CAMERA_STUB := true ifeq ($(HOST_OS),linux) ifeq ($(WITH_DEXPREOPT),) WITH_DEXPREOPT := true - WITH_DEXPREOPT_BOOT_IMG_ONLY := false + WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY := false endif endif diff --git a/target/board/generic_arm64/BoardConfig.mk b/target/board/generic_arm64/BoardConfig.mk index 2feba6b821..d6df2cfd19 100644 --- a/target/board/generic_arm64/BoardConfig.mk +++ b/target/board/generic_arm64/BoardConfig.mk @@ -65,7 +65,7 @@ USE_CAMERA_STUB := true ifeq ($(HOST_OS),linux) ifeq ($(WITH_DEXPREOPT),) WITH_DEXPREOPT := true - WITH_DEXPREOPT_BOOT_IMG_ONLY := false + WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY := false endif endif diff --git a/target/board/generic_mips/BoardConfig.mk b/target/board/generic_mips/BoardConfig.mk index a9e46b42a3..fb66d21f89 100644 --- a/target/board/generic_mips/BoardConfig.mk +++ b/target/board/generic_mips/BoardConfig.mk @@ -42,7 +42,7 @@ USE_CAMERA_STUB := true ifeq ($(HOST_OS),linux) ifeq ($(WITH_DEXPREOPT),) WITH_DEXPREOPT := true - WITH_DEXPREOPT_BOOT_IMG_ONLY := false + WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY := false endif endif diff --git a/target/board/generic_mips64/BoardConfig.mk b/target/board/generic_mips64/BoardConfig.mk index 6cb6c11a57..67bb51f715 100644 --- a/target/board/generic_mips64/BoardConfig.mk +++ b/target/board/generic_mips64/BoardConfig.mk @@ -57,7 +57,7 @@ USE_CAMERA_STUB := true ifeq ($(HOST_OS),linux) ifeq ($(WITH_DEXPREOPT),) WITH_DEXPREOPT := true - WITH_DEXPREOPT_BOOT_IMG_ONLY := false + WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY := false endif endif diff --git a/target/board/generic_x86/BoardConfig.mk b/target/board/generic_x86/BoardConfig.mk index bb2166b536..000a9a310e 100644 --- a/target/board/generic_x86/BoardConfig.mk +++ b/target/board/generic_x86/BoardConfig.mk @@ -22,7 +22,7 @@ USE_CAMERA_STUB := true # of an SDK AVD. Note that this operation only works on Linux for now ifeq ($(HOST_OS),linux) WITH_DEXPREOPT ?= true -WITH_DEXPREOPT_BOOT_IMG_ONLY ?= false +WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY ?= false endif TARGET_USES_HWC2 := true diff --git a/target/board/generic_x86_64/BoardConfig.mk b/target/board/generic_x86_64/BoardConfig.mk index b49a10ca01..883dd2e5c4 100755 --- a/target/board/generic_x86_64/BoardConfig.mk +++ b/target/board/generic_x86_64/BoardConfig.mk @@ -28,7 +28,7 @@ USE_CAMERA_STUB := true # of an SDK AVD. Note that this operation only works on Linux for now ifeq ($(HOST_OS),linux) WITH_DEXPREOPT ?= true -WITH_DEXPREOPT_BOOT_IMG_ONLY ?= false +WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY ?= false endif TARGET_USES_HWC2 := true diff --git a/target/board/generic_x86_arm/BoardConfig.mk b/target/board/generic_x86_arm/BoardConfig.mk index 4555f1f07f..131c0014ff 100644 --- a/target/board/generic_x86_arm/BoardConfig.mk +++ b/target/board/generic_x86_arm/BoardConfig.mk @@ -39,7 +39,7 @@ USE_CAMERA_STUB := true ifeq ($(HOST_OS),linux) ifeq ($(WITH_DEXPREOPT),) WITH_DEXPREOPT := true - WITH_DEXPREOPT_BOOT_IMG_ONLY := false + WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY := false endif endif From ee848655db462afe21f8327d83a5f69e3f3d6128 Mon Sep 17 00:00:00 2001 From: Steve Fung Date: Wed, 30 Aug 2017 14:58:33 -0700 Subject: [PATCH 027/421] Only generate breakpad symbols for ELF binaries When BREAKPAD_GENERATE_SYMBOLS is set to true, the build will attempt to run dump_syms for all dynamic binaries. However some build targets are now using cc_prebuilt_binary for installing python host scripts. This causes dump_syms to return an error, causing the build to fail. So check instead if the file is an ELF binary before running dump_syms. Bug: 65065674 Test: Built AT target successfully. Change-Id: Ibe7d3ebd312376600cf21efa111489451a4e7578 --- core/dynamic_binary.mk | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/core/dynamic_binary.mk b/core/dynamic_binary.mk index 949793b634..f44b8a88f2 100644 --- a/core/dynamic_binary.mk +++ b/core/dynamic_binary.mk @@ -99,10 +99,15 @@ ifeq ($(BREAKPAD_GENERATE_SYMBOLS),true) my_breakpad_path := $(TARGET_OUT_BREAKPAD)/$(patsubst $(PRODUCT_OUT)/%,%,$(my_module_path)) breakpad_input := $(relocation_packer_output) breakpad_output := $(my_breakpad_path)/$(my_installed_module_stem).sym -$(breakpad_output) : $(breakpad_input) | $(BREAKPAD_DUMP_SYMS) +$(breakpad_output) : $(breakpad_input) | $(BREAKPAD_DUMP_SYMS) $(PRIVATE_READELF) @echo "target breakpad: $(PRIVATE_MODULE) ($@)" @mkdir -p $(dir $@) - $(hide) $(BREAKPAD_DUMP_SYMS) -c $< > $@ + $(hide) if $(PRIVATE_READELF) -S $< > /dev/null 2>&1 ; then \ + $(BREAKPAD_DUMP_SYMS) -c $< > $@ ; \ + else \ + echo "skipped for non-elf file."; \ + touch $@; \ + fi $(LOCAL_BUILT_MODULE) : $(breakpad_output) endif From 7eef8b2609c51e062c6c73be6b61acc4d133e57e Mon Sep 17 00:00:00 2001 From: bohu Date: Sat, 2 Sep 2017 21:24:58 -0700 Subject: [PATCH 028/421] emulator: add unwindstack Fix emulator booting 09-03 04:22:19.175 1392 1392 E libEGL : load_driver(/vendor/lib/egl/libGLES_emulation.so): unknown 09-03 04:22:19.184 1392 1392 E vndksupport: Could not load /vendor/lib/egl/libEGL_emulation.so from sphal namespace: dlopen failed: library "libunwindstack.so" not found. 09-03 04:22:19.184 1392 1392 E libEGL : load_driver(/vendor/lib/egl/libEGL_emulation.so): unknown 09-03 04:22:19.184 1392 1392 F libEGL : couldn't find an OpenGL ES implementation 09-03 04:22:19.184 1392 1392 F libc : Fatal signal 6 (SIGABRT), code -6 in tid 1392 (surfaceflinger), pid 1392 (surfaceflinger) Test: build sdk_gphone_x86-userdebug, emualtor should boot to homescreen Change-Id: Id967e74a0b0ec76e01a3ef18274da591b48613d1 --- target/product/emulator.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/target/product/emulator.mk b/target/product/emulator.mk index 0e1e581cdd..00b353385b 100644 --- a/target/product/emulator.mk +++ b/target/product/emulator.mk @@ -129,6 +129,7 @@ PRODUCT_PACKAGES += \ libcompiler_rt.vndk-sp\ libbacktrace.vndk-sp\ libunwind.vndk-sp\ + libunwindstack.vndk-sp\ liblzma.vndk-sp\ libz.vndk-sp\ From bf9023ae7a0573dc6473ebe8ca15d5516d4a649d Mon Sep 17 00:00:00 2001 From: Mathieu Chartier Date: Mon, 28 Aug 2017 18:42:02 -0700 Subject: [PATCH 029/421] Enable profile based boot image by default Use profile based boot image instead of the compiled classes version. Results using profile from ag/2815407 Storage savings: Boot art+vdex+oat size: 78305556->61539326 (-17MB) New system server profile has more methods (1.5MB -> 4MB oat) since it has more coverage from use cases. Ram savings (sample averages for CUJ test): Average PSS of 3 runs (~100 samples total): .Boot_vdex: 9359K -> 9902K .oat_mmap: 21857K -> 13372K .Heap: 29779K -> 29483K .Boot_art: 15736K -> 18096K .LinearAlloc: 9112K -> 8965K Total PSS: 85846K -> 79819K (-6MB) Average pages read from flash (512MB device) for CUJ tests (3 samples): 1508MB -> 1183MB Bug: 37966211 Test: make and flash Change-Id: Id8f9b08490a50e2ccf39e8acc00b0c4e8ec782b0 --- core/dex_preopt_libart.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/dex_preopt_libart.mk b/core/dex_preopt_libart.mk index 96160367be..40d34f1318 100644 --- a/core/dex_preopt_libart.mk +++ b/core/dex_preopt_libart.mk @@ -96,7 +96,7 @@ LIBART_TARGET_BOOT_ART_EXTRA_FILES += boot.oat boot.vdex my_use_profile_for_boot_image := $(PRODUCT_USE_PROFILE_FOR_BOOT_IMAGE) ifeq (,$(my_use_profile_for_boot_image)) # If not set, use the default. -my_use_profile_for_boot_image := false +my_use_profile_for_boot_image := true endif ifeq (true,$(my_use_profile_for_boot_image)) From d4171ee424ebcc2312adaf27eba58c972272daf0 Mon Sep 17 00:00:00 2001 From: Ian Pedowitz Date: Wed, 23 Aug 2017 18:28:00 -0700 Subject: [PATCH 030/421] Removing OMR1 as oc-mr1-dev is finalized Bug: 64982450 Test: manual Change-Id: Icff2687e4ca3a65f613b129967424b4d5e2b4059 --- core/version_defaults.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/core/version_defaults.mk b/core/version_defaults.mk index 075ea9f375..44e92c7fd1 100644 --- a/core/version_defaults.mk +++ b/core/version_defaults.mk @@ -78,7 +78,6 @@ PLATFORM_VERSION.PPR1 := P # These are the current development codenames, if the build is not a final # release build. If this is a final release build, it is simply "REL". -PLATFORM_VERSION_CODENAME.OPM1 := OMR1 PLATFORM_VERSION_CODENAME.PPR1 := P ifndef PLATFORM_VERSION From 12ac8ca578381d9571a642bf3fad9a5715defffd Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Fri, 14 Jul 2017 15:31:04 +0100 Subject: [PATCH 031/421] Remove org.apache.http.legacy from bootclasspath Bug: 18027885 Test: build, flash and cts/tests/signature/runSignatureTests.sh Change-Id: I48fdc624de9b0ca0dfe929627dcdc9cc14b4fd8a --- target/product/core_minimal.mk | 1 - target/product/core_tiny.mk | 1 - 2 files changed, 2 deletions(-) diff --git a/target/product/core_minimal.mk b/target/product/core_minimal.mk index ab65f5b19b..fddde4398b 100644 --- a/target/product/core_minimal.mk +++ b/target/product/core_minimal.mk @@ -116,7 +116,6 @@ PRODUCT_BOOT_JARS := \ telephony-common \ voip-common \ ims-common \ - org.apache.http.legacy.boot \ android.hidl.base-V1.0-java \ android.hidl.manager-V1.0-java diff --git a/target/product/core_tiny.mk b/target/product/core_tiny.mk index e47341365b..4e0e3b864c 100644 --- a/target/product/core_tiny.mk +++ b/target/product/core_tiny.mk @@ -103,7 +103,6 @@ PRODUCT_BOOT_JARS := \ voip-common \ ims-common \ nullwebview \ - org.apache.http.legacy.boot \ android.hidl.base-V1.0-java \ android.hidl.manager-V1.0-java From 3e4549986e4ce26486dc33288d07c015ab16fead Mon Sep 17 00:00:00 2001 From: Adam Lesinski Date: Tue, 12 Sep 2017 13:57:35 -0700 Subject: [PATCH 032/421] Enable sparse encoding for apps with minSdkVersion >= 26 Test: build Change-Id: I5fcbf04b3cd3b1e242f2f0fb704fe617be5fe750 --- core/package_internal.mk | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/package_internal.mk b/core/package_internal.mk index a7b08836fc..69e861a17d 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -414,6 +414,11 @@ my_full_asset_paths := $(all_assets) # Add AAPT2 link specific flags. $(my_res_package): PRIVATE_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) + +# Enables the new runtime format available on API 26 and up that encodes +# resources a bit more densely when the application's minSdkVersion >= 26 +# or for resources versioned with v26 qualifier or higher. +$(my_res_package): PRIVATE_AAPT_FLAGS += --enable-sparse-encoding ifndef LOCAL_AAPT_NAMESPACES $(my_res_package): PRIVATE_AAPT_FLAGS += --no-static-lib-packages endif From 25210ce70b483b2ae7328fe34d675c374166280d Mon Sep 17 00:00:00 2001 From: Jeff Gaston Date: Fri, 15 Sep 2017 12:34:29 -0700 Subject: [PATCH 033/421] Fix sdk-addon build on build servers they don't source envsetup.sh Bug: 65286453 Test: m -j OUT_DIR=/tmp/abs PRODUCT-sdk_gphone_x86-sdk_addon /tmp/abs/host/linux-x86/sdk_addon/google_phone_x86-eng.$(whoami)-linux-x86.zip Change-Id: Id396203b500e70cfa2b1e1eb5241d88fae88fc36 --- core/tasks/sdk-addon.mk | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/tasks/sdk-addon.mk b/core/tasks/sdk-addon.mk index 2725f950cb..197d41a78e 100644 --- a/core/tasks/sdk-addon.mk +++ b/core/tasks/sdk-addon.mk @@ -105,21 +105,21 @@ $(full_target): PRIVATE_DOCS_DIRS := $(addprefix $(OUT_DOCS)/, $(doc_modules)) $(full_target): PRIVATE_STAGING_DIR := $(call append-path,$(staging),$(addon_dir_leaf)) -$(full_target): $(sdk_addon_deps) | $(ACP) +$(full_target): $(sdk_addon_deps) | $(ACP) $(SOONG_ZIP) @echo Packaging SDK Addon: $@ $(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) soong_zip -o $@ -C $(dir $(PRIVATE_STAGING_DIR)) -D $(PRIVATE_STAGING_DIR) + $(hide) $(SOONG_ZIP) -o $@ -C $(dir $(PRIVATE_STAGING_DIR)) -D $(PRIVATE_STAGING_DIR) $(full_target_img): PRIVATE_STAGING_DIR := $(call append-path,$(staging),$(addon_dir_img))/images/$(TARGET_CPU_ABI) -$(full_target_img): $(full_target) $(addon_img_source_prop) | $(ACP) +$(full_target_img): $(full_target) $(addon_img_source_prop) | $(ACP) $(SOONG_ZIP) @echo Packaging SDK Addon System-Image: $@ $(hide) mkdir -p $(dir $@) $(ACP) -r $(PRODUCT_OUT)/data $(PRIVATE_STAGING_DIR)/data - $(hide) soong_zip -o $@ -C $(dir $(PRIVATE_STAGING_DIR)) -D $(PRIVATE_STAGING_DIR) + $(hide) $(SOONG_ZIP) -o $@ -C $(dir $(PRIVATE_STAGING_DIR)) -D $(PRIVATE_STAGING_DIR) .PHONY: sdk_addon From e76e8021ebaca486aee8e82d6a3ce25a10bc3974 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Fri, 8 Sep 2017 13:29:54 -0700 Subject: [PATCH 034/421] Upgrade to ManifestMerger2 Switch to using ManifestMerger2 from prebuilts/gradle-plugin/com/android/tools/build/manifest-merger/26.0.0-beta2/manifest-merger-26.0.0-beta2.jar Bug: 36005379 Test: m -j checkbuild Change-Id: I83bd3f95778e93796d06f063aa7c61d2a63b117b --- core/android_manifest.mk | 4 +++- core/config.mk | 9 ++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/core/android_manifest.mk b/core/android_manifest.mk index 0093e02087..7d573d3fc3 100644 --- a/core/android_manifest.mk +++ b/core/android_manifest.mk @@ -34,10 +34,12 @@ ifdef my_full_libs_manifest_files main_android_manifest := $(full_android_manifest) full_android_manifest := $(intermediates.COMMON)/AndroidManifest.xml $(full_android_manifest): PRIVATE_LIBS_MANIFESTS := $(my_full_libs_manifest_files) +$(full_android_manifest): $(ANDROID_MANIFEST_MERGER_CLASSPATH) $(full_android_manifest) : $(main_android_manifest) $(my_full_libs_manifest_deps) @echo "Merge android manifest files: $@ <-- $< $(PRIVATE_LIBS_MANIFESTS)" @mkdir -p $(dir $@) - $(hide) $(ANDROID_MANIFEST_MERGER) --main $< --libs $(PRIVATE_LIBS_MANIFESTS) \ + $(hide) $(ANDROID_MANIFEST_MERGER) --main $< \ + --libs $(call normalize-path-list,$(PRIVATE_LIBS_MANIFESTS)) \ --out $@ endif diff --git a/core/config.mk b/core/config.mk index 533eb8a8e4..7a120bcdba 100644 --- a/core/config.mk +++ b/core/config.mk @@ -676,7 +676,14 @@ FINDBUGS := $(FINDBUGS_DIR)/findbugs JACOCO_CLI_JAR := $(HOST_OUT_JAVA_LIBRARIES)/jacoco-cli$(COMMON_JAVA_PACKAGE_SUFFIX) # Tool to merge AndroidManifest.xmls -ANDROID_MANIFEST_MERGER := $(JAVA) -classpath prebuilts/devtools/tools/lib/manifest-merger.jar com.android.manifmerger.Main merge +ANDROID_MANIFEST_MERGER_CLASSPATH := \ + prebuilts/gradle-plugin/com/android/tools/build/manifest-merger/26.0.0-beta2/manifest-merger-26.0.0-beta2.jar \ + prebuilts/gradle-plugin/com/android/tools/sdk-common/26.0.0-beta2/sdk-common-26.0.0-beta2.jar \ + prebuilts/gradle-plugin/com/android/tools/common/26.0.0-beta2/common-26.0.0-beta2.jar \ + prebuilts/misc/common/guava/guava-21.0.jar +ANDROID_MANIFEST_MERGER := $(JAVA) \ + -classpath $(subst $(space),:,$(strip $(ANDROID_MANIFEST_MERGER_CLASSPATH))) \ + com.android.manifmerger.Merger COLUMN:= column From a2acdadcc0301f6a3063a9a3d8d34fbb18bfc6c3 Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Mon, 18 Sep 2017 09:40:22 +0100 Subject: [PATCH 035/421] Revert "Remove org.apache.http.legacy from bootclasspath" Temporary change to see what impact this has on performance of Phone app. This reverts commit 12ac8ca578381d9571a642bf3fad9a5715defffd. Test: did not Bug: 65552462 Change-Id: I6363ffc7b7bc5d767eaeaae53ba332828f42c70f --- target/product/core_minimal.mk | 1 + target/product/core_tiny.mk | 1 + 2 files changed, 2 insertions(+) diff --git a/target/product/core_minimal.mk b/target/product/core_minimal.mk index fddde4398b..ab65f5b19b 100644 --- a/target/product/core_minimal.mk +++ b/target/product/core_minimal.mk @@ -116,6 +116,7 @@ PRODUCT_BOOT_JARS := \ telephony-common \ voip-common \ ims-common \ + org.apache.http.legacy.boot \ android.hidl.base-V1.0-java \ android.hidl.manager-V1.0-java diff --git a/target/product/core_tiny.mk b/target/product/core_tiny.mk index 4e0e3b864c..e47341365b 100644 --- a/target/product/core_tiny.mk +++ b/target/product/core_tiny.mk @@ -103,6 +103,7 @@ PRODUCT_BOOT_JARS := \ voip-common \ ims-common \ nullwebview \ + org.apache.http.legacy.boot \ android.hidl.base-V1.0-java \ android.hidl.manager-V1.0-java From 3aa21e6bb9f46b5c16c4b42757d64e738e506031 Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Fri, 22 Sep 2017 15:45:33 -0700 Subject: [PATCH 036/421] Build repeatable system images with mke2fs. We have added support in mkuserimg_mke2fs.sh that allows specifying filesystem UUID and hash seed UUID. This CL generates and passes the UUIDs based on the image name and build fingerprint. This way we can rebuild and get identical images. Note that this only applies to images generated with `m dist` and with signing tools (sign_target_files_apks.py and add_img_to_target_files.py). Images under $OUT (built with `make`) are not affected. Bug: 64994964 Test: lunch marlin-userdebug; run `m dist` twice (after deleting the intermediate files under $OUT/obj/PACKAGING), and compare the generated images. Change-Id: I41cf4e5869582bb930af2f35a8e9c79bff43b2a2 --- tools/releasetools/add_img_to_target_files.py | 14 ++++++++++++++ tools/releasetools/build_image.py | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/tools/releasetools/add_img_to_target_files.py b/tools/releasetools/add_img_to_target_files.py index 52d3918926..02f2000a07 100755 --- a/tools/releasetools/add_img_to_target_files.py +++ b/tools/releasetools/add_img_to_target_files.py @@ -58,6 +58,7 @@ import shlex import shutil import subprocess import tempfile +import uuid import zipfile import build_image @@ -257,6 +258,19 @@ def CreateImage(input_dir, info_dict, what, output_file, block_list=None): if block_list: image_props["block_list"] = block_list.name + # Use repeatable ext4 FS UUID and hash_seed UUID (based on partition name and + # build fingerprint). + uuid_seed = what + "-" + if "build.prop" in info_dict: + build_prop = info_dict["build.prop"] + if "ro.build.fingerprint" in build_prop: + uuid_seed += build_prop["ro.build.fingerprint"] + elif "ro.build.thumbprint" in build_prop: + uuid_seed += build_prop["ro.build.thumbprint"] + image_props["uuid"] = str(uuid.uuid5(uuid.NAMESPACE_URL, uuid_seed)) + hash_seed = "hash_seed-" + uuid_seed + image_props["hash_seed"] = str(uuid.uuid5(uuid.NAMESPACE_URL, hash_seed)) + succ = build_image.BuildImage(os.path.join(temp_dir, what), image_props, output_file.name) assert succ, "build " + what + ".img image failed" diff --git a/tools/releasetools/build_image.py b/tools/releasetools/build_image.py index d2c9f59700..c50f605b61 100755 --- a/tools/releasetools/build_image.py +++ b/tools/releasetools/build_image.py @@ -475,6 +475,12 @@ def BuildImage(in_dir, prop_dict, out_file, target_out=None): build_command.extend(["-e", prop_dict["flash_erase_block_size"]]) if "flash_logical_block_size" in prop_dict: build_command.extend(["-o", prop_dict["flash_logical_block_size"]]) + # Specify UUID and hash_seed if using mke2fs. + if prop_dict["ext_mkuserimg"] == "mkuserimg_mke2fs.sh": + if "uuid" in prop_dict: + build_command.extend(["-U", prop_dict["uuid"]]) + if "hash_seed" in prop_dict: + build_command.extend(["-S", prop_dict["hash_seed"]]) if "selinux_fc" in prop_dict: build_command.append(prop_dict["selinux_fc"]) elif fs_type.startswith("squash"): From ffc26a719dd013ed2c5ab1f85d7b5da967592968 Mon Sep 17 00:00:00 2001 From: Adam Lesinski Date: Tue, 26 Sep 2017 01:54:39 +0000 Subject: [PATCH 037/421] Revert "Enable sparse encoding for apps with minSdkVersion >= 26" This reverts commit 3e4549986e4ce26486dc33288d07c015ab16fead. Reason for revert: Causing test failures on master: https://sponge.corp.google.com/target?id=d70ec835-b904-4bca-be92-89334e38767d&target=com.android.compatibility.common.tradefed.UnitTests&searchFor=&show=FAILED&sortBy=STATUS Change-Id: I4a9a8b41119d9b6a856a4c93688a15df437de42d --- core/package_internal.mk | 5 ----- 1 file changed, 5 deletions(-) diff --git a/core/package_internal.mk b/core/package_internal.mk index 69e861a17d..a7b08836fc 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -414,11 +414,6 @@ my_full_asset_paths := $(all_assets) # Add AAPT2 link specific flags. $(my_res_package): PRIVATE_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) - -# Enables the new runtime format available on API 26 and up that encodes -# resources a bit more densely when the application's minSdkVersion >= 26 -# or for resources versioned with v26 qualifier or higher. -$(my_res_package): PRIVATE_AAPT_FLAGS += --enable-sparse-encoding ifndef LOCAL_AAPT_NAMESPACES $(my_res_package): PRIVATE_AAPT_FLAGS += --no-static-lib-packages endif From dac941106a6e2384995ba79683199204508927a6 Mon Sep 17 00:00:00 2001 From: Billy Lamberta Date: Fri, 22 Sep 2017 10:22:30 -0700 Subject: [PATCH 038/421] Docs: Remove deprecated templates-sac/ for droiddoc. Consolidated to use droiddoc templates in external/doclava/res/assets/ Test: make tradefed-docs Bug: 36808726 Change-Id: Id410ce1599d6e98bc4882fa2ee256a8a0e8968d1 --- .../templates-sac/assets/GPL-LICENSE.txt | 278 - .../droiddoc/templates-sac/assets/LICENSE.txt | 20 - .../assets/android-developer-docs.css | 2768 ---------- .../templates-sac/assets/css/default.css | 4662 ----------------- .../templates-sac/assets/css/fullscreen.css | 200 - .../templates-sac/assets/design/default.js | 188 - .../assets/images/android-developers-logo.png | Bin 3195 -> 0 bytes .../assets/images/android_wrench.png | Bin 3633 -> 0 bytes .../assets/images/arrow-left-develop.png | Bin 3036 -> 0 bytes .../assets/images/arrow-left.png | Bin 3144 -> 0 bytes .../assets/images/arrow-right-develop.png | Bin 2960 -> 0 bytes .../assets/images/arrow-right.png | Bin 2757 -> 0 bytes .../assets/images/arrow_bluelink_down.png | Bin 180 -> 0 bytes .../assets/images/arrow_bluelink_up.png | Bin 181 -> 0 bytes .../assets/images/arrow_left_off.jpg | Bin 592 -> 0 bytes .../assets/images/arrow_left_on.jpg | Bin 692 -> 0 bytes .../assets/images/arrow_right_off.jpg | Bin 592 -> 0 bytes .../assets/images/arrow_right_on.jpg | Bin 692 -> 0 bytes .../assets/images/arrows-up-down.png | Bin 162 -> 0 bytes .../assets/images/bg_community_leftDiv.jpg | Bin 10692 -> 0 bytes .../templates-sac/assets/images/bg_fade.jpg | Bin 300 -> 0 bytes .../assets/images/bg_gradient.jpg | Bin 1376 -> 0 bytes .../assets/images/bg_images_sprite.png | Bin 2008 -> 0 bytes .../templates-sac/assets/images/bg_logo.png | Bin 1525 -> 0 bytes .../assets/images/blog-default.png | Bin 72570 -> 0 bytes .../assets/images/body-gradient-tab.png | Bin 192 -> 0 bytes .../assets/images/body-gradient.png | Bin 146 -> 0 bytes .../templates-sac/assets/images/close.png | Bin 312 -> 0 bytes .../templates-sac/assets/images/dac_logo.png | Bin 2170 -> 0 bytes .../assets/images/developers-logo.png | Bin 10155 -> 0 bytes .../assets/images/fullscreen.png | Bin 1154 -> 0 bytes .../assets/images/grad-rule-qv.png | Bin 249 -> 0 bytes .../assets/images/home/Android_Dev_Lab_l.png | Bin 16512 -> 0 bytes .../assets/images/home/GDC2011.png | Bin 15892 -> 0 bytes .../assets/images/home/GTV_icon_large.png | Bin 7553 -> 0 bytes .../assets/images/home/GTV_icon_small.png | Bin 3576 -> 0 bytes .../assets/images/home/IO-logo-2011.png | Bin 11210 -> 0 bytes .../assets/images/home/IO-logo.png | Bin 3673 -> 0 bytes .../assets/images/home/adc2_l.png | Bin 111790 -> 0 bytes .../assets/images/home/adc2_s.png | Bin 27250 -> 0 bytes .../assets/images/home/android_adc.png | Bin 1849 -> 0 bytes .../images/home/bg_home_announcement.png | Bin 2840 -> 0 bytes .../assets/images/home/bg_home_bottom.jpg | Bin 2180 -> 0 bytes .../assets/images/home/bg_home_carousel.png | Bin 3654 -> 0 bytes .../images/home/bg_home_carousel_board.png | Bin 1902 -> 0 bytes .../images/home/bg_home_carousel_wheel.png | Bin 2041 -> 0 bytes .../images/home/carousel_buttons_sprite.png | Bin 3413 -> 0 bytes .../assets/images/home/devphone-large.png | Bin 16630 -> 0 bytes .../assets/images/home/devphone-small.png | Bin 1944 -> 0 bytes .../assets/images/home/donut-android.png | Bin 9386 -> 0 bytes .../assets/images/home/eclair-android.png | Bin 11311 -> 0 bytes .../assets/images/home/froyo-android.png | Bin 17086 -> 0 bytes .../assets/images/home/gdc-logo.png | Bin 2739 -> 0 bytes .../assets/images/home/gingerdroid.png | Bin 11690 -> 0 bytes .../assets/images/home/google-plus-small.png | Bin 5042 -> 0 bytes .../assets/images/home/google-plus.png | Bin 21315 -> 0 bytes .../assets/images/home/honeycomb-android.png | Bin 13716 -> 0 bytes .../assets/images/home/icon-about.png | Bin 5573 -> 0 bytes .../assets/images/home/icon-design.png | Bin 5739 -> 0 bytes .../assets/images/home/icon-develop.png | Bin 5364 -> 0 bytes .../assets/images/home/icon-distribute.png | Bin 4588 -> 0 bytes .../assets/images/home/ics-android.png | Bin 15002 -> 0 bytes .../assets/images/home/io-large.png | Bin 5522 -> 0 bytes .../assets/images/home/io-small.png | Bin 1427 -> 0 bytes .../assets/images/home/maps-large.png | Bin 39756 -> 0 bytes .../assets/images/home/maps-small.png | Bin 3424 -> 0 bytes .../assets/images/home/market-large.png | Bin 5752 -> 0 bytes .../assets/images/home/market-small.png | Bin 3134 -> 0 bytes .../assets/images/home/sdk-large.png | Bin 1616 -> 0 bytes .../assets/images/home/sdk-small.png | Bin 2381 -> 0 bytes .../assets/images/hr_gray_main.jpg | Bin 378 -> 0 bytes .../assets/images/hr_gray_side.jpg | Bin 344 -> 0 bytes .../assets/images/icon_contribute.jpg | Bin 1021 -> 0 bytes .../assets/images/icon_design.png | Bin 697 -> 0 bytes .../assets/images/icon_download.jpg | Bin 1192 -> 0 bytes .../assets/images/icon_download2.jpg | Bin 653 -> 0 bytes .../assets/images/icon_guidelines_logo.png | Bin 44163 -> 0 bytes .../assets/images/icon_market.jpg | Bin 1022 -> 0 bytes .../templates-sac/assets/images/icon_more.png | Bin 1098 -> 0 bytes .../templates-sac/assets/images/icon_play.png | Bin 10201 -> 0 bytes .../assets/images/icon_robot.jpg | Bin 638 -> 0 bytes .../assets/images/icon_search.png | Bin 1406 -> 0 bytes .../assets/images/icon_world.jpg | Bin 511 -> 0 bytes .../templates-sac/assets/images/left_off.jpg | Bin 592 -> 0 bytes .../templates-sac/assets/images/left_on.jpg | Bin 692 -> 0 bytes .../templates-sac/assets/images/locale.png | Bin 393 -> 0 bytes .../assets/images/logo_breadcrumbz.jpg | Bin 3311 -> 0 bytes .../assets/images/more_bottom.png | Bin 1055 -> 0 bytes .../assets/images/more_check.png | Bin 1014 -> 0 bytes .../templates-sac/assets/images/more_mid.png | Bin 958 -> 0 bytes .../templates-sac/assets/images/more_top.png | Bin 1447 -> 0 bytes .../assets/images/open_source.png | Bin 6340 -> 0 bytes .../assets/images/preliminary.png | Bin 2251 -> 0 bytes .../assets/images/quicknav_arrow.png | Bin 2951 -> 0 bytes .../assets/images/quicknav_btn_bg.png | Bin 1024 -> 0 bytes .../assets/images/resizable-e.gif | Bin 2713 -> 0 bytes .../assets/images/resizable-e2.gif | Bin 2680 -> 0 bytes .../assets/images/resizable-eg.gif | Bin 3075 -> 0 bytes .../assets/images/resizable-s.gif | Bin 2617 -> 0 bytes .../assets/images/resizable-s2.gif | Bin 2618 -> 0 bytes .../assets/images/resizable-s2.png | Bin 966 -> 0 bytes .../assets/images/resizable-sg.gif | Bin 3057 -> 0 bytes .../assets/images/resource-article.png | Bin 889 -> 0 bytes .../assets/images/resource-big-article.png | Bin 2095 -> 0 bytes .../assets/images/resource-big-sample.png | Bin 2480 -> 0 bytes .../assets/images/resource-big-tutorial.png | Bin 2544 -> 0 bytes .../assets/images/resource-big-video.png | Bin 2155 -> 0 bytes .../assets/images/resource-sample.png | Bin 972 -> 0 bytes .../assets/images/resource-tutorial.png | Bin 1001 -> 0 bytes .../assets/images/resource-video.png | Bin 835 -> 0 bytes .../templates-sac/assets/images/right_off.jpg | Bin 592 -> 0 bytes .../templates-sac/assets/images/right_on.jpg | Bin 692 -> 0 bytes .../templates-sac/assets/images/sac_logo.png | Bin 2298 -> 0 bytes .../assets/images/sac_logo@2x.png | Bin 4934 -> 0 bytes .../assets/images/sidenav-rule.png | Bin 258 -> 0 bytes .../templates-sac/assets/images/slide_1.jpg | Bin 3060 -> 0 bytes .../templates-sac/assets/images/slide_2.jpg | Bin 3736 -> 0 bytes .../templates-sac/assets/images/slide_3.jpg | Bin 3151 -> 0 bytes .../assets/images/slide_large_1.jpg | Bin 19240 -> 0 bytes .../assets/images/slide_large_2.jpg | Bin 20188 -> 0 bytes .../assets/images/slide_large_3.jpg | Bin 20202 -> 0 bytes .../templates-sac/assets/images/slide_off.jpg | Bin 676 -> 0 bytes .../templates-sac/assets/images/slide_on.jpg | Bin 733 -> 0 bytes .../templates-sac/assets/images/spacer.gif | Bin 96 -> 0 bytes .../assets/images/styles/callout.png | Bin 1383 -> 0 bytes .../device_galaxynexus_blank_land_span13.png | Bin 64431 -> 0 bytes .../device_galaxynexus_blank_land_span8.png | Bin 30679 -> 0 bytes .../device_galaxynexus_blank_port_span5.png | Bin 39994 -> 0 bytes .../device_galaxynexus_blank_port_span9.png | Bin 75920 -> 0 bytes .../assets/images/styles/disclosure_down.png | Bin 238 -> 0 bytes .../assets/images/styles/disclosure_left.png | Bin 229 -> 0 bytes .../assets/images/styles/disclosure_right.png | Bin 228 -> 0 bytes .../assets/images/styles/disclosure_up.png | Bin 221 -> 0 bytes .../assets/images/styles/gototop.png | Bin 262 -> 0 bytes .../assets/images/styles/ico_action.png | Bin 415 -> 0 bytes .../assets/images/styles/ico_good.png | Bin 318 -> 0 bytes .../assets/images/styles/ico_movie_inline.png | Bin 1040 -> 0 bytes .../assets/images/styles/ico_phone_tablet.png | Bin 302 -> 0 bytes .../assets/images/styles/ico_use.png | Bin 437 -> 0 bytes .../assets/images/styles/ico_web.png | Bin 1037 -> 0 bytes .../assets/images/styles/ico_wrong.png | Bin 286 -> 0 bytes .../assets/images/styles/open_new_page.png | Bin 980 -> 0 bytes .../assets/images/triangle-closed-small.png | Bin 166 -> 0 bytes .../assets/images/triangle-closed.png | Bin 3565 -> 0 bytes .../assets/images/triangle-opened-small.png | Bin 170 -> 0 bytes .../assets/images/triangle-opened.png | Bin 3567 -> 0 bytes .../assets/images/uiguidelines1.png | Bin 5258 -> 0 bytes .../assets/images/video-droid.png | Bin 1614 -> 0 bytes .../assets/js/android_3p-bundle.js | 2766 ---------- .../droiddoc/templates-sac/assets/js/docs.js | 2609 --------- .../templates-sac/assets/js/prettify.js | 28 - tools/droiddoc/templates-sac/class.cs | 658 --- tools/droiddoc/templates-sac/classes.cs | 47 - .../templates-sac/components/masthead.cs | 334 -- .../droiddoc/templates-sac/customizations.cs | 471 -- tools/droiddoc/templates-sac/data.hdf | 4 - tools/droiddoc/templates-sac/designpage.cs | 90 - tools/droiddoc/templates-sac/docpage.cs | 164 - tools/droiddoc/templates-sac/footer.cs | 12 - .../templates-sac/gcm_navtree_data.cs | 3 - .../templates-sac/gms_navtree_data.cs | 3 - tools/droiddoc/templates-sac/head_tag.cs | 62 - tools/droiddoc/templates-sac/header.cs | 7 - tools/droiddoc/templates-sac/header_tabs.cs | 2 - .../templates-sac/jd_lists_unified.cs | 1 - tools/droiddoc/templates-sac/navtree_data.cs | 3 - tools/droiddoc/templates-sac/nosidenavpage.cs | 27 - tools/droiddoc/templates-sac/package.cs | 62 - tools/droiddoc/templates-sac/packages.cs | 43 - tools/droiddoc/templates-sac/sampleindex.cs | 53 - tools/droiddoc/templates-sac/sdkpage.cs | 491 -- tools/droiddoc/templates-sac/timestamp.cs | 1 - tools/droiddoc/templates-sac/trailer.cs | 20 - 173 files changed, 16077 deletions(-) delete mode 100644 tools/droiddoc/templates-sac/assets/GPL-LICENSE.txt delete mode 100644 tools/droiddoc/templates-sac/assets/LICENSE.txt delete mode 100644 tools/droiddoc/templates-sac/assets/android-developer-docs.css delete mode 100644 tools/droiddoc/templates-sac/assets/css/default.css delete mode 100644 tools/droiddoc/templates-sac/assets/css/fullscreen.css delete mode 100644 tools/droiddoc/templates-sac/assets/design/default.js delete mode 100644 tools/droiddoc/templates-sac/assets/images/android-developers-logo.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/android_wrench.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/arrow-left-develop.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/arrow-left.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/arrow-right-develop.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/arrow-right.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/arrow_bluelink_down.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/arrow_bluelink_up.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/arrow_left_off.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/arrow_left_on.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/arrow_right_off.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/arrow_right_on.jpg delete mode 100644 tools/droiddoc/templates-sac/assets/images/arrows-up-down.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/bg_community_leftDiv.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/bg_fade.jpg delete mode 100644 tools/droiddoc/templates-sac/assets/images/bg_gradient.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/bg_images_sprite.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/bg_logo.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/blog-default.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/body-gradient-tab.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/body-gradient.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/close.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/dac_logo.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/developers-logo.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/fullscreen.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/grad-rule-qv.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/Android_Dev_Lab_l.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/GDC2011.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/GTV_icon_large.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/GTV_icon_small.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/IO-logo-2011.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/IO-logo.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/adc2_l.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/adc2_s.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/android_adc.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/home/bg_home_announcement.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/home/bg_home_bottom.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/home/bg_home_carousel.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/home/bg_home_carousel_board.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/home/bg_home_carousel_wheel.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/home/carousel_buttons_sprite.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/devphone-large.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/devphone-small.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/home/donut-android.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/eclair-android.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/froyo-android.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/gdc-logo.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/gingerdroid.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/google-plus-small.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/google-plus.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/honeycomb-android.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/icon-about.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/icon-design.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/icon-develop.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/icon-distribute.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/ics-android.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/home/io-large.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/home/io-small.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/maps-large.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/maps-small.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/market-large.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/market-small.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/sdk-large.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/home/sdk-small.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/hr_gray_main.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/hr_gray_side.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/icon_contribute.jpg delete mode 100644 tools/droiddoc/templates-sac/assets/images/icon_design.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/icon_download.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/icon_download2.jpg delete mode 100644 tools/droiddoc/templates-sac/assets/images/icon_guidelines_logo.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/icon_market.jpg delete mode 100644 tools/droiddoc/templates-sac/assets/images/icon_more.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/icon_play.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/icon_robot.jpg delete mode 100644 tools/droiddoc/templates-sac/assets/images/icon_search.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/icon_world.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/left_off.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/left_on.jpg delete mode 100644 tools/droiddoc/templates-sac/assets/images/locale.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/logo_breadcrumbz.jpg delete mode 100644 tools/droiddoc/templates-sac/assets/images/more_bottom.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/more_check.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/more_mid.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/more_top.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/open_source.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/preliminary.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/quicknav_arrow.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/quicknav_btn_bg.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/resizable-e.gif delete mode 100755 tools/droiddoc/templates-sac/assets/images/resizable-e2.gif delete mode 100755 tools/droiddoc/templates-sac/assets/images/resizable-eg.gif delete mode 100755 tools/droiddoc/templates-sac/assets/images/resizable-s.gif delete mode 100755 tools/droiddoc/templates-sac/assets/images/resizable-s2.gif delete mode 100644 tools/droiddoc/templates-sac/assets/images/resizable-s2.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/resizable-sg.gif delete mode 100644 tools/droiddoc/templates-sac/assets/images/resource-article.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/resource-big-article.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/resource-big-sample.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/resource-big-tutorial.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/resource-big-video.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/resource-sample.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/resource-tutorial.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/resource-video.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/right_off.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/right_on.jpg delete mode 100644 tools/droiddoc/templates-sac/assets/images/sac_logo.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/sac_logo@2x.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/sidenav-rule.png delete mode 100755 tools/droiddoc/templates-sac/assets/images/slide_1.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/slide_2.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/slide_3.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/slide_large_1.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/slide_large_2.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/slide_large_3.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/slide_off.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/slide_on.jpg delete mode 100755 tools/droiddoc/templates-sac/assets/images/spacer.gif delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/callout.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/device_galaxynexus_blank_land_span13.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/device_galaxynexus_blank_land_span8.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/device_galaxynexus_blank_port_span5.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/device_galaxynexus_blank_port_span9.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/disclosure_down.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/disclosure_left.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/disclosure_right.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/disclosure_up.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/gototop.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/ico_action.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/ico_good.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/ico_movie_inline.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/ico_phone_tablet.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/ico_use.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/ico_web.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/ico_wrong.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/styles/open_new_page.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/triangle-closed-small.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/triangle-closed.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/triangle-opened-small.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/triangle-opened.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/uiguidelines1.png delete mode 100644 tools/droiddoc/templates-sac/assets/images/video-droid.png delete mode 100644 tools/droiddoc/templates-sac/assets/js/android_3p-bundle.js delete mode 100644 tools/droiddoc/templates-sac/assets/js/docs.js delete mode 100644 tools/droiddoc/templates-sac/assets/js/prettify.js delete mode 100644 tools/droiddoc/templates-sac/class.cs delete mode 100644 tools/droiddoc/templates-sac/classes.cs delete mode 100644 tools/droiddoc/templates-sac/components/masthead.cs delete mode 100644 tools/droiddoc/templates-sac/customizations.cs delete mode 100644 tools/droiddoc/templates-sac/data.hdf delete mode 100644 tools/droiddoc/templates-sac/designpage.cs delete mode 100644 tools/droiddoc/templates-sac/docpage.cs delete mode 100644 tools/droiddoc/templates-sac/footer.cs delete mode 100644 tools/droiddoc/templates-sac/gcm_navtree_data.cs delete mode 100644 tools/droiddoc/templates-sac/gms_navtree_data.cs delete mode 100644 tools/droiddoc/templates-sac/head_tag.cs delete mode 100644 tools/droiddoc/templates-sac/header.cs delete mode 100644 tools/droiddoc/templates-sac/header_tabs.cs delete mode 100644 tools/droiddoc/templates-sac/jd_lists_unified.cs delete mode 100644 tools/droiddoc/templates-sac/navtree_data.cs delete mode 100644 tools/droiddoc/templates-sac/nosidenavpage.cs delete mode 100644 tools/droiddoc/templates-sac/package.cs delete mode 100644 tools/droiddoc/templates-sac/packages.cs delete mode 100644 tools/droiddoc/templates-sac/sampleindex.cs delete mode 100644 tools/droiddoc/templates-sac/sdkpage.cs delete mode 100644 tools/droiddoc/templates-sac/timestamp.cs delete mode 100644 tools/droiddoc/templates-sac/trailer.cs diff --git a/tools/droiddoc/templates-sac/assets/GPL-LICENSE.txt b/tools/droiddoc/templates-sac/assets/GPL-LICENSE.txt deleted file mode 100644 index 66a0f18dbf..0000000000 --- a/tools/droiddoc/templates-sac/assets/GPL-LICENSE.txt +++ /dev/null @@ -1,278 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. \ No newline at end of file diff --git a/tools/droiddoc/templates-sac/assets/LICENSE.txt b/tools/droiddoc/templates-sac/assets/LICENSE.txt deleted file mode 100644 index e84328beda..0000000000 --- a/tools/droiddoc/templates-sac/assets/LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2011 John Resig, http://jquery.com/ - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/tools/droiddoc/templates-sac/assets/android-developer-docs.css b/tools/droiddoc/templates-sac/assets/android-developer-docs.css deleted file mode 100644 index cd610f74e7..0000000000 --- a/tools/droiddoc/templates-sac/assets/android-developer-docs.css +++ /dev/null @@ -1,2768 +0,0 @@ -/* file: android-developer-core.css - author: smain - date: september 2008 - info: core developer styles (developer.android.com) - Required by jdiff -*/ - - -/* RESET STYLES */ - -html,body,div,h1,h2,h3,h4,h5,h6,p,img, -dl,dt,dd,ol,ul,li,table,caption,tbody, -tfoot,thead,tr,th,td,form,fieldset, -embed,object,applet { - margin: 0; - padding: 0; - border: 0; -} - -/* BASICS */ - -html, body { - overflow:hidden; /* keeps scrollbar off IE */ - background-color:#fff; -} - -body { - font-family:arial,sans-serif; - color:#000; - font-size:13px; - color:#333; - background-image:url(images/bg_fade.jpg); - background-repeat:repeat-x; -} - -a, a code { - color:#006699; -} - -a:active, -a:active code { - color:#f00; -} - -a:visited, -a:visited code { - color:#006699; -} - -input, select, -textarea, option, label { - font-family:inherit; - font-size:inherit; - padding:0; - margin:0; - vertical-align:middle; -} - -option { - padding:0 4px; -} - -p, form { - padding:0; - margin:0 0 1em; -} - -code, pre { - color:#007000; - font-family:monospace; - line-height:1em; -} - -var { - color:#007000; - font-style:italic; -} - -pre { - border:1px solid #ccc; - background-color:#fafafa; - padding:10px; - margin:0 0 1em 1em; - overflow:auto; - line-height:inherit; /* fixes vertical scrolling in webkit */ -} - -h1,h2,h3,h4,h5 { - margin:1em 0; - padding:0; -} - -p,ul,ol,dl,dd,dt,li { - line-height:1.3em; -} - -ul,ol { - margin:0 0 .8em; - padding:0 0 0 2em; -} - -li { - padding:0 0 .5em; -} - -dl { - margin:0 0 1em 0; - padding:0; -} - -dt { - margin:0; - padding:0; -} - -dd { - margin:0 0 1em; - padding:0 0 0 2em; -} - -li p { - margin:.5em 0 0; -} - -dd p { - margin:1em 0 0; -} - -li pre, li table, li img { - margin:.5em 0 0 1em; -} - -dd pre, -#jd-content dd table, -#jd-content dd img { - margin:1em 0 0 1em; -} - -li ul, -li ol, -dd ul, -dd ol { - margin:0; - padding: 0 0 0 2em; -} - -li li, -dd li { - margin:0; - padding:.5em 0 0; -} - -dl dl, -ol dl, -ul dl { - margin:0 0 1em; - padding:0; -} - -table { - font-size:1em; - margin:0 0 1em; - padding:0; - border-collapse:collapse; - border-width:0; - empty-cells:show; -} - -td,th { - border:1px solid #ccc; - padding:6px 12px; - text-align:left; - vertical-align:top; - background-color:inherit; -} - -th { - background-color:#dee8f1; -} - -td > p:last-child { - margin:0; -} - -hr.blue { - background-color:#DDF0F2; - border:none; - height:5px; - margin:20px 0 10px; -} - -blockquote { - margin: 0 0 1em 1em; - padding: 0 4em 0 1em; - border-left:2px solid #eee; -} -/* LAYOUT */ - -#body-content { - /* "Preliminary" watermark for preview releases and interim builds. - background:transparent url(images/preliminary.png) repeat scroll 0 0; */ - margin:0; - position:relative; - width:100%; -} - -#header { - height: 114px; - position:relative; - z-index:100; - min-width:675px; /* min width for the tabs, before they wrap */ - padding:0 10px; - border-bottom:3px solid #94b922; -} - -#headerLeft{ - padding: 25px 0 0; -} - -#headerLeft img{ - height:50px; - width:180px; -} - -#headerRight { - position:absolute; - right:0; - top:0; - text-align:right; -} - -/* Tabs in the header */ - -#header ul { - list-style: none; - margin: 7px 0 0; - padding: 0; - height: 29px; -} - -#header li { - float: left; - margin: 0px 2px 0px 0px; - padding:0; -} - -#header li a { - text-decoration: none; - display: block; - background-image: url(images/bg_images_sprite.png); - background-position: 0 -58px; - background-repeat: no-repeat; - color: #666; - font-size: 13px; - font-weight: bold; - width: 94px; - height: 29px; - text-align: center; - margin: 0px; -} - -#header li a:hover { - background-image: url(images/bg_images_sprite.png); - background-position: 0 -29px; - background-repeat: no-repeat; -} - -#header li a span { - position:relative; - top:7px; -} - -#header li a span+span { - display:none; -} - -/* tab highlighting */ - -.home #home-link a, -.guide #guide-link a, -.reference #reference-link a, -.sdk #sdk-link a, -.resources #resources-link a, -.videos #videos-link a { - background-image: url(images/bg_images_sprite.png); - background-position: 0 0; - background-repeat: no-repeat; - color: #fff; - font-weight: bold; - cursor:default; -} - -.home #home-link a:hover, -.guide #guide-link a:hover, -.reference #reference-link a:hover, -.sdk #sdk-link a:hover, -.resources #resources-link a:hover, -.videos #videos-link a:hover { - background-image: url(images/bg_images_sprite.png); - background-position: 0 0; -} - -#headerLinks { - margin:10px 10px 0 0; - height:13px; - font-size: 11px; - vertical-align: top; -} - -#headerLinks a { - color: #7FA9B5; -} - -#headerLinks img { - vertical-align:middle; -} - -#language { - margin:0 10px 0 4px; -} - -#search { - height:45px; - margin:15px 10px 0 0; -} - -/* MAIN BODY */ - -#mainBodyFluid { - margin: 20px 10px; - color:#333; -} - -#mainBodyFixed { - margin: 20px 10px; - color: #333; - width:930px; - position:relative; -} - -#mainBodyFixed h3, -#mainBodyFluid h3 { - color:#336666; - font-size:1.25em; - margin: 0em 0em 0em 0em; - padding-bottom:.5em; -} - -#mainBodyFixed h2, -#mainBodyFluid h2 { - color:#336666; - font-size:1.25em; - margin: 0; - padding-bottom:.5em; -} - -#mainBodyFixed h1, -#mainBodyFluid h1 { - color:#435A6E; - font-size:1.7em; - margin: 1em 0; -} - -#mainBodyFixed .green, -#mainBodyFluid .green, -#jd-content .green { - color:#7BB026; - background-color:none; -} - -#mainBodyLeft { - float: left; - width: 600px; - margin-right: 20px; - color: #333; - position:relative; -} - -div.indent { - margin-left: 40px; - margin-right: 70px; -} - -#mainBodyLeft p { - color: #333; - font-size: 13px; -} - -#mainBodyLeft p.blue { - color: #669999; -} - -#mainBodyLeft #communityDiv { - float: left; - background-image:url(images/bg_community_leftDiv.jpg); - background-repeat: no-repeat; - width: 581px; - height: 347px; - padding: 20px 0px 0px 20px; -} - -#mainBodyRight { - float: left; - width: 300px; - color: #333; -} - -#mainBodyRight p { - padding-right: 50px; - color: #333; -} - -#mainBodyRight table { - width: 100%; -} - -#mainBodyRight td { - border:0px solid #666; - padding:0px 5px; - text-align:left; -} - -#mainBodyRight td p { - margin:0 0 1em 0; -} - -#mainBodyRight .blueBorderBox { - border:5px solid #ddf0f2; - padding:18px 18px 18px 18px; - text-align:left; -} - -#mainBodyFixed .seperator { - background-image:url(images/hr_gray_side.jpg); - background-repeat:no-repeat; - width: 100%; - float: left; - clear: both; -} - -#mainBodyBottom { - float: left; - width: 100%; - clear:both; - color: #333; -} - -#mainBodyBottom .seperator { - background-image:url(images/hr_gray_main.jpg); - background-repeat:no-repeat; - width: 100%; - float: left; - clear: both; -} - -/* FOOTER */ - -#footer { - float: left; - width:90%; - margin: 20px; - color: #aaa; - font-size: 11px; -} - -#footer a { - color: #aaa; - font-size: 11px; -} - -#footer a:hover { - text-decoration: underline; - color:#aaa; -} - -#footerlinks { - margin-top:2px; -} - -#footerlinks a, -#footerlinks a:visited { - color:#006699; -} - -/* SEARCH FILTER */ - -#search_autocomplete { - color:#aaa; -} - -#search-button { - display:inline; -} - -#search_filtered_div { - position:absolute; - margin-top:-1px; - z-index:101; - border:1px solid #BCCDF0; - background-color:#fff; -} - -#search_filtered { - min-width:100%; -} -#search_filtered td{ - background-color:#fff; - border-bottom: 1px solid #669999; - line-height:1.5em; -} - -#search_filtered .jd-selected { - background-color: #94b922; - cursor:pointer; -} -#search_filtered .jd-selected, -#search_filtered .jd-selected a { - color:#fff; -} - -.no-display { - display: none; -} - -.jd-autocomplete { - font-family: Arial, sans-serif; - padding-left: 6px; - padding-right: 6px; - padding-top: 1px; - padding-bottom: 1px; - font-size: 0.81em; - border: none; - margin: 0; - line-height: 1.05em; -} - -.show-row { - display: table-row; -} -.hide-row { - display: hidden; -} - -/* SEARCH */ - -/* restrict global search form width */ -#searchForm { - width:350px; -} - -#searchTxt { - width:200px; -} - -/* disable twiddle and size selectors for left column */ -#leftSearchControl div { - width: 100%; -} - -#leftSearchControl .gsc-twiddle { - background-image : none; -} - -#leftSearchControl td, #searchForm td { - border: 0px solid #000; -} - -#leftSearchControl .gsc-resultsHeader .gsc-title { - padding-left : 0px; - font-weight : bold; - font-size : 13px; - color:#006699; - display : none; -} - -#leftSearchControl .gsc-resultsHeader div.gsc-results-selector { - display : none; -} - -#leftSearchControl .gsc-resultsRoot { - padding-top : 6px; -} - -#leftSearchControl div.gs-visibleUrl-long { - display : block; - color:#006699; -} - -.gsc-webResult div.gs-visibleUrl-short, -table.gsc-branding, -.gsc-clear-button { - display : none; -} - -.gsc-cursor-box .gsc-cursor div.gsc-cursor-page, -.gsc-cursor-box .gsc-trailing-more-results a.gsc-trailing-more-results, -#leftSearchControl a, -#leftSearchControl a b { - color:#006699; -} - -.gsc-resultsHeader { - display: none; -} - -/* Disable built in search forms */ -.gsc-control form.gsc-search-box { - display : none; -} -table.gsc-search-box { - margin:6px 0 0 0; - border-collapse:collapse; -} - -td.gsc-input { - padding:0 2px; - width:100%; - vertical-align:middle; -} - -input.gsc-input { - border:1px solid #BCCDF0; - width:99%; - padding-left:2px; - font-size:.95em; -} - -td.gsc-search-button { - text-align: right; - padding:0; - vertical-align:top; -} - -#search-button { - margin:0 0 0 2px; - font-size:11px; -} - -/* search result tabs */ - -#doc-content .gsc-control { - position:relative; -} - -#doc-content .gsc-tabsArea { - position:relative; - white-space:nowrap; -} - -#doc-content .gsc-tabHeader { - padding: 3px 6px; - position:relative; - width:auto; -} - -#doc-content .gsc-tabHeader.gsc-tabhActive { - border-top: 2px solid #94B922; -} - -#doc-content h2#searchTitle { - padding:0; -} - -#doc-content .gsc-resultsbox-visible { - padding:1em 0 0 6px; -} - -/* CAROUSEL */ - -#homeMiddle { - padding: 0px 0px 0px 0px; - float: left; - width: 584px; - height: 627px; - position:relative; -} - -#topAnnouncement { - background:url(images/home/bg_home_announcement.png) no-repeat 0 0; -} - -#homeTitle { - padding:15px 15px 0; - height:30px; -} - -#homeTitle h2 { - padding:0; -} - -#announcement-block { - padding:0 15px 0; - overflow:hidden; - background: url(images/hr_gray_side.jpg) no-repeat 15px 0; - zoom:1; -} - -#announcement-block>* { - padding:15px 0 0; -} - -#announcement-block img { - float:left; - margin:0 30px 0 0; -} - -#announcement { - float:left; - margin:0; -} - -#carousel { - background:url(images/home/bg_home_carousel.png) no-repeat 0 0; - position:relative; - height:400px; -} - -#carouselMain { - background: url(images/home/bg_home_carousel_board.png) 0 0 no-repeat; - height:auto; - padding: 25px 21px 0; - overflow:hidden; - position:relative; - zoom:1; /*IE6*/ -} - -#carouselMain img { - margin:0; -} - -#carouselMain .bulletinDesc h3 { - margin:0; - padding:0; -} - -#carouselMain .bulletinDesc p { - margin:0; - padding:0.7em 0 0; -} - -#carouselWheel { - background: url(images/home/bg_home_carousel_wheel.png) 0 0 no-repeat; - padding-top:40px; - height:150px; -} - -.clearer { clear:both; } - -a#arrow-left, a#arrow-right { - float:left; - width:42px; - height:42px; - background-image:url(images/home/carousel_buttons_sprite.png); - background-repeat:no-repeat; -} -a#arrow-left { - margin:35px 3px 0 10px; -} -a#arrow-right { - margin:35px 10px 0 0; -} -a.arrow-left-off, -a#arrow-left.arrow-left-off:hover { - background-position:0 0; -} -a.arrow-right-off, -a#arrow-right.arrow-right-off:hover { - background-position:-42px 0; -} -a#arrow-left:hover { - background-position:0 -42px; -} -a#arrow-right:hover { - background-position:-42px -42px; -} -a.arrow-left-on { - background-position:0 0; -} -a.arrow-right-on { - background-position:-42px 0; -} -a.arrow-right-off, -a.arrow-left-off { - cursor:default; -} - -.app-list-container { - margin:0 20px; - position:relative; - width:100%; -} - -div#list-clip { - height:110px; - width:438px; - overflow:hidden; - position:relative; - float:left; -} - -div#app-list { - left:0; - z-index:1; - position:absolute; - margin:11px 0 0; - _margin-top:13px; - width:1000%; -} - -#app-list a { - display:block; - float:left; - height:90px; - width:90px; - margin:0 24px 0; - padding:3px; - background:#99cccc; - -webkit-border-radius:7px; - -moz-border-radius:7px; - border-radius:7px; - text-decoration:none; - text-align:center; - font-size:11px; - line-height:11px; -} - -#app-list a span { - position:relative; - top:-4px; -} - -#app-list img { - width:90px; - height:70px; - margin:0; -} - -#app-list a.selected, -#app-list a:active.selected, -#app-list a:hover.selected { - background:#A4C639; - color:#fff; - cursor:default; - text-decoration:none; -} - -#app-list a:hover, -#app-list a:active { - background:#ff9900; -} - -#app-list a:hover span, -#app-list a:active span { - text-decoration:underline; -} - -#droid-name { - padding-top:.5em; - color:#666; - padding-bottom:.25em; -} - -/*IE6*/ -* html #app-list a { zoom: 1; margin:0 24px 0 15px;} - -* html #list-clip { - width:430px !important; -} - -/*carousel bulletin layouts*/ -/*460px width*/ -/*185px height*/ -.img-left { - float:left; - width:230px; - overflow:hidden; - padding:8px 0 8px 8px; -} -.desc-right { - float:left; - width:270px; - padding:10px; -} -.img-right { - float:right; - width:220px; - overflow:hidden; - padding:8px 8px 8px 0; -} -.desc-left { - float:right; - width:280px; - padding:10px; - text-align:right; -} -.img-top { - padding:20px 20px 0; -} -.desc-bottom { - padding:10px; -} - - -/* VIDEO PAGE */ - -#mainBodyLeft.videoPlayer { - width:570px; -} - -#mainBodyRight.videoPlayer { - width:330px; -} - -/* player */ - -#videoPlayerBox { - background-color: #DAF3FC; - border-radius:7px; - -moz-border-radius:7px; - -webkit-border-radius:7px; - width:530px; - padding:20px; - border:1px solid #d3ecf5; - box-shadow:2px 3px 1px #eee; - -moz-box-shadow:2px 3px 1px #eee; - -webkit-box-shadow:2px 3px 1px #eee; -} - -#videoBorder { - background-color: #FFF; - min-height:399px; - height:auto !important; - border:1px solid #ccdada; - border-radius:7px 7px 0 0; - -moz-border-radius:7px 7px 0 0; - -webkit-border-top-left-radius:7px; - -webkit-border-top-right-radius:7px; -} - -#videoPlayerTitle { - width:500px; - padding:15px 15px 0; -} - -#videoPlayerTitle h2 { - font-weight:bold; - font-size:1.2em; - color:#336666; - margin:0; - padding:0; -} - -#objectWrapper { - padding:15px 15px; - height:334px; - width:500px; -} - -/* playlist tabs */ - -ul#videoTabs { - list-style-type:none; - padding:0; - clear:both; - margin:0; - padding: 20px 0 0 15px; - zoom:1; /* IE7/8, otherwise top-padding is double */ -} - -ul#videoTabs li { - display:inline; - padding:0; - margin:0 3px 0 0; - line-height:2em; -} - -ul#videoTabs li a { - border-radius:7px 7px 0 0; - -moz-border-radius:7px 7px 0 0; - -webkit-border-top-left-radius:7px; - -webkit-border-top-right-radius:7px; - background:#95c0d0; - color:#fff; - text-decoration:none; - padding:.45em 1.5em; - font-weight:bold; -} - -ul#videoTabs li.selected a { - font-weight:bold; - text-decoration:none; - color:#555; - background:#daf3fc; - border-bottom:1px solid #daf3fc; -} - -ul#videoTabs li:hover a { - background:#85acba; -} - -ul#videoTabs li.selected:hover a { - background:#daf3fc; -} - -/* playlists */ - -#videos { - background:#daf3fc; - margin-bottom:1.5em; - padding:15px; - border-radius:5px; - -moz-border-radius:5px; - -webkit-border-radius:5px; - box-shadow:2px 3px 1px #eee; - -moz-box-shadow:2px 3px 1px #eee; - -webkit-box-shadow:2px 3px 1px #eee; -} - -#videos div { - display:none; -} - -#videos div.selected { - display:block; -} - -ul.videoPreviews { - list-style:none; - padding:0; - margin:0; - zoom:1; /* IE, otherwise, layout doesn't update when showing 'more' */ -} - -ul.videoPreviews li { - margin:0 0 5px; - padding:0; - overflow:hidden; - position:relative; -} - -#mainBodyFixed ul.videoPreviews h3 { - font-size: 12px; - margin:0 0 1em 130px; - padding:0; - font-weight:bold; - color:inherit; -} - -ul.videoPreviews a { - margin:1px; - padding:10px; - text-decoration:none; - height:90px; - display:block; - border-radius:5px; - -moz-border-radius:5px; - -webkit-border-radius:5px; - background-color:transparent; -} - -ul.videoPreviews a:hover { - background-color:#FFF; - border:none; /* IE8, otherwise, bg doesn't work */ -} - -ul.videoPreviews a.selected { - background-color: #FF9900; -} - -ul.videoPreviews img { - float:left; - clear:left; - margin:0; -} - -ul.videoPreviews h3 { - font-size:12px; - font-weight:bold; - text-decoration:none; - margin:0 0 1em 130px; - padding:0; -} - -ul.videoPreviews p { - font-size: 12px; - text-decoration:none; - margin:0 0 1.2em 130px; -} - -ul.videoPreviews p.full { - display:none; -} - -ul.videoPreviews span.more { - padding:0 0 0 12px; - background:url(images/arrow_bluelink_down.png) 0 2px no-repeat; -} - -ul.videoPreviews span.less { - padding:0 0 0 12px; - background:url(images/arrow_bluelink_up.png) 0 2px no-repeat; - display:none; -} - -ul.videoPreviews p.toggle { - position:absolute; - margin:0; - margin-top:-23px; /* instead of bottom:23px, because IE won't do it correctly */ - left:140px; -} - -ul.videoPreviews p.toggle a { - height:auto; - margin:0; - padding:0; - zoom:1; /* IE6, otherwise the margin considers the img on redraws */ -} - -ul.videoPreviews p.toggle a:hover { - text-decoration:underline; - background:transparent; /* IE6, otherwise it inherits white */ -} - -/* featured videos */ - -#mainBodyRight h2 { - padding:0 0 5px; -} - -#mainBodyRight ul.videoPreviews { - margin:10px 0 0; -} - -#mainBodyRight ul.videoPreviews li { - font-size:11px; - line-height:13px; - margin:0 0 5px; - padding:0; -} - -#mainBodyRight ul.videoPreviews h3 { - padding:0; - margin:0; - font-size:100%; -} - -#mainBodyRight ul.videoPreviews a { - text-decoration:none; - height:108px; - border:1px solid #FFF; -} - -#mainBodyRight ul.videoPreviews a:hover { - border:1px solid #CCDADA; -} - -#mainBodyRight ul.videoPreviews a.selected { - border:1px solid #FFF; -} - -#mainBodyRight ul.videoPreviews p { - line-height:1.2em; - padding:0; - margin:4px 0 0 130px; -} - -#mainBodyRight ul.videoPreviews img { - margin-top:5px; -} - -/* Pretty printing styles. Used with prettify.js. */ - -.str { color: #080; } -.kwd { color: #008; } -.com { color: #800; } -.typ { color: #606; } -.lit { color: #066; } -.pun { color: #660; } -.pln { color: #000; } -dl.tag-list dt code, -.tag { color: #008; } -dl.atn-list dt code, -.atn { color: #828; } -.atv { color: #080; } -.dec { color: #606; } - -@media print { - .str { color: #060; } - .kwd { color: #006; font-weight: bold; } - .com { color: #600; font-style: italic; } - .typ { color: #404; font-weight: bold; } - .lit { color: #044; } - .pun { color: #440; } - .pln { color: #000; } - .tag { color: #006; font-weight: bold; } - .atn { color: #404; } - .atv { color: #060; } -} - - -#title { - border-bottom: 4px solid #ccc; - display:none; -} - -#title h1 { - color:#336666; - margin:0; - padding: 5px 10px; - font-size: 1em; - line-height: 15px; -} - -#title h1 .small{ - color:#000; - margin:0; - font-size: 13px; - padding:0 0 0 15px; -} - -/* SIDE NAVIGATION */ - -#side-nav { - padding:0 6px 0 0; - background-color: #fff; - font-size:12px; -} - -#resize-packages-nav { -/* keeps the resize handle below the h-scroll handle */ - height:270px; - overflow:hidden; - max-height:100%; -} - -#packages-nav { - height:270px; - max-height:inherit; - position:relative; - overflow:auto; -} - -#classes-nav, -#devdoc-nav { - overflow:auto; - position:relative; -} - -#side-nav ul { - list-style: none; - margin: 0; - padding:5px 0; -} - -#side-nav ul ul { - margin: .5em 0 0 0; - padding: 0; -} - -#side-nav li { - padding:0; - padding:1px 0 1px 0; - zoom:1; -} - -#side-nav li span.heading, -#side-nav li h2 { - display:block; - font-size:12px; - font-weight: bold; - margin:.5em 0 0 0; - padding: 3px 0 1px 9px; -} - -#side-nav li a { - display: inline-block; /* needed to apply padding to line-wraps */ - text-decoration:none; - padding: 0 0 0 18px; - zoom:1; -} - -#side-nav li a span+span { - display:none; -} - -#side-nav li a:hover { - text-decoration:underline; -} - -#side-nav li a+a { - padding: 0; -} -/*second level (nested) list*/ -#side-nav li li li a { - padding: 0 0 0 28px; -} -/*third level (nested) list*/ -#side-nav li li li li a { - padding: 0 0 0 38px; -} - -#side-nav .selected { - background-color: #435a6e; - color: #fff; - font-weight:bold; -} - -#side-nav .selected a { - color: #fff; - text-decoration:none; -} - -#side-nav strong { - display:block; -} - -#side-nav .toggle-list .toggle-img { - margin:0; - padding:0; - position:absolute; - top:0; - left:0; - height:16px; - width:15px; - outline-style:none; -} -/* second-level toggle */ -#side-nav .toggle-list .toggle-list .toggle-img { - left:10px; -} - -#side-nav .closed .toggle-img, -#side-nav .open .closed .toggle-img { - background:url('images/triangle-closed-small.png') 7px 4px no-repeat; -} -#side-nav .open .toggle-img { - background:url('images/triangle-opened-small.png') 7px 4px no-repeat; -} - -#side-nav .toggle-list { - position:relative; -} - -#side-nav .toggle-list ul { - margin:0; - display:none; -} - -#side-nav .toggle-list div { - display:block; -} - -#index-links .selected { - background-color: #fff; - color: #000; - font-weight:normal; - text-decoration:none; -} - -#index-links { - padding:7px 0 4px 10px; -} - -/* nav tree */ - -#nav-tree ul { - padding:5px 0 1.5em; -} - -#side-nav #nav-tree ul li a, -#side-nav #nav-tree ul li span.no-children { - padding: 0 0 0 0; - margin: 0; -} - -#nav-tree .plus { - margin: 0 3px 0 0; -} - -#nav-tree ul ul { - list-style: none; - margin: 0; - padding: 0 0 0 0; -} - -#nav-tree ul li { - margin: 0; - padding: 0 0 0 0; - white-space: nowrap; -} - -#nav-tree .children_ul { - margin:0; -} - -#nav-tree a.nolink { - color: black; - text-decoration: none; -} - -#nav-tree span.label { - width: 100%; -} - -#nav-tree { - overflow-x: auto; - overflow-y: scroll; -} - -#nav-swap { - font-size:10px; - line-height:10px; - margin-left:1em; - text-decoration:none; - display:block; -} - -#tree-link { - -} - -/* DOCUMENT BODY */ - -#doc-content { - overflow:auto; -} - -#jd-header { - background-color: #E2E2E2; - padding: 7px 15px; -} - -#jd-header h1 { - margin: 0 0 10px; - font-size:1.7em; -} - -#jd-header .crumb { - font-size:.9em; - line-height:1em; - color:#777; -} - -#jd-header .crumb a, -#jd-header .crumb a:visited { - text-decoration:none; - color:#777; -} - -#jd-header .crumb a:hover { - text-decoration:underline; -} - -#jd-header table { - margin:0; - padding:0; -} - -#jd-header td { - border:none; - padding:0; - vertical-align:top; -} - -#jd-header.guide-header { - background-color:#fff; - color:#435a6e; - height:50px; -} - -#jd-descr { - position:relative; -} - -/* summary tables for reference pages */ -.jd-sumtable { - margin: .5em 1em 1em 1em; - width:95%; /* consistent table widths; within IE's quirks */ - font-size:.9em; -} - -.jd-sumtable a { - text-decoration:none; -} - -.jd-sumtable a:hover { - text-decoration:underline; -} - -/* the link inside a sumtable for "Show All/Hide All" */ -.toggle-all { - display:block; - float:right; - font-weight:normal; - font-size:0.9em; -} - -/* adjustments for in/direct subclasses tables */ -.jd-sumtable-subclasses { - margin: 1em 0 0 0; - max-width:968px; -} - -/* extra space between end of method name and open-paren */ -.sympad { - margin-right: 2px; -} - -/* right alignment for the return type in sumtable */ -.jd-sumtable .jd-typecol { - text-align:right; -} - -/* adjustments for the expando table-in-table */ -.jd-sumtable-expando { - margin:.5em 0; - padding:0; -} - -/* a div that holds a short description */ -.jd-descrdiv { - padding:3px 1em 0 1em; - margin:0; - border:0; -} - -/* page-top-right container for reference pages (holds -links to summary tables) */ -#api-info-block { - font-size:.8em; - padding:6px 10px; - font-weight:normal; - float:right; - text-align:right; - color:#999; - max-width:70%; -} - -#api-level-toggle { - padding:0 10px; - font-size:11px; - float:right; -} - -#api-level-toggle label.disabled { - color:#999; -} - -div.api-level { - font-size:.8em; - font-weight:normal; - color:#999; - float:right; - padding:0 7px 0; - margin-top:-25px; -} - -#api-info-block div.api-level { - font-size:1.3em; - font-weight:bold; - float:none; - color:#444; - padding:0; - margin:0; -} - -/* Force link colors for IE6 */ -div.api-level a { - color:#999; -} -#api-info-block div.api-level a:link { - color:#444; -} -#api-level-toggle a { - color:#999; -} - -div#deprecatedSticker { - display:none; - z-index:99; - position:fixed; - right:15px; - top:114px; - margin:0; - padding:1em; - background:#FFF; - border:1px solid #dddd00; - box-shadow:-5px 5px 10px #ccc; - -moz-box-shadow:-5px 5px 10px #ccc; - -webkit-box-shadow:-5px 5px 10px #ccc; -} - -div#naMessage { - display:none; - width:555px; - height:0; - margin:0 auto; -} - -div#naMessage div { - z-index:99; - width:450px; - position:fixed; - margin:50px 0; - padding:4em 4em 3em; - background:#FFF; - border:1px solid #dddd00; - box-shadow:-10px 10px 40px #888; - -moz-box-shadow:-10px 10px 40px #888; - -webkit-box-shadow:-10px 10px 40px #888; -} -/* IE6 can't position fixed */ -* html div#naMessage div { position:absolute; } - -div#naMessage strong { - font-size:1.1em; -} - -.absent, -.absent a:link, -.absent a:visited, -.absent a:hover, -.absent * { - color:#bbb !important; - cursor:default !important; - text-decoration:none !important; -} - -#api-level-toggle a, -.api-level a { - color:inherit; - text-decoration:none; -} - -#api-level-toggle a:hover, -.api-level a:hover { - color:inherit; - text-decoration:underline !important; - cursor:pointer !important; -} - -#side-nav li.absent.selected, -#side-nav li.absent.selected *, -#side-nav div.label.absent.selected, -#side-nav div.label.absent.selected * { - background-color:#eaeaea !important; -} -/* IE6 quirk (won't chain classes, so just keep background blue) */ -* html #side-nav li.selected, -* html #side-nav li.selected *, -* html #side-nav div.label.selected, -* html #side-nav div.label.selected * { - background-color: #435a6e !important; -} - - -.absent h4.jd-details-title, -.absent h4.jd-details-title * { - background-color:#f6f6f6 !important; -} - -.absent img { - opacity: .3; - filter: alpha(opacity=30); - -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; -} - - -/* applies to a div containing links to summary tables */ -.sum-details-links { - padding:0; - font-weight:normal; -} - -.sum-details-links a { - text-decoration:none; -} - -.sum-details-links a:hover { - text-decoration:underline; -} - - -/* inheritance table */ -.jd-inheritance-table { - border-spacing:0; - margin:0; - padding:0; - font-size:.9em; -} -.jd-inheritance-table td { - border: none; - margin: 0; - padding: 0; -} -.jd-inheritance-table .jd-inheritance-space { - font-weight:bold; - width:1em; -} -.jd-inheritance-table .jd-inheritance-interface-cell { - padding-left: 17px; -} - -#jd-content { - padding: 18px 15px; -} - -hr { - background-color:#ccc; - border-color:#fff; - margin:2em 0 1em; -} - -/* DOC CLASSES */ - -#jd-content h1 { -/*sdk page*/ - font-size:1.6em; - color:#336666; - margin:0 0 .5em; -} - -#jd-content h2 { - font-size:1.45em; - color:#111; - border-top:2px solid #ccc; - padding: .5em 0 0; - margin: 2em 0 1em 0; -} - -#jd-content h3 { - font-size:1.3em; - color:#3a3a3a; - padding: 0; - margin: 1.5em 0 .65em 0; -} - -#jd-content h4 { - font-size:1.1em; - color:#3a3a3a; - padding: 0; - margin: 1.25em 0 .65em 0; -} - -#jd-content h5 { - font-size:1.0em; - color:#3a3a3a; - padding: 0; - margin: 1em 0 .65em 0; -} - -#jd-content .small-header { - font-size:1em; - color:#000; - font-weight:bold; - border:none; - padding:0; - margin:1em 0 .5em; - position:inherit; -} - -#jd-content table { - margin: 0 0 1em 1em; -} - -#jd-content img { - margin: 0 0 1em 1em; -} - -#jd-content li img, -#jd-content dd img { - margin:.5em 0 .5em 1em; -} - -.nolist { - list-style:none; - padding:0; - margin:0 0 1em 1em; -} - -.nolist li { - padding:0 0 2px; - margin:0; -} - -h4 .normal { - font-size:.9em; - font-weight:normal; -} - -.caps { - font-variant:small-caps; - font-size:1.2em; -} - -dl.tag-list dl.atn-list { - padding:0 0 0 2em; -} - -.jd-details { -/* border:1px solid #669999; - padding:4px; */ - margin:0 0 1em; -} - -/* API reference: a container for the -.tagdata blocks that make up the detailed -description */ -.jd-details-descr { - padding:0; - margin:.5em .25em; -} - -/* API reference: a block containing -a detailed description, a params table, -seealso list, etc */ -.jd-tagdata { - margin:.5em 1em; -} - -.jd-tagdata p { - margin:0 0 1em 1em; -} - -/* API reference: adjustments to -the detailed description block */ -.jd-tagdescr { - margin:.25em 0 .75em 0; - line-height:1em; -} - -.jd-tagdescr p { - margin:.5em 0; - padding:0; - -} - -.jd-tagdescr ol, -.jd-tagdescr ul { - margin:0 2.5em; - padding:0; -} - -.jd-tagdescr table, -.jd-tagdescr img { - margin:.25em 1em; -} - -.jd-tagdescr li { -margin:0 0 .25em 0; -padding:0; -} - -/* API reference: heading marking -the details section for constants, -attrs, methods, etc. */ -h4.jd-details-title { - font-size:1.15em; - background-color: #E2E2E2; - margin:1.5em 0 .6em; - padding:3px 95px 3px 3px; /* room for api-level */ -} - -h4.jd-tagtitle { - margin:0; -} - -/* API reference: heading for "Parameters", "See Also", etc., -in details sections */ -h5.jd-tagtitle { - margin:0 0 .25em 0; - font-size:1em; -} - -.jd-tagtable { - margin:0; -} - -.jd-tagtable td, -.jd-tagtable th { - border:none; - background-color:#fff; - vertical-align:top; - font-weight:normal; - padding:2px 10px; -} - -.jd-tagtable th { - font-style:italic; -} - -#jd-content table h2 { - background-color: #d6d6d6; - font-size: 1.1em; - margin:0 0 10px; - padding:5px; - left:0; - 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('images/icon_design.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; - background-color: #DAF3FC; - border:1px solid #d3ecf5; - border-radius:5px; - -moz-border-radius:5px; - -webkit-border-radius:5px; -} - -div.special p { - margin: .5em 0 0 0; -} - -div.special ol { - margin: 0; -} - -div.special ol li { - margin: 0; - padding: 0; -} - -#jd-content div.special h2, -#jd-content div.special h3 { - color:#669999; - font-size:1.2em; - border:none; - margin:0 0 .5em; - padding:0; -} - -#jd-content div.special.reference h2, -#jd-content div.special.reference h3, -#jd-content div.special.reference h4 { - color:#000; - font-size:1em; - border:none; - font-weight:bold; - margin:.5em 0; - padding:0; -} - -p.note, div.note, -p.caution, div.caution, -p.warning, div.warning { - margin: 1em; - padding: 0 0 0 .5em; - border-left: 4px solid; -} - -p.special-note, -div.special-note { - background-color:#EBF3DB; - padding:10px 20px; - margin:0 0 1em; -} - -p.note, -div.note { - border-color: #99aacc; -} - -p.warning, -div.warning { - border-color: #aa0033; -} - -p.caution, -div.caution { - border-color: #ffcf00; -} - -li .note, -li .caution, -li .warning { - margin: .5em 0 0 0; - padding: .2em .5em .2em .9em; -} - -/* Makes sure the first paragraph does not add top-whitespace within the box*/ -li .note>p:first-child, -li .caution>p:first-child, -li .warning>p:first-child { - margin-top:0; - padding-top:0; -} - -dl.xml dt { - font-variant:small-caps; - font-size:1.2em; -} - -dl.xml dl { - padding:0; -} - -dl.xml dl dt { - font-variant:normal; - font-size:1em; -} - -.listhead li { - font-weight: bold; -} - -.listhead li *, /*ie*/.listhead li li { - font-weight: normal; -} - -ol.no-style, -ul.no-style { - list-style:none; - padding-left:1em; -} - -.new, -.new-child { - font-size: .78em; - font-weight: bold; - color: #ff3d3d; - text-decoration: none; - vertical-align:top; - line-height:.9em; - white-space:nowrap; -} - -.toggle-list.open .new-child { - display:none; -} - -pre.classic { - background-color:transparent; - border:none; - padding:0; -} - -p.img-caption { - margin: -0.5em 0 1em 1em; /* matches default img left-margin */ -} - -div.figure { - float:right; - clear:right; - margin:1em 0 0 0; - padding:0 0 0 3em; - background-color:#fff; - /* width must be defined w/ an inline style matching the image width */ -} - -#jd-content -div.figure img { - margin: 0 0 1em; -} - -div.figure p.img-caption { - margin: -0.5em 0 1em 0; -} - -p.table-caption { - margin: 0 0 0.5em 1em; /* matches default table left-margin */ -} - - -/* toggle for misc content (such as long sample code) - see toggleContent() script in android-developer-docs.js */ -.toggle-content.closed .toggle-content-toggleme { - display:none; -} - -.toggle-content a[href="#"] { - text-decoration:none; - color:inherit; -} - -.toggle-content-toggleme { - padding-bottom:1px; /* fixes animation bounce due to margins */ -} - -#jd-content .toggle-content img.toggle-content-img { - margin:0; -} - - -/* BEGIN quickview sidebar element styles */ - -#qv-wrapper { - float: right; - width:310px; /* +35px padding */ - background-color:#fff; - margin:-48px 0 2px 0; - padding:0 0 20px 35px; -} - -#qv { - background-color:#fff; - border:4px solid #dee8f1; - margin:0; - padding:0 5px 5px; - width:292px; /* +10px padding; +8px border */ - font-size:.9em; -} - -#qv ol { - list-style:none; - padding: 0; -} - -#qv ol ol{ - list-style:none; - padding: 0 0 0 12px; - margin:0; -} - -#qv ul { - padding: 0 10px 0 2em; -} - -#qv li { - padding: 0 10px 3px; - line-height: 1.2em; -} - -#qv li li { - padding: 3px 10px 0; -} - -#qv ul li { - padding: 0 10px 0 0; -} - -#qv li.selected a { - color:#555; - text-decoration:none; -} - -#qv a, -#qv a code { - color:#cc6600; -} - -#qv p { - margin:8px 0 0; - padding:0 10px; -} - -#jd-content #qv h2 { - font-size:1.05em; - font-weight:bold; - margin:12px 0 .25em 0; - padding:0 10px; - background-color:transparent; - color:#7BB026; - border:none; - left:0; - z-index:1; -} - -#qv-extra #rule { - padding: 0 10px; - margin: 0; -} - -#qv-sub-rule { - padding: 5px 15px 10px; - margin: 0; -} - -#jd-content -#qv-sub-rule h2 { - margin: 0 0 .5em 0; -} - -/* END quickview sidebar element styles */ - -/* Begin sidebox sidebar element styles */ - -.sidebox-wrapper { - float:right; - clear:right; - width:310px; /* +35px padding */ - background-color:#fff; - margin:0; - padding:0 0 20px 35px; -} - -.sidebox { - border-left:1px solid #dee8f1; - background-color:#ffffee; - margin:0; - padding:8px 12px; - font-size:0.9em; - width:285px; /* +24px padding; +1px border */ -} - -.sidebox p { - margin-bottom: .75em; -} - -.sidebox ul { - padding: 0 0 0 1.5em; -} - -.sidebox li ul { - margin-top:0; - margin-bottom:.1em; -} - -.sidebox li { -padding:0 0 0 0em; -} - -#jd-content .sidebox h2, -#jd-content .sidebox h3, -#jd-content .sidebox h4, -#jd-content .sidebox h5 { - border:none; - font-size:1em; - margin:0; - padding:0 0 8px; - left:0; - z-index:0; -} - -.sidebox hr { - background-color:#ccc; - border:none; -} - -/* End sidebox sidebar element styles */ - -/* BEGIN developer training bar styles */ - -div#tb-wrapper { - float: right; - clear:right; - width:380px; /* +25px padding = 405 */ - background-color:#fff; - margin:0 0 2px 0; - padding:0 0 20px 25px; -} - -div#tb { - margin:0; - padding:0 15px; - width:350px; /* +15px padding = 380 */ - font-size:.9em; - background:#e9e9e9; - border:1px solid #aaa; - border-radius:5px; - -moz-border-radius:5px; - -webkit-border-radius:5px; - overflow:auto; -} - -div#tb h2 { - font-size:1.3em; - font-weight:bold; - margin:1em 0; - padding:0; - background-color:transparent; - border:none; - clear:both; -} - -div.download-box a.button { - color: #069; - font-size:1.1em; - font-weight:bold; - text-decoration:none; - height:27px; - line-height:27px; - text-align:center; - padding:5px 8px; - background-color: #fff; - border: 1px solid #aaa; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} - -div.download-box a.button:hover { - border-color: #09C; - background-color: #4CADCB; - background-image: -webkit-gradient(linear,left top,left bottom,from(#5dbcd9),to(#4cadcb)); - background-image: -webkit-linear-gradient(top,#5dbcd9,#4cadcb); - background-image: -moz-linear-gradient(top,#5dbcd9,#4cadcb); - background-image: -ms-linear-gradient(top,#5dbcd9,#4cadcb); - background-image: -o-linear-gradient(top,#5dbcd9,#4cadcb); - background-image: linear-gradient(top,#5dbcd9,#4cadcb); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#5dbcd9',EndColorStr='#4cadcb'); - color: #fff; -} - -div.download-box a.button:active { - background-color: #1E799A; - background-image: none; - border-color: #30B7E6; -} - -div.download-box p.filename { - font-size:0.85em; - color:#888; - margin:4px 0 1em 10px; -} - -/* End developer training bar */ - -/* Training nav bar (previous/next) */ - -div.training-nav-top { - float: right; - width:380px; /* +25px padding = 405 */ - margin:-58px 0 0 0; - padding:0 0 20px 25px; -} - -div.training-nav-bottom { - padding:1px; /* for weird FF bug (scrollbar appears) */ - margin:3em 0; - overflow:auto; -} - -div.training-nav-button-next a, -div.training-nav-button-previous a { - display:block; - width:160px; - height:55px; - padding:4px 7px; - border:1px solid #aaa; - border-radius:5px; - -moz-border-radius:5px; - -webkit-border-radius:5px; - text-decoration:none; - font-weight:bold; -} - -div.training-nav-button-next a:hover, -div.training-nav-button-previous a:hover { - border:1px solid #069; /* match link color */ -} - -div.training-nav-button-next a:active, -div.training-nav-button-previous a:active { - border:1px solid #f00; /* match link color */ -} - -div.training-nav-button-previous { - float:left; - text-align:left; -} - -div.training-nav-button-next { - float:right; - text-align:right; -} - -span.training-nav-button-title { - display:block; - font-size:.85em; - font-weight:normal; - line-height:1.3em; - margin:.5em 0 0; -} - -/* End training nav bar */ - -/* BEGIN image and caption styles (originally for UI Guidelines docs) */ - -table.image-caption { - padding:0; - margin:.5em 0; - border:0; -} - -td.image-caption-i { - font-size:92%; - padding:0 5px; - margin:0; - border:0; -} - -td.image-caption-i img { - padding:0 1em; - margin:0; -} - -.image-list { - width:24px; - text-align:center; -} - -td.image-caption-c { - font-size:92%; - padding:1em 2px 2px 2px; - margin:0; - border:0; - width:350px; -} - -.grad-rule-top { -background-image:url(images/grad-rule-qv.png); -background-repeat:no-repeat; -padding-top:1em; -margin-top:0; -} - -.image-caption-nested { - margin-top:0; - padding:0 0 0 1em; -} - -.image-caption-nested td { - padding:0 4px 2px 0; - margin:0; - border:0; -} - -/* END image and caption styles */ - -/* table of contents */ - -ol.toc { - margin: 0 0 1em 0; - padding: 0; - list-style: none; - font-size:95%; -} - -ol.toc li { - font-weight: bold; - margin: 0 0 .5em 1em; - padding: 0; -} - -ol.toc li p { - font-weight: normal; -} - -ol.toc li ol { - margin: 0; - padding: 0; -} - -ol.toc li li { - padding: 0; - margin: 0 0 0 1em; - font-weight: normal; - list-style: none; -} - -table ol.toc { - margin-left: 0; -} - -.columns td { - padding:0 5px; - border:none; -} - -/* link table */ -.jd-linktable { - margin: 0 0 1em; - border-bottom: 1px solid #888; -} -.jd-linktable th, -.jd-linktable td { - padding: 3px 5px; - vertical-align: top; - text-align: left; - border:none; -} -.jd-linktable tr { - background-color: #fff; -} -.jd-linktable td { - border-top: 1px solid #888; - background-color: inherit; -} -.jd-linktable td p { - padding: 0 0 5px; -} -.jd-linktable .jd-linkcol { -} -.jd-linktable .jd-descrcol { -} -.jd-linktable .jd-typecol { - text-align:right; -} -.jd-linktable .jd-valcol { -} -.jd-linktable .jd-commentrow { - border-top:none; - padding-left:25px; -} -.jd-deprecated-warning { - margin-top: 0; - margin-bottom: 10px; -} - -tr.alt-color { - background-color: #f6f6f6; -} - -/* expando trigger */ -#jd-content .jd-expando-trigger-img { - margin:0; -} - -/* jd-expando */ -.jd-inheritedlinks { - padding:0 0 0 13px -} - -/* SDK PAGE */ -table.download tr { - background-color:#d9d9d9; -} - -table.download tr.alt-color { - background-color:#ededed; -} - -table.download td, -table.download th { - border:2px solid #fff; - padding:10px 5px; -} - -table.download th { - background-color:#6d8293; - color:#fff; -} - -/* INLAY 180 COPY and 240PX EXTENSION */ -/* modified to 43px so that all browsers eliminate the package panel h-scroll */ -.g-tpl-240 .g-unit, -.g-unit .g-tpl-240 .g-unit, -.g-unit .g-unit .g-tpl-240 .g-unit { - display: block; - margin: 0 0 0 243px; - width: auto; - float: none; -} -.g-unit .g-unit .g-tpl-240 .g-first, -.g-unit .g-tpl-240 .g-first, -.g-tpl-240 .g-first { - display: block; - margin: 0; - width: 243px; - float: left; -} -/* 240px alt */ -.g-tpl-240-alt .g-unit, -.g-unit .g-tpl-240-alt .g-unit, -.g-unit .g-unit .g-tpl-240-alt .g-unit { - display: block; - margin: 0 243px 0 0; - width: auto; - float: none; -} -.g-unit .g-unit .g-tpl-240-alt .g-first, -.g-unit .g-tpl-240-alt .g-first, -.g-tpl-240-alt .g-first { - display: block; - margin: 0; - width: 243px; - float: right; -} - -/* 200px */ -.g-tpl-200 .g-unit, -.g-unit .g-tpl-200 .g-unit, -.g-unit .g-unit .g-tpl-200 .g-unit { - display: block; - margin: 0 0 0 200px; - width: auto; - float: none; -} -.g-unit .g-unit .g-tpl-200 .g-first, -.g-unit .g-tpl-200 .g-first, -.g-tpl-200 .g-first { - display: block; - margin: 0; - width: 200px; - float: left; -} -/* 200px alt */ -.g-tpl-200-alt .g-unit, -.g-unit .g-tpl-200-alt .g-unit, -.g-unit .g-unit .g-tpl-200-alt .g-unit { - display: block; - margin: 0 200px 0 0; - width: auto; - float: none; -} -.g-unit .g-unit .g-tpl-200-alt .g-first, -.g-unit .g-tpl-200-alt .g-first, -.g-tpl-200-alt .g-first { - display: block; - margin: 0; - width: 200px; - float: right; -} - -/* 190px */ -.g-tpl-190 .g-unit, -.g-unit .g-tpl-190 .g-unit, -.g-unit .g-unit .g-tpl-190 .g-unit { - display: block; - margin: 0 0 0 190px; - width: auto; - float: none; -} -.g-unit .g-unit .g-tpl-190 .g-first, -.g-unit .g-tpl-190 .g-first, -.g-tpl-190 .g-first { - display: block; - margin: 0; - width: 190px; - float: left; -} -/* 190px alt */ -.g-tpl-190-alt .g-unit, -.g-unit .g-tpl-190-alt .g-unit, -.g-unit .g-unit .g-tpl-190-alt .g-unit { - display: block; - margin: 0 190px 0 0; - width: auto; - float: none; -} -.g-unit .g-unit .g-tpl-190-alt .g-first, -.g-unit .g-tpl-190-alt .g-first, -.g-tpl-190-alt .g-first { - display: block; - margin: 0; - width: 190px; - float: right; -} - -/* 180px */ -.g-tpl-180 .g-unit, -.g-unit .g-tpl-180 .g-unit, -.g-unit .g-unit .g-tpl-180 .g-unit { - display: block; - margin: 0 0 0 180px; - width: auto; - float: none; -} -.g-unit .g-unit .g-tpl-180 .g-first, -.g-unit .g-tpl-180 .g-first, -.g-tpl-180 .g-first { - display: block; - margin: 0; - width: 180px; - float: left; -} -/* 180px alt */ -.g-tpl-180-alt .g-unit, -.g-unit .g-tpl-180-alt .g-unit, -.g-unit .g-unit .g-tpl-180-alt .g-unit { - display: block; - margin: 0 180px 0 0; - width: auto; - float: none; -} -.g-unit .g-unit .g-tpl-180-alt .g-first, -.g-unit .g-tpl-180-alt .g-first, -.g-tpl-180-alt .g-first { - display: block; - margin: 0; - width: 180px; - float: right; -} - - -/* JQUERY RESIZABLE STYLES */ -.ui-resizable { position: relative; } -.ui-resizable-handle { position: absolute; display: none; font-size: 0.1px; z-index:1; } -.ui-resizable .ui-resizable-handle { display: block; } -body .ui-resizable-disabled .ui-resizable-handle { display: none; } -body .ui-resizable-autohide .ui-resizable-handle { display: none; } -.ui-resizable-s { cursor: s-resize; height: 6px; width: 100%; bottom: 0px; left: 0px; - background: transparent url("images/resizable-s2.gif") repeat scroll center top; } -.ui-resizable-e { cursor: e-resize; width: 6px; right: 0px; top: 0px; height: 100%; - background: transparent url("images/resizable-e2.gif") repeat scroll right center; } - -@media print { - - body { - overflow:visible; - } - - #header { - height:60px; - } - - #headerLeft { - padding:0; - } - - #header-tabs, - #headerRight, - #side-nav, - #api-info-block { - display:none; - } - - #body-content { - position:inherit; - } - - #doc-content { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } - - #jd-header { - padding:10px 0; - } - - #jd-content { - padding:15px 0 0; - } - - #footer { - float:none; - margin:2em 0 0; - } - - h4.jd-details-title { - border-bottom:1px solid #666; - } - - pre { - /* these allow lines to break (if there's a white space) */ - overflow: visible; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - } - - h1, h2, h3, h4, h5, h6 { - page-break-after: avoid; - } - - table, img { - page-break-inside: avoid; - } -} diff --git a/tools/droiddoc/templates-sac/assets/css/default.css b/tools/droiddoc/templates-sac/assets/css/default.css deleted file mode 100644 index 4eafa25026..0000000000 --- a/tools/droiddoc/templates-sac/assets/css/default.css +++ /dev/null @@ -1,4662 +0,0 @@ -/* color definitions */ -/* 16 column layout */ -/* clearfix idiom */ -/* common mixins */ -/* page layout + top-level styles */ -::selection { - background-color: #0099cc; - color: #fff; } -::-webkit-selection { - background-color: #0099cc; - color: #fff; } -::-moz-selection { - background-color: #0099cc; - color: #fff; } - -html, body { - height: 100%; - margin: 0; - padding: 0; - background-color:#F9F9F9; - -webkit-font-smoothing: antialiased; - /* prevent subpixel antialiasing, which thickens the text */ - /* text-rendering: optimizeLegibility; */ - /* turned off ligatures due to bug 5945455 */ } - -body { - color: #222; - font: 14px/19px Roboto, sans-serif; - font-weight: 400; - letter-spacing:.1; - padding:0 10px; } - -#page-container { - width: 940px; - margin: 0 40px; } - -#page-header { - height: 80px; - margin-bottom: 20px; - font-size: 48px; - line-height: 48px; - font-weight: 100; - padding-left: 10px; } - #page-header a { - display: block; - position: relative; - top: 20px; - text-decoration: none; - color: #555555 !important; } - -#main-row { - display: inline-block; } - #main-row:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; } - * html #main-row { - height: 1px; } - -#page-footer { - margin-left: 190px; - margin-top: 80px; - color: #999999; - padding-bottom: 40px; - font-size: 12px; - line-height: 15px; } - #page-footer a { - color: #777777; } - #page-footer #copyright { - margin-bottom: 10px; } - -#nav-container { - width: 160px; - min-height: 10px; - margin-right: 20px; - float: left; } - -#nav { - margin:0; - padding:0 0 30px; -} - -#side-nav { - min-height:5px; /* silly way to avoid doc floating left when nav goes fixed */ - margin-bottom:1px; -} -#devdoc-nav { - outline:none; - width:auto; - margin: 20px 0 0; } - -#devdoc-nav h2 { - border:0; -} - -#devdoc-nav.fixed { - position: fixed; - margin:0; - top: 20px; } - -#devdoc-nav span.small { - font-size:12px; - font-weight:normal; -} - -#content { - width: 760px; - float: left; } - -a:hover, -acronym:hover { - color: #7aa1b0 !important; } - -a:focus, -a:active { - color: #33b5e5 !important; } - -a.external-link { - background:url('../images/styles/open_new_page.png') no-repeat 100% 50%; - padding-right:16px; -} - -.nowrap { - white-space: nowrap; -} - -img { - border: none; } -#jd-content img { - margin-bottom:15px; -} - -ul { - margin: 0; - padding: 0; } - -strong { - font-weight: 500; } - -em { - font-style: italic; } - -acronym, -.tooltip-link { - border-bottom: 1px dotted #555555; - cursor: help; } - -acronym:hover, -.tooltip-link:hover { - color: #7aa1b0; - border-bottom-color: #7aa1b0; } - -img.with-shadow, -video.with-shadow { - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25); } - -/* disclosures mixin */ -/* content layout */ -.layout-content-row { - display: inline-block; - margin-bottom: 10px; } - .layout-content-row:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; } - * html .layout-content-row { - height: 1px; } - -.layout-content-col { - float: left; - margin-left: 20px; } - .layout-content-col:first-child { - margin-left: 0; } - .layout-content-col h3, - .layout-content-col h4 { - margin-top:0; } - -.layout-content-col.span-1 { - width: 40px; } - -.layout-content-col.span-2 { - width: 100px; } - -.layout-content-col.span-3 { - width: 160px; } - -.layout-content-col.span-4 { - width: 220px; } - -.layout-content-col.span-5 { - width: 280px; } - -.layout-content-col.span-6 { - width: 340px; } - -.layout-content-col.span-7 { - width: 400px; } - -.layout-content-col.span-8 { - width: 460px; } - -.layout-content-col.span-9 { - width: 520px; } - -.layout-content-col.span-10 { - width: 580px; } - -.layout-content-col.span-11 { - width: 640px; } - -.layout-content-col.span-12 { - width: 700px; } - -.layout-content-col.span-13 { - width: 760px; } - -.vspace.size-1 { - height: 10px; } - -.vspace.size-2 { - height: 20px; } - -.vspace.size-3 { - height: 30px; } - -.vspace.size-4 { - height: 40px; } - -.vspace.size-5 { - height: 50px; } - -.vspace.size-6 { - height: 60px; } - -.vspace.size-7 { - height: 70px; } - -.vspace.size-8 { - height: 80px; } - -.vspace.size-9 { - height: 90px; } - -.vspace.size-10 { - height: 100px; } - -.vspace.size-11 { - height: 110px; } - -.vspace.size-12 { - height: 120px; } - -.vspace.size-13 { - height: 130px; } - -.vspace.size-14 { - height: 140px; } - -.vspace.size-15 { - height: 150px; } - -.vspace.size-16 { - height: 160px; } - -/* nav */ -#nav { - /* section header divs */ - /* expanded section header divs */ - /* sublinks */ } - #nav li { - list-style-type: none; - font-size: 14px; - margin:0; - padding:0; - line-height: 15px; } - #nav a { - color: #555555; - text-decoration: none; - word-wrap:break-word; } - #nav .nav-section-header { - position: relative; - margin-bottom: 1px; - padding: 0 30px 0 0; } - #nav li.selected a, #nav li.selected > .nav-section-header > a { - color: #09C; - } - #nav li.selected ul li a { - /* don't highlight child items */ - color: #555555; } - #nav .nav-section .nav-section .nav-section-header { - /* no white line between second level sections */ - margin-bottom: 0; } - /* section header links */ - #nav > li > div > a { - display: block; - color: #333333; - font-weight: 500; - padding: 10px 0 10px 10px; } - #nav .nav-section-header:after { - content: ''; - background: transparent url(../images/styles/disclosure_down.png) no-repeat scroll 50% 50%; - width: 34px; - height: 34px; - display: block; - position: absolute; - top: 0; - right: 0; } - #nav .nav-section-header.empty:after { - display: none; } - /* nested nav headers */ - #nav .nav-section .nav-section { - position: relative; - padding: 0; - margin: 0; } - #nav .nav-section li a { - /* first gen child (2nd level li) */ - display:block; - font-weight: normal; - text-transform: none; - padding: 7px 5px 7px 10px; - } - #nav .nav-section li li a { - /* second gen child (3rd level li) */ - padding: 5px 5px 5px 10px; - } - #nav li.expanded .nav-section-header { - background:#e9e9e9; - background: rgba(0, 0, 0, 0.05); } - #nav li.expanded li .nav-section-header { - background: transparent; } - #nav li.expanded li ul { - /* 3rd level ul */ - padding:0 0 0 10px; - } - #nav li.expanded > .nav-section-header:after { - content: ''; - background: transparent url(../images/styles/disclosure_up.png) no-repeat scroll 50% 50%; - width: 34px; - height: 34px; } - #nav li.expanded li ul.tree-list-children { - padding:0; - } - #nav li.expanded li ul.tree-list-children .tree-list-children { - padding:0 0 0 10px; - } - #nav li span.tree-list-subtitle { - display:inline-block; - padding:5px 0 0 10px; - color:#555; - text-transform:uppercase; - font-size:12px; - } - #nav li span.tree-list-subtitle:before { - content: '—'; - } - #nav li span.tree-list-subtitle:after { - content: '—'; - } - #nav li ul { - display:none; - overflow: hidden; - margin: 0; } - #nav li ul.animate-height-in { - -webkit-transition: height 0.25s ease-in; - -moz-transition: height 0.25s ease-in; - transition: height 0.25s ease-in; } - #nav li ul.animate-height-out { - -webkit-transition: height 0.25s ease-out; - -moz-transition: height 0.25s ease-out; - transition: height 0.25s ease-out; } - #nav li ul li { - padding: 0; } - #nav li li li { - padding: 0; } - #nav li.expanded ul { - } - #nav li ul > li { - padding:0; - } - #nav li ul > li:last-child { - padding-bottom:5px; - } - #nav li ul.tree-list-children > li:last-child { - padding-bottom:0; - } - #nav li.expanded ul > li { - background:#efefef; - background: rgba(0, 0, 0, 0.03); } - #nav li.expanded ul > li li { - background:inherit; } - #nav li ul.tree-list-children ul { - display:block; } - -.new, -.new-child { - font-size: .78em; - font-weight: bold; - color: #ff3d3d; - vertical-align:top; - white-space:nowrap; -} - -/* content header */ -.content-header { - height: 30px; - margin:20px 0 25px; - padding:0 0 10px;} -.content-header.just-links { - margin-bottom:0; - padding-bottom:0;} - -.content-header h1 { - color:#000; - margin:0; - border-bottom:0; - padding:0; -} - -.content-footer { - border-top: 1px solid #ccc; - margin-top: 10px; - padding-top:10px; - height: 30px; -} - -.content-footer-sac { - border-top: 1px solid #ccc; -} -.content-footer .col-9 { - margin-left:0; -} -.content-footer .col-4 { - margin-right:0; -} -.content-footer.wrap { - width:940px; -} - -.paging-links { - position: relative; } - .paging-links a { - position: absolute; } - .paging-links a, - .training-nav-top a { - font-size: 14px; - line-height: 30px; - color: #555555; - text-decoration: none; - text-transform: uppercase; } - .paging-links .prev-page-link:before, - .training-nav-top .prev-page-link:before { - content: ''; - background: transparent url(../images/styles/disclosure_left.png) no-repeat scroll 50% 50%; - width: 10px; - height: 10px; - display: inline-block; - margin-right: 5px; } - .training-nav-top .next-page-link, - .training-nav-top .start-class-link, - .training-nav-top .start-course-link { - right: 10px; } - .paging-links .prev-page-link { - left: -15px; } - .paging-links .next-page-link { - right: 0px; } - .next-page-link:after, - .start-class-link:after, - .start-course-link:after, - .next-class-link:after { - content: ''; - background: transparent url(../images/styles/disclosure_right.png) no-repeat scroll 50% 50%; - width: 10px; - height: 10px; - display: inline-block; - margin-left: 5px; } - - - .training-nav-top a { - display:block; - float:left; - width:122px; - height:28px; - padding: 8px; - line-height:28px; - text-align:center; - border:1px solid #DADADA; - border-bottom:0; - } - - .training-nav-top a.next-page-link { - border-left:0; - width:123px; - } - - .paging-links a.disabled, - .training-nav-top a.disabled, - .content-footer a.disabled { - color:#bbb; - } - - .paging-links a.disabled:hover, - .training-nav-top a.disabled:hover, - .content-footer a.disabled:hover { - cursor:default; - color:#bbb !important; - } - - .training-nav-top a.start-class-link, - .training-nav-top a.start-course-link { - width:262px; - } - - /* list of classes on course landing page */ - ol.class-list { - list-style:none; - margin-left:0; - } - ol.class-list>li { - margin:0 0 15px; - padding:5px 0 0; - overflow:hidden; - border-top:1px solid #ccc; - } - ol.class-list li a.title { - font-size:16px; - margin:0; - clear:left; - display:block; - height:32px; - padding:0 4px; - } - ol.class-list li a.title h2 { - color:inherit; - margin:0 0 10px; - display:block; - float:left; - width:675px; - } - ol.class-list li a.title span { - display:none; - float:left; - font-size:18px; - font-weight:bold; - background: transparent url(../images/styles/disclosure_right.png) no-repeat scroll 50% 50%; - width: 10px; - height: 32px; - } - ol.class-list li a.title:hover { - background:#ddd; - color:#258AAF !important; - } - ol.class-list li a.title:hover span { - display:block; - } - - #jd-content - ol.class-list li img { - float:left; - clear:left; - width:64px; - margin:0 20px 0 0; - } - ol.class-list li p.description { - float:left; - display:block; - width:250px; - margin:0; - } - ol.class-list li p.description.article { - width: 550px; - } - ol.class-list ol { - float:left; - width:320px; - margin:0 0 0 30px; - list-style:none; - margin:0 0 0 20px; - } - ol.class-list div.lessons li { - margin:0 0 6px; - line-height:16px; - } - - - .hide { - display:none !important; - } - - .content-footer.next-class { - display:block; - border:0; - margin-top:0; - padding-top:0; - } - - .content-footer.next-class a.next-class-link { - display:block; - float:right; - text-transform:uppercase; - } - - - - /* inner-doc tabs w/ title */ - -div#title-tabs-wrapper { - border-bottom:1px solid #ccc; - margin:20px 0 30px; -} -h1.with-title-tabs { - display:inline-block; - margin:0 0 -1px 0; - padding:0 60px 0 0; - border-bottom:1px solid #F9F9F9; -} -ul#title-tabs { - list-style:none; - padding:0; - height:29px; - margin:0; - font-size:16px; - line-height:26px; - display:inline-block; - vertical-align:bottom; -} -ul#title-tabs li { - display:block; - float:left; - margin-right:40px; - border-bottom: 3px solid transparent; -} -ul#title-tabs li.selected { - border-bottom: 3px solid #93C; -} -ul#title-tabs li a { - color:#333; -} -ul#title-tabs li a:hover, -ul#title-tabs li a:active { - color:#93C !important; -} - - - -/* content body */ -@-webkit-keyframes glowheader { - from { - background-color: #33b5e5; - color: #000; - border-bottom-color: #000; } - - to { - background-color: transparent; - color: #33b5e5; - border-bottom-color: #33b5e5; } } - -@-moz-keyframes glowheader { - from { - background-color: #33b5e5; - color: #000; - border-bottom-color: #000; } - - to { - background-color: transparent; - color: #33b5e5; - border-bottom-color: #33b5e5; } } - -@keyframes glowheader { - from { - background-color: #33b5e5; - color: #000; - border-bottom-color: #000; } - - to { - background-color: transparent; - color: #33b5e5; - border-bottom-color: #33b5e5; } } - -h2:target, -h3:target { - -webkit-animation-name: glowheader; - -moz-animation-name: glowheader; - animation-name: glowheader; - -webkit-animation-duration: 0.7s; - -moz-animation-duration: 0.7s; - animation-duration: 0.7s; - -webkit-animation-timing-function: ease-out; - -moz-animation-timing-function: ease-out; - animation-timing-function: ease-out; } - -.design ol h4 { - margin-bottom:0; -} -.design ol { - counter-reset: item; } - .design ol>li { - font-size: 14px; - line-height: 20px; - list-style-type: none; - position: relative; } - .design ol>li:before { - content: counter(item) ". "; - counter-increment: item; - position: absolute; - left: -20px; - top: 0; } - .design ol li.value-1:before { - content: "1. "; } - .design ol li.value-2:before { - content: "2. "; } - .design ol li.value-3:before { - content: "3. "; } - .design ol li.value-4:before { - content: "4. "; } - .design ol li.value-5:before { - content: "5. "; } - .design ol li.value-6:before { - content: "6. "; } - .design ol li.value-7:before { - content: "7. "; } - .design ol li.value-8:before { - content: "8. "; } - .design ol li.value-9:before { - content: "9. "; } - .design ol li.value-10:before { - content: "10. "; } -.design .with-callouts ol>li { - list-style-position: inside; - margin-left: 0; } - .design .with-callouts ol>li:before { - display: inline; - left: -20px; - float: left; - width: 17px; - color: #33b5e5; - font-weight: 500; } -.design .with-callouts ul>li { - list-style-position: outside; } - -/* special list items */ -li.no-bullet { - list-style-type: none !important; } -li.no-bullet *{ - margin:0; } - -.design li.with-icon { - position: relative; - margin-left: 20px; - min-height: 30px; } - .design li.with-icon p { - margin-left: 0 !important; } - .design li.with-icon:before { - position: absolute; - left: -40px; - top: 0; - content: ''; - width: 30px; - height: 30px; } - .design li.with-icon.tablet:before { - background-image: url(../images/styles/ico_phone_tablet.png); } - .design li.with-icon.web:before { - background-image: url(../images/styles/ico_web.png); } - .design li.with-icon.action:before { - background-image: url(../images/styles/ico_action.png); } - .design li.with-icon.use:before { - background-image: url(../images/styles/ico_use.png); } - -/* figures and callouts */ -.figure { - position: relative; } - .figure.pad-below { - margin-bottom: 20px; } - .figure .figure-callout { - position: absolute; - color: #fff; - font-weight: 500; - font-size: 16px; - line-height: 23px; - text-align: center; - background: transparent url(../images/styles/callout.png) no-repeat scroll 50% 50%; - padding-right: 2px; - width: 30px; - height: 29px; - z-index: 1000; } - .figure .figure-callout.top { - top: -9px; } - .figure .figure-callout.right { - right: -5px; } - -.figure-caption { - margin: 0 10px 20px 0; - font-size: 14px; - line-height: 20px; - font-style: italic; } - -/* rows of figures */ -.figure-row { - font-size: 0; - line-height: 0; - /* to prevent space between figures */ } - .figure-row .figure { - display: inline-block; - vertical-align: top; } - .figure-row .figure + .figure { - margin-left: 10px; - /* reintroduce space between figures */ } - -/* video containers */ -.framed-galaxynexus-land-span-13 { - background: transparent url(../images/styles/device_galaxynexus_blank_land_span13.png) no-repeat -scroll top left; - padding: 42px 122px 62px 126px; - overflow: hidden; } - .framed-galaxynexus-land-span-13, .framed-galaxynexus-land-span-13 video, -.framed-galaxynexus-land-span-13 img { - width: 512px; - height: 286px; } - - -.framed-galaxynexus-land-span-8{ - background: transparent url(../images/styles/device_galaxynexus_blank_land_span8.png) no-repeat -scroll top left; - padding: 26px 68px 38px 72px; - overflow: hidden; } - .framed-galaxynexus-land-span-8, .framed-galaxynexus-land-span-8 video, -.framed-galaxynexus-land-span-8 img { - width: 320px; - height: 180px; } - -.framed-galaxynexus-port-span-9 { - background: transparent url(../images/styles/device_galaxynexus_blank_port_span9.png) no-repeat -scroll top left; - padding: 95px 122px 107px 124px; - overflow: hidden; } - .framed-galaxynexus-port-span-9, .framed-galaxynexus-port-span-9 video, -.framed-galaxynexus-port-span-9 img { - width: 274px; - height: 488px; } - -.framed-galaxynexus-port-span-5 { - background: transparent url(../images/styles/device_galaxynexus_blank_port_span5.png) no-repeat -scroll top left; - padding: 75px 31px 76px 33px; - overflow: hidden; } - .framed-galaxynexus-port-span-5, .framed-galaxynexus-port-span-5 video, -.framed-galaxynexus-port-span-5 img { - width: 216px; - height: 384px; } - -/* landing page disclosures */ -.landing-page-link { - text-decoration: none; - font-weight: 500; - color: #333333; } - .landing-page-link:after { - content: ''; - background: transparent url(../images/styles/disclosure_right.png) no-repeat scroll 50% 50%; - width: 10px; - height: 10px; - display: inline-block; - margin-left: 5px; } - -/* tooltips */ -.tooltip-box { - position: absolute; - background-color: rgba(0, 0, 0, 0.9); - border-radius: 2px; - font-size: 14px; - line-height: 20px; - color: #fff; - padding: 6px 10px; - max-width: 250px; - z-index: 10000; } - .tooltip-box.below:after { - position: absolute; - content: ''; - line-height: 0; - display: block; - top: -10px; - left: 5px; - border: 5px solid transparent; - border-bottom-color: rgba(0, 0, 0, 0.9); } - -/* video note */ -.video-instructions { - margin-top: 10px; - margin-bottom: 10px; } - .video-instructions:before { - content: ''; - background: transparent url(../images/styles/ico_movie_inline.png) no-repeat scroll top left; - display: inline-block; - width: 12px; - height: 12px; - margin-right: 8px; } - .video-instructions:after { - content: 'Click device screen to replay movie.'; } - -/* download buttons */ -.download-button { - display: block; - margin-bottom: 5px; - text-decoration: none; - background-color: #33b5e5; - color: #fff !important; - font-weight: 500; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.12); - padding: 6px 12px; - border-radius: 2px; } - .download-button:hover, .download-button:focus { - background-color: #0099cc; - color: #fff !important; } - .download-button:active { - background-color: #006699; } - -/* UI tables and other things found in Writing style and Settings pattern */ -.ui-table { - width: 100%; - background-color: #282828; - color: #fff; - border-radius: 2px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25); - border-collapse: separate; } - .ui-table th, - .ui-table td { - padding: 5px 10px; - background-color: inherit; - border:0;} - .ui-table thead th { - font-weight: bold; } - .ui-table tfoot td { - border-top: 1px solid #494949; - border-right: 1px solid #494949; - text-align: center; } - .ui-table tfoot td:last-child { - border-right: 0; } - -.layout-with-list-item-margins { - margin-left: 30px !important; } - -.emulate-content-left-padding { - margin-left: 10px; } - -.do-dont-label { - margin-bottom: 10px; - padding-left: 20px; - background: transparent none no-repeat scroll 0px 3px; } - .do-dont-label.bad { - background-image: url(../images/styles/ico_wrong.png); } - .do-dont-label.good { - background-image: url(../images/styles/ico_good.png); } - - - - - - - - - - - - - - - - - - - -/***** PREVIOUSLY style.css ******************/ - - - - - -@media screen, projection, print { -[dir='rtl'] { - direction: rtl; -} -html { - line-height: 20px; -} -pre, table, input, textarea, code { - font-size: 1em; -} -address, abbr, cite { - font-style: normal; -} -[dir='rtl'] th { - text-align: right; -} -html[lang^=ja] blockquote, html[lang^=ja] q, html[lang^=ko] blockquote, html[lang^=ko] q, -html[lang^=zh] blockquote, html[lang^=zh] q { - font-style: normal; -} -q { - font-style: italic; -} -fieldset, iframe, img { - border: 0; -} -img { - -ms-interpolation-mode: bicubic; - vertical-align: middle; - max-width: 100%; -} -q { - quotes: none; -} -sup, sub { - font-size: 11px; - line-height: 0; -} -} - -@media screen, projection { - -table, fieldset { - margin: 0; -} -h1 { - color:#333; - font-size: 34px; - margin: 36px 0 27px; - padding:0 0 10px; - font-weight:300; -} -h1, h2 { - line-height: 30px; -} -h1.short { - margin-right:320px; -} -h1.short { - margin-right:320px; -} -h1.super { - font-size: 37px; -} -h2 { - color:#333; - font-size: 26px; - margin: 32px 0 20px; - padding:0; - font-weight:300; -} -h3 { - color:#333; - font-size: 21px; - font-weight:400; - margin:21px 0 14px 0; -} -h3, h4 { - line-height: 21px; -} -h4 { - font-size: 18px; - margin: 12px 0; - font-weight:500; -} -h5 { - font-size: 14px; -} -h5, h6 { - margin: 5px 0; -} -h6 { - font-size: 12px; -} - - - -hr { /* applied to the bottom of h2 elements */ - height: 1px; - margin: 5px 0 20px; - border: 0; - background: #ccc; -} -p, pre, table, form { - margin: 0 0 15px; -} -small { - font-size: 11.5px; - color: #000; -} -ul, ol { - margin: 0 0 15px 18px; - padding: 0; -} -[dir='rtl'] ul, [dir='rtl'] ol { - margin: 10px 30px 10px 10px; -} -ul ul, ul ol, ol ul, ol ol { - margin-bottom: 0; - margin-top: 0; -} -li { - margin:0 0 5px; -} -dt { - font-weight:bold; -} -dd { - margin:0 0 10px 30px; - padding: 5px; -} -dd p, -dd pre, -dd ul, -dd ol, -dd dl { - margin:10px 0 0; -} -li p, -li pre, -li ul, -li ol, -li dl { - margin-top:5px; - margin-bottom:5px; -} -pre strong, pre b, a strong, a b, a code { - color: inherit; -} -pre, code { - color: #060; - font: 13px/1.5 monospace; -} -code { - font-weight:bold; - font: 13px/14px monospace; -} - -legend { - display: none; -} -a:link, a:visited { - color: #258aaf; - text-decoration: none; -} -a:focus, a:hover, a:active { - color: #33B5E5; - text-decoration: none; -} -strong, b { - font-weight:bold; - color: #222; -} -table { - border-collapse: collapse; - border-spacing: 0; - border:0; - margin: .5em 1em 1em 0; - width:100%; /* consistent table widths; within IE's quirks */ - background-color:#f7f7f7; -} -th, td { - padding: 4px 12px; - vertical-align: top; - text-align: left; -} -td { - background-color:inherit; - border:solid 1px #DDD; -} -td *:last-child { - margin-bottom:0; -} -th { - background-color: #999; - color: #fff; - border:solid 1px #DDD; - font-weight: normal; -} -tr:first-of-type th:first-of-type:empty { - visibility: hidden; -} - -/* opcodes table */ - -table.instruc td:first-child { - width: 12%; -} - -table.instruc td:first-child + td { - width: 23%; -} - -table.instruc td:first-child + td + td { - width: 28%; -} - -table.instruc td:first-child + td + td + td { - width: 37%; -} - -/* supplemental opcode format table */ - -table.supplement td:first-child { - width: 20%; -} - -table.supplement td:first-child + td { - width: 20%; -} - -table.supplement td:first-child + td + td { - width: 60%; -} - -/* math details table */ - -table.math td:first-child { - width: 10%; -} - -table.math td:first-child + td { - width: 30%; -} - -table.math td:first-child + td + td { - width: 60%; -} - -/* -------------------------------------------------------------------------- -Footer -*/ -.line { - clear: both; - background: #acbc00; - background: -moz-linear-gradient(top, #acbc00 0, #acbc00 50%, #bdde00 50%, #bdde00 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #acbc00), -color-stop(50%, #acbc00), color-stop(50%, #bdde00), color-stop(100%, #bdde00)); - background: -webkit-linear-gradient(top, #acbc00 0, #acbc00 50%, #bdde00 50%, #bdde00 100%); - background: -o-linear-gradient(top, #acbc00 0, #acbc00 50%, #bdde00 50%, #bdde00 100%); - background: -ms-linear-gradient(top, #acbc00 0, #acbc00 50%, #bdde00 50%, #bdde00 100%); - background: linear-gradient(top, #acbc00 0, #acbc00 50%, #bdde00 50%, #bdde00 100%); - height: 2px; - margin-top: 150px; - position: relative; - z-index: 11; -} -#footer { - font-size:11px; - clear: both; - color: #999; - padding: 15px 0; - margin-top:10px; - width:auto; -} -#footer-local ul { - list-style: none; - margin: 5px 0 30px 0; -} -#footer-local li { - display: inline; -} -#footer-local li+li:before { - content: '|'; - padding: 0 3px; - color: #e5e5e5; -} -#footer-global { - padding: 10px 15px; - background: #f5f5f5; -} -#footer-global { - border-top: 1px solid #ebebeb; - font-size: 11.5px; - line-height: 1.8; - list-style: none; -} -#footer-global ul { - margin: 0; -} -#footer-global li { - display: inline; - font-weight: bold; -} -#footer-global li+li:before { - content: '¬?'; - padding: 0 3px; -} -* html #footer-global li { - margin: 0 13px 0 0; -} -* [dir='rtl'] #footer-global li { - margin: 0 0 0 13px; -} -*+html #footer-global li { - margin: 0 13px 0 0; -} -*+[dir='rtl'] #footer-global li { - margin: 0 0 0 13px; -} -#footer-global li a { - font-weight: normal; -} -.locales { - margin: 10px 0 0 0px; -} -[dir='rtl'] .locales { - background-position: right center; - float: left; - padding: 0 24px 0 0; -} -.locales form { - margin: 0; -} -.locales select, .sites select { - line-height: 3.08; - margin: 0px 0; - border: solid 1px #EBEBEB; - -webkit-appearance: none; - background: white url('../images/arrows-up-down.png') right center no-repeat; - height: 30px; - color: #222; - line-height: normal; - padding: 5px; - width: 230px; -} -} - -/* ============================================================================= - Print Only - ========================================================================== */ -@media print { - /* configure printed page */ - @page { - margin: 0.75in 1in; - widows: 4; - orphans: 4; - } - - /* reset spacing metrics */ - html, body, .wrap { - margin: 0 !important; - padding: 0 !important; - width: auto !important; - } - - /* leave enough space on the left for bullets */ - body { - padding-left: 20px !important; - } - #doc-col { - margin-left: 0; - } - - /* hide a bunch of non-content elements */ - #header, #footer, #nav-x, #side-nav, - .training-nav-top, .training-nav-bottom, - #doc-col .content-footer, - .nav-x, .nav-y, - .paging-links, - a.totop { - display: none !important; - } - - /* remove extra space above page titles */ - #doc-col .content-header { - margin-top: 0; - } - - /* bump up spacing above subheadings */ - h2 { - margin-top: 40px !important; - } - - /* print link URLs where possible and give links default text color */ - p a:after { - content: " (" attr(href) ")"; - font-size: 80%; - } - p a { - word-wrap: break-word; - } - a { - color: inherit; - } - - /* syntax highlighting rules */ - .str { color: #060; } - .kwd { color: #006; font-weight: bold; } - .com { color: #600; font-style: italic; } - .typ { color: #404; font-weight: bold; } - .lit { color: #044; } - .pun { color: #440; } - .pln { color: #000; } - .tag { color: #006; font-weight: bold; } - .atn { color: #404; } - .atv { color: #060; } -} - -/* ============================================================================= - Columns - ========================================================================== */ - -@media screen, projection, print { -.full { - padding: 2.5em 0; - border-top: solid 1px #ddd; - border-bottom: solid 1px #ddd; - background: #f7f7f7; -} -.wrap { - margin: 0 auto; - width: 940px; - clear: both; -} -.cols { - height: 1%; - margin: 0 -1.533742331288343558282%; - width: 103.06748466257669%} -*+html .cols { - margin-bottom: 20px; -} -.cols:after { - clear: both; - content: ' '; - display: block; - height: 0; - visibility: hidden; -} -.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, -.col-13, .col-14, .col-15, .col-16 { - display: inline; - float: left; - margin-left: 10px; - margin-right: 10px; -} -/* -* html .col-1, * html .col-2, * html .col-3, * html .col-4, * html .col-5, * html .col-6, * html -.col-7, * html .col-8, * html .col-9, * html .col-10, * html .col-11, * html .col-12 { - margin: 0; - padding: 0 1.4% 20px; -} -[dir='rtl'] .col-1, [dir='rtl'] .col-2, [dir='rtl'] .col-3, [dir='rtl'] .col-4, [dir='rtl'] .col-5, -[dir='rtl'] .col-6, [dir='rtl'] .col-7, [dir='rtl'] .col-8, [dir='rtl'] .col-9, [dir='rtl'] .col-10, -[dir='rtl'] .col-11, [dir='rtl'] .col-12 { - float: right; -} -*/ -.col-1 { width: 40px } -.col-2 { width: 100px } -.col-3 { width: 160px } -.col-4 { width: 220px } -.col-5 { width: 280px } -.col-6 { width: 340px } -.col-7 { width: 400px } -.col-8 { width: 460px } -.col-9 { width: 520px } -.col-10 { width: 580px } -.col-11 { width: 640px } -.col-12 { width: 700px } -.col-13 { width: 760px } -.col-14 { width: 820px } -.col-15 { width: 880px } -.col-16 { width: 940px } -} - -.col-right { - margin-right:0px; -} - -@media screen and (max-width:772px) { -.col-5, .col-6, .col-7 { - clear: both; - width: 97.0238096%} -} - -/* ============================================================================= - Layout - ========================================================================== */ -@media screen, projection, print { - -/* -------------------------------------------------------------------------- -Header, Login, Nav-X, Search -*/ -#header { - padding: 2.2em 0 0.2em 0; -} -#header:before, #header:after { - content: ""; - display: table; - clear: both -} -.logo, .nav-x { - float: left; -} -.nav-x { - margin-top: -2px; - list-style-type: none; -} -.nav-x a { - color: #333; - font-size: 16px; -} -.design a.selected { - color: #33b5e5; -} -.develop a.selected { - color: #F80; -} -.distribute a.selected { - color: #9C0; -} -.source a.selected { - color: #33b5e5; -} -.devices a.selected { - color: #F80; -} -.security a.selected { - color: #9C0; -} -.compatibility a.selected { - color: #9933CC; -} - - -.nav-x li { - display: inline; - margin-right: 45px; -} -.search { - float: right; - position: relative; - width: 220px -} -.search .bottom, .search .left, .search .right { - position: absolute; - background-color: #a3a3a3; -} -.search .bottom { - width: 220px; - height: 1px; - top: 24px; - left: 0 -} -.search .left, .search .right { - height: 5px; - width: 1px -} -.search .left { top: 19px; left: 0 } -.search .right { top: 19px; right: 0 } -.search form { - float: left; - margin-top: 2px; - width: inherit; -} -.search .close, -#player-frame .close { - position: absolute; - right: 8px; - bottom: 4px; - width: 16px; - height: 16px; - margin: 0; - text-indent: -1000em; - background: url(../images/close.png) no-repeat 0 0; - z-index:9999; -} -.search .close:hover, .search .close:focus, -#player-frame .close:hover, #player-frame .close:focus { - background-position: -16px 0; - cursor:pointer; -} -#player-frame .close { - top: 6px; -} -.search form input { - color: #999; - font-size: 1em; - width: inherit; - border: none; - margin: 0; - padding:0 0 0 6px; - z-index: 1500; - background-color: transparent -} -.search:hover .bottom, .search:hover .left, .search:hover .right { - background-color: #33b5e5; -} -.search:hover .icon { - background-position: -8px 0 -} -.search form input:focus { - color: #222; - font-weight: bold; - outline:0; -} -/* Search Dropdown */ -.search-dropdown { - padding: 15px; - width: 192px; - border: solid 1px #c5c5c5; - background: #fff; - position: absolute; - top: 35px; - left: 0; - -moz-box-shadow: 0 0 10px rgba(0,0,0,0.2); - -webkit-box-shadow: 0 0 10px rgba(0,0,0,0.2); - box-shadow: 0 0 10px rgba(0,0,0,0.2) -} -.search-dropdown ul, .search-dropdown ul li { - list-style-type: none; - margin: 0; - padding: 0 -} -.search-dropdown ul li { - clear: both -} -.search-dropdown img { - float: left; - margin: 0 10px 10px 0 -} -.search-dropdown h6 { - color: #222; - margin: 0; - line-height: normal -} -.search-dropdown .desc { - color: #999; - font-size: 11.5px; - line-height: normal; - margin: 0; -} -.search-dropdown li a:hover h6, .search-dropdown li a:hover .desc { - color: #33b5e5 -} -/* -------------------------------------------------------------------------- -Buttons -*/ -.button, a.button, .button-secondary, a.button-secondary { - border-image: initial; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - cursor: pointer; -} -.button, a.button { - display:inline-block; - background-color: #09c; - background-image: -webkit-gradient(linear, left top, left bottom, from(#2faddb), to(#09c)); - background-image: -webkit-linear-gradient(top, #2faddb, #09c); - background-image: -moz-linear-gradient(top, #2faddb, #09c); - background-image: -ms-linear-gradient(top, #2faddb, #09c); - background-image: -o-linear-gradient(top, #2faddb, #09c); - background-image: linear-gradient(top, #2faddb, #09c); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#2faddb', EndColorStr='#0099cc',GradientType=0); - border: 1px solid #3990ab; - color: #fff; -} -.button-secondary, a.button-secondary { - background-color: #f3f3f3; - border: 1px solid #dcdcdc; - color: #444; -} -a.button, a.button:visited, a.button-secondary, a.button-secondary:visited { - margin-right: 16px; - font-weight: 400; - min-width: 54px; - outline: 0; - padding: 8px 15px; - text-align: center; -} -.button, .button-secondary { - margin-right: 16px; - font-weight: 400; - min-width: 54px; - outline: 0; - padding: 0 15px; - text-align: center; -} -.button:hover, a.button:hover { - border-color: #09c; - background-color: #4cadcb; - background-image: -webkit-gradient(linear, left top, left bottom, from(#5dbcd9), to(#4cadcb)); - background-image: -webkit-linear-gradient(top, #5dbcd9, #4cadcb); - background-image: -moz-linear-gradient(top, #5dbcd9, #4cadcb); - background-image: -ms-linear-gradient(top, #5dbcd9, #4cadcb); - background-image: -o-linear-gradient(top, #5dbcd9, #4cadcb); - background-image: linear-gradient(top, #5dbcd9, #4cadcb); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#5dbcd9', -EndColorStr='#4cadcb',GradientType=0); - color: #fff !important; -} -.button:active, a.button:active { - background-color: #1e799a; - background-image: none; - border-color: #30b7e6; -} -a.button.big.subtitle { - line-height:18px; -} -.button-secondary:hover, a.button-secondary:hover { - border-color: #dbdbdb; - background-color: #f3f3f3; - background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec)); - background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec); - background-image: -moz-linear-gradient(top, #f9f9f9, #ececec); - background-image: -ms-linear-gradient(top, #f9f9f9, #ececec); - background-image: -o-linear-gradient(top, #f9f9f9, #ececec); - background-image: linear-gradient(top, #f9f9f9, #ececec); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f9f9f9', -EndColorStr='#ececec'); - color: #33B5E5 !important; -} -.button-secondary:active, a.button-secondary:active { - border-color: #dadada; - background: #ebebeb; /* Old browsers */ - /* IE9 SVG, needs conditional override of 'filter' to 'none' */ - background: -url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/ -Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0Jv -eD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+ -CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIg -eDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ViZWJl -YiIgc3RvcC1vcGFjaXR5PSIxIi8+ -CiAgICA8c3RvcCBvZmZzZXQ9IjEwJSIgc3RvcC1jb2xvcj0iI2Y5ZjlmOSIgc3RvcC1vcGFjaXR5PSIxIi8+ -CiAgICA8c3RvcCBvZmZzZXQ9IjUwJSIgc3RvcC1jb2xvcj0iI2ZhZmFmYSIgc3RvcC1vcGFjaXR5PSIxIi8+ -CiAgICA8c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2Y5ZjlmOSIgc3RvcC1vcGFjaXR5PSIxIi8+ -CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmNmY2ZjYiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFy -R3JhZGllbnQ+ -CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIg -Lz4KPC9zdmc+); - background: -moz-linear-gradient(top, #ebebeb 0%, #f9f9f9 5%, #fafafa 50%, #f9f9f9 90%, -#ffffff 100%); /* FF3.6+ */ - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ebebeb), -color-stop(5%,#f9f9f9), color-stop(50%,#fafafa), color-stop(90%,#f9f9f9), color-stop(100%,#ffffff)); -/* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #ebebeb 0%,#f9f9f9 5%,#fafafa 50%,#f9f9f9 -90%,#ffffff 100%); /* Chrome10+,Safari5.1+ */ - background: -o-linear-gradient(top, #ebebeb 0%,#f9f9f9 5%,#fafafa 50%,#f9f9f9 90%,#ffffff -100%); /* Opera 11.10+ */ - background: -ms-linear-gradient(top, #ebebeb 0%,#f9f9f9 5%,#fafafa 50%,#f9f9f9 90%,#ffffff -100%); /* IE10+ */ - background: linear-gradient(top, #ebebeb 0%,#f9f9f9 5%,#fafafa 50%,#f9f9f9 90%,#ffffff -100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ebebeb', -endColorstr='#ffffff',GradientType=0 ); /* IE6-8 */ - -webkit-box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05); - -moz-box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05); - box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05); - color: #258AAF !important; -} -.button.big { - font-size:20px; - display:inline-block; -} -.button.big span.small { - font-size:14px; -} -.button-caption { - margin-top:10px; - font-size:12px; - font-style:italic; -} - -.button.disabled, -.button.disabled:hover, -.button.disabled:active { - background:#ebebeb; - color:#999 !important; - border-color:#999; - cursor:default; -} - -.training-nav-top a.button-secondary, -.training-nav-bottom a.button-secondary { - display:block; - float:left; - margin:0; - width:130px; - text-transform:uppercase; - font-weight:bold; - - background-color: #f3f3f3; - background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec)); - background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec); - background-image: -moz-linear-gradient(top, #f9f9f9, #ececec); - background-image: -ms-linear-gradient(top, #f9f9f9, #ececec); - background-image: -o-linear-gradient(top, #f9f9f9, #ececec); - background-image: linear-gradient(top, #f9f9f9, #ececec); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f9f9f9', -EndColorStr='#ececec'); - color: #33B5E5; -} - -.training-nav-top a.button-secondary:hover, -.training-nav-bottom a.button-secondary:hover { - background-color: #09c; - background-image: -webkit-gradient(linear, left top, left bottom, from(#2faddb), to(#09c)); - background-image: -webkit-linear-gradient(top, #2faddb, #09c); - background-image: -moz-linear-gradient(top, #2faddb, #09c); - background-image: -ms-linear-gradient(top, #2faddb, #09c); - background-image: -o-linear-gradient(top, #2faddb, #09c); - background-image: linear-gradient(top, #2faddb, #09c); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#2faddb', EndColorStr='#09c'); - border: 1px solid #3990ab; - color: #fff !important; -} - -.training-nav-top a.button-secondary.last, -.training-nav-bottom a.button-secondary.last { - border-left:0; -} - -.training-nav-top a.button-secondary.double-size, -.training-nav-bottom a.button-secondary.double-size { - width:291px; -} - -.training-nav-top, -.training-nav-bottom { - float:right; - margin:0 0 0 20px; -} - -.training-nav-bottom { - padding:0 0 20px; -} - -#tb-wrapper, -#qv-wrapper { - float:right; - clear:right; - margin:-27px 0 0 20px; /* negative top-margin to counter the content-header bottom margin */ - padding:0 0 20px; -} - -#tb, -#qv { - font-size:13px; - line-height:18px; - width:238px; - border:1px solid #ccc; - float:right; -} - -#tb { - width:278px; -} - -#tb h2, -#qv h2 { - margin:10px 15px; - padding:0; - text-transform:uppercase; - border-bottom:1px solid gainsboro; -} - -#tb *, -#qv * { - font-size:inherit; -} - -#tb .download-box { - padding:0 0 0 15px; -} - -#tb .download-box .filename { - font-size:11px; - margin:4px 4px 10px; - color:#666; -} - - -/* Dev guide quicknav */ - -.sidebox-wrapper { - float:right; - clear:right; - margin:0 0 0 20px; - padding:0 0 20px; -} - -.sidebox { - width:226px; - font-size:13px; - line-height:18px; - border-left:4px solid #99CC00; - float:right; - padding:0 0 0 10px; - margin:0 0 1em 20px; -} - -.sidebox h2, -.sidebox h3, -.sidebox h4, -.sidebox h5 { - font-weight:bold; - margin:0 0 10px; -} - -.sidebox * { - font-size:inherit; -} - -#tb ol, -#tb ul, -#qv ul { - margin:0 15px 10px 35px; -} - -#qv ol { - list-style:none; - margin:0 15px 15px; - font-size:inherit; - line-height:inherit; -} - -#tb ol ol, -#tb ul ul, -#qv ol ol, -#qv ul ul, -.sidebox ol ol, -.sidebox ul ul { - margin-bottom:0; -} - -#qv ol ol { - margin:3px 0 3px 15px; -} - -.sidebox p, -#qv p, -#tb p { - margin: 0 0 10px; -} - - -/* -------------------------------------------------------------------------- -Form -*/ -.article form { - margin: 0 0 20px; -} -.article form .form-required { - color: #dd4b39; -} -.article form fieldset { - margin: 0 0 20px; - padding: 0; -} -.article form legend { - display: block; - line-height: 1.5; - margin: 0; - padding: 0; -} -/* -.article form ol, .article form ul { - margin: 0 0 0 1em; - padding: 0 0 0 1em; -} -[dir='rtl'] .article form ol, [dir='rtl'] .article form ul { - margin: 0 1em 0 0; - padding: 0 1em 0 0; -} -.article form ol ul, .article form ul ul, [dir='rtl'] .article form ol ul, [dir='rtl'] .article form -ul ul { - list-style: none; - margin: 0; - padding: 0; -} -.article form li { - margin: 0 0 20px; -} -.article form li li { - margin: 0 0 5px; -} -*/ -.article form label { - display: block; - margin: 0 0 5px; - padding: 0; -} -.article form input[type='text'], .article form select, .article form textarea, .article form -.checkbox-group, .article form .radio-group { - margin-bottom: 15px; -} -.checkbox-group input { - width: 13px; - height: 13px; - background: #fff; - border: solid 1px #c6c6c6; - float: left; -} -.article form .checkbox-group, .article form .radio-group { - display: block -} -.article form select { - border: solid 1px #ebebeb; - border-top-color: #ddd; - -webkit-appearance: none; - background: #f3f3f3 url(../images/arrows-up-down.png) right center no-repeat; - height: 30px; - color: #222; - line-height: normal; - padding: 5px; - width: 130px; -} - -.article form .browse .browse-msg { - font-size: 11.5px; -} -.article form .browse .button-secondary { - height: auto; - line-height: 25px; - font-size: 11px; - padding: 0 8px; - margin: 0 10px 15px 0; -} -.article form input[type='text'], .article form textarea { - border: 1px solid #ebebeb; - border-top-color: #dcdcdc; - color: #222; - line-height: normal; - padding: 6px 10px; - width: 300px; -} -.article form textarea { - height: 150px; -} -.article form input[type='text']:focus, .article form textarea:focus { - border-color: #33B5E5; - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .2); - -o-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .2); - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .2); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, .2); - outline: 0; -} -.article form input[disabled], .article form textarea[disabled], .article form label.form-disabled { - color: #999; -} -.article form input[type='text'][disabled], .article form textarea[disabled] { - background-color: #ebebeb; -} -form .form-error input[type='text'], form .form-error textarea { - border-color: #dd4b39; - margin-right: 20px; -} -.aside { - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; - margin: 10px 0; - padding: 20px; - color: #666; - position: relative; - background: #f9f9f9; -} -/* -.aside, .notification, .promo { - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; - margin: 10px 0; - padding: 10px; - position: relative; -} -.aside>:first-child, .notification>:first-child, .promo>:first-child { - margin-top: 0; -} -.aside>:last-child, .notification>:last-child, .promo>:last-child { - margin-bottom: 0; -} -.aside { - background: #f9f9f9; -} -.notification { - background: #fffbe4; - border-color: #f8f6e6; -} -.promo { - background: #f6f9ff; - border-color: #eff2f9; -} -*/ - -/* SDK TOS styles */ - -div.sdk-terms { - white-space: pre-wrap; - word-wrap: break-word; - font-family: inherit; - font-size: inherit; - padding: 10px; - height: 370px; - width: 738px; - border: 1px solid #444; - background: transparent; - overflow:auto; - margin:0 0 10px; -} - -div.sdk-terms.fullsize { - padding: 0; - height: auto; - width: auto; - border:none; -} - -div.sdk-terms h3, -div.sdk-terms h2 { - margin:0; -} - -div#sdk-terms-form { - padding:0 0 0 10px; -} - -div#sdk-terms-form input { - display:inline; - margin:4px 4px 4px 0; -} - - -/* -------------------------------------------------------------------------- -Code Style -*/ -pre { - margin:0 0 1em 0; - padding: 1em; - overflow: auto; - border: solid 1px #ddd; - background: #f7f7f7; -} -.str { color: #080; } -.kwd { color: #008; } -.com { color: #800; } -.typ { color: #606; } -.lit { color: #066; } -.pun { color: #660; } -.pln { color: #000; } -.tag { color: #008; } -.atn { color: #828; } -.atv { color: #080; } -.dec { color: #606; } - -/* -------------------------------------------------------------------------- -Three-Pane -*/ -/* Package Nav & Classes Nav */ -.three-pane { - position: relative; - border-top: solid 1px #ebebeb; -} -#packages-nav .js-pane, -#classes-nav .js-pane { - overflow:visible; -} -#packages-nav { - height:270px; - max-height: inherit; - overflow: hidden; - position: relative; -} -#classes-nav { - overflow: hidden; - position: relative; -} -#packages-nav ul, #classes-nav ul { - list-style-type: none; - margin: 10px 0 20px 0; - padding: 0; -} -#classes-nav li { - font-weight: bold; - margin: 5px 0; -} -#packages-nav li, -#classes-nav li li { - margin: 0; -} -#packages-nav li a, #packages-nav li a:active, #packages-nav li a:visited, -#classes-nav li a, #classes-nav li a:active, #classes-nav li a:visited { - padding: 0 0 0 4px; -} -#packages-nav li a, #packages-nav li a:active, #packages-nav li a:visited, -#classes-nav li li a, #classes-nav li li a:active, #classes-nav li li a:visited, -#nav-tree li a, #nav-tree li a:active, #nav-tree li a:visited { - color: #222; - font-weight: normal; -} -#packages-nav li a, #packages-nav li a:active, #packages-nav li a:visited, -#classes-nav li li a, #classes-nav li li a:active, #classes-nav li li a:visited { - display: block; -} -#packages-nav li.selected a, #packages-nav li.selected a:active, #packages-nav li.selected -a:visited, -#classes-nav li li.selected a, #classes-nav li li.selected a:active, #classes-nav li li.selected -a:visited, -#nav-tree li div.selected { - font-weight: 500; - color: #0099cc; - background-color:#fff; } - #packages-nav li.selected ul li a, - #classes-nav li.selected ul li a { - /* don't highlight child items */ - color: #555555; } -#nav-tree li div.selected a { - font-weight: 500; - color: #0099cc; -} -#nav-swap { - height:30px; - border-top:1px solid #ccc; - display: none; -} -#nav-swap a { - display:inline-block; - height:100%; - color: #222; - font-size: 12px; - padding: 5px 0 5px 5px; -} - -#nav-swap .fullscreen { - float: right; - width: 24px; - height: 24px; - text-indent: -1000em; - padding:0; - margin:3px 5px 0; - background: url(../images/fullscreen.png) no-repeat -24px 0; -} -#nav-swap .fullscreen.disabled { - background-position: 0 0; -} -#nav-swap .fullscreen:hover, -#nav-swap .fullscreen:focus { - cursor:pointer; -} - - -/* nav tree */ -#side-nav, #devdoc-nav, #swapper, -#nav-tree, #tree-list { - overflow:hidden; - margin-left:0; -} - -#nav-tree, #swapper { - display: none; -} - -#nav-tree ul { - list-style:none; - padding:0; - margin:10px 0; -} - -#nav-tree ul li div { - padding:0 0 0 4px; -} - -#side-nav #nav-tree ul li a, -#side-nav #nav-tree ul li span.no-children { - padding: 0; - margin: 0; -} - -#nav-tree .plus { - margin: 0 3px 0 0; -} - -#nav-tree ul ul { - list-style: none; - margin: 0; - padding: 0 0 0 0; -} - -#nav-tree ul li { - margin: 0; - padding: 0 0 0 0; - white-space: nowrap; -} - -#nav-tree .children_ul { - padding:0; - margin:0; -} -#nav-tree .children_ul li div { - padding:0 0 0 10px; -} -#nav-tree .children_ul .children_ul li div { - padding:0 0 0 20px; -} - -#nav-tree a.nolink { - color: #222; - text-decoration: none; -} - -#nav-tree span.label { - width: 100%; -} - -#nav-tree { - overflow-x: auto; - overflow-y: scroll; - outline:0; -} - - -/* Content */ -#doc-col { - margin-right:0; -} -#doc-content-container { - margin-left: 291px -} -#doc-header, #doc-content { - padding: 1em 2em; -} -#doc-header { - background: #f7f7f7; -} -#doc-header h1 { - line-height: 0; - margin-bottom: 15px; -} -#api-info-block { - float: right; - font-weight: bold; -} -#api-info-block a, #api-info-block a:active, #api-info-block a:visited { - color: #222; -} -#api-info-block a:hover, #api-info-block a:focus { - color: #33B5E5; -} -#api-nav-header { - height:19px; /* plus 16px padding = 35; same as #nav li */ - font-size:14px; - padding: 8px 0; - margin: 0; - border-bottom: 1px solid #CCC; - background:#e9e9e9; - background: rgba(0, 0, 0, 0.05); /* matches #nav li.expanded */ - display: none; - -} -#api-nav-title { - padding:0 5px; - white-space:nowrap; - display: none; -} - -#api-level-toggle { - float:right; - padding:0 5px; -} - -#api-level-toggle label { - margin:0; - vertical-align:top; - line-height: 19px; - font-size:13px; - height: 19px; -} - -#api-level-toggle .select-wrapper { - width: 35px; - display: inline-block; - overflow: hidden; -} -#api-level-toggle select { - border: 0; - appearance:none; - -moz-appearance:none; - -webkit-appearance: none; - background: transparent url(../images/arrows-up-down.png) 23px 5px no-repeat; - color: #222; - height: 19px; - line-height: 19px; - padding: 0; - margin:1px 0 0 0; - width:150%; - font-size:13px; - vertical-align:top; - outline:0; -} - - -/* Toggle for revision notes and stuff */ -div.toggle-content.closed .toggle-content-toggleme { - display:none; -} - -#jd-content img.toggle-content-img { - margin:0 5px 5px 0; -} -div.toggle-content p { - margin:10px 0 0; -} -div.toggle-content-toggleme { - padding:0 0 0 15px; -} - - -/* API LEVEL FILTERED MEMBERS */ - -.absent, -.absent a:link, -.absent a:visited, -.absent a:hover, -.absent * { - color:#bbb !important; - cursor:default !important; - text-decoration:none !important; -} -#devdoc-nav li.absent.selected, -#devdoc-nav li.absent.selected *, -#devdoc-nav div.label.absent.selected, -#devdoc-nav div.label.absent.selected * { - background-color:#eaeaea !important; -} -.absent h4.jd-details-title, -.absent h4.jd-details-title * { - background-color:#f6f6f6 !important; -} -.absent img { - opacity: .3; - filter: alpha(opacity=30); - -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; -} - - - - - - - - - -/* JQUERY RESIZABLE STYLES */ -.ui-resizable { position: relative; } -.ui-resizable-handle { position: absolute; display: none; font-size: 0.1px; z-index:1; } -.ui-resizable .ui-resizable-handle { display: block; border-bottom: 1px solid #e4e4e4; } -/*body .ui-resizable-disabled .ui-resizable-handle { display: none; } -body .ui-resizable-autohide .ui-resizable-handle { display: none; }*/ -.ui-resizable-s { cursor: s-resize; height: 10px; width: 100% !important; bottom: -11px; left: 0; -border-bottom: solid 1px #ededed; - background: #f7f7f7 url("../images/resizable-s2.png") no-repeat scroll center center; } -/* -.ui-resizable-e { -cursor: e-resize; width: 10px; right: 0; top: 0; height: 100%; border-right: solid -1px #ededed;background: #f7f7f7 url("../images/resizable-e2.png") no-repeat scroll center center; } -*/ - -/* -------------------------------------------------------------------------- -Lightbox -*/ -.lightbox { - width: 769px; - padding: 1.5em; - margin: 0 auto; - border: solid 1px #dcdcdc; - background: #fff; - -moz-box-shadow: 1px 1px 5px rgba(0,0,0,0.1); - -webkit-box-shadow: 1px 1px 5px rgba(0,0,0,0.1); - box-shadow: 1px 1px 5px rgba(0,0,0,0.1) -} -.lightbox .header { - float: left; - width: 720px; - margin: -10px 20px 10px 0; -} -.lightbox .close { - float: right; - width: 10px; - height: 10px; - margin: -10px -10px 10px 0; - text-indent: -1000em; - background: url(../images/close.png) no-repeat 0 0; -} -.lightbox .close:hover, .lightbox .close:focus { - background-position: -10px 0; -} - -/* -------------------------------------------------------------------------- -Butterbar -*/ -#butterbar-wrapper { - position:absolute; - top:0; - left:0; - width:100%; -} -#butterbar { - width:940px; - margin:0 auto; -} -#butterbar-message { - background-color:#f80; - float:right; - font-size:12px; - font-weight:bold; - padding:0 10px; - border-radius: 0 0 5px 5px; -} -#butterbar-message a {color:#fff !important} -#butterbar-message a:hover {text-decoration:underline;} - -/* -------------------------------------------------------------------------- -Misc -*/ - - -.clearfix:before, .clearfix:after { - content: ""; - display: table -} -.clearfix:after { - clear: both -} -.clearfix { - *zoom: 1 -} -table.blank th, table.blank td { - border: 0; - background: none -} -.caption { - margin: 0.5em 0 2em 0; - color: #000; - font-size: 11.5px; -} - -.nolist { - list-style:none; - margin-left:0; -} -#tb .nolist { - margin-left:15px; -} - - -pre.classic { - background-color:transparent; - border:none; - padding:0; -} - -p.img-caption { - margin: -10px 0 20px; - font-size:13px; - color:#666; -} - -div.figure, -div.figure-right { - float:right; - clear:right; - margin:10px 0 0 0; - padding:0 0 0 20px; - /* width must be defined w/ an inline style matching the image width */ -} - -div.figure-left { - float:left; - clear:left; - margin:10px 0 0 0; - padding:0 20px 0 0; - /* width must be defined w/ an inline style matching the image width */ -} - -img.frame { - border:1px solid #DDD; - padding:4px; -} - -p.table-caption { - margin: 0 0 4px 0; - font-size:13px; - color:#666; -} - -p.code-caption { - margin: 0 0 4px 0; - font: 12px/1.5 monospace; - color:#666; -} - -div.note, -div.caution, -div.warning { - margin: 0 0 15px; -} - -p.note, div.note, -p.caution, div.caution, -p.warning, div.warning { - padding: 0 0 0 10px; - border-left: 4px solid; -} - -p.note, div.note { - border-color: #258AAF; -} - -p.caution, div.caution { - border-color: #FF8800; -} - -p.warning, div.warning { - border-color: #ff4443; -} - -div.note.design { - border-left: 4px solid #33B5E5; -} - -div.note.develop { - border-left: 4px solid #F80; -} - -div.note.distribute { - border-left: 4px solid #9C0; -} - -.note p, .caution p, .warning p { - margin:0 0 5px; -} - -.note p:last-child, .caution p:last-child, .warning p:last-child { - margin-bottom:0; -} - -body.about blockquote { - display:block; - float:right; - width:280px; - font-size:20px; - font-style:italic; - line-height:24px; - color:#33B5E5; - margin:0 0 20px 30px; -} - -div.design-announce p { - margin:0 0 10px; -} - -#devdoc-nav a.totop { - display:block; - top:0; - width:inherit; - background: transparent url(../images/styles/gototop.png) no-repeat scroll 50% 50%; - text-indent:-9999em; -} -#devdoc-nav a.totop { - position:fixed; - display:none; -} -#devdoc-nav a.totop:hover { - background-color:#33B5E5; -} - -.content-footer a.totop { - text-transform:uppercase; - line-height:30px; -} - -.expandable { - height:34px; - padding-left:20px; - position:relative; -} -.expandable:before { - content: ''; - background-image: url(../images/styles/disclosure_down.png); - background-repeat:no-repeat; - background-position: -12px -9px; - width: 20px; - height: 20px; - display: inline-block; - position: absolute; - top: 0; - left: 0; } -} -.expandable.expanded:before { - background-image: url(../images/styles/disclosure_up.png); -} - - - -/* ----------------------------------------------- -Dialog box for popup messages -*/ - -div.dialog { - height:0; - margin:0 auto; -} - -div.dialog>div { - z-index:99; - position:fixed; - margin:70px 0; - width: 391px; - height: 200px; - background: #F7F7F7; --moz-box-shadow: 0 0 15px rgba(0,0,0,0.5); --webkit-box-shadow: 0 0 15px rgba(0,0,0,0.5); -box-shadow: 0 0 15px rgba(0,0,0,0.5); -} -/* IE6 can't position fixed */ -* html div.dialog div { position:absolute; } - - -div#deprecatedSticker { - display:none; - z-index:99; - position:fixed; - right:15px; - top:114px; - margin:0; - padding:1em; - background:#FFF; - border:1px solid #dddd00; - box-shadow:-5px 5px 10px #ccc; - -moz-box-shadow:-5px 5px 10px #ccc; - -webkit-box-shadow:-5px 5px 10px #ccc; -} - -div#naMessage { - display:none; - width:555px; - height:0; - margin:0 auto; -} - -div#naMessage div { - z-index:99; - width:450px; - position:fixed; - margin:50px 0; - padding:4em 4em 3em; - background:#FFF; - border:1px solid #999; - box-shadow:-10px 10px 40px #888; - -moz-box-shadow:-10px 10px 40px #888; - -webkit-box-shadow:-10px 10px 40px #888; -} -/* IE6 can't position fixed */ -* html div#naMessage div { position:absolute; } - -div#naMessage strong { - font-size:1.1em; -} - - -/* -------------------------------------------------------------------------- -Slideshow Controls & Next/Prev -*/ -.slideshow-next, .slideshow-prev { - width: 20px; - height: 36px; - text-indent: -1000em; -} -.slideshow-container { - margin: 2em 0; -} -.slideshow-container:before, .slideshow-container:after { - content: ""; - display: table; - clear: both; -} -a.slideshow-next, a.slideshow-next:visited { - - float: right; - - background: url(../images/arrow-right.png) no-repeat 0 0 - -} - -a.slideshow-prev, a.slideshow-prev:visited { - - float: left; - - background: url(../images/arrow-left.png) no-repeat 0 0 - -} - -.slideshow-next:hover, .slideshow-prev:hover, .slideshow-next:focus, .slideshow-prev:focus { - - background-position: 0 -36px - -} - -.slideshow-next:active, .slideshow-prev:active { - - background-position: 0 -72px - -} -.slideshow-nav { - width: 74px; - margin: 0 auto; -} -.slideshow-nav a, .slideshow-nav a:visited { - display: inline-block; - width: 12px; - height: 12px; - margin: 0 2px 20px 2px; - background: #ccc; - -webkit-border-radius: 50%; - -moz-border-radius: 50%; - border-radius: 50%; -} -.slideshow-nav a:hover, .slideshow-nav a:focus { - - background: #33B5E5 -} - -.slideshow-nav a:active { - - background: #1e799a; - background: #ebebeb; - -webkit-box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05); - -moz-box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05); - box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05); -} -.slideshow-nav a.active, .slideshow-nav a.active:active, .slideshow-nav a.active:visited { - background: #33B5E5 -} -/* -------------------------------------------------------------------------- -Tabs -*/ -ul.tabs { - padding: 0; - margin: 2em 0 0 0; -} -ul.tabs:before, ul.tabs:after { - content: ""; - display: table; - clear: both; -} -ul.tabs li { - list-style-type: none; - float: left; -} -ul.tabs li a, ul.tabs li a:active, ul.tabs li a:visited { - display: block; - height: 36px; - line-height: 36px; - padding: 0 15px; - margin-right: 2px; - color: #222; - -moz-border-radius-topleft: 2px; - -moz-border-radius-topright: 2px; - -moz-border-radius-bottomright: px; - -moz-border-radius-bottomleft: px; - -webkit-border-radius: 2px 2px px px; - border-radius: 2px 2px px px; - border-top: solid 1px #ebebeb; - border-left: solid 1px #ebebeb; - border-right: solid 1px #ebebeb; - background-color: #fff; - background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#fafafa)); - background-image: -webkit-linear-gradient(top, #ffffff, #fafafa); - background-image: -moz-linear-gradient(top, #ffffff, #fafafa); - background-image: -ms-linear-gradient(top, #ffffff, #fafafa); - background-image: -o-linear-gradient(top, #ffffff, #fafafa); - background-image: linear-gradient(top, #ffffff, #fafafa); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff', -EndColorStr='#fafafa'); -} -ul.tabs li a:hover { - color: #33B5E5; -} -ul.tabs li a.selected { - height: 37px; - color: #33B5E5; - background-color: #f7f7f7; - background-image: none; - border-color: #ddd; -} -.tab-content { - padding: 1.2em; - margin: -1px 0 2em 0; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - border: solid 1px #ddd; - background: #f7f7f7; -} -/* -------------------------------------------------------------------------- -Feature Boxes -*/ -.feature-box { - width: 291px; - height: 200px; - position: relative; - background: #F7F7F7; -} -.box-border .top, .box-border .bottom, .box-border .left, .box-border .right { - z-index: 100; - position: absolute; - background-color: #aaa; -} -.box-border .top, .box-border .bottom { - width: 291px; - height: 1px; -} -.dialog .box-border .top, -.dialog .box-border .bottom { width:391px; } - -.box-border .left, .box-border .right { - width: 1px; - height: 8px; -} -.box-border .top { top: 0; left: 0 } -.box-border .top .left { top: 1px; left: 0 } -.box-border .top .right { top: 1px; right: 0 } -.box-border .bottom .left { top: -8px; left: 0 } -.box-border .bottom { top: 200px; left: 0 } -.box-border .bottom .right { top: -8px; right: 0 } - -.feature-box h4, -.dialog h4 { - margin: 15px 18px 10px; - padding:0; -} - -.feature-box p, -.dialog p { - margin: 10px 18px; - padding:0; -} -.feature-box .link, -.dialog .link { - border-top: 1px solid #dedede; - bottom: 0; - position: absolute; - width: inherit; -} -.feature-box a, .feature-box h4, -.dialog a, .dialog h4 { - -webkit-transition: color .4s ease; - -moz-transition: color .4s ease; - -o-transition: color .4s ease; - transition: color .4s ease; -} -.feature-box:hover { - cursor: pointer; -} -.feature-box:hover .box-border .top, .feature-box:hover .box-border .bottom, .feature-box:hover -.left, .feature-box:hover .right { - background-color: #33B5E5; -} -.feature-box:hover h4, .feature-box:hover a { - color: #33B5E5; -} -/* -------------------------------------------------------------------------- -Page-Specific Styles -*/ -.colors { - position: relative; - float: left; - width: 92px; - margin: 40px 0 20px; -} -.colors div { - color: #fff; - font-size: 11.5px; - width: 82px; - height: 82px; - margin-top:-30px; - line-height: 82px; - text-align: center; - border: solid 5px #fff; - -webkit-border-radius: 50%; - -moz-border-radius: 50%; - border-radius: 50%; -} - - - - - - - - - - - - - - -/* ########### REFERENCE DOCS ################## */ - -#packages-nav h2, -#classes-nav h2 { - font-size:18px; - margin:0; - padding:0 0 0 4px; -} - -#jd-header { - padding: 0 0 5px; - margin: 20px 0 10px; - font-size:13px; - border-bottom:solid 1px #ccc; -} - -#jd-header h1 { - margin:0; - padding:0; -} - -/* page-top-right container for reference pages (holds -links to summary tables) */ -#api-info-block { - font-size:13px; - margin:20px 0 0; - padding:0 10px 6px; - font-weight:normal; - float:right; - text-align:right; - color:#999; - max-width:70%; -} - -#api-info-block div.api-level { - font-weight:bold; - font-size:inherit; - float:none; - color:#222; - padding:0; - margin:0; -} - -/* inheritance table */ -.jd-inheritance-table { - border-spacing:0; - margin:0; - padding:0; - font-size:13px; - background-color:transparent; -} -.jd-inheritance-table tr td { - border: none; - margin: 0; - padding: 0; - background-color:transparent; -} -.jd-inheritance-table .jd-inheritance-space { - font-weight:bold; - width:1em; -} -.jd-inheritance-table .jd-inheritance-interface-cell { - padding-left: 17px; -} - - - -.jd-sumtable a { - text-decoration:none; -} - -.jd-sumtable a:hover { - text-decoration:underline; -} - -/* the link inside a sumtable for "Show All/Hide All" */ -.toggle-all { - display:block; - float:right; - font-weight:normal; - font-size:0.9em; -} - -/* adjustments for in/direct subclasses tables */ -.jd-sumtable.jd-sumtable-subclasses { - margin: 1em 0 0 0; - max-width:968px; - background-color:transparent; - font-size:13px; -} - -/* extra space between end of method name and open-paren */ -.sympad { - margin-right: 2px; -} - -/* right alignment for the return type in sumtable */ -.jd-sumtable .jd-typecol { - text-align:right; -} - -/* adjustments for the expando table-in-table */ -.jd-sumtable-expando { - margin:.5em 0; - padding:0; -} - -/* a div that holds a short description */ -.jd-descrdiv { - padding:3px 1em 0 1em; - margin:0; - border:0; -} - -#jd-content img.jd-expando-trigger-img { - padding:0 4px 4px 0; - margin:0; -} - -.jd-sumtable-subclasses div#subclasses-direct, -.jd-sumtable-subclasses div#subclasses-indirect { - margin:0 0 0 13px; -} - - - -/********* MEMBER REF *************/ - - -.jd-details { -/* border:1px solid #669999; - padding:4px; */ - margin:0 0 1em; -} - -/* API reference: a container for the -.tagdata blocks that make up the detailed -description */ -.jd-details-descr { - padding:0; - margin:.5em .25em; -} - -/* API reference: a block containing -a detailed description, a params table, -seealso list, etc */ -.jd-tagdata { - margin:.5em 1em; -} - -.jd-tagdata p { - margin:0 0 1em 1em; -} - -/* API reference: adjustments to -the detailed description block */ -.jd-tagdescr { - margin:.25em 0 .75em 0; -} - -.jd-tagdescr ol, -.jd-tagdescr ul { - margin:0 2.5em; - padding:0; -} - -.jd-tagdescr table, -.jd-tagdescr img { - margin:.25em 1em; -} - -.jd-tagdescr li { -margin:0 0 .25em 0; -padding:0; -} - -/* API reference: heading marking -the details section for constants, -attrs, methods, etc. */ -h4.jd-details-title { - font-size:1.15em; - background-color: #E2E2E2; - margin:1.5em 0 .6em; - padding:3px 95px 3px 3px; /* room for api-level */ -} -body.google h4.jd-details-title { - background-color: #FFF; - padding-top:5px; - border-top: 1px solid #ccc; -} -body.google table.jd-sumtable th { - background-color: #FFF; - color:#000; -} - -h4.jd-tagtitle { - margin:0; -} - -h4 .normal { - font-weight:normal; -} - -/* API reference: heading for "Parameters", "See Also", etc., -in details sections */ -h5.jd-tagtitle { - margin:0 0 .25em 0; - font-size:1em; -} - -.jd-tagtable { - margin:0; - background-color:transparent; - width:auto; -} - -.jd-tagtable td, -.jd-tagtable th { - border:none; - background-color:#fff; - vertical-align:top; - font-weight:normal; - padding:2px 10px; -} - -.jd-tagtable th { - font-style:italic; -} - -/* Inline api level indicator for methods */ -div.api-level { - font-size:.8em; - font-weight:normal; - color:#999; - float:right; - padding:0 8px 0; - margin-top:-30px; -} - -table.jd-tagtable td, -table.jd-tagtable th { - background-color:transparent; -} - -table.jd-tagtable th { - color:inherit; -} - - - - - - - - - - - - - - - - - - - - - - - -/* SEARCH FILTER */ - -#search_autocomplete { - font-weight:normal; -} - -#search_filtered_wrapper { - width: 193px; - float: right; -} -#search_filtered_div { - position:absolute; - z-index:9999; - min-width:171px; /* +padding and border makes this match input width */ - padding:5px; - border: solid 1px #C5C5C5; - background: white; - top: 35px; - -moz-box-shadow: 0 0 10px rgba(0,0,0,0.2); - -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); -} - -ul#search_filtered { - min-width:100%; - margin:0; - list-style: none; - margin: 0; - padding: 0; -} - -#search_filtered .jd-selected { - background-color: #33B5E5; - cursor:pointer; -} -#search_filtered .jd-selected, -#search_filtered .jd-selected a { - color:#f7f7f7 !important; -} - -.no-display { - display: none; -} - -#search_filtered li.jd-autocomplete { - font-size: 0.81em; - border: none; - margin: 0 0 2px; - padding: 0; - line-height:1.5em; -} - -#search_filtered li a { - padding:0 5px; - color:#222 !important; -} - -#search_filtered li.header { - color:#aaa; - font-weight:bold; - font-size: 0.81em; - border: none; - margin: 8px 0 2px; - padding:1px 5px; - line-height:1.5em; -} - -#search_filtered li.header:first-child { - margin: 0 0 2px; -} - -.show-item { - display: table-row; -} -.hide-item { - display: hidden; -} - - - - - -/* SEARCH RESULTS */ - - -#leftSearchControl .gsc-twiddle { - background-image : none; -} - -#leftSearchControl td, #searchForm td { - border: 0px solid #000; - padding:0; -} - -#leftSearchControl .gsc-resultsHeader .gsc-title { - padding-left : 0px; - font-weight : bold; - font-size : 13px; - color:#006699; - display : none; -} - -#leftSearchControl .gsc-resultsHeader div.gsc-results-selector { - display : none; -} - -#leftSearchControl .gsc-resultsRoot { - padding-top : 6px; -} - -#leftSearchControl div.gs-visibleUrl-long { - display : block; - color:#006699; -} - -#leftSearchControl .gsc-webResult { - padding:0 0 20px 0; -} - -.gsc-webResult div.gs-visibleUrl-short, -table.gsc-branding, -.gsc-clear-button { - display : none; -} - -.gsc-cursor-box .gsc-cursor div.gsc-cursor-page, -.gsc-cursor-box .gsc-trailing-more-results a.gsc-trailing-more-results, -#leftSearchControl a, -#leftSearchControl a b { - color:#006699; -} - -.gsc-resultsHeader { - display: none; -} - -/* Disable built in search forms */ -.gsc-control form.gsc-search-box { - display : none; -} -table.gsc-search-box { - margin:6px 0 0 0; - border-collapse:collapse; -} - -td.gsc-input { - padding:0 2px; - width:100%; - vertical-align:middle; -} - -input.gsc-input { - border:1px solid #BCCDF0; - width:99%; - padding-left:2px; - font-size:.95em; -} - -td.gsc-search-button { - text-align: right; - padding:0; - vertical-align:top; -} - - -#searchResults { - overflow:hidden; /* because the repositioned page links makes the section think it needs to scroll -(it doesn't) */ - height:auto; -} - -#searchResults .gsc-control { - position:relative; - width:auto; - padding:0 0 10px; -} - -#searchResults .gsc-tabsArea { - position:relative; - white-space:nowrap; - float:left; - width:200px; -} - -#searchResults .gsc-above-wrapper-area { - display:none; -} - -#searchResults .gsc-resultsbox-visible { - float:left; - width:720px; - margin-left:20px; -} - -#searchResults .gsc-tabHeader { - padding: 3px 6px; - position:relative; - width:auto; - display:block; -} - -#searchResults h2#searchTitle { - padding:0; - margin:5px 0; - border:none; -} - -#searchResults h2#searchTitle em { - font-style:normal; - color:#33B5E5; -} - -#searchResults .gsc-table-result { - margin:5px 0 10px 0; - background-color:transparent; -} -#searchResults .gs-web-image-box, .gs-promotion-image-box { - width:120px; -} -#searchResults .gs-web-image-box img.gs-image, .gs-promotion-image-box img.gs-promotion-image { - max-width:120px; -} - -#searchResults .gsc-table-result .gsc-thumbnail { - padding:0 20px 0 0; -} - -#searchResults td { - background-color:transparent; -} - -#searchResults .gsc-expansionArea { - position:relative; -} -#searchResults .gsc-tabsArea .gsc-cursor-box { - width:200px; - padding:20px 0 0 1px; -} -#searchResults .gsc-cursor-page { - display:inline-block; - float:left; - margin:-1px 0 0 -1px; - padding:0; - height:27px; - width:27px; - text-align:center; - line-height:2; -} - -#searchResults .gsc-tabHeader.gsc-tabhInactive, -#searchResults .gsc-cursor-page { - text-decoration:none; - color:#258AAF; - border: solid 1px #DADADA; -} - -#searchResults .gsc-tabHeader.gsc-tabhInactive:hover, -#searchResults .gsc-cursor-page:hover { - border-color: #DBDBDB; - background-color: #F3F3F3; - background-image: -webkit-gradient(linear, left top, left bottom, from(#F9F9F9), to(#ECECEC)); - background-image: -webkit-linear-gradient(top, #F9F9F9, #ECECEC); - background-image: -moz-linear-gradient(top, #F9F9F9, #ECECEC); - background-image: -ms-linear-gradient(top, #F9F9F9, #ECECEC); - background-image: -o-linear-gradient(top, #F9F9F9, #ECECEC); - background-image: linear-gradient(top, #F9F9F9, #ECECEC); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f9f9f9', -EndColorStr='#ececec'); - color: #33B5E5; -} - -#searchResults .gsc-tabHeader.gsc-tabhActive, -#searchResults .gsc-tabHeader.gsc-tabhActive:hover, -#searchResults .gsc-cursor-page.gsc-cursor-current-page, -#searchResults .gsc-cursor-page.gsc-cursor-current-page:hover { - color:#fff; - background-color: #09C; - background-image: -webkit-gradient(linear, left top, left bottom, from(#2FADDB), to(#09C)); - background-image: -webkit-linear-gradient(top, #2FADDB, #09C); - background-image: -moz-linear-gradient(top, #2FADDB, #09C); - background-image: -ms-linear-gradient(top, #2FADDB, #09C); - background-image: -o-linear-gradient(top, #2FADDB, #09C); - background-image: linear-gradient(top, #2FADDB, #09C); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#2faddb', EndColorStr='#09c'); - border: 1px solid #3990AB; - z-index:100; -} - -} - - - - - - - - - - - - - -/*********** PREVIOUSLY dac-styles.css ***************/ - - -#header { - border-bottom:0; -} - -#header .wrap { - max-width:940px; - height:41px; - border-bottom:1px solid; - border-color: #ccc; - position:relative; -} - -.about #header .wrap { - border-color: #9933CC; -} - -.design #header .wrap { - border-color: #33b5e5; -} - -// Fudging this so SAC looks OK -.develop #header .wrap { - border-color: #CCC; -} - -.distribute #header .wrap { - border-color: #9C0; -} - -.logo a { - width:123px; - float:left; -} - -#header .logo { - margin-top: -6px; - margin-left: 0px; - margin-bottom:0px; - width: 160px; - padding-right:10px; -} - -#header .saclogo { - margin-top: -3px; - margin-left: 0px; - margin-bottom: 0px; - margin-right: 30px; - width: 140px; - padding-right:0px; - border-right:1px solid #CCC; -} - -.search { - height:25px; - margin-top: -3px; - margin-bottom: 0px; -} - - - -/* Quicknav */ -.btn-quicknav { - width:20px; - height:28px; - float:left; - margin-left:6px; - padding-right:10px; - position:relative; - cursor:pointer; - border-right:1px solid #CCC; -} - -.btn-quicknav a { - zoom:1; - position:absolute; - top:13px; - left:5px; - display:block; - text-indent:-9999em; - width:10px; - height:5px; - background:url(../images/quicknav_arrow.png) no-repeat; -} - -.btn-quicknav a.arrow-active { - background-position: 0 -5px; - display:none; -} - -#header-wrap.quicknav a.arrow-inactive { - display:none; -} - -.btn-quicknav.active a.arrow-active { - display:block; -} - -.nav-x li { - display:block; - float:left; - margin-right:45px; - -webkit-transition: all 0.25s linear; - -moz-transition: all 0.25s linear; - -ms-transition: all 0.25s linear; - -o-transition: all 0.25s linear; - transition: all 0.25s linear; -} - -#header-wrap.quicknav .nav-x li { - min-width:160px; - margin-right:20px; -} - -#header-wrap.quicknav li.last { - margin-right:0px; -} - -#quicknav { - float:none; - clear:both; - margin-left:180px; - margin-top:-30px; - display:none; - overflow:hidden; -} - -#header-wrap.quicknav #quicknav { - -} - -#quicknav ul { - margin:10px 0; - padding:0; -} - -#quicknav ul li.design { - border-top:1px solid #33b5e5; -} - -#quicknav ul li.develop { - border-top:1px solid #FF8800; -} - -#quicknav ul li.distribute { - border-top:1px solid #99cc00; -} - -#quicknav ul li { - display:block; - float:left; - margin:0 20px 0 0; - min-width:140px; -} - -#quicknav ul li.last { - margin-right:0px; -} - -#quicknav ul li ul li { - float:none; -} - -#quicknav ul li ul li a { - color:#222; -} - -#quicknav ul li li ul, -#quicknav ul li li ul li { - margin:0; -} - -#quicknav ul li li ul li:before { - content:"\21B3"; -} - -#header-wrap { - -webkit-transition: all 0.25s ease-out; - -moz-transition: all 0.25s ease-out; - -ms-transition: all 0.25s ease-out; - -o-transition: all 0.25s ease-out; - transition: all 0.25s ease-out; - -} - -#header-wrap.quicknav { - height:196px; - -} - -/* SEARCH AND MORE */ -.search { - position: absolute; - width: 50px; - height:28px; - display: block; - margin-top:-3px; - margin-bottom:7px; - overflow:hidden; - z-index:100; - right:54px; - -webkit-transition: width 0.4s ease; - -moz-transition: width 0.4s ease; - -o-transition: width 0.4s ease; - transition: width 0.4s ease; -} - -.search #search-btn { - width:50px; - height:28px; - background:url(../images/icon_search.png) no-repeat; - float:left; -} - -.search-inner { - width:245px; -} - -.search:hover, .search.active { - width:245px; -} - -.search .bottom, .search .left, .search .right { - position: absolute; - background-color: #a2a2a2 -} - -.search .bottom { - width: 214px; - height: 1px; - top: 24px; - left: 0 -} - -.search .left, .search .right { - height: 5px; - width: 1px -} - -.search .left { - top: 22px; - left: 56px; - background-color:#CCC; -} - -.search .right { - top: 22px; - left: 238px; - background-color:#CCC; -} - -.search form { - margin-top: 2px; - width: 162px; - float:left; -} - -.search form input { - color: #2f2f2f; - font-size: 0.95em; - width: 178px; - border: none; - margin-left: 6px; - z-index: 1500; - position: relative; - background-color: transparent; - border-bottom:1px solid #CCC; - padding:0 0 0 4px; - outline:none; - height:24px; -} - -.search:hover form input { - border-bottom:1px solid #33B5E5; -} - -.search:hover .bottom, .search:hover .left, .search:hover .right { - background-color: #33b5e5; -} - -.search:hover #search-btn { - background-position: 0 -28px -} - -.search form input:focus { - color: #222; - font-weight: bold -} - -.moremenu { - float: right; - position: relative; - width: 50px; - height:28px; - display: block; - margin-top:-3px; - margin-bottom:7px; - overflow:hidden; - -webkit-transition: width 0.25s ease; - -moz-transition: width 0.25s ease; - -o-transition: width 0.25s ease; - transition: width 0.25s ease; -} - -.moremenu #more-btn { - width:40px; - height:28px; - background:url(../images/icon_more.png) no-repeat; - border-left:1px solid #CCC; - float:left; - cursor:pointer; -} - -.moremenu:hover #more-btn { - background-position:0 -28px; -} - -.morehover { - position:absolute; - right:6px; - top:-9px; - width:40px; - height:35px; - z-index:99; - overflow:hidden; - - -webkit-opacity:0; - -moz-opacity:0; - -o-opacity:0; - opacity:0; - - -webkit-transform-origin:100% 0%; - -moz-transform-origin:100% 0%; - -o-transform-origin:100% 0%; - transform-origin:100% 0%; - - -webkit-transition-property: -webkit-opacity; - -webkit-transition-duration: .25s; - -webkit-transition-timing-function:ease; - - -moz-transition-property: -webkit-opacity; - -moz-transition-duration: .25s; - -moz-transition-timing-function:ease; - - -o-transition-property: -webkit-opacity; - -o-transition-duration: .25s; - -o-transition-timing-function:ease; - - -transition-property: -webkit-opacity; - -transition-duration: .25s; - -transition-timing-function:ease; -} - -.morehover:hover, -.morehover.hover { - opacity:1; - height:385px; - width:268px; - -webkit-transition-property:height, -webkit-opacity; -} - -.morehover .top { - width:268px; - height:39px; - background:url(../images/more_top.png) no-repeat; -} - -.morehover .mid { - width:228px; - background:url(../images/more_mid.png) repeat-y; - padding:10px 20px 0 20px; -} - -.morehover .mid .header { - border-bottom:1px solid #ccc; - font-weight:bold; -} - -.morehover .bottom { - width:268px; - height:6px; - background:url(../images/more_bottom.png) no-repeat; -} - -.morehover ul { - margin:10px 10px 20px 0; -} - -.morehover ul li { - list-style:none; -} - -.morehover ul li.active a, -.morehover ul li.active a:hover { - color:#222 !important; -} - -.morehover ul li.active img { - margin-right:4px; -} - - - - -/* MARQUEE */ -.slideshow-container { - width:100%; - overflow:hidden; - position:relative; -} -.slideshow-container .slideshow-prev { - position:absolute; - top:50%; - left:0px; - margin-top:-36px; - z-index:99; -} -.slideshow-container .slideshow-next { - position:absolute; - top:50%; - margin-top:-36px; - z-index:99; - right:0px; -} - -.slideshow-container .pagination { - position:absolute; - bottom:20px; - width:100%; - text-align:center; - z-index:99; -} -.slideshow-container .pagination ul { - margin:0; -} -.slideshow-container .pagination ul li{ - display: inline-block; - width:12px; - height:12px; - text-indent:-8000px; - list-style:none; - margin: 0 2px; - border-radius:6px; - background-color:#ccc; - cursor:pointer; - -webkit-transition:color .5s ease-in; - -moz-transition:color .5s ease-in; - -o-transition:color .5s ease-in; - transition:color .5s ease-in; -} -.slideshow-container .pagination ul li:hover { - background-color:#999; -} -.slideshow-container .pagination ul li.active { - background-color:#33b5e5; -} -.slideshow-container .pagination ul li.active:hover { - background-color:#33b5e5; -} -.slideshow-container ul li { - display:inline; - list-style:none; -} - - - - -a.download-sdk { - float:right; - margin:-10px 0; - height:30px; - padding-top:4px; - padding-bottom:0px; -} - -#nav-x { - padding-top: 14px; -} - -#nav-x .wrap { - min-height:34px; -} - -#nav-x .wrap, -#searchResults.wrap { - max-width:940px; - border-bottom:1px solid #CCC; -} - -#searchResults.wrap #leftSearchControl { - min-height:700px -} -.nav-x { - margin-left:0; - margin-bottom:0; -} - - - - - - - - - - -/* - * CSS Styles that are needed by jScrollPane for it to operate correctly. - */ - -.jspContainer { - overflow: hidden; - position: relative; -} - -.jspPane { - position: absolute; - overflow: hidden; - width:100% !important; /* to avoid cut-off api names in reference in horiz scroll */ -} - -.jspVerticalBar { - position: absolute; - top: 0; - right: 0; - width: 4px; - height: 100%; - background: #f5f5f5; -} - -.jspHorizontalBar { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: 4px; - background: #f5f5f5; -} - -.jspVerticalBar *, -.jspHorizontalBar * { - margin: 0; - padding: 0; -} -.jspCap { - display: block; -} - -.jspVerticalBar .jspCap { - height: 4px; -} - -.jspHorizontalBar .jspCap { - width: 0; - height: 100%; -} - -.jspHorizontalBar .jspCap { - float: left; -} - -.jspTrack { - position: relative; -} - -.jspDrag { - background: #bbb; - position: relative; - top: 0; - left: 0; - cursor: pointer; -} - -.jspDrag:hover, -.jspDrag:active { - border-color: #09c; - background-color: #4cadcb; - background-image: -webkit-gradient(linear, left top, right top, from(#5dbcd9), to(#4cadcb)); - background-image: -webkit-linear-gradient(left, #5dbcd9, #4cadcb); - background-image: -moz-linear-gradient(left, #5dbcd9, #4cadcb); - background-image: -ms-linear-gradient(left, #5dbcd9, #4cadcb); - background-image: -o-linear-gradient(left, #5dbcd9, #4cadcb); - background-image: linear-gradient(left, #5dbcd9, #4cadcb); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#5dbcd9', EndColorStr='#4cadcb'); -} - -.jspHorizontalBar .jspTrack, -.jspHorizontalBar .jspDrag { - float: left; - height: 100%; -} - -.jspArrow { - background: #999; - text-indent: -20000px; - display: block; - cursor: pointer; -} - -.jspArrow.jspDisabled { - cursor: default; - background: #ccc; -} - -.jspVerticalBar .jspArrow { - height: 16px; -} - -.jspHorizontalBar .jspArrow { - width: 16px; - float: left; - height: 100%; -} - -.jspVerticalBar .jspArrow:focus { - outline: none; -} - -.jspCorner { - float: left; - height: 100%; -} - -/* Yuk! CSS Hack for IE6 3 pixel bug :( */ -* html .jspCorner { - margin: 0 -3px 0 0; -} -/******* end of jscrollpane *********/ - - - - - -/************ DEVELOP HOMEPAGE ******************/ - -/* Slideshow */ -.slideshow-develop { - height: 300px; - width: 940px; - position: relative; - overflow:hidden; -} -.slideshow-develop .frame { - width: 940px; - height: 300px; -} -.slideshow-develop img.play { - max-width:350px; - max-height:240px; - margin:20px 0 0 90px; - -webkit-transform: perspective(800px ) rotateY( 35deg ); - box-shadow: -16px 20px 40px rgba(0, 0, 0, 0.3); - -moz-box-shadow: -16px 20px 40px rgba(0, 0, 0, 0.3); - -webkit-box-shadow: -16px 20px 40px rgba(0, 0, 0, 0.3); -} -.slideshow-develop img.play.no-shadow { - box-shadow: none; - -moz-box-shadow: none; - -webkit-box-shadow: none; -} -.slideshow-develop img.play.no-transform { - -webkit-transform: none; -} -.slideshow-develop a.slideshow-next { - background: url(../images/arrow-right-develop.png); -} -.slideshow-develop a.slideshow-prev { - background: url(../images/arrow-left-develop.png); -} -.slideshow-develop .content-right { - float: left; -} -.slideshow-develop .content-right h2 { - padding:0; - margin-bottom:10px; - border:none; -} -.slideshow-develop .item { - height: 300px; - width: 940px; -} -.slideshow-develop .pagination ul li.active { - background-color: #F80; -} -.slideshow-develop .pagination ul li.active:hover { - background-color: #F80; -} -.slideshow-develop .item hr { - margin:5px 0 10px; -} -.slideshow-develop .item p { - margin:10px 0; -} -.slideshow-develop .item p.title-intro { - position:absolute; - margin:0; -} - -/* Feeds */ -.feed ul { - margin: 0; -} -.feed .feed-nav { - height: 25px; - border-bottom: 1px solid #CCC; -} -.feed .feed-nav li { - list-style: none; - float: left; - height: 21px; /* +4px bottom border = 25px; same as .feed-nav */ - margin-right: 25px; - cursor: pointer; -} -.feed .feed-nav li.active { - color: #000; - border-bottom: 4px solid #F80; -} -.feed .feed-container { - overflow: hidden; - width: 460px; -} -.feed .feed-container .feed-frame { - width: 1000px; -} -.feed .feed-container .feed-frame ul { - float: left; - width:460px; -} -.feed .feed-container .feed-frame ul ul { - float: none; - margin:10px 0 0 30px; -} -.feed .feed-container .feed-frame li { - list-style: none; - margin: 20px 0 20px 0; - width: 460px; - height:93px; -} -.feed .feed-container .feed-frame li.playlist { - height:auto; -} -.feed .feed-container .feed-frame li.playlist a { - height:93px; - display:block; -} -.feed .feed-container .feed-frame li.more { - height:20px; - margin:10px 0 5px 5px; -} -.feed .feed-container .feed-frame li.more a { - height:inherit; -} -.feed .feed-container .feed-frame li.playlist-video { - list-style: none; - margin: 0; - width: 460px; - height:55px; - font-size:12px; -} -.feed .feed-container .feed-frame li.playlist-video a { - height:45px; - padding:5px; -} -.feed .feed-container .feed-frame li.playlist-video h5 { - font-size:12px; - line-height:13px; - margin:0; -} -.feed .feed-container .feed-frame li.playlist-video p { - margin:5px 0 0; - line-height:15px; -} -.feed-container .feed-frame div.feed-image { - float: left; - border: 1px solid #999; - margin:0 20px 0 0; - width:122px; - height:92px; - background:url('../images/blog-default.png') no-repeat 0 0; - background-size:180px; -} -#jd-content .feed .feed-container .feed-frame li img { - float: left; - border: 1px solid #999; - margin:0 20px 0 0; - width:122px; - height:92px; -} -#jd-content .feed .feed-container .feed-frame li.playlist-video img { - width:inherit; - height:inherit; -} - -.feed .feed-container .feed-frame li a, -.feed .feed-container .feed-frame li a:active { - color:#555 !important; -} - -.feed .feed-container .feed-frame li a:hover, -.feed .feed-container .feed-frame li a:hover * { - color:#7AA1B0 !important; -} - -/* Video player */ -#player-wrapper { - display:none; - margin: -1px auto 0; - position: relative; - width: 940px; - height: 0px; -} -#player-frame { - background: #EFEFEF; - border: 1px solid #CCC; - padding: 0px 207px; - z-index: 10; /* stay above marque, but below search suggestions */ - width: 525px; - height: 330px; - position: relative; -} - - - -/************ DISTRIBUTE HOMEPAGE ***************/ - -.marquee { - width: 760px; -} -.marquee .main-img { - float: left; - margin-top: 20px; - width: 490px; -} -.marquee .copy { - width: 270px; - float: left; - margin-top: 30px; -} -.distribute-features { - margin: 0; -} -.distribute-features ul { - margin: 0; -} -.distribute-features ul li { - list-style: none; - float: left; - border-top: 1px solid #9C0; - width: 220px; - margin-right: 50px; -} -.distribute-features ul li.last { - margin-right: 0px; -} - - - -/************ DEVELOP TOPIC CONTAINERS ************/ - -.landing-banner, -.landing-docs { - margin:20px 0 0; -} -.landing-banner div:first-child, -.landing-docs div:first-child, -.landing-docs .col-12 { - margin-left:0; - min-height:280px; -} -.landing-banner div:last-child, -.landing-docs div:last-child, -.landing-docs .col-12 { - margin-right:0; -} - -.landing-banner h1 { - margin-top:0; -} -.landing-docs { - clear:left; - overflow:hidden; -} -.landing-docs h3 { - font-size:14px; - line-height:21px; - color:#555; - text-transform:uppercase; - border-bottom:1px solid #CCC; - margin:0 0 20px; -} -.landing-docs a { - color:#333 !important; -} - -.landing-docs a:hover, -.landing-docs a:hover * { - color:#7AA1B0 !important -} - -.landing-docs .normal-links a { - color:#258aaf !important; -} - -.plusone { - float:right; -} - -.feedback { - float:right !important; - margin: 0 0 0 10px; - font-size: 14px; -} - - -/************* HOME/LANDING PAGE *****************/ - -.slideshow-home { - height: 500px; - width: 940px; - border-bottom: 1px solid #CCC; - position: relative; - margin: 0; -} -.slideshow-home .frame { - width: 940px; - height: 500px; -} -.slideshow-home .content-left { - float: left; - text-align: center; - vertical-align: center; - margin: 0 0 0 35px; -} -.slideshow-home .content-right { - margin: 80px 0 0 0; -} -.slideshow-home .content-right p { - margin-bottom: 10px; -} -.slideshow-home .content-right p:last-child { - margin-top: 15px; -} -.slideshow-home .content-right h1 { - padding:0; -} -.slideshow-home .item { - height: 500px; - width: 940px; -} -.home-sections { - padding: 30px 20px 20px; - margin: 20px 0; - background: -webkit-linear-gradient(top, #F6F6F6,#F9F9F9); -} -.home-sections ul { - margin: 0; -} -.home-sections ul li { - float: left; - display: block; - list-style: none; - width: 170px; - height: 35px; - border: 1px solid #ccc; - background: white; - margin-right: 10px; - border-radius: 1px; - -webkit-border-radius: 1px; - -moz-border-radius: 1px; - box-shadow: 1px 1px 5px #EEE; - -webkit-box-shadow: 1px 1px 5px #EEE; - -moz-box-shadow: 1px 1px 5px #EEE; - background: white; -} -.home-sections ul li:hover { - background: #F9F9F9; - border: 1px solid #CCC; -} -.home-sections ul li a, -.home-sections ul li a:hover { - font-weight: bold; - margin-top: 8px; - line-height: 18px; - float: left; - width: 100%; - text-align: center; - color: #09c !important; -} -.home-sections ul li a { - font-weight: bold; - margin-top: 8px; - line-height: 18px; - float: left; - width:100%; - text-align:center; -} -.home-sections ul li img { - float: left; - margin: -8px 0 0 10px; -} -.home-sections ul li.last { - margin-right: 0px; -} -.fullpage #footer { - margin-top: -40px; -} - -.annotation-message { - display: block; -} - -.dac-custom-search { - background: #fff; - margin: 0 -10px; - padding: 20px 10px; - z-index: 1; -} - -.dac-custom-search .dac-fab, .dac-custom-search .dac-button-social { - top: -48px; -} - -.dac-custom-search-section-title { - color: #505050; -} - -.dac-custom-search-entry { - margin-bottom: 36px; - margin-top: 24px; - margin-left: 0em; -} - -.dac-custom-search-image { - background-size: cover; - height: 112px; -} - -.dac-custom-search-title { - color: #333; - font-size: 14px; - font-weight: 700; - line-height: 0px; - padding: 0; - margin: 1em 0em 1em 0em; -} - -.dac-custom-search-title a { - color: inherit; -} - -.dac-custom-search-section { - color: #999; - font-size: 16px; - font-variant: small-caps; - font-weight: 700; - margin: -5px 0 0 0; -} - -.dac-custom-search-snippet { - color: #666; - margin: 0em 0em .25em 0em; -} - -.dac-custom-search-link { - font-weight: 500; - word-wrap: break-word; - width: 100%; -} - -.dac-custom-search-load-more { - background: none; - border: none; - color: #333; - cursor: pointer; - display: block; - font-size: 14px; - font-weight: 700; - margin: 75px auto; - outline: none; - padding: 10px; -} - -.dac-custom-search-load-more:hover { - opacity: 0.7; -} - -.dac-custom-search-no-results { - color: #999; -} - diff --git a/tools/droiddoc/templates-sac/assets/css/fullscreen.css b/tools/droiddoc/templates-sac/assets/css/fullscreen.css deleted file mode 100644 index 71cf65b129..0000000000 --- a/tools/droiddoc/templates-sac/assets/css/fullscreen.css +++ /dev/null @@ -1,200 +0,0 @@ - -/* ============================================================================= - Columns - ========================================================================== */ -/* Applied to body to debug layout alignments -.grid { - width:100%; - height:100%; - background:url(../images/grid.png) center repeat-y; - top:0px; - margin:auto; - position:absolute; -} -*/ - -@media screen, projection, print { -.full { - padding: 2.5em 0; - border-top: solid 1px #ddd; - border-bottom: solid 1px #ddd; - background: #f7f7f7; -} -.wrap { - margin: 0 auto; - width: 100%; - min-width:600px; - clear: both; -} -.cols { - height: 1%; - margin: 0 -1.533742331288343558282%; - width: 103.06748466257669%} -*+html .cols { - margin-bottom: 20px; -} -.cols:after { - clear: both; - content: ' '; - display: block; - height: 0; - visibility: hidden; -} -.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, -.col-13, .col-14, .col-15, .col-16 { - float: left; - margin: 0 1.063829787234% 20px 1.063829787234%; -} -* html .col-1, * html .col-2, * html .col-3, * html .col-4, * html .col-5, * html .col-6, * html -.col-7, * html .col-8, * html .col-9, * html .col-10, * html .col-11, * html .col-12, * html -.col-13, * html .col-14, * html .col-15, * html .col-16 { - margin: 0; - margin: 0 1.063829787234% 20px 1.063829787234%; -} -[dir='rtl'] .col-1, [dir='rtl'] .col-2, [dir='rtl'] .col-3, [dir='rtl'] .col-4, [dir='rtl'] .col-5, -[dir='rtl'] .col-6, [dir='rtl'] .col-7, [dir='rtl'] .col-8, [dir='rtl'] .col-9, [dir='rtl'] .col-10, -[dir='rtl'] .col-11, [dir='rtl'] .col-12 { - float: right; -} -.col-1 { - width: 4.16666666666667%; -} -.col-2 { - width: 10.4166666666667%; -} -.col-3 { - width: 16.6666666666667%; -} -.col-4 { - width: 22.9166666666667%; -} -.col-5 { - width: 29.1666666666667%; -} -.col-6 { - width: 35.4166666666667%; -} -.col-7 { - width: 41.6666666666667%; -} -.col-8 { - width: 47.9166666666667%; -} -.col-9 { - width: 55.3333333333333%; -} -.col-10 { - width: 60.4166666666667%; -} -.col-11 { - width: 66.6666666666667%; -} -.col-12 { - width: 72.9166666666667%; -} -.col-13 { - width: 79.1666666666667%; -} -.col-14 { - width: 85.4166666666667%; -} -.col-15 { - width: 91.6666666666667%; -} -.col-16 { - width: 97.9166666666667%; -} - - - - - - - -#header .col-1, -#nav-x .col-1 { width: 40px } -#header .col-2, -#nav-x .col-2 { width: 100px } -#header .col-3, -#nav-x .col-3 { width: 160px } -#header .col-4, -#nav-x .col-4 { width: 220px } -#header .col-5, -#nav-x .col-5 { width: 280px } -#header .col-6, -#nav-x .col-6 { width: 340px } -#header .col-7, -#nav-x .col-7 { width: 400px } -#header .col-8, -#nav-x .col-8 { width: 460px } -#header .col-9, -#nav-x .col-9 { width: 520px } -#header .col-10, -#nav-x .col-10 { width: 580px } -#header .col-11, -#nav-x .col-11 { width: 640px } -#header .col-12, -#nav-x .col-12 { width: 700px } -#header .col-13, -#nav-x .col-13 { width: 760px } -#header .col-14, -#nav-x .col-14 { width: 820px } -#header .col-15, -#nav-x .col-15 { width: 880px } -#header .col-16, -#nav-x .col-16 { width: 940px } - - - -body { - padding:0 20px; -} -#header, -#searchResults, -#nav-x { - margin:0; -} -#body-content { - margin:0; -} -#body-content > .col-12 { - width:77.9804965%; - margin:0 0 0 0.97%; /* this percentage chosen to make IE9 happy */ -} -#side-nav { - width: 19.9804965%; - margin:0 1.063829787234% 0 0; -} - -#header .wrap { - max-width: 100%; -} - -#nav-x .wrap, -#searchResults.wrap { - max-width:100%; -} - -.nav-x { - margin:-2px 0 0 0; -} - -#devdoc-nav.fixed, -#devdoc-nav.fixed a.totop { - left:20px; /* !important ... for IE i think */ -} - - - - -} - -.col-right { - margin-right:0px; -} - -@media screen and (max-width:772px) { -.col-5, .col-6, .col-7 { - clear: both; - width: 97.0238096%} -} \ No newline at end of file diff --git a/tools/droiddoc/templates-sac/assets/design/default.js b/tools/droiddoc/templates-sac/assets/design/default.js deleted file mode 100644 index 3ba8486860..0000000000 --- a/tools/droiddoc/templates-sac/assets/design/default.js +++ /dev/null @@ -1,188 +0,0 @@ -$(document).ready(function() { - // prep nav expandos - var pagePath = document.location.pathname; - if (pagePath.indexOf(SITE_ROOT) == 0) { - pagePath = pagePath.substr(SITE_ROOT.length); - if (pagePath == '' || pagePath.charAt(pagePath.length - 1) == '/') { - pagePath += 'index.html'; - } - } - - if (SITE_ROOT.match(/\.\.\//) || SITE_ROOT == '') { - // If running locally, SITE_ROOT will be a relative path, so account for that by - // finding the relative URL to this page. This will allow us to find links on the page - // leading back to this page. - var pathParts = pagePath.split('/'); - var relativePagePathParts = []; - var upDirs = (SITE_ROOT.match(/(\.\.\/)+/) || [''])[0].length / 3; - for (var i = 0; i < upDirs; i++) { - relativePagePathParts.push('..'); - } - for (var i = 0; i < upDirs; i++) { - relativePagePathParts.push(pathParts[pathParts.length - (upDirs - i) - 1]); - } - relativePagePathParts.push(pathParts[pathParts.length - 1]); - pagePath = relativePagePathParts.join('/'); - } else { - // Otherwise the page path should be an absolute URL. - pagePath = SITE_ROOT + pagePath; - } - - // select current page in sidenav and set up prev/next links if they exist - var $selNavLink = $('.nav-y').find('a[href="' + pagePath + '"]'); - if ($selNavLink.length) { - $selListItem = $selNavLink.closest('li'); - - $selListItem.addClass('selected'); - $selListItem.closest('li>ul').addClass('expanded'); - - // set up prev links - var $prevLink = []; - var $prevListItem = $selListItem.prev('li'); - if ($prevListItem.length) { - if ($prevListItem.hasClass('nav-section')) { - // jump to last topic of previous section - $prevLink = $prevListItem.find('a:last'); - } else { - // jump to previous topic in this section - $prevLink = $prevListItem.find('a:eq(0)'); - } - } else { - // jump to this section's index page (if it exists) - $prevLink = $selListItem.parents('li').find('a'); - } - - if ($prevLink.length) { - var prevHref = $prevLink.attr('href'); - if (prevHref == SITE_ROOT + 'index.html') { - // Don't show Previous when it leads to the homepage - $('.prev-page-link').hide(); - } else { - $('.prev-page-link').attr('href', prevHref).show(); - } - } else { - $('.prev-page-link').hide(); - } - - // set up next links - var $nextLink = []; - if ($selListItem.hasClass('nav-section')) { - // we're on an index page, jump to the first topic - $nextLink = $selListItem.find('ul').find('a:eq(0)') - } else { - // jump to the next topic in this section (if it exists) - $nextLink = $selListItem.next('li').find('a:eq(0)'); - if (!$nextLink.length) { - // no more topics in this section, jump to the first topic in the next section - $nextLink = $selListItem.parents('li').next('li.nav-section').find('a:eq(0)'); - } - } - if ($nextLink.length) { - $('.next-page-link').attr('href', $nextLink.attr('href')).show(); - } else { - $('.next-page-link').hide(); - } - } - - // Set up expand/collapse behavior - $('.nav-y li').has('ul').click(function() { - if ($(this).hasClass('expanded')) { - return; - } - - // hide other - var $old = $('.nav-y li.expanded'); - if ($old.length) { - var $oldUl = $old.children('ul'); - $oldUl.css('height', $oldUl.height() + 'px'); - window.setTimeout(function() { - $oldUl - .addClass('animate-height') - .css('height', ''); - }, 0); - $old.removeClass('expanded'); - } - - // show me - $(this).addClass('expanded'); - var $ul = $(this).children('ul'); - var expandedHeight = $ul.height(); - $ul - .removeClass('animate-height') - .css('height', 0); - window.setTimeout(function() { - $ul - .addClass('animate-height') - .css('height', expandedHeight + 'px'); - }, 0); - }); - - // Stop expand/collapse behavior when clicking on nav section links (since we're navigating away - // from the page) - $('.nav-y li').has('ul').find('a:eq(0)').click(function(evt) { - window.location.href = $(this).attr('href'); - return false; - }); - - // Set up play-on-hover