Merge "Misc tidy up before adding geolocation classes"

This commit is contained in:
Neil Fuller
2020-03-20 09:47:19 +00:00
committed by Gerrit Code Review
6 changed files with 79 additions and 76 deletions

View File

@@ -30,7 +30,7 @@ import java.util.List;
import java.util.Objects;
/**
* A time signal from a manual (user provided) source.
* A time zone suggestion from a manual (user provided) source.
*
* <p>{@code zoneId} contains the suggested time zone ID, e.g. "America/Los_Angeles".
*
@@ -124,7 +124,7 @@ public final class ManualTimeZoneSuggestion implements Parcelable {
@Override
public String toString() {
return "ManualTimeSuggestion{"
return "ManualTimeZoneSuggestion{"
+ "mZoneId=" + mZoneId
+ ", mDebugInfo=" + mDebugInfo
+ '}';

View File

@@ -40,6 +40,15 @@ public interface TimeZoneDetector {
return suggestion;
}
/**
* Suggests the current time zone, determined using the user's manually entered information, to
* the detector. The detector may ignore the signal based on system settings.
*
* @hide
*/
@RequiresPermission(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE)
void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion);
/**
* Suggests the current time zone, determined using telephony signals, to the detector. The
* detector may ignore the signal based on system settings, whether better information is
@@ -49,13 +58,4 @@ public interface TimeZoneDetector {
*/
@RequiresPermission(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE)
void suggestTelephonyTimeZone(@NonNull TelephonyTimeZoneSuggestion timeZoneSuggestion);
/**
* Suggests the current time zone, determined for the user's manually information, to the
* detector. The detector may ignore the signal based on system settings.
*
* @hide
*/
@RequiresPermission(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE)
void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion);
}

View File

