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