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

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

Issue 2322943003: cc: Move UI Resource management out of LayerTreeHost. (Closed)
Patch Set: format 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/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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698