From 97f44be5c52ac1053288d607de71477ffad5f68b Mon Sep 17 00:00:00 2001 From: Rafael Higuera Silva Date: Fri, 25 Feb 2022 19:28:29 +0000 Subject: [PATCH] Revert "Adding renounce permissions logic to ipc calls." Revert "Adding tests for renounce permissions ipc calls." Revert "Add getAttributionSource() to mocked context." Revert submission 1982887-renouncePermissions Reason for revert: '@code' in Javadoc is making the build failed. Reverted Changes: I9035b49cf:Add getAttributionSource() to mocked context. Id30f9f0f6:Adding tests for renounce permissions ipc calls. I49d5cc838:Adding renounce permissions logic to ipc calls. Bug: 221456655 Change-Id: Ib59b89e1a0f3717528114342217b657cfd781803 --- .../telephony/TelephonyRegistryManager.java | 10 +-- .../android/telephony/TelephonyManager.java | 86 ++++--------------- 2 files changed, 20 insertions(+), 76 deletions(-) diff --git a/core/java/android/telephony/TelephonyRegistryManager.java b/core/java/android/telephony/TelephonyRegistryManager.java index c1fcd664f6fa1..542de3fad8b0e 100644 --- a/core/java/android/telephony/TelephonyRegistryManager.java +++ b/core/java/android/telephony/TelephonyRegistryManager.java @@ -239,10 +239,8 @@ public class TelephonyRegistryManager { * @param events Events * @param notifyNow Whether to notify instantly */ - public void listenFromListener(int subId, @NonNull boolean renounceFineLocationAccess, - @NonNull boolean renounceCoarseLocationAccess, @NonNull String pkg, - @NonNull String featureId, @NonNull PhoneStateListener listener, - @NonNull int events, boolean notifyNow) { + public void listenFromListener(int subId, @NonNull String pkg, @NonNull String featureId, + @NonNull PhoneStateListener listener, @NonNull int events, boolean notifyNow) { if (listener == null) { throw new IllegalStateException("telephony service is null."); } @@ -259,8 +257,8 @@ public class TelephonyRegistryManager { } else if (listener.mSubId != null) { subId = listener.mSubId; } - sRegistry.listenWithEventList(renounceFineLocationAccess, renounceCoarseLocationAccess, - subId, pkg, featureId, listener.callback, eventsList, notifyNow); + sRegistry.listenWithEventList(false, false, subId, pkg, featureId, + listener.callback, eventsList, notifyNow); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 5edfe7e33f888..aab6daa202795 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -48,7 +48,6 @@ import android.compat.annotation.EnabledAfter; import android.compat.annotation.UnsupportedAppUsage; import android.content.ComponentName; import android.content.Context; -import android.content.ContextParams; import android.content.Intent; import android.database.Cursor; import android.net.ConnectivityManager; @@ -141,7 +140,6 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Objects; -import java.util.Set; import java.util.UUID; import java.util.concurrent.Executor; import java.util.concurrent.RejectedExecutionException; @@ -379,8 +377,16 @@ public class TelephonyManager { @UnsupportedAppUsage public TelephonyManager(Context context, int subId) { mSubId = subId; - mContext = mergeAttributionAndRenouncedPermissions(context.getApplicationContext(), - context); + Context appContext = context.getApplicationContext(); + if (appContext != null) { + if (Objects.equals(context.getAttributionTag(), appContext.getAttributionTag())) { + mContext = appContext; + } else { + mContext = appContext.createAttributionContext(context.getAttributionTag()); + } + } else { + mContext = context; + } mSubscriptionManager = SubscriptionManager.from(mContext); } @@ -401,34 +407,6 @@ public class TelephonyManager { return sInstance; } - // This method takes the Application context and adds the attributionTag - // and renouncedPermissions from the given context. - private Context mergeAttributionAndRenouncedPermissions(Context to, Context from) { - Context contextToReturn = from; - if (to != null) { - if (!Objects.equals(from.getAttributionTag(), to.getAttributionTag())) { - contextToReturn = to.createAttributionContext(from.getAttributionTag()); - } else { - contextToReturn = to; - } - - Set renouncedPermissions = - from.getAttributionSource().getRenouncedPermissions(); - if (!renouncedPermissions.isEmpty()) { - if (to.getParams() != null) { - contextToReturn = contextToReturn.createContext( - new ContextParams.Builder(to.getParams()) - .setRenouncedPermissions(renouncedPermissions).build()); - } else { - contextToReturn = contextToReturn.createContext( - new ContextParams.Builder() - .setRenouncedPermissions(renouncedPermissions).build()); - } - } - } - return contextToReturn; - } - private String getOpPackageName() { // For legacy reasons the TelephonyManager has API for getting // a static instance with no context set preventing us from @@ -459,16 +437,6 @@ public class TelephonyManager { return null; } - private Set getRenouncedPermissions() { - // For legacy reasons the TelephonyManager has API for getting - // a static instance with no context set preventing us from - // getting the attribution source. - if (mContext != null) { - return mContext.getAttributionSource().getRenouncedPermissions(); - } - return Collections.emptySet(); - } - /** * Post a runnable to the BackgroundThread. * @@ -6170,14 +6138,8 @@ public class TelephonyManager { (TelephonyRegistryManager) mContext.getSystemService(Context.TELEPHONY_REGISTRY_SERVICE); if (telephonyRegistry != null) { - Set renouncedPermissions = getRenouncedPermissions(); - boolean renounceFineLocationAccess = renouncedPermissions - .contains(Manifest.permission.ACCESS_FINE_LOCATION); - boolean renounceCoarseLocationAccess = renouncedPermissions - .contains(Manifest.permission.ACCESS_COARSE_LOCATION); - telephonyRegistry.listenFromListener(mSubId, renounceFineLocationAccess, - renounceCoarseLocationAccess, getOpPackageName(), getAttributionTag(), - listener, events, notifyNow); + telephonyRegistry.listenFromListener(mSubId, getOpPackageName(), + getAttributionTag(), listener, events, notifyNow); } else { Rlog.w(TAG, "telephony registry not ready."); } @@ -11656,10 +11618,7 @@ public class TelephonyManager { Manifest.permission.ACCESS_COARSE_LOCATION }) public @Nullable ServiceState getServiceState() { - return getServiceState(getRenouncedPermissions() - .contains(Manifest.permission.ACCESS_FINE_LOCATION), - getRenouncedPermissions() - .contains(Manifest.permission.ACCESS_COARSE_LOCATION)); + return getServiceState(false, false); } /** @@ -11671,11 +11630,6 @@ public class TelephonyManager { * If you want continuous updates of service state info, register a {@link PhoneStateListener} * via {@link #listen} with the {@link PhoneStateListener#LISTEN_SERVICE_STATE} event. * - * There's another way to renounce permissions with a custom context - * {@link AttributionSource.Builder#setRenouncedPermissions(Set)} but only for system - * apps. To avoid confusion, calling this method supersede renouncing permissions with a - * custom context. - * *

Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} * or that the calling app has carrier privileges (see {@link #hasCarrierPrivileges}) * and {@link android.Manifest.permission#ACCESS_COARSE_LOCATION}. @@ -11719,7 +11673,8 @@ public class TelephonyManager { ITelephony service = getITelephony(); if (service != null) { return service.getServiceStateForSubscriber(subId, renounceFineLocationAccess, - renounceCoarseLocationAccess, getOpPackageName(), getAttributionTag()); + renounceCoarseLocationAccess, + getOpPackageName(), getAttributionTag()); } } catch (RemoteException e) { Log.e(TAG, "Error calling ITelephony#getServiceStateForSubscriber", e); @@ -15592,10 +15547,7 @@ public class TelephonyManager { */ public void registerTelephonyCallback(@NonNull @CallbackExecutor Executor executor, @NonNull TelephonyCallback callback) { - registerTelephonyCallback( - getRenouncedPermissions().contains(Manifest.permission.ACCESS_FINE_LOCATION), - getRenouncedPermissions().contains(Manifest.permission.ACCESS_COARSE_LOCATION), - executor, callback); + registerTelephonyCallback(false, false, executor, callback); } /** @@ -15625,12 +15577,6 @@ public class TelephonyManager { * instability. If a process has registered too many callbacks without unregistering them, it * may encounter an {@link IllegalStateException} when trying to register more callbacks. * - *

- * There's another way to renounce permissions with a custom context - * {@link AttributionSource.Builder#setRenouncedPermissions(Set)} but only for system - * apps. To avoid confusion, calling this method supersede renouncing permissions with a - * custom context. - * * @param renounceFineLocationAccess Set this to true if the caller would not like to receive * location related information which will be sent if the caller already possess * {@link android.Manifest.permission#ACCESS_FINE_LOCATION} and do not renounce the permissions.