Loading internal default layout if partner layout fails to load

Bug: 18033885
Change-Id: I8399d0107cc3570c0e03d833601abf2cd194b3d3
This commit is contained in:
Sunny Goyal 2014-10-23 14:21:02 -07:00
parent e790dfdc4f
commit 9d219685c5
1 changed files with 17 additions and 12 deletions

View File

@ -322,29 +322,34 @@ public class LauncherProvider extends ContentProvider {
}
}
final boolean usingExternallyProvidedLayout = loader != null;
if (loader == null) {
loader = new DefaultLayoutParser(getContext(), mOpenHelper.mAppWidgetHost,
mOpenHelper, getContext().getResources(), getDefaultWorkspaceResourceId());
loader = getDefaultLayoutParser();
}
// Populate favorites table with initial favorites
SharedPreferences.Editor editor = sp.edit().remove(EMPTY_DATABASE_CREATED);
mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(), loader);
editor.commit();
if ((mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(), loader) <= 0)
&& usingExternallyProvidedLayout) {
// Unable to load external layout. Cleanup and load the internal layout.
createEmptyDB();
mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(),
getDefaultLayoutParser());
}
sp.edit().remove(EMPTY_DATABASE_CREATED).commit();
}
}
private DefaultLayoutParser getDefaultLayoutParser() {
int defaultLayout = LauncherAppState.getInstance()
.getDynamicGrid().getDeviceProfile().defaultLayoutId;
return new DefaultLayoutParser(getContext(), mOpenHelper.mAppWidgetHost,
mOpenHelper, getContext().getResources(), defaultLayout);
}
public void migrateLauncher2Shortcuts() {
mOpenHelper.migrateLauncher2Shortcuts(mOpenHelper.getWritableDatabase(),
Uri.parse(getContext().getString(R.string.old_launcher_provider_uri)));
}
private static int getDefaultWorkspaceResourceId() {
LauncherAppState app = LauncherAppState.getInstance();
DeviceProfile grid = app.getDynamicGrid().getDeviceProfile();
return grid.defaultLayoutId;
}
private static interface ContentValuesCallback {
public void onRow(ContentValues values);
}