Add/resurrect support for bundles of WebStore items.
[chromium-blink-merge.git] / ppapi / cpp / dev / widget_client_dev.cc
blob731f2922778e762a8ac210883d940c81d7582cf0
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ppapi/cpp/dev/widget_client_dev.h"
7 #include "ppapi/c/dev/ppp_scrollbar_dev.h"
8 #include "ppapi/c/dev/ppp_widget_dev.h"
9 #include "ppapi/cpp/dev/scrollbar_dev.h"
10 #include "ppapi/cpp/dev/widget_dev.h"
11 #include "ppapi/cpp/instance.h"
12 #include "ppapi/cpp/instance_handle.h"
13 #include "ppapi/cpp/module.h"
14 #include "ppapi/cpp/module_impl.h"
15 #include "ppapi/cpp/rect.h"
17 namespace pp {
19 namespace {
21 // PPP_Widget_Dev --------------------------------------------------------------
23 const char kPPPWidgetInterface[] = PPP_WIDGET_DEV_INTERFACE;
25 void Widget_Invalidate(PP_Instance instance,
26 PP_Resource widget_id,
27 const PP_Rect* dirty_rect) {
28 void* object = Instance::GetPerInstanceObject(instance, kPPPWidgetInterface);
29 if (!object)
30 return;
31 return static_cast<WidgetClient_Dev*>(object)->InvalidateWidget(
32 Widget_Dev(widget_id), *dirty_rect);
35 static PPP_Widget_Dev widget_interface = {
36 &Widget_Invalidate,
39 // PPP_Scrollbar_Dev -----------------------------------------------------------
41 const char kPPPScrollbarInterface[] = PPP_SCROLLBAR_DEV_INTERFACE;
43 void Scrollbar_ValueChanged(PP_Instance instance,
44 PP_Resource scrollbar_id,
45 uint32_t value) {
46 void* object =
47 Instance::GetPerInstanceObject(instance, kPPPScrollbarInterface);
48 if (!object)
49 return;
50 return static_cast<WidgetClient_Dev*>(object)->ScrollbarValueChanged(
51 Scrollbar_Dev(scrollbar_id), value);
54 void Scrollbar_OverlayChanged(PP_Instance instance,
55 PP_Resource scrollbar_id,
56 PP_Bool overlay) {
57 void* object =
58 Instance::GetPerInstanceObject(instance, kPPPScrollbarInterface);
59 if (!object)
60 return;
61 return static_cast<WidgetClient_Dev*>(object)->ScrollbarOverlayChanged(
62 Scrollbar_Dev(scrollbar_id), PP_ToBool(overlay));
65 static PPP_Scrollbar_Dev scrollbar_interface = {
66 &Scrollbar_ValueChanged,
67 &Scrollbar_OverlayChanged,
70 } // namespace
72 WidgetClient_Dev::WidgetClient_Dev(Instance* instance)
73 : associated_instance_(instance) {
74 Module::Get()->AddPluginInterface(kPPPWidgetInterface, &widget_interface);
75 instance->AddPerInstanceObject(kPPPWidgetInterface, this);
76 Module::Get()->AddPluginInterface(kPPPScrollbarInterface,
77 &scrollbar_interface);
78 instance->AddPerInstanceObject(kPPPScrollbarInterface, this);
81 WidgetClient_Dev::~WidgetClient_Dev() {
82 Instance::RemovePerInstanceObject(associated_instance_,
83 kPPPScrollbarInterface, this);
84 Instance::RemovePerInstanceObject(associated_instance_,
85 kPPPWidgetInterface, this);
88 } // namespace pp