| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (C) 2009-2010 Google Inc. All rights reserved. | 2  * Copyright (C) 2009-2010 Google Inc. All rights reserved. | 
| 3  * | 3  * | 
| 4  * Redistribution and use in source and binary forms, with or without | 4  * Redistribution and use in source and binary forms, with or without | 
| 5  * modification, are permitted provided that the following conditions are | 5  * modification, are permitted provided that the following conditions are | 
| 6  * met: | 6  * met: | 
| 7  * | 7  * | 
| 8  *     * Redistributions of source code must retain the above copyright | 8  *     * Redistributions of source code must retain the above copyright | 
| 9  * notice, this list of conditions and the following disclaimer. | 9  * notice, this list of conditions and the following disclaimer. | 
| 10  *     * Redistributions in binary form must reproduce the above | 10  *     * Redistributions in binary form must reproduce the above | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
| 27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
| 28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
| 29  */ | 29  */ | 
| 30 | 30 | 
| 31 #ifndef CrossThreadTask_h | 31 #ifndef CrossThreadTask_h | 
| 32 #define CrossThreadTask_h | 32 #define CrossThreadTask_h | 
| 33 | 33 | 
| 34 #include "core/dom/ExecutionContext.h" | 34 #include "core/dom/ExecutionContext.h" | 
| 35 #include "core/dom/ExecutionContextTask.h" | 35 #include "core/dom/ExecutionContextTask.h" | 
| 36 #include "platform/ThreadSafeFunctional.h" | 36 #include "platform/ThreadSafeFunctional.h" | 
| 37 #include "wtf/PassOwnPtr.h" |  | 
| 38 #include <type_traits> | 37 #include <type_traits> | 
| 39 | 38 | 
| 40 namespace blink { | 39 namespace blink { | 
| 41 | 40 | 
| 42 // createCrossThreadTask(...) is ExecutionContextTask version of | 41 // createCrossThreadTask(...) is ExecutionContextTask version of | 
| 43 // threadSafeBind(). | 42 // threadSafeBind(). | 
| 44 // Using WTF::bind() directly is not thread-safe due to temporary objects, see | 43 // Using WTF::bind() directly is not thread-safe due to temporary objects, see | 
| 45 // https://crbug.com/390851 for details. | 44 // https://crbug.com/390851 for details. | 
| 46 // | 45 // | 
| 47 // Example: | 46 // Example: | 
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 95 template<typename FunctionType, typename... P, | 94 template<typename FunctionType, typename... P, | 
| 96     typename RETTYPE = std::unique_ptr<ExecutionContextTask>, size_t PS = sizeof
     ...(P), size_t MPS = WTF::FunctionWrapper<FunctionType>::numberOfArguments> | 95     typename RETTYPE = std::unique_ptr<ExecutionContextTask>, size_t PS = sizeof
     ...(P), size_t MPS = WTF::FunctionWrapper<FunctionType>::numberOfArguments> | 
| 97 typename std::enable_if<PS == MPS, RETTYPE>::type createCrossThreadTask(Function
     Type function, P&&... parameters) | 96 typename std::enable_if<PS == MPS, RETTYPE>::type createCrossThreadTask(Function
     Type function, P&&... parameters) | 
| 98 { | 97 { | 
| 99     return internal::createCallClosureTask(threadSafeBind(function, std::forward
     <P>(parameters)...)); | 98     return internal::createCallClosureTask(threadSafeBind(function, std::forward
     <P>(parameters)...)); | 
| 100 } | 99 } | 
| 101 | 100 | 
| 102 } // namespace blink | 101 } // namespace blink | 
| 103 | 102 | 
| 104 #endif // CrossThreadTask_h | 103 #endif // CrossThreadTask_h | 
| OLD | NEW | 
|---|