Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d5b877b authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 6305839 from bbe9528f to rvc-release

Change-Id: Icee570a0d90c9780d1a438666e4c59657e4614ce
parents a2380ed4 bbe9528f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1503,6 +1503,8 @@ public class IccSmsInterfaceManager {
    }

    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        pw.println("Enabled GSM channels: " + mCellBroadcastRangeManager);
        pw.println("Enabled CDMA channels: " + mCdmaBroadcastRangeManager);
        pw.println("CellBroadcast log:");
        mCellBroadcastLocalLog.dump(fd, pw, args);
        pw.println("SMS dispatcher controller log:");
+11 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.compat.annotation.UnsupportedAppUsage;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.stream.Collectors;

/**
 * Clients can enable reception of SMS-CB messages for specific ranges of
@@ -141,8 +142,12 @@ public abstract class IntRangeManager {
            }
            mClients.add(range);    // append to end of list
        }
    }

        @Override
        public String toString() {
            return "[" + mStartId + "-" + mEndId + "]";
        }
    }
    /**
     * The message id range for a single client.
     */
@@ -669,4 +674,9 @@ public abstract class IntRangeManager {
     * @return true if successful, false otherwise
     */
    protected abstract boolean finishUpdate();

    @Override
    public String toString() {
        return mRanges.stream().map(IntRange::toString).collect(Collectors.joining(","));
    }
}
+6 −8
Original line number Diff line number Diff line
@@ -2046,18 +2046,16 @@ public class ServiceStateTracker extends Handler {
            }
        }

        int newNrState = regInfo.getNrState();
        int oldNrState = regInfo.getNrState();
        int newNrState = oldNrState;
        if (hasNrSecondaryServingCell) {
            if (regInfo.getNrState() == NetworkRegistrationInfo.NR_STATE_NOT_RESTRICTED) {
            newNrState = NetworkRegistrationInfo.NR_STATE_CONNECTED;
            }
        } else {
            if (regInfo.getNrState() == NetworkRegistrationInfo.NR_STATE_CONNECTED) {
                newNrState = NetworkRegistrationInfo.NR_STATE_NOT_RESTRICTED;
            }
            regInfo.updateNrState();
            newNrState = regInfo.getNrState();
        }

        boolean hasChanged = newNrState != regInfo.getNrState();
        boolean hasChanged = newNrState != oldNrState;
        regInfo.setNrState(newNrState);
        ss.addNetworkRegistrationInfo(regInfo);
        return hasChanged;
+36 −26
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.os.Binder;
import android.service.carrier.CarrierMessagingService;
import android.util.Log;

import com.android.internal.annotations.VisibleForTesting;
import com.android.telephony.Rlog;

