Merge "Merge Android 14 QPR3 to AOSP main" into main
This commit is contained in:
commit
bc39ccd33b
5 changed files with 59 additions and 4 deletions
|
|
@ -18,7 +18,7 @@
|
|||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="no_upstream_notification_title" msgid="3584617491053416666">"Konexioa partekatzeko aukerak ez du Interneteko konexiorik"</string>
|
||||
<string name="no_upstream_notification_message" msgid="5626323795587558017">"Ezin dira konektatu gailuak"</string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="868677179945695858">"Desaktibatu konexioa partekatzeko aukera"</string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="868677179945695858">"Desaktibatu konexioa partekatzea"</string>
|
||||
<string name="upstream_roaming_notification_title" msgid="2870229486619751829">"Wifi-gunea edo konexioa partekatzeko aukera aktibatuta dago"</string>
|
||||
<string name="upstream_roaming_notification_message" msgid="5229740963392849544">"Baliteke tarifa gehigarriak ordaindu behar izatea ibiltaritza erabili bitartean"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -1544,7 +1544,11 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||
}
|
||||
|
||||
@Override
|
||||
public INetworkStatsSession openSessionForUsageStats(int flags, String callingPackage) {
|
||||
public INetworkStatsSession openSessionForUsageStats(
|
||||
int flags, @NonNull String callingPackage) {
|
||||
Objects.requireNonNull(callingPackage);
|
||||
PermissionUtils.enforcePackageNameMatchesUid(
|
||||
mContext, Binder.getCallingUid(), callingPackage);
|
||||
return openSessionInternal(flags, callingPackage);
|
||||
}
|
||||
|
||||
|
|
@ -2061,6 +2065,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||
|
||||
final int callingPid = Binder.getCallingPid();
|
||||
final int callingUid = Binder.getCallingUid();
|
||||
PermissionUtils.enforcePackageNameMatchesUid(mContext, callingUid, callingPackage);
|
||||
@NetworkStatsAccess.Level int accessLevel = checkAccessLevel(callingPackage);
|
||||
DataUsageRequest normalizedRequest;
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
<string name="wifi_no_internet_detailed" msgid="1746921096565304090">"Für Optionen tippen"</string>
|
||||
<string name="mobile_no_internet" msgid="4087718456753201450">"Mobiles Netzwerk hat keinen Internetzugriff"</string>
|
||||
<string name="other_networks_no_internet" msgid="5693932964749676542">"Netzwerk hat keinen Internetzugriff"</string>
|
||||
<string name="private_dns_broken_detailed" msgid="2677123850463207823">"Auf den privaten DNS-Server kann nicht zugegriffen werden"</string>
|
||||
<string name="private_dns_broken_detailed" msgid="2677123850463207823">"Auf den Server des privaten DNS kann nicht zugegriffen werden"</string>
|
||||
<string name="network_partial_connectivity" msgid="5549503845834993258">"Schlechte Verbindung mit <xliff:g id="NETWORK_SSID">%1$s</xliff:g>"</string>
|
||||
<string name="network_partial_connectivity_detailed" msgid="4732435946300249845">"Tippen, um die Verbindung trotzdem herzustellen"</string>
|
||||
<string name="network_switch_metered" msgid="5016937523571166319">"Zu <xliff:g id="NETWORK_TYPE">%1$s</xliff:g> gewechselt"</string>
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ import static android.text.format.DateUtils.HOUR_IN_MILLIS;
|
|||
import static android.text.format.DateUtils.MINUTE_IN_MILLIS;
|
||||
import static android.text.format.DateUtils.WEEK_IN_MILLIS;
|
||||
|
||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doThrow;
|
||||
import static com.android.server.net.NetworkStatsEventLogger.POLL_REASON_RAT_CHANGED;
|
||||
import static com.android.server.net.NetworkStatsEventLogger.PollEvent.pollReasonNameOf;
|
||||
import static com.android.server.net.NetworkStatsService.ACTION_NETWORK_STATS_POLL;
|
||||
|
|
@ -102,6 +103,7 @@ import android.annotation.NonNull;
|
|||
import android.app.AlarmManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Resources;
|
||||
import android.database.ContentObserver;
|
||||
import android.net.DataUsageRequest;
|
||||
|
|
@ -132,6 +134,7 @@ import android.os.Looper;
|
|||
import android.os.PowerManager;
|
||||
import android.os.Process;
|
||||
import android.os.SimpleClock;
|
||||
import android.os.UserHandle;
|
||||
import android.provider.Settings;
|
||||
import android.system.ErrnoException;
|
||||
import android.telephony.TelephonyManager;
|
||||
|
|
@ -256,6 +259,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||
private static @Mock WifiInfo sWifiInfo;
|
||||
private @Mock INetd mNetd;
|
||||
private @Mock TetheringManager mTetheringManager;
|
||||
private @Mock PackageManager mPm;
|
||||
private @Mock NetworkStatsFactory mStatsFactory;
|
||||
@NonNull
|
||||
private final TestNetworkStatsSettings mSettings =
|
||||
|
|
@ -326,6 +330,16 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||
mBaseContext = base;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PackageManager getPackageManager() {
|
||||
return mPm;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Context createContextAsUser(UserHandle user, int flags) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getSystemService(String name) {
|
||||
if (Context.TELEPHONY_SERVICE.equals(name)) return mTelephonyManager;
|
||||
|
|
@ -447,6 +461,9 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||
any(), tetheringEventCbCaptor.capture());
|
||||
mTetheringEventCallback = tetheringEventCbCaptor.getValue();
|
||||
|
||||
doReturn(Process.myUid()).when(mPm)
|
||||
.getPackageUid(eq(mServiceContext.getPackageName()), anyInt());
|
||||
|
||||
mUsageCallback = new TestableUsageCallback(mUsageCallbackBinder);
|
||||
}
|
||||
|
||||
|
|
@ -1714,7 +1731,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||
|
||||
// Register and verify request and that binder was called
|
||||
DataUsageRequest request = mService.registerUsageCallback(
|
||||
mServiceContext.getOpPackageName(), inputRequest, mUsageCallback);
|
||||
mServiceContext.getPackageName(), inputRequest, mUsageCallback);
|
||||
assertTrue(request.requestId > 0);
|
||||
assertTrue(Objects.equals(sTemplateWifi, request.template));
|
||||
long minThresholdInBytes = 2 * 1024 * 1024; // 2 MB
|
||||
|
|
@ -3004,6 +3021,38 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||
assertDumpContains(dump, pollReasonNameOf(POLL_REASON_RAT_CHANGED));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEnforcePackageNameMatchesUid() throws Exception {
|
||||
final String testMyPackageName = "test.package.myname";
|
||||
final String testRedPackageName = "test.package.red";
|
||||
final String testInvalidPackageName = "test.package.notfound";
|
||||
|
||||
doReturn(UID_RED).when(mPm).getPackageUid(eq(testRedPackageName), anyInt());
|
||||
doReturn(Process.myUid()).when(mPm).getPackageUid(eq(testMyPackageName), anyInt());
|
||||
doThrow(new PackageManager.NameNotFoundException()).when(mPm)
|
||||
.getPackageUid(eq(testInvalidPackageName), anyInt());
|
||||
|
||||
assertThrows(SecurityException.class, () ->
|
||||
mService.openSessionForUsageStats(0 /* flags */, testRedPackageName));
|
||||
assertThrows(SecurityException.class, () ->
|
||||
mService.openSessionForUsageStats(0 /* flags */, testInvalidPackageName));
|
||||
assertThrows(NullPointerException.class, () ->
|
||||
mService.openSessionForUsageStats(0 /* flags */, null));
|
||||
// Verify package name belongs to ourselves does not throw.
|
||||
mService.openSessionForUsageStats(0 /* flags */, testMyPackageName);
|
||||
|
||||
long thresholdInBytes = 10 * 1024 * 1024; // 10 MB
|
||||
DataUsageRequest request = new DataUsageRequest(
|
||||
2 /* requestId */, sTemplateImsi1, thresholdInBytes);
|
||||
assertThrows(SecurityException.class, () ->
|
||||
mService.registerUsageCallback(testRedPackageName, request, mUsageCallback));
|
||||
assertThrows(SecurityException.class, () ->
|
||||
mService.registerUsageCallback(testInvalidPackageName, request, mUsageCallback));
|
||||
assertThrows(NullPointerException.class, () ->
|
||||
mService.registerUsageCallback(null, request, mUsageCallback));
|
||||
mService.registerUsageCallback(testMyPackageName, request, mUsageCallback);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDumpSkDestroyListenerLogs() throws ErrnoException {
|
||||
doAnswer((invocation) -> {
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ package {
|
|||
|
||||
android_test {
|
||||
name: "CtsThreadNetworkTestCases",
|
||||
defaults: ["cts_defaults"],
|
||||
min_sdk_version: "33",
|
||||
sdk_version: "test_current",
|
||||
manifest: "AndroidManifest.xml",
|
||||
|
|
|
|||
Loading…
Reference in a new issue