1 // Copyright 2014 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. 4 5 #ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_TEST_UTILS_H_ 6 #define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_TEST_UTILS_H_ 7 8 #include "base/bind.h" 9 #include "base/callback.h" 10 #include "content/public/browser/browser_thread.h" 11 12 namespace content { 13 14 template <typename Arg> 15 void ReceiveResult(BrowserThread::ID run_quit_thread, 16 const base::Closure& quit, 17 Arg* out, Arg actual) { 18 *out = actual; 19 if (!quit.is_null()) 20 BrowserThread::PostTask(run_quit_thread, FROM_HERE, quit); 21 } 22 23 template <typename Arg> base::Callback<void(Arg)> 24 CreateReceiver(BrowserThread::ID run_quit_thread, 25 const base::Closure& quit, Arg* out) { 26 return base::Bind(&ReceiveResult<Arg>, run_quit_thread, quit, out); 27 } 28 29 template <typename Arg> base::Callback<void(Arg)> 30 CreateReceiverOnCurrentThread(Arg* out) { 31 BrowserThread::ID id; 32 bool ret = BrowserThread::GetCurrentThreadIdentifier(&id); 33 DCHECK(ret); 34 return base::Bind(&ReceiveResult<Arg>, id, base::Closure(), out); 35 } 36 37 } // namespace content 38 39 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_TEST_UTILS_H_ 40