| 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 | 
|  |