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:03:59 -08:00
parent a167a6e04b
commit a32bf9b181
10 changed files with 2 additions and 334 deletions

View File

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
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.
-->
<resolve xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3" >
<favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_BROWSER;end" />
<favorite launcher:uri="http://www.example.com/" />
</resolve>

View File

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
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.
-->
<resolve xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3" >
<favorite launcher:uri="#Intent;action=android.media.action.STILL_IMAGE_CAMERA;end" />
<favorite launcher:uri="#Intent;action=android.intent.action.CAMERA_BUTTON;end" />
</resolve>

View File

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
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.
-->
<resolve xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3" >
<favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_EMAIL;end" />
<favorite launcher:uri="mailto:" />
</resolve>

View File

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
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.
-->
<resolve xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3" >
<favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_GALLERY;end" />
<favorite launcher:uri="#Intent;type=images/*;end" />
</resolve>

View File

@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
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.
-->
<resolve xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3" >
<favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MESSAGING;end" />
<favorite launcher:uri="sms:" />
<favorite launcher:uri="smsto:" />
<favorite launcher:uri="mms:" />
<favorite launcher:uri="mmsto:" />
</resolve>

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
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.
-->
<resolve xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3" >
<favorite launcher:uri="#Intent;action=android.intent.action.DIAL;end" />
<favorite launcher:uri="tel:123" />
<favorite launcher:uri="#Intent;action=android.intent.action.CALL_BUTTON;end" />
</resolve>

View File

@ -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;
}
}

View File

@ -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);

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);

View File

@ -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;
/**