Loading packages/Tethering/src/com/android/networkstack/tethering/TetheringService.java +4 −3 Original line number Diff line number Diff line Loading @@ -264,10 +264,11 @@ public class TetheringService extends Service { if (onlyAllowPrivileged || mTethering.isTetherProvisioningRequired()) return false; int uid = Binder.getCallingUid(); // If callerPkg's uid is not same as Binder.getCallingUid(), // checkAndNoteWriteSettingsOperation will return false and the operation will be // denied. return TetheringService.checkAndNoteWriteSettingsOperation(mService, uid, callerPkg, return mService.checkAndNoteWriteSettingsOperation(mService, uid, callerPkg, callingAttributionTag, false /* throwException */); } Loading @@ -285,8 +286,8 @@ public class TetheringService extends Service { * * @return {@code true} iff the package is allowed to write settings. */ // TODO: Remove method and replace with direct call once R code is pushed to AOSP private static boolean checkAndNoteWriteSettingsOperation(@NonNull Context context, int uid, @VisibleForTesting boolean checkAndNoteWriteSettingsOperation(@NonNull Context context, int uid, @NonNull String callingPackage, @Nullable String callingAttributionTag, boolean throwException) { return Settings.checkAndNoteWriteSettingsOperation(context, uid, callingPackage, Loading packages/Tethering/tests/unit/src/com/android/networkstack/tethering/MockTetheringService.java +16 −0 Original line number Diff line number Diff line Loading @@ -15,13 +15,20 @@ */ package com.android.networkstack.tethering; import static android.Manifest.permission.WRITE_SETTINGS; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static org.mockito.Mockito.mock; import android.content.Context; import android.content.Intent; import android.net.ITetheringConnector; import android.os.Binder; import android.os.IBinder; import androidx.annotation.NonNull; import androidx.annotation.Nullable; public class MockTetheringService extends TetheringService { private final Tethering mTethering = mock(Tethering.class); Loading @@ -35,6 +42,15 @@ public class MockTetheringService extends TetheringService { return mTethering; } @Override boolean checkAndNoteWriteSettingsOperation(@NonNull Context context, int uid, @NonNull String callingPackage, @Nullable String callingAttributionTag, boolean throwException) { // Test this does not verify the calling package / UID, as calling package could be shell // and not match the UID. return context.checkCallingOrSelfPermission(WRITE_SETTINGS) == PERMISSION_GRANTED; } public Tethering getTethering() { return mTethering; } Loading Loading
packages/Tethering/src/com/android/networkstack/tethering/TetheringService.java +4 −3 Original line number Diff line number Diff line Loading @@ -264,10 +264,11 @@ public class TetheringService extends Service { if (onlyAllowPrivileged || mTethering.isTetherProvisioningRequired()) return false; int uid = Binder.getCallingUid(); // If callerPkg's uid is not same as Binder.getCallingUid(), // checkAndNoteWriteSettingsOperation will return false and the operation will be // denied. return TetheringService.checkAndNoteWriteSettingsOperation(mService, uid, callerPkg, return mService.checkAndNoteWriteSettingsOperation(mService, uid, callerPkg, callingAttributionTag, false /* throwException */); } Loading @@ -285,8 +286,8 @@ public class TetheringService extends Service { * * @return {@code true} iff the package is allowed to write settings. */ // TODO: Remove method and replace with direct call once R code is pushed to AOSP private static boolean checkAndNoteWriteSettingsOperation(@NonNull Context context, int uid, @VisibleForTesting boolean checkAndNoteWriteSettingsOperation(@NonNull Context context, int uid, @NonNull String callingPackage, @Nullable String callingAttributionTag, boolean throwException) { return Settings.checkAndNoteWriteSettingsOperation(context, uid, callingPackage, Loading
packages/Tethering/tests/unit/src/com/android/networkstack/tethering/MockTetheringService.java +16 −0 Original line number Diff line number Diff line Loading @@ -15,13 +15,20 @@ */ package com.android.networkstack.tethering; import static android.Manifest.permission.WRITE_SETTINGS; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static org.mockito.Mockito.mock; import android.content.Context; import android.content.Intent; import android.net.ITetheringConnector; import android.os.Binder; import android.os.IBinder; import androidx.annotation.NonNull; import androidx.annotation.Nullable; public class MockTetheringService extends TetheringService { private final Tethering mTethering = mock(Tethering.class); Loading @@ -35,6 +42,15 @@ public class MockTetheringService extends TetheringService { return mTethering; } @Override boolean checkAndNoteWriteSettingsOperation(@NonNull Context context, int uid, @NonNull String callingPackage, @Nullable String callingAttributionTag, boolean throwException) { // Test this does not verify the calling package / UID, as calling package could be shell // and not match the UID. return context.checkCallingOrSelfPermission(WRITE_SETTINGS) == PERMISSION_GRANTED; } public Tethering getTethering() { return mTethering; } Loading