am af830d39: am 485847e4: Merge change I6f85805b into eclair-mr2
Merge commit 'af830d3999ac1670b92207f6c1201d297913b9a9'
* commit 'af830d3999ac1670b92207f6c1201d297913b9a9':
break up event-log-tags; generate java source files with constants
diff --git a/cleanspec.mk b/cleanspec.mk
index 75f58d5..48944c8 100644
--- a/cleanspec.mk
+++ b/cleanspec.mk
@@ -79,6 +79,8 @@
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/bin/bugreport)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libwebcore_intermediates)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libwebcore_intermediates)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libdvm_intermediates)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libandroid_runtime_intermediates)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libwebcore_intermediates)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libwebcore_intermediates)
$(call add-clean-step, rm -rf $(OUT_DIR)/obj/target/common/obj/APPS/VoiceSearch_intermediates)
@@ -99,6 +101,7 @@
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/build.prop)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libwebcore_intermediates)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libwebcore_intermediates)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/APPS)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/app)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS)
diff --git a/core/binary.mk b/core/binary.mk
index 4413d47..d5528b1 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -9,6 +9,15 @@
include $(BUILD_SYSTEM)/base_rules.mk
#######################################
+####################################################
+## Add FDO flags if FDO is turned on and supported
+####################################################
+ifeq ($(strip $(LOCAL_NO_FDO_SUPPORT)),)
+ LOCAL_CFLAGS += $(TARGET_FDO_CFLAGS)
+ LOCAL_CPPFLAGS += $(TARGET_FDO_CFLAGS)
+ LOCAL_LDFLAGS += $(TARGET_FDO_CFLAGS)
+endif
+
###########################################################
## Define PRIVATE_ variables used by multiple module types
###########################################################
diff --git a/core/build_id.mk b/core/build_id.mk
index 64ee0e1..40bb35d 100644
--- a/core/build_id.mk
+++ b/core/build_id.mk
@@ -23,7 +23,7 @@
# (like "TC1-RC5"). It must be a single word, and is
# capitalized by convention.
#
-BUILD_ID := ECLAIR-MR2
+BUILD_ID := MASTER
# DISPLAY_BUILD_NUMBER should only be set for development branches,
# If set, the BUILD_NUMBER (cl) is appended to the BUILD_ID for
diff --git a/core/clear_vars.mk b/core/clear_vars.mk
index a7eba3f..99d7eb0 100644
--- a/core/clear_vars.mk
+++ b/core/clear_vars.mk
@@ -33,6 +33,7 @@
LOCAL_CXX:=
LOCAL_CPP_EXTENSION:=
LOCAL_NO_DEFAULT_COMPILER_FLAGS:=
+LOCAL_NO_FDO_SUPPORT :=
LOCAL_ARM_MODE:=
LOCAL_YACCFLAGS:=
LOCAL_ASFLAGS:=
diff --git a/core/combo/darwin-x86.mk b/core/combo/darwin-x86.mk
index 65d6375..8fc48a1 100644
--- a/core/combo/darwin-x86.mk
+++ b/core/combo/darwin-x86.mk
@@ -30,6 +30,7 @@
-o $@ \
$(PRIVATE_LDFLAGS) \
$(if $(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES),-all_load) \
+ $(TARGET_FDO_LIB) \
$(TARGET_LIBGCC)
endef
@@ -43,6 +44,7 @@
$(PRIVATE_LDLIBS) \
$(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \
$(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
+ $(TARGET_FDO_LIB) \
$(TARGET_LIBGCC)
endef
@@ -56,6 +58,7 @@
$(PRIVATE_LDLIBS) \
$(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \
$(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
+ $(TARGET_FDO_LIB) \
$(TARGET_LIBGCC)
endef
@@ -83,9 +86,10 @@
$(HOST_GLOBAL_LD_DIRS) \
$(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \
$(PRIVATE_ALL_OBJECTS) \
- $(PRIVATE_LDLIBS) \
$(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \
$(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
+ $(PRIVATE_LDFLAGS) \
+ $(PRIVATE_LDLIBS) \
$(HOST_LIBGCC)
endef
@@ -95,4 +99,3 @@
endef
endif
-
diff --git a/core/combo/linux-arm.mk b/core/combo/linux-arm.mk
index 6529106..8bf5f88 100644
--- a/core/combo/linux-arm.mk
+++ b/core/combo/linux-arm.mk
@@ -135,6 +135,37 @@
$(combo_target)LIBGCC := $(shell $($(combo_target)CC) $($(combo_target)GLOBAL_CFLAGS) -print-libgcc-file-name)
endif
+# Define FDO (Feedback Directed Optimization) options.
+
+TARGET_FDO_CFLAGS:=
+TARGET_FDO_LIB:=
+
+target_libgcov := $(shell $($(combo_target)CC) $($(combo_target)GLOBAL_CFLAGS) \
+ --print-file-name=libgcov.a)
+ifneq ($(strip $(BUILD_FDO_INSTRUMENT)),)
+ # Set BUILD_FDO_INSTRUMENT=true to turn on FDO instrumentation.
+ # The profile will be generated on /data/local/tmp/profile on the device.
+ TARGET_FDO_CFLAGS := -fprofile-generate=/data/local/tmp/profile -DANDROID_FDO
+ TARGET_FDO_LIB := $(target_libgcov)
+else
+ # If BUILD_FDO_INSTRUMENT is turned off, then consider doing the FDO optimizations.
+ # Set TARGET_FDO_PROFILE_PATH to set a custom profile directory for your build.
+ ifeq ($(strip $(TARGET_FDO_PROFILE_PATH)),)
+ TARGET_FDO_PROFILE_PATH := fdo/profiles/$(TARGET_ARCH)/$(TARGET_ARCH_VARIANT)
+ else
+ ifeq ($(strip $(wildcard $(TARGET_FDO_PROFILE_PATH))),)
+ $(warning Custom TARGET_FDO_PROFILE_PATH supplied, but directory does not exist. Turn off FDO.)
+ endif
+ endif
+
+ # If the FDO profile directory can't be found, then FDO is off.
+ ifneq ($(strip $(wildcard $(TARGET_FDO_PROFILE_PATH))),)
+ TARGET_FDO_CFLAGS := -fprofile-use=$(TARGET_FDO_PROFILE_PATH) -DANDROID_FDO
+ TARGET_FDO_LIB := $(target_libgcov)
+ endif
+endif
+
+
# unless CUSTOM_KERNEL_HEADERS is defined, we're going to use
# symlinks located in out/ to point to the appropriate kernel
# headers. see 'config/kernel_headers.make' for more details
@@ -166,6 +197,12 @@
$(combo_target)DEFAULT_SYSTEM_SHARED_LIBRARIES := libc libstdc++ libm
$(combo_target)CUSTOM_LD_COMMAND := true
+
+# Enable the Dalvik JIT compiler if not already specified.
+ifeq ($(strip $(WITH_JIT)),)
+ WITH_JIT := true
+endif
+
define transform-o-to-shared-lib-inner
$(TARGET_CXX) \
-nostdlib -Wl,-soname,$(notdir $@) -Wl,-T,$(BUILD_SYSTEM)/armelf.xsc \
@@ -181,6 +218,7 @@
-o $@ \
$(PRIVATE_LDFLAGS) \
$(TARGET_GLOBAL_LDFLAGS) \
+ $(TARGET_FDO_LIB) \
$(TARGET_LIBGCC)
endef
@@ -198,6 +236,7 @@
$(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
$(PRIVATE_LDFLAGS) \
$(TARGET_GLOBAL_LDFLAGS) \
+ $(TARGET_FDO_LIB) \
$(TARGET_LIBGCC) \
$(TARGET_CRTEND_O)
endef
@@ -212,6 +251,7 @@
$(TARGET_GLOBAL_LDFLAGS) \
$(PRIVATE_ALL_OBJECTS) \
$(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
+ $(TARGET_FDO_LIB) \
$(TARGET_LIBGCC) \
$(TARGET_CRTEND_O)
endef
diff --git a/core/definitions.mk b/core/definitions.mk
index 61bd562..038bf49 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -919,7 +919,7 @@
## Commands for running ar
###########################################################
-define extract-and-include-whole-static-libs
+define extract-and-include-target-whole-static-libs
$(foreach lib,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES), \
@echo "preparing StaticLib: $(PRIVATE_MODULE) [including $(lib)]"; \
ldir=$(PRIVATE_INTERMEDIATES_DIR)/WHOLE/$(basename $(notdir $(lib)))_objs;\
@@ -939,7 +939,7 @@
define transform-o-to-static-lib
@mkdir -p $(dir $@)
@rm -f $@
-$(extract-and-include-whole-static-libs)
+$(extract-and-include-target-whole-static-libs)
@echo "target StaticLib: $(PRIVATE_MODULE) ($@)"
$(hide) echo $^ | xargs $(TARGET_AR) $(TARGET_GLOBAL_ARFLAGS) $(PRIVATE_ARFLAGS) $@
endef
@@ -948,13 +948,30 @@
## Commands for running host ar
###########################################################
+define extract-and-include-host-whole-static-libs
+$(foreach lib,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES), \
+ @echo "preparing StaticLib: $(PRIVATE_MODULE) [including $(lib)]"; \
+ ldir=$(PRIVATE_INTERMEDIATES_DIR)/WHOLE/$(basename $(notdir $(lib)))_objs;\
+ rm -rf $$ldir; \
+ mkdir -p $$ldir; \
+ filelist=; \
+ for f in `$(HOST_AR) t $(lib) | grep '\.o$$'`; do \
+ $(HOST_AR) p $(lib) $$f > $$ldir/$$f; \
+ filelist="$$filelist $$ldir/$$f"; \
+ done ; \
+ $(HOST_AR) $(HOST_GLOBAL_ARFLAGS) $(PRIVATE_ARFLAGS) $@ $$filelist;\
+)
+endef
+
# Explicitly delete the archive first so that ar doesn't
# try to add to an existing archive.
define transform-host-o-to-static-lib
@mkdir -p $(dir $@)
-@echo "host StaticLib: $(PRIVATE_MODULE) ($@)"
@rm -f $@
-echo $^ | xargs $(HOST_AR) $(HOST_GLOBAL_ARFLAGS) $(PRIVATE_ARFLAGS) $@
+$(extract-and-include-host-whole-static-libs)
+@echo "host StaticLib: $(PRIVATE_MODULE) ($@)"
+echo $(filter %.o, $^) | \
+ xargs $(HOST_AR) $(HOST_GLOBAL_ARFLAGS) $(PRIVATE_ARFLAGS) $@
endef
diff --git a/core/dynamic_binary.mk b/core/dynamic_binary.mk
index f07cf2a..0818d87 100644
--- a/core/dynamic_binary.mk
+++ b/core/dynamic_binary.mk
@@ -91,6 +91,13 @@
# around, so we have to use this version.
prelink_output := $(LOCAL_UNSTRIPPED_PATH)/$(LOCAL_MODULE_SUBDIR)$(LOCAL_BUILT_MODULE_STEM)
+# Skip prelinker if it is FDO instrumentation build.
+ifneq ($(strip $(BUILD_FDO_INSTRUMENT)),)
+ifneq ($(LOCAL_NO_FDO_SUPPORT),true)
+LOCAL_PRELINK_MODULE := false
+endif
+endif
+
ifeq ($(LOCAL_PRELINK_MODULE),true)
$(prelink_output): $(prelink_input) $(TARGET_PRELINKER_MAP) $(APRIORI)
$(transform-to-prelinked)
diff --git a/core/host_static_library.mk b/core/host_static_library.mk
index 237981f..39c99ee 100644
--- a/core/host_static_library.mk
+++ b/core/host_static_library.mk
@@ -1,5 +1,5 @@
###########################################################
-## Standard rules for building a static library.
+## Standard rules for building a static library for the host.
##
## Additional inputs from base_rules.make:
## None.
@@ -7,8 +7,6 @@
## LOCAL_MODULE_SUFFIX will be set for you.
###########################################################
-LOCAL_IS_HOST_MODULE := true
-
ifeq ($(strip $(LOCAL_MODULE_CLASS)),)
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
endif
@@ -17,7 +15,10 @@
endif
LOCAL_UNINSTALLABLE_MODULE := true
+LOCAL_IS_HOST_MODULE := true
+
include $(BUILD_SYSTEM)/binary.mk
+$(LOCAL_BUILT_MODULE): $(built_whole_libraries)
$(LOCAL_BUILT_MODULE): $(all_objects)
$(transform-host-o-to-static-lib)
diff --git a/tools/adbs b/tools/adbs
index 8b1fac6..815ae10 100755
--- a/tools/adbs
+++ b/tools/adbs
@@ -217,6 +217,7 @@
SymbolTranslation(groups)
else:
print line
+ sys.stdout.flush()
# adb itself aborts
stream.close()
diff --git a/tools/apicheck/src/com/android/apicheck/ApiInfo.java b/tools/apicheck/src/com/android/apicheck/ApiInfo.java
index 01d8f9e..c237814 100644
--- a/tools/apicheck/src/com/android/apicheck/ApiInfo.java
+++ b/tools/apicheck/src/com/android/apicheck/ApiInfo.java
@@ -26,8 +26,19 @@
mPackages = new HashMap<String, PackageInfo>();
mAllClasses = new HashMap<String, ClassInfo>();
}
+
+ public ClassInfo findClass(String name) {
+ return mAllClasses.get(name);
+ }
+
+ private void resolveInterfaces() {
+ for (ClassInfo c : mAllClasses.values()) {
+ c.resolveInterfaces(this);
+ }
+ }
public boolean isConsistent(ApiInfo otherApi) {
+ resolveInterfaces();
boolean consistent = true;
for (PackageInfo pInfo : mPackages.values()) {
if (otherApi.getPackages().containsKey(pInfo.name())) {
diff --git a/tools/apicheck/src/com/android/apicheck/ClassInfo.java b/tools/apicheck/src/com/android/apicheck/ClassInfo.java
index 5405ad2..e62a3d0 100644
--- a/tools/apicheck/src/com/android/apicheck/ClassInfo.java
+++ b/tools/apicheck/src/com/android/apicheck/ClassInfo.java
@@ -26,7 +26,8 @@
private boolean mIsFinal;
private String mDeprecated;
private String mScope;
- private List<String> mInterfaces;
+ private List<String> mInterfaceNames;
+ private List<ClassInfo> mInterfaces;
private HashMap<String, MethodInfo> mMethods;
private HashMap<String, FieldInfo> mFields;
private HashMap<String, ConstructorInfo> mConstructors;
@@ -48,7 +49,8 @@
mIsFinal = isFinal;
mDeprecated = deprecated;
mScope = visibility;
- mInterfaces = new ArrayList<String>();
+ mInterfaceNames = new ArrayList<String>();
+ mInterfaces = new ArrayList<ClassInfo>();
mMethods = new HashMap<String, MethodInfo>();
mFields = new HashMap<String, FieldInfo>();
mConstructors = new HashMap<String, ConstructorInfo>();
@@ -109,6 +111,18 @@
return null;
}
+ // Find a superinterface declaration of the given method.
+ public MethodInfo interfaceMethod(MethodInfo candidate) {
+ for (ClassInfo interfaceInfo : mInterfaces) {
+ for (MethodInfo mi : interfaceInfo.mMethods.values()) {
+ if (mi.matches(candidate)) {
+ return mi;
+ }
+ }
+ }
+ return (mSuperClass != null) ? mSuperClass.interfaceMethod(candidate) : null;
+ }
+
public boolean isConsistent(ClassInfo cl) {
cl.mExistsInBoth = true;
mExistsInBoth = true;
@@ -120,14 +134,18 @@
+ " changed class/interface declaration");
consistent = false;
}
- for (String iface : mInterfaces) {
- if (!cl.mInterfaces.contains(iface)) {
+ for (String iface : mInterfaceNames) {
+ boolean found = false;
+ for (ClassInfo c = cl; c != null && !found; c = c.mSuperClass) {
+ found = c.mInterfaceNames.contains(iface);
+ }
+ if (!found) {
Errors.error(Errors.REMOVED_INTERFACE, cl.position(),
"Class " + qualifiedName() + " no longer implements " + iface);
}
}
- for (String iface : cl.mInterfaces) {
- if (!mInterfaces.contains(iface)) {
+ for (String iface : cl.mInterfaceNames) {
+ if (!mInterfaceNames.contains(iface)) {
Errors.error(Errors.ADDED_INTERFACE, cl.position(),
"Added interface " + iface + " to class "
+ qualifiedName());
@@ -147,6 +165,9 @@
*/
MethodInfo mi = mInfo.containingClass().overriddenMethod(mInfo);
if (mi == null) {
+ mi = mInfo.containingClass().interfaceMethod(mInfo);
+ }
+ if (mi == null) {
Errors.error(Errors.REMOVED_METHOD, mInfo.position(),
"Removed public method " + mInfo.qualifiedName());
consistent = false;
@@ -252,9 +273,15 @@
return consistent;
}
+
+ public void resolveInterfaces(ApiInfo apiInfo) {
+ for (String interfaceName : mInterfaceNames) {
+ mInterfaces.add(apiInfo.findClass(interfaceName));
+ }
+ }
public void addInterface(String name) {
- mInterfaces.add(name);
+ mInterfaceNames.add(name);
}
public void addMethod(MethodInfo mInfo) {
diff --git a/tools/droiddoc/src/MethodInfo.java b/tools/droiddoc/src/MethodInfo.java
index 3211038..7f96b80 100644
--- a/tools/droiddoc/src/MethodInfo.java
+++ b/tools/droiddoc/src/MethodInfo.java
@@ -363,8 +363,17 @@
public String getHashableName() {
StringBuilder result = new StringBuilder();
result.append(name());
- for (ParameterInfo pInfo : mParameters) {
- result.append(":").append(pInfo.type().fullName());
+ for (int p = 0; p < mParameters.length; p++) {
+ result.append(":");
+ if (p == mParameters.length - 1 && isVarArgs()) {
+ // TODO: note that this does not attempt to handle hypothetical
+ // vararg methods whose last parameter is a list of arrays, e.g.
+ // "Object[]...".
+ result.append(mParameters[p].type().fullNameNoDimension(typeVariables()))
+ .append("...");
+ } else {
+ result.append(mParameters[p].type().fullName(typeVariables()));
+ }
}
return result.toString();
}
diff --git a/tools/droiddoc/src/SinceTagger.java b/tools/droiddoc/src/SinceTagger.java
index fb69c04..a1bce55 100644
--- a/tools/droiddoc/src/SinceTagger.java
+++ b/tools/droiddoc/src/SinceTagger.java
@@ -1,8 +1,13 @@
// Copyright 2009 Google Inc. All Rights Reserved.
-import com.android.apicheck.*;
+import com.android.apicheck.ApiCheck;
+import com.android.apicheck.ApiInfo;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Collections;
import org.clearsilver.HDF;
@@ -165,31 +170,68 @@
*/
private void warnForMissingVersions(ClassInfo[] classDocs) {
for (ClassInfo claz : classDocs) {
+ if (!checkLevelRecursive(claz)) {
+ continue;
+ }
+
if (claz.getSince() == null) {
Errors.error(Errors.NO_SINCE_DATA, claz.position(),
"XML missing class " + claz.qualifiedName());
}
- for (FieldInfo field : claz.fields()) {
- if (field.getSince() == null) {
- Errors.error(Errors.NO_SINCE_DATA, field.position(),
- "XML missing field "
- + claz.qualifiedName() + "#" + field .name());
- }
+
+ for (FieldInfo field : missingVersions(claz.fields())) {
+ Errors.error(Errors.NO_SINCE_DATA, field.position(),
+ "XML missing field " + claz.qualifiedName()
+ + "#" + field.name());
}
- for (MethodInfo constructor : claz.constructors()) {
- if (constructor.getSince() == null) {
- Errors.error(Errors.NO_SINCE_DATA, constructor.position(),
- "XML missing constructor "
- + claz.qualifiedName() + "#" + constructor.getHashableName());
- }
+
+ for (MethodInfo constructor : missingVersions(claz.constructors())) {
+ Errors.error(Errors.NO_SINCE_DATA, constructor.position(),
+ "XML missing constructor " + claz.qualifiedName()
+ + "#" + constructor.getHashableName());
}
- for (MethodInfo method : claz.methods()) {
- if (method.getSince() == null) {
- Errors.error(Errors.NO_SINCE_DATA, method.position(),
- "XML missing method "
- + claz.qualifiedName() + "#" + method .getHashableName());
- }
+
+ for (MethodInfo method : missingVersions(claz.methods())) {
+ Errors.error(Errors.NO_SINCE_DATA, method.position(),
+ "XML missing method " + claz.qualifiedName()
+ + "#" + method.getHashableName());
}
}
}
+
+ /**
+ * Returns the DocInfos in {@code all} that are documented but do not have
+ * since tags.
+ */
+ private <T extends MemberInfo> Iterable<T> missingVersions(T[] all) {
+ List<T> result = Collections.emptyList();
+ for (T t : all) {
+ // if this member has version info or isn't documented, skip it
+ if (t.getSince() != null
+ || t.isHidden()
+ || !checkLevelRecursive(t.realContainingClass())) {
+ continue;
+ }
+
+ if (result.isEmpty()) {
+ result = new ArrayList<T>(); // lazily construct a mutable list
+ }
+ result.add(t);
+ }
+ return result;
+ }
+
+ /**
+ * Returns true if {@code claz} and all containing classes are documented.
+ * The result may be used to filter out members that exist in the API
+ * data structure but aren't a part of the API.
+ */
+ private boolean checkLevelRecursive(ClassInfo claz) {
+ for (ClassInfo c = claz; c != null; c = c.containingClass()) {
+ if (!c.checkLevel()) {
+ return false;
+ }
+ }
+ return true;
+ }
}
diff --git a/tools/droiddoc/templates-pdk/assets/android-developer-core.css b/tools/droiddoc/templates-pdk/assets/android-developer-core.css
new file mode 100644
index 0000000..bb4f806
--- /dev/null
+++ b/tools/droiddoc/templates-pdk/assets/android-developer-core.css
@@ -0,0 +1,1297 @@
+/* file: android-developer-core.css
+ author: smain
+ date: september 2008
+ info: core developer styles (developer.android.com)
+*/
+
+
+/* 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;
+}
+
+.rebox {
+ background:#daf3fc;
+ margin-bottom:1.5em;
+ -moz-border-radius:5px;
+ -webkit-border-radius:5px;
+}
+.rebox.lil p img {
+ display:block;
+ margin-bottom:2em;
+}
+
+.rebox .p {
+ padding:1.5em;
+ line-height:1.25em;
+}
+
+.p-r {
+ padding-right:1.5em;
+}
+
+.rebox h2, .rebox h3 {
+ font-size:16px;
+ color:#fff;
+ display:block;
+ background:url('/assets/images/rebox-gradient.gif') no-repeat center bottom #95c0d0;
+ padding:.5em .5em .5em .75em;
+ -moz-border-radius-topright:5px;
+ -moz-border-radius-topleft:5px;
+ -webkit-border-top-right-radius:5px;
+ -webkit-border-top-left-radius:5px;
+}
+
+.rebox.lil {
+}
+.rebox.lil img {
+ float:left;
+ margin:0 1em 0 0;
+ padding:0 0 3em 0;
+}
+
+.rebox.green {
+ background:#d4e9a9;
+}
+
+.rebox.green h2, .rebox.green h3 {
+ background:url('images/rebox-gradient-green.gif') no-repeat center bottom #aaca46;
+ font-weight:bold;
+}
+
+.rebox.green a:link, .rebox.green a:visited {
+ color:#360;
+}
+
+/* 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 {
+ font-family:inherit;
+ font-size:inherit;
+ padding:0;
+ margin:0;
+}
+
+option {
+ padding:0 4px;
+}
+
+p {
+ 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, dd table, 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;
+}
+
+hr.blue {
+ background-color:#DDF0F2;
+ border:none;
+ height:5px;
+ margin:20px 0 10px;
+}
+
+/* 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:576px;
+ padding:0 10px;
+ border-bottom:3px solid #94b922;
+}
+
+#headerLeft{
+ padding: 25px 0 0;
+}
+
+#headerLeft img{
+ height:50px;
+ width:349px;
+}
+
+#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,
+.community #community-link a,
+.porting #porting-link a,
+.source #source-link a,
+.about #about-link a,
+.downloads #downloads-link a,
+.compatibility #compatibility-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,
+.community #community-link a:hover,
+.home #home-link a:hover,
+.community #community-link a:hover,
+.porting #porting-link a:hover,
+.source #source-link a:hover,
+.about #about-link a:hover,
+.downloads #downloads-link a:hover,
+.compatibility #compatibility-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 */
+
+#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 .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;
+}
+
+#homeBottom td {
+ border:0px solid #666;
+ padding: 8px 18px 8px 18px;
+}
+
+#homeBottom table {
+ width: 100%;
+}
+
+
+#homeBottom {
+ padding: 0px 0px 0px 0px;
+ float: left;
+ width: 585px;
+ height: 165px;
+ background-image:url(images/home/bg_home_bottom.jpg);
+ background-repeat: no-repeat;
+}
+
+.groupTable {
+ width: 100%;
+}
+
+.groupTable th {
+ padding: 10px;
+ color: #ffffff;
+ background-color: #6D8293;
+ border: 2px solid #fff;
+}
+
+.groupTable td {
+ padding: 10px;
+ color: #333333;
+ background-color: #d9d9d9;
+ border: 2px solid #fff;
+}
+
+.groupTable .evenRow td {
+ background-color: #ededed;
+}
+
+span.BigBlue {
+ color:#336666;
+ font-size:1.25em;
+ margin: 0em 0em 0em 0em;
+ padding-bottom:.5em;
+ font-weight: bold;
+}
+
+span.emBlue {
+ color: #336666;
+ font-style:italic;
+}
+
+.pageTable {
+ width: 95%;
+ border: none;
+}
+
+.pageTable img {
+vertical-align: bottom;
+}
+
+.pageTable td {
+ border: none;
+}
+
+.pageTable td.leftNav {
+ width: 100px;
+}
+
+.greenBox {
+ margin: 10px 30px 10px 30px;
+ padding: 10px 20px 10px 20px;
+ background-color: #EBF3DB;
+ width: 75%;
+}
+
+.blueBox {
+ margin: 10px 30px 10px 30px;
+ padding: 10px 20px 10px 20px;
+ background-color: #DDF0F2;
+ width: 75%;
+}
+
+.blueHR {
+ margin: 10px 30px 10px 30px;
+ height: 5px;
+ background-color: #DDF0F2;
+ width: 75%;
+}
+
+/* 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: .8em;
+ 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;
+}
+
+#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: 580px;
+ 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;
+}
+
+#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;
+}
diff --git a/tools/droiddoc/templates-pdk/assets/android-developer-docs.js b/tools/droiddoc/templates-pdk/assets/android-developer-docs.js
new file mode 100644
index 0000000..59c4192
--- /dev/null
+++ b/tools/droiddoc/templates-pdk/assets/android-developer-docs.js
@@ -0,0 +1,464 @@
+var resizePackagesNav;
+var classesNav;
+var devdocNav;
+var sidenav;
+var content;
+var HEADER_HEIGHT = 117;
+var cookie_namespace = 'android_developer';
+var NAV_PREF_TREE = "tree";
+var NAV_PREF_PANELS = "panels";
+var nav_pref;
+var toRoot;
+var isMobile = false; // true if mobile, so we can adjust some layout
+
+function addLoadEvent(newfun) {
+ var current = window.onload;
+ if (typeof window.onload != 'function') {
+ window.onload = newfun;
+ } else {
+ window.onload = function() {
+ current();
+ newfun();
+ }
+ }
+}
+
+var agent = navigator['userAgent'];
+if ((agent.indexOf("Mobile") != -1) ||
+ (agent.indexOf("BlackBerry") != -1) ||
+ (agent.indexOf("Mini") != -1)) {
+ isMobile = true;
+ addLoadEvent(mobileSetup);
+}
+
+addLoadEvent(function() {
+window.onresize = resizeAll;
+});
+
+function mobileSetup() {
+ $("body").css({'overflow':'auto'});
+ $("html").css({'overflow':'auto'});
+ $("#body-content").css({'position':'relative', 'top':'0'});
+ $("#doc-content").css({'overflow':'visible', 'border-left':'3px solid #DDD'});
+ $("#side-nav").css({'padding':'0'});
+ $("#nav-tree").css({'overflow-y': 'auto'});
+}
+
+/* loads the lists.js file to the page.
+Loading this in the head was slowing page load time */
+addLoadEvent( function() {
+ var lists = document.createElement("script");
+ lists.setAttribute("type","text/javascript");
+ lists.setAttribute("src", toRoot+"reference/lists.js");
+ document.getElementsByTagName("head")[0].appendChild(lists);
+} );
+
+function setToRoot(root) {
+ toRoot = root;
+ // note: toRoot also used by carousel.js
+}
+
+function restoreWidth(navWidth) {
+ var windowWidth = $(window).width() + "px";
+ content.css({marginLeft:parseInt(navWidth) + 6 + "px", //account for 6px-wide handle-bar
+ width:parseInt(windowWidth) - parseInt(navWidth) - 6 + "px"});
+ sidenav.css({width:navWidth});
+ resizePackagesNav.css({width:navWidth});
+ classesNav.css({width:navWidth});
+ $("#packages-nav").css({width:navWidth});
+}
+
+function restoreHeight(packageHeight) {
+ var windowHeight = ($(window).height() - HEADER_HEIGHT);
+ var swapperHeight = windowHeight - 13;
+ $("#swapper").css({height:swapperHeight + "px"});
+ sidenav.css({height:windowHeight + "px"});
+ content.css({height:windowHeight + "px"});
+ resizePackagesNav.css({maxHeight:swapperHeight + "px", height:packageHeight});
+ classesNav.css({height:swapperHeight - parseInt(packageHeight) + "px"});
+ $("#packages-nav").css({height:parseInt(packageHeight) - 6 + "px"}); //move 6px to give space for the resize handle
+ devdocNav.css({height:sidenav.css("height")});
+ $("#nav-tree").css({height:swapperHeight + "px"});
+}
+
+function readCookie(cookie) {
+ var myCookie = cookie_namespace+"_"+cookie+"=";
+ if (document.cookie) {
+ var index = document.cookie.indexOf(myCookie);
+ if (index != -1) {
+ var valStart = index + myCookie.length;
+ var valEnd = document.cookie.indexOf(";", valStart);
+ if (valEnd == -1) {
+ valEnd = document.cookie.length;
+ }
+ var val = document.cookie.substring(valStart, valEnd);
+ return val;
+ }
+ }
+ return 0;
+}
+
+function writeCookie(cookie, val, section, expiration) {
+ if (!val) return;
+ section = section == null ? "_" : "_"+section+"_";
+ if (expiration == null) {
+ var date = new Date();
+ date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week
+ expiration = date.toGMTString();
+ }
+ document.cookie = cookie_namespace+section+cookie+"="+val+"; expires="+expiration+"; path=/";
+}
+
+function init() {
+ $("#side-nav").css({position:"absolute",left:0});
+ content = $("#doc-content");
+ resizePackagesNav = $("#resize-packages-nav");
+ classesNav = $("#classes-nav");
+ sidenav = $("#side-nav");
+ devdocNav = $("#devdoc-nav");
+
+ if (location.href.indexOf("/reference/") != -1) {
+ var cookiePath = "reference_";
+ } else if (location.href.indexOf("/guide/") != -1) {
+ var cookiePath = "guide_";
+ }
+
+ if (!isMobile) {
+ $("#resize-packages-nav").resizable({handles: "s", resize: function(e, ui) { resizeHeight(); } });
+ $(".side-nav-resizable").resizable({handles: "e", resize: function(e, ui) { resizeWidth(); } });
+ var cookieWidth = readCookie(cookiePath+'width');
+ var cookieHeight = readCookie(cookiePath+'height');
+ if (cookieWidth) {
+ restoreWidth(cookieWidth);
+ } else if ($(".side-nav-resizable").length) {
+ resizeWidth();
+ }
+ if (cookieHeight) {
+ restoreHeight(cookieHeight);
+ } else {
+ resizeHeight();
+ }
+ }
+
+ if (devdocNav.length) { // only dev guide and sdk
+ highlightNav(location.href);
+ }
+}
+
+function highlightNav(fullPageName) {
+ fullPageName = fullPageName.replace(/^https?:\/\//, '');
+ var lastSlashPos = fullPageName.lastIndexOf("/");
+ var firstSlashPos = fullPageName.indexOf("/");
+ if (lastSlashPos == (fullPageName.length - 1)) { // if the url ends in slash (add 'index.html')
+ fullPageName = fullPageName + "index.html";
+ }
+ var htmlPos = fullPageName.lastIndexOf(".html", fullPageName.length);
+ var pathPageName = fullPageName.slice(firstSlashPos, htmlPos + 5);
+ var link = $("#devdoc-nav a[href$='"+ pathPageName+"']");
+ if ((link.length == 0) && (fullPageName.indexOf("/guide/") != -1)) {
+// if there's no match, then let's backstep through the directory until we find an index.html page that matches our ancestor directories (only for dev guide)
+ lastBackstep = pathPageName.lastIndexOf("/");
+ while (link.length == 0) {
+ backstepDirectory = pathPageName.lastIndexOf("/", lastBackstep);
+ link = $("#devdoc-nav a[href$='"+ pathPageName.slice(0, backstepDirectory + 1)+"index.html']");
+ lastBackstep = pathPageName.lastIndexOf("/", lastBackstep - 1);
+ if (lastBackstep == 0) break;
+ }
+ }
+ link.parent().addClass('selected');
+ if (link.parent().parent().is(':hidden')) {
+ toggle(link.parent().parent().parent(), false);
+ } else if (link.parent().parent().hasClass('toggle-list')) {
+ toggle(link.parent().parent(), false);
+ }
+}
+
+function resizeHeight() {
+ var windowHeight = ($(window).height() - HEADER_HEIGHT);
+ var swapperHeight = windowHeight - 13;
+ $("#swapper").css({height:swapperHeight + "px"});
+ sidenav.css({height:windowHeight + "px"});
+ content.css({height:windowHeight + "px"});
+ resizePackagesNav.css({maxHeight:swapperHeight + "px"});
+ classesNav.css({height:swapperHeight - parseInt(resizePackagesNav.css("height")) + "px"});
+ $("#packages-nav").css({height:parseInt(resizePackagesNav.css("height")) - 6 + "px"}); //move 6px for handle
+ devdocNav.css({height:sidenav.css("height")});
+ $("#nav-tree").css({height:swapperHeight + "px"});
+
+ var basePath = getBaseUri(location.pathname);
+ var section = basePath.substring(1,basePath.indexOf("/",1));
+ writeCookie("height", resizePackagesNav.css("height"), section, null);
+}
+
+function resizeWidth() {
+ var windowWidth = $(window).width() + "px";
+ if (sidenav.length) {
+ var sidenavWidth = sidenav.css("width");
+ } else {
+ var sidenavWidth = 0;
+ }
+ content.css({marginLeft:parseInt(sidenavWidth) + 6 + "px", //account for 6px-wide handle-bar
+ width:parseInt(windowWidth) - parseInt(sidenavWidth) - 6 + "px"});
+ resizePackagesNav.css({width:sidenavWidth});
+ classesNav.css({width:sidenavWidth});
+ $("#packages-nav").css({width:sidenavWidth});
+
+ var basePath = getBaseUri(location.pathname);
+ var section = basePath.substring(1,basePath.indexOf("/",1));
+ writeCookie("width", sidenavWidth, section, null);
+}
+
+function resizeAll() {
+ if (!isMobile) {
+ resizeHeight();
+ if ($(".side-nav-resizable").length) {
+ resizeWidth();
+ }
+ }
+}
+
+function getBaseUri(uri) {
+ var intlUrl = (uri.substring(0,6) == "/intl/");
+ if (intlUrl) {
+ base = uri.substring(uri.indexOf('intl/')+5,uri.length);
+ base = base.substring(base.indexOf('/')+1, base.length);
+ //alert("intl, returning base url: /" + base);
+ return ("/" + base);
+ } else {
+ //alert("not intl, returning uri as found.");
+ return uri;
+ }
+}
+
+function requestAppendHL(uri) {
+//append "?hl=<lang> to an outgoing request (such as to blog)
+ var lang = getLangPref();
+ if (lang) {
+ var q = 'hl=' + lang;
+ uri += '?' + q;
+ window.location = uri;
+ return false;
+ } else {
+ return true;
+ }
+}
+
+function loadLast(cookiePath) {
+ var location = window.location.href;
+ if (location.indexOf("/"+cookiePath+"/") != -1) {
+ return true;
+ }
+ var lastPage = readCookie(cookiePath + "_lastpage");
+ if (lastPage) {
+ window.location = lastPage;
+ return false;
+ }
+ return true;
+}
+
+$(window).unload(function(){
+ var path = getBaseUri(location.pathname);
+ if (path.indexOf("/reference/") != -1) {
+ writeCookie("lastpage", path, "reference", null);
+ } else if (path.indexOf("/guide/") != -1) {
+ writeCookie("lastpage", path, "guide", null);
+ }
+});
+
+function toggle(obj, slide) {
+ var ul = $("ul", obj);
+ var li = ul.parent();
+ if (li.hasClass("closed")) {
+ if (slide) {
+ ul.slideDown("fast");
+ } else {
+ ul.show();
+ }
+ li.removeClass("closed");
+ li.addClass("open");
+ $(".toggle-img", li).attr("title", "hide pages");
+ } else {
+ ul.slideUp("fast");
+ li.removeClass("open");
+ li.addClass("closed");
+ $(".toggle-img", li).attr("title", "show pages");
+ }
+}
+
+function buildToggleLists() {
+ $(".toggle-list").each(
+ function(i) {
+ $("div", this).append("<a class='toggle-img' href='#' title='show pages' onClick='toggle(this.parentNode.parentNode, true); return false;'></a>");
+ $(this).addClass("closed");
+ });
+}
+
+function getNavPref() {
+ var v = readCookie('reference_nav');
+ if (v != NAV_PREF_TREE) {
+ v = NAV_PREF_PANELS;
+ }
+ return v;
+}
+
+function chooseDefaultNav() {
+ nav_pref = getNavPref();
+ if (nav_pref == NAV_PREF_TREE) {
+ $("#nav-panels").toggle();
+ $("#panel-link").toggle();
+ $("#nav-tree").toggle();
+ $("#tree-link").toggle();
+ }
+}
+
+function swapNav() {
+ if (nav_pref == NAV_PREF_TREE) {
+ nav_pref = NAV_PREF_PANELS;
+ } else {
+ nav_pref = NAV_PREF_TREE;
+ init_default_navtree(toRoot);
+ }
+ var date = new Date();
+ date.setTime(date.getTime()+(10*365*24*60*60*1000)); // keep this for 10 years
+ writeCookie("nav", nav_pref, "reference", date.toGMTString());
+
+ $("#nav-panels").toggle();
+ $("#panel-link").toggle();
+ $("#nav-tree").toggle();
+ $("#tree-link").toggle();
+
+ if ($("#nav-tree").is(':visible')) scrollIntoView("nav-tree");
+ else {
+ scrollIntoView("packages-nav");
+ scrollIntoView("classes-nav");
+ }
+}
+
+function scrollIntoView(nav) {
+ var navObj = $("#"+nav);
+ if (navObj.is(':visible')) {
+ var selected = $(".selected", navObj);
+ if (selected.length == 0) return;
+ if (selected.is("div")) selected = selected.parent();
+
+ var scrolling = document.getElementById(nav);
+ var navHeight = navObj.height();
+ var offsetTop = selected.position().top;
+ if (selected.parent().parent().is(".toggle-list")) offsetTop += selected.parent().parent().position().top;
+ if(offsetTop > navHeight - 92) {
+ scrolling.scrollTop = offsetTop - navHeight + 92;
+ }
+ }
+}
+
+function toggleAllInherited(linkObj, expand) {
+ var a = $(linkObj);
+ var table = $(a.parent().parent().parent());
+ var expandos = $(".jd-expando-trigger", table);
+ if ( (expand == null && a.text() == "[Expand]") || expand ) {
+ expandos.each(function(i) {
+ toggleInherited(this, true);
+ });
+ a.text("[Collapse]");
+ } else if ( (expand == null && a.text() == "[Collapse]") || (expand == false) ) {
+ expandos.each(function(i) {
+ toggleInherited(this, false);
+ });
+ a.text("[Expand]");
+ }
+ return false;
+}
+
+function toggleAllSummaryInherited(linkObj) {
+ var a = $(linkObj);
+ var content = $(a.parent().parent().parent());
+ var toggles = $(".toggle-all", content);
+ if (a.text() == "[Expand All]") {
+ toggles.each(function(i) {
+ toggleAllInherited(this, true);
+ });
+ a.text("[Collapse All]");
+ } else {
+ toggles.each(function(i) {
+ toggleAllInherited(this, false);
+ });
+ a.text("[Expand All]");
+ }
+ return false;
+}
+
+
+function changeTabLang(lang) {
+ var nodes = $("#header-tabs").find("."+lang);
+ for (i=0; i < nodes.length; i++) { // for each node in this language
+ var node = $(nodes[i]);
+ node.siblings().css("display","none"); // hide all siblings
+ if (node.not(":empty").length != 0) { //if this languages node has a translation, show it
+ node.css("display","inline");
+ } else { //otherwise, show English instead
+ node.css("display","none");
+ node.siblings().filter(".en").css("display","inline");
+ }
+ }
+}
+
+function changeNavLang(lang) {
+ var nodes = $("#side-nav").find("."+lang);
+ for (i=0; i < nodes.length; i++) { // for each node in this language
+ var node = $(nodes[i]);
+ node.siblings().css("display","none"); // hide all siblings
+ if (node.not(":empty").length != 0) { // if this languages node has a translation, show it
+ node.css("display","inline");
+ } else { // otherwise, show English instead
+ node.css("display","none");
+ node.siblings().filter(".en").css("display","inline");
+ }
+ }
+}
+
+function changeDocLang(lang) {
+ changeTabLang(lang);
+ changeNavLang(lang);
+}
+
+function changeLangPref(lang, refresh) {
+ var date = new Date();
+ expires = date.toGMTString(date.setTime(date.getTime()+(10*365*24*60*60*1000))); // keep this for 50 years
+ //alert("expires: " + expires)
+ writeCookie("pref_lang", lang, null, expires);
+ //changeDocLang(lang);
+ if (refresh) {
+ l = getBaseUri(location.pathname);
+ window.location = l;
+ }
+}
+
+function loadLangPref() {
+ var lang = readCookie("pref_lang");
+ if (lang != 0) {
+ $("#language").find("option[value='"+lang+"']").attr("selected",true);
+ }
+}
+
+function getLangPref() {
+ var lang = $("#language").find(":selected").attr("value");
+ if (!lang) {
+ lang = readCookie("pref_lang");
+ }
+ return (lang != 0) ? lang : 'en';
+}
+
+
+function toggleContent(obj) {
+ var button = $(obj);
+ var div = $(obj.parentNode);
+ var toggleMe = $(".toggle-content-toggleme",div);
+ if (button.hasClass("show")) {
+ toggleMe.slideDown();
+ button.removeClass("show").addClass("hide");
+ } else {
+ toggleMe.slideUp();
+ button.removeClass("hide").addClass("show");
+ }
+ $("span", button).toggle();
+}
diff --git a/tools/droiddoc/templates-pdk/assets-pdk/favicon.ico b/tools/droiddoc/templates-pdk/assets/favicon.ico
similarity index 100%
rename from tools/droiddoc/templates-pdk/assets-pdk/favicon.ico
rename to tools/droiddoc/templates-pdk/assets/favicon.ico
Binary files differ
diff --git a/tools/droiddoc/templates-pdk/assets/images/rebox-gradient.gif b/tools/droiddoc/templates-pdk/assets/images/rebox-gradient.gif
new file mode 100644
index 0000000..124e844
--- /dev/null
+++ b/tools/droiddoc/templates-pdk/assets/images/rebox-gradient.gif
Binary files differ
diff --git a/tools/droiddoc/templates-pdk/assets-pdk/placeholder b/tools/droiddoc/templates-pdk/assets/placeholder
similarity index 100%
rename from tools/droiddoc/templates-pdk/assets-pdk/placeholder
rename to tools/droiddoc/templates-pdk/assets/placeholder
diff --git a/tools/droiddoc/templates-pdk/customization.cs b/tools/droiddoc/templates-pdk/customization.cs
index dfebb12..3e9be06 100644
--- a/tools/droiddoc/templates-pdk/customization.cs
+++ b/tools/droiddoc/templates-pdk/customization.cs
@@ -5,23 +5,28 @@
def:custom_masthead() ?>
<div id="header">
<div id="headerLeft">
- <a href="http://source.android.com" tabindex="-1"><img
- src="<?cs var:toroot ?>assets/images/open_source.png" alt="Open Source Project: Platform Development Kit" /></a>
- <ul class="<?cs
- if:releases ?> releases<?cs
- elif:guide ?> guide<?cs
- elif:licenses ?>licenses <?cs
- elif:home ?>home <?cs
- elif:community ?>community <?cs /if ?>">
+ <a href="<?cs var:toroot?>" tabindex="-1"><img
+ src="<?cs var:toroot ?>assets/images/open_source.png" alt="Android Open Source Project" /></a>
+ <ul class="<?cs if:home ?>home<?cs
+ elif:doc.type == "source" ?>source<?cs
+ elif:doc.type == "porting" ?>porting<?cs
+ elif:doc.type == "compatibility" ?>compatibility<?cs
+ elif:doc.type == "downloads" ?>downloads<?cs
+ elif:doc.type == "community" ?>community<?cs
+ elif:doc.type == "about" ?>about<?cs /if ?>">
<li id="home-link"><a href="<?cs var:toroot ?>index.html"><span>Home</span></a></li>
- <li id="guide-link"><a href="<?cs var:toroot ?>guide/index.html"
- onClick="return loadLast('guide)'"><span>Guide</span></a></li>
- <li id="releases-ink"><a href="<?cs var:toroot ?>releases/index.html"
- onClick="return loadLast('releases)'"><span>Releases</span></a></li>
- <li id="licenses-link"><a href="<?cs var:toroot ?>licenses/index.html"
- onClick="return loadLast('licenses)'"><span>Licenses</span></a></li>
+ <li id="source-link"><a href="<?cs var:toroot ?>source/index.html"
+ onClick="return loadLast('source')"><span>Source</span></a></li>
+ <li id="porting-link"><a href="<?cs var:toroot ?>porting/index.html"
+ onClick="return loadLast('porting')"><span>Porting</span></a></li>
+ <li id="compatibility-link"><a href="<?cs var:toroot ?>compatibility/index.html"
+ onClick="return loadLast('compatibility')"><span>Compatibility</span></a></li>
<li id="community-link"><a href="<?cs var:toroot ?>community/index.html"
- onClick="return loadLast('community)'"><span>Community</span></a></li>
+ onClick="return loadLast('community')"><span>Community</span></a></li>
+ <li id="downloads-link"><a href="<?cs var:toroot ?>downloads/index.html"
+ onClick="return loadLast('downloads')"><span>Downloads</span></a></li>
+ <li id="about-link"><a href="<?cs var:toroot ?>about/index.html"
+ onClick="return loadLast('about')"><span>About</span></a></li>
</ul>
</div>
<div id="headerRight">
@@ -37,12 +42,11 @@
/def ?><?cs # custom_masthead ?>
-<?cs
-def:guide_nav() ?>
+<?cs def:community_nav() ?>
<div class="g-section g-tpl-240" id="body-content">
<div class="g-unit g-first side-nav-resizable" id="side-nav">
<div id="devdoc-nav"><?cs
- include:"../../../../development/pdk/docs/guide/pdk_toc.cs" ?>
+ include:"../../../../development/pdk/docs/community/community_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
@@ -50,14 +54,14 @@
scrollIntoView("devdoc-nav");
});
</script>
+ </div>
<?cs /def ?>
-<?cs
-def:licenses_nav() ?>
+<?cs def:about_nav() ?>
<div class="g-section g-tpl-240" id="body-content">
<div class="g-unit g-first side-nav-resizable" id="side-nav">
<div id="devdoc-nav"><?cs
- include:"../../../../development/pdk/docs/licenses/licenses_toc.cs" ?>
+ include:"../../../../development/pdk/docs/about/about_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
@@ -65,14 +69,14 @@
scrollIntoView("devdoc-nav");
});
</script>
+ </div>
<?cs /def ?>
-<?cs
-def:releases_nav() ?>
+<?cs def:porting_nav() ?>
<div class="g-section g-tpl-240" id="body-content">
<div class="g-unit g-first side-nav-resizable" id="side-nav">
<div id="devdoc-nav"><?cs
- include:"../../../../development/pdk/docs/releases/releases_toc.cs" ?>
+ include:"../../../../development/pdk/docs/porting/porting_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
@@ -80,18 +84,71 @@
scrollIntoView("devdoc-nav");
});
</script>
+ </div>
<?cs /def ?>
-<?cs
-def:custom_left_nav() ?><?cs
- if:doc.type == "guide" ?><?cs
- call:guide_nav() ?><?cs
- elif:doc.type == "licenses" ?><?cs
- call:licenses_nav() ?><?cs
- elif:doc.type == "releases" ?><?cs
- call:releases_nav() ?><?cs
- /if ?><?cs
-/def ?>
+<?cs def:source_nav() ?>
+ <div class="g-section g-tpl-240" id="body-content">
+ <div class="g-unit g-first side-nav-resizable" id="side-nav">
+ <div id="devdoc-nav"><?cs
+ include:"../../../../development/pdk/docs/source/source_toc.cs" ?>
+ </div>
+ </div> <!-- end side-nav -->
+ <script>
+ addLoadEvent(function() {
+ scrollIntoView("devdoc-nav");
+ });
+ </script>
+ </div>
+<?cs /def ?>
+
+<?cs def:downloads_nav() ?>
+ <div class="g-section g-tpl-240" id="body-content">
+ <div class="g-unit g-first side-nav-resizable" id="side-nav">
+ <div id="devdoc-nav"><?cs
+ include:"../../../../development/pdk/docs/downloads/downloads_toc.cs" ?>
+ </div>
+ </div> <!-- end side-nav -->
+ <script>
+ addLoadEvent(function() {
+ scrollIntoView("devdoc-nav");
+ });
+ </script>
+ </div>
+<?cs /def ?>
+
+<?cs def:compatibility_nav() ?>
+ <div class="g-section g-tpl-240" id="body-content">
+ <div class="g-unit g-first side-nav-resizable" id="side-nav">
+ <div id="devdoc-nav"><?cs
+ include:"../../../../development/pdk/docs/compatibility/compatibility_toc.cs" ?>
+ </div>
+ </div> <!-- end side-nav -->
+ <script>
+ addLoadEvent(function() {
+ scrollIntoView("devdoc-nav");
+ });
+ </script>
+ </div>
+<?cs /def ?>
+
+<?cs def:custom_left_nav() ?>
+ <?cs if:doc.hidenav != "true" ?>
+ <?cs if:doc.type == "source" ?>
+ <?cs call:source_nav() ?>
+ <?cs elif:doc.type == "porting" ?>
+ <?cs call:porting_nav() ?>
+ <?cs elif:doc.type == "compatibility" ?>
+ <?cs call:compatibility_nav() ?>
+ <?cs elif:doc.type == "downloads" ?>
+ <?cs call:downloads_nav() ?>
+ <?cs elif:doc.type == "community" ?>
+ <?cs call:community_nav() ?>
+ <?cs elif:doc.type == "about" ?>
+ <?cs call:about_nav() ?>
+ <?cs /if ?>
+ <?cs /if ?>
+<?cs /def ?>
<?cs # appears at the bottom of every page ?><?cs
def:custom_cc_copyright() ?>
diff --git a/tools/droiddoc/templates-pdk/head_tag.cs b/tools/droiddoc/templates-pdk/head_tag.cs
index 47b332a..915dc0e 100644
--- a/tools/droiddoc/templates-pdk/head_tag.cs
+++ b/tools/droiddoc/templates-pdk/head_tag.cs
@@ -11,7 +11,6 @@
<link href="<?cs var:toroot ?>assets/android-developer-docs-devguide.css" rel="stylesheet" type="text/css" />
<link href="<?cs var:toroot ?>assets-pdk/pdk-local.css" rel="stylesheet" type="text/css" />
<script src="<?cs var:toroot ?>assets/search_autocomplete.js" type="text/javascript"></script>
-<script src="<?cs var:toroot ?>reference/lists.js" type="text/javascript"></script>
<script src="<?cs var:toroot ?>assets/jquery-resizable.min.js" type="text/javascript"></script>
<script src="<?cs var:toroot ?>assets/android-developer-docs.js" type="text/javascript"></script>
<script type="text/javascript">