From 11df11ec7fe9f43798cf5fa33b65acbb45dc52b4 Mon Sep 17 00:00:00 2001 From: Tad Date: Thu, 5 May 2016 02:53:50 -0400 Subject: [PATCH 1/5] Revert "Trebuchet Statistics:" This reverts commit a20b046db71039ee581bb80274cf1fc450b3fd99. Change-Id: I4c71ccdc40151d5d3f98b776f2ce215027009978 --- Android.mk | 2 +- AndroidManifest.xml | 10 -- src/com/android/launcher3/Launcher.java | 32 ----- src/com/android/launcher3/LauncherModel.java | 37 +---- .../launcher3/WallpaperChangedReceiver.java | 15 -- .../launcher3/stats/external/StatsUtil.java | 117 --------------- .../launcher3/stats/external/TrackingBundle.java | 67 --------- .../stats/internal/db/DatabaseHelper.java | 159 --------------------- .../stats/internal/db/TrackingEventContract.java | 31 ---- .../stats/internal/model/CountAction.java | 73 ---------- .../internal/model/CountOriginByPackageAction.java | 91 ------------ .../stats/internal/model/ITrackingAction.java | 45 ------ src/com/android/launcher3/stats/util/Logger.java | 55 ------- 13 files changed, 4 insertions(+), 730 deletions(-) delete mode 100644 src/com/android/launcher3/stats/external/StatsUtil.java delete mode 100644 src/com/android/launcher3/stats/external/TrackingBundle.java delete mode 100644 src/com/android/launcher3/stats/internal/db/DatabaseHelper.java delete mode 100644 src/com/android/launcher3/stats/internal/db/TrackingEventContract.java delete mode 100644 src/com/android/launcher3/stats/internal/model/CountAction.java delete mode 100644 src/com/android/launcher3/stats/internal/model/CountOriginByPackageAction.java delete mode 100644 src/com/android/launcher3/stats/internal/model/ITrackingAction.java delete mode 100644 src/com/android/launcher3/stats/util/Logger.java diff --git a/Android.mk b/Android.mk index 5ef85b4..9915fc5 100644 --- a/Android.mk +++ b/Android.mk @@ -45,7 +45,7 @@ LOCAL_AAPT_FLAGS := \ --auto-add-overlay \ --extra-packages android.support.v7.recyclerview -#LOCAL_SDK_VERSION := current +LOCAL_SDK_VERSION := current LOCAL_PACKAGE_NAME := Trebuchet LOCAL_PRIVILEGED_MODULE := true diff --git a/AndroidManifest.xml b/AndroidManifest.xml index dbdabfa..ee80841 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -69,10 +69,8 @@ - - - - - - - diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 8161d38..37f3931 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -111,7 +111,6 @@ import com.android.launcher3.compat.UserManagerCompat; import com.android.launcher3.list.SettingsPinnedHeaderAdapter; import com.android.launcher3.model.WidgetsModel; import com.android.launcher3.settings.SettingsProvider; -import com.android.launcher3.stats.LauncherStats; import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.LongArrayMap; import com.android.launcher3.util.Thunk; @@ -170,10 +169,6 @@ public class Launcher extends Activity private static final float BOUNCE_ANIMATION_TENSION = 1.3f; - - public static final String LONGPRESS_CHANGE = "wallpaper_changed_by_longpress"; - - /** * IntentStarter uses request codes starting with this. This must be greater than all activity * request codes used internally. @@ -2136,9 +2131,6 @@ public class Launcher extends Activity public void removeAppWidget(LauncherAppWidgetInfo launcherInfo) { removeWidgetToAutoAdvance(launcherInfo.hostView); launcherInfo.hostView = null; - AppWidgetProviderInfo info = mAppWidgetManager.getAppWidgetInfo(launcherInfo.appWidgetId); - String packageName = info.providerInfo.packageName; - LauncherApplication.getLauncherStats().sendWidgetRemoveEvent(packageName); } public void showOutOfSpaceMessage(boolean isHotseatLayout) { @@ -2632,8 +2624,6 @@ public class Launcher extends Activity completeAddAppWidget(appWidgetId, info.container, info.screenId, boundWidget, appWidgetInfo); mWorkspace.removeExtraEmptyScreenDelayed(true, onComplete, delay, false); - String packageName = appWidgetInfo.providerInfo.packageName; - LauncherApplication.getLauncherStats().sendWidgetAddEvent(packageName); } } @@ -2893,13 +2883,6 @@ public class Launcher extends Activity } else if (tag instanceof AppInfo) { AppInfo info = (AppInfo) tag; startAppShortcutOrInfoActivity(v); - LauncherApplication.getLauncherStats().sendAppLaunchEvent( - LauncherStats.ORIGIN_APPDRAWER, info.componentName.getPackageName()); - String packageName = info.getIntent().getComponent().getPackageName(); - if (LauncherStats.SETTINGS_PACKAGE_NAME.equals(packageName)) { - LauncherApplication.getLauncherStats() - .sendSettingsOpenedEvent(LauncherStats.ORIGIN_APPDRAWER); - } } else if (tag instanceof LauncherAppWidgetInfo) { if (v instanceof PendingAppWidgetHostView) { onClickPendingWidget((PendingAppWidgetHostView) v); @@ -3048,17 +3031,6 @@ public class Launcher extends Activity // Start activities startAppShortcutOrInfoActivity(v); - ComponentName componentName = intent.getComponent(); - if (componentName != null) { - String packageName = intent.getComponent().getPackageName(); - LauncherApplication.getLauncherStats() - .sendAppLaunchEvent(LauncherStats.ORIGIN_HOMESCREEN, - packageName); - if (LauncherStats.SETTINGS_PACKAGE_NAME.equals(packageName)) { - LauncherApplication.getLauncherStats().sendSettingsOpenedEvent( - LauncherStats.ORIGIN_HOMESCREEN); - } - } if (mLauncherCallbacks != null) { mLauncherCallbacks.onClickAppShortcut(v); @@ -4173,10 +4145,6 @@ public class Launcher extends Activity mWorkspace.createCustomContentContainer(); populateCustomContentContainer(); } - - LauncherModel.saveWidgetCount(this); - LauncherModel.savePageCount(this); - } @Override diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index 687e565..e758817 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -28,7 +28,6 @@ import android.content.Context; import android.content.Intent; import android.content.Intent.ShortcutIconResource; import android.content.IntentFilter; -import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.pm.ProviderInfo; import android.content.pm.ResolveInfo; @@ -65,9 +64,6 @@ import com.android.launcher3.util.ManagedProfileHeuristic; import com.android.launcher3.util.Thunk; import cyanogenmod.providers.CMSettings; -import com.android.launcher3.settings.SettingsProvider; -import com.android.launcher3.stats.internal.service.AggregationIntentService; - import java.lang.ref.WeakReference; import java.net.URISyntaxException; import java.security.InvalidParameterException; @@ -1055,22 +1051,10 @@ public class LauncherModel extends BroadcastReceiver } /** - * Saves the total widget count to a shared preference - * - * @param context {@link Context} - */ - /* package */ static void saveWidgetCount(Context context) { - int widgetCount = LauncherModel.sBgAppWidgets.size(); - SharedPreferences prefs = context.getSharedPreferences(LauncherAppState - .getSharedPreferencesKey(), Context.MODE_PRIVATE); - prefs.edit().putInt(AggregationIntentService.PREF_KEY_WIDGET_COUNT, widgetCount).apply(); - } - - /** * Add an item to the database in a specified container. Sets the container, screen, cellX and * cellY fields of the item. Also assigns an ID to the item. */ - public static void addItemToDatabase(final Context context, final ItemInfo item, final long container, + public static void addItemToDatabase(Context context, final ItemInfo item, final long container, final long screenId, final int cellX, final int cellY) { item.container = container; item.cellX = cellX; @@ -1120,7 +1104,6 @@ public class LauncherModel extends BroadcastReceiver break; case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET: sBgAppWidgets.add((LauncherAppWidgetInfo) item); - saveWidgetCount(context); break; } } @@ -1173,7 +1156,7 @@ public class LauncherModel extends BroadcastReceiver * @param context * @param items */ - static void deleteItemsFromDatabase(final Context context, final ArrayList items) { + static void deleteItemsFromDatabase(Context context, final ArrayList items) { final ContentResolver cr = context.getContentResolver(); Runnable r = new Runnable() { public void run() { @@ -1203,7 +1186,6 @@ public class LauncherModel extends BroadcastReceiver break; case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET: sBgAppWidgets.remove((LauncherAppWidgetInfo) item); - saveWidgetCount(context); break; } sBgItemsIdMap.remove(item.id); @@ -1215,22 +1197,10 @@ public class LauncherModel extends BroadcastReceiver } /** - * Saves the count of workspace pages - * - * @param context {@link Context} - */ - /* package */ static void savePageCount(Context context) { - int pageCount = LauncherModel.sBgWorkspaceScreens.size(); - SharedPreferences prefs = context.getSharedPreferences(LauncherAppState - .getSharedPreferencesKey(), Context.MODE_PRIVATE); - prefs.edit().putInt(AggregationIntentService.PREF_KEY_PAGE_COUNT, pageCount).apply(); - } - - /** * Update the order of the workspace screens in the database. The array list contains * a list of screen ids in the order that they should appear. */ - public void updateWorkspaceScreenOrder(final Context context, final ArrayList screens) { + public void updateWorkspaceScreenOrder(Context context, final ArrayList screens) { final ArrayList screensCopy = new ArrayList(screens); final ContentResolver cr = context.getContentResolver(); final Uri uri = LauncherSettings.WorkspaceScreens.CONTENT_URI; @@ -1268,7 +1238,6 @@ public class LauncherModel extends BroadcastReceiver synchronized (sBgLock) { sBgWorkspaceScreens.clear(); sBgWorkspaceScreens.addAll(screensCopy); - savePageCount(context); } } }; diff --git a/src/com/android/launcher3/WallpaperChangedReceiver.java b/src/com/android/launcher3/WallpaperChangedReceiver.java index 0a6a7ef..2d5612f 100644 --- a/src/com/android/launcher3/WallpaperChangedReceiver.java +++ b/src/com/android/launcher3/WallpaperChangedReceiver.java @@ -20,25 +20,10 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; -import com.android.launcher3.stats.LauncherStats; - public class WallpaperChangedReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent data) { LauncherAppState.setApplicationContext(context.getApplicationContext()); LauncherAppState appState = LauncherAppState.getInstance(); appState.onWallpaperChanged(); - SharedPreferences prefs = context.getSharedPreferences(LauncherAppState - .getSharedPreferencesKey(), Context.MODE_PRIVATE); - boolean fromSelf = prefs.getBoolean(Launcher.LONGPRESS_CHANGE, false); - if (fromSelf) { - prefs.edit().putBoolean(Launcher.LONGPRESS_CHANGE, false).apply(); - LauncherApplication.getLauncherStats().sendWallpaperChangedEvent( - LauncherStats.ORIGIN_TREB_LONGPRESS); - } else { - LauncherApplication.getLauncherStats().sendWallpaperChangedEvent( - LauncherStats.ORIGIN_CHOOSER); - } - } } diff --git a/src/com/android/launcher3/stats/external/StatsUtil.java b/src/com/android/launcher3/stats/external/StatsUtil.java deleted file mode 100644 index 697df54..0000000 --- a/src/com/android/launcher3/stats/external/StatsUtil.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (c) 2015. The CyanogenMod 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.stats.external; - -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.os.Bundle; -import android.util.Log; -import com.android.launcher3.stats.util.Logger; - -/** - * StatsUtil - *
- *     Utility for interfacing with CyanogenStats
- * 
- */ -public class StatsUtil { - - // Tag and logging - private static final String TAG = StatsUtil.class.getSimpleName(); - - // Constants - private static final String KEY_TRACKING_ID = "tracking_id"; - private static final String ANALYTIC_INTENT = "com.cyngn.stats.action.SEND_ANALYTIC_EVENT"; - private static final String STATS_PACKAGE = "com.cyngn.stats"; - - /** - * Checks if stats collection is enabled - * - * @param context {@link android.content.Context} - * @return {@link java.lang.Boolean} - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - public static boolean isStatsCollectionEnabled(Context context) - throws IllegalArgumentException { - return isStatsPackageInstalledAndSystemApp(context); - } - - /** - * Checks if the stats package is installed - * - * @param context {@link android.content.Context} - * @return {@link Boolean {@link Boolean {@link Boolean {@link Boolean}}}} - */ - private static boolean isStatsPackageInstalledAndSystemApp(Context context) - throws IllegalArgumentException { - if (context == null) { - throw new IllegalArgumentException("'context' cannot be null!"); - } - try { - PackageInfo pi = context.getPackageManager().getPackageInfo(STATS_PACKAGE, 0); - boolean isSystemApp = (pi.applicationInfo.flags & - (ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)) != 0; - return pi.applicationInfo.enabled && isSystemApp; - } catch (PackageManager.NameNotFoundException e) { - Log.e(TAG, "stats not found!"); - return false; - } - } - - /** - * Send an event to CyangenStats - * - * @param context {@link Context} not null - * @param trackingBundle {@link Bundle} - * @throws IllegalArgumentException - */ - public static void sendEvent(Context context, Bundle trackingBundle) - throws IllegalArgumentException { - if (context == null) { - throw new IllegalArgumentException("'context' cannot be null!"); - } - if (trackingBundle == null) { - throw new IllegalArgumentException("'trackingBundle' cannot be null!"); - } - if (!isStatsCollectionEnabled(context)) { - Logger.logd(TAG, "Stats collection: DISABLED!"); - return; - } - Logger.logd(TAG, "Stats collection: ENABLED!"); - - Intent newIntent = new Intent(ANALYTIC_INTENT); - - if (!trackingBundle.containsKey(KEY_TRACKING_ID)) { - Logger.logd(TAG, "No tracking id in bundle"); - return; - } else { - if (trackingBundle.containsKey(TrackingBundle.KEY_EVENT_CATEGORY) - && trackingBundle.containsKey(TrackingBundle.KEY_EVENT_ACTION)) { - Logger.logd(TAG, trackingBundle.toString()); - newIntent.putExtras(trackingBundle); - context.sendBroadcast(newIntent); - } else { - Logger.logd(TAG, "Not a valid tracking bundle"); - } - } - } - -} diff --git a/src/com/android/launcher3/stats/external/TrackingBundle.java b/src/com/android/launcher3/stats/external/TrackingBundle.java deleted file mode 100644 index 6ca5d97..0000000 --- a/src/com/android/launcher3/stats/external/TrackingBundle.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2015. The CyanogenMod 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.stats.external; - -import android.os.Bundle; -import android.text.TextUtils; - -/** - *
- *     Extension of a {@link Bundle} to provider streamline interfaces for
- *     the specific task of sending events
- * 
- * - * @see {@link Bundle} - */ -public class TrackingBundle { - - // Constants - public static final String KEY_TRACKING_ID = "tracking_id"; - public static final String KEY_EVENT_CATEGORY = "category"; - public static final String KEY_EVENT_ACTION = "action"; - public static final String KEY_METADATA_VALUE = "value"; - public static final String KEY_METADATA_ORIGIN = "origin"; - public static final String KEY_METADATA_PACKAGE = "package"; - - - /** - * Constructor - * - * @param trackingId {@link String} - * @param category {@link String} - * @param action {@link String} - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - public static Bundle createTrackingBundle(String trackingId, String category, String action) - throws IllegalArgumentException { - if (TextUtils.isEmpty(trackingId)) { - throw new IllegalArgumentException("'trackingId' cannot be null or empty!"); - } - if (TextUtils.isEmpty(category)) { - throw new IllegalArgumentException("'category' cannot be null or empty!"); - } - if (TextUtils.isEmpty(action)) { - throw new IllegalArgumentException("'action' cannot be null or empty!"); - } - Bundle bundle = new Bundle(); - bundle.putString(KEY_EVENT_CATEGORY, category); - bundle.putString(KEY_EVENT_ACTION, action); - bundle.putString(KEY_TRACKING_ID, trackingId); - return bundle; - } - -} \ No newline at end of file diff --git a/src/com/android/launcher3/stats/internal/db/DatabaseHelper.java b/src/com/android/launcher3/stats/internal/db/DatabaseHelper.java deleted file mode 100644 index 7ffd509..0000000 --- a/src/com/android/launcher3/stats/internal/db/DatabaseHelper.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.android.launcher3.stats.internal.db; - -import android.content.ContentValues; -import android.content.Context; -import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; -import android.database.sqlite.SQLiteOpenHelper; -import com.android.launcher3.stats.internal.model.TrackingEvent; -import com.android.launcher3.stats.util.Logger; - -import java.util.ArrayList; -import java.util.List; - -/** - *
- *     Helper for accessing the database
- * 
- * - * @see {@link SQLiteOpenHelper} - */ -public class DatabaseHelper extends SQLiteOpenHelper { - - // Constants - private static final String TAG = DatabaseHelper.class.getSimpleName(); - private static final String DATABASE_NAME = "events"; - private static final int DATABASE_VERSION = 1; - - // Instance - private static DatabaseHelper sInstance = null; - - /** - * Constructor - * - * @param context {@link Context} - * @return {@link DatabaseHelper} - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - public static DatabaseHelper createInstance(Context context) throws IllegalArgumentException { - if (sInstance == null) { - sInstance = new DatabaseHelper(context); - } - return sInstance; - } - - /** - * Constructor - * - * @param context {@link Context} - */ - public DatabaseHelper(Context context) { - super(context, DATABASE_NAME, null, DATABASE_VERSION); - } - - /** - * Write an event to the database - * - * @param trackingEvent {@link TrackingEvent} - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - public void writeEvent(TrackingEvent trackingEvent) - throws IllegalArgumentException { - if (trackingEvent == null) { - throw new IllegalArgumentException("'trackingEvent' cannot be null!"); - } - Logger.logd(TAG, "Event written to database: " + trackingEvent); - SQLiteDatabase db = getWritableDatabase(); - ContentValues contentValues = trackingEvent.toContentValues(); - db.insert(TrackingEventContract.EVENT_TABLE_NAME, null, contentValues); - db.close(); - } - - /** - * Get a list of tracking events - * - * @param instanceId {@link Integer} - * @return {@link List} - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - public List getTrackingEventsByCategory(int instanceId, - TrackingEvent.Category category) throws IllegalArgumentException { - if (category == null) { - throw new IllegalArgumentException("'category' cannot be null!"); - } - - List eventList = new ArrayList(); - - // Get a writable database - SQLiteDatabase db = getWritableDatabase(); - - // Update unclaimed items for this instance - ContentValues contentValues = new ContentValues(); - contentValues.put(TrackingEventContract.EVENT_COLUMN_INSTANCE, instanceId); - String whereClause = TrackingEventContract.EVENT_COLUMN_INSTANCE + " IS NULL AND " - + TrackingEventContract.EVENT_COLUMN_CATEGORY + " = ? "; - String[] whereArgs = new String[] { - category.name(), - }; - int cnt = db.update(TrackingEventContract.EVENT_TABLE_NAME, contentValues, whereClause, - whereArgs); - - // Short circuit empty update - if (cnt < 1) { - return eventList; - } - - // Select all tagged items - String selection = TrackingEventContract.EVENT_COLUMN_CATEGORY + " = ? AND " - + TrackingEventContract.EVENT_COLUMN_INSTANCE + " = ? "; - String[] selectionArgs = new String[]{ - category.name(), - String.valueOf(instanceId), - }; - Cursor c = db.query(TrackingEventContract.EVENT_TABLE_NAME, null, selection, selectionArgs, - null, null, null); - - // Build return list - while (c != null && c.getCount() > 0 && c.moveToNext()) { - eventList.add(new TrackingEvent(c)); - } - - db.close(); - - return eventList; - } - - /** - * Deletes events related to the instance - * - * @param instanceId {@link Integer} - * @return {@link Integer} - */ - public int deleteEventsByInstanceId(int instanceId) { - SQLiteDatabase db = getWritableDatabase(); - String whereClause = TrackingEventContract.EVENT_COLUMN_INSTANCE + " = ?"; - String[] whereArgs = new String[]{ - String.valueOf(instanceId), - }; - int cnt = db.delete(TrackingEventContract.EVENT_TABLE_NAME, whereClause, whereArgs); - db.close(); - return cnt; - } - - @Override - public void onCreate(SQLiteDatabase db) { - db.execSQL(TrackingEventContract.CREATE_EVENT_TABLE); - } - - @Override - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - - // [NOTE][MSB]: This will lose data, need to make sure this is handled if/when database - // schema changes - - // db.execSQL("DROP TABLE IF EXISTS " + TrackingEventContract.EVENT_TABLE_NAME); - // onCreate(db); - - } - -} diff --git a/src/com/android/launcher3/stats/internal/db/TrackingEventContract.java b/src/com/android/launcher3/stats/internal/db/TrackingEventContract.java deleted file mode 100644 index 481a431..0000000 --- a/src/com/android/launcher3/stats/internal/db/TrackingEventContract.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.android.launcher3.stats.internal.db; - -import android.provider.BaseColumns; - -/** - *
- *     Table contract definition
- * 
- * - * @see {@link BaseColumns} - */ -public class TrackingEventContract implements BaseColumns { - - // Constants - public static final String EVENT_TABLE_NAME = "event"; - - // Columns - public static final String EVENT_COLUMN_CATEGORY = "category"; - public static final String EVENT_COLUMN_METADATA = "metadata"; - public static final String EVENT_COLUMN_INSTANCE = "instance"; - - // SQL - public static final String CREATE_EVENT_TABLE = "CREATE TABLE " + EVENT_TABLE_NAME - + " ( " - + " `" + _ID + "` INTEGER PRIMARY KEY AUTOINCREMENT, " - + " `" + EVENT_COLUMN_CATEGORY + "` TEXT, " - + " `" + EVENT_COLUMN_METADATA + "` TEXT, " - + " `" + EVENT_COLUMN_INSTANCE + "` INTEGER " - + ");"; - -} diff --git a/src/com/android/launcher3/stats/internal/model/CountAction.java b/src/com/android/launcher3/stats/internal/model/CountAction.java deleted file mode 100644 index d509d4d..0000000 --- a/src/com/android/launcher3/stats/internal/model/CountAction.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2015. The CyanogenMod 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.stats.internal.model; - -import android.os.Bundle; -import android.text.TextUtils; -import com.android.launcher3.stats.external.TrackingBundle; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - *
- *     Handles the specific for sending a tracking event
- * 
- * - * @see {@link ITrackingAction} - */ -public class CountAction implements ITrackingAction { - - public static final String TRACKING_ACTION = "count"; - - @Override - public String toString() { - return TRACKING_ACTION; - } - - @Override - public List createTrackingBundles(String trackingId, TrackingEvent.Category category, - List eventList) { - - Map> eventPackageMap = - new HashMap>(); - - for (TrackingEvent event : eventList) { - String pkg = event.getMetaData(TrackingEvent.KEY_PACKAGE); - pkg = (TextUtils.isEmpty(pkg)) ? trackingId : pkg; - if (!eventPackageMap.containsKey(pkg)) { - eventPackageMap.put(pkg, new ArrayList()); - } - eventPackageMap.get(pkg).add(event); - } - - List bundleList = new ArrayList(); - for (Map.Entry> entry : eventPackageMap.entrySet()) { - Bundle bundle = TrackingBundle.createTrackingBundle(trackingId, category.name(), - TRACKING_ACTION); - bundle.putInt(TrackingBundle.KEY_METADATA_VALUE, entry.getValue().size()); - String pkg = entry.getKey(); - if (!pkg.equals(trackingId)) { - bundle.putString(TrackingBundle.KEY_METADATA_PACKAGE, pkg); - } - bundleList.add(bundle); - } - return bundleList; - } -} diff --git a/src/com/android/launcher3/stats/internal/model/CountOriginByPackageAction.java b/src/com/android/launcher3/stats/internal/model/CountOriginByPackageAction.java deleted file mode 100644 index fc04ca0..0000000 --- a/src/com/android/launcher3/stats/internal/model/CountOriginByPackageAction.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 2015. The CyanogenMod 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.stats.internal.model; - -import android.os.Bundle; -import android.text.TextUtils; -import com.android.launcher3.stats.external.TrackingBundle; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - *
- *     This is an action to send a count of events with common origins
- * 
- */ -public class CountOriginByPackageAction implements ITrackingAction { - - public static final String TRACKING_ACTION = "count_by_origin"; - - @Override - public String toString() { - return TRACKING_ACTION; - } - - @Override - public List createTrackingBundles(String trackingId, TrackingEvent.Category category, - List eventList) { - // Make an origin mapper - Map>> originEventMap = - new HashMap>>(); - - // Parse the event list and categorize by origin - for (TrackingEvent event : eventList) { - // We are parsing for things with origin, if no origin is set, discard it! - if (TextUtils.isEmpty(event.getMetaData(TrackingEvent.KEY_ORIGIN))) { - continue; - } - String originKey = event.getMetaData(TrackingEvent.KEY_ORIGIN); - if (!originEventMap.containsKey(originKey)) { - HashMap> newMap = - new HashMap>(); - originEventMap.put(originKey, newMap); - } - String packageName = event.getMetaData(TrackingEvent.KEY_PACKAGE); - // Set a default so our iteration picks it up and just discard package metadata - packageName = (TextUtils.isEmpty(packageName)) ? trackingId : packageName; - if (!originEventMap.get(originKey).containsKey(packageName)) { - originEventMap.get(originKey).put(packageName, new ArrayList()); - } - originEventMap.get(originKey).get(packageName).add(event); - } - - // Start building result tracking bundles - List bundleList = new ArrayList(); - for (Map.Entry>> entry : - originEventMap.entrySet()) { - String origin = entry.getKey(); - for (Map.Entry> entry2 : entry.getValue().entrySet()) { - String pkg = entry2.getKey(); - List events = entry2.getValue(); - Bundle bundle = TrackingBundle.createTrackingBundle(trackingId, category.name(), - TRACKING_ACTION); - bundle.putString(TrackingBundle.KEY_METADATA_ORIGIN, origin); - bundle.putInt(TrackingBundle.KEY_METADATA_VALUE, events.size()); - if (!trackingId.equals(pkg)) { - bundle.putString(TrackingBundle.KEY_METADATA_PACKAGE, pkg); - } - bundleList.add(bundle); - } - } - return bundleList; - } - -} diff --git a/src/com/android/launcher3/stats/internal/model/ITrackingAction.java b/src/com/android/launcher3/stats/internal/model/ITrackingAction.java deleted file mode 100644 index b577ed2..0000000 --- a/src/com/android/launcher3/stats/internal/model/ITrackingAction.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2015. The CyanogenMod 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.stats.internal.model; - -import android.os.Bundle; - -import java.util.List; - -/** - *
- *     This is an action we want to perfrom from a report.
- *
- *     e.g.
- *          1. I want to get the COUNT of widgets added
- *          2. I want to get the origin of app launches
- * 
- */ -public interface ITrackingAction { - - /** - * Creates a new bundle used to tracking events - * - * @param trackingId {@link String} - * @param category {@link com.android.launcher3.stats.internal.model.TrackingEvent.Category} - * @param eventList {@link List} - * @return {@link List} - */ - List createTrackingBundles(String trackingId, TrackingEvent.Category category, - List eventList); - -} diff --git a/src/com/android/launcher3/stats/util/Logger.java b/src/com/android/launcher3/stats/util/Logger.java deleted file mode 100644 index 8d73f54..0000000 --- a/src/com/android/launcher3/stats/util/Logger.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2015. The CyanogenMod 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.stats.util; - -import android.os.Build; -import android.text.TextUtils; -import android.util.Log; - -/** - *
- *     Metrics debug logging
- * 
- */ -public class Logger { - - private static final String TAG = "TrebuchetStats"; - - /** - * Log a debug message - * - * @param tag {@link String} - * @param msg {@link String } - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - public static void logd(String tag, String msg) throws IllegalArgumentException { - if (TextUtils.isEmpty(tag)) { - throw new IllegalArgumentException("'tag' cannot be empty!"); - } - if (TextUtils.isEmpty(msg)) { - throw new IllegalArgumentException("'msg' cannot be empty!"); - } - if (isDebugging()) { - Log.d(TAG, tag + " [ " + msg + " ]"); - } - } - - private static boolean isDebugging() { - return Log.isLoggable(TAG, Log.DEBUG); - } - -} -- 2.8.2 From 2514dc636747cc8f9f13709877e152d28eeefd95 Mon Sep 17 00:00:00 2001 From: Tad Date: Thu, 5 May 2016 09:48:16 -0400 Subject: [PATCH 2/5] Nuke analytics Change-Id: Iced69b10508f8a5a1926ae475272982ee41ffb17 --- src/com/android/launcher3/Launcher.java | 3 - src/com/android/launcher3/LauncherApplication.java | 15 -- src/com/android/launcher3/stats/LauncherStats.java | 246 --------------------- .../stats/internal/model/TrackingEvent.java | 206 ----------------- .../internal/service/AggregationIntentService.java | 238 -------------------- 5 files changed, 708 deletions(-) delete mode 100644 src/com/android/launcher3/stats/LauncherStats.java delete mode 100644 src/com/android/launcher3/stats/internal/model/TrackingEvent.java delete mode 100644 src/com/android/launcher3/stats/internal/service/AggregationIntentService.java diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 37f3931..f5744dd 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -5297,9 +5297,6 @@ public class Launcher extends Activity AnimationDrawable frameAnimation = (AnimationDrawable) mAnimatedArrow.getBackground(); frameAnimation.start(); - - LauncherApplication.getLauncherStats().sendSettingsOpenedEvent( - LauncherStats.ORIGIN_TREB_LONGPRESS); } @Override diff --git a/src/com/android/launcher3/LauncherApplication.java b/src/com/android/launcher3/LauncherApplication.java index 4bbcec0..a921128 100644 --- a/src/com/android/launcher3/LauncherApplication.java +++ b/src/com/android/launcher3/LauncherApplication.java @@ -18,27 +18,12 @@ package com.android.launcher3; import android.app.Application; -import com.android.launcher3.stats.LauncherStats; -import com.android.launcher3.stats.internal.service.AggregationIntentService; public class LauncherApplication extends Application { - private static LauncherStats sLauncherStats = null; - - /** - * Get the reference handle for LauncherStats commands - * - * @return {@link LauncherStats} - */ - public static LauncherStats getLauncherStats() { - return sLauncherStats; - } - @Override public void onCreate() { super.onCreate(); - sLauncherStats = LauncherStats.getInstance(this); - AggregationIntentService.scheduleService(this); } } diff --git a/src/com/android/launcher3/stats/LauncherStats.java b/src/com/android/launcher3/stats/LauncherStats.java deleted file mode 100644 index 5e8cb83..0000000 --- a/src/com/android/launcher3/stats/LauncherStats.java +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright (c) 2015. The CyanogenMod 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.stats; - -import android.content.Context; -import android.os.Handler; -import android.os.HandlerThread; -import android.os.Message; -import android.text.TextUtils; -import android.util.Log; -import com.android.launcher3.stats.internal.db.DatabaseHelper; -import com.android.launcher3.stats.internal.model.TrackingEvent; - -/** - *
- *     Utility class made specifically for Launcher related events
- * 
- */ -public class LauncherStats { - - // Constants - private static final String TAG = LauncherStats.class.getSimpleName(); - private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); - private static final int MSG_STORE_EVENT = 1000; - public static final String SETTINGS_PACKAGE_NAME = "com.android.settings"; - public static final String ORIGIN_HOMESCREEN = "homescreen"; - public static final String ORIGIN_APPDRAWER = "appdrawer"; - public static final String ORIGIN_TREB_LONGPRESS = "trebuchet_longpress"; - public static final String ORIGIN_CHOOSER = "theme_chooser"; - public static final String ORIGIN_SETTINGS = "settings"; - public static final String ORIGIN_DRAG_DROP = "drag_drop"; - public static final String ORIGIN_FOLDER = "folder"; - - private static void log(String msg) throws IllegalArgumentException { - if (TextUtils.isEmpty(msg)) { - throw new IllegalArgumentException("'msg' cannot be null or empty!"); - } - if (DEBUG) { - Log.d(TAG, msg); - } - } - - private static void loge(String msg) throws IllegalArgumentException { - if (TextUtils.isEmpty(msg)) { - throw new IllegalArgumentException("'msg' cannot be null or empty!"); - } - Log.e(TAG, msg); - } - - /** - *
-     *     This is a thread responsible for writing events to a database
-     * 
- * - * @see {@link HandlerThread} - */ - private static class WriteHandlerThread extends HandlerThread { - public WriteHandlerThread() { - super(WriteHandlerThread.class.getSimpleName()); - } - } - - /** - *
-     *     Handler for issuing db writes
-     * 
- * - * @see {@link Handler} - */ - private static class WriteHandler extends Handler { - - public WriteHandler() { - super(sHandlerThread.getLooper()); - } - - @Override - public void handleMessage(Message msg) { - log("Handling message: " + msg.what); - switch (msg.what) { - case MSG_STORE_EVENT: - handleStoreEvent((TrackingEvent) msg.obj); - break; - default: - super.handleMessage(msg); - } - } - } - - // Instance - private static LauncherStats sInstance = null; - - // Members - private static WriteHandlerThread sHandlerThread; - private static WriteHandler sWriteHandler; - private static DatabaseHelper sDatabaseHelper; - - /** - * Send a message to the handler to store event data - * - * @param trackingEvent {@link TrackingEvent} - */ - protected void sendStoreEventMessage(TrackingEvent trackingEvent) { - log("Sending tracking event to handler: " + trackingEvent); - Message msg = new Message(); - msg.what = MSG_STORE_EVENT; - msg.obj = trackingEvent; - sWriteHandler.sendMessage(msg); - } - - /** - * Handle the storing work - * - * @param trackingEvent {@link TrackingEvent} - */ - private static void handleStoreEvent(TrackingEvent trackingEvent) { - log("Handling store event: " + trackingEvent); - if (trackingEvent != null) { - sDatabaseHelper.writeEvent(trackingEvent); - } else { - loge("Tracking event was null!"); - } - } - - /** - * Used only for overlay extensions - */ - protected LauncherStats() { } - - /** - * Constructor - * - * @param context {@link Context} not null! - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - private LauncherStats(Context context) throws IllegalArgumentException { - if (context == null) { - throw new IllegalArgumentException("'context' cannot be null!"); - } - sDatabaseHelper = new DatabaseHelper(context); - sHandlerThread = new WriteHandlerThread(); - sHandlerThread.start(); - sWriteHandler = new WriteHandler(); - } - - /** - * Gets a singleton instance of the stats utility - * - * @param context {@link Context} not null! - * @return {@link LauncherStats} - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - public static LauncherStats getInstance(Context context) - throws IllegalArgumentException { - if (sInstance == null) { - sInstance = new LauncherStats(context); - } - return sInstance; - } - - /** - * Interface for posting a new widget add event - * - * @param pkg {@link String} package name of widget - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - public void sendWidgetAddEvent(String pkg) throws IllegalArgumentException { - if (TextUtils.isEmpty(pkg)) { - throw new IllegalArgumentException("'pkg' cannot be null!"); - } - TrackingEvent trackingEvent = new TrackingEvent(TrackingEvent.Category.WIDGET_ADD); - trackingEvent.setMetaData(TrackingEvent.KEY_PACKAGE, pkg); - sendStoreEventMessage(trackingEvent); - } - - /** - * Interface for posting a new widget removal event - * - * @param pkg {@link String} package name of widget - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - public void sendWidgetRemoveEvent(String pkg) throws IllegalArgumentException { - if (TextUtils.isEmpty(pkg)) { - throw new IllegalArgumentException("'pkg' cannot be null!"); - } - TrackingEvent trackingEvent = new TrackingEvent(TrackingEvent.Category.WIDGET_REMOVE); - trackingEvent.setMetaData(TrackingEvent.KEY_PACKAGE, pkg); - sendStoreEventMessage(trackingEvent); - } - - /** - * Interface for posting an app launch event - * - * @param origin {@link String} origin of application launch - * @param pkg {@link String} package of app launched - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - public void sendAppLaunchEvent(String origin, String pkg) throws IllegalArgumentException { - if (TextUtils.isEmpty(origin)) { - throw new IllegalArgumentException("'origin' cannot be null!"); - } - if (TextUtils.isEmpty(pkg)) { - throw new IllegalArgumentException("'pkg' cannot be null!"); - } - TrackingEvent trackingEvent = new TrackingEvent(TrackingEvent.Category.APP_LAUNCH); - trackingEvent.setMetaData(TrackingEvent.KEY_ORIGIN, origin); - trackingEvent.setMetaData(TrackingEvent.KEY_PACKAGE, pkg); - sendStoreEventMessage(trackingEvent); - } - - /** - * Interface for sending a "settings opened" event - * - * @param origin {@link String} origin of the event - */ - public void sendSettingsOpenedEvent(String origin) { - TrackingEvent trackingEvent = new TrackingEvent(TrackingEvent.Category.SETTINGS_OPEN); - trackingEvent.setMetaData(TrackingEvent.KEY_ORIGIN, origin); - sendStoreEventMessage(trackingEvent); - } - - /** - * Interface for sending a "wallpaper changed" event - * - * @param origin {@link String} origin of the event - */ - public void sendWallpaperChangedEvent(String origin) { - TrackingEvent trackingEvent = new TrackingEvent(TrackingEvent.Category.WALLPAPER_CHANGE); - trackingEvent.setMetaData(TrackingEvent.KEY_ORIGIN, origin); - sendStoreEventMessage(trackingEvent); - } - -} diff --git a/src/com/android/launcher3/stats/internal/model/TrackingEvent.java b/src/com/android/launcher3/stats/internal/model/TrackingEvent.java deleted file mode 100644 index 44aaeb3..0000000 --- a/src/com/android/launcher3/stats/internal/model/TrackingEvent.java +++ /dev/null @@ -1,206 +0,0 @@ -/* - * Copyright (c) 2015. The CyanogenMod 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.stats.internal.model; - -import android.content.ContentValues; -import android.database.Cursor; -import android.os.Bundle; -import android.text.TextUtils; -import android.util.Log; -import com.android.launcher3.stats.external.TrackingBundle; -import com.android.launcher3.stats.internal.db.TrackingEventContract; -import com.android.launcher3.stats.util.Logger; - -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -/** - *
- *     Model of an event to track
- * 
- */ -public class TrackingEvent { - - // Constants - private static final String TAG = TrackingEvent.class.getSimpleName(); - - // Members - private Category mCategory; - private final Map mMetaData = new HashMap(); - - public enum Category { - APP_LAUNCH, - WIDGET_ADD, - WIDGET_REMOVE, - SETTINGS_OPEN, - WALLPAPER_CHANGE, - HOMESCREEN_PAGE, - WIDGET, - REMOTE_FOLDER - } - - public static final String KEY_ORIGIN = TrackingBundle.KEY_METADATA_ORIGIN; - public static final String KEY_VALUE = TrackingBundle.KEY_METADATA_VALUE; - public static final String KEY_PACKAGE = TrackingBundle.KEY_METADATA_PACKAGE; - public static final String KEY_ACTION = TrackingBundle.KEY_EVENT_ACTION; - - /** - * Constructor - * - * @param category {@link TrackingEvent.Category} - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - public TrackingEvent(Category category) throws IllegalArgumentException { - if (category == null) { - throw new IllegalArgumentException("'category' cannot be null or empty!"); - } - mCategory = category; - } - - /** - * Constructor - * - * @param cursor {@link Cursor} - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - public TrackingEvent(Cursor cursor) throws IllegalArgumentException { - if (cursor == null) { - throw new IllegalArgumentException("'cursor' cannot be null!"); - } - mCategory = Category.valueOf(cursor.getString(cursor.getColumnIndex( - TrackingEventContract.EVENT_COLUMN_CATEGORY))); - String metadata = cursor.getString(cursor.getColumnIndex( - TrackingEventContract.EVENT_COLUMN_METADATA)); - if (!TextUtils.isEmpty(metadata)) { - String[] parts = metadata.split(","); - for (String part : parts) { - try { - String key = part.split("=")[0]; - String val = part.split("=")[1]; - mMetaData.put(key, val); - } catch (IndexOutOfBoundsException e) { - Log.w(TAG, e.getMessage(), e); - } - } - } - } - - /** - * Get the category - * - * @return {@link TrackingEvent.Category} - */ - public Category getCategory() { - return mCategory; - } - - /** - * Get the set of meta data keys - * - * @return {@link Set} - */ - public Set getMetaDataKeySet() { - return mMetaData.keySet(); - } - - /** - * Set some meta data - * - * @param key {@link String} - * @param value {@link String} - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - public void setMetaData(String key, String value) throws IllegalArgumentException { - if (TextUtils.isEmpty(key)) { - throw new IllegalArgumentException("'key' cannot be null or empty!"); - } - if (TextUtils.isEmpty(value)) { - throw new IllegalArgumentException("'value' cannot be null or empty!"); - } - mMetaData.put(key, value); - } - - /** - * Get some meta data value - * - * @param key {@link String} - * @return {@link String} - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - public String getMetaData(String key) throws IllegalArgumentException { - if (TextUtils.isEmpty(key)) { - throw new IllegalArgumentException("'key' cannot be null or empty!"); - } - if (mMetaData.containsKey(key)) { - return mMetaData.get(key); - } - return null; - } - - /** - * Remove some meta data - * - * @param key {@link String} - * @return {@link String} or null - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - public String removeMetaData(String key) throws IllegalArgumentException { - if (TextUtils.isEmpty(key)) { - throw new IllegalArgumentException("'key' cannot be null or empty!"); - } - if (mMetaData.containsKey(key)) { - return mMetaData.remove(key); - } - return null; - } - - /** - * Converts this object into content values for use with sqlite - * - * @return {@link ContentValues} - */ - public ContentValues toContentValues() { - ContentValues contentValues = new ContentValues(); - contentValues.put(TrackingEventContract.EVENT_COLUMN_CATEGORY, mCategory.name()); - StringBuilder sb = new StringBuilder(); - for (String key : mMetaData.keySet()) { - sb.append(key).append("=").append(mMetaData.get(key)).append(","); - } - if (sb.length() > 0) { - String metadata = sb.toString(); - metadata = metadata.substring(0, metadata.length() - 1); - Logger.logd(TAG, "MetaData: " + metadata); - contentValues.put(TrackingEventContract.EVENT_COLUMN_METADATA, metadata); - } - return contentValues; - } - - /** - * Convert this object into a tracking bundle - * - * @param trackingId {@link String} - * @param action {@link ITrackingAction} - * @return {@link Bundle} - */ - public Bundle toTrackingBundle(String trackingId, ITrackingAction action) { - Bundle bundle = TrackingBundle.createTrackingBundle(trackingId, mCategory.name(), - action.toString()); - return bundle; - } - -} diff --git a/src/com/android/launcher3/stats/internal/service/AggregationIntentService.java b/src/com/android/launcher3/stats/internal/service/AggregationIntentService.java deleted file mode 100644 index b32d79b..0000000 --- a/src/com/android/launcher3/stats/internal/service/AggregationIntentService.java +++ /dev/null @@ -1,238 +0,0 @@ -/* - * Copyright (c) 2015. The CyanogenMod 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.stats.internal.service; - -import android.app.AlarmManager; -import android.app.IntentService; -import android.app.PendingIntent; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.SharedPreferences; -import android.content.pm.PackageManager; -import android.os.Bundle; -import android.preference.PreferenceManager; -import android.util.Log; - -import com.android.launcher3.LauncherAppState; -import com.android.launcher3.stats.external.StatsUtil; -import com.android.launcher3.stats.external.TrackingBundle; -import com.android.launcher3.stats.internal.db.DatabaseHelper; -import com.android.launcher3.stats.internal.model.CountAction; -import com.android.launcher3.stats.internal.model.CountOriginByPackageAction; -import com.android.launcher3.stats.internal.model.ITrackingAction; -import com.android.launcher3.stats.internal.model.RemoteFolderAction; -import com.android.launcher3.stats.internal.model.TrackingEvent; -import com.android.launcher3.stats.util.Logger; - -import java.util.ArrayList; -import java.util.List; - -/** - *
- *     Service that starts on a timer and handles aggregating events and sending them to
- *     CyanogenStats
- * 
- * - * @see {@link IntentService} - */ -public class AggregationIntentService extends IntentService { - - // Constants - private static final String TAG = AggregationIntentService.class.getSimpleName(); - private static final String TRACKING_ID = "com.cyanogenmod.trebuchet"; - public static final String ACTION_AGGREGATE_AND_TRACK = - "com.cyanogenmod.trebuchet.AGGREGATE_AND_TRACK"; - private static final List TRACKED_ACTIONS = new ArrayList() { - { - add(new CountAction()); - add(new CountOriginByPackageAction()); - } - }; - private static final int INVALID_COUNT = -1; - private static final String KEY_LAST_TIME_RAN = "last_time_stats_ran"; - public static final String PREF_KEY_PAGE_COUNT = "page_count"; - public static final String PREF_KEY_WIDGET_COUNT = "widget_count"; - - // Members - private DatabaseHelper mDatabaseHelper = null; - private int mInstanceId = -1; - private SharedPreferences mPrefs = null; - - /** - * Creates an IntentService. Invoked by your subclass's constructor. - */ - public AggregationIntentService() { - super(AggregationIntentService.class.getSimpleName()); - } - - @Override - protected void onHandleIntent(Intent intent) { - if (!isTrebuchetDefaultLauncher()) { - // Cancel repeating schedule - unscheduleService(); - // don't return b/c we still want to upload whatever metrics are left. - } - String action = intent.getAction(); - if (ACTION_AGGREGATE_AND_TRACK.equals(action)) { - mPrefs = getSharedPreferences(LauncherAppState.getSharedPreferencesKey(), - Context.MODE_PRIVATE); - mPrefs.edit().putLong(KEY_LAST_TIME_RAN, System.currentTimeMillis()).apply(); - mInstanceId = (int) System.currentTimeMillis(); - mDatabaseHelper = DatabaseHelper.createInstance(this); - performAggregation(); - deleteTrackingEventsForInstance(); - handleNonEventMetrics(); - } - } - - private void performAggregation() { - - // Iterate available categories - for (TrackingEvent.Category category : TrackingEvent.Category.values()) { - - // Fetch the events from the database based on the category - List eventList = - mDatabaseHelper.getTrackingEventsByCategory(mInstanceId, category); - - Logger.logd(TAG, "Event list size: " + eventList.size()); - // Short circuit if no events for the category - if (eventList.size() < 1) { - continue; - } - - // Now crunch the data into actionable events for the server. - // Remote Folder data will process itself separately. - if (category == TrackingEvent.Category.REMOTE_FOLDER) { - performTrackingCall(new RemoteFolderAction(), category, eventList); - } else { - for (ITrackingAction action : TRACKED_ACTIONS) { - performTrackingCall(action, category, eventList); - } - } - } - } - - private void deleteTrackingEventsForInstance() { - mDatabaseHelper.deleteEventsByInstanceId(mInstanceId); - } - - /** - * These are metrics that are not event based and need a snapshot every INTERVAL - */ - private void handleNonEventMetrics() { - sendPageCountStats(); - sendWidgetCountStats(); - - } - - private void sendPageCountStats() { - int pageCount = mPrefs.getInt(PREF_KEY_PAGE_COUNT, INVALID_COUNT); - if (pageCount == INVALID_COUNT) { - return; - } - Bundle bundle = TrackingBundle - .createTrackingBundle(TRACKING_ID, TrackingEvent.Category.HOMESCREEN_PAGE.name(), - "count"); - bundle.putString(TrackingEvent.KEY_VALUE, String.valueOf(pageCount)); - StatsUtil.sendEvent(this, bundle); - } - - private void sendWidgetCountStats() { - int widgetCount = mPrefs.getInt(PREF_KEY_WIDGET_COUNT, INVALID_COUNT); - if (widgetCount == INVALID_COUNT) { - return; - } - Bundle bundle = TrackingBundle - .createTrackingBundle(TRACKING_ID, TrackingEvent.Category.WIDGET.name(), "count"); - bundle.putString(TrackingEvent.KEY_VALUE, String.valueOf(widgetCount)); - StatsUtil.sendEvent(this, bundle); - } - - private void performTrackingCall(ITrackingAction action, TrackingEvent.Category category, - List eventList) - throws IllegalArgumentException { - try { - for (Bundle bundle : action.createTrackingBundles(TRACKING_ID, category, eventList)) { - StatsUtil.sendEvent(this, bundle); - } - } catch (NullPointerException e) { - Log.e(TAG, "NPE fetching bundle list!", e); - } catch (IllegalArgumentException e) { - Log.e(TAG, "Illegal argument!", e); - } - } - - private void unscheduleService() { - Intent intent = new Intent(this, AggregationIntentService.class); - intent.setAction(ACTION_AGGREGATE_AND_TRACK); - PendingIntent pi = PendingIntent.getService(this, 0, intent, - PendingIntent.FLAG_UPDATE_CURRENT); - AlarmManager alarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); - alarmManager.cancel(pi); - } - - private boolean isTrebuchetDefaultLauncher() { - final IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN); - filter.addCategory(Intent.CATEGORY_HOME); - - List filters = new ArrayList(); - filters.add(filter); - - final String myPackageName = getPackageName(); - List activities = new ArrayList(); - final PackageManager packageManager = getPackageManager(); - - // You can use name of your package here as third argument - packageManager.getPreferredActivities(filters, activities, null); - - for (ComponentName activity : activities) { - if (myPackageName.equals(activity.getPackageName())) { - Logger.logd(TAG, "Trebuchet IS default launcher!"); - return true; - } - } - Logger.logd(TAG, "Trebuchet IS NOT default launcher!"); - return false; - } - - private static final long ALARM_INTERVAL = 86400000; // 1 day - - /** - * Schedule an alarm service, will cancel existing - * - * @param context {@link Context} - * @throws IllegalArgumentException {@link IllegalArgumentException} - */ - public static void scheduleService(Context context) throws IllegalArgumentException { - if (context == null) { - throw new IllegalArgumentException("'context' cannot be null!"); - } - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - long lastTimeRan = prefs.getLong(KEY_LAST_TIME_RAN, 0); - Intent intent = new Intent(context, AggregationIntentService.class); - intent.setAction(ACTION_AGGREGATE_AND_TRACK); - PendingIntent pi = PendingIntent.getService(context, 0, intent, - PendingIntent.FLAG_UPDATE_CURRENT); - AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); - alarmManager.cancel(pi); - alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, lastTimeRan + ALARM_INTERVAL, - ALARM_INTERVAL, pi); - } - -} -- 2.8.2 From 3a182fd5cd65ca8ee85fddd458cbe32c562a58eb Mon Sep 17 00:00:00 2001 From: Tad Date: Thu, 5 May 2016 10:05:20 -0400 Subject: [PATCH 3/5] Nuke remotefolder Change-Id: Ie56aa15051c66a3957c9dfd3b2b20639e27512cc --- RemoteFolder/Android-prebuilt-libs.mk | 1 - RemoteFolder/Android.mk | 1 - .../com/android/launcher3/RemoteFolderManager.java | 151 --------------------- .../stats/internal/model/RemoteFolderAction.java | 30 ---- res/layout/user_folder.xml | 4 - res/values/preferences_defaults.xml | 2 - src/com/android/launcher3/FolderInfo.java | 20 --- src/com/android/launcher3/Launcher.java | 37 +---- src/com/android/launcher3/LauncherModel.java | 7 +- .../list/SettingsPinnedHeaderAdapter.java | 26 ---- .../launcher3/settings/SettingsProvider.java | 2 - 11 files changed, 7 insertions(+), 274 deletions(-) delete mode 100644 RemoteFolder/Android-prebuilt-libs.mk delete mode 100644 RemoteFolder/Android.mk delete mode 100644 RemoteFolder/src/com/android/launcher3/RemoteFolderManager.java delete mode 100644 RemoteFolder/src/com/android/launcher3/stats/internal/model/RemoteFolderAction.java diff --git a/RemoteFolder/Android-prebuilt-libs.mk b/RemoteFolder/Android-prebuilt-libs.mk deleted file mode 100644 index 65357a8..0000000 --- a/RemoteFolder/Android-prebuilt-libs.mk +++ /dev/null @@ -1 +0,0 @@ -# Empty file needed to mirror lib makefile in overlay \ No newline at end of file diff --git a/RemoteFolder/Android.mk b/RemoteFolder/Android.mk deleted file mode 100644 index 2a74413..0000000 --- a/RemoteFolder/Android.mk +++ /dev/null @@ -1 +0,0 @@ -LOCAL_SRC_FILES += $(call all-java-files-under, RemoteFolder/src) diff --git a/RemoteFolder/src/com/android/launcher3/RemoteFolderManager.java b/RemoteFolder/src/com/android/launcher3/RemoteFolderManager.java deleted file mode 100644 index 142a4d1..0000000 --- a/RemoteFolder/src/com/android/launcher3/RemoteFolderManager.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.android.launcher3; - -import android.content.Context; -import android.graphics.drawable.Drawable; -import android.os.Bundle; -import android.view.View; -import android.view.ViewGroup; -import com.android.launcher3.allapps.AllAppsGridAdapter; -import com.android.launcher3.allapps.AlphabeticalAppsList; - -import java.util.ArrayList; -import java.util.List; - -/** - * Manages adding and removing the remote folder from the workspace. - */ -public class RemoteFolderManager { - - public RemoteFolderManager(final Launcher launcher) { } - - /** - * Called when launcher receives a non-initial {@link Launcher#onCreate(Bundle)} call. - * @param launcher new launcher activity. - */ - public void onRecreateLauncher(final Launcher launcher) { } - - /** - * Called when Launcher's views are loaded and ready. - */ - public void onSetupViews() { } - - /** - * Create a remote folder view. - * @param icon folder icon view on the workspace. - * @return a view for the remote folder. - */ - public Folder createRemoteFolder(final FolderIcon icon, ViewGroup root) { return null; } - - /** - * Get a drawable for the supplied item in the folder icon preview. - * @param items list of views in the folder. - * @param position index of icon to retreive. - * @return an icon to draw in the folder preview. - */ - public Drawable getFolderIconDrawable(final ArrayList items, - final int position) { return null; } - - /** - * Called when Launcher finishes binding items from the model. - */ - public void bindFinished() { } - - /** - * Called when a setting for remote folder is updated. - */ - public void onSettingChanged() { } - - /** - * Called when the remote folder is dropped into the delete area on the workspace. - */ - public void onFolderDeleted() { } - - /** - * Called when the app drawer is opened. - */ - public void onAppDrawerOpened() { } - - /** - * Called when the app drawer is reloaded. - */ - public void onReloadAppDrawer() { } - - /** - * Called when the app drawer is measured. - * @param numAppsPerRow the number of apps the drawer will show in a row. - */ - public void onMeasureDrawer(int numAppsPerRow) { } - - /** - * Called when new apps are added to launcher. - * @param apps list of added apps. - */ - public void onBindAddApps(ArrayList apps) { } - - /** - * Called when the info icon is clicked - */ - public void onInfoIconClicked() { } - - /** - * Called when the grid size for launcher is updated. - */ - public void onGridSizeChanged() { } - - /** - * Change the appearance of FolderIcon for our RemoteFolder by adding a badge - * @param icon the FolderIcon to update - * @return a FolderIcon with an added ImageView - */ - public static FolderIcon addBadgeToFolderIcon(FolderIcon icon) { - return icon; - } - - /** - * Called when adapter items for predicted apps are updated. - * @param items current list of built adapter items. - * @param fastScrollInfo fast scroller info for this section. - * @param sectionInfo info about apps in this section. - * @param position current position of item to be built into the adapter. - * @return the new position to start from for next adapter items. - */ - public int onUpdateAdapterItems(final List items, - final AlphabeticalAppsList.FastScrollSectionInfo fastScrollInfo, - final AlphabeticalAppsList.SectionInfo sectionInfo, - int position) { return position; } - - /** - * Called when a view holder is created for a remote app. - * @param holder remote view holder. - * @param viewType specific type of view holder. - */ - public void onCreateViewHolder(final AllAppsGridAdapter.ViewHolder holder, final int viewType) { } - - /** - * Called when a view holder is bound for a remote app. - * @param holder remote view holder. - * @param item info for this app. - */ - public void onBindViewHolder(final AllAppsGridAdapter.ViewHolder holder, final AppInfo item) { } - - /** - * Populate home settings list with additional values as needed. - * @param values list of settings strings. - * @param context application context. - */ - public static void onInitializeHomeSettings(final ArrayList values, - final Context context) { } - - /** - * Populate drawer settings list with additional values as needed. - * @param values list of settings strings. - * @param context application context. - */ - public static void onInitializeDrawerSettings(final ArrayList values, - final Context context) { } - - /** - * Apply icon pack when the theme changes. - */ - public synchronized void onThemeChanged() { } -} diff --git a/RemoteFolder/src/com/android/launcher3/stats/internal/model/RemoteFolderAction.java b/RemoteFolder/src/com/android/launcher3/stats/internal/model/RemoteFolderAction.java deleted file mode 100644 index dc36332..0000000 --- a/RemoteFolder/src/com/android/launcher3/stats/internal/model/RemoteFolderAction.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2016. The CyanogenMod 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.stats.internal.model; - -import android.os.Bundle; - -import java.util.ArrayList; -import java.util.List; - -public class RemoteFolderAction implements ITrackingAction { - @Override - public List createTrackingBundles(String trackingId, TrackingEvent.Category category, - List eventList) { - return new ArrayList(); - } -} diff --git a/res/layout/user_folder.xml b/res/layout/user_folder.xml index 516da30..c2712ff 100644 --- a/res/layout/user_folder.xml +++ b/res/layout/user_folder.xml @@ -24,10 +24,6 @@ android:layout_margin="@dimen/folder_margin" android:layout_gravity="bottom|center_horizontal"> - - true true false - false - false 1 diff --git a/src/com/android/launcher3/FolderInfo.java b/src/com/android/launcher3/FolderInfo.java index 7969d62..2fa3dbc 100644 --- a/src/com/android/launcher3/FolderInfo.java +++ b/src/com/android/launcher3/FolderInfo.java @@ -28,7 +28,6 @@ import java.util.Arrays; * Represents a folder containing shortcuts or apps. */ public class FolderInfo extends ItemInfo { - public static final int REMOTE_SUBTYPE = 1; public static final int NO_FLAGS = 0x00000000; @@ -123,25 +122,6 @@ public class FolderInfo extends ItemInfo { itemsChanged(); } - /** - * @return true if this info represents a remote folder, false otherwise - */ - public boolean isRemote() { - return (subType & REMOTE_SUBTYPE) != 0; - } - - /** - * Set flag indicating whether this folder is remote - * @param remote true if folder is remote, false otherwise - */ - public void setRemote(final boolean remote) { - if (remote) { - subType |= REMOTE_SUBTYPE; - } else { - subType &= ~REMOTE_SUBTYPE; - } - } - public void setTitle(CharSequence title) { this.title = title; for (int i = 0; i < listeners.size(); i++) { diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index f5744dd..77f7db6 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -264,8 +264,6 @@ public class Launcher extends Activity private View mWeightWatcher; private DynamicGridSizeFragment mDynamicGridSizeFragment; - protected static RemoteFolderManager sRemoteFolderManager; - private AppWidgetManagerCompat mAppWidgetManager; private LauncherAppWidgetHost mAppWidgetHost; @@ -519,12 +517,6 @@ public class Launcher extends Activity mAppWidgetHost = new LauncherAppWidgetHost(this, APPWIDGET_HOST_ID); - if (sRemoteFolderManager == null) { - sRemoteFolderManager = new RemoteFolderManager(this); - } else { - sRemoteFolderManager.onRecreateLauncher(this); - } - // If we are getting an onCreate, we can actually preempt onResume and unset mPaused here, // this also ensures that any synchronous binding below doesn't re-trigger another // LauncherModel load. @@ -1629,7 +1621,6 @@ public class Launcher extends Activity mWeightWatcher.setVisibility(show ? View.VISIBLE : View.GONE); } - sRemoteFolderManager.onSetupViews(); } /** @@ -1887,7 +1878,6 @@ public class Launcher extends Activity mAppsView.addApps(addedApps); tryAndUpdatePredictedApps(); mAppsView.onReloadAppDrawer(); - sRemoteFolderManager.onReloadAppDrawer(); } public void reloadWidgetView() { @@ -1945,9 +1935,6 @@ public class Launcher extends Activity reloadLauncher(false, true); } - // Must be called after reload and before settings invalidation. - sRemoteFolderManager.onGridSizeChanged(); - mOverviewSettingsPanel.notifyDataSetInvalidated(); FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); @@ -2154,10 +2141,6 @@ public class Launcher extends Activity return mWorkspace; } - public RemoteFolderManager getRemoteFolderManager() { - return sRemoteFolderManager; - } - public Hotseat getHotseat() { return mHotseat; } @@ -3797,8 +3780,6 @@ public class Launcher extends Activity tryAndUpdatePredictedApps(); } showAppsOrWidgets(State.APPS, animated, focusSearchBar); - - sRemoteFolderManager.onAppDrawerOpened(); } /** @@ -3918,18 +3899,13 @@ public class Launcher extends Activity * resumed. */ private void tryAndUpdatePredictedApps() { - boolean mRemoteDrawerEnabled = SettingsProvider.getBoolean(this, - SettingsProvider.SETTINGS_UI_DRAWER_REMOTE_APPS, - R.bool.preferences_interface_drawer_remote_apps_default); - if (!mRemoteDrawerEnabled) { - if (mLauncherCallbacks != null) { - List apps = mLauncherCallbacks.getPredictedApps(); - if (apps != null) { - mAppsView.setPredictedAppComponents(apps); - } - } + if (mLauncherCallbacks != null) { + List apps = mLauncherCallbacks.getPredictedApps(); + if (apps != null) { + mAppsView.setPredictedAppComponents(apps); } } + } void lockAllApps() { // TODO @@ -4213,7 +4189,6 @@ public class Launcher extends Activity if (addedApps != null && mAppsView != null) { mAppsView.addApps(addedApps); - sRemoteFolderManager.onBindAddApps(addedApps); } } @@ -4539,8 +4514,6 @@ public class Launcher extends Activity } mWorkspace.stripEmptyScreens(); - - sRemoteFolderManager.bindFinished(); } private void sendLoadingCompleteBroadcastIfNecessary() { diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index e758817..beabeaa 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -2707,9 +2707,7 @@ public class LauncherModel extends BroadcastReceiver finalItem.container = folder.container; LauncherModel.deleteItemFromDatabase(mContext, folder); // only replace this item back on the workspace if it's not protected - // and not a remote folder. - if (!mHiddenApps.contains(finalItem.intent.getComponent()) && - !folder.isRemote()) { + if (!mHiddenApps.contains(finalItem.intent.getComponent())) { LauncherModel.addOrMoveItemInDatabase(mContext, finalItem, folder.container, folder.screenId, folder.cellX, folder.cellY); workspaceItems.add(finalItem); @@ -2717,8 +2715,7 @@ public class LauncherModel extends BroadcastReceiver workspaceItems.remove(i); folders.remove(Long.valueOf(item.id)); - // Remote folders are always empty on bind. - } else if (folder.contents.size() == 0 && !folder.isRemote()) { + } else if (folder.contents.size() == 0) { LauncherModel.deleteFolderContentsFromDatabase(mContext, folder); workspaceItems.remove(i); folders.remove(Long.valueOf(item.id)); diff --git a/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java b/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java index 1ccd2da..d1dbbf7 100644 --- a/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java +++ b/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java @@ -125,13 +125,6 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { SettingsProvider.SETTINGS_UI_ALLOW_ROTATION, R.bool.preferences_interface_allow_rotation); setSettingSwitch(stateView, settingSwitch, current); - break; - case 5: - current = SettingsProvider.getBoolean(mContext, - SettingsProvider.SETTINGS_UI_HOMESCREEN_REMOTE_FOLDER, - R.bool.preferences_interface_homescreen_remote_folder_default); - setSettingSwitch(stateView, settingSwitch, current); - break; default: hideStates(stateView, settingSwitch); } @@ -181,12 +174,6 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { R.bool.preferences_interface_drawer_search_default); setSettingSwitch(stateView, settingSwitch, current); break; - case 6: - current = SettingsProvider.getBoolean(mContext, - SettingsProvider.SETTINGS_UI_DRAWER_REMOTE_APPS, - R.bool.preferences_interface_drawer_remote_apps_default); - setSettingSwitch(stateView, settingSwitch, current); - break; default: hideStates(stateView, settingSwitch); } @@ -295,13 +282,6 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { key, extras); break; - case 5: - onSettingsBooleanChanged(v, - SettingsProvider.SETTINGS_UI_HOMESCREEN_REMOTE_FOLDER, - R.bool.preferences_interface_homescreen_remote_folder_default, - false); - mLauncher.getRemoteFolderManager().onSettingChanged(); - break; } break; case OverviewSettingsPanel.DRAWER_SETTINGS_POSITION: @@ -351,12 +331,6 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { R.bool.preferences_interface_drawer_search_default, false); mLauncher.reloadAppDrawer(); break; - case 6: - onSettingsBooleanChanged(v, - SettingsProvider.SETTINGS_UI_DRAWER_REMOTE_APPS, - R.bool.preferences_interface_drawer_remote_apps_default, false); - mLauncher.getRemoteFolderManager().onSettingChanged(); - break; } break; case OverviewSettingsPanel.APP_SETTINGS_POSITION: diff --git a/src/com/android/launcher3/settings/SettingsProvider.java b/src/com/android/launcher3/settings/SettingsProvider.java index e809a8a..a0e18cb 100644 --- a/src/com/android/launcher3/settings/SettingsProvider.java +++ b/src/com/android/launcher3/settings/SettingsProvider.java @@ -26,8 +26,6 @@ public final class SettingsProvider { public static final String SETTINGS_UI_HOMESCREEN_SEARCH = "ui_homescreen_search"; public static final String SETTINGS_UI_HOMESCREEN_HIDE_ICON_LABELS = "ui_homescreen_general_hide_icon_labels"; public static final String SETTINGS_UI_HOMESCREEN_SCROLLING_WALLPAPER_SCROLL = "ui_homescreen_scrolling_wallpaper_scroll"; - public static final String SETTINGS_UI_HOMESCREEN_REMOTE_FOLDER = "ui_homescreen_remote_folder"; - public static final String SETTINGS_UI_DRAWER_REMOTE_APPS = "ui_drawer_remote_apps"; public static final String SETTINGS_UI_DYNAMIC_GRID_SIZE = "ui_dynamic_grid_size"; public static final String SETTINGS_UI_HOMESCREEN_ROWS = "ui_homescreen_rows"; public static final String SETTINGS_UI_HOMESCREEN_COLUMNS = "ui_homescreen_columns"; -- 2.8.2 From 10d5ba7b72cf47eec82dee12ba8cf0b8b77ae8b5 Mon Sep 17 00:00:00 2001 From: Tad Date: Thu, 5 May 2016 10:17:17 -0400 Subject: [PATCH 4/5] Nuke remote folder some more Change-Id: I55d1c6a995fe009b91eb94d3c961389a78da768c --- Android.mk | 6 ---- src/com/android/launcher3/DeleteDropTarget.java | 9 ++---- src/com/android/launcher3/FolderIcon.java | 34 ++++------------------ .../android/launcher3/OverviewSettingsPanel.java | 6 ---- .../android/launcher3/ThemeChangedReceiver.java | 4 --- .../launcher3/allapps/AllAppsContainerView.java | 2 -- .../launcher3/allapps/AllAppsGridAdapter.java | 10 ------- .../launcher3/allapps/AlphabeticalAppsList.java | 5 ---- 8 files changed, 8 insertions(+), 68 deletions(-) diff --git a/Android.mk b/Android.mk index 9915fc5..3ef528d 100644 --- a/Android.mk +++ b/Android.mk @@ -61,16 +61,10 @@ LOCAL_OVERRIDES_PACKAGES := Launcher3 LOCAL_PROGUARD_FLAG_FILES := proguard.flags LOCAL_PROGUARD_ENABLED := full -REMOTE_FOLDER_UPDATER ?= $(LOCAL_PATH)/RemoteFolder -include $(REMOTE_FOLDER_UPDATER)/Android.mk - include $(BUILD_PACKAGE) include $(CLEAR_VARS) -REMOTE_FOLDER_UPDATER ?= $(LOCAL_PATH)/RemoteFolder -include $(REMOTE_FOLDER_UPDATER)/Android-prebuilt-libs.mk - include $(BUILD_MULTI_PREBUILT) include $(CLEAR_VARS) diff --git a/src/com/android/launcher3/DeleteDropTarget.java b/src/com/android/launcher3/DeleteDropTarget.java index f51a43a..a442442 100644 --- a/src/com/android/launcher3/DeleteDropTarget.java +++ b/src/com/android/launcher3/DeleteDropTarget.java @@ -75,13 +75,8 @@ public class DeleteDropTarget extends ButtonDropTarget { } else if (item instanceof FolderInfo) { FolderInfo folder = (FolderInfo) item; - // Remote folder should not really be deleted. Let the manager handle it. - if (folder.isRemote()) { - launcher.getRemoteFolderManager().onFolderDeleted(); - } else { - launcher.removeFolder(folder); - LauncherModel.deleteFolderContentsFromDatabase(launcher, folder); - } + launcher.removeFolder(folder); + LauncherModel.deleteFolderContentsFromDatabase(launcher, folder); } else if (item instanceof LauncherAppWidgetInfo) { final LauncherAppWidgetInfo widget = (LauncherAppWidgetInfo) item; diff --git a/src/com/android/launcher3/FolderIcon.java b/src/com/android/launcher3/FolderIcon.java index 356c275..c43f120 100644 --- a/src/com/android/launcher3/FolderIcon.java +++ b/src/com/android/launcher3/FolderIcon.java @@ -174,16 +174,7 @@ public class FolderIcon extends FrameLayout implements FolderListener { icon.mLauncher = launcher; icon.setContentDescription(String.format(launcher.getString(R.string.folder_name_format), folderInfo.title)); - Folder folder; - if (folderInfo.isRemote()) { - folder = launcher.getRemoteFolderManager().createRemoteFolder(icon, launcher.getDragLayer()); - if (folder == null) { - LauncherModel.deleteItemFromDatabase(launcher, folderInfo); - return null; - } - } else { - folder = Folder.fromXml(launcher, launcher.getDragLayer()); - } + Folder folder = Folder.fromXml(launcher, launcher.getDragLayer()); folder.setDragController(launcher.getDragController()); folder.setFolderIcon(icon); folder.bind(folderInfo); @@ -245,11 +236,6 @@ public class FolderIcon extends FrameLayout implements FolderListener { } } - // Create an overlay badge if this FolderIcon is for a RemoteFolder - if (folderInfo.isRemote()) { - icon = RemoteFolderManager.addBadgeToFolderIcon(icon); - } - return icon; } @@ -391,14 +377,10 @@ public class FolderIcon extends FrameLayout implements FolderListener { } private boolean willAcceptItem(ItemInfo item) { - if (mInfo.isRemote()) return false; - final int itemType = item.itemType; boolean hidden = false; if (item instanceof FolderInfo){ - if (((FolderInfo) item).isRemote()) return false; - hidden = ((FolderInfo) item).hidden; } return ((itemType == LauncherSettings.Favorites.ITEM_TYPE_APPLICATION || @@ -704,7 +686,7 @@ public class FolderIcon extends FrameLayout implements FolderListener { super.dispatchDraw(canvas); if (mFolder == null) return; - if (mFolder.getItemCount() == 0 && !mAnimating && !mInfo.isRemote()) return; + if (mFolder.getItemCount() == 0 && !mAnimating) return; ArrayList items = mFolder.getItemsInReadingOrder(); Drawable d; @@ -740,14 +722,10 @@ public class FolderIcon extends FrameLayout implements FolderListener { if (!mAnimating) { for (int i = 0; i < NUM_ITEMS_IN_PREVIEW; i++) { d = null; - if (mInfo.isRemote()) { - d = mLauncher.getRemoteFolderManager().getFolderIconDrawable(items, i); - } else if (i < items.size()) { - v = (TextView) items.get(i); - if (!mHiddenItems.contains(v.getTag())) { - d = getTopDrawable(v); - } - } + v = (TextView) items.get(i); + if (!mHiddenItems.contains(v.getTag())) { + d = getTopDrawable(v); + } if (d != null) { mParams = computePreviewItemDrawingParams(i, mParams); diff --git a/src/com/android/launcher3/OverviewSettingsPanel.java b/src/com/android/launcher3/OverviewSettingsPanel.java index 8f1b435..3fbb65a 100644 --- a/src/com/android/launcher3/OverviewSettingsPanel.java +++ b/src/com/android/launcher3/OverviewSettingsPanel.java @@ -75,9 +75,6 @@ public class OverviewSettingsPanel { res.getString(R.string.grid_size_text), res.getString(R.string.allow_rotation_title)})); - // Add additional external settings. - RemoteFolderManager.onInitializeHomeSettings(values, mLauncher); - String[] valuesArr = new String[values.size()]; values.toArray(valuesArr); return valuesArr; @@ -93,9 +90,6 @@ public class OverviewSettingsPanel { res.getString(R.string.fast_scroller_type), res.getString(R.string.home_screen_search_text)})); - // Add additional external settings. - RemoteFolderManager.onInitializeDrawerSettings(values, mLauncher); - String[] valuesArr = new String[values.size()]; values.toArray(valuesArr); return valuesArr; diff --git a/src/com/android/launcher3/ThemeChangedReceiver.java b/src/com/android/launcher3/ThemeChangedReceiver.java index 3f4f3af..6dac0be 100644 --- a/src/com/android/launcher3/ThemeChangedReceiver.java +++ b/src/com/android/launcher3/ThemeChangedReceiver.java @@ -43,10 +43,6 @@ public class ThemeChangedReceiver extends BroadcastReceiver { app.recreateWidgetPreviewDb(); app.getIconCache().flush(); app.getModel().forceReload(); - - if (Launcher.sRemoteFolderManager != null) { - Launcher.sRemoteFolderManager.onThemeChanged(); - } } } diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java index 989148f..23f4f70 100644 --- a/src/com/android/launcher3/allapps/AllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -377,8 +377,6 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc boolean mergeSections = mSectionStrategy == SECTION_STRATEGY_GRID; mApps.setNumAppsPerRow(mNumAppsPerRow, mNumPredictedAppsPerRow, mergeSections); - - mLauncher.getRemoteFolderManager().onMeasureDrawer(mNumPredictedAppsPerRow); } super.onMeasure(widthMeasureSpec, heightMeasureSpec); diff --git a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java index 6431825..56ce38d 100644 --- a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java +++ b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java @@ -42,7 +42,6 @@ import com.android.launcher3.BaseRecyclerViewFastScrollBar.FastScrollFocusable; import com.android.launcher3.BubbleTextView; import com.android.launcher3.Launcher; import com.android.launcher3.R; -import com.android.launcher3.RemoteFolderManager; import com.android.launcher3.Utilities; import com.android.launcher3.settings.SettingsProvider; import com.android.launcher3.util.Thunk; @@ -329,8 +328,6 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter Date: Thu, 5 May 2016 15:20:44 -0400 Subject: [PATCH 5/5] Fix build breakage Change-Id: I82319301b59da5d04fe3c0b68791999f04717579 --- src/com/android/launcher3/LauncherModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index beabeaa..c6d5e21 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -47,7 +47,7 @@ import android.text.TextUtils; import android.util.Log; import android.util.LongSparseArray; import android.util.Pair; - +import com.android.launcher3.settings.SettingsProvider; import com.android.launcher3.compat.AppWidgetManagerCompat; import com.android.launcher3.compat.LauncherActivityInfoCompat; import com.android.launcher3.compat.LauncherAppsCompat; -- 2.8.2