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

Side by Side Diff: android_webview/native/java_browser_view_renderer_helper.cc

Issue 1939783002: Remove all uses of skia::RefPtr and stale includes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Florin's nits Created 4 years, 7 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 (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "android_webview/native/java_browser_view_renderer_helper.h" 5 #include "android_webview/native/java_browser_view_renderer_helper.h"
6 6
7 #include <android/bitmap.h> 7 #include <android/bitmap.h>
8 8
9 #include "android_webview/public/browser/draw_sw.h" 9 #include "android_webview/public/browser/draw_sw.h"
10 #include "base/android/scoped_java_ref.h" 10 #include "base/android/scoped_java_ref.h"
11 #include "base/trace_event/trace_event.h" 11 #include "base/trace_event/trace_event.h"
12 #include "jni/JavaBrowserViewRendererHelper_jni.h" 12 #include "jni/JavaBrowserViewRendererHelper_jni.h"
13 #include "third_party/skia/include/core/SkBitmap.h" 13 #include "third_party/skia/include/core/SkBitmap.h"
14 #include "third_party/skia/include/core/SkRefCnt.h"
14 #include "third_party/skia/include/utils/SkCanvasStateUtils.h" 15 #include "third_party/skia/include/utils/SkCanvasStateUtils.h"
15 16
16 using base::android::ScopedJavaLocalRef; 17 using base::android::ScopedJavaLocalRef;
17 18
18 namespace android_webview { 19 namespace android_webview {
19 20
20 namespace { 21 namespace {
21 22
22 // Provides software rendering functions from the Android glue layer. 23 // Provides software rendering functions from the Android glue layer.
23 // Allows preventing extra copies of data when rendering. 24 // Allows preventing extra copies of data when rendering.
24 AwDrawSWFunctionTable* g_sw_draw_functions = NULL; 25 AwDrawSWFunctionTable* g_sw_draw_functions = NULL;
25 26
26 class JavaCanvasHolder : public SoftwareCanvasHolder { 27 class JavaCanvasHolder : public SoftwareCanvasHolder {
27 public: 28 public:
28 JavaCanvasHolder(JNIEnv* env, 29 JavaCanvasHolder(JNIEnv* env,
29 jobject java_canvas, 30 jobject java_canvas,
30 const gfx::Vector2d& scroll_correction); 31 const gfx::Vector2d& scroll_correction);
31 ~JavaCanvasHolder() override; 32 ~JavaCanvasHolder() override;
32 33
33 SkCanvas* GetCanvas() override; 34 SkCanvas* GetCanvas() override;
34 35
35 private: 36 private:
36 AwPixelInfo* pixels_; 37 AwPixelInfo* pixels_;
37 skia::RefPtr<SkCanvas> canvas_; 38 sk_sp<SkCanvas> canvas_;
38 DISALLOW_COPY_AND_ASSIGN(JavaCanvasHolder); 39 DISALLOW_COPY_AND_ASSIGN(JavaCanvasHolder);
39 }; 40 };
40 41
41 JavaCanvasHolder::JavaCanvasHolder(JNIEnv* env, 42 JavaCanvasHolder::JavaCanvasHolder(JNIEnv* env,
42 jobject java_canvas, 43 jobject java_canvas,
43 const gfx::Vector2d& scroll) 44 const gfx::Vector2d& scroll)
44 : pixels_(nullptr) { 45 : pixels_(nullptr) {
45 if (!g_sw_draw_functions) 46 if (!g_sw_draw_functions)
46 return; 47 return;
47 pixels_ = g_sw_draw_functions->access_pixels(env, java_canvas); 48 pixels_ = g_sw_draw_functions->access_pixels(env, java_canvas);
48 if (!pixels_ || !pixels_->state) 49 if (!pixels_ || !pixels_->state)
49 return; 50 return;
50 51
51 canvas_ = 52 canvas_ = sk_sp<SkCanvas>(
52 skia::AdoptRef(SkCanvasStateUtils::CreateFromCanvasState(pixels_->state)); 53 SkCanvasStateUtils::CreateFromCanvasState(pixels_->state));
53 // Workarounds for http://crbug.com/271096: SW draw only supports 54 // Workarounds for http://crbug.com/271096: SW draw only supports
54 // translate & scale transforms, and a simple rectangular clip. 55 // translate & scale transforms, and a simple rectangular clip.
55 if (canvas_ && (!canvas_->isClipRect() || 56 if (canvas_ && (!canvas_->isClipRect() ||
56 (canvas_->getTotalMatrix().getType() & 57 (canvas_->getTotalMatrix().getType() &
57 ~(SkMatrix::kTranslate_Mask | SkMatrix::kScale_Mask)))) { 58 ~(SkMatrix::kTranslate_Mask | SkMatrix::kScale_Mask)))) {
58 canvas_.clear(); 59 canvas_.reset();
59 } 60 }
60 if (canvas_) { 61 if (canvas_) {
61 canvas_->translate(scroll.x(), scroll.y()); 62 canvas_->translate(scroll.x(), scroll.y());
62 } 63 }
63 } 64 }
64 65
65 JavaCanvasHolder::~JavaCanvasHolder() { 66 JavaCanvasHolder::~JavaCanvasHolder() {
66 canvas_.clear();
67 if (pixels_) 67 if (pixels_)
68 g_sw_draw_functions->release_pixels(pixels_); 68 g_sw_draw_functions->release_pixels(pixels_);
69 pixels_ = nullptr; 69 pixels_ = nullptr;
70 } 70 }
71 71
72 SkCanvas* JavaCanvasHolder::GetCanvas() { 72 SkCanvas* JavaCanvasHolder::GetCanvas() {
73 return canvas_.get(); 73 return canvas_.get();
74 } 74 }
75 75
76 class AuxiliaryCanvasHolder : public SoftwareCanvasHolder { 76 class AuxiliaryCanvasHolder : public SoftwareCanvasHolder {
77 public: 77 public:
78 AuxiliaryCanvasHolder(JNIEnv* env, 78 AuxiliaryCanvasHolder(JNIEnv* env,
79 jobject java_canvas, 79 jobject java_canvas,
80 const gfx::Vector2d& scroll_correction, 80 const gfx::Vector2d& scroll_correction,
81 const gfx::Size size); 81 const gfx::Size size);
82 ~AuxiliaryCanvasHolder() override; 82 ~AuxiliaryCanvasHolder() override;
83 83
84 SkCanvas* GetCanvas() override; 84 SkCanvas* GetCanvas() override;
85 85
86 private: 86 private:
87 ScopedJavaLocalRef<jobject> jcanvas_; 87 ScopedJavaLocalRef<jobject> jcanvas_;
88 ScopedJavaLocalRef<jobject> jbitmap_; 88 ScopedJavaLocalRef<jobject> jbitmap_;
89 gfx::Vector2d scroll_; 89 gfx::Vector2d scroll_;
90 std::unique_ptr<SkBitmap> bitmap_; 90 std::unique_ptr<SkBitmap> bitmap_;
91 skia::RefPtr<SkCanvas> canvas_; 91 sk_sp<SkCanvas> canvas_;
92 DISALLOW_COPY_AND_ASSIGN(AuxiliaryCanvasHolder); 92 DISALLOW_COPY_AND_ASSIGN(AuxiliaryCanvasHolder);
93 }; 93 };
94 94
95 AuxiliaryCanvasHolder::AuxiliaryCanvasHolder( 95 AuxiliaryCanvasHolder::AuxiliaryCanvasHolder(
96 JNIEnv* env, 96 JNIEnv* env,
97 jobject java_canvas, 97 jobject java_canvas,
98 const gfx::Vector2d& scroll_correction, 98 const gfx::Vector2d& scroll_correction,
99 const gfx::Size size) 99 const gfx::Size size)
100 : jcanvas_(env, java_canvas), scroll_(scroll_correction) { 100 : jcanvas_(env, java_canvas), scroll_(scroll_correction) {
101 DCHECK(size.width() > 0); 101 DCHECK(size.width() > 0);
(...skipping 12 matching lines...) Expand all
114 void* pixels = nullptr; 114 void* pixels = nullptr;
115 if (AndroidBitmap_lockPixels(env, jbitmap_.obj(), &pixels) < 0) { 115 if (AndroidBitmap_lockPixels(env, jbitmap_.obj(), &pixels) < 0) {
116 LOG(ERROR) << "Error locking java bitmap pixels."; 116 LOG(ERROR) << "Error locking java bitmap pixels.";
117 return; 117 return;
118 } 118 }
119 119
120 SkImageInfo info = 120 SkImageInfo info =
121 SkImageInfo::MakeN32Premul(bitmap_info.width, bitmap_info.height); 121 SkImageInfo::MakeN32Premul(bitmap_info.width, bitmap_info.height);
122 bitmap_.reset(new SkBitmap); 122 bitmap_.reset(new SkBitmap);
123 bitmap_->installPixels(info, pixels, bitmap_info.stride); 123 bitmap_->installPixels(info, pixels, bitmap_info.stride);
124 canvas_ = skia::AdoptRef(new SkCanvas(*bitmap_)); 124 canvas_ = sk_make_sp<SkCanvas>(*bitmap_);
125 } 125 }
126 126
127 AuxiliaryCanvasHolder::~AuxiliaryCanvasHolder() { 127 AuxiliaryCanvasHolder::~AuxiliaryCanvasHolder() {
128 canvas_.clear();
129 bitmap_.reset(); 128 bitmap_.reset();
130 129
131 JNIEnv* env = base::android::AttachCurrentThread(); 130 JNIEnv* env = base::android::AttachCurrentThread();
132 if (AndroidBitmap_unlockPixels(env, jbitmap_.obj()) < 0) { 131 if (AndroidBitmap_unlockPixels(env, jbitmap_.obj()) < 0) {
133 LOG(ERROR) << "Error unlocking java bitmap pixels."; 132 LOG(ERROR) << "Error unlocking java bitmap pixels.";
134 return; 133 return;
135 } 134 }
136 135
137 Java_JavaBrowserViewRendererHelper_drawBitmapIntoCanvas( 136 Java_JavaBrowserViewRendererHelper_drawBitmapIntoCanvas(
138 env, jbitmap_.obj(), jcanvas_.obj(), scroll_.x(), scroll_.y()); 137 env, jbitmap_.obj(), jcanvas_.obj(), scroll_.x(), scroll_.y());
(...skipping 29 matching lines...) Expand all
168 holder.reset(); 167 holder.reset();
169 } 168 }
170 return holder; 169 return holder;
171 } 170 }
172 171
173 bool RegisterJavaBrowserViewRendererHelper(JNIEnv* env) { 172 bool RegisterJavaBrowserViewRendererHelper(JNIEnv* env) {
174 return RegisterNativesImpl(env); 173 return RegisterNativesImpl(env);
175 } 174 }
176 175
177 } // namespace android_webview 176 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/native/java_browser_view_renderer_helper.h ('k') | android_webview/renderer/aw_render_view_ext.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698