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

Side by Side Diff: ui/android/resources/resource_manager_impl.cc

Issue 2322943003: cc: Move UI Resource management out of LayerTreeHost. (Closed)
Patch Set: virtual dtor Created 4 years, 3 months 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 unified diff | Download patch
OLDNEW
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/memory/ptr_util.h" 14 #include "base/memory/ptr_util.h"
15 #include "base/trace_event/trace_event.h" 15 #include "base/trace_event/trace_event.h"
16 #include "cc/resources/scoped_ui_resource.h" 16 #include "cc/resources/scoped_ui_resource.h"
17 #include "cc/resources/ui_resource_manager.h"
17 #include "jni/ResourceManager_jni.h" 18 #include "jni/ResourceManager_jni.h"
18 #include "third_party/skia/include/core/SkBitmap.h" 19 #include "third_party/skia/include/core/SkBitmap.h"
19 #include "third_party/skia/include/core/SkCanvas.h" 20 #include "third_party/skia/include/core/SkCanvas.h"
20 #include "third_party/skia/include/core/SkColorFilter.h" 21 #include "third_party/skia/include/core/SkColorFilter.h"
21 #include "ui/android/resources/ui_resource_provider.h" 22 #include "ui/android/resources/ui_resource_provider.h"
22 #include "ui/android/window_android.h" 23 #include "ui/android/window_android.h"
23 #include "ui/gfx/android/java_bitmap.h" 24 #include "ui/gfx/android/java_bitmap.h"
24 #include "ui/gfx/geometry/rect.h" 25 #include "ui/gfx/geometry/rect.h"
25 26
26 using base::android::JavaArrayOfIntArrayToIntVector; 27 using base::android::JavaArrayOfIntArrayToIntVector;
27 using base::android::JavaRef; 28 using base::android::JavaRef;
28 29
29 namespace ui { 30 namespace ui {
30 31
31 // static 32 // static
32 ResourceManagerImpl* ResourceManagerImpl::FromJavaObject(jobject jobj) { 33 ResourceManagerImpl* ResourceManagerImpl::FromJavaObject(jobject jobj) {
33 return reinterpret_cast<ResourceManagerImpl*>( 34 return reinterpret_cast<ResourceManagerImpl*>(
34 Java_ResourceManager_getNativePtr(base::android::AttachCurrentThread(), 35 Java_ResourceManager_getNativePtr(base::android::AttachCurrentThread(),
35 jobj)); 36 jobj));
36 } 37 }
37 38
38 ResourceManagerImpl::ResourceManagerImpl(gfx::NativeWindow native_window) 39 ResourceManagerImpl::ResourceManagerImpl(gfx::NativeWindow native_window)
39 : host_(nullptr) { 40 : ui_resource_manager_(nullptr) {
40 JNIEnv* env = base::android::AttachCurrentThread(); 41 JNIEnv* env = base::android::AttachCurrentThread();
41 java_obj_.Reset( 42 java_obj_.Reset(
42 env, Java_ResourceManager_create(env, native_window->GetJavaObject(), 43 env, Java_ResourceManager_create(env, native_window->GetJavaObject(),
43 reinterpret_cast<intptr_t>(this)) 44 reinterpret_cast<intptr_t>(this))
44 .obj()); 45 .obj());
45 DCHECK(!java_obj_.is_null()); 46 DCHECK(!java_obj_.is_null());
46 } 47 }
47 48
48 ResourceManagerImpl::~ResourceManagerImpl() { 49 ResourceManagerImpl::~ResourceManagerImpl() {
49 Java_ResourceManager_destroy(base::android::AttachCurrentThread(), java_obj_); 50 Java_ResourceManager_destroy(base::android::AttachCurrentThread(), java_obj_);
50 } 51 }
51 52
52 void ResourceManagerImpl::Init(cc::LayerTreeHost* host) { 53 void ResourceManagerImpl::Init(cc::UIResourceManager* ui_resource_manager) {
53 DCHECK(!host_); 54 DCHECK(!ui_resource_manager_);
54 DCHECK(host); 55 DCHECK(ui_resource_manager);
55 host_ = host; 56 ui_resource_manager_ = ui_resource_manager;
56 } 57 }
57 58
58 base::android::ScopedJavaLocalRef<jobject> 59 base::android::ScopedJavaLocalRef<jobject>
59 ResourceManagerImpl::GetJavaObject() { 60 ResourceManagerImpl::GetJavaObject() {
60 return base::android::ScopedJavaLocalRef<jobject>(java_obj_); 61 return base::android::ScopedJavaLocalRef<jobject>(java_obj_);
61 } 62 }
62 63
63 ResourceManager::Resource* ResourceManagerImpl::GetResource( 64 ResourceManager::Resource* ResourceManagerImpl::GetResource(
64 AndroidResourceType res_type, 65 AndroidResourceType res_type,
65 int res_id) { 66 int res_id) {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 // Draw the resource and make it immutable. 129 // Draw the resource and make it immutable.
129 base_image->ui_resource->GetBitmap(base_image->ui_resource->id(), false) 130 base_image->ui_resource->GetBitmap(base_image->ui_resource->id(), false)
130 .DrawToCanvas(&canvas, &color_filter); 131 .DrawToCanvas(&canvas, &color_filter);
131 tinted_bitmap.setImmutable(); 132 tinted_bitmap.setImmutable();
132 133
133 // Create a UI resource from the new bitmap. 134 // Create a UI resource from the new bitmap.
134 tinted_resource = new Resource(); 135 tinted_resource = new Resource();
135 tinted_resource->size = gfx::Size(base_image->size); 136 tinted_resource->size = gfx::Size(base_image->size);
136 tinted_resource->padding = gfx::Rect(base_image->padding); 137 tinted_resource->padding = gfx::Rect(base_image->padding);
137 tinted_resource->aperture = gfx::Rect(base_image->aperture); 138 tinted_resource->aperture = gfx::Rect(base_image->aperture);
138 tinted_resource->ui_resource = cc::ScopedUIResource::Create(host_, 139 tinted_resource->ui_resource = cc::ScopedUIResource::Create(
139 cc::UIResourceBitmap(tinted_bitmap)); 140 ui_resource_manager_, cc::UIResourceBitmap(tinted_bitmap));
140 141
141 resource_map->AddWithID(tinted_resource, res_id); 142 resource_map->AddWithID(tinted_resource, res_id);
142 143
143 return tinted_resource; 144 return tinted_resource;
144 } 145 }
145 146
146 void ResourceManagerImpl::ClearTintedResourceCache(JNIEnv* env, 147 void ResourceManagerImpl::ClearTintedResourceCache(JNIEnv* env,
147 const JavaRef<jobject>& jobj) { 148 const JavaRef<jobject>& jobj) {
148 tinted_resources_.clear(); 149 tinted_resources_.clear();
149 } 150 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 resource->size = jbitmap.size(); 190 resource->size = jbitmap.size();
190 resource->padding.SetRect(padding_left, padding_top, 191 resource->padding.SetRect(padding_left, padding_top,
191 padding_right - padding_left, 192 padding_right - padding_left,
192 padding_bottom - padding_top); 193 padding_bottom - padding_top);
193 resource->aperture.SetRect(aperture_left, aperture_top, 194 resource->aperture.SetRect(aperture_left, aperture_top,
194 aperture_right - aperture_left, 195 aperture_right - aperture_left,
195 aperture_bottom - aperture_top); 196 aperture_bottom - aperture_top);
196 197
197 SkBitmap skbitmap = gfx::CreateSkBitmapFromJavaBitmap(jbitmap); 198 SkBitmap skbitmap = gfx::CreateSkBitmapFromJavaBitmap(jbitmap);
198 skbitmap.setImmutable(); 199 skbitmap.setImmutable();
199 resource->ui_resource = 200 resource->ui_resource = cc::ScopedUIResource::Create(
200 cc::ScopedUIResource::Create(host_, cc::UIResourceBitmap(skbitmap)); 201 ui_resource_manager_, cc::UIResourceBitmap(skbitmap));
201 } 202 }
202 203
203 CrushedSpriteResource* ResourceManagerImpl::GetCrushedSpriteResource( 204 CrushedSpriteResource* ResourceManagerImpl::GetCrushedSpriteResource(
204 int bitmap_res_id, int metadata_res_id) { 205 int bitmap_res_id, int metadata_res_id) {
205 CrushedSpriteResource* resource = 206 CrushedSpriteResource* resource =
206 crushed_sprite_resources_.Lookup(bitmap_res_id); 207 crushed_sprite_resources_.Lookup(bitmap_res_id);
207 if (!resource) { 208 if (!resource) {
208 RequestCrushedSpriteResourceFromJava(bitmap_res_id, metadata_res_id, false); 209 RequestCrushedSpriteResourceFromJava(bitmap_res_id, metadata_res_id, false);
209 resource = crushed_sprite_resources_.Lookup(bitmap_res_id); 210 resource = crushed_sprite_resources_.Lookup(bitmap_res_id);
210 } else if (resource->BitmapHasBeenEvictedFromMemory()) { 211 } else if (resource->BitmapHasBeenEvictedFromMemory()) {
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 TRACE_EVENT2("ui", 322 TRACE_EVENT2("ui",
322 "ResourceManagerImpl::RequestCrushedSpriteResourceFromJava", 323 "ResourceManagerImpl::RequestCrushedSpriteResourceFromJava",
323 "bitmap_res_id", bitmap_res_id, 324 "bitmap_res_id", bitmap_res_id,
324 "metadata_res_id", metadata_res_id); 325 "metadata_res_id", metadata_res_id);
325 Java_ResourceManager_crushedSpriteResourceRequested( 326 Java_ResourceManager_crushedSpriteResourceRequested(
326 base::android::AttachCurrentThread(), java_obj_, bitmap_res_id, 327 base::android::AttachCurrentThread(), java_obj_, bitmap_res_id,
327 metadata_res_id, reloading); 328 metadata_res_id, reloading);
328 } 329 }
329 330
330 } // namespace ui 331 } // namespace ui
OLDNEW
« no previous file with comments | « ui/android/resources/resource_manager_impl.h ('k') | ui/android/resources/resource_manager_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698