Chromium Code Reviews| Index: ui/android/java/src/org/chromium/ui/resources/ResourceManager.java |
| diff --git a/ui/android/java/src/org/chromium/ui/resources/ResourceManager.java b/ui/android/java/src/org/chromium/ui/resources/ResourceManager.java |
| index da3d2544257b675fecf3c71674c2423ca58a0af1..5b666e337fe3465e40447efb21da7415768a4304 100644 |
| --- a/ui/android/java/src/org/chromium/ui/resources/ResourceManager.java |
| +++ b/ui/android/java/src/org/chromium/ui/resources/ResourceManager.java |
| @@ -13,6 +13,8 @@ import android.util.SparseArray; |
| import org.chromium.base.annotations.CalledByNative; |
| import org.chromium.base.annotations.JNINamespace; |
| import org.chromium.base.annotations.MainDex; |
| +import org.chromium.ui.base.WindowAndroid; |
| +import org.chromium.ui.gfx.DeviceDisplayInfo; |
| import org.chromium.ui.resources.ResourceLoader.ResourceLoaderCallback; |
| import org.chromium.ui.resources.dynamics.DynamicResource; |
| import org.chromium.ui.resources.dynamics.DynamicResourceLoader; |
| @@ -37,33 +39,49 @@ public class ResourceManager implements ResourceLoaderCallback { |
| private long mNativeResourceManagerPtr; |
| - private ResourceManager(Context context, long staticResourceManagerPtr) { |
| - Resources resources = context.getResources(); |
| + private ResourceManager( |
| + Resources resources, int minScreenSideLength, long staticResourceManagerPtr) { |
| mPxToDp = 1.f / resources.getDisplayMetrics().density; |
| - // Register ResourceLoaders |
| registerResourceLoader(new StaticResourceLoader( |
| AndroidResourceType.STATIC, this, resources)); |
| registerResourceLoader(new DynamicResourceLoader( |
| AndroidResourceType.DYNAMIC, this)); |
| registerResourceLoader(new DynamicResourceLoader( |
| AndroidResourceType.DYNAMIC_BITMAP, this)); |
| - registerResourceLoader(new SystemResourceLoader( |
| - AndroidResourceType.SYSTEM, this, context)); |
| + registerResourceLoader( |
| + new SystemResourceLoader(AndroidResourceType.SYSTEM, this, minScreenSideLength)); |
| mCrushedSpriteResourceLoader = new CrushedSpriteResourceLoader(this, resources); |
| mNativeResourceManagerPtr = staticResourceManagerPtr; |
| } |
| /** |
| - * Creates an instance of a {@link ResourceManager}. This will |
| - * @param context A {@link Context} instance to grab {@link Resources} from. |
| + * Creates an instance of a {@link ResourceManager}. |
| + * @param WindowAndroid A {@link WindowAndroid} instance to fetch a {@link Context} |
| + * and thus grab {@link Resources} from. |
| * @param staticResourceManagerPtr A pointer to the native component of this class. |
| * @return A new instance of a {@link ResourceManager}. |
| */ |
| @CalledByNative |
| - private static ResourceManager create(Context context, long staticResourceManagerPtr) { |
| - return new ResourceManager(context, staticResourceManagerPtr); |
| + private static ResourceManager create( |
| + WindowAndroid windowAndroid, long staticResourceManagerPtr) { |
| + Context context = windowAndroid.getContext().get(); |
| + // This call should happen early enough (i.e. during construction) that this context should |
| + // not yet have been released. |
| + if (context == null) return null; |
|
Ted C
2015/11/16 16:51:54
from my brief glance, it doesn't look like native
gsennton
2015/11/16 19:53:58
Done.
|
| + |
| + DeviceDisplayInfo displayInfo = DeviceDisplayInfo.create(context); |
| + int screenWidth = displayInfo.getPhysicalDisplayWidth() != 0 |
| + ? displayInfo.getPhysicalDisplayWidth() |
| + : displayInfo.getDisplayWidth(); |
| + int screenHeight = displayInfo.getPhysicalDisplayHeight() != 0 |
| + ? displayInfo.getPhysicalDisplayHeight() |
| + : displayInfo.getDisplayHeight(); |
| + int minScreenSideLength = Math.min(screenWidth, screenHeight); |
| + |
| + Resources resources = context.getResources(); |
| + return new ResourceManager(resources, minScreenSideLength, staticResourceManagerPtr); |
| } |
| /** |