1ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani/*
2443c360d0afdbab091994244f045f4756feaf2b4Jean-Baptiste Queru * Copyright (C) 2008 The Android Open Source Project
345239029ceb876462e0d3f654c6b24ac9a9ed8afKen Wakasa *
48aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License");
58aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * you may not use this file except in compliance with the License.
68aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * You may obtain a copy of the License at
745239029ceb876462e0d3f654c6b24ac9a9ed8afKen Wakasa *
88aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka *      http://www.apache.org/licenses/LICENSE-2.0
945239029ceb876462e0d3f654c6b24ac9a9ed8afKen Wakasa *
10ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani * Unless required by applicable law or agreed to in writing, software
118aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS,
128aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * See the License for the specific language governing permissions and
148aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * limitations under the License.
15ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani */
16ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani
17ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasanipackage com.android.inputmethod.latin;
18ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani
19d079b98ec459183e7c5913ee55bf413c3505367aAmith Yamasaniimport android.app.backup.BackupAgentHelper;
201e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddharthaimport android.app.backup.BackupDataInput;
21d212c30e6fd3b5a6cbac9cfb1c70c746507f9bfdChristopher Tateimport android.app.backup.SharedPreferencesBackupHelper;
221e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddharthaimport android.content.SharedPreferences;
231e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddharthaimport android.os.ParcelFileDescriptor;
241e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha
251e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddharthaimport com.android.inputmethod.latin.settings.LocalSettingsConstants;
261e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha
271e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddharthaimport java.io.IOException;
28ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani
29ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani/**
301e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha * Backup/restore agent for LatinIME.
311e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha * Currently it backs up the default shared preferences.
32ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani */
33a28a05e971cc242b338331a3b78276fa95188d19Tadashi G. Takaokapublic final class BackupAgent extends BackupAgentHelper {
341e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha    private static final String PREF_SUFFIX = "_preferences";
351e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha
36525141a402ac9a3fb3495cb069ad25b9ba1fc970satok    @Override
37ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani    public void onCreate() {
38ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani        addHelper("shared_pref", new SharedPreferencesBackupHelper(this,
391e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha                getPackageName() + PREF_SUFFIX));
401e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha    }
411e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha
421e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha    @Override
431e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha    public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState)
441e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha            throws IOException {
451e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha        // Let the restore operation go through
461e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha        super.onRestore(data, appVersionCode, newState);
471e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha
481e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha        // Remove the preferences that we don't want restored.
491e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha        final SharedPreferences.Editor prefEditor = getSharedPreferences(
501e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha                getPackageName() + PREF_SUFFIX, MODE_PRIVATE).edit();
5106a438d3a589b926215ee89c0df82aef62c960a4Sandeep Siddhartha        for (final String key : LocalSettingsConstants.PREFS_TO_SKIP_RESTORING) {
521e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha            prefEditor.remove(key);
531e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha        }
541e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha        // Flush the changes to disk.
551e10d29bc8975ea45ca5e3bdf1936aa418161bcbSandeep Siddhartha        prefEditor.commit();
56ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani    }
57ff74ee5825026ae49d33138c9cca179e67e8cc52Amith Yamasani}
58