diff options
| author | Neil Fuller <nfuller@google.com> | 2019-12-04 07:42:57 -0800 |
|---|---|---|
| committer | android-build-merger <android-build-merger@google.com> | 2019-12-04 07:42:57 -0800 |
| commit | 57aaf1d427cfc78ee51547a9cd0bf9fef3cc6267 (patch) | |
| tree | 04c185560f2d459152b99ebd926ca185ef1b07cc /core/java/android | |
| parent | 468c1263cfc6346353f3784a187fbfe4ccdb9a6d (diff) | |
| parent | 076cd7aa3abe1732cbf11ebb071afc0608283e74 (diff) | |
Merge "Add a manual path for setting time zone" am: 7fcab2dba8
am: 076cd7aa3a
Change-Id: I03abce9eca7c3fa031a4a0b103cb0063ea4bb85b
Diffstat (limited to 'core/java/android')
3 files changed, 149 insertions, 0 deletions
diff --git a/core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl b/core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl index 260c7df72fba..df6438319ab7 100644 --- a/core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl +++ b/core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl @@ -16,6 +16,7 @@ package android.app.timezonedetector; +import android.app.timezonedetector.ManualTimeZoneSuggestion; import android.app.timezonedetector.PhoneTimeZoneSuggestion; /** @@ -32,5 +33,6 @@ import android.app.timezonedetector.PhoneTimeZoneSuggestion; * {@hide} */ interface ITimeZoneDetectorService { + void suggestManualTimeZone(in ManualTimeZoneSuggestion timeZoneSuggestion); void suggestPhoneTimeZone(in PhoneTimeZoneSuggestion timeZoneSuggestion); } diff --git a/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.aidl b/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.aidl new file mode 100644 index 000000000000..d1be86a357bd --- /dev/null +++ b/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.app.timezonedetector; + +parcelable ManualTimeZoneSuggestion; diff --git a/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.java b/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.java new file mode 100644 index 000000000000..a6b953b42f8f --- /dev/null +++ b/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.java @@ -0,0 +1,128 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.app.timezonedetector; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Objects; + +/** + * A time signal from a manual (user provided) source. The value consists of the number of + * milliseconds elapsed since 1/1/1970 00:00:00 UTC and the time according to the elapsed realtime + * clock when that number was established. The elapsed realtime clock is considered accurate but + * volatile, so time signals must not be persisted across device resets. + * + * @hide + */ +public final class ManualTimeZoneSuggestion implements Parcelable { + + public static final @NonNull Creator<ManualTimeZoneSuggestion> CREATOR = + new Creator<ManualTimeZoneSuggestion>() { + public ManualTimeZoneSuggestion createFromParcel(Parcel in) { + return ManualTimeZoneSuggestion.createFromParcel(in); + } + + public ManualTimeZoneSuggestion[] newArray(int size) { + return new ManualTimeZoneSuggestion[size]; + } + }; + + @NonNull + private final String mZoneId; + @Nullable + private ArrayList<String> mDebugInfo; + + public ManualTimeZoneSuggestion(@NonNull String zoneId) { + mZoneId = Objects.requireNonNull(zoneId); + } + + private static ManualTimeZoneSuggestion createFromParcel(Parcel in) { + String zoneId = in.readString(); + ManualTimeZoneSuggestion suggestion = new ManualTimeZoneSuggestion(zoneId); + @SuppressWarnings("unchecked") + ArrayList<String> debugInfo = (ArrayList<String>) in.readArrayList(null /* classLoader */); + suggestion.mDebugInfo = debugInfo; + return suggestion; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + dest.writeString(mZoneId); + dest.writeList(mDebugInfo); + } + + @NonNull + public String getZoneId() { + return mZoneId; + } + + @NonNull + public List<String> getDebugInfo() { + return mDebugInfo == null + ? Collections.emptyList() : Collections.unmodifiableList(mDebugInfo); + } + + /** + * Associates information with the instance that can be useful for debugging / logging. The + * information is present in {@link #toString()} but is not considered for + * {@link #equals(Object)} and {@link #hashCode()}. + */ + public void addDebugInfo(String... debugInfos) { + if (mDebugInfo == null) { + mDebugInfo = new ArrayList<>(); + } + mDebugInfo.addAll(Arrays.asList(debugInfos)); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ManualTimeZoneSuggestion + that = (ManualTimeZoneSuggestion) o; + return Objects.equals(mZoneId, that.mZoneId); + } + + @Override + public int hashCode() { + return Objects.hash(mZoneId); + } + + @Override + public String toString() { + return "ManualTimeSuggestion{" + + "mZoneId=" + mZoneId + + ", mDebugInfo=" + mDebugInfo + + '}'; + } +} |
