Merge changes from topic "caitlinshk-wifi-flag" into udc-qpr-dev am: 9a06bac5b5
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24025523 Change-Id: Ib4de8b566453693086527ce4a6951cd432c69237 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -1,28 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
**
|
||||
** Copyright 2018, 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.
|
||||
*/
|
||||
-->
|
||||
<com.android.systemui.statusbar.StatusBarWifiView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/wifi_combo"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_vertical" >
|
||||
|
||||
<include layout="@layout/status_bar_wifi_group_inner" />
|
||||
|
||||
</com.android.systemui.statusbar.StatusBarWifiView>
|
||||
@@ -30,9 +30,8 @@ import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.flags.FeatureFlags;
|
||||
import com.android.systemui.flags.Flags;
|
||||
import com.android.systemui.settings.UserTracker;
|
||||
import com.android.systemui.statusbar.phone.StatusBarIconController;
|
||||
import com.android.systemui.statusbar.phone.StatusBarLocation;
|
||||
@@ -130,7 +129,6 @@ public class BatteryMeterViewController extends ViewController<BatteryMeterView>
|
||||
TunerService tunerService,
|
||||
@Main Handler mainHandler,
|
||||
ContentResolver contentResolver,
|
||||
FeatureFlags featureFlags,
|
||||
BatteryController batteryController) {
|
||||
super(view);
|
||||
mLocation = location;
|
||||
@@ -142,7 +140,8 @@ public class BatteryMeterViewController extends ViewController<BatteryMeterView>
|
||||
mBatteryController = batteryController;
|
||||
|
||||
mView.setBatteryEstimateFetcher(mBatteryController::getEstimatedTimeRemainingString);
|
||||
mView.setDisplayShieldEnabled(featureFlags.isEnabled(Flags.BATTERY_SHIELD_ICON));
|
||||
mView.setDisplayShieldEnabled(
|
||||
getContext().getResources().getBoolean(R.bool.flag_battery_shield_icon));
|
||||
|
||||
mSlotBattery = getResources().getString(com.android.internal.R.string.status_bar_battery);
|
||||
mSettingObserver = new SettingObserver(mMainHandler);
|
||||
|
||||
@@ -372,22 +372,10 @@ object Flags {
|
||||
// TODO(b/256614753): Tracking Bug
|
||||
val NEW_STATUS_BAR_MOBILE_ICONS = releasedFlag(606, "new_status_bar_mobile_icons")
|
||||
|
||||
// TODO(b/256614210): Tracking Bug
|
||||
val NEW_STATUS_BAR_WIFI_ICON = releasedFlag(607, "new_status_bar_wifi_icon")
|
||||
|
||||
// TODO(b/256614751): Tracking Bug
|
||||
val NEW_STATUS_BAR_MOBILE_ICONS_BACKEND =
|
||||
unreleasedFlag(608, "new_status_bar_mobile_icons_backend", teamfood = true)
|
||||
|
||||
// TODO(b/256613548): Tracking Bug
|
||||
val NEW_STATUS_BAR_WIFI_ICON_BACKEND =
|
||||
unreleasedFlag(609, "new_status_bar_wifi_icon_backend", teamfood = true)
|
||||
|
||||
// TODO(b/256623670): Tracking Bug
|
||||
@JvmField
|
||||
val BATTERY_SHIELD_ICON =
|
||||
resourceBooleanFlag(610, R.bool.flag_battery_shield_icon, "battery_shield_icon")
|
||||
|
||||
// TODO(b/260881289): Tracking Bug
|
||||
val NEW_STATUS_BAR_ICONS_DEBUG_COLORING =
|
||||
unreleasedFlag(611, "new_status_bar_icons_debug_coloring")
|
||||
|
||||
@@ -282,7 +282,6 @@ abstract class ShadeModule {
|
||||
tunerService: TunerService,
|
||||
@Main mainHandler: Handler,
|
||||
contentResolver: ContentResolver,
|
||||
featureFlags: FeatureFlags,
|
||||
batteryController: BatteryController,
|
||||
): BatteryMeterViewController {
|
||||
return BatteryMeterViewController(
|
||||
@@ -293,7 +292,6 @@ abstract class ShadeModule {
|
||||
tunerService,
|
||||
mainHandler,
|
||||
contentResolver,
|
||||
featureFlags,
|
||||
batteryController,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -21,8 +21,8 @@ import android.widget.FrameLayout
|
||||
|
||||
/**
|
||||
* A temporary base class that's shared between our old status bar connectivity view implementations
|
||||
* ([StatusBarWifiView], [StatusBarMobileView]) and our new status bar implementations (
|
||||
* [ModernStatusBarWifiView], [ModernStatusBarMobileView]).
|
||||
* ([StatusBarMobileView]) and our new status bar implementations ([ModernStatusBarWifiView],
|
||||
* [ModernStatusBarMobileView]).
|
||||
*
|
||||
* Once our refactor is over, we should be able to delete this go-between class and the old view
|
||||
* class.
|
||||
|
||||
@@ -1,249 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2018 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;
|
||||
|
||||
import static com.android.systemui.plugins.DarkIconDispatcher.getTint;
|
||||
import static com.android.systemui.statusbar.StatusBarIconView.STATE_DOT;
|
||||
import static com.android.systemui.statusbar.StatusBarIconView.STATE_HIDDEN;
|
||||
import static com.android.systemui.statusbar.StatusBarIconView.STATE_ICON;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.Rect;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.WifiIconState;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Start small: StatusBarWifiView will be able to layout from a WifiIconState
|
||||
*/
|
||||
public class StatusBarWifiView extends BaseStatusBarFrameLayout implements DarkReceiver {
|
||||
private static final String TAG = "StatusBarWifiView";
|
||||
|
||||
/// Used to show etc dots
|
||||
private StatusBarIconView mDotView;
|
||||
/// Contains the main icon layout
|
||||
private LinearLayout mWifiGroup;
|
||||
private ImageView mWifiIcon;
|
||||
private ImageView mIn;
|
||||
private ImageView mOut;
|
||||
private View mInoutContainer;
|
||||
private View mSignalSpacer;
|
||||
private View mAirplaneSpacer;
|
||||
private WifiIconState mState;
|
||||
private String mSlot;
|
||||
@StatusBarIconView.VisibleState
|
||||
private int mVisibleState = STATE_HIDDEN;
|
||||
|
||||
public static StatusBarWifiView fromContext(Context context, String slot) {
|
||||
LayoutInflater inflater = LayoutInflater.from(context);
|
||||
StatusBarWifiView v = (StatusBarWifiView) inflater.inflate(R.layout.status_bar_wifi_group, null);
|
||||
v.setSlot(slot);
|
||||
v.init();
|
||||
v.setVisibleState(STATE_ICON);
|
||||
return v;
|
||||
}
|
||||
|
||||
public StatusBarWifiView(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public StatusBarWifiView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public StatusBarWifiView(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
public void setSlot(String slot) {
|
||||
mSlot = slot;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStaticDrawableColor(int color) {
|
||||
ColorStateList list = ColorStateList.valueOf(color);
|
||||
mWifiIcon.setImageTintList(list);
|
||||
mIn.setImageTintList(list);
|
||||
mOut.setImageTintList(list);
|
||||
mDotView.setDecorColor(color);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDecorColor(int color) {
|
||||
mDotView.setDecorColor(color);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSlot() {
|
||||
return mSlot;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIconVisible() {
|
||||
return mState != null && mState.visible;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisibleState(@StatusBarIconView.VisibleState int state, boolean animate) {
|
||||
if (state == mVisibleState) {
|
||||
return;
|
||||
}
|
||||
mVisibleState = state;
|
||||
|
||||
switch (state) {
|
||||
case STATE_ICON:
|
||||
mWifiGroup.setVisibility(View.VISIBLE);
|
||||
mDotView.setVisibility(View.GONE);
|
||||
break;
|
||||
case STATE_DOT:
|
||||
mWifiGroup.setVisibility(View.GONE);
|
||||
mDotView.setVisibility(View.VISIBLE);
|
||||
break;
|
||||
case STATE_HIDDEN:
|
||||
default:
|
||||
mWifiGroup.setVisibility(View.GONE);
|
||||
mDotView.setVisibility(View.GONE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@StatusBarIconView.VisibleState
|
||||
public int getVisibleState() {
|
||||
return mVisibleState;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getDrawingRect(Rect outRect) {
|
||||
super.getDrawingRect(outRect);
|
||||
float translationX = getTranslationX();
|
||||
float translationY = getTranslationY();
|
||||
outRect.left += translationX;
|
||||
outRect.right += translationX;
|
||||
outRect.top += translationY;
|
||||
outRect.bottom += translationY;
|
||||
}
|
||||
|
||||
private void init() {
|
||||
mWifiGroup = findViewById(R.id.wifi_group);
|
||||
mWifiIcon = findViewById(R.id.wifi_signal);
|
||||
mIn = findViewById(R.id.wifi_in);
|
||||
mOut = findViewById(R.id.wifi_out);
|
||||
mSignalSpacer = findViewById(R.id.wifi_signal_spacer);
|
||||
mAirplaneSpacer = findViewById(R.id.wifi_airplane_spacer);
|
||||
mInoutContainer = findViewById(R.id.inout_container);
|
||||
|
||||
initDotView();
|
||||
}
|
||||
|
||||
private void initDotView() {
|
||||
mDotView = new StatusBarIconView(mContext, mSlot, null);
|
||||
mDotView.setVisibleState(STATE_DOT);
|
||||
|
||||
int width = mContext.getResources().getDimensionPixelSize(R.dimen.status_bar_icon_size_sp);
|
||||
LayoutParams lp = new LayoutParams(width, width);
|
||||
lp.gravity = Gravity.CENTER_VERTICAL | Gravity.START;
|
||||
addView(mDotView, lp);
|
||||
}
|
||||
|
||||
public void applyWifiState(WifiIconState state) {
|
||||
boolean requestLayout = false;
|
||||
|
||||
if (state == null) {
|
||||
requestLayout = getVisibility() != View.GONE;
|
||||
setVisibility(View.GONE);
|
||||
mState = null;
|
||||
} else if (mState == null) {
|
||||
requestLayout = true;
|
||||
mState = state.copy();
|
||||
initViewState();
|
||||
} else if (!mState.equals(state)) {
|
||||
requestLayout = updateState(state.copy());
|
||||
}
|
||||
|
||||
if (requestLayout) {
|
||||
requestLayout();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean updateState(WifiIconState state) {
|
||||
setContentDescription(state.contentDescription);
|
||||
if (mState.resId != state.resId && state.resId >= 0) {
|
||||
mWifiIcon.setImageDrawable(mContext.getDrawable(state.resId));
|
||||
}
|
||||
|
||||
mIn.setVisibility(state.activityIn ? View.VISIBLE : View.GONE);
|
||||
mOut.setVisibility(state.activityOut ? View.VISIBLE : View.GONE);
|
||||
mInoutContainer.setVisibility(
|
||||
(state.activityIn || state.activityOut) ? View.VISIBLE : View.GONE);
|
||||
mAirplaneSpacer.setVisibility(state.airplaneSpacerVisible ? View.VISIBLE : View.GONE);
|
||||
mSignalSpacer.setVisibility(state.signalSpacerVisible ? View.VISIBLE : View.GONE);
|
||||
|
||||
boolean needsLayout = state.activityIn != mState.activityIn
|
||||
||state.activityOut != mState.activityOut;
|
||||
|
||||
if (mState.visible != state.visible) {
|
||||
needsLayout |= true;
|
||||
setVisibility(state.visible ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
mState = state;
|
||||
return needsLayout;
|
||||
}
|
||||
|
||||
private void initViewState() {
|
||||
setContentDescription(mState.contentDescription);
|
||||
if (mState.resId >= 0) {
|
||||
mWifiIcon.setImageDrawable(mContext.getDrawable(mState.resId));
|
||||
}
|
||||
|
||||
mIn.setVisibility(mState.activityIn ? View.VISIBLE : View.GONE);
|
||||
mOut.setVisibility(mState.activityOut ? View.VISIBLE : View.GONE);
|
||||
mInoutContainer.setVisibility(
|
||||
(mState.activityIn || mState.activityOut) ? View.VISIBLE : View.GONE);
|
||||
mAirplaneSpacer.setVisibility(mState.airplaneSpacerVisible ? View.VISIBLE : View.GONE);
|
||||
mSignalSpacer.setVisibility(mState.signalSpacerVisible ? View.VISIBLE : View.GONE);
|
||||
setVisibility(mState.visible ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDarkChanged(ArrayList<Rect> areas, float darkIntensity, int tint) {
|
||||
int areaTint = getTint(areas, this, tint);
|
||||
ColorStateList color = ColorStateList.valueOf(areaTint);
|
||||
mWifiIcon.setImageTintList(color);
|
||||
mIn.setImageTintList(color);
|
||||
mOut.setImageTintList(color);
|
||||
mDotView.setDecorColor(areaTint);
|
||||
mDotView.setIconColor(areaTint, false);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "StatusBarWifiView(slot=" + mSlot + " state=" + mState + ")";
|
||||
}
|
||||
}
|
||||
@@ -18,10 +18,6 @@ package com.android.systemui.statusbar.connectivity;
|
||||
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
||||
import static android.net.wifi.WifiManager.TrafficStateCallback.DATA_ACTIVITY_IN;
|
||||
import static android.net.wifi.WifiManager.TrafficStateCallback.DATA_ACTIVITY_INOUT;
|
||||
import static android.net.wifi.WifiManager.TrafficStateCallback.DATA_ACTIVITY_NONE;
|
||||
import static android.net.wifi.WifiManager.TrafficStateCallback.DATA_ACTIVITY_OUT;
|
||||
import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
@@ -557,10 +553,6 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
mBroadcastDispatcher.unregisterReceiver(this);
|
||||
}
|
||||
|
||||
public int getConnectedWifiLevel() {
|
||||
return mWifiSignalController.getState().level;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AccessPointController getAccessPointController() {
|
||||
return mAccessPoints;
|
||||
@@ -654,14 +646,6 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
return mWifiSignalController.isCarrierMergedWifi(subId);
|
||||
}
|
||||
|
||||
boolean hasDefaultNetwork() {
|
||||
return !mNoDefaultNetwork;
|
||||
}
|
||||
|
||||
boolean isNonCarrierWifiNetworkAvailable() {
|
||||
return !mNoNetworksAvailable;
|
||||
}
|
||||
|
||||
boolean isEthernetDefault() {
|
||||
return mConnectedTransports.get(NetworkCapabilities.TRANSPORT_ETHERNET);
|
||||
}
|
||||
@@ -1242,15 +1226,12 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
}
|
||||
|
||||
private boolean mDemoInetCondition;
|
||||
private WifiState mDemoWifiState;
|
||||
|
||||
@Override
|
||||
public void onDemoModeStarted() {
|
||||
if (DEBUG) Log.d(TAG, "Entering demo mode");
|
||||
unregisterListeners();
|
||||
mDemoInetCondition = mInetCondition;
|
||||
mDemoWifiState = mWifiSignalController.getState();
|
||||
mDemoWifiState.ssid = "DemoMode";
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1300,41 +1281,6 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
controller.updateConnectivity(connected, connected);
|
||||
}
|
||||
}
|
||||
String wifi = args.getString("wifi");
|
||||
if (wifi != null && !mStatusBarPipelineFlags.runNewWifiIconBackend()) {
|
||||
boolean show = wifi.equals("show");
|
||||
String level = args.getString("level");
|
||||
if (level != null) {
|
||||
mDemoWifiState.level = level.equals("null") ? -1
|
||||
: Math.min(Integer.parseInt(level), WifiIcons.WIFI_LEVEL_COUNT - 1);
|
||||
mDemoWifiState.connected = mDemoWifiState.level >= 0;
|
||||
}
|
||||
String activity = args.getString("activity");
|
||||
if (activity != null) {
|
||||
switch (activity) {
|
||||
case "inout":
|
||||
mWifiSignalController.setActivity(DATA_ACTIVITY_INOUT);
|
||||
break;
|
||||
case "in":
|
||||
mWifiSignalController.setActivity(DATA_ACTIVITY_IN);
|
||||
break;
|
||||
case "out":
|
||||
mWifiSignalController.setActivity(DATA_ACTIVITY_OUT);
|
||||
break;
|
||||
default:
|
||||
mWifiSignalController.setActivity(DATA_ACTIVITY_NONE);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
mWifiSignalController.setActivity(DATA_ACTIVITY_NONE);
|
||||
}
|
||||
String ssid = args.getString("ssid");
|
||||
if (ssid != null) {
|
||||
mDemoWifiState.ssid = ssid;
|
||||
}
|
||||
mDemoWifiState.enabled = show;
|
||||
mWifiSignalController.notifyListeners();
|
||||
}
|
||||
String sims = args.getString("sims");
|
||||
if (sims != null && !mStatusBarPipelineFlags.useNewMobileIcons()) {
|
||||
int num = MathUtils.constrain(Integer.parseInt(sims), 1, 8);
|
||||
|
||||
@@ -35,11 +35,9 @@ import com.android.systemui.plugins.DarkIconDispatcher;
|
||||
import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
|
||||
import com.android.systemui.statusbar.StatusBarIconView;
|
||||
import com.android.systemui.statusbar.StatusBarMobileView;
|
||||
import com.android.systemui.statusbar.StatusBarWifiView;
|
||||
import com.android.systemui.statusbar.StatusIconDisplayable;
|
||||
import com.android.systemui.statusbar.connectivity.ui.MobileContextProvider;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.MobileIconState;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.WifiIconState;
|
||||
import com.android.systemui.statusbar.pipeline.mobile.ui.MobileViewLogger;
|
||||
import com.android.systemui.statusbar.pipeline.mobile.ui.view.ModernStatusBarMobileView;
|
||||
import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconsViewModel;
|
||||
@@ -58,7 +56,6 @@ public class DemoStatusIcons extends StatusIconContainer implements DemoMode, Da
|
||||
private final ArrayList<ModernStatusBarMobileView> mModernMobileViews = new ArrayList<>();
|
||||
private final int mIconSize;
|
||||
|
||||
private StatusBarWifiView mWifiView;
|
||||
private ModernStatusBarWifiView mModernWifiView;
|
||||
private boolean mDemoMode;
|
||||
private int mColor;
|
||||
@@ -238,36 +235,6 @@ public class DemoStatusIcons extends StatusIconContainer implements DemoMode, Da
|
||||
addView(v, 0, createLayoutParams());
|
||||
}
|
||||
|
||||
public void addDemoWifiView(WifiIconState state) {
|
||||
Log.d(TAG, "addDemoWifiView: ");
|
||||
StatusBarWifiView view = StatusBarWifiView.fromContext(mContext, state.slot);
|
||||
|
||||
int viewIndex = getChildCount();
|
||||
// If we have mobile views, put wifi before them
|
||||
for (int i = 0; i < getChildCount(); i++) {
|
||||
View child = getChildAt(i);
|
||||
if (child instanceof StatusBarMobileView
|
||||
|| child instanceof ModernStatusBarMobileView) {
|
||||
viewIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
mWifiView = view;
|
||||
mWifiView.applyWifiState(state);
|
||||
mWifiView.setStaticDrawableColor(mColor);
|
||||
addView(view, viewIndex, createLayoutParams());
|
||||
}
|
||||
|
||||
public void updateWifiState(WifiIconState state) {
|
||||
Log.d(TAG, "updateWifiState: ");
|
||||
if (mWifiView == null) {
|
||||
addDemoWifiView(state);
|
||||
} else {
|
||||
mWifiView.applyWifiState(state);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new mobile icon view
|
||||
*/
|
||||
@@ -352,10 +319,7 @@ public class DemoStatusIcons extends StatusIconContainer implements DemoMode, Da
|
||||
|
||||
public void onRemoveIcon(StatusIconDisplayable view) {
|
||||
if (view.getSlot().equals("wifi")) {
|
||||
if (view instanceof StatusBarWifiView) {
|
||||
removeView(mWifiView);
|
||||
mWifiView = null;
|
||||
} else if (view instanceof ModernStatusBarWifiView) {
|
||||
if (view instanceof ModernStatusBarWifiView) {
|
||||
Log.d(TAG, "onRemoveIcon: removing modern wifi view");
|
||||
removeView(mModernWifiView);
|
||||
mModernWifiView = null;
|
||||
@@ -409,9 +373,6 @@ public class DemoStatusIcons extends StatusIconContainer implements DemoMode, Da
|
||||
public void onDarkChanged(ArrayList<Rect> areas, float darkIntensity, int tint) {
|
||||
setColor(DarkIconDispatcher.getTint(areas, mStatusIcons, tint));
|
||||
|
||||
if (mWifiView != null) {
|
||||
mWifiView.onDarkChanged(areas, darkIntensity, tint);
|
||||
}
|
||||
if (mModernWifiView != null) {
|
||||
mModernWifiView.onDarkChanged(areas, darkIntensity, tint);
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@ package com.android.systemui.statusbar.phone;
|
||||
import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_ICON;
|
||||
import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_MOBILE;
|
||||
import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_MOBILE_NEW;
|
||||
import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_WIFI;
|
||||
import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_WIFI_NEW;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
@@ -43,12 +42,10 @@ import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
|
||||
import com.android.systemui.statusbar.BaseStatusBarFrameLayout;
|
||||
import com.android.systemui.statusbar.StatusBarIconView;
|
||||
import com.android.systemui.statusbar.StatusBarMobileView;
|
||||
import com.android.systemui.statusbar.StatusBarWifiView;
|
||||
import com.android.systemui.statusbar.StatusIconDisplayable;
|
||||
import com.android.systemui.statusbar.connectivity.ui.MobileContextProvider;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.CallIndicatorIconState;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.MobileIconState;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.WifiIconState;
|
||||
import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags;
|
||||
import com.android.systemui.statusbar.pipeline.mobile.ui.MobileUiAdapter;
|
||||
import com.android.systemui.statusbar.pipeline.mobile.ui.binder.MobileIconsBinder;
|
||||
@@ -97,16 +94,9 @@ public interface StatusBarIconController {
|
||||
*/
|
||||
void setIcon(String slot, int resourceId, CharSequence contentDescription);
|
||||
|
||||
/** */
|
||||
void setWifiIcon(String slot, WifiIconState state);
|
||||
|
||||
/**
|
||||
* Sets up a wifi icon using the new data pipeline. No effect if the wifi icon has already been
|
||||
* set up (inflated and added to the view hierarchy).
|
||||
*
|
||||
* This method completely replaces {@link #setWifiIcon} with the information from the new wifi
|
||||
* data pipeline. Icons will automatically keep their state up to date, so we don't have to
|
||||
* worry about funneling state objects through anymore.
|
||||
*/
|
||||
void setNewWifiIcon();
|
||||
|
||||
@@ -408,13 +398,7 @@ public interface StatusBarIconController {
|
||||
mMobileIconsViewModel = null;
|
||||
}
|
||||
|
||||
if (statusBarPipelineFlags.runNewWifiIconBackend()) {
|
||||
// This starts the flow for the new pipeline, and will notify us of changes if
|
||||
// {@link StatusBarPipelineFlags#useNewWifiIcon} is also true.
|
||||
mWifiViewModel = wifiUiAdapter.bindGroup(mGroup, mLocation);
|
||||
} else {
|
||||
mWifiViewModel = null;
|
||||
}
|
||||
mWifiViewModel = wifiUiAdapter.bindGroup(mGroup, mLocation);
|
||||
}
|
||||
|
||||
public boolean isDemoable() {
|
||||
@@ -462,9 +446,6 @@ public interface StatusBarIconController {
|
||||
case TYPE_ICON:
|
||||
return addIcon(index, slot, blocked, holder.getIcon());
|
||||
|
||||
case TYPE_WIFI:
|
||||
return addWifiIcon(index, slot, holder.getWifiState());
|
||||
|
||||
case TYPE_WIFI_NEW:
|
||||
return addNewWifiIcon(index, slot);
|
||||
|
||||
@@ -487,29 +468,7 @@ public interface StatusBarIconController {
|
||||
return view;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
protected StatusIconDisplayable addWifiIcon(int index, String slot, WifiIconState state) {
|
||||
if (mStatusBarPipelineFlags.useNewWifiIcon()) {
|
||||
throw new IllegalStateException("Attempting to add a wifi icon while the new "
|
||||
+ "icons are enabled is not supported");
|
||||
}
|
||||
|
||||
final StatusBarWifiView view = onCreateStatusBarWifiView(slot);
|
||||
view.applyWifiState(state);
|
||||
mGroup.addView(view, index, onCreateLayoutParams());
|
||||
|
||||
if (mIsInDemoMode) {
|
||||
mDemoStatusIcons.addDemoWifiView(state);
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
protected StatusIconDisplayable addNewWifiIcon(int index, String slot) {
|
||||
if (!mStatusBarPipelineFlags.useNewWifiIcon()) {
|
||||
throw new IllegalStateException("Attempting to add a wifi icon using the new"
|
||||
+ "pipeline, but the enabled flag is false.");
|
||||
}
|
||||
|
||||
ModernStatusBarWifiView view = onCreateModernStatusBarWifiView(slot);
|
||||
mGroup.addView(view, index, onCreateLayoutParams());
|
||||
|
||||
@@ -573,11 +532,6 @@ public interface StatusBarIconController {
|
||||
return new StatusBarIconView(mContext, slot, null, blocked);
|
||||
}
|
||||
|
||||
private StatusBarWifiView onCreateStatusBarWifiView(String slot) {
|
||||
StatusBarWifiView view = StatusBarWifiView.fromContext(mContext, slot);
|
||||
return view;
|
||||
}
|
||||
|
||||
private ModernStatusBarWifiView onCreateModernStatusBarWifiView(String slot) {
|
||||
return ModernStatusBarWifiView.constructAndBind(mContext, slot, mWifiViewModel);
|
||||
}
|
||||
@@ -640,9 +594,6 @@ public interface StatusBarIconController {
|
||||
case TYPE_ICON:
|
||||
onSetIcon(viewIndex, holder.getIcon());
|
||||
return;
|
||||
case TYPE_WIFI:
|
||||
onSetWifiIcon(viewIndex, holder.getWifiState());
|
||||
return;
|
||||
case TYPE_MOBILE:
|
||||
onSetMobileIcon(viewIndex, holder.getMobileState());
|
||||
return;
|
||||
@@ -655,23 +606,6 @@ public interface StatusBarIconController {
|
||||
}
|
||||
}
|
||||
|
||||
public void onSetWifiIcon(int viewIndex, WifiIconState state) {
|
||||
View view = mGroup.getChildAt(viewIndex);
|
||||
if (view instanceof StatusBarWifiView) {
|
||||
((StatusBarWifiView) view).applyWifiState(state);
|
||||
} else if (view instanceof ModernStatusBarWifiView) {
|
||||
// ModernStatusBarWifiView will automatically apply state based on its callbacks, so
|
||||
// we don't need to call applyWifiState.
|
||||
} else {
|
||||
throw new IllegalStateException("View at " + viewIndex + " must be of type "
|
||||
+ "StatusBarWifiView or ModernStatusBarWifiView");
|
||||
}
|
||||
|
||||
if (mIsInDemoMode) {
|
||||
mDemoStatusIcons.updateWifiState(state);
|
||||
}
|
||||
}
|
||||
|
||||
public void onSetMobileIcon(int viewIndex, MobileIconState state) {
|
||||
View view = mGroup.getChildAt(viewIndex);
|
||||
if (view instanceof StatusBarMobileView) {
|
||||
@@ -703,9 +637,7 @@ public interface StatusBarIconController {
|
||||
mIsInDemoMode = true;
|
||||
if (mDemoStatusIcons == null) {
|
||||
mDemoStatusIcons = createDemoStatusIcons();
|
||||
if (mStatusBarPipelineFlags.useNewWifiIcon()) {
|
||||
mDemoStatusIcons.addModernWifiView(mWifiViewModel);
|
||||
}
|
||||
mDemoStatusIcons.addModernWifiView(mWifiViewModel);
|
||||
}
|
||||
mDemoStatusIcons.onDemoModeStarted();
|
||||
}
|
||||
|
||||
@@ -40,7 +40,6 @@ import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.StatusIconDisplayable;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.CallIndicatorIconState;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.MobileIconState;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.WifiIconState;
|
||||
import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
|
||||
@@ -201,36 +200,8 @@ public class StatusBarIconControllerImpl implements Tunable,
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWifiIcon(String slot, WifiIconState state) {
|
||||
if (mStatusBarPipelineFlags.useNewWifiIcon()) {
|
||||
Log.d(TAG, "ignoring old pipeline callback because the new wifi icon is enabled");
|
||||
return;
|
||||
}
|
||||
|
||||
if (state == null) {
|
||||
removeIcon(slot, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
StatusBarIconHolder holder = mStatusBarIconList.getIconHolder(slot, 0);
|
||||
if (holder == null) {
|
||||
holder = StatusBarIconHolder.fromWifiIconState(state);
|
||||
setIcon(slot, holder);
|
||||
} else {
|
||||
holder.setWifiState(state);
|
||||
handleSet(slot, holder);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setNewWifiIcon() {
|
||||
if (!mStatusBarPipelineFlags.useNewWifiIcon()) {
|
||||
Log.d(TAG, "ignoring new pipeline callback because the new wifi icon is disabled");
|
||||
return;
|
||||
}
|
||||
|
||||
String slot = mContext.getString(com.android.internal.R.string.status_bar_wifi);
|
||||
StatusBarIconHolder holder = mStatusBarIconList.getIconHolder(slot, /* tag= */ 0);
|
||||
if (holder == null) {
|
||||
|
||||
@@ -25,7 +25,6 @@ import android.os.UserHandle;
|
||||
import com.android.internal.statusbar.StatusBarIcon;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.CallIndicatorIconState;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.MobileIconState;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.WifiIconState;
|
||||
import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconViewModel;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
@@ -36,7 +35,6 @@ import java.lang.annotation.RetentionPolicy;
|
||||
*/
|
||||
public class StatusBarIconHolder {
|
||||
public static final int TYPE_ICON = 0;
|
||||
public static final int TYPE_WIFI = 1;
|
||||
public static final int TYPE_MOBILE = 2;
|
||||
/**
|
||||
* TODO (b/249790733): address this once the new pipeline is in place
|
||||
@@ -65,7 +63,6 @@ public class StatusBarIconHolder {
|
||||
|
||||
@IntDef({
|
||||
TYPE_ICON,
|
||||
TYPE_WIFI,
|
||||
TYPE_MOBILE,
|
||||
TYPE_MOBILE_NEW,
|
||||
TYPE_WIFI_NEW
|
||||
@@ -74,7 +71,6 @@ public class StatusBarIconHolder {
|
||||
@interface IconType {}
|
||||
|
||||
private StatusBarIcon mIcon;
|
||||
private WifiIconState mWifiState;
|
||||
private MobileIconState mMobileState;
|
||||
private @IconType int mType = TYPE_ICON;
|
||||
private int mTag = 0;
|
||||
@@ -83,7 +79,6 @@ public class StatusBarIconHolder {
|
||||
public static String getTypeString(@IconType int type) {
|
||||
switch(type) {
|
||||
case TYPE_ICON: return "ICON";
|
||||
case TYPE_WIFI: return "WIFI_OLD";
|
||||
case TYPE_MOBILE: return "MOBILE_OLD";
|
||||
case TYPE_MOBILE_NEW: return "MOBILE_NEW";
|
||||
case TYPE_WIFI_NEW: return "WIFI_NEW";
|
||||
@@ -101,25 +96,6 @@ public class StatusBarIconHolder {
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
/** */
|
||||
public static StatusBarIconHolder fromResId(
|
||||
Context context,
|
||||
int resId,
|
||||
CharSequence contentDescription) {
|
||||
StatusBarIconHolder holder = new StatusBarIconHolder();
|
||||
holder.mIcon = new StatusBarIcon(UserHandle.SYSTEM, context.getPackageName(),
|
||||
Icon.createWithResource( context, resId), 0, 0, contentDescription);
|
||||
return holder;
|
||||
}
|
||||
|
||||
/** */
|
||||
public static StatusBarIconHolder fromWifiIconState(WifiIconState state) {
|
||||
StatusBarIconHolder holder = new StatusBarIconHolder();
|
||||
holder.mWifiState = state;
|
||||
holder.mType = TYPE_WIFI;
|
||||
return holder;
|
||||
}
|
||||
|
||||
/** Creates a new holder with for the new wifi icon. */
|
||||
public static StatusBarIconHolder forNewWifiIcon() {
|
||||
StatusBarIconHolder holder = new StatusBarIconHolder();
|
||||
@@ -177,15 +153,6 @@ public class StatusBarIconHolder {
|
||||
mIcon = icon;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public WifiIconState getWifiState() {
|
||||
return mWifiState;
|
||||
}
|
||||
|
||||
public void setWifiState(WifiIconState state) {
|
||||
mWifiState = state;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public MobileIconState getMobileState() {
|
||||
return mMobileState;
|
||||
@@ -199,8 +166,6 @@ public class StatusBarIconHolder {
|
||||
switch (mType) {
|
||||
case TYPE_ICON:
|
||||
return mIcon.visible;
|
||||
case TYPE_WIFI:
|
||||
return mWifiState.visible;
|
||||
case TYPE_MOBILE:
|
||||
return mMobileState.visible;
|
||||
case TYPE_MOBILE_NEW:
|
||||
@@ -223,10 +188,6 @@ public class StatusBarIconHolder {
|
||||
mIcon.visible = visible;
|
||||
break;
|
||||
|
||||
case TYPE_WIFI:
|
||||
mWifiState.visible = visible;
|
||||
break;
|
||||
|
||||
case TYPE_MOBILE:
|
||||
mMobileState.visible = visible;
|
||||
break;
|
||||
|
||||
@@ -30,7 +30,6 @@ import com.android.systemui.statusbar.connectivity.IconState;
|
||||
import com.android.systemui.statusbar.connectivity.MobileDataIndicators;
|
||||
import com.android.systemui.statusbar.connectivity.NetworkController;
|
||||
import com.android.systemui.statusbar.connectivity.SignalCallback;
|
||||
import com.android.systemui.statusbar.connectivity.WifiIndicators;
|
||||
import com.android.systemui.statusbar.policy.SecurityController;
|
||||
import com.android.systemui.tuner.TunerService;
|
||||
import com.android.systemui.tuner.TunerService.Tunable;
|
||||
@@ -51,7 +50,6 @@ public class StatusBarSignalPolicy implements SignalCallback,
|
||||
|
||||
private final String mSlotAirplane;
|
||||
private final String mSlotMobile;
|
||||
private final String mSlotWifi;
|
||||
private final String mSlotEthernet;
|
||||
private final String mSlotVpn;
|
||||
private final String mSlotNoCalling;
|
||||
@@ -67,17 +65,14 @@ public class StatusBarSignalPolicy implements SignalCallback,
|
||||
|
||||
private boolean mHideAirplane;
|
||||
private boolean mHideMobile;
|
||||
private boolean mHideWifi;
|
||||
private boolean mHideEthernet;
|
||||
private boolean mActivityEnabled;
|
||||
|
||||
// Track as little state as possible, and only for padding purposes
|
||||
private boolean mIsAirplaneMode = false;
|
||||
private boolean mIsWifiEnabled = false;
|
||||
|
||||
private ArrayList<MobileIconState> mMobileStates = new ArrayList<>();
|
||||
private ArrayList<CallIndicatorIconState> mCallIndicatorStates = new ArrayList<>();
|
||||
private WifiIconState mWifiIconState = new WifiIconState();
|
||||
private boolean mInitialized;
|
||||
|
||||
@Inject
|
||||
@@ -99,7 +94,6 @@ public class StatusBarSignalPolicy implements SignalCallback,
|
||||
|
||||
mSlotAirplane = mContext.getString(com.android.internal.R.string.status_bar_airplane);
|
||||
mSlotMobile = mContext.getString(com.android.internal.R.string.status_bar_mobile);
|
||||
mSlotWifi = mContext.getString(com.android.internal.R.string.status_bar_wifi);
|
||||
mSlotEthernet = mContext.getString(com.android.internal.R.string.status_bar_ethernet);
|
||||
mSlotVpn = mContext.getString(com.android.internal.R.string.status_bar_vpn);
|
||||
mSlotNoCalling = mContext.getString(com.android.internal.R.string.status_bar_no_calling);
|
||||
@@ -154,71 +148,19 @@ public class StatusBarSignalPolicy implements SignalCallback,
|
||||
ArraySet<String> hideList = StatusBarIconController.getIconHideList(mContext, newValue);
|
||||
boolean hideAirplane = hideList.contains(mSlotAirplane);
|
||||
boolean hideMobile = hideList.contains(mSlotMobile);
|
||||
boolean hideWifi = hideList.contains(mSlotWifi);
|
||||
boolean hideEthernet = hideList.contains(mSlotEthernet);
|
||||
|
||||
if (hideAirplane != mHideAirplane || hideMobile != mHideMobile
|
||||
|| hideEthernet != mHideEthernet || hideWifi != mHideWifi) {
|
||||
|| hideEthernet != mHideEthernet) {
|
||||
mHideAirplane = hideAirplane;
|
||||
mHideMobile = hideMobile;
|
||||
mHideEthernet = hideEthernet;
|
||||
mHideWifi = hideWifi;
|
||||
// Re-register to get new callbacks.
|
||||
mNetworkController.removeCallback(this);
|
||||
mNetworkController.addCallback(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWifiIndicators(@NonNull WifiIndicators indicators) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "setWifiIndicators: " + indicators);
|
||||
}
|
||||
boolean visible = indicators.statusIcon.visible && !mHideWifi;
|
||||
boolean in = indicators.activityIn && mActivityEnabled && visible;
|
||||
boolean out = indicators.activityOut && mActivityEnabled && visible;
|
||||
mIsWifiEnabled = indicators.enabled;
|
||||
|
||||
WifiIconState newState = mWifiIconState.copy();
|
||||
|
||||
if (mWifiIconState.noDefaultNetwork && mWifiIconState.noNetworksAvailable
|
||||
&& !mIsAirplaneMode) {
|
||||
newState.visible = true;
|
||||
newState.resId = R.drawable.ic_qs_no_internet_unavailable;
|
||||
} else if (mWifiIconState.noDefaultNetwork && !mWifiIconState.noNetworksAvailable
|
||||
&& (!mIsAirplaneMode || (mIsAirplaneMode && mIsWifiEnabled))) {
|
||||
newState.visible = true;
|
||||
newState.resId = R.drawable.ic_qs_no_internet_available;
|
||||
} else {
|
||||
newState.visible = visible;
|
||||
newState.resId = indicators.statusIcon.icon;
|
||||
newState.activityIn = in;
|
||||
newState.activityOut = out;
|
||||
newState.contentDescription = indicators.statusIcon.contentDescription;
|
||||
MobileIconState first = getFirstMobileState();
|
||||
newState.signalSpacerVisible = first != null && first.typeId != 0;
|
||||
}
|
||||
newState.slot = mSlotWifi;
|
||||
newState.airplaneSpacerVisible = mIsAirplaneMode;
|
||||
updateWifiIconWithState(newState);
|
||||
mWifiIconState = newState;
|
||||
}
|
||||
|
||||
private void updateShowWifiSignalSpacer(WifiIconState state) {
|
||||
MobileIconState first = getFirstMobileState();
|
||||
state.signalSpacerVisible = first != null && first.typeId != 0;
|
||||
}
|
||||
|
||||
private void updateWifiIconWithState(WifiIconState state) {
|
||||
if (DEBUG) Log.d(TAG, "WifiIconState: " + state == null ? "" : state.toString());
|
||||
if (state.visible && state.resId > 0) {
|
||||
mIconController.setWifiIcon(mSlotWifi, state);
|
||||
mIconController.setIconVisibility(mSlotWifi, true);
|
||||
} else {
|
||||
mIconController.setIconVisibility(mSlotWifi, false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCallIndicator(@NonNull IconState statusIcon, int subId) {
|
||||
if (DEBUG) {
|
||||
@@ -257,10 +199,6 @@ public class StatusBarSignalPolicy implements SignalCallback,
|
||||
return;
|
||||
}
|
||||
|
||||
// Visibility of the data type indicator changed
|
||||
boolean typeChanged = indicators.statusType != state.typeId
|
||||
&& (indicators.statusType == 0 || state.typeId == 0);
|
||||
|
||||
state.visible = indicators.statusIcon.visible && !mHideMobile;
|
||||
state.strengthId = indicators.statusIcon.icon;
|
||||
state.typeId = indicators.statusType;
|
||||
@@ -277,15 +215,6 @@ public class StatusBarSignalPolicy implements SignalCallback,
|
||||
}
|
||||
// Always send a copy to maintain value type semantics
|
||||
mIconController.setMobileIcons(mSlotMobile, MobileIconState.copyStates(mMobileStates));
|
||||
|
||||
if (typeChanged) {
|
||||
WifiIconState wifiCopy = mWifiIconState.copy();
|
||||
updateShowWifiSignalSpacer(wifiCopy);
|
||||
if (!Objects.equals(wifiCopy, mWifiIconState)) {
|
||||
updateWifiIconWithState(wifiCopy);
|
||||
mWifiIconState = wifiCopy;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private CallIndicatorIconState getNoCallingState(int subId) {
|
||||
@@ -308,15 +237,6 @@ public class StatusBarSignalPolicy implements SignalCallback,
|
||||
return null;
|
||||
}
|
||||
|
||||
private MobileIconState getFirstMobileState() {
|
||||
if (mMobileStates.size() > 0) {
|
||||
return mMobileStates.get(0);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* It is expected that a call to setSubs will be immediately followed by setMobileDataIndicators
|
||||
* so we don't have to update the icon manager at this point, just remove the old ones
|
||||
@@ -504,60 +424,6 @@ public class StatusBarSignalPolicy implements SignalCallback,
|
||||
}
|
||||
}
|
||||
|
||||
public static class WifiIconState extends SignalIconState{
|
||||
public int resId;
|
||||
public boolean airplaneSpacerVisible;
|
||||
public boolean signalSpacerVisible;
|
||||
public boolean noDefaultNetwork;
|
||||
public boolean noValidatedNetwork;
|
||||
public boolean noNetworksAvailable;
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
// Skipping reference equality bc this should be more of a value type
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
if (!super.equals(o)) {
|
||||
return false;
|
||||
}
|
||||
WifiIconState that = (WifiIconState) o;
|
||||
return resId == that.resId
|
||||
&& airplaneSpacerVisible == that.airplaneSpacerVisible
|
||||
&& signalSpacerVisible == that.signalSpacerVisible
|
||||
&& noDefaultNetwork == that.noDefaultNetwork
|
||||
&& noValidatedNetwork == that.noValidatedNetwork
|
||||
&& noNetworksAvailable == that.noNetworksAvailable;
|
||||
}
|
||||
|
||||
public void copyTo(WifiIconState other) {
|
||||
super.copyTo(other);
|
||||
other.resId = resId;
|
||||
other.airplaneSpacerVisible = airplaneSpacerVisible;
|
||||
other.signalSpacerVisible = signalSpacerVisible;
|
||||
other.noDefaultNetwork = noDefaultNetwork;
|
||||
other.noValidatedNetwork = noValidatedNetwork;
|
||||
other.noNetworksAvailable = noNetworksAvailable;
|
||||
}
|
||||
|
||||
public WifiIconState copy() {
|
||||
WifiIconState newState = new WifiIconState();
|
||||
copyTo(newState);
|
||||
return newState;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(super.hashCode(),
|
||||
resId, airplaneSpacerVisible, signalSpacerVisible, noDefaultNetwork,
|
||||
noValidatedNetwork, noNetworksAvailable);
|
||||
}
|
||||
|
||||
@Override public String toString() {
|
||||
return "WifiIconState(resId=" + resId + ", visible=" + visible + ")";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A little different. This one delegates to SignalDrawable instead of a specific resId
|
||||
*/
|
||||
|
||||
@@ -45,18 +45,6 @@ constructor(
|
||||
fun runNewMobileIconsBackend(): Boolean =
|
||||
featureFlags.isEnabled(Flags.NEW_STATUS_BAR_MOBILE_ICONS_BACKEND) || useNewMobileIcons()
|
||||
|
||||
/** True if we should display the wifi icon using the new status bar data pipeline. */
|
||||
fun useNewWifiIcon(): Boolean = featureFlags.isEnabled(Flags.NEW_STATUS_BAR_WIFI_ICON)
|
||||
|
||||
/**
|
||||
* True if we should run the new wifi icon backend to get the logging.
|
||||
*
|
||||
* Does *not* affect whether we render the wifi icon using the new backend data. See
|
||||
* [useNewWifiIcon] for that.
|
||||
*/
|
||||
fun runNewWifiIconBackend(): Boolean =
|
||||
featureFlags.isEnabled(Flags.NEW_STATUS_BAR_WIFI_ICON_BACKEND) || useNewWifiIcon()
|
||||
|
||||
/**
|
||||
* Returns true if we should apply some coloring to the icons that were rendered with the new
|
||||
* pipeline to help with debugging.
|
||||
@@ -71,5 +59,5 @@ constructor(
|
||||
* @return true if this icon is controlled by any of the status bar pipeline flags
|
||||
*/
|
||||
fun isIconControlledByFlags(slotName: String): Boolean =
|
||||
slotName == wifiSlot && useNewWifiIcon() || slotName == mobileSlot && useNewMobileIcons()
|
||||
slotName == wifiSlot || (slotName == mobileSlot && useNewMobileIcons())
|
||||
}
|
||||
|
||||
@@ -101,12 +101,7 @@ open class ModernStatusBarView(context: Context, attrs: AttributeSet?) :
|
||||
this.binding = bindingCreator.invoke()
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a [StatusBarIconView] that is always in DOT mode and adds it to this view.
|
||||
*
|
||||
* Mostly duplicated from [com.android.systemui.statusbar.StatusBarWifiView] and
|
||||
* [com.android.systemui.statusbar.StatusBarMobileView].
|
||||
*/
|
||||
/** Creates a [StatusBarIconView] that is always in DOT mode and adds it to this view. */
|
||||
private fun initDotView() {
|
||||
// TODO(b/238425913): Could we just have this dot view be part of the layout with a dot
|
||||
// drawable so we don't need to inflate it manually? Would that not work with animations?
|
||||
|
||||
@@ -68,12 +68,7 @@ constructor(
|
||||
launch {
|
||||
locationViewModel.wifiIcon.collect { wifiIcon ->
|
||||
// Only notify the icon controller if we want to *render* the new icon.
|
||||
// Note that this flow may still run if
|
||||
// [statusBarPipelineFlags.runNewWifiIconBackend] is true because we may
|
||||
// want to get the logging data without rendering.
|
||||
if (
|
||||
wifiIcon is WifiIcon.Visible && statusBarPipelineFlags.useNewWifiIcon()
|
||||
) {
|
||||
if (wifiIcon is WifiIcon.Visible) {
|
||||
iconController.setNewWifiIcon()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,9 +33,8 @@ import android.provider.Settings;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.flags.FakeFeatureFlags;
|
||||
import com.android.systemui.flags.Flags;
|
||||
import com.android.systemui.settings.UserTracker;
|
||||
import com.android.systemui.statusbar.phone.StatusBarLocation;
|
||||
import com.android.systemui.statusbar.policy.BatteryController;
|
||||
@@ -62,7 +61,6 @@ public class BatteryMeterViewControllerTest extends SysuiTestCase {
|
||||
private Handler mHandler;
|
||||
@Mock
|
||||
private ContentResolver mContentResolver;
|
||||
private FakeFeatureFlags mFeatureFlags;
|
||||
@Mock
|
||||
private BatteryController mBatteryController;
|
||||
|
||||
@@ -75,8 +73,8 @@ public class BatteryMeterViewControllerTest extends SysuiTestCase {
|
||||
when(mBatteryMeterView.getContext()).thenReturn(mContext);
|
||||
when(mBatteryMeterView.getResources()).thenReturn(mContext.getResources());
|
||||
|
||||
mFeatureFlags = new FakeFeatureFlags();
|
||||
mFeatureFlags.set(Flags.BATTERY_SHIELD_ICON, false);
|
||||
mContext.getOrCreateTestableResources().addOverride(
|
||||
R.bool.flag_battery_shield_icon, false);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -135,7 +133,8 @@ public class BatteryMeterViewControllerTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void shieldFlagDisabled_viewNotified() {
|
||||
mFeatureFlags.set(Flags.BATTERY_SHIELD_ICON, false);
|
||||
mContext.getOrCreateTestableResources().addOverride(
|
||||
R.bool.flag_battery_shield_icon, false);
|
||||
|
||||
initController();
|
||||
|
||||
@@ -144,7 +143,8 @@ public class BatteryMeterViewControllerTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void shieldFlagEnabled_viewNotified() {
|
||||
mFeatureFlags.set(Flags.BATTERY_SHIELD_ICON, true);
|
||||
mContext.getOrCreateTestableResources().addOverride(
|
||||
R.bool.flag_battery_shield_icon, true);
|
||||
|
||||
initController();
|
||||
|
||||
@@ -160,7 +160,6 @@ public class BatteryMeterViewControllerTest extends SysuiTestCase {
|
||||
mTunerService,
|
||||
mHandler,
|
||||
mContentResolver,
|
||||
mFeatureFlags,
|
||||
mBatteryController
|
||||
);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@ package com.android.systemui.statusbar.phone;
|
||||
|
||||
import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_ICON;
|
||||
import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_MOBILE;
|
||||
import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_WIFI;
|
||||
|
||||
import static junit.framework.Assert.assertTrue;
|
||||
|
||||
@@ -41,13 +40,11 @@ import com.android.systemui.plugins.DarkIconDispatcher;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.StatusBarIconView;
|
||||
import com.android.systemui.statusbar.StatusBarMobileView;
|
||||
import com.android.systemui.statusbar.StatusBarWifiView;
|
||||
import com.android.systemui.statusbar.StatusIconDisplayable;
|
||||
import com.android.systemui.statusbar.connectivity.ui.MobileContextProvider;
|
||||
import com.android.systemui.statusbar.phone.StatusBarIconController.DarkIconManager;
|
||||
import com.android.systemui.statusbar.phone.StatusBarIconController.IconManager;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.MobileIconState;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.WifiIconState;
|
||||
import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags;
|
||||
import com.android.systemui.statusbar.pipeline.mobile.ui.MobileUiAdapter;
|
||||
import com.android.systemui.statusbar.pipeline.wifi.ui.WifiUiAdapter;
|
||||
@@ -156,13 +153,9 @@ public class StatusBarIconControllerTest extends LeakCheckedTest {
|
||||
assertTrue("Expected StatusBarIconView",
|
||||
(manager.getViewAt(0) instanceof StatusBarIconView));
|
||||
|
||||
holder = holderForType(TYPE_WIFI);
|
||||
manager.onIconAdded(1, "test_wifi", false, holder);
|
||||
assertTrue(manager.getViewAt(1) instanceof StatusBarWifiView);
|
||||
|
||||
holder = holderForType(TYPE_MOBILE);
|
||||
manager.onIconAdded(2, "test_mobile", false, holder);
|
||||
assertTrue(manager.getViewAt(2) instanceof StatusBarMobileView);
|
||||
manager.onIconAdded(1, "test_mobile", false, holder);
|
||||
assertTrue(manager.getViewAt(1) instanceof StatusBarMobileView);
|
||||
}
|
||||
|
||||
private StatusBarIconHolder holderForType(int type) {
|
||||
@@ -170,9 +163,6 @@ public class StatusBarIconControllerTest extends LeakCheckedTest {
|
||||
case TYPE_MOBILE:
|
||||
return StatusBarIconHolder.fromMobileIconState(mock(MobileIconState.class));
|
||||
|
||||
case TYPE_WIFI:
|
||||
return StatusBarIconHolder.fromWifiIconState(mock(WifiIconState.class));
|
||||
|
||||
case TYPE_ICON:
|
||||
default:
|
||||
return StatusBarIconHolder.fromIcon(mock(StatusBarIcon.class));
|
||||
@@ -213,13 +203,6 @@ public class StatusBarIconControllerTest extends LeakCheckedTest {
|
||||
return mock;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected StatusBarWifiView addWifiIcon(int index, String slot, WifiIconState state) {
|
||||
StatusBarWifiView mock = mock(StatusBarWifiView.class);
|
||||
mGroup.addView(mock, index);
|
||||
return mock;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected StatusBarMobileView addMobileIcon(int index, String slot, MobileIconState state) {
|
||||
StatusBarMobileView mock = mock(StatusBarMobileView.class);
|
||||
@@ -253,13 +236,6 @@ public class StatusBarIconControllerTest extends LeakCheckedTest {
|
||||
return mock;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected StatusBarWifiView addWifiIcon(int index, String slot, WifiIconState state) {
|
||||
StatusBarWifiView mock = mock(StatusBarWifiView.class);
|
||||
mGroup.addView(mock, index);
|
||||
return mock;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected StatusBarMobileView addMobileIcon(int index, String slot, MobileIconState state) {
|
||||
StatusBarMobileView mock = mock(StatusBarMobileView.class);
|
||||
|
||||
@@ -21,7 +21,6 @@ import com.android.systemui.statusbar.phone.StatusBarIconController;
|
||||
import com.android.systemui.statusbar.phone.StatusBarIconController.IconManager;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.CallIndicatorIconState;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.MobileIconState;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.WifiIconState;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -61,10 +60,6 @@ public class FakeStatusBarIconController extends BaseLeakChecker<IconManager>
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWifiIcon(String slot, WifiIconState state) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNewWifiIcon() {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user