Removing logic around replacing icon during restore

This logic was dependent on key-value based backup. Since we are
using full-backup, the appropriate flags are never set.

Bug: 18764649
Change-Id: I95a93eee63ac9c82acfb66abfdd1a5407974df46
This commit is contained in:
Sunny Goyal
2017-01-05 14:07:58 -08:00
parent a167a6e04b
commit a32bf9b181
10 changed files with 2 additions and 334 deletions
@@ -1,157 +0,0 @@
/*
* Copyright (C) 2008 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.launcher3;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.res.XmlResourceParser;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import com.android.launcher3.AutoInstallsLayout.LayoutParserCallback;
import com.android.launcher3.LauncherSettings.Favorites;
import com.android.launcher3.util.Thunk;
import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
/**
* A class that parses content values corresponding to some common app types.
*/
public class CommonAppTypeParser implements LayoutParserCallback {
private static final String TAG = "CommonAppTypeParser";
// Including TARGET_NONE
public static final int SUPPORTED_TYPE_COUNT = 7;
private static final int RESTORE_FLAG_BIT_SHIFT = 4;
public static final int TARGET_PHONE = 1;
public static final int TARGET_MESSENGER = 2;
public static final int TARGET_EMAIL = 3;
public static final int TARGET_BROWSER = 4;
public static final int TARGET_GALLERY = 5;
public static final int TARGET_CAMERA = 6;
private final long mItemId;
@Thunk final int mResId;
@Thunk final Context mContext;
ContentValues parsedValues;
Intent parsedIntent;
String parsedTitle;
public CommonAppTypeParser(long itemId, int itemType, Context context) {
mItemId = itemId;
mContext = context;
mResId = getResourceForItemType(itemType);
}
@Override
public long generateNewItemId() {
return mItemId;
}
@Override
public long insertAndCheck(SQLiteDatabase db, ContentValues values) {
parsedValues = values;
// Remove unwanted values
values.put(Favorites.ICON_PACKAGE, (String) null);
values.put(Favorites.ICON_RESOURCE, (String) null);
values.put(Favorites.ICON, (byte[]) null);
return 1;
}
/**
* Tries to find a suitable app to the provided app type.
*/
public boolean findDefaultApp() {
if (mResId == 0) {
return false;
}
parsedIntent = null;
parsedValues = null;
new MyLayoutParser().parseValues();
return (parsedValues != null) && (parsedIntent != null);
}
private class MyLayoutParser extends DefaultLayoutParser {
public MyLayoutParser() {
super(CommonAppTypeParser.this.mContext, null, CommonAppTypeParser.this,
CommonAppTypeParser.this.mContext.getResources(), mResId, TAG_RESOLVE);
}
@Override
protected long addShortcut(String title, Intent intent, int type) {
if (type == Favorites.ITEM_TYPE_APPLICATION) {
parsedIntent = intent;
parsedTitle = title;
}
return super.addShortcut(title, intent, type);
}
public void parseValues() {
XmlResourceParser parser = mSourceRes.getXml(mLayoutId);
try {
beginDocument(parser, mRootTag);
new ResolveParser().parseAndAdd(parser);
} catch (IOException | XmlPullParserException e) {
Log.e(TAG, "Unable to parse default app info", e);
}
parser.close();
}
}
public static int getResourceForItemType(int type) {
switch (type) {
case TARGET_PHONE:
return R.xml.app_target_phone;
case TARGET_MESSENGER:
return R.xml.app_target_messenger;
case TARGET_EMAIL:
return R.xml.app_target_email;
case TARGET_BROWSER:
return R.xml.app_target_browser;
case TARGET_GALLERY:
return R.xml.app_target_gallery;
case TARGET_CAMERA:
return R.xml.app_target_camera;
default:
return 0;
}
}
public static int encodeItemTypeToFlag(int itemType) {
return itemType << RESTORE_FLAG_BIT_SHIFT;
}
public static int decodeItemTypeFromFlag(int flag) {
return (flag & ShortcutInfo.FLAG_RESTORED_APP_TYPE) >> RESTORE_FLAG_BIT_SHIFT;
}
}
@@ -54,11 +54,6 @@ public class DefaultLayoutParser extends AutoInstallsLayout {
super(context, appWidgetHost, callback, sourceRes, layoutId, TAG_FAVORITES);
}
public DefaultLayoutParser(Context context, AppWidgetHost appWidgetHost,
LayoutParserCallback callback, Resources sourceRes, int layoutId, String rootTag) {
super(context, appWidgetHost, callback, sourceRes, layoutId, rootTag);
}
@Override
protected HashMap<String, TagParser> getFolderElementsMap() {
return getFolderElementsMap(mSourceRes);
+1 -30
View File
@@ -1338,7 +1338,6 @@ public class LauncherModel extends BroadcastReceiver
user = allUsers.get(serialNumber);
int promiseType = c.getInt(restoredIndex);
int disabledState = 0;
boolean itemReplaced = false;
targetPackage = null;
if (user == null) {
// User has been deleted remove the item.
@@ -1406,25 +1405,6 @@ public class LauncherModel extends BroadcastReceiver
values.put(LauncherSettings.Favorites.RESTORED,
promiseType);
updateItem(id, values);
} else if ((promiseType & ShortcutInfo.FLAG_RESTORED_APP_TYPE) != 0) {
// This is a common app. Try to replace this.
int appType = CommonAppTypeParser.decodeItemTypeFromFlag(promiseType);
CommonAppTypeParser parser = new CommonAppTypeParser(id, appType, context);
if (parser.findDefaultApp()) {
// Default app found. Replace it.
intent = parser.parsedIntent;
cn = intent.getComponent();
ContentValues values = parser.parsedValues;
values.put(LauncherSettings.Favorites.RESTORED, 0);
updateItem(id, values);
restored = false;
itemReplaced = true;
} else {
FileLog.d(TAG, "Unrestored package removed: " + cn);
itemsToRemove.add(id);
continue;
}
} else {
FileLog.d(TAG, "Unrestored package removed: " + cn);
itemsToRemove.add(id);
@@ -1464,16 +1444,7 @@ public class LauncherModel extends BroadcastReceiver
boolean useLowResIcon = container >= 0 &&
c.getInt(rankIndex) >= FolderIcon.NUM_ITEMS_IN_PREVIEW;
if (itemReplaced) {
if (user.equals(Process.myUserHandle())) {
info = getAppShortcutInfo(intent, user, null,
cursorIconInfo, false, useLowResIcon);
} else {
// Don't replace items for other profiles.
itemsToRemove.add(id);
continue;
}
} else if (restored) {
if (restored) {
if (user.equals(Process.myUserHandle())) {
info = getRestoredItemInfo(c, intent,
promiseType, itemType, cursorIconInfo);
@@ -68,6 +68,7 @@ public class ShortcutInfo extends ItemInfoWithIcon {
* Indicates if it represents a common type mentioned in {@link CommonAppTypeParser}.
* Upto 15 different types supported.
*/
@Deprecated
public static final int FLAG_RESTORED_APP_TYPE = 0B0011110000;
/**