Merge "Revert "Adding renounce permissions logic to ipc calls."" am: 702d7d10df am: ef47b4fab2
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2000932 Change-Id: Ie5589018d34fb4001dbd232a021e93759eb45c14
This commit is contained in:
committed by
Automerger Merge Worker
commit
8ac5080f43
@@ -239,10 +239,8 @@ public class TelephonyRegistryManager {
|
|||||||
* @param events Events
|
* @param events Events
|
||||||
* @param notifyNow Whether to notify instantly
|
* @param notifyNow Whether to notify instantly
|
||||||
*/
|
*/
|
||||||
public void listenFromListener(int subId, @NonNull boolean renounceFineLocationAccess,
|
public void listenFromListener(int subId, @NonNull String pkg, @NonNull String featureId,
|
||||||
@NonNull boolean renounceCoarseLocationAccess, @NonNull String pkg,
|
@NonNull PhoneStateListener listener, @NonNull int events, boolean notifyNow) {
|
||||||
@NonNull String featureId, @NonNull PhoneStateListener listener,
|
|
||||||
@NonNull int events, boolean notifyNow) {
|
|
||||||
if (listener == null) {
|
if (listener == null) {
|
||||||
throw new IllegalStateException("telephony service is null.");
|
throw new IllegalStateException("telephony service is null.");
|
||||||
}
|
}
|
||||||
@@ -259,8 +257,8 @@ public class TelephonyRegistryManager {
|
|||||||
} else if (listener.mSubId != null) {
|
} else if (listener.mSubId != null) {
|
||||||
subId = listener.mSubId;
|
subId = listener.mSubId;
|
||||||
}
|
}
|
||||||
sRegistry.listenWithEventList(renounceFineLocationAccess, renounceCoarseLocationAccess,
|
sRegistry.listenWithEventList(false, false, subId, pkg, featureId,
|
||||||
subId, pkg, featureId, listener.callback, eventsList, notifyNow);
|
listener.callback, eventsList, notifyNow);
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
throw e.rethrowFromSystemServer();
|
throw e.rethrowFromSystemServer();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,6 @@ import android.compat.annotation.EnabledAfter;
|
|||||||
import android.compat.annotation.UnsupportedAppUsage;
|
import android.compat.annotation.UnsupportedAppUsage;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.ContextParams;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
@@ -141,7 +140,6 @@ import java.util.List;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
import java.util.concurrent.RejectedExecutionException;
|
import java.util.concurrent.RejectedExecutionException;
|
||||||
@@ -379,8 +377,16 @@ public class TelephonyManager {
|
|||||||
@UnsupportedAppUsage
|
@UnsupportedAppUsage
|
||||||
public TelephonyManager(Context context, int subId) {
|
public TelephonyManager(Context context, int subId) {
|
||||||
mSubId = subId;
|
mSubId = subId;
|
||||||
mContext = mergeAttributionAndRenouncedPermissions(context.getApplicationContext(),
|
Context appContext = context.getApplicationContext();
|
||||||
context);
|
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);
|
mSubscriptionManager = SubscriptionManager.from(mContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -401,34 +407,6 @@ public class TelephonyManager {
|
|||||||
return sInstance;
|
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() {
|
private String getOpPackageName() {
|
||||||
// For legacy reasons the TelephonyManager has API for getting
|
// For legacy reasons the TelephonyManager has API for getting
|
||||||
// a static instance with no context set preventing us from
|
// a static instance with no context set preventing us from
|
||||||
@@ -459,16 +437,6 @@ public class TelephonyManager {
|
|||||||
return null;
|
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.
|
* Post a runnable to the BackgroundThread.
|
||||||
*
|
*
|
||||||
@@ -6170,14 +6138,8 @@ public class TelephonyManager {
|
|||||||
(TelephonyRegistryManager)
|
(TelephonyRegistryManager)
|
||||||
mContext.getSystemService(Context.TELEPHONY_REGISTRY_SERVICE);
|
mContext.getSystemService(Context.TELEPHONY_REGISTRY_SERVICE);
|
||||||
if (telephonyRegistry != null) {
|
if (telephonyRegistry != null) {
|
||||||
Set<String> renouncedPermissions = getRenouncedPermissions();
|
telephonyRegistry.listenFromListener(mSubId, getOpPackageName(),
|
||||||
boolean renounceFineLocationAccess = renouncedPermissions
|
getAttributionTag(), listener, events, notifyNow);
|
||||||
.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);
|
|
||||||
} else {
|
} else {
|
||||||
Rlog.w(TAG, "telephony registry not ready.");
|
Rlog.w(TAG, "telephony registry not ready.");
|
||||||
}
|
}
|
||||||
@@ -11640,10 +11602,7 @@ public class TelephonyManager {
|
|||||||
Manifest.permission.ACCESS_COARSE_LOCATION
|
Manifest.permission.ACCESS_COARSE_LOCATION
|
||||||
})
|
})
|
||||||
public @Nullable ServiceState getServiceState() {
|
public @Nullable ServiceState getServiceState() {
|
||||||
return getServiceState(getRenouncedPermissions()
|
return getServiceState(false, false);
|
||||||
.contains(Manifest.permission.ACCESS_FINE_LOCATION),
|
|
||||||
getRenouncedPermissions()
|
|
||||||
.contains(Manifest.permission.ACCESS_COARSE_LOCATION));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -11655,11 +11614,6 @@ public class TelephonyManager {
|
|||||||
* If you want continuous updates of service state info, register a {@link PhoneStateListener}
|
* If you want continuous updates of service state info, register a {@link PhoneStateListener}
|
||||||
* via {@link #listen} with the {@link PhoneStateListener#LISTEN_SERVICE_STATE} event.
|
* 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}
|
* <p>Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
|
||||||
* or that the calling app has carrier privileges (see {@link #hasCarrierPrivileges})
|
* or that the calling app has carrier privileges (see {@link #hasCarrierPrivileges})
|
||||||
* and {@link android.Manifest.permission#ACCESS_COARSE_LOCATION}.
|
* and {@link android.Manifest.permission#ACCESS_COARSE_LOCATION}.
|
||||||
@@ -11703,7 +11657,8 @@ public class TelephonyManager {
|
|||||||
ITelephony service = getITelephony();
|
ITelephony service = getITelephony();
|
||||||
if (service != null) {
|
if (service != null) {
|
||||||
return service.getServiceStateForSubscriber(subId, renounceFineLocationAccess,
|
return service.getServiceStateForSubscriber(subId, renounceFineLocationAccess,
|
||||||
renounceCoarseLocationAccess, getOpPackageName(), getAttributionTag());
|
renounceCoarseLocationAccess,
|
||||||
|
getOpPackageName(), getAttributionTag());
|
||||||
}
|
}
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Log.e(TAG, "Error calling ITelephony#getServiceStateForSubscriber", e);
|
Log.e(TAG, "Error calling ITelephony#getServiceStateForSubscriber", e);
|
||||||
@@ -15539,10 +15494,7 @@ public class TelephonyManager {
|
|||||||
*/
|
*/
|
||||||
public void registerTelephonyCallback(@NonNull @CallbackExecutor Executor executor,
|
public void registerTelephonyCallback(@NonNull @CallbackExecutor Executor executor,
|
||||||
@NonNull TelephonyCallback callback) {
|
@NonNull TelephonyCallback callback) {
|
||||||
registerTelephonyCallback(
|
registerTelephonyCallback(false, false, executor, callback);
|
||||||
getRenouncedPermissions().contains(Manifest.permission.ACCESS_FINE_LOCATION),
|
|
||||||
getRenouncedPermissions().contains(Manifest.permission.ACCESS_COARSE_LOCATION),
|
|
||||||
executor, callback);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -15572,12 +15524,6 @@ public class TelephonyManager {
|
|||||||
* instability. If a process has registered too many callbacks without unregistering them, it
|
* instability. If a process has registered too many callbacks without unregistering them, it
|
||||||
* may encounter an {@link IllegalStateException} when trying to register more callbacks.
|
* 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
|
* @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
|
* 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.
|
* {@link android.Manifest.permission#ACCESS_FINE_LOCATION} and do not renounce the permissions.
|
||||||
|
|||||||
Reference in New Issue
Block a user