1b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey/*
2b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey * Copyright (C) 2011 The Android Open Source Project
3b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey *
4b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey * Licensed under the Apache License, Version 2.0 (the "License");
5b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey * you may not use this file except in compliance with the License.
6b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey * You may obtain a copy of the License at
7b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey *
8b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey *      http://www.apache.org/licenses/LICENSE-2.0
9b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey *
10b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey * Unless required by applicable law or agreed to in writing, software
11b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS,
12b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey * See the License for the specific language governing permissions and
14b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey * limitations under the License.
15b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey */
16b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey
17b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkeypackage android.util;
18b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey
19b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey/**
20b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey * Interface that provides trusted time information, possibly coming from an NTP
21b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey * server. Implementations may cache answers until {@link #forceRefresh()}.
22b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey *
23b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey * @hide
24b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey */
25b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkeypublic interface TrustedTime {
26b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey    /**
27b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey     * Force update with an external trusted time source, returning {@code true}
28b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey     * when successful.
29b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey     */
30b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey    public boolean forceRefresh();
31b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey
32b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey    /**
33b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey     * Check if this instance has cached a response from a trusted time source.
34b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey     */
35b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey    public boolean hasCache();
36b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey
37b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey    /**
38b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey     * Return time since last trusted time source contact, or
39b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey     * {@link Long#MAX_VALUE} if never contacted.
40b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey     */
41b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey    public long getCacheAge();
42b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey
43b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey    /**
44b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey     * Return certainty of cached trusted time in milliseconds, or
45b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey     * {@link Long#MAX_VALUE} if never contacted. Smaller values are more
46b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey     * precise.
47b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey     */
48b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey    public long getCacheCertainty();
49b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey
50b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey    /**
51b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey     * Return current time similar to {@link System#currentTimeMillis()},
52b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey     * possibly using a cached authoritative time source.
53b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey     */
54b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey    public long currentTimeMillis();
55b7342acebcb7e5dc7da0cda77fbddf50e7dfdd7cJeff Sharkey}
56