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

Side by Side Diff: webkit/plugins/ppapi/ppb_scrollbar_impl.cc

Issue 7669055: Remove webkit::ppapi::Resource. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Nulls auditeed Created 9 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « webkit/plugins/ppapi/ppb_scrollbar_impl.h ('k') | webkit/plugins/ppapi/ppb_surface_3d_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "webkit/plugins/ppapi/ppb_scrollbar_impl.h" 5 #include "webkit/plugins/ppapi/ppb_scrollbar_impl.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "ppapi/c/dev/ppp_scrollbar_dev.h" 9 #include "ppapi/c/dev/ppp_scrollbar_dev.h"
10 #include "ppapi/thunk/thunk.h" 10 #include "ppapi/thunk/thunk.h"
11 #include "skia/ext/platform_canvas.h" 11 #include "skia/ext/platform_canvas.h"
12 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" 12 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h"
13 #include "third_party/WebKit/Source/WebKit/chromium/public/WebRect.h" 13 #include "third_party/WebKit/Source/WebKit/chromium/public/WebRect.h"
14 #include "third_party/WebKit/Source/WebKit/chromium/public/WebScrollbar.h" 14 #include "third_party/WebKit/Source/WebKit/chromium/public/WebScrollbar.h"
15 #include "third_party/WebKit/Source/WebKit/chromium/public/WebVector.h" 15 #include "third_party/WebKit/Source/WebKit/chromium/public/WebVector.h"
16 #include "webkit/plugins/ppapi/common.h" 16 #include "webkit/plugins/ppapi/common.h"
17 #include "webkit/plugins/ppapi/event_conversion.h" 17 #include "webkit/plugins/ppapi/event_conversion.h"
18 #include "webkit/plugins/ppapi/plugin_module.h" 18 #include "webkit/plugins/ppapi/plugin_module.h"
19 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" 19 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h"
20 #include "webkit/plugins/ppapi/ppb_image_data_impl.h" 20 #include "webkit/plugins/ppapi/ppb_image_data_impl.h"
21 #include "webkit/plugins/ppapi/resource_helper.h"
21 #include "webkit/glue/webkit_glue.h" 22 #include "webkit/glue/webkit_glue.h"
22 23
23 #if defined(OS_WIN) 24 #if defined(OS_WIN)
24 #include "base/win/windows_version.h" 25 #include "base/win/windows_version.h"
25 #endif 26 #endif
26 27
27 using ppapi::thunk::PPB_Scrollbar_API; 28 using ppapi::thunk::PPB_Scrollbar_API;
28 using WebKit::WebInputEvent; 29 using WebKit::WebInputEvent;
29 using WebKit::WebRect; 30 using WebKit::WebRect;
30 using WebKit::WebScrollbar; 31 using WebKit::WebScrollbar;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 &GetValue, 102 &GetValue,
102 &SetValue, 103 &SetValue,
103 &SetDocumentSize, 104 &SetDocumentSize,
104 &SetTickMarks, 105 &SetTickMarks,
105 &ScrollBy 106 &ScrollBy
106 }; 107 };
107 108
108 } // namespace 109 } // namespace
109 110
110 // static 111 // static
111 PP_Resource PPB_Scrollbar_Impl::Create(PluginInstance* instance, 112 PP_Resource PPB_Scrollbar_Impl::Create(PP_Instance instance,
112 bool vertical) { 113 bool vertical) {
113 scoped_refptr<PPB_Scrollbar_Impl> scrollbar( 114 scoped_refptr<PPB_Scrollbar_Impl> scrollbar(
114 new PPB_Scrollbar_Impl(instance)); 115 new PPB_Scrollbar_Impl(instance));
115 scrollbar->Init(vertical); 116 scrollbar->Init(vertical);
116 return scrollbar->GetReference(); 117 return scrollbar->GetReference();
117 } 118 }
118 119
119 PPB_Scrollbar_Impl::PPB_Scrollbar_Impl(PluginInstance* instance) 120 PPB_Scrollbar_Impl::PPB_Scrollbar_Impl(PP_Instance instance)
120 : PPB_Widget_Impl(instance), 121 : PPB_Widget_Impl(instance),
121 ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) { 122 ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) {
122 } 123 }
123 124
124 PPB_Scrollbar_Impl::~PPB_Scrollbar_Impl() { 125 PPB_Scrollbar_Impl::~PPB_Scrollbar_Impl() {
125 } 126 }
126 127
127 void PPB_Scrollbar_Impl::Init(bool vertical) { 128 void PPB_Scrollbar_Impl::Init(bool vertical) {
129 PluginInstance* plugin_instance = ResourceHelper::GetPluginInstance(this);
130 if (!plugin_instance)
131 return;
128 scrollbar_.reset(WebScrollbar::createForPlugin( 132 scrollbar_.reset(WebScrollbar::createForPlugin(
129 vertical ? WebScrollbar::Vertical : WebScrollbar::Horizontal, 133 vertical ? WebScrollbar::Vertical : WebScrollbar::Horizontal,
130 instance()->container(), 134 ResourceHelper::GetPluginInstance(this)->container(),
131 static_cast<WebKit::WebScrollbarClient*>(this))); 135 static_cast<WebKit::WebScrollbarClient*>(this)));
132 } 136 }
133 137
134 PPB_Scrollbar_API* PPB_Scrollbar_Impl::AsPPB_Scrollbar_API() { 138 PPB_Scrollbar_API* PPB_Scrollbar_Impl::AsPPB_Scrollbar_API() {
135 return this; 139 return this;
136 } 140 }
137 141
142 void PPB_Scrollbar_Impl::InstanceWasDeleted() {
143 Resource::LastPluginRefWasDeleted();
144 scrollbar_.reset();
145 }
146
138 // static 147 // static
139 const PPB_Scrollbar_0_3_Dev* PPB_Scrollbar_Impl::Get0_3Interface() { 148 const PPB_Scrollbar_0_3_Dev* PPB_Scrollbar_Impl::Get0_3Interface() {
140 return &ppb_scrollbar_0_3; 149 return &ppb_scrollbar_0_3;
141 } 150 }
142 151
143 // static 152 // static
144 const PPB_Scrollbar_0_4_Dev* PPB_Scrollbar_Impl::Get0_4Interface() { 153 const PPB_Scrollbar_0_4_Dev* PPB_Scrollbar_Impl::Get0_4Interface() {
145 return &ppb_scrollbar_0_4; 154 return &ppb_scrollbar_0_4;
146 } 155 }
147 156
148 uint32_t PPB_Scrollbar_Impl::GetThickness() { 157 uint32_t PPB_Scrollbar_Impl::GetThickness() {
149 return WebScrollbar::defaultThickness(); 158 return WebScrollbar::defaultThickness();
150 } 159 }
151 160
152 bool PPB_Scrollbar_Impl::IsOverlay() { 161 bool PPB_Scrollbar_Impl::IsOverlay() {
153 return scrollbar_->isOverlay(); 162 return scrollbar_->isOverlay();
154 } 163 }
155 164
156 uint32_t PPB_Scrollbar_Impl::GetValue() { 165 uint32_t PPB_Scrollbar_Impl::GetValue() {
157 return scrollbar_->value(); 166 return scrollbar_->value();
158 } 167 }
159 168
160 void PPB_Scrollbar_Impl::SetValue(uint32_t value) { 169 void PPB_Scrollbar_Impl::SetValue(uint32_t value) {
161 scrollbar_->setValue(value); 170 if (scrollbar_.get())
171 scrollbar_->setValue(value);
162 } 172 }
163 173
164 void PPB_Scrollbar_Impl::SetDocumentSize(uint32_t size) { 174 void PPB_Scrollbar_Impl::SetDocumentSize(uint32_t size) {
165 scrollbar_->setDocumentSize(size); 175 if (scrollbar_.get())
176 scrollbar_->setDocumentSize(size);
166 } 177 }
167 178
168 void PPB_Scrollbar_Impl::SetTickMarks(const PP_Rect* tick_marks, 179 void PPB_Scrollbar_Impl::SetTickMarks(const PP_Rect* tick_marks,
169 uint32_t count) { 180 uint32_t count) {
181 if (!scrollbar_.get())
182 return;
170 tickmarks_.resize(count); 183 tickmarks_.resize(count);
171 for (uint32 i = 0; i < count; ++i) { 184 for (uint32 i = 0; i < count; ++i) {
172 tickmarks_[i] = WebRect(tick_marks[i].point.x, 185 tickmarks_[i] = WebRect(tick_marks[i].point.x,
173 tick_marks[i].point.y, 186 tick_marks[i].point.y,
174 tick_marks[i].size.width, 187 tick_marks[i].size.width,
175 tick_marks[i].size.height);; 188 tick_marks[i].size.height);;
176 } 189 }
177 PP_Rect rect = location(); 190 PP_Rect rect = location();
178 Invalidate(&rect); 191 Invalidate(&rect);
179 } 192 }
180 193
181 void PPB_Scrollbar_Impl::ScrollBy(PP_ScrollBy_Dev unit, int32_t multiplier) { 194 void PPB_Scrollbar_Impl::ScrollBy(PP_ScrollBy_Dev unit, int32_t multiplier) {
195 if (!scrollbar_.get())
196 return;
197
182 WebScrollbar::ScrollDirection direction = multiplier >= 0 ? 198 WebScrollbar::ScrollDirection direction = multiplier >= 0 ?
183 WebScrollbar::ScrollForward : WebScrollbar::ScrollBackward; 199 WebScrollbar::ScrollForward : WebScrollbar::ScrollBackward;
184 float fmultiplier = 1.0; 200 float fmultiplier = 1.0;
185 201
186 WebScrollbar::ScrollGranularity granularity; 202 WebScrollbar::ScrollGranularity granularity;
187 if (unit == PP_SCROLLBY_LINE) { 203 if (unit == PP_SCROLLBY_LINE) {
188 granularity = WebScrollbar::ScrollByLine; 204 granularity = WebScrollbar::ScrollByLine;
189 } else if (unit == PP_SCROLLBY_PAGE) { 205 } else if (unit == PP_SCROLLBY_PAGE) {
190 granularity = WebScrollbar::ScrollByPage; 206 granularity = WebScrollbar::ScrollByPage;
191 } else if (unit == PP_SCROLLBY_DOCUMENT) { 207 } else if (unit == PP_SCROLLBY_DOCUMENT) {
192 granularity = WebScrollbar::ScrollByDocument; 208 granularity = WebScrollbar::ScrollByDocument;
193 } else { 209 } else {
194 granularity = WebScrollbar::ScrollByPixel; 210 granularity = WebScrollbar::ScrollByPixel;
195 fmultiplier = static_cast<float>(multiplier); 211 fmultiplier = static_cast<float>(multiplier);
196 if (fmultiplier < 0) 212 if (fmultiplier < 0)
197 fmultiplier *= -1; 213 fmultiplier *= -1;
198 } 214 }
199 scrollbar_->scroll(direction, granularity, fmultiplier); 215 scrollbar_->scroll(direction, granularity, fmultiplier);
200 } 216 }
201 217
202 PP_Bool PPB_Scrollbar_Impl::PaintInternal(const gfx::Rect& rect, 218 PP_Bool PPB_Scrollbar_Impl::PaintInternal(const gfx::Rect& rect,
203 PPB_ImageData_Impl* image) { 219 PPB_ImageData_Impl* image) {
204 ImageDataAutoMapper mapper(image); 220 ImageDataAutoMapper mapper(image);
205 skia::PlatformCanvas* canvas = image->mapped_canvas(); 221 skia::PlatformCanvas* canvas = image->mapped_canvas();
206 if (!canvas) 222 if (!canvas || !scrollbar_.get())
207 return PP_FALSE; 223 return PP_FALSE;
208 scrollbar_->paint(webkit_glue::ToWebCanvas(canvas), rect); 224 scrollbar_->paint(webkit_glue::ToWebCanvas(canvas), rect);
209 225
210 #if defined(OS_WIN) 226 #if defined(OS_WIN)
211 if (base::win::GetVersion() == base::win::VERSION_XP) 227 if (base::win::GetVersion() == base::win::VERSION_XP)
212 skia::MakeOpaque(canvas, rect.x(), rect.y(), rect.width(), rect.height()); 228 skia::MakeOpaque(canvas, rect.x(), rect.y(), rect.width(), rect.height());
213 #endif 229 #endif
214 230
215 return PP_TRUE; 231 return PP_TRUE;
216 } 232 }
217 233
218 PP_Bool PPB_Scrollbar_Impl::HandleEventInternal( 234 PP_Bool PPB_Scrollbar_Impl::HandleEventInternal(
219 const ::ppapi::InputEventData& data) { 235 const ::ppapi::InputEventData& data) {
220 scoped_ptr<WebInputEvent> web_input_event(CreateWebInputEvent(data)); 236 scoped_ptr<WebInputEvent> web_input_event(CreateWebInputEvent(data));
221 if (!web_input_event.get()) 237 if (!web_input_event.get() || !scrollbar_.get())
222 return PP_FALSE; 238 return PP_FALSE;
223 239
224 return PP_FromBool(scrollbar_->handleInputEvent(*web_input_event.get())); 240 return PP_FromBool(scrollbar_->handleInputEvent(*web_input_event.get()));
225 } 241 }
226 242
227 void PPB_Scrollbar_Impl::SetLocationInternal(const PP_Rect* location) { 243 void PPB_Scrollbar_Impl::SetLocationInternal(const PP_Rect* location) {
244 if (!scrollbar_.get())
245 return;
228 scrollbar_->setLocation(WebRect(location->point.x, 246 scrollbar_->setLocation(WebRect(location->point.x,
229 location->point.y, 247 location->point.y,
230 location->size.width, 248 location->size.width,
231 location->size.height)); 249 location->size.height));
232 } 250 }
233 251
234 void PPB_Scrollbar_Impl::valueChanged(WebKit::WebScrollbar* scrollbar) { 252 void PPB_Scrollbar_Impl::valueChanged(WebKit::WebScrollbar* scrollbar) {
253 PluginModule* plugin_module = ResourceHelper::GetPluginModule(this);
254 if (!plugin_module)
255 return;
256
235 const PPP_Scrollbar_Dev* ppp_scrollbar = 257 const PPP_Scrollbar_Dev* ppp_scrollbar =
236 static_cast<const PPP_Scrollbar_Dev*>(instance()->module()-> 258 static_cast<const PPP_Scrollbar_Dev*>(plugin_module->GetPluginInterface(
237 GetPluginInterface(PPP_SCROLLBAR_DEV_INTERFACE)); 259 PPP_SCROLLBAR_DEV_INTERFACE));
238 if (!ppp_scrollbar) { 260 if (!ppp_scrollbar) {
239 // Try the old version. This is ok because the old interface is a subset of 261 // Try the old version. This is ok because the old interface is a subset of
240 // the new one, and ValueChanged didn't change. 262 // the new one, and ValueChanged didn't change.
241 ppp_scrollbar = 263 ppp_scrollbar =
242 static_cast<const PPP_Scrollbar_Dev*>(instance()->module()-> 264 static_cast<const PPP_Scrollbar_Dev*>(plugin_module->GetPluginInterface(
243 GetPluginInterface(PPP_SCROLLBAR_DEV_INTERFACE_0_2)); 265 PPP_SCROLLBAR_DEV_INTERFACE_0_2));
244 if (!ppp_scrollbar) 266 if (!ppp_scrollbar)
245 return; 267 return;
246 } 268 }
247 ScopedResourceId resource(this); 269 ppp_scrollbar->ValueChanged(pp_instance(), pp_resource(),
248 ppp_scrollbar->ValueChanged( 270 scrollbar_->value());
249 instance()->pp_instance(), resource.id, scrollbar_->value());
250 } 271 }
251 272
252 void PPB_Scrollbar_Impl::overlayChanged(WebScrollbar* scrollbar) { 273 void PPB_Scrollbar_Impl::overlayChanged(WebScrollbar* scrollbar) {
274 PluginModule* plugin_module = ResourceHelper::GetPluginModule(this);
275 if (!plugin_module)
276 return;
277
253 const PPP_Scrollbar_Dev* ppp_scrollbar = 278 const PPP_Scrollbar_Dev* ppp_scrollbar =
254 static_cast<const PPP_Scrollbar_Dev*>(instance()->module()-> 279 static_cast<const PPP_Scrollbar_Dev*>(plugin_module->GetPluginInterface(
255 GetPluginInterface(PPP_SCROLLBAR_DEV_INTERFACE)); 280 PPP_SCROLLBAR_DEV_INTERFACE));
256 if (!ppp_scrollbar) 281 if (!ppp_scrollbar)
257 return; 282 return;
258 ScopedResourceId resource(this); 283 ppp_scrollbar->OverlayChanged(pp_instance(), pp_resource(),
259 ppp_scrollbar->OverlayChanged( 284 PP_FromBool(IsOverlay()));
260 instance()->pp_instance(), resource.id,
261 PP_FromBool(IsOverlay()));
262 } 285 }
263 286
264 void PPB_Scrollbar_Impl::invalidateScrollbarRect( 287 void PPB_Scrollbar_Impl::invalidateScrollbarRect(
265 WebKit::WebScrollbar* scrollbar, 288 WebKit::WebScrollbar* scrollbar,
266 const WebKit::WebRect& rect) { 289 const WebKit::WebRect& rect) {
267 gfx::Rect gfx_rect(rect.x, 290 gfx::Rect gfx_rect(rect.x,
268 rect.y, 291 rect.y,
269 rect.width, 292 rect.width,
270 rect.height); 293 rect.height);
271 dirty_ = dirty_.Union(gfx_rect); 294 dirty_ = dirty_.Union(gfx_rect);
(...skipping 28 matching lines...) Expand all
300 pp_rect.point.y = dirty_.y(); 323 pp_rect.point.y = dirty_.y();
301 pp_rect.size.width = dirty_.width(); 324 pp_rect.size.width = dirty_.width();
302 pp_rect.size.height = dirty_.height(); 325 pp_rect.size.height = dirty_.height();
303 dirty_ = gfx::Rect(); 326 dirty_ = gfx::Rect();
304 Invalidate(&pp_rect); 327 Invalidate(&pp_rect);
305 } 328 }
306 329
307 } // namespace ppapi 330 } // namespace ppapi
308 } // namespace webkit 331 } // namespace webkit
309 332
OLDNEW
« no previous file with comments | « webkit/plugins/ppapi/ppb_scrollbar_impl.h ('k') | webkit/plugins/ppapi/ppb_surface_3d_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698