summaryrefslogtreecommitdiffstats
path: root/ppapi
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-06 22:52:40 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-06 22:52:40 +0000
commit55a5a5252075df867707a521b927e5e24f9090e1 (patch)
treecb030c4a7ef0d0aa1dfeea5ea16090958c222a9b /ppapi
parent3704633a280e1e834ea3959f57841ab718cbe3ec (diff)
downloadchromium_src-55a5a5252075df867707a521b927e5e24f9090e1.zip
chromium_src-55a5a5252075df867707a521b927e5e24f9090e1.tar.gz
chromium_src-55a5a5252075df867707a521b927e5e24f9090e1.tar.bz2
Move PPB_Zoom and PPB_Messageing to the thunk system. Implement PPB_Messaging
proxy. TEST=none BUG=none Review URL: http://codereview.chromium.org/7283020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@91633 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r--ppapi/ppapi_shared.gypi2
-rw-r--r--ppapi/proxy/ppapi_messages.h3
-rw-r--r--ppapi/proxy/ppb_instance_proxy.cc32
-rw-r--r--ppapi/proxy/ppb_instance_proxy.h7
-rw-r--r--ppapi/thunk/ppb_instance_api.h9
-rw-r--r--ppapi/thunk/ppb_messaging_thunk.cc32
-rw-r--r--ppapi/thunk/ppb_zoom_thunk.cc43
-rw-r--r--ppapi/thunk/thunk.h4
8 files changed, 132 insertions, 0 deletions
diff --git a/ppapi/ppapi_shared.gypi b/ppapi/ppapi_shared.gypi
index 5422d94..476dc1f 100644
--- a/ppapi/ppapi_shared.gypi
+++ b/ppapi/ppapi_shared.gypi
@@ -106,6 +106,7 @@
'thunk/ppb_instance_thunk.cc',
'thunk/ppb_layer_compositor_api.h',
'thunk/ppb_layer_compositor_thunk.cc',
+ 'thunk/ppb_messaging_thunk.cc',
'thunk/ppb_pdf_api.h',
'thunk/ppb_scrollbar_api.h',
'thunk/ppb_scrollbar_thunk.cc',
@@ -125,6 +126,7 @@
'thunk/ppb_video_layer_thunk.cc',
'thunk/ppb_widget_api.h',
'thunk/ppb_widget_thunk.cc',
+ 'thunk/ppb_zoom_thunk.cc',
'thunk/thunk.h',
],
},
diff --git a/ppapi/proxy/ppapi_messages.h b/ppapi/proxy/ppapi_messages.h
index 75f79ac..faba350 100644
--- a/ppapi/proxy/ppapi_messages.h
+++ b/ppapi/proxy/ppapi_messages.h
@@ -625,6 +625,9 @@ IPC_SYNC_MESSAGE_ROUTED1_2(PpapiHostMsg_PPBInstance_GetScreenSize,
PP_Instance /* instance */,
PP_Bool /* result */,
PP_Size /* size */)
+IPC_MESSAGE_ROUTED2(PpapiHostMsg_PPBInstance_PostMessage,
+ PP_Instance /* instance */,
+ pp::proxy::SerializedVar /* message */)
IPC_SYNC_MESSAGE_ROUTED3_1(
PpapiHostMsg_PPBPDF_GetFontFileWithFallback,
diff --git a/ppapi/proxy/ppb_instance_proxy.cc b/ppapi/proxy/ppb_instance_proxy.cc
index af12d28..98ae45d 100644
--- a/ppapi/proxy/ppb_instance_proxy.cc
+++ b/ppapi/proxy/ppb_instance_proxy.cc
@@ -16,6 +16,11 @@
#include "ppapi/thunk/enter.h"
#include "ppapi/thunk/thunk.h"
+// Windows headers interfere with this file.
+#ifdef PostMessage
+#undef PostMessage
+#endif
+
using ppapi::thunk::EnterFunctionNoLock;
using ppapi::thunk::EnterResourceNoLock;
using ppapi::thunk::PPB_Instance_FunctionAPI;
@@ -193,6 +198,26 @@ PP_Bool PPB_Instance_Proxy::GetScreenSize(PP_Instance instance,
return result;
}
+void PPB_Instance_Proxy::ZoomChanged(PP_Instance instance,
+ double factor) {
+ // Not proxied yet.
+ NOTIMPLEMENTED();
+}
+
+void PPB_Instance_Proxy::ZoomLimitsChanged(PP_Instance instance,
+ double minimum_factor,
+ double maximium_factor) {
+ // Not proxied yet.
+ NOTIMPLEMENTED();
+}
+
+void PPB_Instance_Proxy::PostMessage(PP_Instance instance,
+ PP_Var message) {
+ dispatcher()->Send(new PpapiHostMsg_PPBInstance_PostMessage(
+ INTERFACE_ID_PPB_INSTANCE,
+ instance, SerializedVarSendInput(dispatcher(), message)));
+}
+
void PPB_Instance_Proxy::OnMsgGetWindowObject(
PP_Instance instance,
SerializedVarReturnValue result) {
@@ -264,5 +289,12 @@ void PPB_Instance_Proxy::OnMsgGetScreenSize(PP_Instance instance,
*result = enter.functions()->GetScreenSize(instance, size);
}
+void PPB_Instance_Proxy::OnMsgPostMessage(PP_Instance instance,
+ SerializedVarReceiveInput message) {
+ EnterFunctionNoLock<PPB_Instance_FunctionAPI> enter(instance, false);
+ if (enter.succeeded())
+ enter.functions()->PostMessage(instance, message.Get(dispatcher()));
+}
+
} // namespace proxy
} // namespace pp
diff --git a/ppapi/proxy/ppb_instance_proxy.h b/ppapi/proxy/ppb_instance_proxy.h
index b765279..1a719ea6 100644
--- a/ppapi/proxy/ppb_instance_proxy.h
+++ b/ppapi/proxy/ppb_instance_proxy.h
@@ -51,6 +51,11 @@ class PPB_Instance_Proxy : public InterfaceProxy,
virtual PP_Bool SetFullscreen(PP_Instance instance,
PP_Bool fullscreen) OVERRIDE;
virtual PP_Bool GetScreenSize(PP_Instance instance, PP_Size* size) OVERRIDE;
+ virtual void ZoomChanged(PP_Instance instance, double factor) OVERRIDE;
+ virtual void ZoomLimitsChanged(PP_Instance instance,
+ double minimum_factor,
+ double maximium_factor) OVERRIDE;
+ virtual void PostMessage(PP_Instance instance, PP_Var message) OVERRIDE;
private:
// Message handlers.
@@ -72,6 +77,8 @@ class PPB_Instance_Proxy : public InterfaceProxy,
void OnMsgGetScreenSize(PP_Instance instance,
PP_Bool* result,
PP_Size* size);
+ void OnMsgPostMessage(PP_Instance instance,
+ SerializedVarReceiveInput message);
};
} // namespace proxy
diff --git a/ppapi/thunk/ppb_instance_api.h b/ppapi/thunk/ppb_instance_api.h
index 848a1fb..f77da8a 100644
--- a/ppapi/thunk/ppb_instance_api.h
+++ b/ppapi/thunk/ppb_instance_api.h
@@ -33,6 +33,15 @@ class PPB_Instance_FunctionAPI {
virtual PP_Bool SetFullscreen(PP_Instance instance, PP_Bool fullscreen) = 0;
virtual PP_Bool GetScreenSize(PP_Instance instance, PP_Size* size) = 0;
+ // Messaging.
+ virtual void PostMessage(PP_Instance instance, PP_Var message) = 0;
+
+ // Zoom
+ virtual void ZoomChanged(PP_Instance instance, double factor) = 0;
+ virtual void ZoomLimitsChanged(PP_Instance instance,
+ double minimum_factor,
+ double maximium_factor) = 0;
+
static const ::pp::proxy::InterfaceID interface_id =
::pp::proxy::INTERFACE_ID_PPB_INSTANCE;
};
diff --git a/ppapi/thunk/ppb_messaging_thunk.cc b/ppapi/thunk/ppb_messaging_thunk.cc
new file mode 100644
index 0000000..8b534e0
--- /dev/null
+++ b/ppapi/thunk/ppb_messaging_thunk.cc
@@ -0,0 +1,32 @@
+// Copyright (c) 2011 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/c/ppb_messaging.h"
+#include "ppapi/thunk/enter.h"
+#include "ppapi/thunk/thunk.h"
+#include "ppapi/thunk/ppb_instance_api.h"
+
+namespace ppapi {
+namespace thunk {
+
+namespace {
+
+void PostMessage(PP_Instance instance, PP_Var message) {
+ EnterFunction<PPB_Instance_FunctionAPI> enter(instance, true);
+ if (enter.succeeded())
+ enter.functions()->PostMessage(instance, message);
+}
+
+const PPB_Messaging g_ppb_messaging_thunk = {
+ &PostMessage
+};
+
+} // namespace
+
+const PPB_Messaging* GetPPB_Messaging_Thunk() {
+ return &g_ppb_messaging_thunk;
+}
+
+} // namespace thunk
+} // namespace ppapi
diff --git a/ppapi/thunk/ppb_zoom_thunk.cc b/ppapi/thunk/ppb_zoom_thunk.cc
new file mode 100644
index 0000000..e7e5236
--- /dev/null
+++ b/ppapi/thunk/ppb_zoom_thunk.cc
@@ -0,0 +1,43 @@
+// Copyright (c) 2011 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/c/dev/ppb_zoom_dev.h"
+#include "ppapi/thunk/thunk.h"
+#include "ppapi/thunk/enter.h"
+#include "ppapi/thunk/ppb_instance_api.h"
+
+namespace ppapi {
+namespace thunk {
+
+namespace {
+
+void ZoomChanged(PP_Instance instance, double factor) {
+ EnterFunction<PPB_Instance_FunctionAPI> enter(instance, true);
+ if (enter.succeeded())
+ enter.functions()->ZoomChanged(instance, factor);
+}
+
+void ZoomLimitsChanged(PP_Instance instance,
+ double minimum_factor,
+ double maximum_factor) {
+ EnterFunction<PPB_Instance_FunctionAPI> enter(instance, true);
+ if (enter.succeeded()) {
+ enter.functions()->ZoomLimitsChanged(instance,
+ minimum_factor, maximum_factor);
+ }
+}
+
+const PPB_Zoom_Dev g_ppb_zoom_thunk = {
+ &ZoomChanged,
+ &ZoomLimitsChanged
+};
+
+} // namespace
+
+const PPB_Zoom_Dev* GetPPB_Zoom_Thunk() {
+ return &g_ppb_zoom_thunk;
+}
+
+} // namespace thunk
+} // namespace ppapi
diff --git a/ppapi/thunk/thunk.h b/ppapi/thunk/thunk.h
index 9fb84b3..00c4ecf 100644
--- a/ppapi/thunk/thunk.h
+++ b/ppapi/thunk/thunk.h
@@ -35,6 +35,7 @@ struct PPB_ImageDataTrusted;
struct PPB_Instance;
struct PPB_Instance_Private;
struct PPB_LayerCompositor_Dev;
+struct PPB_Messaging;
struct PPB_Scrollbar_0_4_Dev;
struct PPB_Surface3D_Dev;
struct PPB_Transport_Dev;
@@ -45,6 +46,7 @@ struct PPB_URLResponseInfo;
struct PPB_VideoDecoder_Dev;
struct PPB_VideoLayer_Dev;
struct PPB_Widget_Dev;
+struct PPB_Zoom_Dev;
#ifdef PPAPI_INSTANCE_REMOVE_SCRIPTING
struct PPB_Instance_0_4;
@@ -89,6 +91,7 @@ const PPB_Instance_0_4* GetPPB_Instance_0_4_Thunk();
const PPB_Instance_0_5* GetPPB_Instance_0_5_Thunk();
const PPB_Instance_Private* GetPPB_Instance_Private_Thunk();
const PPB_LayerCompositor_Dev* GetPPB_LayerCompositor_Thunk();
+const PPB_Messaging* GetPPB_Messaging_Thunk();
const PPB_Scrollbar_0_4_Dev* GetPPB_Scrollbar_Thunk();
const PPB_Surface3D_Dev* GetPPB_Surface3D_Thunk();
const PPB_Transport_Dev* GetPPB_Transport_Thunk();
@@ -99,6 +102,7 @@ const PPB_URLResponseInfo* GetPPB_URLResponseInfo_Thunk();
const PPB_VideoDecoder_Dev* GetPPB_VideoDecoder_Thunk();
const PPB_VideoLayer_Dev* GetPPB_VideoLayer_Thunk();
const PPB_Widget_Dev* GetPPB_Widget_Thunk();
+const PPB_Zoom_Dev* GetPPB_Zoom_Thunk();
} // namespace thunk
} // namespace ppapi