summaryrefslogtreecommitdiffstats
path: root/ppapi/proxy
diff options
context:
space:
mode:
Diffstat (limited to 'ppapi/proxy')
-rw-r--r--ppapi/proxy/mock_resource.cc4
-rw-r--r--ppapi/proxy/mock_resource.h4
-rw-r--r--ppapi/proxy/plugin_dispatcher.cc8
-rw-r--r--ppapi/proxy/plugin_dispatcher.h5
-rw-r--r--ppapi/proxy/plugin_resource.cc27
-rw-r--r--ppapi/proxy/plugin_resource.h45
-rw-r--r--ppapi/proxy/plugin_resource_tracker.cc138
-rw-r--r--ppapi/proxy/plugin_resource_tracker.h52
-rw-r--r--ppapi/proxy/plugin_resource_tracker_unittest.cc15
-rw-r--r--ppapi/proxy/ppapi_param_traits.cc6
-rw-r--r--ppapi/proxy/ppapi_proxy_test.cc3
-rw-r--r--ppapi/proxy/ppb_audio_config_proxy.cc12
-rw-r--r--ppapi/proxy/ppb_audio_proxy.cc17
-rw-r--r--ppapi/proxy/ppb_broker_proxy.cc17
-rw-r--r--ppapi/proxy/ppb_buffer_proxy.cc6
-rw-r--r--ppapi/proxy/ppb_buffer_proxy.h6
-rw-r--r--ppapi/proxy/ppb_context_3d_proxy.cc23
-rw-r--r--ppapi/proxy/ppb_context_3d_proxy.h7
-rw-r--r--ppapi/proxy/ppb_cursor_control_proxy.cc8
-rw-r--r--ppapi/proxy/ppb_file_chooser_proxy.cc16
-rw-r--r--ppapi/proxy/ppb_file_ref_proxy.cc35
-rw-r--r--ppapi/proxy/ppb_file_system_proxy.cc17
-rw-r--r--ppapi/proxy/ppb_flash_file_proxy.cc18
-rw-r--r--ppapi/proxy/ppb_flash_menu_proxy.cc16
-rw-r--r--ppapi/proxy/ppb_flash_menu_proxy.h5
-rw-r--r--ppapi/proxy/ppb_flash_net_connector_proxy.cc14
-rw-r--r--ppapi/proxy/ppb_flash_proxy.cc18
-rw-r--r--ppapi/proxy/ppb_flash_tcp_socket_proxy.cc18
-rw-r--r--ppapi/proxy/ppb_font_proxy.cc12
-rw-r--r--ppapi/proxy/ppb_font_proxy.h9
-rw-r--r--ppapi/proxy/ppb_graphics_2d_proxy.cc31
-rw-r--r--ppapi/proxy/ppb_graphics_2d_proxy.h1
-rw-r--r--ppapi/proxy/ppb_graphics_3d_proxy.cc10
-rw-r--r--ppapi/proxy/ppb_graphics_3d_proxy.h6
-rw-r--r--ppapi/proxy/ppb_image_data_proxy.cc4
-rw-r--r--ppapi/proxy/ppb_image_data_proxy.h11
-rw-r--r--ppapi/proxy/ppb_input_event_proxy.cc13
-rw-r--r--ppapi/proxy/ppb_instance_proxy.cc7
-rw-r--r--ppapi/proxy/ppb_pdf_proxy.cc12
-rw-r--r--ppapi/proxy/ppb_surface_3d_proxy.cc13
-rw-r--r--ppapi/proxy/ppb_surface_3d_proxy.h10
-rw-r--r--ppapi/proxy/ppb_testing_proxy.cc15
-rw-r--r--ppapi/proxy/ppb_url_loader_proxy.cc19
-rw-r--r--ppapi/proxy/ppb_url_request_info_proxy.cc18
-rw-r--r--ppapi/proxy/ppb_url_response_info_proxy.cc23
-rw-r--r--ppapi/proxy/ppb_url_response_info_proxy.h2
-rw-r--r--ppapi/proxy/ppb_video_capture_proxy.cc16
-rw-r--r--ppapi/proxy/ppb_video_decoder_proxy.cc48
-rw-r--r--ppapi/proxy/ppb_video_decoder_proxy.h1
-rw-r--r--ppapi/proxy/ppp_graphics_3d_proxy.h1
-rw-r--r--ppapi/proxy/ppp_instance_private_proxy.h1
-rw-r--r--ppapi/proxy/ppp_instance_proxy.cc2
-rw-r--r--ppapi/proxy/ppp_video_decoder_proxy.cc4
-rw-r--r--ppapi/proxy/proxy_module.h1
-rw-r--r--ppapi/proxy/resource_creation_proxy.cc8
55 files changed, 345 insertions, 513 deletions
diff --git a/ppapi/proxy/mock_resource.cc b/ppapi/proxy/mock_resource.cc
index 2f1a0b7..2173eea 100644
--- a/ppapi/proxy/mock_resource.cc
+++ b/ppapi/proxy/mock_resource.cc
@@ -5,12 +5,12 @@
#include "ppapi/proxy/mock_resource.h"
using ppapi::HostResource;
+using ppapi::Resource;
namespace pp {
namespace proxy {
-MockResource::MockResource(const HostResource& resource)
- : PluginResource(resource) {
+MockResource::MockResource(const HostResource& resource) : Resource(resource) {
}
MockResource::~MockResource() {
diff --git a/ppapi/proxy/mock_resource.h b/ppapi/proxy/mock_resource.h
index dbad2f6..a886c20 100644
--- a/ppapi/proxy/mock_resource.h
+++ b/ppapi/proxy/mock_resource.h
@@ -6,12 +6,12 @@
#define PPAPI_PROXY_MOCK_RESOURCE_H_
#include "ppapi/c/pp_instance.h"
-#include "ppapi/proxy/plugin_resource.h"
+#include "ppapi/shared_impl/resource.h"
namespace pp {
namespace proxy {
-class MockResource : public PluginResource {
+class MockResource : public ppapi::Resource {
public:
MockResource(const ppapi::HostResource& resource);
virtual ~MockResource();
diff --git a/ppapi/proxy/plugin_dispatcher.cc b/ppapi/proxy/plugin_dispatcher.cc
index 53dab26..fea4de6 100644
--- a/ppapi/proxy/plugin_dispatcher.cc
+++ b/ppapi/proxy/plugin_dispatcher.cc
@@ -24,6 +24,7 @@
#include "ppapi/proxy/ppb_instance_proxy.h"
#include "ppapi/proxy/ppp_class_proxy.h"
#include "ppapi/proxy/resource_creation_proxy.h"
+#include "ppapi/shared_impl/resource.h"
#include "ppapi/shared_impl/tracker_base.h"
#if defined(OS_POSIX)
@@ -31,6 +32,8 @@
#include "ipc/ipc_channel_posix.h"
#endif
+using ppapi::Resource;
+
namespace pp {
namespace proxy {
@@ -74,6 +77,11 @@ PluginDispatcher* PluginDispatcher::GetForInstance(PP_Instance instance) {
}
// static
+PluginDispatcher* PluginDispatcher::GetForResource(const Resource* resource) {
+ return GetForInstance(resource->pp_instance());
+}
+
+// static
const void* PluginDispatcher::GetInterfaceFromDispatcher(
const char* interface) {
// All interfaces the plugin requests of the browser are "PPB".
diff --git a/ppapi/proxy/plugin_dispatcher.h b/ppapi/proxy/plugin_dispatcher.h
index ae6da60..b2fbeec 100644
--- a/ppapi/proxy/plugin_dispatcher.h
+++ b/ppapi/proxy/plugin_dispatcher.h
@@ -26,6 +26,7 @@ class WaitableEvent;
namespace ppapi {
struct Preferences;
+class Resource;
}
namespace pp {
@@ -84,6 +85,10 @@ class PluginDispatcher : public Dispatcher {
// DidCreateInstance/DidDestroyInstance.
static PluginDispatcher* GetForInstance(PP_Instance instance);
+ // Same as GetForInstance but retrieves the instance from the given resource
+ // object as a convenience. Returns NULL on failure.
+ static PluginDispatcher* GetForResource(const ppapi::Resource* resource);
+
static const void* GetInterfaceFromDispatcher(const char* interface);
// You must call this function before anything else. Returns true on success.
diff --git a/ppapi/proxy/plugin_resource.cc b/ppapi/proxy/plugin_resource.cc
deleted file mode 100644
index e9f3b75..0000000
--- a/ppapi/proxy/plugin_resource.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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/proxy/plugin_resource.h"
-
-using ppapi::HostResource;
-
-namespace pp {
-namespace proxy {
-
-PluginResource::PluginResource(const HostResource& resource)
- : ResourceObjectBase(resource.instance()),
- host_resource_(resource) {
-}
-
-PluginResource::~PluginResource() {
-}
-
-PluginDispatcher* PluginResource::GetDispatcher() {
- PluginDispatcher* disp = PluginDispatcher::GetForInstance(instance());
- CHECK(disp);
- return disp;
-}
-
-} // namespace proxy
-} // namespace pp
diff --git a/ppapi/proxy/plugin_resource.h b/ppapi/proxy/plugin_resource.h
deleted file mode 100644
index 298b4cd..0000000
--- a/ppapi/proxy/plugin_resource.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// 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.
-
-#ifndef PPAPI_PROXY_PLUGIN_RESOURCE_H_
-#define PPAPI_PROXY_PLUGIN_RESOURCE_H_
-
-#include "base/basictypes.h"
-#include "ppapi/c/pp_instance.h"
-#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource_tracker.h"
-#include "ppapi/shared_impl/host_resource.h"
-#include "ppapi/shared_impl/resource_object_base.h"
-
-namespace pp {
-namespace proxy {
-
-class PluginResource : public ::ppapi::ResourceObjectBase {
- public:
- PluginResource(const ppapi::HostResource& resource);
- virtual ~PluginResource();
-
- PP_Instance instance() const { return host_resource_.instance(); }
-
- // Returns the host resource ID for sending to the host process.
- const ppapi::HostResource& host_resource() const {
- return host_resource_;
- }
-
- PluginDispatcher* GetDispatcher();
-
- private:
- // The resource ID in the host that this object corresponds to. Inside the
- // plugin we'll remap the resource IDs so we can have many host processes
- // each independently generating resources (which may conflict) but the IDs
- // in the plugin will all be unique.
- ppapi::HostResource host_resource_;
-
- DISALLOW_COPY_AND_ASSIGN(PluginResource);
-};
-
-} // namespace proxy
-} // namespace pp
-
-#endif // PPAPI_PROXY_PLUGIN_RESOURCE_H_
diff --git a/ppapi/proxy/plugin_resource_tracker.cc b/ppapi/proxy/plugin_resource_tracker.cc
index a511fd9..ac4621e 100644
--- a/ppapi/proxy/plugin_resource_tracker.cc
+++ b/ppapi/proxy/plugin_resource_tracker.cc
@@ -8,12 +8,13 @@
#include "base/memory/singleton.h"
#include "ppapi/proxy/plugin_dispatcher.h"
#include "ppapi/proxy/ppapi_messages.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/serialized_var.h"
+#include "ppapi/shared_impl/resource.h"
#include "ppapi/shared_impl/tracker_base.h"
#include "ppapi/shared_impl/var.h"
using ppapi::HostResource;
+using ppapi::Resource;
namespace pp {
namespace proxy {
@@ -29,37 +30,8 @@ PluginResourceTracker* g_resource_tracker_override = NULL;
} // namespace
-PluginResourceTracker::ResourceInfo::ResourceInfo() : ref_count(0) {
-}
-
-PluginResourceTracker::ResourceInfo::ResourceInfo(int rc, PluginResource* r)
- : ref_count(rc),
- resource(r) {
-}
-
-PluginResourceTracker::ResourceInfo::ResourceInfo(const ResourceInfo& other)
- : ref_count(other.ref_count),
- resource(other.resource) {
- // Wire up the new shared resource tracker base to use our implementation.
- ::ppapi::TrackerBase::Init(&GetTrackerBase);
-}
-
-PluginResourceTracker::ResourceInfo::~ResourceInfo() {
-}
-
-PluginResourceTracker::ResourceInfo&
-PluginResourceTracker::ResourceInfo::operator=(
- const ResourceInfo& other) {
- ref_count = other.ref_count;
- resource = other.resource;
- return *this;
-}
-
-// Start counting resources at a high number to avoid collisions with vars (to
-// help debugging).
PluginResourceTracker::PluginResourceTracker()
- : var_tracker_test_override_(NULL),
- last_resource_id_(0x00100000) {
+ : var_tracker_test_override_(NULL) {
}
PluginResourceTracker::~PluginResourceTracker() {
@@ -83,39 +55,6 @@ PluginResourceTracker::GetTrackerBaseInstance() {
return GetInstance();
}
-PluginResource* PluginResourceTracker::GetResourceObject(
- PP_Resource pp_resource) {
- ResourceMap::iterator found = resource_map_.find(pp_resource);
- if (found == resource_map_.end())
- return NULL;
- return found->second.resource.get();
-}
-
-PP_Resource PluginResourceTracker::AddResource(PluginResource* object) {
- PP_Resource plugin_resource = ++last_resource_id_;
- DCHECK(resource_map_.find(plugin_resource) == resource_map_.end());
- resource_map_[plugin_resource] = ResourceInfo(1, object);
- if (!object->host_resource().is_null()) {
- // The host resource ID will be 0 for resources that only exist in the
- // plugin process. Don't add those to the list.
- host_resource_map_[object->host_resource()] = plugin_resource;
- }
- return plugin_resource;
-}
-
-void PluginResourceTracker::AddRefResource(PP_Resource resource) {
- ResourceMap::iterator found = resource_map_.find(resource);
- if (found == resource_map_.end()) {
- NOTREACHED();
- return;
- }
- found->second.ref_count++;
-}
-
-void PluginResourceTracker::ReleaseResource(PP_Resource resource) {
- ReleasePluginResourceRef(resource, true);
-}
-
PP_Resource PluginResourceTracker::PluginResourceForHostResource(
const HostResource& resource) const {
HostResourceMap::const_iterator found = host_resource_map_.find(resource);
@@ -124,14 +63,6 @@ PP_Resource PluginResourceTracker::PluginResourceForHostResource(
return found->second;
}
-::ppapi::ResourceObjectBase* PluginResourceTracker::GetResourceAPI(
- PP_Resource res) {
- ResourceMap::iterator found = resource_map_.find(res);
- if (found == resource_map_.end())
- return NULL;
- return found->second.resource.get();
-}
-
::ppapi::FunctionGroupBase* PluginResourceTracker::GetFunctionAPI(
PP_Instance inst,
pp::proxy::InterfaceID id) {
@@ -141,46 +72,41 @@ PP_Resource PluginResourceTracker::PluginResourceForHostResource(
return NULL;
}
-PP_Instance PluginResourceTracker::GetInstanceForResource(
- PP_Resource resource) {
- ResourceMap::iterator found = resource_map_.find(resource);
- if (found == resource_map_.end())
- return 0;
- return found->second.resource->instance();
-}
-
ppapi::VarTracker* PluginResourceTracker::GetVarTracker() {
return &var_tracker();
}
-void PluginResourceTracker::ReleasePluginResourceRef(
- const PP_Resource& resource,
- bool notify_browser_on_release) {
- ResourceMap::iterator found = resource_map_.find(resource);
- if (found == resource_map_.end())
- return;
- found->second.ref_count--;
- if (found->second.ref_count == 0) {
- // Keep a reference while removing in case the destructor ends up
- // re-entering. That way, when the destructor is called, it's out of the
- // maps.
- scoped_refptr<PluginResource> plugin_resource = found->second.resource;
+ppapi::ResourceTracker* PluginResourceTracker::GetResourceTracker() {
+ return this;
+}
+
+PP_Resource PluginResourceTracker::AddResource(Resource* object) {
+ PP_Resource ret = ResourceTracker::AddResource(object);
+
+ // Some resources are plugin-only, so they don't have a host resource.
+ if (object->host_resource().host_resource())
+ host_resource_map_.insert(std::make_pair(object->host_resource(), ret));
+ return ret;
+}
+
+void PluginResourceTracker::RemoveResource(Resource* object) {
+ ResourceTracker::RemoveResource(object);
+
+ if (!object->host_resource().is_null()) {
+ // The host_resource will be NULL for proxy-only resources, which we
+ // obviously don't need to tell the host about.
+ DCHECK(host_resource_map_.find(object->host_resource()) !=
+ host_resource_map_.end());
+ host_resource_map_.erase(object->host_resource());
+
PluginDispatcher* dispatcher =
- PluginDispatcher::GetForInstance(plugin_resource->instance());
- HostResource host_resource = plugin_resource->host_resource();
- if (!host_resource.is_null())
- host_resource_map_.erase(host_resource);
- resource_map_.erase(found);
- plugin_resource = NULL;
-
- // dispatcher can be NULL if the plugin held on to a resource after the
- // instance was destroyed. In that case the browser-side resource has
- // already been freed correctly on the browser side. The host_resource
- // will be NULL for proxy-only resources, which we obviously don't need to
- // tell the host about.
- if (notify_browser_on_release && dispatcher && !host_resource.is_null()) {
+ PluginDispatcher::GetForInstance(object->pp_instance());
+ if (dispatcher) {
+ // The dispatcher can be NULL if the plugin held on to a resource after
+ // the instance was destroyed. In that case the browser-side resource has
+ // already been freed correctly on the browser side.
dispatcher->Send(new PpapiHostMsg_PPBCore_ReleaseResource(
- INTERFACE_ID_PPB_CORE, host_resource));
+ INTERFACE_ID_PPB_CORE, object->host_resource()));
}
}
}
diff --git a/ppapi/proxy/plugin_resource_tracker.h b/ppapi/proxy/plugin_resource_tracker.h
index f788c6c..ccc6d70 100644
--- a/ppapi/proxy/plugin_resource_tracker.h
+++ b/ppapi/proxy/plugin_resource_tracker.h
@@ -16,6 +16,7 @@
#include "ppapi/c/pp_var.h"
#include "ppapi/proxy/plugin_var_tracker.h"
#include "ppapi/shared_impl/host_resource.h"
+#include "ppapi/shared_impl/resource_tracker.h"
#include "ppapi/shared_impl/tracker_base.h"
template<typename T> struct DefaultSingletonTraits;
@@ -28,9 +29,9 @@ namespace pp {
namespace proxy {
class PluginDispatcher;
-class PluginResource;
-class PluginResourceTracker : public ::ppapi::TrackerBase {
+class PluginResourceTracker : public ppapi::TrackerBase,
+ public ppapi::ResourceTracker {
public:
// Called by tests that want to specify a specific ResourceTracker. This
// allows them to use a unique one each time and avoids singletons sticking
@@ -41,21 +42,6 @@ class PluginResourceTracker : public ::ppapi::TrackerBase {
static PluginResourceTracker* GetInstance();
static ::ppapi::TrackerBase* GetTrackerBaseInstance();
- // Returns the object associated with the given resource ID, or NULL if
- // there isn't one.
- PluginResource* GetResourceObject(PP_Resource pp_resource);
-
- // Adds the given resource object to the tracked list, and returns the
- // plugin-local PP_Resource ID that identifies the resource. Note that this
- // PP_Resource is not valid to send to the host, use
- // PluginResource.host_resource() to get that.
- //
- // The resource tracker will take a reference to the given object.
- PP_Resource AddResource(PluginResource* object);
-
- void AddRefResource(PP_Resource resource);
- void ReleaseResource(PP_Resource resource);
-
// Given a host resource, maps it to an existing plugin resource ID if it
// exists, or returns 0 on failure.
PP_Resource PluginResourceForHostResource(
@@ -71,13 +57,16 @@ class PluginResourceTracker : public ::ppapi::TrackerBase {
}
// TrackerBase.
- virtual ppapi::ResourceObjectBase* GetResourceAPI(
- PP_Resource res) OVERRIDE;
virtual ppapi::FunctionGroupBase* GetFunctionAPI(
PP_Instance inst,
pp::proxy::InterfaceID id) OVERRIDE;
- virtual PP_Instance GetInstanceForResource(PP_Resource resource) OVERRIDE;
virtual ppapi::VarTracker* GetVarTracker() OVERRIDE;
+ virtual ppapi::ResourceTracker* GetResourceTracker() OVERRIDE;
+
+ protected:
+ // ResourceTracker overrides.
+ virtual PP_Resource AddResource(ppapi::Resource* object) OVERRIDE;
+ virtual void RemoveResource(ppapi::Resource* object) OVERRIDE;
private:
friend struct DefaultSingletonTraits<PluginResourceTracker>;
@@ -87,21 +76,6 @@ class PluginResourceTracker : public ::ppapi::TrackerBase {
PluginResourceTracker();
virtual ~PluginResourceTracker();
- struct ResourceInfo {
- ResourceInfo();
- ResourceInfo(int ref_count, PluginResource* r);
- ResourceInfo(const ResourceInfo& other);
- ~ResourceInfo();
-
- ResourceInfo& operator=(const ResourceInfo& other);
-
- int ref_count;
- scoped_refptr<PluginResource> resource; // May be NULL.
- };
-
- void ReleasePluginResourceRef(const PP_Resource& var,
- bool notify_browser_on_release);
-
// Use the var_tracker_test_override_ instead if it's non-NULL.
//
// TODO(brettw) this should be somehow separated out from here. I'm thinking
@@ -113,18 +87,10 @@ class PluginResourceTracker : public ::ppapi::TrackerBase {
// test implementation is provided.
PluginVarTracker* var_tracker_test_override_;
- // Map of plugin resource IDs to the information tracking that resource.
- typedef std::map<PP_Resource, ResourceInfo> ResourceMap;
- ResourceMap resource_map_;
-
// Map of host instance/resource pairs to a plugin resource ID.
typedef std::map<ppapi::HostResource, PP_Resource> HostResourceMap;
HostResourceMap host_resource_map_;
- // Tracks the last ID we've sent out as a plugin resource so we don't send
- // duplicates.
- PP_Resource last_resource_id_;
-
DISALLOW_COPY_AND_ASSIGN(PluginResourceTracker);
};
diff --git a/ppapi/proxy/plugin_resource_tracker_unittest.cc b/ppapi/proxy/plugin_resource_tracker_unittest.cc
index 8295302..cb26638 100644
--- a/ppapi/proxy/plugin_resource_tracker_unittest.cc
+++ b/ppapi/proxy/plugin_resource_tracker_unittest.cc
@@ -39,11 +39,6 @@ class PluginResourceTrackerTest : public PluginProxyTest {
public:
PluginResourceTrackerTest() {}
~PluginResourceTrackerTest() {}
-
- PluginResourceTracker& tracker() { return tracker_; }
-
- private:
- PluginResourceTracker tracker_;
};
TEST_F(PluginResourceTrackerTest, PluginResourceForHostResource) {
@@ -53,22 +48,22 @@ TEST_F(PluginResourceTrackerTest, PluginResourceForHostResource) {
serialized.SetHostResource(pp_instance(), host_resource);
// When we haven't added an object, the return value should be 0.
- EXPECT_EQ(0, tracker().PluginResourceForHostResource(serialized));
+ EXPECT_EQ(0, resource_tracker().PluginResourceForHostResource(serialized));
EXPECT_EQ(0, TrackedMockResource::tracked_alive_count);
TrackedMockResource* object = new TrackedMockResource(serialized);
EXPECT_EQ(1, TrackedMockResource::tracked_alive_count);
- PP_Resource plugin_resource = tracker().AddResource(object);
+ PP_Resource plugin_resource = object->GetReference();
// Now that the object has been added, the return value should be the plugin
// resource ID we already got.
EXPECT_EQ(plugin_resource,
- tracker().PluginResourceForHostResource(serialized));
+ resource_tracker().PluginResourceForHostResource(serialized));
// Releasing the resource should have freed it.
- tracker().ReleaseResource(plugin_resource);
+ resource_tracker().ReleaseResource(plugin_resource);
EXPECT_EQ(0, TrackedMockResource::tracked_alive_count);
- EXPECT_EQ(0, tracker().PluginResourceForHostResource(serialized));
+ EXPECT_EQ(0, resource_tracker().PluginResourceForHostResource(serialized));
}
} // namespace proxy
diff --git a/ppapi/proxy/ppapi_param_traits.cc b/ppapi/proxy/ppapi_param_traits.cc
index bca08ee..d8f6b70 100644
--- a/ppapi/proxy/ppapi_param_traits.cc
+++ b/ppapi/proxy/ppapi_param_traits.cc
@@ -375,15 +375,15 @@ void ParamTraits<pp::proxy::SerializedFontDescription>::Log(
// static
void ParamTraits<ppapi::HostResource>::Write(Message* m,
- const param_type& p) {
+ const param_type& p) {
ParamTraits<PP_Instance>::Write(m, p.instance());
ParamTraits<PP_Resource>::Write(m, p.host_resource());
}
// static
bool ParamTraits<ppapi::HostResource>::Read(const Message* m,
- void** iter,
- param_type* r) {
+ void** iter,
+ param_type* r) {
PP_Instance instance;
PP_Resource resource;
if (!ParamTraits<PP_Instance>::Read(m, iter, &instance) ||
diff --git a/ppapi/proxy/ppapi_proxy_test.cc b/ppapi/proxy/ppapi_proxy_test.cc
index eb7b440..8049330 100644
--- a/ppapi/proxy/ppapi_proxy_test.cc
+++ b/ppapi/proxy/ppapi_proxy_test.cc
@@ -147,6 +147,7 @@ Dispatcher* PluginProxyTestHarness::GetDispatcher() {
void PluginProxyTestHarness::SetUpHarness() {
// These must be first since the dispatcher set-up uses them.
+ resource_tracker_.DidCreateInstance(pp_instance());
PluginResourceTracker::SetInstanceForTest(&resource_tracker_);
resource_tracker_.set_var_tracker_test_override(&var_tracker_);
@@ -163,6 +164,7 @@ void PluginProxyTestHarness::SetUpHarnessWithChannel(
base::WaitableEvent* shutdown_event,
bool is_client) {
// These must be first since the dispatcher set-up uses them.
+ resource_tracker_.DidCreateInstance(pp_instance());
PluginResourceTracker::SetInstanceForTest(&resource_tracker_);
resource_tracker_.set_var_tracker_test_override(&var_tracker_);
plugin_delegate_mock_.Init(ipc_message_loop, shutdown_event);
@@ -180,6 +182,7 @@ void PluginProxyTestHarness::TearDownHarness() {
plugin_dispatcher_->DidDestroyInstance(pp_instance());
plugin_dispatcher_.reset();
+ resource_tracker_.DidDeleteInstance(pp_instance());
PluginResourceTracker::SetInstanceForTest(NULL);
}
diff --git a/ppapi/proxy/ppb_audio_config_proxy.cc b/ppapi/proxy/ppb_audio_config_proxy.cc
index f2eb9d8..eeb4907 100644
--- a/ppapi/proxy/ppb_audio_config_proxy.cc
+++ b/ppapi/proxy/ppb_audio_config_proxy.cc
@@ -6,33 +6,31 @@
#include "ppapi/c/ppb_audio_config.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/shared_impl/audio_config_impl.h"
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
namespace pp {
namespace proxy {
// The implementation is actually in AudioConfigImpl.
-class AudioConfig : public PluginResource,
- public ppapi::AudioConfigImpl {
+class AudioConfig : public Resource, public ppapi::AudioConfigImpl {
public:
// Note that you must call Init (on AudioConfigImpl) before using this class.
AudioConfig(const HostResource& resource);
virtual ~AudioConfig();
- // ResourceObjectBase overrides.
+ // Resource overrides.
virtual ::ppapi::thunk::PPB_AudioConfig_API* AsPPB_AudioConfig_API() OVERRIDE;
private:
DISALLOW_COPY_AND_ASSIGN(AudioConfig);
};
-AudioConfig::AudioConfig(const HostResource& resource)
- : PluginResource(resource) {
+AudioConfig::AudioConfig(const HostResource& resource) : Resource(resource) {
}
AudioConfig::~AudioConfig() {
@@ -80,7 +78,7 @@ PP_Resource PPB_AudioConfig_Proxy::CreateProxyResource(
HostResource::MakeInstanceOnly(instance)));
if (!object->Init(sample_rate, sample_frame_count))
return 0;
- return PluginResourceTracker::GetInstance()->AddResource(object);
+ return object->GetReference();
}
bool PPB_AudioConfig_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_audio_proxy.cc b/ppapi/proxy/ppb_audio_proxy.cc
index c6562ec..d9f5d60 100644
--- a/ppapi/proxy/ppb_audio_proxy.cc
+++ b/ppapi/proxy/ppb_audio_proxy.cc
@@ -14,15 +14,16 @@
#include "ppapi/proxy/enter_proxy.h"
#include "ppapi/proxy/interface_id.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/shared_impl/audio_impl.h"
+#include "ppapi/shared_impl/resource.h"
#include "ppapi/thunk/ppb_audio_config_api.h"
#include "ppapi/thunk/enter.h"
#include "ppapi/thunk/resource_creation_api.h"
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::EnterResourceNoLock;
using ppapi::thunk::PPB_Audio_API;
using ppapi::thunk::PPB_AudioConfig_API;
@@ -30,7 +31,7 @@ using ppapi::thunk::PPB_AudioConfig_API;
namespace pp {
namespace proxy {
-class Audio : public PluginResource, public ppapi::AudioImpl {
+class Audio : public Resource, public ppapi::AudioImpl {
public:
Audio(const HostResource& audio_id,
PP_Resource config_id,
@@ -38,7 +39,7 @@ class Audio : public PluginResource, public ppapi::AudioImpl {
void* user_data);
virtual ~Audio();
- // ResourceObjectBase overrides.
+ // Resource overrides.
virtual PPB_Audio_API* AsPPB_Audio_API();
// PPB_Audio_API implementation.
@@ -62,7 +63,7 @@ Audio::Audio(const HostResource& audio_id,
PP_Resource config_id,
PPB_Audio_Callback callback,
void* user_data)
- : PluginResource(audio_id),
+ : Resource(audio_id),
config_(config_id) {
SetCallback(callback, user_data);
PluginResourceTracker::GetInstance()->AddRefResource(config_);
@@ -86,7 +87,7 @@ PP_Bool Audio::StartPlayback() {
if (playing())
return PP_TRUE;
SetStartPlaybackState();
- PluginDispatcher::GetForInstance(instance())->Send(
+ PluginDispatcher::GetForResource(this)->Send(
new PpapiHostMsg_PPBAudio_StartOrStop(
INTERFACE_ID_PPB_AUDIO, host_resource(), true));
return PP_TRUE;
@@ -95,7 +96,7 @@ PP_Bool Audio::StartPlayback() {
PP_Bool Audio::StopPlayback() {
if (!playing())
return PP_TRUE;
- PluginDispatcher::GetForInstance(instance())->Send(
+ PluginDispatcher::GetForResource(this)->Send(
new PpapiHostMsg_PPBAudio_StartOrStop(
INTERFACE_ID_PPB_AUDIO, host_resource(), false));
SetStopPlaybackState();
@@ -179,8 +180,8 @@ PP_Resource PPB_Audio_Proxy::CreateProxyResource(
if (result.is_null())
return 0;
- return PluginResourceTracker::GetInstance()->AddResource(
- new Audio(result, config_id, audio_callback, user_data));
+ return (new Audio(result, config_id,
+ audio_callback, user_data))->GetReference();
}
bool PPB_Audio_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_broker_proxy.cc b/ppapi/proxy/ppb_broker_proxy.cc
index ac99699..b0ebcb5 100644
--- a/ppapi/proxy/ppb_broker_proxy.cc
+++ b/ppapi/proxy/ppb_broker_proxy.cc
@@ -8,13 +8,13 @@
#include "ppapi/c/trusted/ppb_broker_trusted.h"
#include "ppapi/proxy/enter_proxy.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/thunk/ppb_broker_api.h"
#include "ppapi/thunk/enter.h"
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::PPB_Broker_API;
namespace pp {
@@ -49,12 +49,12 @@ InterfaceProxy* CreateBrokerProxy(Dispatcher* dispatcher,
} // namespace
-class Broker : public PPB_Broker_API, public PluginResource {
+class Broker : public PPB_Broker_API, public Resource {
public:
explicit Broker(const HostResource& resource);
virtual ~Broker();
- // ResourceObjectBase overries.
+ // Resource overries.
virtual PPB_Broker_API* AsPPB_Broker_API() OVERRIDE;
// PPB_Broker_API implementation.
@@ -78,8 +78,7 @@ class Broker : public PPB_Broker_API, public PluginResource {
DISALLOW_COPY_AND_ASSIGN(Broker);
};
-Broker::Broker(const HostResource& resource)
- : PluginResource(resource),
+Broker::Broker(const HostResource& resource) : Resource(resource),
called_connect_(false),
current_connect_callback_(PP_MakeCompletionCallback(NULL, NULL)),
socket_handle_(base::kInvalidPlatformFileValue) {
@@ -116,8 +115,9 @@ int32_t Broker::Connect(PP_CompletionCallback connect_callback) {
current_connect_callback_ = connect_callback;
called_connect_ = true;
- bool success = GetDispatcher()->Send(new PpapiHostMsg_PPBBroker_Connect(
- INTERFACE_ID_PPB_BROKER, host_resource()));
+ bool success = PluginDispatcher::GetForResource(this)->Send(
+ new PpapiHostMsg_PPBBroker_Connect(
+ INTERFACE_ID_PPB_BROKER, host_resource()));
return success ? PP_OK_COMPLETIONPENDING : PP_ERROR_FAILED;
}
@@ -181,8 +181,7 @@ PP_Resource PPB_Broker_Proxy::CreateProxyResource(PP_Instance instance) {
INTERFACE_ID_PPB_BROKER, instance, &result));
if (result.is_null())
return 0;
-
- return PluginResourceTracker::GetInstance()->AddResource(new Broker(result));
+ return (new Broker(result))->GetReference();
}
bool PPB_Broker_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_buffer_proxy.cc b/ppapi/proxy/ppb_buffer_proxy.cc
index 558b531..9598a4f 100644
--- a/ppapi/proxy/ppb_buffer_proxy.cc
+++ b/ppapi/proxy/ppb_buffer_proxy.cc
@@ -20,6 +20,7 @@
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
namespace pp {
namespace proxy {
@@ -36,7 +37,7 @@ InterfaceProxy* CreateBufferProxy(Dispatcher* dispatcher,
Buffer::Buffer(const HostResource& resource,
const base::SharedMemoryHandle& shm_handle,
uint32_t size)
- : PluginResource(resource),
+ : Resource(resource),
shm_(shm_handle, false),
size_(size),
mapped_data_(NULL),
@@ -114,8 +115,7 @@ PP_Resource PPB_Buffer_Proxy::AddProxyResource(
const HostResource& resource,
base::SharedMemoryHandle shm_handle,
uint32_t size) {
- return PluginResourceTracker::GetInstance()->AddResource(
- new Buffer(resource, shm_handle, size));
+ return (new Buffer(resource, shm_handle, size))->GetReference();
}
bool PPB_Buffer_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_buffer_proxy.h b/ppapi/proxy/ppb_buffer_proxy.h
index 02e47f8..9d6cfbe 100644
--- a/ppapi/proxy/ppb_buffer_proxy.h
+++ b/ppapi/proxy/ppb_buffer_proxy.h
@@ -8,7 +8,7 @@
#include "base/shared_memory.h"
#include "ppapi/c/pp_instance.h"
#include "ppapi/proxy/interface_proxy.h"
-#include "ppapi/proxy/plugin_resource.h"
+#include "ppapi/shared_impl/resource.h"
#include "ppapi/thunk/ppb_buffer_api.h"
struct PPB_Buffer_Dev;
@@ -21,14 +21,14 @@ namespace pp {
namespace proxy {
class Buffer : public ppapi::thunk::PPB_Buffer_API,
- public PluginResource {
+ public ppapi::Resource {
public:
Buffer(const ppapi::HostResource& resource,
const base::SharedMemoryHandle& shm_handle,
uint32_t size);
virtual ~Buffer();
- // ResourceObjectBase overrides.
+ // Resource overrides.
virtual ppapi::thunk::PPB_Buffer_API* AsPPB_Buffer_API() OVERRIDE;
// PPB_Buffer_API implementation.
diff --git a/ppapi/proxy/ppb_context_3d_proxy.cc b/ppapi/proxy/ppb_context_3d_proxy.cc
index b7e5066..a213635 100644
--- a/ppapi/proxy/ppb_context_3d_proxy.cc
+++ b/ppapi/proxy/ppb_context_3d_proxy.cc
@@ -13,7 +13,6 @@
#include "ppapi/c/dev/ppb_context_3d_trusted_dev.h"
#include "ppapi/proxy/enter_proxy.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/proxy/ppb_surface_3d_proxy.h"
#include "ppapi/thunk/enter.h"
@@ -21,6 +20,7 @@
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::EnterFunctionNoLock;
using ppapi::thunk::EnterResourceNoLock;
using ppapi::thunk::PPB_Context3D_API;
@@ -340,7 +340,7 @@ void PepperCommandBuffer::UpdateState(const gpu::CommandBuffer::State& state) {
// Context3D -------------------------------------------------------------------
Context3D::Context3D(const HostResource& resource)
- : PluginResource(resource),
+ : Resource(resource),
draw_(NULL),
read_(NULL),
transfer_buffer_id_(0) {
@@ -356,7 +356,7 @@ PPB_Context3D_API* Context3D::AsPPB_Context3D_API() {
}
bool Context3D::CreateImplementation() {
- PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance());
+ PluginDispatcher* dispatcher = PluginDispatcher::GetForResource(this);
if (!dispatcher)
return false;
@@ -418,9 +418,10 @@ int32_t Context3D::BindSurfaces(PP_Resource pp_draw, PP_Resource pp_read) {
read_surface ? read_surface->host_resource() : HostResource();
int32_t result;
- GetDispatcher()->Send(new PpapiHostMsg_PPBContext3D_BindSurfaces(
- INTERFACE_ID_PPB_CONTEXT_3D,
- host_resource(), host_draw, host_read, &result));
+ PluginDispatcher::GetForResource(this)->Send(
+ new PpapiHostMsg_PPBContext3D_BindSurfaces(
+ INTERFACE_ID_PPB_CONTEXT_3D,
+ host_resource(), host_draw, host_read, &result));
if (result != PP_OK)
return result;
@@ -432,7 +433,9 @@ int32_t Context3D::BindSurfaces(PP_Resource pp_draw, PP_Resource pp_read) {
// Resize the backing texture to the size of the instance when it is
// bound.
// TODO(alokp): This should be the responsibility of plugins.
- InstanceData* data = GetDispatcher()->GetInstanceData(instance());
+ InstanceData* data =
+ PluginDispatcher::GetForResource(this)->GetInstanceData(
+ pp_instance());
gles2_impl()->ResizeCHROMIUM(data->position.size.width,
data->position.size.height);
}
@@ -443,8 +446,8 @@ int32_t Context3D::BindSurfaces(PP_Resource pp_draw, PP_Resource pp_read) {
}
int32_t Context3D::GetBoundSurfaces(PP_Resource* draw, PP_Resource* read) {
- *draw = draw_ ? draw_->resource() : 0;
- *read = read_ ? read_->resource() : 0;
+ *draw = draw_ ? draw_->pp_resource() : 0;
+ *read = read_ ? read_->pp_resource() : 0;
return PP_OK;
}
@@ -583,7 +586,7 @@ PP_Resource PPB_Context3D_Proxy::Create(PP_Instance instance,
scoped_refptr<Context3D> context_3d(new Context3D(result));
if (!context_3d->CreateImplementation())
return 0;
- return PluginResourceTracker::GetInstance()->AddResource(context_3d);
+ return context_3d->GetReference();
}
bool PPB_Context3D_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_context_3d_proxy.h b/ppapi/proxy/ppb_context_3d_proxy.h
index 017c2a1..cdbdd70 100644
--- a/ppapi/proxy/ppb_context_3d_proxy.h
+++ b/ppapi/proxy/ppb_context_3d_proxy.h
@@ -7,13 +7,14 @@
#include <vector>
+#include "base/memory/scoped_ptr.h"
#include "base/shared_memory.h"
#include "gpu/command_buffer/common/command_buffer.h"
#include "ppapi/c/dev/pp_graphics_3d_dev.h"
#include "ppapi/c/pp_instance.h"
#include "ppapi/proxy/interface_proxy.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/proxy_non_thread_safe_ref_count.h"
+#include "ppapi/shared_impl/resource.h"
#include "ppapi/thunk/ppb_context_3d_api.h"
struct PPB_Context3D_Dev;
@@ -34,13 +35,13 @@ namespace proxy {
class Surface3D;
-class Context3D : public PluginResource,
+class Context3D : public ppapi::Resource,
public ppapi::thunk::PPB_Context3D_API {
public:
explicit Context3D(const ppapi::HostResource& resource);
virtual ~Context3D();
- // ResourceObjectBase overrides.
+ // Resource overrides.
virtual ::ppapi::thunk::PPB_Context3D_API* AsPPB_Context3D_API() OVERRIDE;
gpu::gles2::GLES2Implementation* gles2_impl() const {
diff --git a/ppapi/proxy/ppb_cursor_control_proxy.cc b/ppapi/proxy/ppb_cursor_control_proxy.cc
index 19ea104..cef77f2 100644
--- a/ppapi/proxy/ppb_cursor_control_proxy.cc
+++ b/ppapi/proxy/ppb_cursor_control_proxy.cc
@@ -7,13 +7,13 @@
#include "ppapi/c/dev/pp_cursor_type_dev.h"
#include "ppapi/c/dev/ppb_cursor_control_dev.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/plugin_resource_tracker.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/thunk/enter.h"
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::EnterFunctionNoLock;
using ppapi::thunk::PPB_CursorControl_FunctionAPI;
@@ -61,9 +61,9 @@ PP_Bool PPB_CursorControl_Proxy::SetCursor(PP_Instance instance,
// It's legal for the image ID to be null if the type is not custom.
HostResource cursor_image_resource;
if (type == PP_CURSORTYPE_CUSTOM) {
- PluginResource* cursor_image = PluginResourceTracker::GetInstance()->
- GetResourceObject(custom_image_id);
- if (!cursor_image || cursor_image->instance() != instance)
+ Resource* cursor_image = PluginResourceTracker::GetInstance()->
+ GetResource(custom_image_id);
+ if (!cursor_image || cursor_image->pp_instance() != instance)
return PP_FALSE;
cursor_image_resource = cursor_image->host_resource();
} else {
diff --git a/ppapi/proxy/ppb_file_chooser_proxy.cc b/ppapi/proxy/ppb_file_chooser_proxy.cc
index 4999e18..ae0eac7 100644
--- a/ppapi/proxy/ppb_file_chooser_proxy.cc
+++ b/ppapi/proxy/ppb_file_chooser_proxy.cc
@@ -12,25 +12,25 @@
#include "ppapi/proxy/enter_proxy.h"
#include "ppapi/proxy/host_dispatcher.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/proxy/ppb_file_ref_proxy.h"
#include "ppapi/proxy/serialized_var.h"
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::PPB_FileChooser_API;
namespace pp {
namespace proxy {
-class FileChooser : public PluginResource,
+class FileChooser : public Resource,
public PPB_FileChooser_API {
public:
FileChooser(const HostResource& resource);
virtual ~FileChooser();
- // ResourceObjectBase overrides.
+ // Resource overrides.
virtual PPB_FileChooser_API* AsPPB_FileChooser_API() OVERRIDE;
// PPB_FileChooser_API implementation.
@@ -55,7 +55,7 @@ class FileChooser : public PluginResource,
};
FileChooser::FileChooser(const HostResource& resource)
- : PluginResource(resource),
+ : Resource(resource),
current_show_callback_(PP_MakeCompletionCallback(NULL, NULL)) {
}
@@ -87,8 +87,9 @@ int32_t FileChooser::Show(PP_CompletionCallback callback) {
return PP_ERROR_INPROGRESS; // Can't show more than once.
current_show_callback_ = callback;
- GetDispatcher()->Send(new PpapiHostMsg_PPBFileChooser_Show(
- INTERFACE_ID_PPB_FILE_CHOOSER, host_resource()));
+ PluginDispatcher::GetForResource(this)->Send(
+ new PpapiHostMsg_PPBFileChooser_Show(
+ INTERFACE_ID_PPB_FILE_CHOOSER, host_resource()));
return PP_OK_COMPLETIONPENDING;
}
@@ -164,8 +165,7 @@ PP_Resource PPB_FileChooser_Proxy::CreateProxyResource(
if (result.is_null())
return 0;
- return PluginResourceTracker::GetInstance()->AddResource(
- new FileChooser(result));
+ return (new FileChooser(result))->GetReference();
}
bool PPB_FileChooser_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_file_ref_proxy.cc b/ppapi/proxy/ppb_file_ref_proxy.cc
index a72519d..d831bfc 100644
--- a/ppapi/proxy/ppb_file_ref_proxy.cc
+++ b/ppapi/proxy/ppb_file_ref_proxy.cc
@@ -10,7 +10,6 @@
#include "ppapi/proxy/enter_proxy.h"
#include "ppapi/proxy/host_dispatcher.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/proxy/serialized_var.h"
#include "ppapi/thunk/ppb_file_ref_api.h"
@@ -18,6 +17,7 @@
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::EnterFunctionNoLock;
using ppapi::thunk::EnterResourceNoLock;
using ppapi::thunk::PPB_FileRef_API;
@@ -35,12 +35,12 @@ InterfaceProxy* CreateFileRefProxy(Dispatcher* dispatcher,
} // namespace
-class FileRef : public PluginResource, public PPB_FileRef_API {
+class FileRef : public Resource, public PPB_FileRef_API {
public:
explicit FileRef(const PPBFileRef_CreateInfo& info);
virtual ~FileRef();
- // ResourceObjectBase overrides.
+ // Resource overrides.
virtual PPB_FileRef_API* AsPPB_FileRef_API() OVERRIDE;
// PPB_FileRef_API implementation.
@@ -58,6 +58,10 @@ class FileRef : public PluginResource, public PPB_FileRef_API {
PP_CompletionCallback callback) OVERRIDE;
private:
+ PluginDispatcher* GetDispatcher() const {
+ return PluginDispatcher::GetForResource(this);
+ }
+
PP_FileSystemType file_system_type_;
PP_Var path_;
PP_Var name_;
@@ -66,8 +70,8 @@ class FileRef : public PluginResource, public PPB_FileRef_API {
};
FileRef::FileRef(const PPBFileRef_CreateInfo& info)
- : PluginResource(info.resource) {
- Dispatcher* dispatcher = PluginDispatcher::GetForInstance(instance());
+ : Resource(info.resource) {
+ Dispatcher* dispatcher = PluginDispatcher::GetForResource(this);
file_system_type_ = static_cast<PP_FileSystemType>(info.file_system_type);
@@ -134,10 +138,10 @@ int32_t FileRef::Delete(PP_CompletionCallback callback) {
int32_t FileRef::Rename(PP_Resource new_file_ref,
PP_CompletionCallback callback) {
- PluginResource* new_file_ref_object =
- PluginResourceTracker::GetInstance()->GetResourceObject(new_file_ref);
+ Resource* new_file_ref_object =
+ PluginResourceTracker::GetInstance()->GetResource(new_file_ref);
if (!new_file_ref_object ||
- new_file_ref_object->host_resource().instance() != instance())
+ new_file_ref_object->host_resource().instance() != pp_instance())
return PP_ERROR_BADRESOURCE;
GetDispatcher()->Send(new PpapiHostMsg_PPBFileRef_Rename(
@@ -169,15 +173,16 @@ const InterfaceProxy::Info* PPB_FileRef_Proxy::GetInfo() {
// static
PP_Resource PPB_FileRef_Proxy::CreateProxyResource(PP_Resource file_system,
const char* path) {
- PluginResource* file_system_object =
- PluginResourceTracker::GetInstance()->GetResourceObject(file_system);
+ Resource* file_system_object =
+ PluginResourceTracker::GetInstance()->GetResource(file_system);
if (!file_system_object)
return 0;
PPBFileRef_CreateInfo create_info;
- file_system_object->GetDispatcher()->Send(new PpapiHostMsg_PPBFileRef_Create(
- INTERFACE_ID_PPB_FILE_REF, file_system_object->host_resource(),
- path, &create_info));
+ PluginDispatcher::GetForResource(file_system_object)->Send(
+ new PpapiHostMsg_PPBFileRef_Create(
+ INTERFACE_ID_PPB_FILE_REF, file_system_object->host_resource(),
+ path, &create_info));
return PPB_FileRef_Proxy::DeserializeFileRef(create_info);
}
@@ -228,9 +233,7 @@ PP_Resource PPB_FileRef_Proxy::DeserializeFileRef(
const PPBFileRef_CreateInfo& serialized) {
if (serialized.resource.is_null())
return 0; // Resource invalid.
-
- return PluginResourceTracker::GetInstance()->AddResource(
- new FileRef(serialized));
+ return (new FileRef(serialized))->GetReference();
}
void PPB_FileRef_Proxy::OnMsgCreate(const HostResource& file_system,
diff --git a/ppapi/proxy/ppb_file_system_proxy.cc b/ppapi/proxy/ppb_file_system_proxy.cc
index 98a1a7f..b3035b9 100644
--- a/ppapi/proxy/ppb_file_system_proxy.cc
+++ b/ppapi/proxy/ppb_file_system_proxy.cc
@@ -11,7 +11,6 @@
#include "ppapi/proxy/enter_proxy.h"
#include "ppapi/proxy/host_dispatcher.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/proxy/serialized_var.h"
#include "ppapi/thunk/enter.h"
@@ -20,6 +19,7 @@
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::EnterFunctionNoLock;
using ppapi::thunk::PPB_FileSystem_API;
using ppapi::thunk::ResourceCreationAPI;
@@ -39,12 +39,12 @@ InterfaceProxy* CreateFileSystemProxy(Dispatcher* dispatcher,
// This object maintains most of the state of the ref in the plugin for fast
// querying. It's all set in the constructor from the "create info" sent from
// the host.
-class FileSystem : public PluginResource, public PPB_FileSystem_API {
+class FileSystem : public Resource, public PPB_FileSystem_API {
public:
FileSystem(const HostResource& host_resource, PP_FileSystemType type);
virtual ~FileSystem();
- // ResourceObjectBase override.
+ // Resource override.
virtual PPB_FileSystem_API* AsPPB_FileSystem_API() OVERRIDE;
// PPB_FileSystem_APi implementation.
@@ -65,7 +65,7 @@ class FileSystem : public PluginResource, public PPB_FileSystem_API {
FileSystem::FileSystem(const HostResource& host_resource,
PP_FileSystemType type)
- : PluginResource(host_resource),
+ : Resource(host_resource),
type_(type),
called_open_(false),
current_open_callback_(PP_MakeCompletionCallback(NULL, NULL)) {
@@ -98,8 +98,9 @@ int32_t FileSystem::Open(int64_t expected_size,
current_open_callback_ = callback;
called_open_ = true;
- GetDispatcher()->Send(new PpapiHostMsg_PPBFileSystem_Open(
- INTERFACE_ID_PPB_FILE_SYSTEM, host_resource(), expected_size));
+ PluginDispatcher::GetForResource(this)->Send(
+ new PpapiHostMsg_PPBFileSystem_Open(
+ INTERFACE_ID_PPB_FILE_SYSTEM, host_resource(), expected_size));
return PP_OK_COMPLETIONPENDING;
}
@@ -144,9 +145,7 @@ PP_Resource PPB_FileSystem_Proxy::CreateProxyResource(
INTERFACE_ID_PPB_FILE_SYSTEM, instance, type, &result));
if (result.is_null())
return 0;
-
- return PluginResourceTracker::GetInstance()->AddResource(
- new FileSystem(result, type));
+ return (new FileSystem(result, type))->GetReference();
}
bool PPB_FileSystem_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_flash_file_proxy.cc b/ppapi/proxy/ppb_flash_file_proxy.cc
index 73e8a2d8..9400728 100644
--- a/ppapi/proxy/ppb_flash_file_proxy.cc
+++ b/ppapi/proxy/ppb_flash_file_proxy.cc
@@ -20,10 +20,12 @@
#include "ppapi/c/pp_file_info.h"
#include "ppapi/c/private/ppb_flash_file.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
+#include "ppapi/proxy/plugin_resource_tracker.h"
#include "ppapi/proxy/ppapi_messages.h"
+#include "ppapi/shared_impl/resource.h"
using ppapi::HostResource;
+using ppapi::Resource;
namespace pp {
namespace proxy {
@@ -625,13 +627,12 @@ namespace {
int32_t OpenFileRefFile(PP_Resource file_ref_id,
int32_t mode,
PP_FileHandle* file) {
- PluginResource* file_ref =
- PluginResourceTracker::GetInstance()->GetResourceObject(file_ref_id);
+ Resource* file_ref =
+ PluginResourceTracker::GetInstance()->GetResource(file_ref_id);
if (!file_ref)
return PP_ERROR_BADRESOURCE;
- PluginDispatcher* dispatcher =
- PluginDispatcher::GetForInstance(file_ref->instance());
+ PluginDispatcher* dispatcher = PluginDispatcher::GetForResource(file_ref);
if (!dispatcher)
return PP_ERROR_BADARGUMENT;
@@ -646,13 +647,12 @@ int32_t OpenFileRefFile(PP_Resource file_ref_id,
int32_t QueryFileRefFile(PP_Resource file_ref_id,
PP_FileInfo* info) {
- PluginResource* file_ref =
- PluginResourceTracker::GetInstance()->GetResourceObject(file_ref_id);
+ Resource* file_ref =
+ PluginResourceTracker::GetInstance()->GetResource(file_ref_id);
if (!file_ref)
return PP_ERROR_BADRESOURCE;
- PluginDispatcher* dispatcher =
- PluginDispatcher::GetForInstance(file_ref->instance());
+ PluginDispatcher* dispatcher = PluginDispatcher::GetForResource(file_ref);
if (!dispatcher)
return PP_ERROR_BADARGUMENT;
diff --git a/ppapi/proxy/ppb_flash_menu_proxy.cc b/ppapi/proxy/ppb_flash_menu_proxy.cc
index c2b74a2..98ee3b6 100644
--- a/ppapi/proxy/ppb_flash_menu_proxy.cc
+++ b/ppapi/proxy/ppb_flash_menu_proxy.cc
@@ -14,6 +14,7 @@
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::EnterFunctionNoLock;
using ppapi::thunk::PPB_Flash_Menu_API;
using ppapi::thunk::ResourceCreationAPI;
@@ -21,12 +22,12 @@ using ppapi::thunk::ResourceCreationAPI;
namespace pp {
namespace proxy {
-class FlashMenu : public PPB_Flash_Menu_API, public PluginResource {
+class FlashMenu : public PPB_Flash_Menu_API, public Resource {
public:
explicit FlashMenu(const HostResource& resource);
virtual ~FlashMenu();
- // ResourceObjectBase overrides.
+ // Resource overrides.
virtual PPB_Flash_Menu_API* AsPPB_Flash_Menu_API() OVERRIDE;
// PPB_Flash_Menu_API implementation.
@@ -44,7 +45,7 @@ class FlashMenu : public PPB_Flash_Menu_API, public PluginResource {
};
FlashMenu::FlashMenu(const HostResource& resource)
- : PluginResource(resource),
+ : Resource(resource),
callback_(PP_BlockUntilComplete()),
selected_id_ptr_(NULL) {
}
@@ -65,8 +66,9 @@ int32_t FlashMenu::Show(const struct PP_Point* location,
selected_id_ptr_ = selected_id;
callback_ = callback;
- GetDispatcher()->Send(new PpapiHostMsg_PPBFlashMenu_Show(
- INTERFACE_ID_PPB_FLASH_MENU, host_resource(), *location));
+ PluginDispatcher::GetForResource(this)->Send(
+ new PpapiHostMsg_PPBFlashMenu_Show(
+ INTERFACE_ID_PPB_FLASH_MENU, host_resource(), *location));
return PP_OK_COMPLETIONPENDING;
}
@@ -122,9 +124,7 @@ PP_Resource PPB_Flash_Menu_Proxy::CreateProxyResource(
INTERFACE_ID_PPB_FLASH_MENU, instance_id, serialized_menu, &result));
if (result.is_null())
return 0;
-
- return PluginResourceTracker::GetInstance()->AddResource(
- new FlashMenu(result));
+ return (new FlashMenu(result))->GetReference();
}
bool PPB_Flash_Menu_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_flash_menu_proxy.h b/ppapi/proxy/ppb_flash_menu_proxy.h
index 979abee..adce7ec 100644
--- a/ppapi/proxy/ppb_flash_menu_proxy.h
+++ b/ppapi/proxy/ppb_flash_menu_proxy.h
@@ -6,13 +6,16 @@
#define PPAPI_PPB_FLASH_MENU_PROXY_H_
#include "ppapi/proxy/interface_proxy.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/proxy_non_thread_safe_ref_count.h"
struct PP_Flash_Menu;
struct PP_Point;
struct PPB_Flash_Menu;
+namespace ppapi {
+class HostResource;
+}
+
namespace pp {
namespace proxy {
diff --git a/ppapi/proxy/ppb_flash_net_connector_proxy.cc b/ppapi/proxy/ppb_flash_net_connector_proxy.cc
index 0d93428..c222720 100644
--- a/ppapi/proxy/ppb_flash_net_connector_proxy.cc
+++ b/ppapi/proxy/ppb_flash_net_connector_proxy.cc
@@ -10,7 +10,6 @@
#include "ppapi/c/private/ppb_flash_net_connector.h"
#include "ppapi/proxy/enter_proxy.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/proxy/serialized_var.h"
#include "ppapi/thunk/enter.h"
@@ -19,6 +18,7 @@
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::EnterFunctionNoLock;
using ppapi::thunk::PPB_Flash_NetConnector_API;
using ppapi::thunk::ResourceCreationAPI;
@@ -50,12 +50,12 @@ class AbortCallbackTask : public Task {
};
class FlashNetConnector : public PPB_Flash_NetConnector_API,
- public PluginResource {
+ public Resource {
public:
explicit FlashNetConnector(const HostResource& resource);
virtual ~FlashNetConnector();
- // ResourceObjectBase overrides.
+ // Resource overrides.
virtual PPB_Flash_NetConnector_API* AsPPB_Flash_NetConnector_API() OVERRIDE;
// PPB_Flash_NetConnector_API implementation.
@@ -92,7 +92,7 @@ class FlashNetConnector : public PPB_Flash_NetConnector_API,
};
FlashNetConnector::FlashNetConnector(const HostResource& resource)
- : PluginResource(resource),
+ : Resource(resource),
callback_(PP_BlockUntilComplete()),
local_addr_out_(NULL),
remote_addr_out_(NULL) {
@@ -163,7 +163,7 @@ int32_t FlashNetConnector::ConnectWithMessage(
return PP_ERROR_INPROGRESS; // Can only have one pending request.
// Send the request, it will call us back via ConnectACK.
- GetDispatcher()->Send(msg_deletor.release());
+ PluginDispatcher::GetForResource(this)->Send(msg_deletor.release());
callback_ = callback;
socket_out_ = socket_out;
@@ -230,9 +230,7 @@ PP_Resource PPB_Flash_NetConnector_Proxy::CreateProxyResource(
INTERFACE_ID_PPB_FLASH_NETCONNECTOR, instance, &result));
if (result.is_null())
return 0;
-
- return PluginResourceTracker::GetInstance()->AddResource(
- new FlashNetConnector(result));
+ return (new FlashNetConnector(result))->GetReference();
}
bool PPB_Flash_NetConnector_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_flash_proxy.cc b/ppapi/proxy/ppb_flash_proxy.cc
index 289a864..bbe7018 100644
--- a/ppapi/proxy/ppb_flash_proxy.cc
+++ b/ppapi/proxy/ppb_flash_proxy.cc
@@ -14,12 +14,14 @@
#include "ppapi/c/private/ppb_flash.h"
#include "ppapi/proxy/host_dispatcher.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
+#include "ppapi/proxy/plugin_resource_tracker.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/proxy/proxy_module.h"
#include "ppapi/proxy/serialized_var.h"
+#include "ppapi/shared_impl/resource.h"
using ppapi::HostResource;
+using ppapi::Resource;
namespace pp {
namespace proxy {
@@ -44,17 +46,17 @@ PP_Bool DrawGlyphs(PP_Instance instance,
uint32_t glyph_count,
const uint16_t glyph_indices[],
const PP_Point glyph_advances[]) {
- PluginResource* image_data = PluginResourceTracker::GetInstance()->
- GetResourceObject(pp_image_data);
+ Resource* image_data = PluginResourceTracker::GetInstance()->GetResource(
+ pp_image_data);
if (!image_data)
return PP_FALSE;
// The instance parameter isn't strictly necessary but we check that it
// matches anyway.
- if (image_data->instance() != instance)
+ if (image_data->pp_instance() != instance)
return PP_FALSE;
PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(
- image_data->instance());
+ image_data->pp_instance());
if (!dispatcher)
return PP_FALSE;
@@ -96,13 +98,13 @@ PP_Var GetProxyForURL(PP_Instance instance, const char* url) {
int32_t Navigate(PP_Resource request_id,
const char* target,
bool from_user_action) {
- PluginResource* request_object =
- PluginResourceTracker::GetInstance()->GetResourceObject(request_id);
+ Resource* request_object =
+ PluginResourceTracker::GetInstance()->GetResource(request_id);
if (!request_object)
return PP_ERROR_BADRESOURCE;
PluginDispatcher* dispatcher =
- PluginDispatcher::GetForInstance(request_object->instance());
+ PluginDispatcher::GetForInstance(request_object->pp_instance());
if (!dispatcher)
return PP_ERROR_FAILED;
diff --git a/ppapi/proxy/ppb_flash_tcp_socket_proxy.cc b/ppapi/proxy/ppb_flash_tcp_socket_proxy.cc
index 1be870c..52dca5d 100644
--- a/ppapi/proxy/ppb_flash_tcp_socket_proxy.cc
+++ b/ppapi/proxy/ppb_flash_tcp_socket_proxy.cc
@@ -14,13 +14,14 @@
#include "base/task.h"
#include "ppapi/c/pp_errors.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/plugin_resource_tracker.h"
#include "ppapi/proxy/ppapi_messages.h"
+#include "ppapi/shared_impl/resource.h"
#include "ppapi/thunk/ppb_flash_tcp_socket_api.h"
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::PPB_Flash_TCPSocket_API;
namespace pp {
@@ -58,12 +59,12 @@ InterfaceProxy* CreateFlashTCPSocketProxy(Dispatcher* dispatcher,
} // namespace
class FlashTCPSocket : public PPB_Flash_TCPSocket_API,
- public PluginResource {
+ public Resource {
public:
FlashTCPSocket(const HostResource& resource, uint32 socket_id);
virtual ~FlashTCPSocket();
- // ResourceObjectBase overrides.
+ // Resource overrides.
virtual PPB_Flash_TCPSocket_API* AsPPB_Flash_TCPSocket_API() OVERRIDE;
// PPB_Flash_TCPSocket_API implementation.
@@ -110,6 +111,10 @@ class FlashTCPSocket : public PPB_Flash_TCPSocket_API,
bool IsConnected() const;
+ PluginDispatcher* GetDispatcher() const {
+ return PluginDispatcher::GetForResource(this);
+ }
+
// Backend for both Connect() and ConnectWithNetAddress(). To keep things
// generic, the message is passed in (on error, it's deleted).
int32_t ConnectWithMessage(IPC::Message* msg,
@@ -135,7 +140,7 @@ class FlashTCPSocket : public PPB_Flash_TCPSocket_API,
};
FlashTCPSocket::FlashTCPSocket(const HostResource& resource, uint32 socket_id)
- : PluginResource(resource),
+ : Resource(resource),
socket_id_(socket_id),
connection_state_(BEFORE_CONNECT),
connect_callback_(PP_BlockUntilComplete()),
@@ -420,9 +425,8 @@ PP_Resource PPB_Flash_TCPSocket_Proxy::CreateProxyResource(
&socket_id));
if (socket_id == 0)
return 0;
-
- return PluginResourceTracker::GetInstance()->AddResource(
- new FlashTCPSocket(HostResource::MakeInstanceOnly(instance), socket_id));
+ return (new FlashTCPSocket(HostResource::MakeInstanceOnly(instance),
+ socket_id))->GetReference();
}
bool PPB_Flash_TCPSocket_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_font_proxy.cc b/ppapi/proxy/ppb_font_proxy.cc
index 392481b..2760c0b 100644
--- a/ppapi/proxy/ppb_font_proxy.cc
+++ b/ppapi/proxy/ppb_font_proxy.cc
@@ -12,13 +12,14 @@
#include "ppapi/proxy/ppb_image_data_proxy.h"
#include "ppapi/proxy/serialized_var.h"
#include "ppapi/shared_impl/ppapi_preferences.h"
-#include "ppapi/shared_impl/resource_object_base.h"
+#include "ppapi/shared_impl/resource.h"
#include "ppapi/shared_impl/var.h"
#include "ppapi/thunk/enter.h"
#include "ppapi/thunk/ppb_image_data_api.h"
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::StringVar;
using ppapi::thunk::EnterResourceNoLock;
using ppapi::thunk::PPB_ImageData_API;
@@ -95,19 +96,20 @@ bool PPB_Font_Proxy::OnMessageReceived(const IPC::Message& msg) {
Font::Font(const HostResource& resource,
const PP_FontDescription_Dev& desc)
- : PluginResource(resource),
+ : Resource(resource),
webkit_event_(false, false) {
TRACE_EVENT0("ppapi proxy", "Font::Font");
scoped_refptr<StringVar> face(StringVar::FromPPVar(desc.face));
- WebKitForwarding* forwarding = GetDispatcher()->GetWebKitForwarding();
+ PluginDispatcher* dispatcher = PluginDispatcher::GetForResource(this);
+ WebKitForwarding* forwarding = dispatcher->GetWebKitForwarding();
RunOnWebKitThread(true,
base::Bind(&WebKitForwarding::CreateFontForwarding,
base::Unretained(forwarding),
&webkit_event_, desc,
face.get() ? face->value() : std::string(),
- GetDispatcher()->preferences(),
+ dispatcher->preferences(),
&font_forwarding_));
}
@@ -221,7 +223,7 @@ int32_t Font::PixelOffsetForCharacter(const PP_TextRun_Dev* text,
}
void Font::RunOnWebKitThread(bool blocking, const base::Closure& task) {
- GetDispatcher()->PostToWebKitThread(FROM_HERE, task);
+ PluginDispatcher::GetForResource(this)->PostToWebKitThread(FROM_HERE, task);
if (blocking)
webkit_event_.Wait();
}
diff --git a/ppapi/proxy/ppb_font_proxy.h b/ppapi/proxy/ppb_font_proxy.h
index 8058fdf..8ea0e51 100644
--- a/ppapi/proxy/ppb_font_proxy.h
+++ b/ppapi/proxy/ppb_font_proxy.h
@@ -5,11 +5,12 @@
#ifndef PPAPI_PROXY_PPB_FONT_PROXY_H_
#define PPAPI_PROXY_PPB_FONT_PROXY_H_
-#include "base/basictypes.h"
+#include "base/callback.h"
#include "base/synchronization/waitable_event.h"
#include "ppapi/proxy/interface_proxy.h"
-#include "ppapi/proxy/plugin_resource.h"
+#include "ppapi/shared_impl/function_group_base.h"
#include "ppapi/shared_impl/host_resource.h"
+#include "ppapi/shared_impl/resource.h"
#include "ppapi/shared_impl/webkit_forwarding.h"
#include "ppapi/thunk/ppb_font_api.h"
@@ -42,7 +43,7 @@ class PPB_Font_Proxy : public ppapi::FunctionGroupBase,
DISALLOW_COPY_AND_ASSIGN(PPB_Font_Proxy);
};
-class Font : public PluginResource,
+class Font : public ppapi::Resource,
public ppapi::thunk::PPB_Font_API {
public:
// Note that there isn't a "real" resource in the renderer backing a font,
@@ -53,7 +54,7 @@ class Font : public PluginResource,
Font(const ppapi::HostResource& resource, const PP_FontDescription_Dev& desc);
virtual ~Font();
- // ResourceObjectBase.
+ // Resource.
virtual ppapi::thunk::PPB_Font_API* AsPPB_Font_API() OVERRIDE;
// PPB_Font_API implementation.
diff --git a/ppapi/proxy/ppb_graphics_2d_proxy.cc b/ppapi/proxy/ppb_graphics_2d_proxy.cc
index eaa1032..f752949 100644
--- a/ppapi/proxy/ppb_graphics_2d_proxy.cc
+++ b/ppapi/proxy/ppb_graphics_2d_proxy.cc
@@ -14,13 +14,13 @@
#include "ppapi/c/ppb_graphics_2d.h"
#include "ppapi/proxy/enter_proxy.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/thunk/enter.h"
#include "ppapi/thunk/ppb_graphics_2d_api.h"
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::PPB_Graphics2D_API;
namespace pp {
@@ -35,15 +35,15 @@ InterfaceProxy* CreateGraphics2DProxy(Dispatcher* dispatcher,
} // namespace
-class Graphics2D : public PluginResource,
- public ::ppapi::thunk::PPB_Graphics2D_API {
+class Graphics2D : public ppapi::Resource,
+ public ppapi::thunk::PPB_Graphics2D_API {
public:
Graphics2D(const HostResource& host_resource,
const PP_Size& size,
PP_Bool is_always_opaque);
virtual ~Graphics2D();
- // ResourceObjectBase.
+ // Resource.
virtual PPB_Graphics2D_API* AsPPB_Graphics2D_API();
// PPB_Graphics_2D_API.
@@ -60,6 +60,10 @@ class Graphics2D : public PluginResource,
void FlushACK(int32_t result_code);
private:
+ PluginDispatcher* GetDispatcher() const {
+ return PluginDispatcher::GetForResource(this);
+ }
+
PP_Size size_;
PP_Bool is_always_opaque_;
@@ -73,7 +77,7 @@ class Graphics2D : public PluginResource,
Graphics2D::Graphics2D(const HostResource& host_resource,
const PP_Size& size,
PP_Bool is_always_opaque)
- : PluginResource(host_resource),
+ : Resource(host_resource),
size_(size),
is_always_opaque_(is_always_opaque),
current_flush_callback_(PP_BlockUntilComplete()) {
@@ -95,10 +99,10 @@ PP_Bool Graphics2D::Describe(PP_Size* size, PP_Bool* is_always_opaque) {
void Graphics2D::PaintImageData(PP_Resource image_data,
const PP_Point* top_left,
const PP_Rect* src_rect) {
- PluginResource* image_object = PluginResourceTracker::GetInstance()->
- GetResourceObject(image_data);
- //if (!image_object || instance() != image_object->instance())
- // return;
+ Resource* image_object = PluginResourceTracker::GetInstance()->
+ GetResource(image_data);
+ if (!image_object || pp_instance() != image_object->pp_instance())
+ return;
PP_Rect dummy;
memset(&dummy, 0, sizeof(PP_Rect));
@@ -118,9 +122,9 @@ void Graphics2D::Scroll(const PP_Rect* clip_rect,
}
void Graphics2D::ReplaceContents(PP_Resource image_data) {
- PluginResource* image_object = PluginResourceTracker::GetInstance()->
- GetResourceObject(image_data);
- if (!image_object || instance() != image_object->instance())
+ Resource* image_object = PluginResourceTracker::GetInstance()->
+ GetResource(image_data);
+ if (!image_object || pp_instance() != image_object->pp_instance())
return;
GetDispatcher()->Send(new PpapiHostMsg_PPBGraphics2D_ReplaceContents(
@@ -183,8 +187,7 @@ PP_Resource PPB_Graphics2D_Proxy::CreateProxyResource(
&result));
if (result.is_null())
return 0;
- return PluginResourceTracker::GetInstance()->AddResource(
- new Graphics2D(result, size, is_always_opaque));
+ return (new Graphics2D(result, size, is_always_opaque))->GetReference();
}
bool PPB_Graphics2D_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_graphics_2d_proxy.h b/ppapi/proxy/ppb_graphics_2d_proxy.h
index 77f0dd6..7834acc 100644
--- a/ppapi/proxy/ppb_graphics_2d_proxy.h
+++ b/ppapi/proxy/ppb_graphics_2d_proxy.h
@@ -14,7 +14,6 @@
#include "ppapi/c/pp_var.h"
#include "ppapi/cpp/completion_callback.h"
#include "ppapi/proxy/interface_proxy.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/proxy_non_thread_safe_ref_count.h"
#include "ppapi/shared_impl/host_resource.h"
diff --git a/ppapi/proxy/ppb_graphics_3d_proxy.cc b/ppapi/proxy/ppb_graphics_3d_proxy.cc
index 51b567e..a8cea51 100644
--- a/ppapi/proxy/ppb_graphics_3d_proxy.cc
+++ b/ppapi/proxy/ppb_graphics_3d_proxy.cc
@@ -14,6 +14,7 @@
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::EnterFunctionNoLock;
using ppapi::thunk::EnterResourceNoLock;
using ppapi::thunk::PPB_Graphics3D_API;
@@ -324,7 +325,7 @@ InterfaceProxy* CreateGraphics3DProxy(Dispatcher* dispatcher,
} // namespace
Graphics3D::Graphics3D(const HostResource& resource)
- : PluginResource(resource) {
+ : Resource(resource) {
}
Graphics3D::~Graphics3D() {
@@ -332,7 +333,7 @@ Graphics3D::~Graphics3D() {
}
bool Graphics3D::Init() {
- PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance());
+ PluginDispatcher* dispatcher = PluginDispatcher::GetForResource(this);
if (!dispatcher)
return false;
@@ -390,7 +391,7 @@ int32 Graphics3D::DoSwapBuffers() {
IPC::Message* msg = new PpapiHostMsg_PPBGraphics3D_SwapBuffers(
INTERFACE_ID_PPB_GRAPHICS_3D, host_resource());
msg->set_unblock(true);
- GetDispatcher()->Send(msg);
+ PluginDispatcher::GetForResource(this)->Send(msg);
gles2_impl()->SwapBuffers();
return PP_OK_COMPLETIONPENDING;
@@ -451,8 +452,7 @@ PP_Resource PPB_Graphics3D_Proxy::CreateProxyResource(
scoped_refptr<Graphics3D> graphics_3d(new Graphics3D(result));
if (!graphics_3d->Init())
return 0;
-
- return PluginResourceTracker::GetInstance()->AddResource(graphics_3d);
+ return graphics_3d->GetReference();
}
bool PPB_Graphics3D_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_graphics_3d_proxy.h b/ppapi/proxy/ppb_graphics_3d_proxy.h
index a304de3..bb6df67 100644
--- a/ppapi/proxy/ppb_graphics_3d_proxy.h
+++ b/ppapi/proxy/ppb_graphics_3d_proxy.h
@@ -13,9 +13,9 @@
#include "ppapi/c/pp_instance.h"
#include "ppapi/cpp/completion_callback.h"
#include "ppapi/proxy/interface_proxy.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/proxy_non_thread_safe_ref_count.h"
#include "ppapi/shared_impl/graphics_3d_impl.h"
+#include "ppapi/shared_impl/resource.h"
namespace ppapi {
class HostResource;
@@ -24,7 +24,7 @@ class HostResource;
namespace pp {
namespace proxy {
-class Graphics3D : public PluginResource,
+class Graphics3D : public ppapi::Resource,
public ppapi::Graphics3DImpl {
public:
explicit Graphics3D(const ppapi::HostResource& resource);
@@ -32,7 +32,7 @@ class Graphics3D : public PluginResource,
bool Init();
- // PluginResource overrides.
+ // Resource overrides.
virtual ::ppapi::thunk::PPB_Graphics3D_API* AsPPB_Graphics3D_API() OVERRIDE {
return this;
}
diff --git a/ppapi/proxy/ppb_image_data_proxy.cc b/ppapi/proxy/ppb_image_data_proxy.cc
index dec6efc..9e090c8 100644
--- a/ppapi/proxy/ppb_image_data_proxy.cc
+++ b/ppapi/proxy/ppb_image_data_proxy.cc
@@ -17,11 +17,13 @@
#include "ppapi/proxy/plugin_resource_tracker.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/shared_impl/host_resource.h"
+#include "ppapi/shared_impl/resource.h"
#include "ppapi/thunk/thunk.h"
#include "skia/ext/platform_canvas.h"
#include "ui/gfx/surface/transport_dib.h"
using ppapi::HostResource;
+using ppapi::Resource;
namespace pp {
namespace proxy {
@@ -66,7 +68,7 @@ bool PPB_ImageData_Proxy::OnMessageReceived(const IPC::Message& msg) {
ImageData::ImageData(const HostResource& resource,
const PP_ImageDataDesc& desc,
ImageHandle handle)
- : PluginResource(resource),
+ : Resource(resource),
desc_(desc) {
#if defined(OS_WIN)
transport_dib_.reset(TransportDIB::CreateWithHandle(handle));
diff --git a/ppapi/proxy/ppb_image_data_proxy.h b/ppapi/proxy/ppb_image_data_proxy.h
index 75d3faf..c861963 100644
--- a/ppapi/proxy/ppb_image_data_proxy.h
+++ b/ppapi/proxy/ppb_image_data_proxy.h
@@ -5,6 +5,7 @@
#ifndef PPAPI_PPB_IMAGE_DATA_PROXY_H_
#define PPAPI_PPB_IMAGE_DATA_PROXY_H_
+#include "base/scoped_ptr.h"
#include "ppapi/c/pp_bool.h"
#include "ppapi/c/pp_completion_callback.h"
#include "ppapi/c/pp_instance.h"
@@ -13,9 +14,9 @@
#include "ppapi/c/pp_size.h"
#include "ppapi/c/pp_var.h"
#include "ppapi/proxy/interface_proxy.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/serialized_structs.h"
#include "ppapi/shared_impl/image_data_impl.h"
+#include "ppapi/shared_impl/resource.h"
#include "ppapi/thunk/ppb_image_data_api.h"
struct PPB_ImageData;
@@ -47,8 +48,8 @@ class PPB_ImageData_Proxy : public InterfaceProxy {
virtual bool OnMessageReceived(const IPC::Message& msg);
};
-class ImageData : public PluginResource,
- public ::ppapi::thunk::PPB_ImageData_API,
+class ImageData : public ppapi::Resource,
+ public ppapi::thunk::PPB_ImageData_API,
public ppapi::ImageDataImpl {
public:
ImageData(const ppapi::HostResource& resource,
@@ -56,8 +57,8 @@ class ImageData : public PluginResource,
ImageHandle handle);
virtual ~ImageData();
- // ResourceObjectBase overrides.
- virtual ::ppapi::thunk::PPB_ImageData_API* AsPPB_ImageData_API() OVERRIDE;
+ // Resource overrides.
+ virtual ppapi::thunk::PPB_ImageData_API* AsPPB_ImageData_API() OVERRIDE;
// PPB_ImageData API.
virtual PP_Bool Describe(PP_ImageDataDesc* desc) OVERRIDE;
diff --git a/ppapi/proxy/ppb_input_event_proxy.cc b/ppapi/proxy/ppb_input_event_proxy.cc
index 593bf1e..a9b1a4f 100644
--- a/ppapi/proxy/ppb_input_event_proxy.cc
+++ b/ppapi/proxy/ppb_input_event_proxy.cc
@@ -6,28 +6,29 @@
#include "ppapi/c/ppb_audio_config.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/plugin_var_tracker.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/shared_impl/input_event_impl.h"
+#include "ppapi/shared_impl/resource.h"
#include "ppapi/shared_impl/var.h"
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
using ppapi::InputEventData;
using ppapi::InputEventImpl;
+using ppapi::Resource;
using ppapi::thunk::PPB_InputEvent_API;
namespace pp {
namespace proxy {
// The implementation is actually in InputEventImpl.
-class InputEvent : public PluginResource, public InputEventImpl {
+class InputEvent : public Resource, public InputEventImpl {
public:
InputEvent(const HostResource& resource, const InputEventData& data);
virtual ~InputEvent();
- // ResourceObjectBase overrides.
+ // Resource overrides.
virtual PPB_InputEvent_API* AsPPB_InputEvent_API() OVERRIDE;
// InputEventImpl overrides.
@@ -38,7 +39,7 @@ class InputEvent : public PluginResource, public InputEventImpl {
};
InputEvent::InputEvent(const HostResource& resource, const InputEventData& data)
- : PluginResource(resource),
+ : Resource(resource),
InputEventImpl(data) {
}
@@ -122,8 +123,8 @@ const InterfaceProxy::Info* PPB_InputEvent_Proxy::GetWheelInputEventInfo() {
PP_Resource PPB_InputEvent_Proxy::CreateProxyResource(
PP_Instance instance,
const InputEventData& data) {
- return PluginResourceTracker::GetInstance()->AddResource(
- new InputEvent(HostResource::MakeInstanceOnly(instance), data));
+ return (new InputEvent(HostResource::MakeInstanceOnly(instance), data))->
+ GetReference();
}
bool PPB_InputEvent_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_instance_proxy.cc b/ppapi/proxy/ppb_instance_proxy.cc
index 08da58c..ffa4f66 100644
--- a/ppapi/proxy/ppb_instance_proxy.cc
+++ b/ppapi/proxy/ppb_instance_proxy.cc
@@ -10,7 +10,6 @@
#include "ppapi/c/ppb_messaging.h"
#include "ppapi/proxy/host_dispatcher.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/plugin_resource_tracker.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/proxy/serialized_var.h"
@@ -23,6 +22,7 @@
#endif
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::EnterFunctionNoLock;
using ppapi::thunk::EnterResourceNoLock;
using ppapi::thunk::PPB_Instance_FunctionAPI;
@@ -147,9 +147,8 @@ PPB_Instance_FunctionAPI* PPB_Instance_Proxy::AsPPB_Instance_FunctionAPI() {
PP_Bool PPB_Instance_Proxy::BindGraphics(PP_Instance instance,
PP_Resource device) {
- PluginResource* object =
- PluginResourceTracker::GetInstance()->GetResourceObject(device);
- if (!object || object->instance() != instance)
+ Resource* object = PluginResourceTracker::GetInstance()->GetResource(device);
+ if (!object || object->pp_instance() != instance)
return PP_FALSE;
PP_Bool result = PP_FALSE;
diff --git a/ppapi/proxy/ppb_pdf_proxy.cc b/ppapi/proxy/ppb_pdf_proxy.cc
index 5711030..b7b3704 100644
--- a/ppapi/proxy/ppb_pdf_proxy.cc
+++ b/ppapi/proxy/ppb_pdf_proxy.cc
@@ -13,23 +13,23 @@
#include "build/build_config.h"
#include "ppapi/c/private/ppb_pdf.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/plugin_resource_tracker.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/thunk/enter.h"
#include "ppapi/thunk/ppb_pdf_api.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::PPB_PDFFont_API;
using ppapi::thunk::EnterResource;
namespace pp {
namespace proxy {
-class PrivateFontFile : public PluginResource,
+class PrivateFontFile : public Resource,
public PPB_PDFFont_API {
public:
- PrivateFontFile(const HostResource& resource) : PluginResource(resource) {
+ PrivateFontFile(const HostResource& resource) : Resource(resource) {
}
virtual ~PrivateFontFile() {}
@@ -80,9 +80,7 @@ PP_Resource GetFontFileWithFallback(
INTERFACE_ID_PPB_PDF, instance, desc, charset, &result));
if (result.is_null())
return 0;
-
- return PluginResourceTracker::GetInstance()->AddResource(
- new PrivateFontFile(result));
+ return (new PrivateFontFile(result))->GetReference();
}
bool GetFontTableForPrivateFontFile(PP_Resource font_file,
@@ -95,7 +93,7 @@ bool GetFontTableForPrivateFontFile(PP_Resource font_file,
PrivateFontFile* object = static_cast<PrivateFontFile*>(enter.object());
PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(
- object->instance());
+ object->pp_instance());
if (!dispatcher)
return false;
diff --git a/ppapi/proxy/ppb_surface_3d_proxy.cc b/ppapi/proxy/ppb_surface_3d_proxy.cc
index 28577d7..1ddcc42 100644
--- a/ppapi/proxy/ppb_surface_3d_proxy.cc
+++ b/ppapi/proxy/ppb_surface_3d_proxy.cc
@@ -10,7 +10,6 @@
#include "ppapi/c/dev/ppb_surface_3d_dev.h"
#include "ppapi/proxy/enter_proxy.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/proxy/ppb_context_3d_proxy.h"
#include "ppapi/thunk/enter.h"
@@ -18,6 +17,7 @@
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::EnterFunctionNoLock;
using ppapi::thunk::PPB_Surface3D_API;
using ppapi::thunk::ResourceCreationAPI;
@@ -37,8 +37,7 @@ InterfaceProxy* CreateSurface3DProxy(Dispatcher* dispatcher,
// Surface3D -------------------------------------------------------------------
Surface3D::Surface3D(const HostResource& host_resource)
- : PluginResource(host_resource),
- resource_(0),
+ : Resource(host_resource),
context_(NULL),
current_flush_callback_(PP_BlockUntilComplete()) {
}
@@ -79,7 +78,7 @@ int32_t Surface3D::SwapBuffers(PP_CompletionCallback callback) {
IPC::Message* msg = new PpapiHostMsg_PPBSurface3D_SwapBuffers(
INTERFACE_ID_PPB_SURFACE_3D, host_resource());
msg->set_unblock(true);
- GetDispatcher()->Send(msg);
+ PluginDispatcher::GetForResource(this)->Send(msg);
context_->gles2_impl()->SwapBuffers();
return PP_OK_COMPLETIONPENDING;
@@ -137,11 +136,7 @@ PP_Resource PPB_Surface3D_Proxy::CreateProxyResource(
if (result.is_null())
return 0;
- scoped_refptr<Surface3D> surface_3d(new Surface3D(result));
- PP_Resource resource =
- PluginResourceTracker::GetInstance()->AddResource(surface_3d);
- surface_3d->set_resource(resource);
- return resource;
+ return (new Surface3D(result))->GetReference();
}
bool PPB_Surface3D_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_surface_3d_proxy.h b/ppapi/proxy/ppb_surface_3d_proxy.h
index 0fa0d4c..ae2ec8f 100644
--- a/ppapi/proxy/ppb_surface_3d_proxy.h
+++ b/ppapi/proxy/ppb_surface_3d_proxy.h
@@ -12,8 +12,8 @@
#include "ppapi/c/pp_instance.h"
#include "ppapi/cpp/completion_callback.h"
#include "ppapi/proxy/interface_proxy.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/proxy_non_thread_safe_ref_count.h"
+#include "ppapi/shared_impl/resource.h"
#include "ppapi/thunk/ppb_surface_3d_api.h"
struct PPB_Surface3D_Dev;
@@ -23,13 +23,13 @@ namespace proxy {
class Context3D;
-class Surface3D : public PluginResource,
+class Surface3D : public ppapi::Resource,
public ppapi::thunk::PPB_Surface3D_API {
public:
explicit Surface3D(const ppapi::HostResource& host_resource);
virtual ~Surface3D();
- // ResourceObjectBase overrides.
+ // Resource overrides.
virtual PPB_Surface3D_API* AsPPB_Surface3D_API() OVERRIDE;
// PPB_Surface3D_API implementation.
@@ -51,11 +51,7 @@ class Surface3D : public PluginResource,
Context3D* context() const { return context_; }
- void set_resource(PP_Resource resource) { resource_ = resource; }
- PP_Resource resource() const { return resource_; }
-
private:
- PP_Resource resource_;
Context3D* context_;
// In the plugin, this is the current callback set for Flushes. When the
diff --git a/ppapi/proxy/ppb_testing_proxy.cc b/ppapi/proxy/ppb_testing_proxy.cc
index 7a1f7fd..0e6ed6d 100644
--- a/ppapi/proxy/ppb_testing_proxy.cc
+++ b/ppapi/proxy/ppb_testing_proxy.cc
@@ -7,11 +7,12 @@
#include "base/message_loop.h"
#include "ppapi/c/dev/ppb_testing_dev.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/plugin_resource_tracker.h"
#include "ppapi/proxy/ppapi_messages.h"
+#include "ppapi/shared_impl/resource.h"
using ppapi::HostResource;
+using ppapi::Resource;
namespace pp {
namespace proxy {
@@ -21,18 +22,18 @@ namespace {
PP_Bool ReadImageData(PP_Resource graphics_2d,
PP_Resource image,
const PP_Point* top_left) {
- PluginResource* image_object = PluginResourceTracker::GetInstance()->
- GetResourceObject(image);
+ Resource* image_object = PluginResourceTracker::GetInstance()->
+ GetResource(image);
if (!image_object)
return PP_FALSE;
- PluginResource* graphics_2d_object =
- PluginResourceTracker::GetInstance()->GetResourceObject(graphics_2d);
+ Resource* graphics_2d_object =
+ PluginResourceTracker::GetInstance()->GetResource(graphics_2d);
if (!graphics_2d_object ||
- image_object->instance() != graphics_2d_object->instance())
+ image_object->pp_instance() != graphics_2d_object->pp_instance())
return PP_FALSE;
PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(
- image_object->instance());
+ image_object->pp_instance());
if (!dispatcher)
return PP_FALSE;
diff --git a/ppapi/proxy/ppb_url_loader_proxy.cc b/ppapi/proxy/ppb_url_loader_proxy.cc
index 43997ea..5528a52 100644
--- a/ppapi/proxy/ppb_url_loader_proxy.cc
+++ b/ppapi/proxy/ppb_url_loader_proxy.cc
@@ -19,7 +19,6 @@
#include "ppapi/proxy/enter_proxy.h"
#include "ppapi/proxy/host_dispatcher.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/plugin_resource_tracker.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/proxy/ppb_url_response_info_proxy.h"
@@ -33,6 +32,7 @@
#endif
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::EnterFunctionNoLock;
using ppapi::thunk::EnterResourceNoLock;
using ppapi::thunk::PPB_URLLoader_API;
@@ -80,12 +80,12 @@ InterfaceProxy* CreateURLLoaderProxy(Dispatcher* dispatcher,
// URLLoader -------------------------------------------------------------------
-class URLLoader : public PluginResource, public PPB_URLLoader_API {
+class URLLoader : public Resource, public PPB_URLLoader_API {
public:
URLLoader(const HostResource& resource);
virtual ~URLLoader();
- // ResourceObjectBase overrides.
+ // Resource overrides.
virtual PPB_URLLoader_API* AsPPB_URLLoader_API() OVERRIDE;
// PPB_URLLoader_API implementation.
@@ -121,6 +121,10 @@ class URLLoader : public PluginResource, public PPB_URLLoader_API {
// The size must be not more than the current size of the buffer.
void PopBuffer(void* output_buffer, int32_t output_size);
+ PluginDispatcher* GetDispatcher() const {
+ return PluginDispatcher::GetForResource(this);
+ }
+
// Initialized to -1. Will be set to nonnegative values by the UpdateProgress
// message when the values are known.
int64_t bytes_sent_;
@@ -147,7 +151,7 @@ class URLLoader : public PluginResource, public PPB_URLLoader_API {
};
URLLoader::URLLoader(const HostResource& resource)
- : PluginResource(resource),
+ : Resource(resource),
bytes_sent_(-1),
total_bytes_to_be_sent_(-1),
bytes_received_(-1),
@@ -178,8 +182,8 @@ PPB_URLLoader_API* URLLoader::AsPPB_URLLoader_API() {
int32_t URLLoader::Open(PP_Resource request_id,
PP_CompletionCallback callback) {
- PluginResource* request_object =
- PluginResourceTracker::GetInstance()->GetResourceObject(request_id);
+ Resource* request_object =
+ PluginResourceTracker::GetInstance()->GetResource(request_id);
if (!request_object)
return PP_ERROR_BADARGUMENT;
@@ -358,8 +362,7 @@ PPB_URLLoader_Proxy::~PPB_URLLoader_Proxy() {
// static
PP_Resource PPB_URLLoader_Proxy::TrackPluginResource(
const HostResource& url_loader_resource) {
- return PluginResourceTracker::GetInstance()->AddResource(
- new URLLoader(url_loader_resource));
+ return (new URLLoader(url_loader_resource))->GetReference();
}
// static
diff --git a/ppapi/proxy/ppb_url_request_info_proxy.cc b/ppapi/proxy/ppb_url_request_info_proxy.cc
index 63a0b87..7b4152a 100644
--- a/ppapi/proxy/ppb_url_request_info_proxy.cc
+++ b/ppapi/proxy/ppb_url_request_info_proxy.cc
@@ -7,13 +7,13 @@
#include "ppapi/c/ppb_url_request_info.h"
#include "ppapi/proxy/enter_proxy.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/thunk/ppb_url_request_info_api.h"
#include "ppapi/thunk/resource_creation_api.h"
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::EnterFunctionNoLock;
using ppapi::thunk::PPB_URLRequestInfo_API;
using ppapi::thunk::ResourceCreationAPI;
@@ -30,7 +30,7 @@ InterfaceProxy* CreateURLRequestInfoProxy(Dispatcher* dispatcher,
} // namespace
-class URLRequestInfo : public PluginResource,
+class URLRequestInfo : public Resource,
public PPB_URLRequestInfo_API {
public:
URLRequestInfo(const HostResource& resource);
@@ -49,11 +49,15 @@ class URLRequestInfo : public PluginResource,
PP_Time expected_last_modified_time) OVERRIDE;
private:
+ PluginDispatcher* GetDispatcher() const {
+ return PluginDispatcher::GetForResource(this);
+ }
+
DISALLOW_COPY_AND_ASSIGN(URLRequestInfo);
};
URLRequestInfo::URLRequestInfo(const HostResource& resource)
- : PluginResource(resource) {
+ : Resource(resource) {
}
URLRequestInfo::~URLRequestInfo() {
@@ -89,8 +93,8 @@ PP_Bool URLRequestInfo::AppendFileToBody(PP_Resource file_ref,
int64_t start_offset,
int64_t number_of_bytes,
PP_Time expected_last_modified_time) {
- PluginResource* file_ref_object =
- PluginResourceTracker::GetInstance()->GetResourceObject(file_ref);
+ Resource* file_ref_object =
+ PluginResourceTracker::GetInstance()->GetResource(file_ref);
if (!file_ref_object)
return PP_FALSE;
@@ -139,9 +143,7 @@ PP_Resource PPB_URLRequestInfo_Proxy::CreateProxyResource(
INTERFACE_ID_PPB_URL_REQUEST_INFO, instance, &result));
if (result.is_null())
return 0;
-
- return PluginResourceTracker::GetInstance()->AddResource(
- new URLRequestInfo(result));
+ return (new URLRequestInfo(result))->GetReference();
}
bool PPB_URLRequestInfo_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_url_response_info_proxy.cc b/ppapi/proxy/ppb_url_response_info_proxy.cc
index f0bfaf2..710f6b0 100644
--- a/ppapi/proxy/ppb_url_response_info_proxy.cc
+++ b/ppapi/proxy/ppb_url_response_info_proxy.cc
@@ -8,14 +8,15 @@
#include "ppapi/proxy/enter_proxy.h"
#include "ppapi/proxy/host_dispatcher.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/proxy/ppb_file_ref_proxy.h"
#include "ppapi/proxy/serialized_var.h"
+#include "ppapi/shared_impl/resource.h"
#include "ppapi/thunk/ppb_url_response_info_api.h"
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::PPB_URLResponseInfo_API;
namespace pp {
@@ -32,13 +33,12 @@ InterfaceProxy* CreateURLResponseInfoProxy(Dispatcher* dispatcher,
// URLResponseInfo -------------------------------------------------------------
-class URLResponseInfo : public PluginResource,
- public PPB_URLResponseInfo_API {
+class URLResponseInfo : public Resource, public PPB_URLResponseInfo_API {
public:
URLResponseInfo(const HostResource& resource);
virtual ~URLResponseInfo();
- // ResourceObjectBase override.
+ // Resource override.
virtual PPB_URLResponseInfo_API* AsPPB_URLResponseInfo_API() OVERRIDE;
// PPB_URLResponseInfo_API implementation.
@@ -50,7 +50,7 @@ class URLResponseInfo : public PluginResource,
};
URLResponseInfo::URLResponseInfo(const HostResource& resource)
- : PluginResource(resource) {
+ : Resource(resource) {
}
URLResponseInfo::~URLResponseInfo() {
@@ -61,10 +61,11 @@ PPB_URLResponseInfo_API* URLResponseInfo::AsPPB_URLResponseInfo_API() {
}
PP_Var URLResponseInfo::GetProperty(PP_URLResponseProperty property) {
+ PluginDispatcher* dispatcher = PluginDispatcher::GetForResource(this);
ReceiveSerializedVarReturnValue result;
- GetDispatcher()->Send(new PpapiHostMsg_PPBURLResponseInfo_GetProperty(
+ dispatcher->Send(new PpapiHostMsg_PPBURLResponseInfo_GetProperty(
INTERFACE_ID_PPB_URL_RESPONSE_INFO, host_resource(), property, &result));
- return result.Return(GetDispatcher());
+ return result.Return(dispatcher);
}
PP_Resource URLResponseInfo::GetBodyAsFileRef() {
@@ -73,8 +74,9 @@ PP_Resource URLResponseInfo::GetBodyAsFileRef() {
// where the file is ready. This will prevent us from having to do this sync
// IPC here.
PPBFileRef_CreateInfo create_info;
- GetDispatcher()->Send(new PpapiHostMsg_PPBURLResponseInfo_GetBodyAsFileRef(
- INTERFACE_ID_PPB_URL_RESPONSE_INFO, host_resource(), &create_info));
+ PluginDispatcher::GetForResource(this)->Send(
+ new PpapiHostMsg_PPBURLResponseInfo_GetBodyAsFileRef(
+ INTERFACE_ID_PPB_URL_RESPONSE_INFO, host_resource(), &create_info));
return PPB_FileRef_Proxy::DeserializeFileRef(create_info);
}
@@ -104,8 +106,7 @@ const InterfaceProxy::Info* PPB_URLResponseInfo_Proxy::GetInfo() {
// static
PP_Resource PPB_URLResponseInfo_Proxy::CreateResponseForResource(
const HostResource& resource) {
- return PluginResourceTracker::GetInstance()->AddResource(
- new URLResponseInfo(resource));
+ return (new URLResponseInfo(resource))->GetReference();
}
bool PPB_URLResponseInfo_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_url_response_info_proxy.h b/ppapi/proxy/ppb_url_response_info_proxy.h
index f181dfd..9ef469b 100644
--- a/ppapi/proxy/ppb_url_response_info_proxy.h
+++ b/ppapi/proxy/ppb_url_response_info_proxy.h
@@ -31,7 +31,7 @@ class PPB_URLResponseInfo_Proxy : public InterfaceProxy {
// URLResponseInfo objects are actually created and returned by the
// URLLoader. This function allows the URLLoader to convert a new
// HostResource representing a response info to a properly tracked
- // URLReponseInfo PluginResource. Returns the plugin resource ID for the
+ // URLReponseInfo Resource. Returns the plugin resource ID for the
// new resource.
static PP_Resource CreateResponseForResource(
const ppapi::HostResource& resource);
diff --git a/ppapi/proxy/ppb_video_capture_proxy.cc b/ppapi/proxy/ppb_video_capture_proxy.cc
index 56a99e5..a49b6e8 100644
--- a/ppapi/proxy/ppb_video_capture_proxy.cc
+++ b/ppapi/proxy/ppb_video_capture_proxy.cc
@@ -16,7 +16,6 @@
#include "ppapi/proxy/enter_proxy.h"
#include "ppapi/proxy/host_dispatcher.h"
#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/proxy/ppb_buffer_proxy.h"
#include "ppapi/thunk/ppb_buffer_api.h"
@@ -25,6 +24,7 @@
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::EnterResourceNoLock;
using ppapi::thunk::PPB_Buffer_API;
using ppapi::thunk::PPB_BufferTrusted_API;
@@ -145,12 +145,12 @@ PPP_VideoCapture_Dev ppp_video_capture = {
} // namespace
class VideoCapture : public ppapi::thunk::PPB_VideoCapture_API,
- public PluginResource {
+ public Resource {
public:
VideoCapture(const HostResource& resource);
virtual ~VideoCapture();
- // ResourceObjectBase overrides.
+ // Resource overrides.
virtual ppapi::thunk::PPB_VideoCapture_API* AsPPB_VideoCapture_API() OVERRIDE;
// PPB_VideoCapture_API implementation.
@@ -246,13 +246,17 @@ class VideoCapture : public ppapi::thunk::PPB_VideoCapture_API,
}
private:
+ PluginDispatcher* GetDispatcher() const {
+ return PluginDispatcher::GetForResource(this);
+ }
+
uint32_t status_;
std::vector<bool> buffer_in_use_;
DISALLOW_COPY_AND_ASSIGN(VideoCapture);
};
VideoCapture::VideoCapture(const HostResource& resource)
- : PluginResource(resource),
+ : Resource(resource),
status_(PP_VIDEO_CAPTURE_STATUS_STOPPED) {
}
@@ -294,9 +298,7 @@ PP_Resource PPB_VideoCapture_Proxy::CreateProxyResource(PP_Instance instance) {
INTERFACE_ID_PPB_VIDEO_CAPTURE_DEV, instance, &result));
if (result.is_null())
return 0;
-
- return PluginResourceTracker::GetInstance()->AddResource(
- new VideoCapture(result));
+ return (new VideoCapture(result))->GetReference();
}
bool PPB_VideoCapture_Proxy::OnMessageReceived(const IPC::Message& msg) {
diff --git a/ppapi/proxy/ppb_video_decoder_proxy.cc b/ppapi/proxy/ppb_video_decoder_proxy.cc
index 85f6bff..bcc0fc94 100644
--- a/ppapi/proxy/ppb_video_decoder_proxy.cc
+++ b/ppapi/proxy/ppb_video_decoder_proxy.cc
@@ -16,6 +16,7 @@
#include "ppapi/thunk/thunk.h"
using ppapi::HostResource;
+using ppapi::Resource;
using ppapi::thunk::EnterResourceNoLock;
using ppapi::thunk::PPB_Buffer_API;
using ppapi::thunk::PPB_Context3D_API;
@@ -24,16 +25,18 @@ using ppapi::thunk::PPB_VideoDecoder_API;
namespace pp {
namespace proxy {
-class VideoDecoder : public PluginResource,
+class VideoDecoder : public Resource,
public ::ppapi::VideoDecoderImpl {
public:
+ // You must call Init() before using this class.
+ explicit VideoDecoder(const HostResource& resource);
virtual ~VideoDecoder();
static VideoDecoder* Create(const HostResource& resource,
PP_Resource context3d_id,
const PP_VideoConfigElement* config);
- // ResourceObjectBase overrides.
+ // Resource overrides.
virtual PPB_VideoDecoder_API* AsPPB_VideoDecoder_API() OVERRIDE;
// PPB_VideoDecoder_API implementation.
@@ -46,13 +49,10 @@ class VideoDecoder : public PluginResource,
virtual int32_t Reset(PP_CompletionCallback callback) OVERRIDE;
virtual void Destroy() OVERRIDE;
- protected:
- virtual void AddRefResource(PP_Resource resource) OVERRIDE;
- virtual void UnrefResource(PP_Resource resource) OVERRIDE;
-
private:
friend class PPB_VideoDecoder_Proxy;
- explicit VideoDecoder(const HostResource& resource);
+
+ PluginDispatcher* GetDispatcher() const;
// Run the callbacks that were passed into the plugin interface.
void FlushACK(int32_t result);
@@ -62,24 +62,7 @@ class VideoDecoder : public PluginResource,
DISALLOW_COPY_AND_ASSIGN(VideoDecoder);
};
-VideoDecoder::VideoDecoder(const HostResource& decoder)
- : PluginResource(decoder) {
-}
-
-VideoDecoder* VideoDecoder::Create(const HostResource& resource,
- PP_Resource context3d_id,
- const PP_VideoConfigElement* config) {
- if (!context3d_id)
- return NULL;
-
- EnterResourceNoLock<PPB_Context3D_API> enter_context(context3d_id, true);
- if (enter_context.failed())
- return NULL;
-
- scoped_refptr<VideoDecoder> decoder(new VideoDecoder(resource));
- if (decoder->Init(context3d_id, enter_context.object(), config))
- return decoder.release();
- return NULL;
+VideoDecoder::VideoDecoder(const HostResource& decoder) : Resource(decoder) {
}
VideoDecoder::~VideoDecoder() {
@@ -155,12 +138,8 @@ void VideoDecoder::Destroy() {
::ppapi::VideoDecoderImpl::Destroy();
}
-void VideoDecoder::AddRefResource(PP_Resource resource) {
- PluginResourceTracker::GetInstance()->AddRefResource(resource);
-}
-
-void VideoDecoder::UnrefResource(PP_Resource resource) {
- PluginResourceTracker::GetInstance()->ReleaseResource(resource);
+PluginDispatcher* VideoDecoder::GetDispatcher() const {
+ return PluginDispatcher::GetForResource(this);
}
void VideoDecoder::ResetACK(int32_t result) {
@@ -257,8 +236,11 @@ PP_Resource PPB_VideoDecoder_Proxy::CreateProxyResource(
if (result.is_null())
return 0;
- return PluginResourceTracker::GetInstance()->AddResource(
- VideoDecoder::Create(result, context3d_id, config));
+ // Need a scoped_refptr to keep the object alive during the Init call.
+ scoped_refptr<VideoDecoder> decoder(new VideoDecoder(result));
+ if (!decoder->Init(context3d_id, enter_context.object(), config))
+ return 0;
+ return decoder->GetReference();
}
void PPB_VideoDecoder_Proxy::OnMsgCreate(
diff --git a/ppapi/proxy/ppb_video_decoder_proxy.h b/ppapi/proxy/ppb_video_decoder_proxy.h
index e7c0457..d915d22 100644
--- a/ppapi/proxy/ppb_video_decoder_proxy.h
+++ b/ppapi/proxy/ppb_video_decoder_proxy.h
@@ -8,7 +8,6 @@
#include "ppapi/c/pp_instance.h"
#include "ppapi/cpp/completion_callback.h"
#include "ppapi/proxy/interface_proxy.h"
-#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/proxy_non_thread_safe_ref_count.h"
#include "ppapi/shared_impl/video_decoder_impl.h"
#include "ppapi/thunk/ppb_video_decoder_api.h"
diff --git a/ppapi/proxy/ppp_graphics_3d_proxy.h b/ppapi/proxy/ppp_graphics_3d_proxy.h
index b52a500..4f1af56 100644
--- a/ppapi/proxy/ppp_graphics_3d_proxy.h
+++ b/ppapi/proxy/ppp_graphics_3d_proxy.h
@@ -7,6 +7,7 @@
#include "ppapi/c/pp_instance.h"
#include "ppapi/proxy/interface_proxy.h"
+#include "ppapi/shared_impl/host_resource.h"
struct PPP_Graphics3D_Dev;
diff --git a/ppapi/proxy/ppp_instance_private_proxy.h b/ppapi/proxy/ppp_instance_private_proxy.h
index 166ee7d..f981167 100644
--- a/ppapi/proxy/ppp_instance_private_proxy.h
+++ b/ppapi/proxy/ppp_instance_private_proxy.h
@@ -9,6 +9,7 @@
#include "ppapi/c/pp_resource.h"
#include "ppapi/c/pp_var.h"
#include "ppapi/proxy/interface_proxy.h"
+#include "ppapi/shared_impl/host_resource.h"
struct PPP_Instance_Private;
diff --git a/ppapi/proxy/ppp_instance_proxy.cc b/ppapi/proxy/ppp_instance_proxy.cc
index 05c061b..612fb77 100644
--- a/ppapi/proxy/ppp_instance_proxy.cc
+++ b/ppapi/proxy/ppp_instance_proxy.cc
@@ -165,6 +165,7 @@ void PPP_Instance_Proxy::OnMsgDidCreate(
PluginDispatcher* plugin_dispatcher =
static_cast<PluginDispatcher*>(dispatcher());
plugin_dispatcher->DidCreateInstance(instance);
+ ppapi::TrackerBase::Get()->GetResourceTracker()->DidCreateInstance(instance);
// Make sure the arrays always have at least one element so we can take the
// address below.
@@ -185,6 +186,7 @@ void PPP_Instance_Proxy::OnMsgDidCreate(
void PPP_Instance_Proxy::OnMsgDidDestroy(PP_Instance instance) {
combined_interface_->DidDestroy(instance);
+ ppapi::TrackerBase::Get()->GetResourceTracker()->DidDeleteInstance(instance);
static_cast<PluginDispatcher*>(dispatcher())->DidDestroyInstance(instance);
}
diff --git a/ppapi/proxy/ppp_video_decoder_proxy.cc b/ppapi/proxy/ppp_video_decoder_proxy.cc
index d4eaed1..ddfc0c3 100644
--- a/ppapi/proxy/ppp_video_decoder_proxy.cc
+++ b/ppapi/proxy/ppp_video_decoder_proxy.cc
@@ -5,6 +5,7 @@
#include "ppapi/proxy/ppp_video_decoder_proxy.h"
#include "ppapi/proxy/host_dispatcher.h"
+#include "ppapi/proxy/plugin_resource_tracker.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/proxy/ppb_video_decoder_proxy.h"
#include "ppapi/thunk/enter.h"
@@ -153,7 +154,8 @@ void PPP_VideoDecoder_Proxy::OnMsgNotifyEndOfStream(
const HostResource& decoder) {
PP_Resource plugin_decoder = PluginResourceTracker::GetInstance()->
PluginResourceForHostResource(decoder);
- ppp_video_decoder_target()->EndOfStream(decoder.instance(), plugin_decoder);
+ ppp_video_decoder_target()->EndOfStream(decoder.instance(),
+ plugin_decoder);
}
void PPP_VideoDecoder_Proxy::OnMsgNotifyError(
diff --git a/ppapi/proxy/proxy_module.h b/ppapi/proxy/proxy_module.h
index 304f24f..5b2e540 100644
--- a/ppapi/proxy/proxy_module.h
+++ b/ppapi/proxy/proxy_module.h
@@ -15,7 +15,6 @@ namespace pp {
namespace proxy {
class PluginDispatcher;
-class PluginResource;
class ProxyModule {
public:
diff --git a/ppapi/proxy/resource_creation_proxy.cc b/ppapi/proxy/resource_creation_proxy.cc
index 201eef1..4ba7cd1 100644
--- a/ppapi/proxy/resource_creation_proxy.cc
+++ b/ppapi/proxy/resource_creation_proxy.cc
@@ -158,9 +158,8 @@ PP_Resource ResourceCreationProxy::CreateFontObject(
const PP_FontDescription_Dev* description) {
if (!ppapi::FontImpl::IsPPFontDescriptionValid(*description))
return 0;
-
- return PluginResourceTracker::GetInstance()->AddResource(
- new Font(HostResource::MakeInstanceOnly(instance), *description));
+ return (new Font(HostResource::MakeInstanceOnly(instance), *description))->
+ GetReference();
}
PP_Resource ResourceCreationProxy::CreateGraphics2D(PP_Instance instance,
@@ -192,8 +191,7 @@ PP_Resource ResourceCreationProxy::CreateImageData(PP_Instance instance,
PP_ImageDataDesc desc;
memcpy(&desc, image_data_desc.data(), sizeof(PP_ImageDataDesc));
- return PluginResourceTracker::GetInstance()->AddResource(
- new ImageData(result, desc, image_handle));
+ return (new ImageData(result, desc, image_handle))->GetReference();
}
PP_Resource ResourceCreationProxy::CreateKeyboardInputEvent(