From 0f0de13c37082f9443e3f0c8cc413188ec66d3fe Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Mon, 19 Dec 2016 15:36:13 -0500 Subject: [PATCH] Add separate roaming icon for status bar + QS Now data + roaming will be shown at the same time. Test: runtest systemui Bug: 31205845 Change-Id: I8fe167a0909c952ad0824e24e178857df2541554 --- .../SystemUI/res/drawable/ic_qs_signal_r.xml | 24 ------- ...onnected_roam.xml => stat_sys_roaming.xml} | 4 +- packages/SystemUI/res/layout/data_usage.xml | 12 +++- .../res/layout/mobile_signal_group.xml | 11 ++++ .../com/android/systemui/qs/QSAnimator.java | 4 +- .../systemui/qs/tiles/CellularTile.java | 10 ++- .../android/systemui/qs/tiles/WifiTile.java | 4 +- .../systemui/statusbar/SignalClusterView.java | 10 ++- .../statusbar/phone/QuickStatusBarHeader.java | 35 ++++++++++- .../statusbar/policy/CallbackHandler.java | 4 +- .../policy/MobileSignalController.java | 21 +++---- .../statusbar/policy/NetworkController.java | 2 +- .../policy/NetworkControllerImpl.java | 8 ++- .../policy/SignalCallbackAdapter.java | 63 ------------------- .../statusbar/policy/TelephonyIcons.java | 19 +----- .../statusbar/policy/CallbackHandlerTest.java | 7 ++- .../policy/NetworkControllerBaseTest.java | 13 +++- .../policy/NetworkControllerDataTest.java | 13 ---- .../policy/NetworkControllerSignalTest.java | 5 +- .../policy/NetworkControllerWifiTest.java | 3 +- 20 files changed, 115 insertions(+), 157 deletions(-) delete mode 100644 packages/SystemUI/res/drawable/ic_qs_signal_r.xml rename packages/SystemUI/res/drawable/{stat_sys_data_fully_connected_roam.xml => stat_sys_roaming.xml} (95%) delete mode 100644 packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java diff --git a/packages/SystemUI/res/drawable/ic_qs_signal_r.xml b/packages/SystemUI/res/drawable/ic_qs_signal_r.xml deleted file mode 100644 index 40bfbe694cca8..0000000000000 --- a/packages/SystemUI/res/drawable/ic_qs_signal_r.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - diff --git a/packages/SystemUI/res/drawable/stat_sys_data_fully_connected_roam.xml b/packages/SystemUI/res/drawable/stat_sys_roaming.xml similarity index 95% rename from packages/SystemUI/res/drawable/stat_sys_data_fully_connected_roam.xml rename to packages/SystemUI/res/drawable/stat_sys_roaming.xml index 363e231cf03c3..4baa472acb88d 100644 --- a/packages/SystemUI/res/drawable/stat_sys_data_fully_connected_roam.xml +++ b/packages/SystemUI/res/drawable/stat_sys_roaming.xml @@ -14,10 +14,10 @@ Copyright (C) 2014 The Android Open Source Project limitations under the License. --> + android:viewportHeight="12.0"> diff --git a/packages/SystemUI/res/layout/data_usage.xml b/packages/SystemUI/res/layout/data_usage.xml index c943f3d2a6162..fdc6f146f93f9 100644 --- a/packages/SystemUI/res/layout/data_usage.xml +++ b/packages/SystemUI/res/layout/data_usage.xml @@ -59,6 +59,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:textAppearance="@style/TextAppearance.QS.DataUsage" /> + - \ No newline at end of file + + + diff --git a/packages/SystemUI/res/layout/mobile_signal_group.xml b/packages/SystemUI/res/layout/mobile_signal_group.xml index a20ec8e7623df..8b10074974686 100644 --- a/packages/SystemUI/res/layout/mobile_signal_group.xml +++ b/packages/SystemUI/res/layout/mobile_signal_group.xml @@ -43,4 +43,15 @@ android:layout_height="wrap_content" android:layout_width="wrap_content" /> + diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java index 409943d469264..602f9bf23cc13 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java @@ -193,9 +193,9 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha translationXBuilder.addFloat(label, "translationX", -xDiff, 0); translationYBuilder.addFloat(label, "translationY", -yDiff, 0); - mTopFiveQs.add(tileIcon); + mTopFiveQs.add(tileView.getIcon()); mTopFiveQs.add(tileView.getBgCicle()); - mAllViews.add(tileIcon); + mAllViews.add(tileView.getIcon()); mAllViews.add(quickTileView); } else if (mFullRows && isIconInAnimatedRow(count)) { // TODO: Refactor some of this, it shares a lot with the above block. diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java index 75c4a753992da..bdc95c04dd1e1 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java @@ -38,7 +38,7 @@ import com.android.systemui.qs.QSTile; import com.android.systemui.qs.SignalTileView; import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.statusbar.policy.NetworkController.IconState; -import com.android.systemui.statusbar.policy.SignalCallbackAdapter; +import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; /** Quick settings tile: Cellular **/ public class CellularTile extends QSTile { @@ -197,9 +197,10 @@ public class CellularTile extends QSTile { String enabledDesc; boolean noSim; boolean isDataTypeIconWide; + boolean roaming; } - private final class CellSignalCallback extends SignalCallbackAdapter { + private final class CellSignalCallback implements SignalCallback { private final CallbackInfo mInfo = new CallbackInfo(); @Override public void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon, @@ -211,7 +212,7 @@ public class CellularTile extends QSTile { @Override public void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType, int qsType, boolean activityIn, boolean activityOut, String typeContentDescription, - String description, boolean isWide, int subId) { + String description, boolean isWide, int subId, boolean roaming) { if (qsIcon == null) { // Not data sim, don't display. return; @@ -225,6 +226,7 @@ public class CellularTile extends QSTile { mInfo.activityOut = activityOut; mInfo.enabledDesc = description; mInfo.isDataTypeIconWide = qsType != 0 && isWide; + mInfo.roaming = roaming; refreshState(mInfo); } @@ -294,6 +296,8 @@ public class CellularTile extends QSTile { final DataUsageController.DataUsageInfo info = mDataController.getDataUsageInfo(); if (info == null) return v; v.bind(info); + v.findViewById(R.id.roaming_text).setVisibility(mSignalCallback.mInfo.roaming + ? View.VISIBLE : View.INVISIBLE); return v; } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java index 54b41ac5e46d6..2d618576f5a9e 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java @@ -43,7 +43,7 @@ import com.android.systemui.qs.SignalTileView; import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.statusbar.policy.NetworkController.AccessPointController; import com.android.systemui.statusbar.policy.NetworkController.IconState; -import com.android.systemui.statusbar.policy.SignalCallbackAdapter; +import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; import java.util.List; @@ -256,7 +256,7 @@ public class WifiTile extends QSTile { } } - protected final class WifiSignalCallback extends SignalCallbackAdapter { + protected final class WifiSignalCallback implements SignalCallback { final CallbackInfo mInfo = new CallbackInfo(); @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java index c8e8973b2113b..9a76ad650829f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java @@ -273,7 +273,7 @@ public class SignalClusterView @Override public void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType, int qsType, boolean activityIn, boolean activityOut, String typeContentDescription, - String description, boolean isWide, int subId) { + String description, boolean isWide, int subId, boolean roaming) { PhoneState state = getState(subId); if (state == null) { return; @@ -284,6 +284,7 @@ public class SignalClusterView state.mMobileDescription = statusIcon.contentDescription; state.mMobileTypeDescription = typeContentDescription; state.mIsMobileTypeIconWide = statusType != 0 && isWide; + state.mRoaming = roaming; apply(); } @@ -631,7 +632,8 @@ public class SignalClusterView private String mMobileDescription, mMobileTypeDescription; private ViewGroup mMobileGroup; - private ImageView mMobile, mMobileDark, mMobileType; + private ImageView mMobile, mMobileDark, mMobileType, mMobileRoaming; + public boolean mRoaming; public PhoneState(int subId, Context context) { ViewGroup root = (ViewGroup) LayoutInflater.from(context) @@ -645,6 +647,7 @@ public class SignalClusterView mMobile = (ImageView) root.findViewById(R.id.mobile_signal); mMobileDark = (ImageView) root.findViewById(R.id.mobile_signal_dark); mMobileType = (ImageView) root.findViewById(R.id.mobile_type); + mMobileRoaming = (ImageView) root.findViewById(R.id.mobile_roaming); } public boolean apply(boolean isSecondaryIcon) { @@ -680,6 +683,7 @@ public class SignalClusterView (mMobileVisible ? "VISIBLE" : "GONE"), mMobileStrengthId, mMobileTypeId)); mMobileType.setVisibility(mMobileTypeId != 0 ? View.VISIBLE : View.GONE); + mMobileRoaming.setVisibility(mRoaming ? View.VISIBLE : View.GONE); return mMobileVisible; } @@ -739,6 +743,8 @@ public class SignalClusterView StatusBarIconController.getDarkIntensity(tintArea, mMobile, darkIntensity), mMobile, mMobileDark); setTint(mMobileType, StatusBarIconController.getTint(tintArea, mMobileType, tint)); + setTint(mMobileRoaming, StatusBarIconController.getTint(tintArea, mMobileRoaming, + tint)); } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java index 553620943d2fb..c0e96533aaf93 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java @@ -29,6 +29,7 @@ import android.icu.text.NumberFormat; import android.os.UserManager; import android.support.annotation.VisibleForTesting; import android.util.AttributeSet; +import android.util.SparseBooleanArray; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; @@ -55,6 +56,8 @@ import com.android.systemui.statusbar.SignalClusterView; import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback; import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.statusbar.policy.NetworkController.EmergencyListener; +import com.android.systemui.statusbar.policy.NetworkController.IconState; +import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; import com.android.systemui.statusbar.policy.NextAlarmController; import com.android.systemui.statusbar.policy.NextAlarmController.NextAlarmChangeCallback; import com.android.systemui.statusbar.policy.UserInfoController; @@ -63,7 +66,7 @@ import com.android.systemui.tuner.TunerService; public class QuickStatusBarHeader extends BaseStatusBarHeader implements NextAlarmChangeCallback, OnClickListener, OnUserInfoChangedListener, EmergencyListener, - BatteryStateChangeCallback { + BatteryStateChangeCallback, SignalCallback { private static final String TAG = "QuickStatusBarHeader"; @@ -106,6 +109,8 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements private boolean mShowFullAlarm; private float mDateTimeTranslation; private TextView mBatteryLevel; + private SparseBooleanArray mRoamingsBySubId = new SparseBooleanArray(); + private boolean mIsRoaming; public QuickStatusBarHeader(Context context, AttributeSet attrs) { super(context, attrs); @@ -300,7 +305,7 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements protected void updateVisibilities() { updateAlarmVisibilities(); updateDateTimePosition(); - mEmergencyOnly.setVisibility(mExpanded && mShowEmergencyCallsOnly + mEmergencyOnly.setVisibility(mExpanded && (mShowEmergencyCallsOnly || mIsRoaming) ? View.VISIBLE : View.INVISIBLE); mSettingsContainer.findViewById(R.id.tuner_icon).setVisibility( TunerService.isTunerEnabled(mContext) ? View.VISIBLE : View.INVISIBLE); @@ -311,7 +316,7 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements } private void updateDateTimePosition() { - mDateTimeAlarmGroup.setTranslationY(mShowEmergencyCallsOnly + mDateTimeAlarmGroup.setTranslationY(mShowEmergencyCallsOnly || mIsRoaming ? mExpansionAmount * mDateTimeTranslation : 0); } @@ -321,11 +326,13 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements mUserInfoController.addCallback(this); if (Dependency.get(NetworkController.class).hasVoiceCallingFeature()) { Dependency.get(NetworkController.class).addEmergencyListener(this); + Dependency.get(NetworkController.class).addCallback(this); } } else { mNextAlarmController.removeCallback(this); mUserInfoController.removeCallback(this); Dependency.get(NetworkController.class).removeEmergencyListener(this); + Dependency.get(NetworkController.class).removeCallback(this); } } @@ -406,6 +413,28 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements // Don't care. } + public void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType, + int qsType, boolean activityIn, boolean activityOut, String typeContentDescription, + String description, boolean isWide, int subId, boolean roaming) { + mRoamingsBySubId.put(subId, roaming); + boolean isRoaming = calculateRoaming(); + if (mIsRoaming != isRoaming) { + mIsRoaming = isRoaming; + mEmergencyOnly.setText(mIsRoaming ? R.string.accessibility_data_connection_roaming + : com.android.internal.R.string.emergency_calls_only); + if (mExpanded) { + updateEverything(); + } + } + } + + private boolean calculateRoaming() { + for (int i = 0; i < mRoamingsBySubId.size(); i++) { + if (mRoamingsBySubId.valueAt(i)) return true; + } + return false; + } + @Override public void onUserInfoChanged(String name, Drawable picture, String userAccount) { mMultiUserAvatar.setImageDrawable(picture); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java index e7056a6367a80..5ab99e9e5bceb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java @@ -125,14 +125,14 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa public void setMobileDataIndicators(final IconState statusIcon, final IconState qsIcon, final int statusType, final int qsType,final boolean activityIn, final boolean activityOut, final String typeContentDescription, - final String description, final boolean isWide, final int subId) { + final String description, final boolean isWide, final int subId, boolean roaming) { post(new Runnable() { @Override public void run() { for (SignalCallback signalCluster : mSignalCallbacks) { signalCluster.setMobileDataIndicators(statusIcon, qsIcon, statusType, qsType, activityIn, activityOut, typeContentDescription, description, isWide, - subId); + subId, roaming); } } }); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java index 83463e29c080f..03c46e8b37263 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java @@ -226,10 +226,8 @@ public class MobileSignalController extends SignalController< final boolean dataDisabled = mCurrentState.iconGroup == TelephonyIcons.DATA_DISABLED && mCurrentState.userSetup; - // Show icon in QS when we are connected or need to show roaming or data is disabled. - boolean showDataIcon = mCurrentState.dataConnected - || mCurrentState.iconGroup == TelephonyIcons.ROAMING - || dataDisabled; + // Show icon in QS when we are connected or data is disabled. + boolean showDataIcon = mCurrentState.dataConnected || dataDisabled; IconState statusIcon = new IconState(mCurrentState.enabled && !mCurrentState.airplaneMode, getCurrentIconId(), contentDescription); @@ -249,13 +247,11 @@ public class MobileSignalController extends SignalController< boolean activityOut = mCurrentState.dataConnected && !mCurrentState.carrierNetworkChangeMode && mCurrentState.activityOut; - showDataIcon &= mCurrentState.isDefault - || mCurrentState.iconGroup == TelephonyIcons.ROAMING - || dataDisabled; + showDataIcon &= mCurrentState.isDefault || dataDisabled; int typeIcon = showDataIcon ? icons.mDataType : 0; callback.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, qsTypeIcon, activityIn, activityOut, dataContentDescription, description, icons.mIsWide, - mSubscriptionInfo.getSubscriptionId()); + mSubscriptionInfo.getSubscriptionId(), mCurrentState.roaming); } @Override @@ -405,10 +401,9 @@ public class MobileSignalController extends SignalController< mCurrentState.dataConnected = mCurrentState.connected && mDataState == TelephonyManager.DATA_CONNECTED; + mCurrentState.roaming = isRoaming(); if (isCarrierNetworkChangeActive()) { mCurrentState.iconGroup = TelephonyIcons.CARRIER_NETWORK_CHANGE; - } else if (isRoaming()) { - mCurrentState.iconGroup = TelephonyIcons.ROAMING; } else if (isDataDisabled()) { mCurrentState.iconGroup = TelephonyIcons.DATA_DISABLED; } @@ -541,6 +536,7 @@ public class MobileSignalController extends SignalController< boolean carrierNetworkChangeMode; boolean isDefault; boolean userSetup; + boolean roaming; @Override public void copyFrom(State s) { @@ -555,6 +551,7 @@ public class MobileSignalController extends SignalController< airplaneMode = state.airplaneMode; carrierNetworkChangeMode = state.carrierNetworkChangeMode; userSetup = state.userSetup; + roaming = state.roaming; } @Override @@ -565,6 +562,7 @@ public class MobileSignalController extends SignalController< builder.append("networkName=").append(networkName).append(','); builder.append("networkNameData=").append(networkNameData).append(','); builder.append("dataConnected=").append(dataConnected).append(','); + builder.append("roaming=").append(roaming).append(','); builder.append("isDefault=").append(isDefault).append(','); builder.append("isEmergency=").append(isEmergency).append(','); builder.append("airplaneMode=").append(airplaneMode).append(','); @@ -584,7 +582,8 @@ public class MobileSignalController extends SignalController< && ((MobileState) o).airplaneMode == airplaneMode && ((MobileState) o).carrierNetworkChangeMode == carrierNetworkChangeMode && ((MobileState) o).userSetup == userSetup - && ((MobileState) o).isDefault == isDefault; + && ((MobileState) o).isDefault == isDefault + && ((MobileState) o).roaming == roaming; } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java index a3a9d71877b4c..eb47a3cf195d4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java @@ -53,7 +53,7 @@ public interface NetworkController extends CallbackController, D default void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType, int qsType, boolean activityIn, boolean activityOut, String typeContentDescription, - String description, boolean isWide, int subId) {} + String description, boolean isWide, int subId, boolean roaming) {} default void setSubs(List subs) {} default void setNoSims(boolean show) {} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java index 5e13f5959e30a..d7c919d9348ce 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -822,10 +822,12 @@ public class NetworkControllerImpl extends BroadcastReceiver datatype.equals("h") ? TelephonyIcons.H : datatype.equals("lte") ? TelephonyIcons.LTE : datatype.equals("lte+") ? TelephonyIcons.LTE_PLUS : - datatype.equals("roam") ? TelephonyIcons.ROAMING : datatype.equals("dis") ? TelephonyIcons.DATA_DISABLED : TelephonyIcons.UNKNOWN; } + if (args.containsKey("roam")) { + controller.getState().roaming = "show".equals(args.getString("roam")); + } int[][] icons = TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH; String level = args.getString("level"); if (level != null) { @@ -833,6 +835,10 @@ public class NetworkControllerImpl extends BroadcastReceiver : Math.min(Integer.parseInt(level), icons[0].length - 1); controller.getState().connected = controller.getState().level >= 0; } + String activity = args.getString("activity"); + if (activity != null) { + controller.setActivity(Integer.parseInt(activity)); + } controller.getState().enabled = show; controller.notifyListeners(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java deleted file mode 100644 index dce889f831dab..0000000000000 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2015 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. - */ -package com.android.systemui.statusbar.policy; - -import android.telephony.SubscriptionInfo; - -import com.android.systemui.statusbar.policy.NetworkController.IconState; -import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; - -import java.util.List; - - -/** - * Provides empty implementations of SignalCallback for those that only want some of - * the callbacks. - */ -public class SignalCallbackAdapter implements SignalCallback { - - @Override - public void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon, - boolean activityIn, boolean activityOut, String description) { - } - - @Override - public void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType, - int qsType, boolean activityIn, boolean activityOut, String typeContentDescription, - String description, boolean isWide, int subId) { - } - - @Override - public void setSubs(List subs) { - } - - @Override - public void setNoSims(boolean show) { - } - - @Override - public void setEthernetIndicators(IconState icon) { - } - - @Override - public void setIsAirplaneMode(IconState icon) { - } - - @Override - public void setMobileDataEnabled(boolean enabled) { - } - -} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java index ed8c7ff96aac8..6b2361e64da04 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java @@ -95,8 +95,6 @@ class TelephonyIcons { R.drawable.ic_qs_signal_carrier_network_change_animation } }; - static final int QS_DATA_R = R.drawable.ic_qs_signal_r; - //***** Data connection icons //GSM/UMTS @@ -211,7 +209,7 @@ class TelephonyIcons { static final int QS_DATA_LTE_PLUS = R.drawable.ic_qs_signal_lte_plus; static final int FLIGHT_MODE_ICON = R.drawable.stat_sys_airplane_mode; - static final int ROAMING_ICON = R.drawable.stat_sys_data_fully_connected_roam; + static final int ROAMING_ICON = R.drawable.stat_sys_roaming; static final int ICON_LTE = R.drawable.stat_sys_data_fully_connected_lte; static final int ICON_LTE_PLUS = R.drawable.stat_sys_data_fully_connected_lte_plus; static final int ICON_G = R.drawable.stat_sys_data_fully_connected_g; @@ -410,21 +408,6 @@ class TelephonyIcons { TelephonyIcons.QS_DATA_LTE_PLUS ); - static final MobileIconGroup ROAMING = new MobileIconGroup( - "Roaming", - TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH_ROAMING, - TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH, - AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH, - 0, 0, - TelephonyIcons.TELEPHONY_NO_NETWORK, - TelephonyIcons.QS_TELEPHONY_NO_NETWORK, - AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0], - R.string.accessibility_data_connection_roaming, - TelephonyIcons.ROAMING_ICON, - false, - TelephonyIcons.QS_DATA_R - ); - static final MobileIconGroup DATA_DISABLED = new MobileIconGroup( "DataDisabled", TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java index c969cc2d2779f..b544d9df1292e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java @@ -36,6 +36,8 @@ import org.mockito.MockitoAnnotations; import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.assertEquals; +import static org.mockito.Matchers.eq; + @SmallTest @RunWith(AndroidJUnit4.class) public class CallbackHandlerTest { @@ -109,8 +111,9 @@ public class CallbackHandlerTest { int qsType = R.drawable.ic_qs_signal_1x; boolean wide = true; int subId = 5; + boolean roaming = true; mHandler.setMobileDataIndicators(status, qs, type, qsType, in, out, typeDescription, - description, wide, subId); + description, wide, subId, roaming); waitForCallbacks(); ArgumentCaptor statusArg = ArgumentCaptor.forClass(IconState.class); @@ -126,7 +129,7 @@ public class CallbackHandlerTest { Mockito.verify(mSignalCallback).setMobileDataIndicators(statusArg.capture(), qsArg.capture(), typeIconArg.capture(), qsTypeIconArg.capture(), inArg.capture(), outArg.capture(), typeContentArg.capture(), descArg.capture(), wideArg.capture(), - subIdArg.capture()); + subIdArg.capture(), eq(roaming)); assertEquals(status, statusArg.getValue()); assertEquals(qs, qsArg.getValue()); assertEquals(type, (int) typeIconArg.getValue()); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java index 6aa021e75239b..0e5f51313b7e2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java @@ -55,6 +55,7 @@ import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyBoolean; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -297,7 +298,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase { iconArg.capture(), anyInt(), typeIconArg.capture(), dataInArg.capture(), dataOutArg.capture(), - anyString(), anyString(), anyBoolean(), anyInt()); + anyString(), anyString(), anyBoolean(), anyInt(), anyBoolean()); IconState iconState = iconArg.getValue(); assertEquals("Visibility in, quick settings", visible, iconState.visible); assertEquals("Signal icon in, quick settings", icon, iconState.icon); @@ -309,6 +310,11 @@ public class NetworkControllerBaseTest extends SysuiTestCase { } protected void verifyLastMobileDataIndicators(boolean visible, int icon, int typeIcon) { + verifyLastMobileDataIndicators(visible, icon, typeIcon, false); + } + + protected void verifyLastMobileDataIndicators(boolean visible, int icon, int typeIcon, + boolean roaming) { ArgumentCaptor iconArg = ArgumentCaptor.forClass(IconState.class); ArgumentCaptor typeIconArg = ArgumentCaptor.forClass(Integer.class); @@ -318,9 +324,10 @@ public class NetworkControllerBaseTest extends SysuiTestCase { any(), typeIconArg.capture(), anyInt(), anyBoolean(), anyBoolean(), anyString(), anyString(), anyBoolean(), - anyInt()); + anyInt(), eq(roaming)); IconState iconState = iconArg.getValue(); + assertEquals("Signal icon in status bar", icon, iconState.icon); assertEquals("Data icon in status bar", typeIcon, (int) typeIconArg.getValue()); assertEquals("Visibility in status bar", visible, iconState.visible); } @@ -341,7 +348,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase { qsTypeIconArg.capture(), dataInArg.capture(), dataOutArg.capture(), - anyString(), anyString(), anyBoolean(), anyInt()); + anyString(), anyString(), anyBoolean(), anyInt(), anyBoolean()); IconState iconState = iconArg.getValue(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java index 1ec041872d19f..d7f961cb0738f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java @@ -24,19 +24,6 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { TelephonyIcons.QS_DATA_3G); } - @Test - public void testRoamingDataIcon() { - setupDefaultSignal(); - setGsmRoaming(true); - - verifyLastMobileDataIndicators(true, - TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH_ROAMING[1][DEFAULT_LEVEL], - TelephonyIcons.ROAMING_ICON, - true, - TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH[1][DEFAULT_LEVEL], - TelephonyIcons.QS_DATA_R, false, false); - } - @Test public void test2gDataIcon() { setupDefaultSignal(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java index 00e5926415a43..2c0f9c93d353d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java @@ -158,13 +158,12 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { for (int testStrength = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN; testStrength <= SignalStrength.SIGNAL_STRENGTH_GREAT; testStrength++) { setupDefaultSignal(); - setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false); setGsmRoaming(true); setLevel(testStrength); verifyLastMobileDataIndicators(true, TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH_ROAMING[1][testStrength], - TelephonyIcons.ROAMING_ICON); + DEFAULT_ICON, true); } } @@ -179,7 +178,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { verifyLastMobileDataIndicators(true, TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH_ROAMING[1][testStrength], - TelephonyIcons.ROAMING_ICON); + TelephonyIcons.DATA_1X[1][0 /* No direction */], true); } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java index 06a512297282e..9110e0d97c436 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java @@ -215,9 +215,10 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest { setGsmRoaming(true); // Still be on wifi though. setConnectivity(NetworkCapabilities.TRANSPORT_WIFI, true, true); + setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false); verifyLastMobileDataIndicators(true, TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH_ROAMING[1][DEFAULT_LEVEL], - TelephonyIcons.ROAMING_ICON); + 0, true); } protected void setWifiActivity(int activity) {