diff --git a/api/current.txt b/api/current.txt index 21ff81e971f80..192aec2d1d7fe 100644 --- a/api/current.txt +++ b/api/current.txt @@ -9849,7 +9849,7 @@ package android.content.pm { method public boolean accept(android.os.Bundle); method public boolean accept(); method public int describeContents(); - method public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(); + method public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(android.content.Context); method public int getRequestType(); method public android.content.pm.ShortcutInfo getShortcutInfo(); method public boolean isValid(); diff --git a/api/system-current.txt b/api/system-current.txt index 1f590dd5e6f06..9044cdd4264d3 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -10277,7 +10277,7 @@ package android.content.pm { method public boolean accept(android.os.Bundle); method public boolean accept(); method public int describeContents(); - method public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(); + method public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(android.content.Context); method public int getRequestType(); method public android.content.pm.ShortcutInfo getShortcutInfo(); method public boolean isValid(); diff --git a/api/test-current.txt b/api/test-current.txt index f4e71e34044c4..47001aea54d85 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -9877,7 +9877,7 @@ package android.content.pm { method public boolean accept(android.os.Bundle); method public boolean accept(); method public int describeContents(); - method public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(); + method public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(android.content.Context); method public int getRequestType(); method public android.content.pm.ShortcutInfo getShortcutInfo(); method public boolean isValid(); diff --git a/core/java/android/appwidget/AppWidgetHost.java b/core/java/android/appwidget/AppWidgetHost.java index cd144695a989d..6ba52b70d1ab5 100644 --- a/core/java/android/appwidget/AppWidgetHost.java +++ b/core/java/android/appwidget/AppWidgetHost.java @@ -36,7 +36,6 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.util.DisplayMetrics; import android.util.SparseArray; -import android.util.TypedValue; import android.widget.RemoteViews; import android.widget.RemoteViews.OnClickHandler; @@ -381,15 +380,7 @@ public class AppWidgetHost { // Convert complex to dp -- we are getting the AppWidgetProviderInfo from the // AppWidgetService, which doesn't have our context, hence we need to do the // conversion here. - appWidget.minWidth = - TypedValue.complexToDimensionPixelSize(appWidget.minWidth, mDisplayMetrics); - appWidget.minHeight = - TypedValue.complexToDimensionPixelSize(appWidget.minHeight, mDisplayMetrics); - appWidget.minResizeWidth = - TypedValue.complexToDimensionPixelSize(appWidget.minResizeWidth, mDisplayMetrics); - appWidget.minResizeHeight = - TypedValue.complexToDimensionPixelSize(appWidget.minResizeHeight, mDisplayMetrics); - + appWidget.updateDimensions(mDisplayMetrics); synchronized (mViews) { v = mViews.get(appWidgetId); } diff --git a/core/java/android/appwidget/AppWidgetManager.java b/core/java/android/appwidget/AppWidgetManager.java index 31e779f0dc4b6..9980e9661dd3a 100644 --- a/core/java/android/appwidget/AppWidgetManager.java +++ b/core/java/android/appwidget/AppWidgetManager.java @@ -31,7 +31,6 @@ import android.os.Process; import android.os.RemoteException; import android.os.UserHandle; import android.util.DisplayMetrics; -import android.util.TypedValue; import android.widget.RemoteViews; import com.android.internal.appwidget.IAppWidgetService; @@ -760,7 +759,7 @@ public class AppWidgetManager { } for (AppWidgetProviderInfo info : providers.getList()) { // Converting complex to dp. - convertSizesToPixels(info); + info.updateDimensions(mDisplayMetrics); } return providers.getList(); } catch (RemoteException e) { @@ -782,7 +781,7 @@ public class AppWidgetManager { AppWidgetProviderInfo info = mService.getAppWidgetInfo(mPackageName, appWidgetId); if (info != null) { // Converting complex to dp. - convertSizesToPixels(info); + info.updateDimensions(mDisplayMetrics); } return info; } catch (RemoteException e) { @@ -1072,18 +1071,6 @@ public class AppWidgetManager { } } - private void convertSizesToPixels(AppWidgetProviderInfo info) { - // Converting complex to dp. - info.minWidth = TypedValue.complexToDimensionPixelSize(info.minWidth, - mDisplayMetrics); - info.minHeight = TypedValue.complexToDimensionPixelSize(info.minHeight, - mDisplayMetrics); - info.minResizeWidth = TypedValue.complexToDimensionPixelSize(info.minResizeWidth, - mDisplayMetrics); - info.minResizeHeight = TypedValue.complexToDimensionPixelSize(info.minResizeHeight, - mDisplayMetrics); - } - /** * Request to pin an app widget on the current launcher. It's up to the launcher to accept this * request (optionally showing a user confirmation). If the request is accepted, the caller will diff --git a/core/java/android/appwidget/AppWidgetProviderInfo.java b/core/java/android/appwidget/AppWidgetProviderInfo.java index b4d79b484c89b..06fdb32fe4956 100644 --- a/core/java/android/appwidget/AppWidgetProviderInfo.java +++ b/core/java/android/appwidget/AppWidgetProviderInfo.java @@ -26,6 +26,8 @@ import android.os.Parcel; import android.os.Parcelable; import android.content.ComponentName; import android.os.UserHandle; +import android.util.DisplayMetrics; +import android.util.TypedValue; /** * Describes the meta data for an installed AppWidget provider. The fields in this class @@ -378,6 +380,17 @@ public class AppWidgetProviderInfo implements Parcelable { return loadDefaultIcon ? providerInfo.loadIcon(context.getPackageManager()) : null; } + /** + * @hide + */ + public void updateDimensions(DisplayMetrics displayMetrics) { + // Converting complex to dp. + minWidth = TypedValue.complexToDimensionPixelSize(minWidth, displayMetrics); + minHeight = TypedValue.complexToDimensionPixelSize(minHeight, displayMetrics); + minResizeWidth = TypedValue.complexToDimensionPixelSize(minResizeWidth, displayMetrics); + minResizeHeight = TypedValue.complexToDimensionPixelSize(minResizeHeight, displayMetrics); + } + /** * Parcelable.Creator that instantiates AppWidgetProviderInfo objects */ diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java index cf873b0278d95..d88f6adae3ef7 100644 --- a/core/java/android/content/pm/LauncherApps.java +++ b/core/java/android/content/pm/LauncherApps.java @@ -1249,8 +1249,13 @@ public class LauncherApps { * {@link #REQUEST_TYPE_APPWIDGET} request. */ @Nullable - public AppWidgetProviderInfo getAppWidgetProviderInfo() { - return mAppWidgetInfo; + public AppWidgetProviderInfo getAppWidgetProviderInfo(Context context) { + if (mAppWidgetInfo != null) { + AppWidgetProviderInfo info = mAppWidgetInfo.clone(); + info.updateDimensions(context.getResources().getDisplayMetrics()); + return info; + } + return null; } /** diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest9.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest9.java index 84a7c198cede5..cfa35c2c50a2d 100644 --- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest9.java +++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest9.java @@ -83,7 +83,8 @@ public class ShortcutManagerTest9 extends BaseShortcutManagerTest { private void assertPinItemRequest(PinItemRequest actualRequest, String className) { assertNotNull(actualRequest); assertEquals(PinItemRequest.REQUEST_TYPE_APPWIDGET, actualRequest.getRequestType()); - assertEquals(className, actualRequest.getAppWidgetProviderInfo().provider.getClassName()); + assertEquals(className, actualRequest.getAppWidgetProviderInfo(getTestContext()) + .provider.getClassName()); } public void testNotForeground() {