| /* | 
 |  * Copyright (C) 2015 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.os; | 
 |  | 
 | import android.os.IUpdateEngineCallback; | 
 | import android.os.ParcelFileDescriptor; | 
 |  | 
 | /** @hide */ | 
 | interface IUpdateEngine { | 
 |   /** @hide */ | 
 |   void applyPayload(String url, | 
 |                     in long payload_offset, | 
 |                     in long payload_size, | 
 |                     in String[] headerKeyValuePairs); | 
 |   /** @hide */ | 
 |   void applyPayloadFd(in ParcelFileDescriptor pfd, | 
 |                       in long payload_offset, | 
 |                       in long payload_size, | 
 |                       in String[] headerKeyValuePairs); | 
 |   /** @hide */ | 
 |   boolean bind(IUpdateEngineCallback callback); | 
 |   /** @hide */ | 
 |   boolean unbind(IUpdateEngineCallback callback); | 
 |   /** @hide */ | 
 |   void suspend(); | 
 |   /** @hide */ | 
 |   void resume(); | 
 |   /** @hide */ | 
 |   void cancel(); | 
 |   /** @hide */ | 
 |   void resetStatus(); | 
 |   /** @hide */ | 
 |   boolean verifyPayloadApplicable(in String metadataFilename); | 
 |   /** | 
 |    * Allocate space on userdata partition. | 
 |    * | 
 |    * @return 0 indicates allocation is successful. | 
 |    *   Non-zero indicates space is insufficient. The returned value is the | 
 |    *   total required space (in bytes) on userdata partition. | 
 |    * | 
 |    * @throws ServiceSpecificException for other errors. | 
 |    * | 
 |    * @hide | 
 |    */ | 
 |   long allocateSpaceForPayload(in String metadataFilename, | 
 |                                in String[] headerKeyValuePairs); | 
 |   /** @hide | 
 |    * | 
 |    * Wait for merge to finish, and clean up necessary files. | 
 |    * | 
 |    * @param callback Report status updates in callback (not the one previously | 
 |    * bound with {@link #bind()}). | 
 |    * {@link IUpdateEngineCallback#onStatusUpdate} is called with | 
 |    * CLEANUP_PREVIOUS_UPDATE and a progress value during the cleanup. | 
 |    * {@link IUpdateEngineCallback#onPayloadApplicationComplete} is called at | 
 |    * the end with SUCCESS if successful. ERROR if transient errors (e.g. merged | 
 |    * but needs reboot). DEVICE_CORRUPTED for permanent errors. | 
 |    */ | 
 |   void cleanupSuccessfulUpdate(IUpdateEngineCallback callback); | 
 | } |