summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2016-05-19 22:54:22 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-05-19 22:54:22 +0000
commit40902b3cb040eb9ed35c174e41bca9feefe41b73 (patch)
treeca2256cbf91038532db13ef547b3f63cc0336d56
parentddb77003e728cac32de009e709f80280e68f6b6e (diff)
parent3f732190cc6c8feef53383d369b66dcf38f06e44 (diff)
downloadandroid_packages_apps_Trebuchet-40902b3cb040eb9ed35c174e41bca9feefe41b73.tar.gz
android_packages_apps_Trebuchet-40902b3cb040eb9ed35c174e41bca9feefe41b73.tar.bz2
android_packages_apps_Trebuchet-40902b3cb040eb9ed35c174e41bca9feefe41b73.zip
Merge "Preventing unnecessary options update to QSB provider by checking if the options have changed before calling update" into ub-launcher3-calgary
-rw-r--r--src/com/android/launcher3/Launcher.java7
-rw-r--r--src/com/android/launcher3/Utilities.java20
2 files changed, 26 insertions, 1 deletions
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 88e1532d3..f487b12f6 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -3552,7 +3552,12 @@ public class Launcher extends Activity
if (widgetId != -1) {
mQsb = mAppWidgetHost.createView(this, widgetId, searchProvider);
mQsb.setId(R.id.qsb_widget);
- mQsb.updateAppWidgetOptions(opts);
+ if (!Utilities.containsAll(
+ AppWidgetManager.getInstance(this).getAppWidgetOptions(widgetId), opts)) {
+ // Launcher should not be updating the options often.
+ FileLog.d(TAG, "Options for QSB were not same");
+ mQsb.updateAppWidgetOptions(opts);
+ }
mQsb.setPadding(0, 0, 0, 0);
mSearchDropTargetBar.addView(mQsb);
mSearchDropTargetBar.setQsbSearchBar(mQsb);
diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java
index e3b959b39..00ee387b3 100644
--- a/src/com/android/launcher3/Utilities.java
+++ b/src/com/android/launcher3/Utilities.java
@@ -869,6 +869,26 @@ public final class Utilities {
}
/**
+ * Returns true if {@param original} contains all entries defined in {@param updates} and
+ * have the same value.
+ * The comparison uses {@link Object#equals(Object)} to compare the values.
+ */
+ public static boolean containsAll(Bundle original, Bundle updates) {
+ for (String key : updates.keySet()) {
+ Object value1 = updates.get(key);
+ Object value2 = original.get(key);
+ if (value1 == null) {
+ if (value2 != null) {
+ return false;
+ }
+ } else if (!value1.equals(value2)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
* An extension of {@link BitmapDrawable} which returns the bitmap pixel size as intrinsic size.
* This allows the badging to be done based on the action bitmap size rather than
* the scaled bitmap size.