Merge "SystemUI: remove unused code that showed radio status in CryptKeeper mode" into tm-qpr-dev am: f7347b4978

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21059686

Change-Id: I2b34efef454fadc8f31eda22c0a0007909893cdd
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Johannes Gallmann
2023-01-23 16:28:58 +00:00
committed by Automerger Merge Worker
11 changed files with 0 additions and 297 deletions

View File

@@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2016 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.policy.EmergencyCryptkeeperText
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/emergency_cryptkeeper_text"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textAppearance="@style/TextAppearance.StatusBar.Clock"
android:paddingStart="6dp"
android:singleLine="true"
android:ellipsize="marquee"
android:gravity="center_vertical|start"
/>

View File

@@ -149,11 +149,4 @@
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
<ViewStub
android:id="@+id/emergency_cryptkeeper_text"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout="@layout/emergency_cryptkeeper_text"
/>
</com.android.systemui.statusbar.phone.PhoneStatusBarView> </com.android.systemui.statusbar.phone.PhoneStatusBarView>

View File

@@ -47,8 +47,6 @@ public interface NetworkController extends CallbackController<SignalCallback>, D
void addEmergencyListener(EmergencyListener listener); void addEmergencyListener(EmergencyListener listener);
/** */ /** */
void removeEmergencyListener(EmergencyListener listener); void removeEmergencyListener(EmergencyListener listener);
/** */
boolean hasEmergencyCryptKeeperText();
/** */ /** */
boolean isRadioOn(); boolean isRadioOn();

View File

