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

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

Issue 2417263002: Pass JavaRef to Java methods in ui. (Closed)
Patch Set: Created 4 years, 2 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 <inttypes.h> 7 #include <inttypes.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 9
10 #include <utility> 10 #include <utility>
(...skipping 17 matching lines...) Expand all
28 #include "ui/android/window_android.h" 28 #include "ui/android/window_android.h"
29 #include "ui/gfx/android/java_bitmap.h" 29 #include "ui/gfx/android/java_bitmap.h"
30 #include "ui/gfx/geometry/rect.h" 30 #include "ui/gfx/geometry/rect.h"
31 31
32 using base::android::JavaArrayOfIntArrayToIntVector; 32 using base::android::JavaArrayOfIntArrayToIntVector;
33 using base::android::JavaRef; 33 using base::android::JavaRef;
34 34
35 namespace ui { 35 namespace ui {
36 36
37 // static 37 // static
38 ResourceManagerImpl* ResourceManagerImpl::FromJavaObject(jobject jobj) { 38 ResourceManagerImpl* ResourceManagerImpl::FromJavaObject(
39 const JavaRef<jobject>& jobj) {
39 return reinterpret_cast<ResourceManagerImpl*>( 40 return reinterpret_cast<ResourceManagerImpl*>(
40 Java_ResourceManager_getNativePtr(base::android::AttachCurrentThread(), 41 Java_ResourceManager_getNativePtr(base::android::AttachCurrentThread(),
41 jobj)); 42 jobj));
42 } 43 }
43 44
44 ResourceManagerImpl::ResourceManagerImpl(gfx::NativeWindow native_window) 45 ResourceManagerImpl::ResourceManagerImpl(gfx::NativeWindow native_window)
45 : ui_resource_manager_(nullptr) { 46 : ui_resource_manager_(nullptr) {
46 JNIEnv* env = base::android::AttachCurrentThread(); 47 JNIEnv* env = base::android::AttachCurrentThread();
47 java_obj_.Reset( 48 java_obj_.Reset(
48 env, Java_ResourceManager_create(env, native_window->GetJavaObject(), 49 env, Java_ResourceManager_create(env, native_window->GetJavaObject(),
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 "resource_id", res_id); 197 "resource_id", res_id);
197 198
198 std::unordered_map<int, std::unique_ptr<Resource>>::iterator item = 199 std::unordered_map<int, std::unique_ptr<Resource>>::iterator item =
199 resources_[res_type].find(res_id); 200 resources_[res_type].find(res_id);
200 if (item == resources_[res_type].end()) { 201 if (item == resources_[res_type].end()) {
201 resources_[res_type][res_id] = base::MakeUnique<Resource>(); 202 resources_[res_type][res_id] = base::MakeUnique<Resource>();
202 } 203 }
203 204
204 Resource* resource = resources_[res_type][res_id].get(); 205 Resource* resource = resources_[res_type][res_id].get();
205 206
206 gfx::JavaBitmap jbitmap(bitmap.obj()); 207 gfx::JavaBitmap jbitmap(bitmap);
207 resource->size = jbitmap.size(); 208 resource->size = jbitmap.size();
208 resource->padding.SetRect(padding_left, padding_top, 209 resource->padding.SetRect(padding_left, padding_top,
209 padding_right - padding_left, 210 padding_right - padding_left,
210 padding_bottom - padding_top); 211 padding_bottom - padding_top);
211 resource->aperture.SetRect(aperture_left, aperture_top, 212 resource->aperture.SetRect(aperture_left, aperture_top,
212 aperture_right - aperture_left, 213 aperture_right - aperture_left,
213 aperture_bottom - aperture_top); 214 aperture_bottom - aperture_top);
214 215
215 SkBitmap skbitmap = gfx::CreateSkBitmapFromJavaBitmap(jbitmap); 216 SkBitmap skbitmap = gfx::CreateSkBitmapFromJavaBitmap(jbitmap);
216 skbitmap.setImmutable(); 217 skbitmap.setImmutable();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 jfloat scaled_sprite_height) { 250 jfloat scaled_sprite_height) {
250 // Construct source and destination rectangles for each frame from 251 // Construct source and destination rectangles for each frame from
251 // |frame_rects|. 252 // |frame_rects|.
252 std::vector<std::vector<int>> all_frame_rects_vector; 253 std::vector<std::vector<int>> all_frame_rects_vector;
253 JavaArrayOfIntArrayToIntVector(env, frame_rects.obj(), 254 JavaArrayOfIntArrayToIntVector(env, frame_rects.obj(),
254 &all_frame_rects_vector); 255 &all_frame_rects_vector);
255 CrushedSpriteResource::SrcDstRects src_dst_rects = 256 CrushedSpriteResource::SrcDstRects src_dst_rects =
256 ProcessCrushedSpriteFrameRects(all_frame_rects_vector); 257 ProcessCrushedSpriteFrameRects(all_frame_rects_vector);
257 258
258 SkBitmap skbitmap = 259 SkBitmap skbitmap =
259 gfx::CreateSkBitmapFromJavaBitmap(gfx::JavaBitmap(bitmap.obj())); 260 gfx::CreateSkBitmapFromJavaBitmap(gfx::JavaBitmap(bitmap));
260 261
261 std::unique_ptr<CrushedSpriteResource> resource = 262 std::unique_ptr<CrushedSpriteResource> resource =
262 base::MakeUnique<CrushedSpriteResource>( 263 base::MakeUnique<CrushedSpriteResource>(
263 skbitmap, 264 skbitmap,
264 src_dst_rects, 265 src_dst_rects,
265 gfx::Size(unscaled_sprite_width, unscaled_sprite_height), 266 gfx::Size(unscaled_sprite_width, unscaled_sprite_height),
266 gfx::Size(scaled_sprite_width, scaled_sprite_height)); 267 gfx::Size(scaled_sprite_width, scaled_sprite_height));
267 268
268 crushed_sprite_resources_[bitmap_res_id].swap(resource); 269 crushed_sprite_resources_[bitmap_res_id].swap(resource);
269 } 270 }
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 const JavaRef<jobject>& jobj, 341 const JavaRef<jobject>& jobj,
341 jint bitmap_res_id, 342 jint bitmap_res_id,
342 const JavaRef<jobject>& bitmap) { 343 const JavaRef<jobject>& bitmap) {
343 std::unordered_map<int, std::unique_ptr<CrushedSpriteResource>>::iterator 344 std::unordered_map<int, std::unique_ptr<CrushedSpriteResource>>::iterator
344 item = crushed_sprite_resources_.find(bitmap_res_id); 345 item = crushed_sprite_resources_.find(bitmap_res_id);
345 if (item == crushed_sprite_resources_.end()) { 346 if (item == crushed_sprite_resources_.end()) {
346 // Cannot reload a resource that has not been previously loaded. 347 // Cannot reload a resource that has not been previously loaded.
347 return; 348 return;
348 } 349 }
349 SkBitmap skbitmap = 350 SkBitmap skbitmap =
350 gfx::CreateSkBitmapFromJavaBitmap(gfx::JavaBitmap(bitmap.obj())); 351 gfx::CreateSkBitmapFromJavaBitmap(gfx::JavaBitmap(bitmap));
351 item->second->SetBitmap(skbitmap); 352 item->second->SetBitmap(skbitmap);
352 } 353 }
353 354
354 // static 355 // static
355 bool ResourceManagerImpl::RegisterResourceManager(JNIEnv* env) { 356 bool ResourceManagerImpl::RegisterResourceManager(JNIEnv* env) {
356 return RegisterNativesImpl(env); 357 return RegisterNativesImpl(env);
357 } 358 }
358 359
359 void ResourceManagerImpl::PreloadResourceFromJava(AndroidResourceType res_type, 360 void ResourceManagerImpl::PreloadResourceFromJava(AndroidResourceType res_type,
360 int res_id) { 361 int res_id) {
(...skipping 18 matching lines...) Expand all
379 TRACE_EVENT2("ui", 380 TRACE_EVENT2("ui",
380 "ResourceManagerImpl::RequestCrushedSpriteResourceFromJava", 381 "ResourceManagerImpl::RequestCrushedSpriteResourceFromJava",
381 "bitmap_res_id", bitmap_res_id, 382 "bitmap_res_id", bitmap_res_id,
382 "metadata_res_id", metadata_res_id); 383 "metadata_res_id", metadata_res_id);
383 Java_ResourceManager_crushedSpriteResourceRequested( 384 Java_ResourceManager_crushedSpriteResourceRequested(
384 base::android::AttachCurrentThread(), java_obj_, bitmap_res_id, 385 base::android::AttachCurrentThread(), java_obj_, bitmap_res_id,
385 metadata_res_id, reloading); 386 metadata_res_id, reloading);
386 } 387 }
387 388
388 } // namespace ui 389 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698