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

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

Powered by Google App Engine
This is Rietveld 408576698