Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Unified Diff: ui/android/java/src/org/chromium/ui/resources/ResourceManager.java

Issue 1578353002: Pull the Activity context from WindowAndroid if possible (Closed) Base URL: https://chromium.googlesource.com/a/chromium/src.git@2564
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..3e96bbb270b9652768a3e521a3d12ee8d02b9419 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,51 @@ 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) {
+ throw new IllegalStateException("Context should not be null during initialization.");
+ }
+
+ 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);
}
/**

Powered by Google App Engine
This is Rietveld 408576698