Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f8997690 authored by Christopher Tate's avatar Christopher Tate Committed by The Android Open Source Project
Browse files

am 487529a7: First baby steps towards settings backup

Merge commit '487529a7'

* commit '487529a7':
  First baby steps towards settings backup
parents 55a664f8 487529a7
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -70,6 +70,8 @@ LOCAL_SRC_FILES += \
	core/java/android/app/ITransientNotification.aidl \
	core/java/android/app/IWallpaperService.aidl \
	core/java/android/app/IWallpaperServiceCallback.aidl \
	core/java/android/backup/IBackupManager.aidl \
	core/java/android/backup/IBackupService.aidl \
	core/java/android/bluetooth/IBluetoothA2dp.aidl \
	core/java/android/bluetooth/IBluetoothDevice.aidl \
	core/java/android/bluetooth/IBluetoothDeviceCallback.aidl \
@@ -105,6 +107,7 @@ LOCAL_SRC_FILES += \
	core/java/com/android/internal/app/IUsageStats.aidl \
	core/java/com/android/internal/appwidget/IAppWidgetService.aidl \
	core/java/com/android/internal/appwidget/IAppWidgetHost.aidl \
	core/java/com/android/internal/backup/IBackupTransport.aidl \
	core/java/com/android/internal/os/IResultReceiver.aidl \
	core/java/com/android/internal/view/IInputContext.aidl \
	core/java/com/android/internal/view/IInputContextCallback.aidl \
+87 −0
Original line number Diff line number Diff line
@@ -23953,6 +23953,82 @@
</field>
</class>
</package>
<package name="android.backup"
>
<class name="BackupService"
 extends="android.app.Service"
 abstract="true"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<constructor name="BackupService"
 type="android.backup.BackupService"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</constructor>
<method name="onBackup"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="oldStateFd" type="int">
</parameter>
<parameter name="dataFd" type="int">
</parameter>
<parameter name="newStateFd" type="int">
</parameter>
</method>
<method name="onBind"
 return="android.os.IBinder"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="intent" type="android.content.Intent">
</parameter>
</method>
<method name="onRestore"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="dataFd" type="int">
</parameter>
<parameter name="newStateFd" type="int">
</parameter>
</method>
<field name="SERVICE_ACTION"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;android.service.action.BACKUP&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
</class>
</package>
<package name="android.content"
>
<class name="ActivityNotFoundException"
@@ -27117,6 +27193,17 @@
 visibility="public"
>
</field>
<field name="BACKUP_SERVICE"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;backup&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="BIND_AUTO_CREATE"
 type="int"
 transient="false"
+106 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2009 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.backup;

import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
import android.app.Service;
import android.backup.IBackupService;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;

/**
 * This is the central interface between an application and Android's
 * settings backup mechanism.
 * 
 * <p><em>Not hidden but API subject to change and should not be published</em>
 */

public abstract class BackupService extends Service {
    /**
     * Service Action: Participate in the backup infrastructure.  Applications
     * that wish to use the Android backup mechanism must provide an exported
     * subclass of BackupService and give it an {@link android.content.IntentFilter
     * IntentFilter} that accepts this action. 
     */
    @SdkConstant(SdkConstantType.SERVICE_ACTION)
    public static final String SERVICE_ACTION = "android.service.action.BACKUP";

    /**
     * The application is being asked to write any data changed since the
     * last time it performed a backup operation.  The state data recorded
     * during the last backup pass is provided in the oldStateFd file descriptor.
     * If oldStateFd is negative, no old state is available and the application
     * should perform a full backup.  In both cases, a representation of the
     * final backup state after this pass should be written to the file pointed
     * to by the newStateFd file descriptor.
     * 
     * @param oldStateFd An open, read-only file descriptor pointing to the last
     *                   backup state provided by the application.  May be negative,
     *                   in which case no prior state is being provided and the
     *                   application should perform a full backup.
     * @param dataFd An open, read/write file descriptor pointing to the backup data
     *               destination.  Typically the application will use backup helper
     *               classes to write to this file.
     * @param newStateFd An open, read/write file descriptor pointing to an empty
     *                   file.  The application should record the final backup state
     *                   here after writing the requested data to dataFd.
     */
    public abstract void onBackup(int oldStateFd, int dataFd, int newStateFd);
    
    /**
     * The application is being restored from backup, and should replace any
     * existing data with the contents of the backup.  The backup data is
     * provided in the file pointed to by the dataFd file descriptor.  Once
     * the restore is finished, the application should write a representation
     * of the final state to the newStateFd file descriptor, 
     * 
     * @param dataFd An open, read-only file descriptor pointing to a full snapshot
     *               of the application's data.
     * @param newStateFd An open, read/write file descriptor pointing to an empty
     *                   file.  The application should record the final backup state
     *                   here after restoring its data from dataFd.
     */
    public abstract void onRestore(int dataFd, int newStateFd);


    // ----- Core implementation -----
    
    public IBinder onBind(Intent intent) {
        return mBinder;
    }

    private final IBinder mBinder = new BackupServiceBinder().asBinder();

    // ----- IBackupService binder interface -----
    private class BackupServiceBinder extends IBackupService.Stub {
        public void doBackup(int oldStateFd, int dataFd, int newStateFd)
                throws RemoteException {
            // !!! TODO - real implementation; for now just invoke the callbacks directly
            Log.v("BackupServiceBinder", "doBackup() invoked");
            BackupService.this.onBackup(oldStateFd, dataFd, newStateFd);
        }

        public void doRestore(int dataFd, int newStateFd) throws RemoteException {
            // !!! TODO - real implementation; for now just invoke the callbacks directly
            Log.v("BackupServiceBinder", "doRestore() invoked");
            BackupService.this.onRestore(dataFd, newStateFd);
        }
    }
}
+32 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2009 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.backup;

/**
 * Direct interface to the Backup Manager Service that applications invoke on.  The only
 * operation currently needed is a simple notification that the app has made changes to
 * data it wishes to back up, so the system should run a backup pass.
 *
 * {@hide pending API solidification}
 */
interface IBackupManager {
    /**
     * Tell the system service that the caller has made changes to its
     * data, and therefore needs to undergo a backup pass.
     */
    oneway void dataChanged();
}
+53 −0
Original line number Diff line number Diff line
/*
 * Copyright 2009, 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.backup;

/**
 * Interface presented by applications being asked to participate in the
 * backup & restore mechanism.  End user code does not typically implement
 * this interface; they subclass BackupService instead.
 *
 * {@hide}
 */
interface IBackupService {
    /**
     * Request that the app perform an incremental backup.
     *
     * @param oldStateFd Read-only file containing the description blob of the
     *        app's data state as of the last backup operation's completion.
     *
     * @param dataFd Read-write file, empty when onBackup() is called, that
     *        is the data destination for this backup pass's incrementals.
     *
     * @param newStateFd Read-write file, empty when onBackup() is called,
     *        where the new state blob is to be recorded.
     */
    void doBackup(int oldStateFd, int dataFd, int newStateFd);

    /**
     * Restore an entire data snapshot to the application.
     *
     * @param dataFd Read-only file containing the full data snapshot of the
     *        app's backup.  This is to be a <i>replacement</i> of the app's
     *        current data, not to be merged into it.
     *
     * @param newStateFd Read-write file, empty when onRestore() is called,
     *        that is to be written with the state description that holds after
     *        the restore has been completed.
     */
    void doRestore(int dataFd, int newStateFd);
}
Loading