Index: mojo/common/common_custom_types_unittest.cc |
diff --git a/mojo/common/common_custom_types_unittest.cc b/mojo/common/common_custom_types_unittest.cc |
index fe6bb5da73a6a22aa1649ccfa678c6ffd91942ae..04ef5fea37b9842fcde50dee3690fcd4712bc536 100644 |
--- a/mojo/common/common_custom_types_unittest.cc |
+++ b/mojo/common/common_custom_types_unittest.cc |
@@ -40,16 +40,37 @@ struct BounceTestTraits<base::ListValue> { |
}; |
template <typename T> |
+struct PassTraits { |
+ using Type = const T&; |
+}; |
+ |
+template <> |
+struct PassTraits<base::Time> { |
+ using Type = base::Time; |
+}; |
+ |
+template <> |
+struct PassTraits<base::TimeDelta> { |
+ using Type = base::TimeDelta; |
+}; |
+ |
+template <> |
+struct PassTraits<base::TimeTicks> { |
+ using Type = base::TimeTicks; |
+}; |
+ |
+template <typename T> |
void DoExpectResponse(T* expected_value, |
const base::Closure& closure, |
- const T& value) { |
+ typename PassTraits<T>::Type value) { |
BounceTestTraits<T>::ExpectEquality(*expected_value, value); |
closure.Run(); |
} |
template <typename T> |
-base::Callback<void(const T&)> ExpectResponse(T* expected_value, |
- const base::Closure& closure) { |
+base::Callback<void(typename PassTraits<T>::Type)> ExpectResponse( |
+ T* expected_value, |
+ const base::Closure& closure) { |
return base::Bind(&DoExpectResponse<T>, expected_value, closure); |
} |
@@ -74,18 +95,17 @@ class TestTimeImpl : public TestTime { |
: binding_(this, std::move(request)) {} |
// TestTime implementation: |
- void BounceTime(const base::Time& in, |
- const BounceTimeCallback& callback) override { |
+ void BounceTime(base::Time in, const BounceTimeCallback& callback) override { |
callback.Run(in); |
} |
- void BounceTimeDelta(const base::TimeDelta& in, |
- const BounceTimeDeltaCallback& callback) override { |
+ void BounceTimeDelta(base::TimeDelta in, |
+ const BounceTimeDeltaCallback& callback) override { |
callback.Run(in); |
} |
- void BounceTimeTicks(const base::TimeTicks& in, |
- const BounceTimeTicksCallback& callback) override { |
+ void BounceTimeTicks(base::TimeTicks in, |
+ const BounceTimeTicksCallback& callback) override { |
callback.Run(in); |
} |