@@ -39,18 +39,6 @@ public final class TimeZoneDetectorImpl implements TimeZoneDetector {
ServiceManager.getServiceOrThrow(Context.TIME_ZONE_DETECTOR_SERVICE));
}
@Override
public void suggestTelephonyTimeZone(@NonNull TelephonyTimeZoneSuggestion timeZoneSuggestion) {
if (DEBUG) {
Log.d(TAG, "suggestTelephonyTimeZone called: " + timeZoneSuggestion);
}
try {
mITimeZoneDetectorService.suggestTelephonyTimeZone(timeZoneSuggestion);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
@Override
public void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion) {
if (DEBUG) {
@@ -62,4 +50,16 @@ public final class TimeZoneDetectorImpl implements TimeZoneDetector {
throw e.rethrowFromSystemServer();
}
}
@Override
public void suggestTelephonyTimeZone(@NonNull TelephonyTimeZoneSuggestion timeZoneSuggestion) {
if (DEBUG) {
Log.d(TAG, "suggestTelephonyTimeZone called: " + timeZoneSuggestion);
}
try {
mITimeZoneDetectorService.suggestTelephonyTimeZone(timeZoneSuggestion);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
}

View File

@@ -129,7 +129,7 @@ public class TelephonyTimeZoneSuggestionTest {
}
@Test(expected = RuntimeException.class)
public void testBuilderValidates_emptyZone_badMatchType() {
public void testBuilderValidates_nullZone_badMatchType() {
TelephonyTimeZoneSuggestion.Builder builder =
new TelephonyTimeZoneSuggestion.Builder(SLOT_INDEX);
// No zone ID, so match type should be left unset.

View File

@@ -22,9 +22,12 @@ import android.app.timezonedetector.TelephonyTimeZoneSuggestion;
import java.io.PrintWriter;
/**
* The interface for the class that implement the time detection algorithm used by the
* The interface for the class that implements the time detection algorithm used by the
* {@link TimeZoneDetectorService}.
*
* <p>The strategy uses suggestions to decide whether to modify the device's time zone setting
* and what to set it to.
*
* <p>Most calls will be handled by a single thread but that is not true for all calls. For example
* {@link #dump(PrintWriter, String[])}) may be called on a different thread so implementations must
* handle thread safety.
@@ -33,7 +36,9 @@ import java.io.PrintWriter;
*/
public interface TimeZoneDetectorStrategy {
/** Process the suggested manually-entered (i.e. user sourced) time zone. */
/**
* Suggests a time zone for the device using manually-entered (i.e. user sourced) information.
*/
void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion suggestion);
/**
@@ -41,8 +46,7 @@ public interface TimeZoneDetectorStrategy {
* {@link TelephonyTimeZoneSuggestion#getZoneId()} is {@code null}. The suggestion is scoped to
* a specific {@link TelephonyTimeZoneSuggestion#getSlotIndex() slotIndex}.
* See {@link TelephonyTimeZoneSuggestion} for an explanation of the metadata associated with a
* suggestion. The strategy uses suggestions to decide whether to modify the device's time zone
* setting and what to set it to.
* suggestion.
*/
void suggestTelephonyTimeZone(@NonNull TelephonyTimeZoneSuggestion suggestion);

View File

@@ -76,39 +76,7 @@ public class TimeZoneDetectorServiceTest {
}
@Test(expected = SecurityException.class)
public void testSuggestTelephonyTime_withoutPermission() {
doThrow(new SecurityException("Mock"))
.when(mMockContext).enforceCallingPermission(anyString(), any());
TelephonyTimeZoneSuggestion timeZoneSuggestion = createTelephonyTimeZoneSuggestion();
try {
mTimeZoneDetectorService.suggestTelephonyTimeZone(timeZoneSuggestion);
fail();
} finally {
verify(mMockContext).enforceCallingPermission(
eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE),
anyString());
}
}
@Test
public void testSuggestTelephonyTimeZone() throws Exception {
doNothing().when(mMockContext).enforceCallingPermission(anyString(), any());
TelephonyTimeZoneSuggestion timeZoneSuggestion = createTelephonyTimeZoneSuggestion();
mTimeZoneDetectorService.suggestTelephonyTimeZone(timeZoneSuggestion);
mTestHandler.assertTotalMessagesEnqueued(1);
verify(mMockContext).enforceCallingPermission(
eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE),
anyString());
mTestHandler.waitForMessagesToBeProcessed();
mStubbedTimeZoneDetectorStrategy.verifySuggestTelephonyTimeZoneCalled(timeZoneSuggestion);
}
@Test(expected = SecurityException.class)
public void testSuggestManualTime_withoutPermission() {
public void testSuggestManualTimeZone_withoutPermission() {
doThrow(new SecurityException("Mock"))
.when(mMockContext).enforceCallingOrSelfPermission(anyString(), any());
ManualTimeZoneSuggestion timeZoneSuggestion = createManualTimeZoneSuggestion();
@@ -139,6 +107,38 @@ public class TimeZoneDetectorServiceTest {
mStubbedTimeZoneDetectorStrategy.verifySuggestManualTimeZoneCalled(timeZoneSuggestion);
}
@Test(expected = SecurityException.class)
public void testSuggestTelephonyTimeZone_withoutPermission() {
doThrow(new SecurityException("Mock"))
.when(mMockContext).enforceCallingPermission(anyString(), any());
TelephonyTimeZoneSuggestion timeZoneSuggestion = createTelephonyTimeZoneSuggestion();
try {
mTimeZoneDetectorService.suggestTelephonyTimeZone(timeZoneSuggestion);
fail();
} finally {
verify(mMockContext).enforceCallingPermission(
eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE),
anyString());
}
}
@Test
public void testSuggestTelephonyTimeZone() throws Exception {
doNothing().when(mMockContext).enforceCallingPermission(anyString(), any());
TelephonyTimeZoneSuggestion timeZoneSuggestion = createTelephonyTimeZoneSuggestion();
mTimeZoneDetectorService.suggestTelephonyTimeZone(timeZoneSuggestion);
mTestHandler.assertTotalMessagesEnqueued(1);
verify(mMockContext).enforceCallingPermission(
eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE),
anyString());
mTestHandler.waitForMessagesToBeProcessed();
mStubbedTimeZoneDetectorStrategy.verifySuggestTelephonyTimeZoneCalled(timeZoneSuggestion);
}
@Test
public void testDump() {
when(mMockContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP))
@@ -165,6 +165,10 @@ public class TimeZoneDetectorServiceTest {
mStubbedTimeZoneDetectorStrategy.verifyHandleAutoTimeZoneDetectionChangedCalled();
}
private static ManualTimeZoneSuggestion createManualTimeZoneSuggestion() {
return new ManualTimeZoneSuggestion("TestZoneId");
}
private static TelephonyTimeZoneSuggestion createTelephonyTimeZoneSuggestion() {
int slotIndex = 1234;
return new TelephonyTimeZoneSuggestion.Builder(slotIndex)
@@ -174,26 +178,22 @@ public class TimeZoneDetectorServiceTest {
.build();
}
private static ManualTimeZoneSuggestion createManualTimeZoneSuggestion() {
return new ManualTimeZoneSuggestion("TestZoneId");
}
private static class StubbedTimeZoneDetectorStrategy implements TimeZoneDetectorStrategy {
// Call tracking.
private TelephonyTimeZoneSuggestion mLastTelephonySuggestion;
private ManualTimeZoneSuggestion mLastManualSuggestion;
private TelephonyTimeZoneSuggestion mLastTelephonySuggestion;
private boolean mHandleAutoTimeZoneDetectionChangedCalled;
private boolean mDumpCalled;
@Override
public void suggestTelephonyTimeZone(TelephonyTimeZoneSuggestion timeZoneSuggestion) {
mLastTelephonySuggestion = timeZoneSuggestion;
public void suggestManualTimeZone(ManualTimeZoneSuggestion timeZoneSuggestion) {
mLastManualSuggestion = timeZoneSuggestion;
}
@Override
public void suggestManualTimeZone(ManualTimeZoneSuggestion timeZoneSuggestion) {
mLastManualSuggestion = timeZoneSuggestion;
public void suggestTelephonyTimeZone(TelephonyTimeZoneSuggestion timeZoneSuggestion) {
mLastTelephonySuggestion = timeZoneSuggestion;
}
@Override
@@ -207,18 +207,18 @@ public class TimeZoneDetectorServiceTest {
}
void resetCallTracking() {
mLastTelephonySuggestion = null;
mLastManualSuggestion = null;
mLastTelephonySuggestion = null;
mHandleAutoTimeZoneDetectionChangedCalled = false;
mDumpCalled = false;
}
void verifySuggestTelephonyTimeZoneCalled(TelephonyTimeZoneSuggestion expectedSuggestion) {
assertEquals(expectedSuggestion, mLastTelephonySuggestion);
void verifySuggestManualTimeZoneCalled(ManualTimeZoneSuggestion expectedSuggestion) {
assertEquals(expectedSuggestion, mLastManualSuggestion);
}
public void verifySuggestManualTimeZoneCalled(ManualTimeZoneSuggestion expectedSuggestion) {
assertEquals(expectedSuggestion, mLastManualSuggestion);
void verifySuggestTelephonyTimeZoneCalled(TelephonyTimeZoneSuggestion expectedSuggestion) {
assertEquals(expectedSuggestion, mLastTelephonySuggestion);
}
void verifyHandleAutoTimeZoneDetectionChangedCalled() {
@@ -229,5 +229,4 @@ public class TimeZoneDetectorServiceTest {
assertTrue(mDumpCalled);
}
}
}