12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// From ppb_messaging.idl modified Wed Sep 10 15:41:14 2014.
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/dev/ppb_messaging_deprecated.h"
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/pp_errors.h"
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/c/ppb_messaging.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/shared_impl/tracked_callback.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/thunk/enter.h"
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/thunk/ppapi_thunk_export.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace ppapi {
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace thunk {
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace {
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void PostMessage(PP_Instance instance, struct PP_Var message) {
201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  VLOG(4) << "PPB_Messaging::PostMessage()";
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EnterInstance enter(instance);
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  if (enter.failed())
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return;
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  enter.functions()->PostMessage(instance, message);
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)int32_t RegisterMessageHandler_1_1_Deprecated(
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    PP_Instance instance,
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    void* user_data,
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    const struct PPP_MessageHandler_0_1_Deprecated* handler,
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    PP_Resource message_loop) {
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  VLOG(4) << "PPB_Messaging::RegisterMessageHandler_1_1()";
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EnterInstance enter(instance);
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  if (enter.failed())
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return enter.retval();
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return enter.functions()->RegisterMessageHandler_1_1_Deprecated(instance,
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                                                  user_data,
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                                                  handler,
391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                                                                  message_loop);
401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)int32_t RegisterMessageHandler_1_2(PP_Instance instance,
431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                                   void* user_data,
441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                                   const struct PPP_MessageHandler_0_2* handler,
451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                                   PP_Resource message_loop) {
461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  VLOG(4) << "PPB_Messaging::RegisterMessageHandler()";
47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EnterInstance enter(instance);
48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  if (enter.failed())
49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return enter.retval();
50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return enter.functions()->RegisterMessageHandler(instance,
511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                                                   user_data,
521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                                                   handler,
53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                                   message_loop);
54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void UnregisterMessageHandler(PP_Instance instance) {
57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  VLOG(4) << "PPB_Messaging::UnregisterMessageHandler()";
58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EnterInstance enter(instance);
59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  if (enter.failed())
60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return;
61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  enter.functions()->UnregisterMessageHandler(instance);
621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
631e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
641e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)const PPB_Messaging_1_0 g_ppb_messaging_thunk_1_0 = {
651e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  &PostMessage
661e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)};
671e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)const PPB_Messaging_1_1_Deprecated g_ppb_messaging_thunk_1_1_deprecated = {
691e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  &PostMessage,
701e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  &RegisterMessageHandler_1_1_Deprecated,
711e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  &UnregisterMessageHandler
721e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)};
731e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const PPB_Messaging_1_2 g_ppb_messaging_thunk_1_2 = {
751e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  &PostMessage,
761e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  &RegisterMessageHandler_1_2,
771e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  &UnregisterMessageHandler
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
791e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
801e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}  // namespace
81eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
82f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)PPAPI_THUNK_EXPORT const PPB_Messaging_1_0* GetPPB_Messaging_1_0_Thunk() {
83f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return &g_ppb_messaging_thunk_1_0;
84f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
85f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
86f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)PPAPI_THUNK_EXPORT
87f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)const PPB_Messaging_1_1_Deprecated* GetPPB_Messaging_1_1_Deprecated_Thunk() {
88f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return &g_ppb_messaging_thunk_1_1_deprecated;
89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
91f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)PPAPI_THUNK_EXPORT const PPB_Messaging_1_2* GetPPB_Messaging_1_2_Thunk() {
92f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return &g_ppb_messaging_thunk_1_2;
93f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace thunk
96f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace ppapi
97f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)