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..ae07fe608042291ce0b6b3ce21a46b3206640caa 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( |
@@ -60,6 +60,25 @@ ResourceManager::~ResourceManager() { |
java_obj_.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 || !resource->ui_resource) |
jdduke (slow)
2014/12/08 16:23:13
The result of GetResource should never be null, I
Jaekyun Seok (inactive)
2014/12/09 11:42:35
Yes, the result of GetResource can't be null in a
jdduke (slow)
2014/12/09 16:11:07
Hmm, can we avoid that? It's a shame to have to mo
Jaekyun Seok (inactive)
2014/12/09 23:35:22
Done.
|
+ return 0; |
+ return resource->ui_resource->id(); |
+} |
+ |
base::android::ScopedJavaLocalRef<jobject> ResourceManager::GetJavaObject( |
JNIEnv* env) { |
return base::android::ScopedJavaLocalRef<jobject>(java_obj_); |
@@ -83,6 +102,12 @@ ResourceManager::Resource* ResourceManager::GetResource( |
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); |
@@ -96,6 +121,11 @@ void ResourceManager::PreloadResource(AndroidResourceType res_type, |
java_obj_.obj(), 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, |
jobject jobj, |
jint res_type, |
@@ -135,4 +165,17 @@ 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]; |
+} |
+ |
} // namespace ui |