blob: 4464ca65decd54491a9f597474dbf431b66dce8d [file] [log] [blame]
[email protected]eccf80312012-07-14 15:43:421// Copyright (c) 2012 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.
4
5#include "ppapi/proxy/plugin_resource.h"
6
7#include "ppapi/proxy/ppapi_messages.h"
8#include "ppapi/proxy/resource_message_params.h"
9
10namespace ppapi {
11namespace proxy {
12
[email protected]93df81e2012-08-10 22:22:4613PluginResource::PluginResource(Connection connection, PP_Instance instance)
[email protected]eccf80312012-07-14 15:43:4214 : Resource(OBJECT_IS_PROXY, instance),
[email protected]93df81e2012-08-10 22:22:4615 connection_(connection),
[email protected]eccf80312012-07-14 15:43:4216 next_sequence_number_(0),
[email protected]93df81e2012-08-10 22:22:4617 sent_create_to_browser_(false),
[email protected]eccf80312012-07-14 15:43:4218 sent_create_to_renderer_(false) {
19}
20
21PluginResource::~PluginResource() {
[email protected]93df81e2012-08-10 22:22:4622 if (sent_create_to_browser_) {
23 connection_.browser_sender->Send(
24 new PpapiHostMsg_ResourceDestroyed(pp_resource()));
25 }
26 if (sent_create_to_renderer_) {
27 connection_.renderer_sender->Send(
28 new PpapiHostMsg_ResourceDestroyed(pp_resource()));
29 }
[email protected]eccf80312012-07-14 15:43:4230}
31
[email protected]93df81e2012-08-10 22:22:4632void PluginResource::SendCreateToBrowser(const IPC::Message& msg) {
33 DCHECK(!sent_create_to_browser_);
34 sent_create_to_browser_ = true;
35 ResourceMessageCallParams params(pp_resource(),
36 next_sequence_number_++);
37 connection_.browser_sender->Send(
38 new PpapiHostMsg_ResourceCreated(params, pp_instance(), msg));
[email protected]eccf80312012-07-14 15:43:4239}
40
41void PluginResource::SendCreateToRenderer(const IPC::Message& msg) {
42 DCHECK(!sent_create_to_renderer_);
43 sent_create_to_renderer_ = true;
44 ResourceMessageCallParams params(pp_resource(),
45 next_sequence_number_++);
[email protected]93df81e2012-08-10 22:22:4646 connection_.renderer_sender->Send(
47 new PpapiHostMsg_ResourceCreated(params, pp_instance(), msg));
48}
49
50void PluginResource::PostToBrowser(const IPC::Message& msg) {
51 ResourceMessageCallParams params(pp_resource(),
52 next_sequence_number_++);
53 connection_.browser_sender->Send(new PpapiHostMsg_ResourceCall(params, msg));
[email protected]eccf80312012-07-14 15:43:4254}
55
56void PluginResource::PostToRenderer(const IPC::Message& msg) {
57 ResourceMessageCallParams params(pp_resource(),
58 next_sequence_number_++);
[email protected]93df81e2012-08-10 22:22:4659 connection_.renderer_sender->Send(new PpapiHostMsg_ResourceCall(params, msg));
60}
61
62int32_t PluginResource::CallBrowser(const IPC::Message& msg) {
63 ResourceMessageCallParams params(pp_resource(),
64 next_sequence_number_++);
65 params.set_has_callback();
66 connection_.browser_sender->Send(new PpapiHostMsg_ResourceCall(params, msg));
67 return params.sequence();
[email protected]eccf80312012-07-14 15:43:4268}
69
70int32_t PluginResource::CallRenderer(const IPC::Message& msg) {
71 ResourceMessageCallParams params(pp_resource(),
72 next_sequence_number_++);
73 params.set_has_callback();
[email protected]93df81e2012-08-10 22:22:4674 connection_.renderer_sender->Send(new PpapiHostMsg_ResourceCall(params, msg));
[email protected]eccf80312012-07-14 15:43:4275 return params.sequence();
76}
77
78} // namespace proxy
79} // namespace ppapi