Merge "Add a new permission for external time sources" into sc-dev

This commit is contained in:
Mustafa Emre Acer
2021-03-23 16:27:46 +00:00
committed by Android (Google) Code Review
5 changed files with 15 additions and 5 deletions

View File

@@ -267,6 +267,7 @@ package android {
field public static final String STOP_APP_SWITCHES = "android.permission.STOP_APP_SWITCHES";
field public static final String SUBSTITUTE_NOTIFICATION_APP_NAME = "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME";
field public static final String SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON = "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON";
field public static final String SUGGEST_EXTERNAL_TIME = "android.permission.SUGGEST_EXTERNAL_TIME";
field public static final String SUSPEND_APPS = "android.permission.SUSPEND_APPS";
field public static final String SYSTEM_APPLICATION_OVERLAY = "android.permission.SYSTEM_APPLICATION_OVERLAY";
field public static final String SYSTEM_CAMERA = "android.permission.SYSTEM_CAMERA";

View File

@@ -264,7 +264,7 @@ public final class TimeManager {
* See {@link ExternalTimeSuggestion} for more details.
* {@hide}
*/
@RequiresPermission(android.Manifest.permission.SET_TIME)
@RequiresPermission(android.Manifest.permission.SUGGEST_EXTERNAL_TIME)
public void suggestExternalTime(@NonNull ExternalTimeSuggestion timeSuggestion) {
if (DEBUG) {
Log.d(TAG, "suggestExternalTime called: " + timeSuggestion);

View File

@@ -2963,6 +2963,15 @@
<permission android:name="android.permission.SUGGEST_MANUAL_TIME_AND_ZONE"
android:protectionLevel="signature" />
<!-- Allows system clock time suggestions from an external clock / time source to be made.
The nature of "external" could be highly form-factor specific. Example, times
obtained via the VHAL for Android Auto OS.
<p>Not for use by third-party applications.
@SystemApi @hide
-->
<permission android:name="android.permission.SUGGEST_EXTERNAL_TIME"
android:protectionLevel="signature|privileged" />
<!-- Allows applications like settings to manage configuration associated with automatic time
and time zone detection.
<p>Not for use by third-party applications.

View File

@@ -228,7 +228,7 @@ public final class TimeDetectorService extends ITimeDetectorService.Stub {
private void enforceSuggestExternalTimePermission() {
// We don't expect a call from system server, so simply enforce calling permission.
mContext.enforceCallingPermission(
android.Manifest.permission.SET_TIME,
android.Manifest.permission.SUGGEST_EXTERNAL_TIME,
"suggest time from external source");
}

View File

@@ -217,20 +217,20 @@ public class TimeDetectorServiceTest {
fail();
} finally {
verify(mMockContext).enforceCallingPermission(
eq(android.Manifest.permission.SET_TIME), anyString());
eq(android.Manifest.permission.SUGGEST_EXTERNAL_TIME), anyString());
}
}
@Test
public void testSuggestExternalTime() throws Exception {
doNothing().when(mMockContext).enforceCallingOrSelfPermission(anyString(), any());
doNothing().when(mMockContext).enforceCallingPermission(anyString(), any());
ExternalTimeSuggestion externalTimeSuggestion = createExternalTimeSuggestion();
mTimeDetectorService.suggestExternalTime(externalTimeSuggestion);
mTestHandler.assertTotalMessagesEnqueued(1);
verify(mMockContext).enforceCallingPermission(
eq(android.Manifest.permission.SET_TIME), anyString());
eq(android.Manifest.permission.SUGGEST_EXTERNAL_TIME), anyString());
mTestHandler.waitForMessagesToBeProcessed();
mStubbedTimeDetectorStrategy.verifySuggestExternalTimeCalled(externalTimeSuggestion);