Index: ppapi/proxy/plugin_var_tracker_unittest.cc |
=================================================================== |
--- ppapi/proxy/plugin_var_tracker_unittest.cc (revision 72840) |
+++ ppapi/proxy/plugin_var_tracker_unittest.cc (working copy) |
@@ -5,7 +5,7 @@ |
#include "ipc/ipc_test_sink.h" |
#include "ppapi/proxy/plugin_var_tracker.h" |
#include "ppapi/proxy/ppapi_messages.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
+#include "ppapi/proxy/ppapi_proxy_test.h" |
namespace pp { |
namespace proxy { |
@@ -29,7 +29,7 @@ |
} // namespace |
-class PluginVarTrackerTest : public testing::Test { |
+class PluginVarTrackerTest : public PluginProxyTest { |
public: |
PluginVarTrackerTest() {} |
@@ -37,7 +37,7 @@ |
// Asserts that there is a unique "release object" IPC message in the test |
// sink. This will return the var ID from the message or -1 if none found. |
PluginVarTracker::VarID GetObjectIDForUniqueReleaseObject() { |
- const IPC::Message* release_msg = sink_.GetUniqueMessageMatching( |
+ const IPC::Message* release_msg = sink().GetUniqueMessageMatching( |
PpapiHostMsg_PPBVar_ReleaseObject::ID); |
if (!release_msg) |
return -1; |
@@ -46,25 +46,21 @@ |
PpapiHostMsg_PPBVar_ReleaseObject::Read(release_msg, &id); |
return id.a; |
} |
- |
- PluginVarTracker tracker_; |
- |
- IPC::TestSink sink_; |
}; |
TEST_F(PluginVarTrackerTest, Strings) { |
std::string str("Hello"); |
- PluginVarTracker::VarID str_id1 = tracker_.MakeString(str); |
+ PluginVarTracker::VarID str_id1 = var_tracker().MakeString(str); |
EXPECT_NE(0, str_id1); |
- PluginVarTracker::VarID str_id2 = tracker_.MakeString( |
+ PluginVarTracker::VarID str_id2 = var_tracker().MakeString( |
str.c_str(), static_cast<uint32_t>(str.size())); |
EXPECT_NE(0, str_id2); |
// Make sure the strings come out the other end. |
- std::string result = tracker_.GetString(MakeString(str_id1)); |
+ std::string result = var_tracker().GetString(MakeString(str_id1)); |
EXPECT_EQ(str, result); |
- result = tracker_.GetString(MakeString(str_id2)); |
+ result = var_tracker().GetString(MakeString(str_id2)); |
EXPECT_EQ(str, result); |
} |
@@ -73,43 +69,46 @@ |
// Round-trip through the tracker to make sure the host object comes out the |
// other end. |
- PP_Var plugin_object = tracker_.ReceiveObjectPassRef(host_object, &sink_); |
- PP_Var host_object2 = tracker_.GetHostObject(plugin_object); |
+ PP_Var plugin_object = var_tracker().ReceiveObjectPassRef(host_object, |
+ &sink()); |
+ PP_Var host_object2 = var_tracker().GetHostObject(plugin_object); |
EXPECT_EQ(PP_VARTYPE_OBJECT, host_object2.type); |
EXPECT_EQ(host_object.value.as_id, host_object2.value.as_id); |
- tracker_.Release(plugin_object); |
+ var_tracker().Release(plugin_object); |
} |
TEST_F(PluginVarTrackerTest, ReceiveObjectPassRef) { |
PP_Var host_object = MakeObject(12345); |
// Receive the object, we should have one ref and no messages. |
- PP_Var plugin_object = tracker_.ReceiveObjectPassRef(host_object, &sink_); |
- EXPECT_EQ(0u, sink_.message_count()); |
- EXPECT_EQ(1, tracker_.GetRefCountForObject(plugin_object)); |
+ PP_Var plugin_object = var_tracker().ReceiveObjectPassRef(host_object, |
+ &sink()); |
+ EXPECT_EQ(0u, sink().message_count()); |
+ EXPECT_EQ(1, var_tracker().GetRefCountForObject(plugin_object)); |
EXPECT_EQ(0, |
- tracker_.GetTrackedWithNoReferenceCountForObject(plugin_object)); |
+ var_tracker().GetTrackedWithNoReferenceCountForObject(plugin_object)); |
// Receive the same object again, we should get the same plugin ID out. |
- PP_Var plugin_object2 = tracker_.ReceiveObjectPassRef(host_object, &sink_); |
+ PP_Var plugin_object2 = var_tracker().ReceiveObjectPassRef(host_object, |
+ &sink()); |
EXPECT_EQ(plugin_object.value.as_id, plugin_object2.value.as_id); |
- EXPECT_EQ(2, tracker_.GetRefCountForObject(plugin_object)); |
+ EXPECT_EQ(2, var_tracker().GetRefCountForObject(plugin_object)); |
EXPECT_EQ(0, |
- tracker_.GetTrackedWithNoReferenceCountForObject(plugin_object)); |
+ var_tracker().GetTrackedWithNoReferenceCountForObject(plugin_object)); |
// It should have sent one message to decerment the refcount in the host. |
// This is because it only maintains one host refcount for all references |
// in the plugin, but the host just sent the second one. |
EXPECT_EQ(host_object.value.as_id, GetObjectIDForUniqueReleaseObject()); |
- sink_.ClearMessages(); |
+ sink().ClearMessages(); |
// Release the object, one ref at a time. The second release should free |
// the tracking data and send a release message to the browser. |
- tracker_.Release(plugin_object); |
- EXPECT_EQ(1, tracker_.GetRefCountForObject(plugin_object)); |
- tracker_.Release(plugin_object); |
- EXPECT_EQ(-1, tracker_.GetRefCountForObject(plugin_object)); |
+ var_tracker().Release(plugin_object); |
+ EXPECT_EQ(1, var_tracker().GetRefCountForObject(plugin_object)); |
+ var_tracker().Release(plugin_object); |
+ EXPECT_EQ(-1, var_tracker().GetRefCountForObject(plugin_object)); |
EXPECT_EQ(host_object.value.as_id, GetObjectIDForUniqueReleaseObject()); |
} |
@@ -118,39 +117,43 @@ |
PP_Var host_object = MakeObject(12345); |
// Phase one: First receive via a "pass ref", then a tracked with no ref. |
- PP_Var plugin_var = tracker_.ReceiveObjectPassRef(host_object, &sink_); |
- PP_Var plugin_var2 = tracker_.TrackObjectWithNoReference(host_object, &sink_); |
+ PP_Var plugin_var = var_tracker().ReceiveObjectPassRef(host_object, &sink()); |
+ PP_Var plugin_var2 = |
+ var_tracker().TrackObjectWithNoReference(host_object, &sink()); |
EXPECT_EQ(plugin_var.value.as_id, plugin_var2.value.as_id); |
- EXPECT_EQ(1, tracker_.GetRefCountForObject(plugin_var)); |
- EXPECT_EQ(1, tracker_.GetTrackedWithNoReferenceCountForObject(plugin_var)); |
+ EXPECT_EQ(1, var_tracker().GetRefCountForObject(plugin_var)); |
+ EXPECT_EQ(1, |
+ var_tracker().GetTrackedWithNoReferenceCountForObject(plugin_var)); |
// Free via the refcount, this should release the object to the browser but |
// maintain the tracked object. |
- tracker_.Release(plugin_var); |
- EXPECT_EQ(0, tracker_.GetRefCountForObject(plugin_var)); |
- EXPECT_EQ(1u, sink_.message_count()); |
+ var_tracker().Release(plugin_var); |
+ EXPECT_EQ(0, var_tracker().GetRefCountForObject(plugin_var)); |
+ EXPECT_EQ(1u, sink().message_count()); |
EXPECT_EQ(host_object.value.as_id, GetObjectIDForUniqueReleaseObject()); |
// Now free via the tracked object, this should free it. |
- tracker_.StopTrackingObjectWithNoReference(plugin_var); |
- EXPECT_EQ(-1, tracker_.GetRefCountForObject(plugin_var)); |
+ var_tracker().StopTrackingObjectWithNoReference(plugin_var); |
+ EXPECT_EQ(-1, var_tracker().GetRefCountForObject(plugin_var)); |
// Phase two: Receive via a tracked, then get an addref. |
- sink_.ClearMessages(); |
- plugin_var = tracker_.TrackObjectWithNoReference(host_object, &sink_); |
- plugin_var2 = tracker_.ReceiveObjectPassRef(host_object, &sink_); |
+ sink().ClearMessages(); |
+ plugin_var = var_tracker().TrackObjectWithNoReference(host_object, &sink()); |
+ plugin_var2 = var_tracker().ReceiveObjectPassRef(host_object, &sink()); |
EXPECT_EQ(plugin_var.value.as_id, plugin_var2.value.as_id); |
- EXPECT_EQ(1, tracker_.GetRefCountForObject(plugin_var)); |
- EXPECT_EQ(1, tracker_.GetTrackedWithNoReferenceCountForObject(plugin_var)); |
+ EXPECT_EQ(1, var_tracker().GetRefCountForObject(plugin_var)); |
+ EXPECT_EQ(1, |
+ var_tracker().GetTrackedWithNoReferenceCountForObject(plugin_var)); |
// Free via the tracked object, this should have no effect. |
- tracker_.StopTrackingObjectWithNoReference(plugin_var); |
- EXPECT_EQ(0, tracker_.GetTrackedWithNoReferenceCountForObject(plugin_var)); |
- EXPECT_EQ(0u, sink_.message_count()); |
+ var_tracker().StopTrackingObjectWithNoReference(plugin_var); |
+ EXPECT_EQ(0, |
+ var_tracker().GetTrackedWithNoReferenceCountForObject(plugin_var)); |
+ EXPECT_EQ(0u, sink().message_count()); |
// Now free via the refcount, this should delete it. |
- tracker_.Release(plugin_var); |
- EXPECT_EQ(-1, tracker_.GetRefCountForObject(plugin_var)); |
+ var_tracker().Release(plugin_var); |
+ EXPECT_EQ(-1, var_tracker().GetRefCountForObject(plugin_var)); |
EXPECT_EQ(host_object.value.as_id, GetObjectIDForUniqueReleaseObject()); |
} |
@@ -158,18 +161,24 @@ |
PP_Var host_object = MakeObject(12345); |
// Receive a tracked object twice. |
- PP_Var plugin_var = tracker_.TrackObjectWithNoReference(host_object, &sink_); |
- EXPECT_EQ(1, tracker_.GetTrackedWithNoReferenceCountForObject(plugin_var)); |
- PP_Var plugin_var2 = tracker_.TrackObjectWithNoReference(host_object, &sink_); |
+ PP_Var plugin_var = var_tracker().TrackObjectWithNoReference( |
+ host_object, &sink()); |
+ EXPECT_EQ(1, |
+ var_tracker().GetTrackedWithNoReferenceCountForObject(plugin_var)); |
+ PP_Var plugin_var2 = var_tracker().TrackObjectWithNoReference(host_object, |
+ &sink()); |
EXPECT_EQ(plugin_var.value.as_id, plugin_var2.value.as_id); |
- EXPECT_EQ(0, tracker_.GetRefCountForObject(plugin_var)); |
- EXPECT_EQ(2, tracker_.GetTrackedWithNoReferenceCountForObject(plugin_var)); |
+ EXPECT_EQ(0, var_tracker().GetRefCountForObject(plugin_var)); |
+ EXPECT_EQ(2, |
+ var_tracker().GetTrackedWithNoReferenceCountForObject(plugin_var)); |
// Now release those tracked items, the reference should be freed. |
- tracker_.StopTrackingObjectWithNoReference(plugin_var); |
- EXPECT_EQ(1, tracker_.GetTrackedWithNoReferenceCountForObject(plugin_var)); |
- tracker_.StopTrackingObjectWithNoReference(plugin_var); |
- EXPECT_EQ(-1, tracker_.GetTrackedWithNoReferenceCountForObject(plugin_var)); |
+ var_tracker().StopTrackingObjectWithNoReference(plugin_var); |
+ EXPECT_EQ(1, |
+ var_tracker().GetTrackedWithNoReferenceCountForObject(plugin_var)); |
+ var_tracker().StopTrackingObjectWithNoReference(plugin_var); |
+ EXPECT_EQ(-1, |
+ var_tracker().GetTrackedWithNoReferenceCountForObject(plugin_var)); |
} |
} // namespace proxy |