summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorNeil Fuller <nfuller@google.com>2019-12-04 07:42:57 -0800
committerandroid-build-merger <android-build-merger@google.com>2019-12-04 07:42:57 -0800
commit57aaf1d427cfc78ee51547a9cd0bf9fef3cc6267 (patch)
tree04c185560f2d459152b99ebd926ca185ef1b07cc /core/java/android
parent468c1263cfc6346353f3784a187fbfe4ccdb9a6d (diff)
parent076cd7aa3abe1732cbf11ebb071afc0608283e74 (diff)
Merge "Add a manual path for setting time zone" am: 7fcab2dba8
am: 076cd7aa3a Change-Id: I03abce9eca7c3fa031a4a0b103cb0063ea4bb85b
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl2
-rw-r--r--core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.aidl19
-rw-r--r--core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.java128
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
+ + '}';
+ }
+}