1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/sync_file_system/sync_file_system_test_util.h"
7 #include "base/memory/scoped_ptr.h"
8 #include "base/run_loop.h"
9 #include "chrome/browser/sync_file_system/remote_file_sync_service.h"
10 #include "chrome/browser/sync_file_system/sync_status_code.h"
11 #include "content/public/test/test_utils.h"
12 #include "google_apis/drive/drive_api_error_codes.h"
14 using content::BrowserThread
;
16 namespace sync_file_system
{
18 namespace drive_backend
{
19 class MetadataDatabase
;
23 void AssignAndQuit(base::RunLoop
* run_loop
, R
* result_out
, R result
) {
30 template <typename R
> base::Callback
<void(R
)>
31 AssignAndQuitCallback(base::RunLoop
* run_loop
, R
* result
) {
32 return base::Bind(&AssignAndQuit
<R
>, run_loop
, base::Unretained(result
));
35 template <typename Arg
, typename Param
>
36 void ReceiveResult1(bool* done
, Arg
* arg_out
, Param arg
) {
39 *arg_out
= base::internal::CallbackForward(arg
);
42 template <typename Arg
>
43 base::Callback
<void(typename TypeTraits
<Arg
>::ParamType
)>
44 CreateResultReceiver(Arg
* arg_out
) {
45 typedef typename TypeTraits
<Arg
>::ParamType Param
;
46 return base::Bind(&ReceiveResult1
<Arg
, Param
>,
47 base::Owned(new bool(false)), arg_out
);
50 // Instantiate versions we know callers will need.
51 template base::Callback
<void(SyncStatusCode
)>
52 AssignAndQuitCallback(base::RunLoop
*, SyncStatusCode
*);
54 #define INSTANTIATE_RECEIVER(type) \
55 template base::Callback<void(type)> CreateResultReceiver(type*);
56 INSTANTIATE_RECEIVER(SyncStatusCode
);
57 INSTANTIATE_RECEIVER(google_apis::DriveApiErrorCode
);
58 INSTANTIATE_RECEIVER(scoped_ptr
<RemoteFileSyncService::OriginStatusMap
>);
59 #undef INSTANTIATE_RECEIVER
61 } // namespace sync_file_system