@@ -84,7 +84,6 @@ import com.android.systemui.statusbar.policy.DataSaverController;
import com.android.systemui.statusbar.policy.DataSaverControllerImpl; import com.android.systemui.statusbar.policy.DataSaverControllerImpl;
import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener; import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener;
import com.android.systemui.statusbar.policy.EncryptionHelper;
import com.android.systemui.telephony.TelephonyListenerManager; import com.android.systemui.telephony.TelephonyListenerManager;
import com.android.systemui.util.CarrierConfigTracker; import com.android.systemui.util.CarrierConfigTracker;
@@ -1485,11 +1484,6 @@ public class NetworkControllerImpl extends BroadcastReceiver
return info; return info;
} }
/** */
public boolean hasEmergencyCryptKeeperText() {
return EncryptionHelper.IS_DATA_ENCRYPTED;
}
/** */ /** */
public boolean isRadioOn() { public boolean isRadioOn() {
return !mAirplaneMode; return !mAirplaneMode;

View File

@@ -46,7 +46,6 @@ import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.NotificationShelf; import com.android.systemui.statusbar.NotificationShelf;
import com.android.systemui.statusbar.NotificationShelfController; import com.android.systemui.statusbar.NotificationShelfController;
import com.android.systemui.statusbar.OperatorNameViewController; import com.android.systemui.statusbar.OperatorNameViewController;
import com.android.systemui.statusbar.connectivity.NetworkController;
import com.android.systemui.statusbar.core.StatusBarInitializer.OnStatusBarViewInitializedListener; import com.android.systemui.statusbar.core.StatusBarInitializer.OnStatusBarViewInitializedListener;
import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
import com.android.systemui.statusbar.notification.row.dagger.NotificationShelfComponent; import com.android.systemui.statusbar.notification.row.dagger.NotificationShelfComponent;
@@ -293,7 +292,6 @@ public abstract class StatusBarViewModule {
StatusBarHideIconsForBouncerManager statusBarHideIconsForBouncerManager, StatusBarHideIconsForBouncerManager statusBarHideIconsForBouncerManager,
KeyguardStateController keyguardStateController, KeyguardStateController keyguardStateController,
NotificationPanelViewController notificationPanelViewController, NotificationPanelViewController notificationPanelViewController,
NetworkController networkController,
StatusBarStateController statusBarStateController, StatusBarStateController statusBarStateController,
CommandQueue commandQueue, CommandQueue commandQueue,
CarrierConfigTracker carrierConfigTracker, CarrierConfigTracker carrierConfigTracker,
@@ -315,7 +313,6 @@ public abstract class StatusBarViewModule {
statusBarHideIconsForBouncerManager, statusBarHideIconsForBouncerManager,
keyguardStateController, keyguardStateController,
notificationPanelViewController, notificationPanelViewController,
networkController,
statusBarStateController, statusBarStateController,
commandQueue, commandQueue,
carrierConfigTracker, carrierConfigTracker,

View File

@@ -24,7 +24,6 @@ import static com.android.systemui.statusbar.events.SystemStatusAnimationSchedul
import static com.android.systemui.statusbar.events.SystemStatusAnimationSchedulerKt.SHOWING_PERSISTENT_DOT; import static com.android.systemui.statusbar.events.SystemStatusAnimationSchedulerKt.SHOWING_PERSISTENT_DOT;
import android.animation.Animator; import android.animation.Animator;
import android.annotation.NonNull;
import android.annotation.Nullable; import android.annotation.Nullable;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Fragment; import android.app.Fragment;
@@ -59,9 +58,6 @@ import com.android.systemui.statusbar.DisableFlagsLogger.DisableState;
import com.android.systemui.statusbar.OperatorNameView; import com.android.systemui.statusbar.OperatorNameView;
import com.android.systemui.statusbar.OperatorNameViewController; import com.android.systemui.statusbar.OperatorNameViewController;
import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.connectivity.IconState;
import com.android.systemui.statusbar.connectivity.NetworkController;
import com.android.systemui.statusbar.connectivity.SignalCallback;
import com.android.systemui.statusbar.events.SystemStatusAnimationCallback; import com.android.systemui.statusbar.events.SystemStatusAnimationCallback;
import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
import com.android.systemui.statusbar.phone.NotificationIconAreaController; import com.android.systemui.statusbar.phone.NotificationIconAreaController;
@@ -75,7 +71,6 @@ import com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentCom
import com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentComponent.Startable; import com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentComponent.Startable;
import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController; import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController;
import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallListener; import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallListener;
import com.android.systemui.statusbar.policy.EncryptionHelper;
import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.CarrierConfigTracker; import com.android.systemui.util.CarrierConfigTracker;
import com.android.systemui.util.CarrierConfigTracker.CarrierConfigChangedListener; import com.android.systemui.util.CarrierConfigTracker.CarrierConfigChangedListener;
@@ -110,7 +105,6 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
private final StatusBarStateController mStatusBarStateController; private final StatusBarStateController mStatusBarStateController;
private final KeyguardStateController mKeyguardStateController; private final KeyguardStateController mKeyguardStateController;
private final NotificationPanelViewController mNotificationPanelViewController; private final NotificationPanelViewController mNotificationPanelViewController;
private final NetworkController mNetworkController;
private LinearLayout mEndSideContent; private LinearLayout mEndSideContent;
private View mClockView; private View mClockView;
private View mOngoingCallChip; private View mOngoingCallChip;
@@ -139,13 +133,6 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
private List<String> mBlockedIcons = new ArrayList<>(); private List<String> mBlockedIcons = new ArrayList<>();
private Map<Startable, Startable.State> mStartableStates = new ArrayMap<>(); private Map<Startable, Startable.State> mStartableStates = new ArrayMap<>();
private SignalCallback mSignalCallback = new SignalCallback() {
@Override
public void setIsAirplaneMode(@NonNull IconState icon) {
mCommandQueue.recomputeDisableFlags(getContext().getDisplayId(), true /* animate */);
}
};
private final OngoingCallListener mOngoingCallListener = new OngoingCallListener() { private final OngoingCallListener mOngoingCallListener = new OngoingCallListener() {
@Override @Override
public void onOngoingCallStateChanged(boolean animate) { public void onOngoingCallStateChanged(boolean animate) {
@@ -191,7 +178,6 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
StatusBarHideIconsForBouncerManager statusBarHideIconsForBouncerManager, StatusBarHideIconsForBouncerManager statusBarHideIconsForBouncerManager,
KeyguardStateController keyguardStateController, KeyguardStateController keyguardStateController,
NotificationPanelViewController notificationPanelViewController, NotificationPanelViewController notificationPanelViewController,
NetworkController networkController,
StatusBarStateController statusBarStateController, StatusBarStateController statusBarStateController,
CommandQueue commandQueue, CommandQueue commandQueue,
CarrierConfigTracker carrierConfigTracker, CarrierConfigTracker carrierConfigTracker,
@@ -213,7 +199,6 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
mDarkIconManagerFactory = darkIconManagerFactory; mDarkIconManagerFactory = darkIconManagerFactory;
mKeyguardStateController = keyguardStateController; mKeyguardStateController = keyguardStateController;
mNotificationPanelViewController = notificationPanelViewController; mNotificationPanelViewController = notificationPanelViewController;
mNetworkController = networkController;
mStatusBarStateController = statusBarStateController; mStatusBarStateController = statusBarStateController;
mCommandQueue = commandQueue; mCommandQueue = commandQueue;
mCarrierConfigTracker = carrierConfigTracker; mCarrierConfigTracker = carrierConfigTracker;
@@ -261,7 +246,6 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
mOngoingCallChip = mStatusBar.findViewById(R.id.ongoing_call_chip); mOngoingCallChip = mStatusBar.findViewById(R.id.ongoing_call_chip);
showEndSideContent(false); showEndSideContent(false);
showClock(false); showClock(false);
initEmergencyCryptkeeperText();
initOperatorName(); initOperatorName();
initNotificationIconArea(); initNotificationIconArea();
mSystemEventAnimator = mSystemEventAnimator =
@@ -340,9 +324,6 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
public void onDestroyView() { public void onDestroyView() {
super.onDestroyView(); super.onDestroyView();
mStatusBarIconController.removeIconGroup(mDarkIconManager); mStatusBarIconController.removeIconGroup(mDarkIconManager);
if (mNetworkController.hasEmergencyCryptKeeperText()) {
mNetworkController.removeCallback(mSignalCallback);
}
mCarrierConfigTracker.removeCallback(mCarrierConfigCallback); mCarrierConfigTracker.removeCallback(mCarrierConfigCallback);
mCarrierConfigTracker.removeDataSubscriptionChangedListener(mDefaultDataListener); mCarrierConfigTracker.removeDataSubscriptionChangedListener(mDefaultDataListener);
@@ -444,15 +425,6 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
state |= DISABLE_CLOCK; state |= DISABLE_CLOCK;
} }
if (mNetworkController != null && EncryptionHelper.IS_DATA_ENCRYPTED) {
if (mNetworkController.hasEmergencyCryptKeeperText()) {
state |= DISABLE_NOTIFICATION_ICONS;
}
if (!mNetworkController.isRadioOn()) {
state |= DISABLE_SYSTEM_INFO;
}
}
if (mOngoingCallController.hasOngoingCall()) { if (mOngoingCallController.hasOngoingCall()) {
state &= ~DISABLE_ONGOING_CALL_CHIP; state &= ~DISABLE_ONGOING_CALL_CHIP;
} else { } else {
@@ -620,19 +592,6 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
} }
} }
private void initEmergencyCryptkeeperText() {
View emergencyViewStub = mStatusBar.findViewById(R.id.emergency_cryptkeeper_text);
if (mNetworkController.hasEmergencyCryptKeeperText()) {
if (emergencyViewStub != null) {
((ViewStub) emergencyViewStub).inflate();
}
mNetworkController.addCallback(mSignalCallback);
} else if (emergencyViewStub != null) {
ViewGroup parent = (ViewGroup) emergencyViewStub.getParent();
parent.removeView(emergencyViewStub);
}
}
private void initOperatorName() { private void initOperatorName() {
int subId = SubscriptionManager.getDefaultDataSubscriptionId(); int subId = SubscriptionManager.getDefaultDataSubscriptionId();
if (mCarrierConfigTracker.getShowOperatorNameInStatusBarConfig(subId)) { if (mCarrierConfigTracker.getShowOperatorNameInStatusBarConfig(subId)) {

View File

@@ -1,147 +0,0 @@
/*
* Copyright (C) 2016 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.annotation.Nullable;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.provider.Settings;
import android.telephony.SubscriptionInfo;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.widget.TextView;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.systemui.Dependency;
import java.util.List;
public class EmergencyCryptkeeperText extends TextView {
private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
private final KeyguardUpdateMonitorCallback mCallback = new KeyguardUpdateMonitorCallback() {
@Override
public void onPhoneStateChanged(int phoneState) {
update();
}
@Override
public void onRefreshCarrierInfo() {
update();
}
};
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(intent.getAction())) {
update();
}
}
};
public EmergencyCryptkeeperText(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
setVisibility(GONE);
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
mKeyguardUpdateMonitor = Dependency.get(KeyguardUpdateMonitor.class);
mKeyguardUpdateMonitor.registerCallback(mCallback);
getContext().registerReceiver(mReceiver,
new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED));
update();
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
if (mKeyguardUpdateMonitor != null) {
mKeyguardUpdateMonitor.removeCallback(mCallback);
}
getContext().unregisterReceiver(mReceiver);
}
private boolean iccCardExist(int simState) {
return ((simState == TelephonyManager.SIM_STATE_PIN_REQUIRED)
|| (simState == TelephonyManager.SIM_STATE_PUK_REQUIRED)
|| (simState == TelephonyManager.SIM_STATE_NETWORK_LOCKED)
|| (simState == TelephonyManager.SIM_STATE_READY)
|| (simState == TelephonyManager.SIM_STATE_NOT_READY)
|| (simState == TelephonyManager.SIM_STATE_PERM_DISABLED)
|| (simState == TelephonyManager.SIM_STATE_CARD_IO_ERROR)
|| (simState == TelephonyManager.SIM_STATE_CARD_RESTRICTED)
|| (simState == TelephonyManager.SIM_STATE_LOADED));
}
public void update() {
boolean hasMobile = mContext.getSystemService(TelephonyManager.class).isDataCapable();
boolean airplaneMode = (Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.AIRPLANE_MODE_ON, 0) == 1);
if (!hasMobile || airplaneMode) {
setText(null);
setVisibility(GONE);
return;
}
boolean allSimsMissing = true;
CharSequence displayText = null;
List<SubscriptionInfo> subs = mKeyguardUpdateMonitor.getFilteredSubscriptionInfo();
final int N = subs.size();
for (int i = 0; i < N; i++) {
int subId = subs.get(i).getSubscriptionId();
int simState = mKeyguardUpdateMonitor.getSimState(subId);
CharSequence carrierName = subs.get(i).getCarrierName();
if (iccCardExist(simState) && !TextUtils.isEmpty(carrierName)) {
allSimsMissing = false;
displayText = carrierName;
}
}
if (allSimsMissing) {
if (N != 0) {
// Shows "Emergency calls only" on devices that are voice-capable.
// This depends on mPlmn containing the text "Emergency calls only" when the radio
// has some connectivity. Otherwise it should show "No service"
// Grab the first subscription, because they all should contain the emergency text,
// described above.
displayText = subs.get(0).getCarrierName();
} else {
// We don't have a SubscriptionInfo to get the emergency calls only from.
// Grab it from the old sticky broadcast if possible instead. We can use it
// here because no subscriptions are active, so we don't have
// to worry about MSIM clashing.
displayText = getContext().getText(
com.android.internal.R.string.emergency_calls_only);
Intent i = getContext().registerReceiver(null,
new IntentFilter(TelephonyManager.ACTION_SERVICE_PROVIDERS_UPDATED));
if (i != null) {
displayText = i.getStringExtra(TelephonyManager.EXTRA_PLMN);
}
}
}
setText(displayText);
setVisibility(TextUtils.isEmpty(displayText) ? GONE : VISIBLE);
}
}

View File

@@ -1,32 +0,0 @@
/*
* Copyright (C) 2016 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.sysprop.VoldProperties;
/**
* Helper for determining whether the phone is decrypted yet.
*/
public class EncryptionHelper {
public static final boolean IS_DATA_ENCRYPTED = isDataEncrypted();
private static boolean isDataEncrypted() {
String voldState = VoldProperties.decrypt().orElse("");
return "1".equals(voldState) || "trigger_restart_min_framework".equals(voldState);
}
}

View File

@@ -58,7 +58,6 @@ import com.android.systemui.shade.ShadeExpansionStateManager;
import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.DisableFlagsLogger; import com.android.systemui.statusbar.DisableFlagsLogger;
import com.android.systemui.statusbar.OperatorNameViewController; import com.android.systemui.statusbar.OperatorNameViewController;
import com.android.systemui.statusbar.connectivity.NetworkController;
import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
import com.android.systemui.statusbar.phone.HeadsUpAppearanceController; import com.android.systemui.statusbar.phone.HeadsUpAppearanceController;
import com.android.systemui.statusbar.phone.NotificationIconAreaController; import com.android.systemui.statusbar.phone.NotificationIconAreaController;
@@ -92,7 +91,6 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest {
private StatusBarLocationPublisher mLocationPublisher; private StatusBarLocationPublisher mLocationPublisher;
// Set in instantiate() // Set in instantiate()
private StatusBarIconController mStatusBarIconController; private StatusBarIconController mStatusBarIconController;
private NetworkController mNetworkController;
private KeyguardStateController mKeyguardStateController; private KeyguardStateController mKeyguardStateController;
private final CommandQueue mCommandQueue = mock(CommandQueue.class); private final CommandQueue mCommandQueue = mock(CommandQueue.class);
@@ -424,7 +422,6 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest {
mAnimationScheduler = mock(SystemStatusAnimationScheduler.class); mAnimationScheduler = mock(SystemStatusAnimationScheduler.class);
mLocationPublisher = mock(StatusBarLocationPublisher.class); mLocationPublisher = mock(StatusBarLocationPublisher.class);
mStatusBarIconController = mock(StatusBarIconController.class); mStatusBarIconController = mock(StatusBarIconController.class);
mNetworkController = mock(NetworkController.class);
mStatusBarStateController = mock(StatusBarStateController.class); mStatusBarStateController = mock(StatusBarStateController.class);
mKeyguardStateController = mock(KeyguardStateController.class); mKeyguardStateController = mock(KeyguardStateController.class);
mOperatorNameViewController = mock(OperatorNameViewController.class); mOperatorNameViewController = mock(OperatorNameViewController.class);
@@ -448,7 +445,6 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest {
mStatusBarHideIconsForBouncerManager, mStatusBarHideIconsForBouncerManager,
mKeyguardStateController, mKeyguardStateController,
mNotificationPanelViewController, mNotificationPanelViewController,
mNetworkController,
mStatusBarStateController, mStatusBarStateController,
mCommandQueue, mCommandQueue,
mCarrierConfigTracker, mCarrierConfigTracker,

View File

@@ -45,11 +45,6 @@ public class FakeNetworkController extends BaseLeakChecker<SignalCallback>
mEmergencyChecker.removeCallback(listener); mEmergencyChecker.removeCallback(listener);
} }
@Override
public boolean hasEmergencyCryptKeeperText() {
return false;
}
@Override @Override
public boolean isRadioOn() { public boolean isRadioOn() {
return false; return false;

View File

@@ -334,17 +334,6 @@
column="9"/> column="9"/>
</issue> </issue>
<issue
id="Deprecated"
message="`android:singleLine` is deprecated: Use `maxLines=&quot;1&quot;` instead"
errorLine1=" android:singleLine=&quot;true&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/layout/emergency_cryptkeeper_text.xml"
line="25"
column="9"/>
</issue>
<issue <issue
id="Deprecated" id="Deprecated"
message="`android:singleLine` is deprecated: Use `maxLines=&quot;1&quot;` instead" message="`android:singleLine` is deprecated: Use `maxLines=&quot;1&quot;` instead"
@@ -88991,17 +88980,6 @@
column="9"/> column="9"/>
</issue> </issue>
<issue
id="RtlSymmetry"
message="When you define `paddingStart` you should probably also define `paddingEnd` for right-to-left symmetry"
errorLine1=" android:paddingStart=&quot;6dp&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
<location
file="res/layout/emergency_cryptkeeper_text.xml"
line="24"
column="9"/>
</issue>
<issue <issue
id="RtlSymmetry" id="RtlSymmetry"
message="When you define `paddingStart` you should probably also define `paddingEnd` for right-to-left symmetry" message="When you define `paddingStart` you should probably also define `paddingEnd` for right-to-left symmetry"