| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/android/resources/resource_manager_impl.h" | 5 #include "ui/android/resources/resource_manager_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "base/android/jni_array.h" | 12 #include "base/android/jni_array.h" |
| 13 #include "base/android/jni_string.h" | 13 #include "base/android/jni_string.h" |
| 14 #include "base/trace_event/trace_event.h" | 14 #include "base/trace_event/trace_event.h" |
| 15 #include "cc/resources/scoped_ui_resource.h" | 15 #include "cc/resources/scoped_ui_resource.h" |
| 16 #include "cc/resources/ui_resource_manager.h" |
| 16 #include "jni/ResourceManager_jni.h" | 17 #include "jni/ResourceManager_jni.h" |
| 17 #include "ui/android/resources/ui_resource_provider.h" | 18 #include "ui/android/resources/ui_resource_provider.h" |
| 18 #include "ui/android/window_android.h" | 19 #include "ui/android/window_android.h" |
| 19 #include "ui/gfx/android/java_bitmap.h" | 20 #include "ui/gfx/android/java_bitmap.h" |
| 20 #include "ui/gfx/geometry/rect.h" | 21 #include "ui/gfx/geometry/rect.h" |
| 21 | 22 |
| 22 using base::android::JavaArrayOfIntArrayToIntVector; | 23 using base::android::JavaArrayOfIntArrayToIntVector; |
| 23 using base::android::JavaRef; | 24 using base::android::JavaRef; |
| 24 | 25 |
| 25 namespace ui { | 26 namespace ui { |
| 26 | 27 |
| 27 // static | 28 // static |
| 28 ResourceManagerImpl* ResourceManagerImpl::FromJavaObject(jobject jobj) { | 29 ResourceManagerImpl* ResourceManagerImpl::FromJavaObject(jobject jobj) { |
| 29 return reinterpret_cast<ResourceManagerImpl*>( | 30 return reinterpret_cast<ResourceManagerImpl*>( |
| 30 Java_ResourceManager_getNativePtr(base::android::AttachCurrentThread(), | 31 Java_ResourceManager_getNativePtr(base::android::AttachCurrentThread(), |
| 31 jobj)); | 32 jobj)); |
| 32 } | 33 } |
| 33 | 34 |
| 34 ResourceManagerImpl::ResourceManagerImpl(gfx::NativeWindow native_window) | 35 ResourceManagerImpl::ResourceManagerImpl(gfx::NativeWindow native_window) |
| 35 : host_(nullptr) { | 36 : ui_resource_manager_(nullptr) { |
| 36 JNIEnv* env = base::android::AttachCurrentThread(); | 37 JNIEnv* env = base::android::AttachCurrentThread(); |
| 37 java_obj_.Reset( | 38 java_obj_.Reset( |
| 38 env, Java_ResourceManager_create(env, native_window->GetJavaObject(), | 39 env, Java_ResourceManager_create(env, native_window->GetJavaObject(), |
| 39 reinterpret_cast<intptr_t>(this)) | 40 reinterpret_cast<intptr_t>(this)) |
| 40 .obj()); | 41 .obj()); |
| 41 DCHECK(!java_obj_.is_null()); | 42 DCHECK(!java_obj_.is_null()); |
| 42 } | 43 } |
| 43 | 44 |
| 44 ResourceManagerImpl::~ResourceManagerImpl() { | 45 ResourceManagerImpl::~ResourceManagerImpl() { |
| 45 Java_ResourceManager_destroy(base::android::AttachCurrentThread(), java_obj_); | 46 Java_ResourceManager_destroy(base::android::AttachCurrentThread(), java_obj_); |
| 46 } | 47 } |
| 47 | 48 |
| 48 void ResourceManagerImpl::Init(cc::LayerTreeHost* host) { | 49 void ResourceManagerImpl::Init(cc::UIResourceManager* ui_resource_manager) { |
| 49 DCHECK(!host_); | 50 DCHECK(!ui_resource_manager_); |
| 50 DCHECK(host); | 51 DCHECK(ui_resource_manager); |
| 51 host_ = host; | 52 ui_resource_manager_ = ui_resource_manager; |
| 52 } | 53 } |
| 53 | 54 |
| 54 base::android::ScopedJavaLocalRef<jobject> | 55 base::android::ScopedJavaLocalRef<jobject> |
| 55 ResourceManagerImpl::GetJavaObject() { | 56 ResourceManagerImpl::GetJavaObject() { |
| 56 return base::android::ScopedJavaLocalRef<jobject>(java_obj_); | 57 return base::android::ScopedJavaLocalRef<jobject>(java_obj_); |
| 57 } | 58 } |
| 58 | 59 |
| 59 ResourceManager::Resource* ResourceManagerImpl::GetResource( | 60 ResourceManager::Resource* ResourceManagerImpl::GetResource( |
| 60 AndroidResourceType res_type, | 61 AndroidResourceType res_type, |
| 61 int res_id) { | 62 int res_id) { |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 resource->size = jbitmap.size(); | 115 resource->size = jbitmap.size(); |
| 115 resource->padding.SetRect(padding_left, padding_top, | 116 resource->padding.SetRect(padding_left, padding_top, |
| 116 padding_right - padding_left, | 117 padding_right - padding_left, |
| 117 padding_bottom - padding_top); | 118 padding_bottom - padding_top); |
| 118 resource->aperture.SetRect(aperture_left, aperture_top, | 119 resource->aperture.SetRect(aperture_left, aperture_top, |
| 119 aperture_right - aperture_left, | 120 aperture_right - aperture_left, |
| 120 aperture_bottom - aperture_top); | 121 aperture_bottom - aperture_top); |
| 121 | 122 |
| 122 SkBitmap skbitmap = gfx::CreateSkBitmapFromJavaBitmap(jbitmap); | 123 SkBitmap skbitmap = gfx::CreateSkBitmapFromJavaBitmap(jbitmap); |
| 123 skbitmap.setImmutable(); | 124 skbitmap.setImmutable(); |
| 124 resource->ui_resource = | 125 resource->ui_resource = cc::ScopedUIResource::Create( |
| 125 cc::ScopedUIResource::Create(host_, cc::UIResourceBitmap(skbitmap)); | 126 ui_resource_manager_, cc::UIResourceBitmap(skbitmap)); |
| 126 } | 127 } |
| 127 | 128 |
| 128 CrushedSpriteResource* ResourceManagerImpl::GetCrushedSpriteResource( | 129 CrushedSpriteResource* ResourceManagerImpl::GetCrushedSpriteResource( |
| 129 int bitmap_res_id, int metadata_res_id) { | 130 int bitmap_res_id, int metadata_res_id) { |
| 130 CrushedSpriteResource* resource = | 131 CrushedSpriteResource* resource = |
| 131 crushed_sprite_resources_.Lookup(bitmap_res_id); | 132 crushed_sprite_resources_.Lookup(bitmap_res_id); |
| 132 if (!resource) { | 133 if (!resource) { |
| 133 RequestCrushedSpriteResourceFromJava(bitmap_res_id, metadata_res_id, false); | 134 RequestCrushedSpriteResourceFromJava(bitmap_res_id, metadata_res_id, false); |
| 134 resource = crushed_sprite_resources_.Lookup(bitmap_res_id); | 135 resource = crushed_sprite_resources_.Lookup(bitmap_res_id); |
| 135 } else if (resource->BitmapHasBeenEvictedFromMemory()) { | 136 } else if (resource->BitmapHasBeenEvictedFromMemory()) { |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 TRACE_EVENT2("ui", | 247 TRACE_EVENT2("ui", |
| 247 "ResourceManagerImpl::RequestCrushedSpriteResourceFromJava", | 248 "ResourceManagerImpl::RequestCrushedSpriteResourceFromJava", |
| 248 "bitmap_res_id", bitmap_res_id, | 249 "bitmap_res_id", bitmap_res_id, |
| 249 "metadata_res_id", metadata_res_id); | 250 "metadata_res_id", metadata_res_id); |
| 250 Java_ResourceManager_crushedSpriteResourceRequested( | 251 Java_ResourceManager_crushedSpriteResourceRequested( |
| 251 base::android::AttachCurrentThread(), java_obj_, bitmap_res_id, | 252 base::android::AttachCurrentThread(), java_obj_, bitmap_res_id, |
| 252 metadata_res_id, reloading); | 253 metadata_res_id, reloading); |
| 253 } | 254 } |
| 254 | 255 |
| 255 } // namespace ui | 256 } // namespace ui |
| OLD | NEW |