Merge "Redact location info from PhysicalChannelConfig" am: 92f92c7ce0 am: 8dd68b73cc
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1644103 Change-Id: I7c92bd310f0eca7848daa0851be3a0511ef6d04f
This commit is contained in:
@@ -1170,7 +1170,9 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
|
|||||||
TelephonyCallback.EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED)) {
|
TelephonyCallback.EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED)) {
|
||||||
try {
|
try {
|
||||||
r.callback.onPhysicalChannelConfigChanged(
|
r.callback.onPhysicalChannelConfigChanged(
|
||||||
mPhysicalChannelConfigs);
|
shouldSanitizeLocationForPhysicalChannelConfig(r)
|
||||||
|
? getLocationSanitizedConfigs(mPhysicalChannelConfigs)
|
||||||
|
: mPhysicalChannelConfigs);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
remove(r.binder);
|
remove(r.binder);
|
||||||
}
|
}
|
||||||
@@ -2371,8 +2373,10 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<PhysicalChannelConfig> sanitizedConfigs = getLocationSanitizedConfigs(configs);
|
||||||
if (VDBG) {
|
if (VDBG) {
|
||||||
log("notifyPhysicalChannelConfig: subId=" + subId + " configs=" + configs);
|
log("notifyPhysicalChannelConfig: subId=" + subId + " configs=" + configs
|
||||||
|
+ " sanitizedConfigs=" + sanitizedConfigs);
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized (mRecords) {
|
synchronized (mRecords) {
|
||||||
@@ -2385,11 +2389,14 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
|
|||||||
&& idMatch(r.subId, subId, phoneId)) {
|
&& idMatch(r.subId, subId, phoneId)) {
|
||||||
try {
|
try {
|
||||||
if (DBG_LOC) {
|
if (DBG_LOC) {
|
||||||
log("notifyPhysicalChannelConfig: "
|
log("notifyPhysicalChannelConfig: mPhysicalChannelConfigs="
|
||||||
+ "mPhysicalChannelConfigs="
|
+ (shouldSanitizeLocationForPhysicalChannelConfig(r)
|
||||||
+ configs + " r=" + r);
|
? sanitizedConfigs : configs)
|
||||||
|
+ " r=" + r);
|
||||||
}
|
}
|
||||||
r.callback.onPhysicalChannelConfigChanged(configs);
|
r.callback.onPhysicalChannelConfigChanged(
|
||||||
|
shouldSanitizeLocationForPhysicalChannelConfig(r)
|
||||||
|
? sanitizedConfigs : configs);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
mRemoveList.add(r.binder);
|
mRemoveList.add(r.binder);
|
||||||
}
|
}
|
||||||
@@ -2400,6 +2407,25 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean shouldSanitizeLocationForPhysicalChannelConfig(Record record) {
|
||||||
|
// Always redact location info from PhysicalChannelConfig if the registrant is from neither
|
||||||
|
// PHONE nor SYSTEM process. There is no user case that the registrant needs the location
|
||||||
|
// info (e.g. physicalCellId). This also remove the need for the location permissions check.
|
||||||
|
return record.callerUid != Process.PHONE_UID && record.callerUid != Process.SYSTEM_UID;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a copy of the PhysicalChannelConfig list but with location info removed.
|
||||||
|
*/
|
||||||
|
private static List<PhysicalChannelConfig> getLocationSanitizedConfigs(
|
||||||
|
List<PhysicalChannelConfig> configs) {
|
||||||
|
List<PhysicalChannelConfig> sanitizedConfigs = new ArrayList<>(configs.size());
|
||||||
|
for (PhysicalChannelConfig config : configs) {
|
||||||
|
sanitizedConfigs.add(config.createLocationInfoSanitizedCopy());
|
||||||
|
}
|
||||||
|
return sanitizedConfigs;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notify that the data enabled has changed.
|
* Notify that the data enabled has changed.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -291,6 +291,14 @@ public final class PhysicalChannelConfig implements Parcelable {
|
|||||||
return mCellConnectionStatus;
|
return mCellConnectionStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a copy of this PhysicalChannelConfig object but redact all the location info.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public PhysicalChannelConfig createLocationInfoSanitizedCopy() {
|
||||||
|
return new Builder(this).setPhysicalCellId(PHYSICAL_CELL_ID_UNKNOWN).build();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return String representation of the connection status
|
* @return String representation of the connection status
|
||||||
* @hide
|
* @hide
|
||||||
@@ -540,6 +548,23 @@ public final class PhysicalChannelConfig implements Parcelable {
|
|||||||
mBand = BAND_UNKNOWN;
|
mBand = BAND_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builder object constructed from existing PhysicalChannelConfig object.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public Builder(PhysicalChannelConfig config) {
|
||||||
|
mNetworkType = config.getNetworkType();
|
||||||
|
mFrequencyRange = config.getFrequencyRange();
|
||||||
|
mDownlinkChannelNumber = config.getDownlinkChannelNumber();
|
||||||
|
mUplinkChannelNumber = config.getUplinkChannelNumber();
|
||||||
|
mCellBandwidthDownlinkKhz = config.getCellBandwidthDownlinkKhz();
|
||||||
|
mCellBandwidthUplinkKhz = config.getCellBandwidthUplinkKhz();
|
||||||
|
mCellConnectionStatus = config.getConnectionStatus();
|
||||||
|
mContextIds = Arrays.copyOf(config.getContextIds(), config.getContextIds().length);
|
||||||
|
mPhysicalCellId = config.getPhysicalCellId();
|
||||||
|
mBand = config.getBand();
|
||||||
|
}
|
||||||
|
|
||||||
public PhysicalChannelConfig build() {
|
public PhysicalChannelConfig build() {
|
||||||
return new PhysicalChannelConfig(this);
|
return new PhysicalChannelConfig(this);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user