1328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller/* 2328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller * Copyright (C) 2017 The Android Open Source Project 3328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller * 4328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller * Licensed under the Apache License, Version 2.0 (the "License"); 5328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller * you may not use this file except in compliance with the License. 6328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller * You may obtain a copy of the License at 7328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller * 8328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller * http://www.apache.org/licenses/LICENSE-2.0 9328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller * 10328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller * Unless required by applicable law or agreed to in writing, software 11328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller * distributed under the License is distributed on an "AS IS" BASIS, 12328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller * See the License for the specific language governing permissions and 14328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller * limitations under the License. 15328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller */ 16328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller 17328532ab13768a6303231b670708d750c4d7aa5fNeil Fullerpackage com.android.server.timezone; 18328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller 19328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller/** 20328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller * An easy-to-mock interface around intent sending / receiving for use by {@link PackageTracker}; 21328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller * it is not possible to test various cases with the real one because of the need to simulate 22328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller * receiving and broadcasting intents. 23328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller */ 24b144227742ada7fd693684a5bd2d53abd8e7c499Neil Fullerinterface PackageTrackerIntentHelper { 25328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller 26cd1a109b872f58f5baa0ce8438bf3ddd69eec9fcNeil Fuller void initialize(String updateAppPackageName, String dataAppPackageName, 27cd1a109b872f58f5baa0ce8438bf3ddd69eec9fcNeil Fuller PackageTracker packageTracker); 28328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller 29328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller void sendTriggerUpdateCheck(CheckToken checkToken); 30328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller 31cd1a109b872f58f5baa0ce8438bf3ddd69eec9fcNeil Fuller /** 32cd1a109b872f58f5baa0ce8438bf3ddd69eec9fcNeil Fuller * Schedule a "reliability trigger" after at least minimumDelayMillis, replacing any existing 33cd1a109b872f58f5baa0ce8438bf3ddd69eec9fcNeil Fuller * scheduled one. A reliability trigger ensures that the {@link PackageTracker} can pick up 34cd1a109b872f58f5baa0ce8438bf3ddd69eec9fcNeil Fuller * reliably if a previous update check did not complete for some reason. It can happen when 35cd1a109b872f58f5baa0ce8438bf3ddd69eec9fcNeil Fuller * the device is idle. The trigger is expected to call 36cd1a109b872f58f5baa0ce8438bf3ddd69eec9fcNeil Fuller * {@link PackageTracker#triggerUpdateIfNeeded(boolean)} with a {@code false} value. 37cd1a109b872f58f5baa0ce8438bf3ddd69eec9fcNeil Fuller */ 38cd1a109b872f58f5baa0ce8438bf3ddd69eec9fcNeil Fuller void scheduleReliabilityTrigger(long minimumDelayMillis); 39328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller 40cd1a109b872f58f5baa0ce8438bf3ddd69eec9fcNeil Fuller /** 41cd1a109b872f58f5baa0ce8438bf3ddd69eec9fcNeil Fuller * Make sure there is no reliability trigger scheduled. No-op if there wasn't one. 42cd1a109b872f58f5baa0ce8438bf3ddd69eec9fcNeil Fuller */ 43cd1a109b872f58f5baa0ce8438bf3ddd69eec9fcNeil Fuller void unscheduleReliabilityTrigger(); 44328532ab13768a6303231b670708d750c4d7aa5fNeil Fuller} 45