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

Unified Diff: media/base/bind_to_loop_unittest.cc

Issue 11092054: Teach BindToLoop to create callbacks that accept scoped parameters. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: xhwang CR Created 8 years, 2 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 | « media/base/bind_to_loop.h.pump ('k') | webkit/media/webmediaplayer_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/bind_to_loop_unittest.cc
diff --git a/media/base/bind_to_loop_unittest.cc b/media/base/bind_to_loop_unittest.cc
index fd9c93c201ce02e3922b3bd961167625fd2597e6..b1732ebffc12ef32af1e5a214b2b869a4ca69f69 100644
--- a/media/base/bind_to_loop_unittest.cc
+++ b/media/base/bind_to_loop_unittest.cc
@@ -18,6 +18,10 @@ void BoundBoolSetFromScopedPtr(bool* var, scoped_ptr<bool> val) {
*var = *val;
}
+void BoundBoolSetFromScopedArray(bool* var, scoped_array<bool> val) {
+ *var = val[0];
+}
+
void BoundBoolSetFromConstRef(bool* var, const bool& val) {
*var = val;
}
@@ -59,7 +63,7 @@ TEST_F(BindToLoopTest, Bool) {
EXPECT_TRUE(bool_var);
}
-TEST_F(BindToLoopTest, ScopedPtrBool) {
+TEST_F(BindToLoopTest, BoundScopedPtrBool) {
bool bool_val = false;
scoped_ptr<bool> scoped_ptr_bool(new bool(true));
base::Closure cb = BindToLoop(proxy_, base::Bind(
@@ -70,6 +74,42 @@ TEST_F(BindToLoopTest, ScopedPtrBool) {
EXPECT_TRUE(bool_val);
}
+TEST_F(BindToLoopTest, PassedScopedPtrBool) {
+ bool bool_val = false;
+ scoped_ptr<bool> scoped_ptr_bool(new bool(true));
+ base::Callback<void(scoped_ptr<bool>)> cb = BindToLoop(proxy_, base::Bind(
+ &BoundBoolSetFromScopedPtr, &bool_val));
+ cb.Run(scoped_ptr_bool.Pass());
+ EXPECT_FALSE(bool_val);
+ loop_.RunUntilIdle();
+ EXPECT_TRUE(bool_val);
+}
+
+TEST_F(BindToLoopTest, BoundScopedArrayBool) {
+ bool bool_val = false;
+ scoped_array<bool> scoped_array_bool(new bool[1]);
+ scoped_array_bool[0] = true;
+ base::Closure cb = BindToLoop(proxy_, base::Bind(
+ &BoundBoolSetFromScopedArray, &bool_val,
+ base::Passed(&scoped_array_bool)));
+ cb.Run();
+ EXPECT_FALSE(bool_val);
+ loop_.RunUntilIdle();
+ EXPECT_TRUE(bool_val);
+}
+
+TEST_F(BindToLoopTest, PassedScopedArrayBool) {
+ bool bool_val = false;
+ scoped_array<bool> scoped_array_bool(new bool[1]);
+ scoped_array_bool[0] = true;
+ base::Callback<void(scoped_array<bool>)> cb = BindToLoop(proxy_, base::Bind(
+ &BoundBoolSetFromScopedArray, &bool_val));
+ cb.Run(scoped_array_bool.Pass());
+ EXPECT_FALSE(bool_val);
+ loop_.RunUntilIdle();
+ EXPECT_TRUE(bool_val);
+}
+
TEST_F(BindToLoopTest, BoolConstRef) {
bool bool_var = false;
bool true_var = true;
« no previous file with comments | « media/base/bind_to_loop.h.pump ('k') | webkit/media/webmediaplayer_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698