Merge "Revert "Adding renounce permissions logic to ipc calls."" am: 702d7d10df
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2000932 Change-Id: I232e8be0bdca2373ad49f6e03b682bc6cf0e2e87
This commit is contained in:
committed by
Automerger Merge Worker
commit
ef47b4fab2
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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<String> 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<String> 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<String> 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.");
|
||||
}
|
||||
@@ -11640,10 +11602,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);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -11655,11 +11614,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<String>)} but only for system
|
||||
* apps. To avoid confusion, calling this method supersede renouncing permissions with a
|
||||
* custom context.
|
||||
*
|
||||
* <p>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}.
|
||||
@@ -11703,7 +11657,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);
|
||||
@@ -15539,10 +15494,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);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -15572,12 +15524,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.
|
||||
*
|
||||
* <p>
|
||||
* There's another way to renounce permissions with a custom context
|
||||
* {@link AttributionSource.Builder#setRenouncedPermissions(Set<String>)} 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.
|
||||
|
||||
Reference in New Issue
Block a user