diff options
13 files changed, 60 insertions, 30 deletions
diff --git a/api/current.txt b/api/current.txt index 689cdff422eb..ed0d15496c0b 100644 --- a/api/current.txt +++ b/api/current.txt @@ -23774,6 +23774,8 @@ package android.telephony { method public java.lang.String getDeviceSoftwareVersion(); method public java.lang.String getGroupIdLevel1(); method public java.lang.String getLine1Number(); + method public java.lang.String getMmsUAProfUrl(); + method public java.lang.String getMmsUserAgent(); method public java.util.List<android.telephony.NeighboringCellInfo> getNeighboringCellInfo(); method public java.lang.String getNetworkCountryIso(); method public java.lang.String getNetworkOperator(); diff --git a/core/java/android/net/CaptivePortalTracker.java b/core/java/android/net/CaptivePortalTracker.java index 01977cde07b8..d678f1e99b80 100644 --- a/core/java/android/net/CaptivePortalTracker.java +++ b/core/java/android/net/CaptivePortalTracker.java @@ -179,10 +179,6 @@ public class CaptivePortalTracker extends StateMachine { } private class DefaultState extends State { - @Override - public void enter() { - setNotificationOff(); - } @Override public boolean processMessage(Message message) { @@ -208,6 +204,7 @@ public class CaptivePortalTracker extends StateMachine { private class NoActiveNetworkState extends State { @Override public void enter() { + setNotificationOff(); mNetworkInfo = null; } @@ -237,11 +234,6 @@ public class CaptivePortalTracker extends StateMachine { private class ActiveNetworkState extends State { @Override - public void enter() { - setNotificationOff(); - } - - @Override public boolean processMessage(Message message) { NetworkInfo info; switch (message.what) { @@ -284,6 +276,8 @@ public class CaptivePortalTracker extends StateMachine { if (DBG) log(getName() + message.toString()); switch (message.what) { case CMD_DELAYED_CAPTIVE_CHECK: + setNotificationOff(); + if (message.arg1 == mDelayedCheckToken) { InetAddress server = lookupHost(mServer); boolean captive = server != null && isCaptivePortal(server); @@ -362,8 +356,10 @@ public class CaptivePortalTracker extends StateMachine { private void setNotificationOff() { try { - mConnService.setProvisioningNotificationVisible(false, ConnectivityManager.TYPE_NONE, + if (mNetworkInfo != null) { + mConnService.setProvisioningNotificationVisible(false, mNetworkInfo.getType(), null, null); + } } catch (RemoteException e) { log("setNotificationOff: " + e); } diff --git a/core/java/com/android/internal/view/menu/ActionMenuPresenter.java b/core/java/com/android/internal/view/menu/ActionMenuPresenter.java index 6471e145722f..23ed019d3954 100644 --- a/core/java/com/android/internal/view/menu/ActionMenuPresenter.java +++ b/core/java/com/android/internal/view/menu/ActionMenuPresenter.java @@ -216,6 +216,8 @@ public class ActionMenuPresenter extends BaseMenuPresenter } super.updateMenuView(cleared); + ((View) mMenuView).requestLayout(); + if (mMenu != null) { final ArrayList<MenuItemImpl> actionItems = mMenu.getActionItems(); final int count = actionItems.size(); diff --git a/core/java/com/android/internal/view/menu/ActionMenuView.java b/core/java/com/android/internal/view/menu/ActionMenuView.java index 34ade74c9d29..16a2031a5643 100644 --- a/core/java/com/android/internal/view/menu/ActionMenuView.java +++ b/core/java/com/android/internal/view/menu/ActionMenuView.java @@ -15,8 +15,6 @@ */ package com.android.internal.view.menu; -import com.android.internal.R; - import android.content.Context; import android.content.res.Configuration; import android.content.res.TypedArray; @@ -27,6 +25,7 @@ import android.view.ViewDebug; import android.view.ViewGroup; import android.view.accessibility.AccessibilityEvent; import android.widget.LinearLayout; +import com.android.internal.R; /** * @hide @@ -101,7 +100,7 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo // Special formatting can change whether items can fit as action buttons. // Kick the menu and update presenters when this changes. - final int widthSize = MeasureSpec.getMode(widthMeasureSpec); + final int widthSize = MeasureSpec.getSize(widthMeasureSpec); if (mFormatItems && mMenu != null && widthSize != mFormatItemsWidth) { mFormatItemsWidth = widthSize; mMenu.onItemsChanged(true); diff --git a/core/java/com/android/internal/view/menu/MenuBuilder.java b/core/java/com/android/internal/view/menu/MenuBuilder.java index 458ea2f8d785..aff697ad580c 100644 --- a/core/java/com/android/internal/view/menu/MenuBuilder.java +++ b/core/java/com/android/internal/view/menu/MenuBuilder.java @@ -1034,6 +1034,10 @@ public class MenuBuilder implements Menu { * to avoid inadvertent reordering that may break the app's intended design. */ public void flagActionItems() { + // Important side effect: if getVisibleItems is stale it may refresh, + // which can affect action items staleness. + final ArrayList<MenuItemImpl> visibleItems = getVisibleItems(); + if (!mIsActionItemsStale) { return; } @@ -1052,7 +1056,6 @@ public class MenuBuilder implements Menu { if (flagged) { mActionItems.clear(); mNonActionItems.clear(); - ArrayList<MenuItemImpl> visibleItems = getVisibleItems(); final int itemsSize = visibleItems.size(); for (int i = 0; i < itemsSize; i++) { MenuItemImpl item = visibleItems.get(i); diff --git a/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java b/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java index aad285ac2f8e..cd1ccd3bb9eb 100644 --- a/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java +++ b/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java @@ -76,7 +76,7 @@ public class GlowPadView extends View { } // Tuneable parameters for animation - private static final int WAVE_ANIMATION_DURATION = 1350; + private static final int WAVE_ANIMATION_DURATION = 1000; private static final int RETURN_TO_HOME_DELAY = 1200; private static final int RETURN_TO_HOME_DURATION = 200; private static final int HIDE_ANIMATION_DELAY = 200; diff --git a/core/java/com/android/internal/widget/multiwaveview/PointCloud.java b/core/java/com/android/internal/widget/multiwaveview/PointCloud.java index bbd1276be6fe..f2999354cada 100644 --- a/core/java/com/android/internal/widget/multiwaveview/PointCloud.java +++ b/core/java/com/android/internal/widget/multiwaveview/PointCloud.java @@ -45,8 +45,8 @@ public class PointCloud { public class WaveManager { private float radius = 50; - private float width = 200.0f; // TODO: Make configurable private float alpha = 0.0f; + public void setRadius(float r) { radius = r; } @@ -186,13 +186,12 @@ public class PointCloud { // Compute contribution from Wave float radius = hypot(point.x, point.y); - float distanceToWaveRing = (radius - waveManager.radius); float waveAlpha = 0.0f; - if (distanceToWaveRing < waveManager.width * 0.5f && distanceToWaveRing < 0.0f) { - float cosf = FloatMath.cos(PI * 0.25f * distanceToWaveRing / waveManager.width); - waveAlpha = waveManager.alpha * max(0.0f, (float) Math.pow(cosf, 20.0f)); + if (radius < waveManager.radius * 2) { + float distanceToWaveRing = (radius - waveManager.radius); + float cosf = FloatMath.cos(PI * 0.5f * distanceToWaveRing / waveManager.radius); + waveAlpha = waveManager.alpha * max(0.0f, (float) Math.pow(cosf, 6.0f)); } - return (int) (max(glowAlpha, waveAlpha) * 255); } diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index e39fd2a5be4f..1ddf2019cfdc 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -961,6 +961,12 @@ If false, Content-disposition fragments are ignored --> <bool name="config_mms_content_disposition_support">true</bool> + <!-- MMS user agent string --> + <string name="config_mms_user_agent" translatable="false"></string> + + <!-- MMS user agent prolfile url --> + <string name="config_mms_user_agent_profile_url" translatable="false"></string> + <!-- National Language Identifier codes for the following two config items. (from 3GPP TS 23.038 V9.1.1 Table 6.2.1.2.4.1): 0 - reserved diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index d483fe04f30f..a54199596775 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -469,6 +469,8 @@ <java-symbol type="string" name="chooseActivity" /> <java-symbol type="string" name="config_default_dns_server" /> <java-symbol type="string" name="config_ethernet_iface_regex" /> + <java-symbol type="string" name="config_mms_user_agent" /> + <java-symbol type="string" name="config_mms_user_agent_profile_url" /> <java-symbol type="string" name="config_ntpServer" /> <java-symbol type="string" name="config_tether_apndata" /> <java-symbol type="string" name="config_useragentprofile_url" /> diff --git a/media/java/android/media/RemoteController.java b/media/java/android/media/RemoteController.java index d056269e890f..22f63435376b 100644 --- a/media/java/android/media/RemoteController.java +++ b/media/java/android/media/RemoteController.java @@ -153,7 +153,7 @@ public final class RemoteController * @param state one of the playback states authorized * in {@link RemoteControlClient#setPlaybackState(int)}. * @param stateChangeTimeMs the system time at which the state change was reported, - * expressed in ms. Based on {@link android.os.SystemClock.elapsedRealtime()}. + * expressed in ms. Based on {@link android.os.SystemClock#elapsedRealtime()}. * @param currentPosMs a positive value for the current media playback position expressed * in ms, a negative value if the position is temporarily unknown. * @param speed a value expressed as a ratio of 1x playback: 1.0f is normal playback, diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index 3f13f3acf5cf..f005f5ff9c42 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -3987,8 +3987,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { return timeOutMs; } - // Start off with notification off - setProvNotificationVisible(false, ConnectivityManager.TYPE_NONE, null, null); + // Start off with mobile notification off + setProvNotificationVisible(false, ConnectivityManager.TYPE_MOBILE_HIPRI, null, null); CheckMp checkMp = new CheckMp(mContext, this); CheckMp.CallBack cb = new CheckMp.CallBack() { @@ -4013,7 +4013,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { } if (TextUtils.isEmpty(url) == false) { if (DBG) log("CheckMp.onComplete: warm (redirected), url=" + url); - setProvNotificationVisible(true, ni.getType(), ni.getExtraInfo(), + setProvNotificationVisible(true, + ConnectivityManager.TYPE_MOBILE_HIPRI, ni.getExtraInfo(), url); } else { if (DBG) log("CheckMp.onComplete: warm (redirected), no url"); @@ -4024,7 +4025,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { String url = getMobileProvisioningUrl(); if (TextUtils.isEmpty(url) == false) { if (DBG) log("CheckMp.onComplete: warm (no dns/tcp), url=" + url); - setProvNotificationVisible(true, ni.getType(), ni.getExtraInfo(), + setProvNotificationVisible(true, + ConnectivityManager.TYPE_MOBILE_HIPRI, ni.getExtraInfo(), url); } else { if (DBG) log("CheckMp.onComplete: warm (no dns/tcp), no url"); @@ -4426,7 +4428,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { private void handleMobileProvisioningAction(String url) { // Notication mark notification as not visible - setProvNotificationVisible(false, ConnectivityManager.TYPE_NONE, null, null); + setProvNotificationVisible(false, ConnectivityManager.TYPE_MOBILE_HIPRI, null, null); // If provisioning network handle as a special case, // otherwise launch browser with the intent directly. @@ -4512,14 +4514,14 @@ public class ConnectivityService extends IConnectivityManager.Stub { notification.setLatestEventInfo(mContext, title, details, notification.contentIntent); try { - notificationManager.notify(NOTIFICATION_ID, 1, notification); + notificationManager.notify(NOTIFICATION_ID, networkType, notification); } catch (NullPointerException npe) { loge("setNotificaitionVisible: visible notificationManager npe=" + npe); npe.printStackTrace(); } } else { try { - notificationManager.cancel(NOTIFICATION_ID, 1); + notificationManager.cancel(NOTIFICATION_ID, networkType); } catch (NullPointerException npe) { loge("setNotificaitionVisible: cancel notificationManager npe=" + npe); npe.printStackTrace(); diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index ef50df722fe0..0e0f15625823 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -515,8 +515,9 @@ class ServerThread { ServiceManager.addService(Context.CONNECTIVITY_SERVICE, connectivity); networkStats.bindConnectivityManager(connectivity); networkPolicy.bindConnectivityManager(connectivity); - wifi.checkAndStartWifi(); + wifiP2p.connectivityServiceReady(); + wifi.checkAndStartWifi(); } catch (Throwable e) { reportWtf("starting Connectivity Service", e); } diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 7d8b64fe014c..ea0d220deb9d 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -1400,4 +1400,22 @@ public class TelephonyManager { } catch (NullPointerException ex) { } } + + /** + * Returns the MMS user agent. + */ + public String getMmsUserAgent() { + if (mContext == null) return null; + return mContext.getResources().getString( + com.android.internal.R.string.config_mms_user_agent); + } + + /** + * Returns the MMS user agent profile URL. + */ + public String getMmsUAProfUrl() { + if (mContext == null) return null; + return mContext.getResources().getString( + com.android.internal.R.string.config_mms_user_agent_profile_url); + } } |