// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "ppapi/cpp/dev/widget_client_dev.h" #include "ppapi/c/dev/ppp_scrollbar_dev.h" #include "ppapi/c/dev/ppp_widget_dev.h" #include "ppapi/cpp/dev/scrollbar_dev.h" #include "ppapi/cpp/dev/widget_dev.h" #include "ppapi/cpp/instance.h" #include "ppapi/cpp/instance_handle.h" #include "ppapi/cpp/module.h" #include "ppapi/cpp/module_impl.h" #include "ppapi/cpp/rect.h" namespace pp { namespace { // PPP_Widget_Dev -------------------------------------------------------------- const char kPPPWidgetInterface[] = PPP_WIDGET_DEV_INTERFACE; void Widget_Invalidate(PP_Instance instance, PP_Resource widget_id, const PP_Rect* dirty_rect) { void* object = Instance::GetPerInstanceObject(instance, kPPPWidgetInterface); if (!object) return; return static_cast<WidgetClient_Dev*>(object)->InvalidateWidget( Widget_Dev(widget_id), *dirty_rect); } static PPP_Widget_Dev widget_interface = { &Widget_Invalidate, }; // PPP_Scrollbar_Dev ----------------------------------------------------------- const char kPPPScrollbarInterface[] = PPP_SCROLLBAR_DEV_INTERFACE; void Scrollbar_ValueChanged(PP_Instance instance, PP_Resource scrollbar_id, uint32_t value) { void* object = Instance::GetPerInstanceObject(instance, kPPPScrollbarInterface); if (!object) return; return static_cast<WidgetClient_Dev*>(object)->ScrollbarValueChanged( Scrollbar_Dev(scrollbar_id), value); } void Scrollbar_OverlayChanged(PP_Instance instance, PP_Resource scrollbar_id, PP_Bool overlay) { void* object = Instance::GetPerInstanceObject(instance, kPPPScrollbarInterface); if (!object) return; return static_cast<WidgetClient_Dev*>(object)->ScrollbarOverlayChanged( Scrollbar_Dev(scrollbar_id), PP_ToBool(overlay)); } static PPP_Scrollbar_Dev scrollbar_interface = { &Scrollbar_ValueChanged, &Scrollbar_OverlayChanged, }; } // namespace WidgetClient_Dev::WidgetClient_Dev(Instance* instance) : associated_instance_(instance) { Module::Get()->AddPluginInterface(kPPPWidgetInterface, &widget_interface); instance->AddPerInstanceObject(kPPPWidgetInterface, this); Module::Get()->AddPluginInterface(kPPPScrollbarInterface, &scrollbar_interface); instance->AddPerInstanceObject(kPPPScrollbarInterface, this); } WidgetClient_Dev::~WidgetClient_Dev() { Instance::RemovePerInstanceObject(associated_instance_, kPPPScrollbarInterface, this); Instance::RemovePerInstanceObject(associated_instance_, kPPPWidgetInterface, this); } } // namespace pp