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

Unified Diff: webkit/plugins/ppapi/ppb_scrollbar_impl.cc

Issue 7538006: Pepper and WebKit API change to support a plugin knowing if a scrollbar is an overlay one. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: sync and take out WebKit changes 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/plugins/ppapi/ppb_scrollbar_impl.h ('k') | webkit/plugins/ppapi/resource_creation_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « webkit/plugins/ppapi/ppb_scrollbar_impl.h ('k') | webkit/plugins/ppapi/resource_creation_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698