blob: 9f6c03a6f3934452d4d5da2da96e4bf340fdc307 [file] [log] [blame]
/*
* Copyright (C) 2018 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 com.android.server.backup.encryption.storage;
import android.content.Context;
/**
* Backup encryption SQLite database. All instances are threadsafe.
*
* <p>The database is automatically opened when accessing one of the tables. After the caller is
* done they must call {@link #close()}.
*/
public class BackupEncryptionDb {
private final BackupEncryptionDbHelper mHelper;
/** A new instance, using the storage defined by {@code context}. */
public static BackupEncryptionDb newInstance(Context context) {
BackupEncryptionDbHelper helper = new BackupEncryptionDbHelper(context);
helper.setWriteAheadLoggingEnabled(true);
return new BackupEncryptionDb(helper);
}
private BackupEncryptionDb(BackupEncryptionDbHelper helper) {
mHelper = helper;
}
public TertiaryKeysTable getTertiaryKeysTable() {
return new TertiaryKeysTable(mHelper);
}
/** Deletes the database. */
public void clear() throws EncryptionDbException {
mHelper.resetDatabase();
}
/**
* Closes the database if it is open.
*
* <p>After calling this, the caller may access one of the tables again which will automatically
* reopen the database.
*/
public void close() {
mHelper.close();
}
}