Merge change 24630 into eclair
* changes:
resolved conflicts for merge of e0408aa1 to eclair
diff --git a/api/current.xml b/api/current.xml
index d6b272f..b4136c9 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -1659,6 +1659,17 @@
visibility="public"
>
</field>
+<field name="accountPreferences"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843423"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="accountType"
type="int"
transient="false"
@@ -7093,6 +7104,17 @@
visibility="public"
>
</field>
+<field name="smallIcon"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843422"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="smallScreens"
type="int"
transient="false"
@@ -14543,6 +14565,10 @@
</parameter>
<parameter name="iconId" type="int">
</parameter>
+<parameter name="smallIconId" type="int">
+</parameter>
+<parameter name="prefId" type="int">
+</parameter>
</constructor>
<method name="describeContents"
return="int"
@@ -14593,6 +14619,16 @@
visibility="public"
>
</field>
+<field name="accountPreferencesId"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="iconId"
type="int"
transient="false"
@@ -14623,6 +14659,16 @@
visibility="public"
>
</field>
+<field name="smallIconId"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="type"
type="java.lang.String"
transient="false"
diff --git a/core/java/android/accounts/AccountAuthenticatorCache.java b/core/java/android/accounts/AccountAuthenticatorCache.java
index 82cadd5..fdc5fbf 100644
--- a/core/java/android/accounts/AccountAuthenticatorCache.java
+++ b/core/java/android/accounts/AccountAuthenticatorCache.java
@@ -49,10 +49,15 @@
com.android.internal.R.styleable.AccountAuthenticator_label, 0);
final int iconId = sa.getResourceId(
com.android.internal.R.styleable.AccountAuthenticator_icon, 0);
+ final int smallIconId = sa.getResourceId(
+ com.android.internal.R.styleable.AccountAuthenticator_smallIcon, 0);
+ final int prefId = sa.getResourceId(
+ com.android.internal.R.styleable.AccountAuthenticator_accountPreferences, 0);
if (TextUtils.isEmpty(accountType)) {
return null;
}
- return new AuthenticatorDescription(accountType, packageName, labelId, iconId);
+ return new AuthenticatorDescription(accountType, packageName, labelId, iconId,
+ smallIconId, prefId);
} finally {
sa.recycle();
}
diff --git a/core/java/android/accounts/AuthenticatorDescription.java b/core/java/android/accounts/AuthenticatorDescription.java
index 672e648..28673b4 100644
--- a/core/java/android/accounts/AuthenticatorDescription.java
+++ b/core/java/android/accounts/AuthenticatorDescription.java
@@ -6,16 +6,21 @@
public class AuthenticatorDescription implements Parcelable {
final public String type;
final public int labelId;
- final public int iconId;
+ final public int iconId;
+ final public int smallIconId;
+ final public int accountPreferencesId;
final public String packageName;
- public AuthenticatorDescription(String type, String packageName, int labelId, int iconId) {
+ public AuthenticatorDescription(String type, String packageName, int labelId, int iconId,
+ int smallIconId, int prefId) {
if (type == null) throw new IllegalArgumentException("type cannot be null");
if (packageName == null) throw new IllegalArgumentException("packageName cannot be null");
this.type = type;
this.packageName = packageName;
this.labelId = labelId;
this.iconId = iconId;
+ this.smallIconId = smallIconId;
+ this.accountPreferencesId = prefId;
}
public static AuthenticatorDescription newKey(String type) {
@@ -28,6 +33,8 @@
this.packageName = null;
this.labelId = 0;
this.iconId = 0;
+ this.smallIconId = 0;
+ this.accountPreferencesId = 0;
}
private AuthenticatorDescription(Parcel source) {
@@ -35,6 +42,8 @@
this.packageName = source.readString();
this.labelId = source.readInt();
this.iconId = source.readInt();
+ this.smallIconId = source.readInt();
+ this.accountPreferencesId = source.readInt();
}
public int describeContents() {
@@ -57,6 +66,8 @@
dest.writeString(packageName);
dest.writeInt(labelId);
dest.writeInt(iconId);
+ dest.writeInt(smallIconId);
+ dest.writeInt(accountPreferencesId);
}
public static final Creator<AuthenticatorDescription> CREATOR =
diff --git a/core/java/android/net/MobileDataStateTracker.java b/core/java/android/net/MobileDataStateTracker.java
index f88fcdc..d8db4c1 100644
--- a/core/java/android/net/MobileDataStateTracker.java
+++ b/core/java/android/net/MobileDataStateTracker.java
@@ -145,12 +145,14 @@
if (DBG) Log.d(TAG, mApnType + " Received " + intent.getAction() +
" broadcast - state = " + state + ", oldstate = " + mMobileDataState +
", unavailable = " + unavailable + ", reason = " +
- (reason == null ? "(unspecified)" : reason));
+ (reason == null ? "(unspecified)" : reason) +
+ ", apnTypeList = " + apnTypeList);
+ // set this regardless of the apnTypeList. It's all the same radio/network
+ // underneath
+ mNetworkInfo.setIsAvailable(!unavailable);
if (isApnTypeIncluded(apnTypeList)) {
- // set this even if the apn isn't Enabled
- mNetworkInfo.setIsAvailable(!unavailable);
if (mEnabled == false) {
// if we're not enabled but the APN Type is supported by this connection
// we should record the interface name if one's provided. If the user
diff --git a/core/java/android/net/NetworkInfo.java b/core/java/android/net/NetworkInfo.java
index 9f53937..649cb8c 100644
--- a/core/java/android/net/NetworkInfo.java
+++ b/core/java/android/net/NetworkInfo.java
@@ -131,7 +131,7 @@
mSubtypeName = subtypeName;
setDetailedState(DetailedState.IDLE, null, null);
mState = State.UNKNOWN;
- mIsAvailable = true;
+ mIsAvailable = false; // until we're told otherwise, assume unavailable
mIsRoaming = false;
}
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 1fcfe63d..3cebd3b 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -3438,6 +3438,10 @@
<attr name="label"/>
<!-- the icon of the authenticator. -->
<attr name="icon"/>
+ <!-- smaller icon of the authenticator -->
+ <attr name="smallIcon" format="reference"/>
+ <!-- a preferences.xml file for authenticator-specific settings -->
+ <attr name="accountPreferences" format="reference"/>
</declare-styleable>
<!-- =============================== -->
diff --git a/core/res/res/values/ids.xml b/core/res/res/values/ids.xml
index 6ef6f52..cac26b9 100644
--- a/core/res/res/values/ids.xml
+++ b/core/res/res/values/ids.xml
@@ -65,4 +65,6 @@
<item type="id" name="startSelectingText" />
<item type="id" name="stopSelectingText" />
<item type="id" name="addToDictionary" />
+ <item type="id" name="accountPreferences" />
+ <item type="id" name="smallIcon" />
</resources>
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 8541c73..c4636f3 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -1162,6 +1162,8 @@
<public type="attr" name="supportsUploading" />
<public type="attr" name="killAfterRestore" />
<public type="attr" name="restoreNeedsApplication" />
+ <public type="attr" name="smallIcon" />
+ <public type="attr" name="accountPreferences" />
<public type="style" name="Theme.Wallpaper" />
<public type="style" name="Theme.Wallpaper.NoTitleBar" />
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index e26dd13..408a4d2 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -640,20 +640,14 @@
return false;
}
NetworkStateTracker tracker = mNetTrackers[networkType];
- /*
- * If there's only one connected network, and it's the one requested,
- * then we don't have to do anything - the requested route already
- * exists. If it's not the requested network, then it's not possible
- * to establish the requested route. Finally, if there is more than
- * one connected network, then we must insert an entry in the routing
- * table.
- */
- if (getNumConnectedNetworks() > 1) {
- return tracker.requestRouteToHost(hostAddress);
- } else {
- return (mNetAttributes[networkType].isDefault() &&
- tracker.getNetworkInfo().isConnected());
+
+ if (!tracker.getNetworkInfo().isConnected() || tracker.isTeardownRequested()) {
+ if (DBG) {
+ Log.d(TAG, "requestRouteToHost on down network (" + networkType + " - dropped");
+ }
+ return false;
}
+ return tracker.requestRouteToHost(hostAddress);
}
/**