Index: webkit/plugins/ppapi/ppapi_plugin_instance.cc |
=================================================================== |
--- webkit/plugins/ppapi/ppapi_plugin_instance.cc (revision 95420) |
+++ webkit/plugins/ppapi/ppapi_plugin_instance.cc (working copy) |
@@ -61,6 +61,7 @@ |
#include "webkit/plugins/ppapi/ppb_graphics_3d_impl.h" |
#include "webkit/plugins/ppapi/ppb_image_data_impl.h" |
#include "webkit/plugins/ppapi/ppb_input_event_impl.h" |
+#include "webkit/plugins/ppapi/ppb_scrollbar_group_impl.h" |
#include "webkit/plugins/ppapi/ppb_surface_3d_impl.h" |
#include "webkit/plugins/ppapi/ppb_url_loader_impl.h" |
#include "webkit/plugins/ppapi/ppb_url_request_info_impl.h" |
@@ -235,7 +236,8 @@ |
message_channel_(NULL), |
sad_plugin_(NULL), |
input_event_mask_(0), |
- filtered_input_event_mask_(0) { |
+ filtered_input_event_mask_(0), |
+ scrollbar_group_(NULL) { |
pp_instance_ = ResourceTracker::Get()->AddInstance(this); |
memset(¤t_print_settings_, 0, sizeof(current_print_settings_)); |
@@ -441,6 +443,16 @@ |
// Keep a reference on the stack. See NOTE above. |
scoped_refptr<PluginInstance> ref(this); |
+ if (scrollbar_group_) { |
+ if (event.type == WebInputEvent::MouseEnter) { |
+ scrollbar_group_->MouseEnteredContentArea(); |
+ } else if (event.type == WebInputEvent::MouseMove) { |
+ scrollbar_group_->MouseMovedInContentArea(); |
+ } else if (event.type == WebInputEvent::MouseLeave) { |
+ scrollbar_group_->MouseExitedContentArea(); |
+ } |
+ } |
+ |
bool rv = false; |
if (LoadInputEventInterface()) { |
PP_InputEvent_Class event_class = ClassifyInputEvent(event.type); |
@@ -520,6 +532,9 @@ |
clip_ = clip; |
} |
+ if (scrollbar_group_) |
+ scrollbar_group_->ContentResized(); |
+ |
PP_Rect pp_position, pp_clip; |
RectToPPRect(position_, &pp_position); |
RectToPPRect(clip_, &pp_clip); |
@@ -672,6 +687,16 @@ |
plugin_find_interface_->StopFind(pp_instance()); |
} |
+void PluginInstance::WillStartLiveResize() { |
+ if (scrollbar_group_) |
+ scrollbar_group_->WillStartLiveResize(); |
+} |
+ |
+void PluginInstance::WillEndLiveResize() { |
+ if (scrollbar_group_) |
+ scrollbar_group_->WillEndLiveResize(); |
+} |
+ |
bool PluginInstance::LoadFindInterface() { |
if (!plugin_find_interface_) { |
plugin_find_interface_ = |
@@ -1332,6 +1357,17 @@ |
return frame->view()->mainFrame()->document().isPluginDocument(); |
} |
+void PluginInstance::SetScrollbarGroup( |
+ PPB_ScrollbarGroup_Impl* scrollbar_group) { |
+ if (!IsFullPagePlugin()) |
+ return; |
+ |
+ // Only handle one scrollbar group for now, i.e. the normal case of one group |
+ // for a full-page plugin. |
+ DCHECK(!scrollbar_group || !scrollbar_group_); |
+ scrollbar_group_ = scrollbar_group; |
+} |
+ |
PPB_Instance_FunctionAPI* PluginInstance::AsPPB_Instance_FunctionAPI() { |
return this; |
} |