Index: ppapi/proxy/plugin_resource_tracker_unittest.cc |
=================================================================== |
--- ppapi/proxy/plugin_resource_tracker_unittest.cc (revision 0) |
+++ ppapi/proxy/plugin_resource_tracker_unittest.cc (revision 0) |
@@ -0,0 +1,75 @@ |
+// 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 "base/process.h" |
+#include "base/scoped_ptr.h" |
+#include "ppapi/proxy/mock_resource.h" |
+#include "ppapi/proxy/plugin_dispatcher.h" |
+#include "ppapi/proxy/plugin_resource_tracker.h" |
+#include "ppapi/proxy/ppapi_messages.h" |
+#include "ppapi/proxy/ppapi_proxy_test.h" |
+ |
+namespace pp { |
+namespace proxy { |
+ |
+namespace { |
+ |
+// Object so we know when a resource has been released. |
+class TrackedMockResource : public MockResource { |
+ public: |
+ TrackedMockResource(const HostResource& serialized) |
+ : MockResource(serialized) { |
+ tracked_alive_count++; |
+ } |
+ ~TrackedMockResource() { |
+ tracked_alive_count--; |
+ } |
+ |
+ static int tracked_alive_count; |
+}; |
+ |
+int TrackedMockResource::tracked_alive_count = 0; |
+ |
+} // namespace |
+ |
+class PluginResourceTrackerTest : public PluginProxyTest { |
+ public: |
+ PluginResourceTrackerTest() {} |
+ ~PluginResourceTrackerTest() {} |
+ |
+ PluginResourceTracker& tracker() { return tracker_; } |
+ |
+ private: |
+ PluginResourceTracker tracker_; |
+}; |
+ |
+TEST_F(PluginResourceTrackerTest, PluginResourceForHostResource) { |
+ PP_Instance instance = 0x1234; |
+ PP_Resource host_resource = 0x5678; |
+ |
+ HostResource serialized; |
+ serialized.SetHostResource(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, TrackedMockResource::tracked_alive_count); |
+ TrackedMockResource* object = new TrackedMockResource(serialized); |
+ EXPECT_EQ(1, TrackedMockResource::tracked_alive_count); |
+ PP_Resource plugin_resource = |
+ tracker().AddResource(linked_ptr<PluginResource>(object)); |
+ |
+ // 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)); |
+ |
+ // Releasing the resource should have freed it. |
+ tracker().ReleaseResource(plugin_resource); |
+ EXPECT_EQ(0, TrackedMockResource::tracked_alive_count); |
+ EXPECT_EQ(0, tracker().PluginResourceForHostResource(serialized)); |
+} |
+ |
+} // namespace proxy |
+} // namespace pp |
Property changes on: ppapi/proxy/plugin_resource_tracker_unittest.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |