| 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
|
|
|