am 52e67ac2: am db00a567: am 479f4a5c: Merge "cherry-pick from master: I615602a3d8f9970e36399b98dadb5e2f03638444 docs: various stylesheet changes indent tables revise figure class add caption classes for tables and images add styles for xml reference docs (used by res
diff --git a/core/prelink-linux-arm.map b/core/prelink-linux-arm.map
index 5ae1a78..a787888 100644
--- a/core/prelink-linux-arm.map
+++ b/core/prelink-linux-arm.map
@@ -165,3 +165,4 @@
libtrace_test.so 0x9A300000
libsrec_jni.so 0x9A200000
libjpeg.so 0x9A000000
+libbcc.so 0x99C00000
diff --git a/target/product/AndroidProducts.mk b/target/product/AndroidProducts.mk
index 2774968..c51b064 100644
--- a/target/product/AndroidProducts.mk
+++ b/target/product/AndroidProducts.mk
@@ -30,4 +30,5 @@
$(LOCAL_DIR)/generic.mk \
$(LOCAL_DIR)/full.mk \
$(LOCAL_DIR)/sdk.mk \
- $(LOCAL_DIR)/sim.mk
+ $(LOCAL_DIR)/sim.mk \
+ $(LOCAL_DIR)/large_emu_hw.mk
diff --git a/target/product/core.mk b/target/product/core.mk
index 97f4b8d..eff4591 100644
--- a/target/product/core.mk
+++ b/target/product/core.mk
@@ -29,7 +29,6 @@
Contacts \
Home \
HTMLViewer \
- Phone \
ApplicationsProvider \
ContactsProvider \
DownloadProvider \
diff --git a/target/product/generic.mk b/target/product/generic.mk
index f05c441..c1f286a 100644
--- a/target/product/generic.mk
+++ b/target/product/generic.mk
@@ -14,9 +14,11 @@
# limitations under the License.
#
-# This is a generic product that isn't specialized for a specific device.
+# This is a generic phone product that isn't specialized for a specific device.
# It includes the base Android platform.
+PRODUCT_POLICY := android.policy_phone
+
PRODUCT_PACKAGES := \
AccountAndSyncSettings \
CarHome \
@@ -35,6 +37,7 @@
Mms \
Music \
Provision \
+ Phone \
Protips \
QuickSearchBox \
Settings \
diff --git a/target/product/large_emu_hw.mk b/target/product/large_emu_hw.mk
new file mode 100644
index 0000000..6aadc23
--- /dev/null
+++ b/target/product/large_emu_hw.mk
@@ -0,0 +1,52 @@
+#
+# Copyright (C) 2007 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.
+#
+
+# This is a generic product for devices with large display but not specialized
+# for a specific device. It includes the base Android platform.
+
+PRODUCT_POLICY := android.policy_mid
+
+PRODUCT_PACKAGES := \
+ AccountAndSyncSettings \
+ CarHome \
+ DeskClock \
+ AlarmProvider \
+ Bluetooth \
+ Calculator \
+ Calendar \
+ Camera \
+ CertInstaller \
+ DrmProvider \
+ Email \
+ Gallery3D \
+ LatinIME \
+ Launcher2 \
+ Mms \
+ Music \
+ Provision \
+ QuickSearchBox \
+ Settings \
+ Sync \
+ Updater \
+ CalendarProvider \
+ SyncProvider
+
+$(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk)
+
+# Overrides
+PRODUCT_BRAND := generic
+PRODUCT_DEVICE := generic
+PRODUCT_NAME := large_emu_hw
diff --git a/target/product/sdk.mk b/target/product/sdk.mk
index c0e6c6d..e92d1e6 100644
--- a/target/product/sdk.mk
+++ b/target/product/sdk.mk
@@ -14,6 +14,7 @@
# limitations under the License.
#
+PRODUCT_POLICY := android.policy_phone
PRODUCT_PROPERTY_OVERRIDES :=
PRODUCT_PACKAGES := \
@@ -39,6 +40,7 @@
sqlite3 \
LatinIME \
PinyinIME \
+ Phone \
OpenWnn \
libWnnEngDic \
libWnnJpnDic \
diff --git a/tools/apicheck/src/com/android/apicheck/ApiCheck.java b/tools/apicheck/src/com/android/apicheck/ApiCheck.java
index c8272dd..b2f2265 100644
--- a/tools/apicheck/src/com/android/apicheck/ApiCheck.java
+++ b/tools/apicheck/src/com/android/apicheck/ApiCheck.java
@@ -107,6 +107,7 @@
xmlreader.parse(new InputSource(fileReader));
ApiInfo apiInfo = handler.getApi();
apiInfo.resolveSuperclasses();
+ apiInfo.resolveInterfaces();
return apiInfo;
} catch (SAXParseException e) {
Errors.error(Errors.PARSE_ERROR,
diff --git a/tools/apicheck/src/com/android/apicheck/ApiInfo.java b/tools/apicheck/src/com/android/apicheck/ApiInfo.java
index c237814..47b9a15 100644
--- a/tools/apicheck/src/com/android/apicheck/ApiInfo.java
+++ b/tools/apicheck/src/com/android/apicheck/ApiInfo.java
@@ -31,14 +31,13 @@
return mAllClasses.get(name);
}
- private void resolveInterfaces() {
+ public 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 e62a3d0..2555ea4 100644
--- a/tools/apicheck/src/com/android/apicheck/ClassInfo.java
+++ b/tools/apicheck/src/com/android/apicheck/ClassInfo.java
@@ -135,11 +135,7 @@
consistent = false;
}
for (String iface : mInterfaceNames) {
- boolean found = false;
- for (ClassInfo c = cl; c != null && !found; c = c.mSuperClass) {
- found = c.mInterfaceNames.contains(iface);
- }
- if (!found) {
+ if (!implementsInterface(cl, iface)) {
Errors.error(Errors.REMOVED_INTERFACE, cl.position(),
"Class " + qualifiedName() + " no longer implements " + iface);
}
@@ -274,6 +270,26 @@
return consistent;
}
+ /**
+ * Returns true if {@code cl} implements the interface {@code iface} either
+ * by either being that interface, implementing that interface or extending
+ * a type that implements the interface.
+ */
+ private boolean implementsInterface(ClassInfo cl, String iface) {
+ if (cl.qualifiedName().equals(iface)) {
+ return true;
+ }
+ for (ClassInfo clImplements : cl.mInterfaces) {
+ if (implementsInterface(clImplements, iface)) {
+ return true;
+ }
+ }
+ if (cl.mSuperClass != null && implementsInterface(cl.mSuperClass, iface)) {
+ return true;
+ }
+ return false;
+ }
+
public void resolveInterfaces(ApiInfo apiInfo) {
for (String interfaceName : mInterfaceNames) {
mInterfaces.add(apiInfo.findClass(interfaceName));