am b15c119d: am 19e9fff3: am 74134a50: Add camera sounds to the emulator system image build.
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));
diff --git a/tools/droiddoc/templates/assets/android-developer-core.css b/tools/droiddoc/templates/assets/android-developer-core.css
index 2d1708a..6107abf 100644
--- a/tools/droiddoc/templates/assets/android-developer-core.css
+++ b/tools/droiddoc/templates/assets/android-developer-core.css
@@ -28,21 +28,21 @@
color:#000;
font-size:13px;
color:#333;
- background-image:url(images/bg_fade.jpg);
+ background-image:url(images/bg_fade.jpg);
background-repeat:repeat-x;
}
-a, a code {
+a, a code {
color:#006699;
}
a:active,
-a:active code {
+a:active code {
color:#f00;
}
a:visited,
-a:visited code {
+a:visited code {
color:#006699;
}
@@ -107,7 +107,7 @@
padding:0;
}
-dt {
+dt {
margin:0;
padding:0;
}
@@ -226,7 +226,7 @@
#header ul {
list-style: none;
- margin: 7px 0 0;
+ margin: 7px 0 0;
padding: 0;
height: 29px;
}
@@ -340,7 +340,7 @@
}
#mainBodyFixed h2,
-#mainBodyFluid h2 {
+#mainBodyFluid h2 {
color:#336666;
font-size:1.25em;
margin: 0;
@@ -348,7 +348,7 @@
}
#mainBodyFixed h1,
-#mainBodyFluid h1 {
+#mainBodyFluid h1 {
color:#435A6E;
font-size:1.7em;
margin: 1em 0;
@@ -356,7 +356,7 @@
#mainBodyFixed .green,
#mainBodyFluid .green,
-#jd-content .green {
+#jd-content .green {
color:#7BB026;
background-color:none;
}
@@ -364,13 +364,13 @@
#mainBodyLeft {
float: left;
width: 600px;
- margin-right: 20px;
+ margin-right: 20px;
color: #333;
position:relative;
}
div.indent {
- margin-left: 40px;
+ margin-left: 40px;
margin-right: 70px;
}
@@ -583,7 +583,7 @@
.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,
#leftSearchControl a b {
color:#006699;
}
@@ -669,7 +669,7 @@
#homeTitle {
padding:15px 15px 0;
- height:30px;
+ height:30px;
}
#homeTitle h2 {
@@ -704,8 +704,8 @@
}
#carouselMain {
- background: url(images/home/bg_home_carousel_board.png) 0 0 no-repeat;
- height:auto;
+ background: url(images/home/bg_home_carousel_board.png) 0 0 no-repeat;
+ height:auto;
padding: 25px 21px 0;
overflow:hidden;
position:relative;
@@ -717,19 +717,19 @@
}
#carouselMain .bulletinDesc h3 {
- margin:0;
- padding:0;
+ margin:0;
+ padding:0;
}
#carouselMain .bulletinDesc p {
- margin:0;
- padding:0.7em 0 0;
+ 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;
+ background: url(images/home/bg_home_carousel_wheel.png) 0 0 no-repeat;
+ padding-top:40px;
+ height:150px;
}
.clearer { clear:both; }
@@ -748,17 +748,17 @@
margin:35px 10px 0 0;
}
a.arrow-left-off,
-a#arrow-left.arrow-left-off:hover {
+a#arrow-left.arrow-left-off:hover {
background-position:0 0;
}
-a.arrow-right-off,
-a#arrow-right.arrow-right-off:hover {
+a.arrow-right-off,
+a#arrow-right.arrow-right-off:hover {
background-position:-42px 0;
}
-a#arrow-left:hover {
+a#arrow-left:hover {
background-position:0 -42px;
}
-a#arrow-right:hover {
+a#arrow-right:hover {
background-position:-42px -42px;
}
a.arrow-left-on {
@@ -778,17 +778,17 @@
width:100%;
}
-div#list-clip {
- height:110px;
+div#list-clip {
+ height:110px;
width:438px;
- overflow:hidden;
- position:relative;
- float:left;
+ overflow:hidden;
+ position:relative;
+ float:left;
}
-div#app-list {
- left:0;
- z-index:1;
+div#app-list {
+ left:0;
+ z-index:1;
position:absolute;
margin:11px 0 0;
_margin-top:13px;
@@ -817,14 +817,14 @@
top:-4px;
}
-#app-list img {
+#app-list img {
width:90px;
height:70px;
margin:0;
}
-#app-list a.selected,
-#app-list a:active.selected,
+#app-list a.selected,
+#app-list a:active.selected,
#app-list a:hover.selected {
background:#A4C639;
color:#fff;
@@ -832,12 +832,12 @@
text-decoration:none;
}
-#app-list a:hover,
+#app-list a:hover,
#app-list a:active {
background:#ff9900;
}
-#app-list a:hover span,
+#app-list a:hover span,
#app-list a:active span {
text-decoration:underline;
}
@@ -851,7 +851,7 @@
/*IE6*/
* html #app-list a { zoom: 1; margin:0 24px 0 15px;}
-* html #list-clip {
+* html #list-clip {
width:430px !important;
}
@@ -1146,13 +1146,13 @@
}
#mainBodyRight ul.videoPreviews p {
- line-height:1.2em;
+ line-height:1.2em;
padding:0;
margin:4px 0 0 130px;
}
#mainBodyRight ul.videoPreviews img {
- margin-top:5px;
+ margin-top:5px;
}
/* Pretty printing styles. Used with prettify.js. */
@@ -1164,8 +1164,10 @@
.lit { color: #066; }
.pun { color: #660; }
.pln { color: #000; }
+dl.tag-list dt code,
.tag { color: #008; }
-.atn { color: #606; }
+dl.atn-list dt code,
+.atn { color: #828; }
.atv { color: #080; }
.dec { color: #606; }
diff --git a/tools/droiddoc/templates/assets/android-developer-docs.css b/tools/droiddoc/templates/assets/android-developer-docs.css
index 47a30a3..98f2d5e 100644
--- a/tools/droiddoc/templates/assets/android-developer-docs.css
+++ b/tools/droiddoc/templates/assets/android-developer-docs.css
@@ -100,7 +100,6 @@
#side-nav li a+a {
padding: 0;
}
-
/*second level (nested) list*/
#side-nav li li li a {
padding: 0 0 0 28px;
@@ -518,8 +517,7 @@
color:#111;
border-top:2px solid #ccc;
padding: .5em 0 0;
- margin: 1.5em 0 1em 0;
- max-width:968px;
+ margin: 2em 0 1em 0;
}
#jd-content h3 {
@@ -545,6 +543,10 @@
position:inherit;
}
+#jd-content table {
+ margin: 0 0 1em 1em;
+}
+
#jd-content img {
margin: 0 0 1em 1em;
}
@@ -807,13 +809,17 @@
div.figure {
float:right;
clear:right;
- padding:0 0 20px 20px;
+ padding:1em 0 1em 2em;
+ background-color:#fff;
/* width must be defined w/ an inline style matching the image width */
}
-#jd-content div.figure img {
- display:block;
- margin:0 0 10px 0;
+p.img-caption {
+ margin: -0.5em 0 1em 1em; /* matches default img left-margin */
+}
+
+p.table-caption {
+ margin: 0 0 0.5em 1em; /* matches default table left-margin */
}
/* BEGIN quickview sidebar element styles */
@@ -967,7 +973,7 @@
td.image-caption-i {
font-size:92%;
- padding:0;
+ padding:0 5px;
margin:0;
border:0;
}
@@ -982,10 +988,6 @@
text-align:center;
}
-.image-list .caption {
- margin:0 2px;
-}
-
td.image-caption-c {
font-size:92%;
padding:1em 2px 2px 2px;