// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_TEST_UTIL_H_ #define CHROME_BROWSER_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_TEST_UTIL_H_ #include #include "base/bind.h" #include "base/callback.h" #include "testing/gtest/include/gtest/gtest.h" namespace base { class RunLoop; } namespace storage { class FileSystemURL; } namespace sync_file_system { template struct TypeTraits { typedef T ParamType; }; template <> struct TypeTraits { typedef const storage::FileSystemURL& ParamType; }; template struct TypeTraits > { typedef const std::vector& ParamType; }; template void ReceiveResult2(bool* done, Arg1* arg1_out, Arg2* arg2_out, Param1 arg1, Param2 arg2) { EXPECT_FALSE(*done); *done = true; *arg1_out = base::internal::CallbackForward(arg1); *arg2_out = base::internal::CallbackForward(arg2); } template void AssignAndQuit(base::RunLoop* run_loop, R* result_out, R result); template base::Callback AssignAndQuitCallback(base::RunLoop* run_loop, R* result); template base::Callback::ParamType)> CreateResultReceiver(Arg* arg_out); template base::Callback::ParamType, typename TypeTraits::ParamType)> CreateResultReceiver(Arg1* arg1_out, Arg2* arg2_out) { typedef typename TypeTraits::ParamType Param1; typedef typename TypeTraits::ParamType Param2; return base::Bind(&ReceiveResult2, base::Owned(new bool(false)), arg1_out, arg2_out); } } // namespace sync_file_system #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_TEST_UTIL_H_