Index: ppapi/proxy/plugin_resource.cc |
diff --git a/ppapi/proxy/plugin_resource.cc b/ppapi/proxy/plugin_resource.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6e387bb5c68c2cb22fb2b16632b021b0b74805fd |
--- /dev/null |
+++ b/ppapi/proxy/plugin_resource.cc |
@@ -0,0 +1,52 @@ |
+// Copyright (c) 2012 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/proxy/plugin_resource.h" |
+ |
+#include "ppapi/proxy/ppapi_messages.h" |
+#include "ppapi/proxy/resource_message_params.h" |
+ |
+namespace ppapi { |
+namespace proxy { |
+ |
+PluginResource::PluginResource(IPC::Sender* sender, PP_Instance instance) |
+ : Resource(OBJECT_IS_PROXY, instance), |
+ sender_(sender), |
+ next_sequence_number_(0), |
+ sent_create_to_renderer_(false) { |
+} |
+ |
+PluginResource::~PluginResource() { |
+ if (sent_create_to_renderer_) |
+ Send(new PpapiHostMsg_ResourceDestroyed(pp_resource())); |
+} |
+ |
+bool PluginResource::Send(IPC::Message* message) { |
+ return sender_->Send(message); |
+} |
+ |
+void PluginResource::SendCreateToRenderer(const IPC::Message& msg) { |
+ DCHECK(!sent_create_to_renderer_); |
+ sent_create_to_renderer_ = true; |
+ ResourceMessageCallParams params(pp_resource(), |
+ next_sequence_number_++); |
+ Send(new PpapiHostMsg_ResourceCreated(params, pp_instance(), msg)); |
+} |
+ |
+void PluginResource::PostToRenderer(const IPC::Message& msg) { |
+ ResourceMessageCallParams params(pp_resource(), |
+ next_sequence_number_++); |
+ Send(new PpapiHostMsg_ResourceCall(params, msg)); |
+} |
+ |
+int32_t PluginResource::CallRenderer(const IPC::Message& msg) { |
+ ResourceMessageCallParams params(pp_resource(), |
+ next_sequence_number_++); |
+ params.set_has_callback(); |
+ Send(new PpapiHostMsg_ResourceCall(params, msg)); |
+ return params.sequence(); |
+} |
+ |
+} // namespace proxy |
+} // namespace ppapi |