Merge "Add a new permission for external time sources" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
e7ec6b42a9
@@ -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";
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user