/**
@@ -138,21 +139,11 @@ public class SmsPermissions {
     */
    public boolean checkCallingOrSelfCanGetSmscAddress(String callingPackage, String message) {
        // Allow it to the default SMS app always.
        if (!isDefaultSmsPackage(callingPackage)) {
            try {
                // Allow it with READ_PRIVILEGED_PHONE_STATE or Carrier Privileges
        if (!isCallerDefaultSmsPackage(callingPackage)) {
            TelephonyPermissions
                        .enforeceCallingOrSelfReadPrivilegedPhoneStatePermissionOrCarrierPrivilege(
                                mContext, mPhone.getSubId(), message);
            } catch (SecurityException e) { // To avoid crashing applications
                loge(message + ": Neither " + callingPackage + " is the default SMS app"
                        + " nor the caller has "
                        + android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE
                        + ", or carrier privileges", e);
                return false;
            }
        }

        return true;
    }

@@ -167,26 +158,45 @@ public class SmsPermissions {
     */
    public boolean checkCallingOrSelfCanSetSmscAddress(String callingPackage, String message) {
        // Allow it to the default SMS app always.
        if (!isDefaultSmsPackage(callingPackage)) {
            try {
        if (!isCallerDefaultSmsPackage(callingPackage)) {
            // Allow it with MODIFY_PHONE_STATE or Carrier Privileges
            TelephonyPermissions.enforceCallingOrSelfModifyPermissionOrCarrierPrivilege(
                    mContext, mPhone.getSubId(), message);
            } catch (SecurityException e) { // To avoid crashing applications
                loge(message + ": Neither " + callingPackage + " is the default SMS app"
                        + " nor the caller has " + android.Manifest.permission.MODIFY_PHONE_STATE
                        + ", or carrier privileges", e);
                return false;
            }
        }

        return true;
    }

    /** Check if a package is default SMS app. */
    public boolean isDefaultSmsPackage(String packageName) {
    @VisibleForTesting
    public boolean isCallerDefaultSmsPackage(String packageName) {
        if (packageNameMatchesCallingUid(packageName)) {
            return SmsApplication.isDefaultSmsApplication(mContext, packageName);
        }
        return false;
    }

    /**
     * Check if the passed in packageName belongs to the calling uid.
     * @param packageName name of the package to check
     * @return true if package belongs to calling uid, false otherwise
     */
    @VisibleForTesting
    public boolean packageNameMatchesCallingUid(String packageName) {
        try {
            if (Binder.getCallingUid()
                    != mContext.getPackageManager().getPackageUid(packageName, 0)) {
                Log.e(LOG_TAG, "packageNameMatchesCallingUid: " + packageName + " uid "
                        + mContext.getPackageManager().getPackageUid(packageName, 0)
                        + " does not match calling uid " + Binder.getCallingUid());
                return false;
            }
        } catch (PackageManager.NameNotFoundException ex) {
            Log.e(LOG_TAG, "packageNameMatchesCallingUid: packageName " + packageName
                    + " not found");
            return false;
        }
        return true;
    }

    @UnsupportedAppUsage
    protected void log(String msg) {
+13 −14
Original line number Diff line number Diff line
@@ -34,8 +34,7 @@ import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.net.NetworkRequest;
import android.net.NetworkStats;
import android.net.netstats.provider.AbstractNetworkStatsProvider;
import android.net.netstats.provider.NetworkStatsProviderCallback;
import android.net.netstats.provider.NetworkStatsProvider;
import android.os.AsyncResult;
import android.os.Bundle;
import android.os.Handler;
@@ -282,16 +281,16 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
    }

    /**
     * A class implementing {@link AbstractNetworkStatsProvider} to report VT data usage to system.
     * A class implementing {@link NetworkStatsProvider} to report VT data usage to system.
     */
    // TODO: Directly reports diff in updateVtDataUsage.
    @VisibleForTesting(visibility = PRIVATE)
    public class VtDataUsageProvider extends AbstractNetworkStatsProvider {
    public class VtDataUsageProvider extends NetworkStatsProvider {
        private int mToken = 0;
        private NetworkStats mIfaceSnapshot = new NetworkStats(0L, 0);
        private NetworkStats mUidSnapshot = new NetworkStats(0L, 0);
        @Override
        public void requestStatsUpdate(int token) {
        public void onRequestStatsUpdate(int token) {
            // If there is an ongoing VT call, request the latest VT usage from the modem. The
            // latest usage will return asynchronously so it won't be counted in this round, but it
            // will be eventually counted when next requestStatsUpdate is called.
@@ -306,19 +305,19 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {

            final NetworkStats ifaceDiff = mVtDataUsageSnapshot.subtract(mIfaceSnapshot);
            final NetworkStats uidDiff = mVtDataUsageUidSnapshot.subtract(mUidSnapshot);
            mVtDataUsageProviderCb.onStatsUpdated(mToken, ifaceDiff, uidDiff);
            mVtDataUsageProvider.notifyStatsUpdated(mToken, ifaceDiff, uidDiff);
            mIfaceSnapshot = mIfaceSnapshot.add(ifaceDiff);
            mUidSnapshot = mUidSnapshot.add(uidDiff);
            mToken = token;
        }

        @Override
        public void setLimit(String iface, long quotaBytes) {
        public void onSetLimit(String iface, long quotaBytes) {
            // No-op
        }

        @Override
        public void setAlert(long quotaBytes) {
        public void onSetAlert(long quotaBytes) {
            // No-op
        }
    }
@@ -458,7 +457,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {

    private volatile NetworkStats mVtDataUsageSnapshot = null;
    private volatile NetworkStats mVtDataUsageUidSnapshot = null;
    private final NetworkStatsProviderCallback mVtDataUsageProviderCb;
    private final VtDataUsageProvider mVtDataUsageProvider = new VtDataUsageProvider();

    private final AtomicInteger mDefaultDialerUid = new AtomicInteger(NetworkStats.UID_ALL);

@@ -896,8 +895,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
        final NetworkStatsManager statsManager =
                (NetworkStatsManager) mPhone.getContext().getSystemService(
                        Context.NETWORK_STATS_SERVICE);
        mVtDataUsageProviderCb = statsManager.registerNetworkStatsProvider(LOG_TAG,
                new VtDataUsageProvider());
        statsManager.registerNetworkStatsProvider(LOG_TAG, mVtDataUsageProvider);

        // Allow the executor to be specified for testing.
        mImsManagerConnector = new FeatureConnector<>(
@@ -1048,9 +1046,10 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
        mPhone.getDefaultPhone().getDataEnabledSettings().unregisterForDataEnabledChanged(this);
        mImsManagerConnector.disconnect();

        if (mVtDataUsageProviderCb != null) {
            mVtDataUsageProviderCb.unregister();
        }
        final NetworkStatsManager statsManager =
                (NetworkStatsManager) mPhone.getContext().getSystemService(
                        Context.NETWORK_STATS_SERVICE);
        statsManager.unregisterNetworkStatsProvider(mVtDataUsageProvider);
    }

    @Override
Loading