Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(801)

Unified Diff: ppapi/proxy/plugin_var_tracker_unittest.cc

Issue 6334016: Refactor PPAPI proxy resource handling to maintain which host they came from,... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ppapi/proxy/plugin_var_tracker.cc ('k') | ppapi/proxy/ppapi_messages_internal.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « ppapi/proxy/plugin_var_tracker.cc ('k') | ppapi/proxy/ppapi_messages_internal.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698