Chromium Code Reviews| 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 |