| Index: webkit/plugins/ppapi/ppb_scrollbar_impl.cc
|
| ===================================================================
|
| --- webkit/plugins/ppapi/ppb_scrollbar_impl.cc (revision 96213)
|
| +++ webkit/plugins/ppapi/ppb_scrollbar_impl.cc (working copy)
|
| @@ -48,10 +48,14 @@
|
| return ::ppapi::thunk::GetPPB_Scrollbar_Thunk()->IsScrollbar(resource);
|
| }
|
|
|
| -uint32_t GetThickness() {
|
| +uint32_t GetThickness3() {
|
| return WebScrollbar::defaultThickness();
|
| }
|
|
|
| +uint32_t GetThickness4(PP_Resource resource) {
|
| + return ::ppapi::thunk::GetPPB_Scrollbar_Thunk()->GetThickness(resource);
|
| +}
|
| +
|
| uint32_t GetValue(PP_Resource resource) {
|
| return ::ppapi::thunk::GetPPB_Scrollbar_Thunk()->GetValue(resource);
|
| }
|
| @@ -82,7 +86,7 @@
|
| const PPB_Scrollbar_0_3_Dev ppb_scrollbar_0_3 = {
|
| &Create,
|
| &IsScrollbar,
|
| - &GetThickness,
|
| + &GetThickness3,
|
| &GetValue,
|
| &SetValue,
|
| &SetDocumentSize,
|
| @@ -90,18 +94,48 @@
|
| &ScrollBy
|
| };
|
|
|
| +const PPB_Scrollbar_0_4_Dev ppb_scrollbar_0_4 = {
|
| + &Create,
|
| + &IsScrollbar,
|
| + &GetThickness4,
|
| + &GetValue,
|
| + &SetValue,
|
| + &SetDocumentSize,
|
| + &SetTickMarks,
|
| + &ScrollBy
|
| +};
|
| +
|
| } // namespace
|
|
|
| -PPB_Scrollbar_Impl::PPB_Scrollbar_Impl(PluginInstance* instance, bool vertical)
|
| +// static
|
| +PP_Resource PPB_Scrollbar_Impl::Create(PluginInstance* instance,
|
| + bool vertical) {
|
| + scoped_refptr<PPB_Scrollbar_Impl> scrollbar(
|
| + new PPB_Scrollbar_Impl(instance));
|
| + scrollbar->Init(vertical);
|
| + return scrollbar->GetReference();
|
| +}
|
| +
|
| +PPB_Scrollbar_Impl::PPB_Scrollbar_Impl(PluginInstance* instance)
|
| : PPB_Widget_Impl(instance) {
|
| +}
|
| +
|
| +PPB_Scrollbar_Impl::~PPB_Scrollbar_Impl() {
|
| +}
|
| +
|
| +void PPB_Scrollbar_Impl::Init(bool vertical) {
|
| +#if defined(WEBSCROLLBAR_SUPPORTS_OVERLAY)
|
| + scrollbar_.reset(WebScrollbar::createForPlugin(
|
| + vertical ? WebScrollbar::Vertical : WebScrollbar::Horizontal,
|
| + instance()->container(),
|
| + static_cast<WebKit::WebScrollbarClient*>(this)));
|
| +#else
|
| scrollbar_.reset(WebScrollbar::create(
|
| static_cast<WebKit::WebScrollbarClient*>(this),
|
| vertical ? WebScrollbar::Vertical : WebScrollbar::Horizontal));
|
| +#endif
|
| }
|
|
|
| -PPB_Scrollbar_Impl::~PPB_Scrollbar_Impl() {
|
| -}
|
| -
|
| PPB_Scrollbar_API* PPB_Scrollbar_Impl::AsPPB_Scrollbar_API() {
|
| return this;
|
| }
|
| @@ -111,10 +145,24 @@
|
| return &ppb_scrollbar_0_3;
|
| }
|
|
|
| +// static
|
| +const PPB_Scrollbar_0_4_Dev* PPB_Scrollbar_Impl::Get0_4Interface() {
|
| + return &ppb_scrollbar_0_4;
|
| +}
|
| +
|
| uint32_t PPB_Scrollbar_Impl::GetThickness() {
|
| return WebScrollbar::defaultThickness();
|
| }
|
|
|
| +bool PPB_Scrollbar_Impl::IsOverlay() {
|
| +// TODO(jam): take this out once WebKit is rolled.
|
| +#if defined(WEBSCROLLBAR_SUPPORTS_OVERLAY)
|
| + return scrollbar_->isOverlay();
|
| +#else
|
| + return false;
|
| +#endif
|
| +}
|
| +
|
| uint32_t PPB_Scrollbar_Impl::GetValue() {
|
| return scrollbar_->value();
|
| }
|
| @@ -197,13 +245,32 @@
|
| const PPP_Scrollbar_Dev* ppp_scrollbar =
|
| static_cast<const PPP_Scrollbar_Dev*>(instance()->module()->
|
| GetPluginInterface(PPP_SCROLLBAR_DEV_INTERFACE));
|
| - if (!ppp_scrollbar)
|
| - return;
|
| + if (!ppp_scrollbar) {
|
| + // Try the old version. This is ok because the old interface is a subset of
|
| + // the new one, and ValueChanged didn't change.
|
| + ppp_scrollbar =
|
| + static_cast<const PPP_Scrollbar_Dev*>(instance()->module()->
|
| + GetPluginInterface(PPP_SCROLLBAR_DEV_INTERFACE_0_2));
|
| + if (!ppp_scrollbar)
|
| + return;
|
| + }
|
| ScopedResourceId resource(this);
|
| ppp_scrollbar->ValueChanged(
|
| instance()->pp_instance(), resource.id, scrollbar_->value());
|
| }
|
|
|
| +void PPB_Scrollbar_Impl::overlayChanged(WebScrollbar* scrollbar) {
|
| + const PPP_Scrollbar_Dev* ppp_scrollbar =
|
| + static_cast<const PPP_Scrollbar_Dev*>(instance()->module()->
|
| + GetPluginInterface(PPP_SCROLLBAR_DEV_INTERFACE));
|
| + if (!ppp_scrollbar)
|
| + return;
|
| + ScopedResourceId resource(this);
|
| + ppp_scrollbar->OverlayChanged(
|
| + instance()->pp_instance(), resource.id,
|
| + PP_FromBool(IsOverlay()));
|
| +}
|
| +
|
| void PPB_Scrollbar_Impl::invalidateScrollbarRect(
|
| WebKit::WebScrollbar* scrollbar,
|
| const WebKit::WebRect& rect) {
|
|
|