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

Unified Diff: ui/android/resources/resource_manager.cc

Issue 755643004: Replace SystemUIResourceManager with ResourceManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove SystemUIResourceManager Created 6 years 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/resources/resource_manager.cc
diff --git a/ui/android/resources/resource_manager.cc b/ui/android/resources/resource_manager.cc
index 557661f74307b0de6229bf45fb387ef622a68769..38ac9e480c8aee29ec6dfab3730152ae69d3235e 100644
--- a/ui/android/resources/resource_manager.cc
+++ b/ui/android/resources/resource_manager.cc
@@ -4,9 +4,10 @@
#include "ui/android/resources/resource_manager.h"
-#include "content/public/browser/android/ui_resource_provider.h"
+#include "base/android/jni_string.h"
#include "jni/ResourceManager_jni.h"
#include "ui/android/resources/ui_resource_android.h"
+#include "ui/android/resources/ui_resource_provider.h"
#include "ui/gfx/android/java_bitmap.h"
#include "ui/gfx/geometry/insets_f.h"
@@ -45,8 +46,7 @@ ResourceManager* ResourceManager::FromJavaObject(jobject jobj) {
base::android::AttachCurrentThread(), jobj));
}
-ResourceManager::ResourceManager(
- content::UIResourceProvider* ui_resource_provider)
+ResourceManager::ResourceManager(ui::UIResourceProvider* ui_resource_provider)
: ui_resource_provider_(ui_resource_provider) {
JNIEnv* env = base::android::AttachCurrentThread();
java_obj_.Reset(env, Java_ResourceManager_create(
@@ -65,6 +65,25 @@ base::android::ScopedJavaLocalRef<jobject> ResourceManager::GetJavaObject(
return base::android::ScopedJavaLocalRef<jobject>(java_obj_);
}
+void ResourceManager::PreloadResource(ui::SystemUIResourceType type) {
+ DCHECK_GE(type, ui::SYSTEM_UI_RESOURCE_TYPE_FIRST);
+ DCHECK_LE(type, ui::SYSTEM_UI_RESOURCE_TYPE_LAST);
+
+ PreloadResource(ui::ANDROID_RESOURCE_TYPE_SYSTEM, type);
+}
+
+cc::UIResourceId ResourceManager::GetUIResourceId(
+ ui::SystemUIResourceType type) {
+ DCHECK_GE(type, ui::SYSTEM_UI_RESOURCE_TYPE_FIRST);
+ DCHECK_LE(type, ui::SYSTEM_UI_RESOURCE_TYPE_LAST);
+
+ ui::ResourceManager::Resource* resource =
+ GetResource(ui::ANDROID_RESOURCE_TYPE_SYSTEM, type);
+ if (!resource->ui_resource)
+ return 0;
+ return resource->ui_resource->id();
+}
+
ResourceManager::Resource* ResourceManager::GetResource(
AndroidResourceType res_type,
int res_id) {
@@ -75,14 +94,19 @@ ResourceManager::Resource* ResourceManager::GetResource(
if (!resource || res_type == ANDROID_RESOURCE_TYPE_DYNAMIC ||
res_type == ANDROID_RESOURCE_TYPE_DYNAMIC_BITMAP) {
- Java_ResourceManager_resourceRequested(base::android::AttachCurrentThread(),
- java_obj_.obj(), res_type, res_id);
+ RequestResourceFromJava(res_type, res_id);
resource = resources_[res_type].Lookup(res_id);
}
return resource;
}
+ResourceManager::Resource* ResourceManager::GetResource(
+ AndroidResourceType res_type,
+ std::string res_name) {
+ return GetResource(res_type, GetAndroidResourceIdFromString(res_name));
+}
+
void ResourceManager::PreloadResource(AndroidResourceType res_type,
int res_id) {
DCHECK_GE(res_type, ANDROID_RESOURCE_TYPE_FIRST);
@@ -92,8 +116,12 @@ void ResourceManager::PreloadResource(AndroidResourceType res_type,
if (resources_[res_type].Lookup(res_id))
return;
- Java_ResourceManager_preloadResource(base::android::AttachCurrentThread(),
- java_obj_.obj(), res_type, res_id);
+ PreloadResourceFromJava(res_type, res_id);
+}
+
+void ResourceManager::PreloadResource(AndroidResourceType res_type,
+ std::string res_name) {
+ PreloadResource(res_type, GetAndroidResourceIdFromString(res_name));
}
void ResourceManager::OnResourceReady(JNIEnv* env,
@@ -135,4 +163,29 @@ bool ResourceManager::RegisterResourceManager(JNIEnv* env) {
return RegisterNativesImpl(env);
}
+int ResourceManager::GetAndroidResourceIdFromString(std::string res_name) {
+ if (android_res_name_to_res_id_map_.find(res_name) ==
+ android_res_name_to_res_id_map_.end()) {
+ JNIEnv* env = base::android::AttachCurrentThread();
+ ScopedJavaLocalRef<jstring> jstring_url =
+ base::android::ConvertUTF8ToJavaString(env, res_name);
+ android_res_name_to_res_id_map_[res_name] =
+ Java_ResourceManager_getAndroidResourceIdFromString(
+ env, java_obj_.obj(), jstring_url.obj());
+ }
+ return android_res_name_to_res_id_map_[res_name];
+}
+
+void ResourceManager::PreloadResourceFromJava(AndroidResourceType res_type,
+ int res_id) {
+ Java_ResourceManager_preloadResource(base::android::AttachCurrentThread(),
+ java_obj_.obj(), res_type, res_id);
+}
+
+void ResourceManager::RequestResourceFromJava(AndroidResourceType res_type,
+ int res_id) {
+ Java_ResourceManager_resourceRequested(base::android::AttachCurrentThread(),
+ java_obj_.obj(), res_type, res_id);
+}
+
} // namespace ui

Powered by Google App Engine
This is Rietveld 408576698