Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(860)

Side by Side Diff: third_party/WebKit/Source/platform/MojoHelper.h

Issue 1910373002: Create platform/mojo and move MojoHelper.h there (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase and add mojo/DEPS Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 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 MojoHelper_h
6 #define MojoHelper_h
7
8 #include "base/bind.h"
9 #include "mojo/public/cpp/bindings/callback.h"
10 #include "mojo/public/cpp/bindings/wtf_array.h"
11 #include "platform/heap/HeapAllocator.h"
12 #include <utility>
13
14 namespace blink {
15
16 namespace internal {
17
18 template <typename R, typename... Args>
19 R CallWTFFunction(Function<R(Args...)>* functor, Args... args)
20 {
21 return (*functor)(std::forward<Args>(args)...);
22 }
23
24 }
25
26 // Binds an instance of a class to its member function. Does not bind anything
27 // else. Provides limited access to base::Bind() function. base::Bind() could
28 // be dangerous if it's used across threads, so we don't want to allow general
29 // use of base::Bind(). See also "platform/ThreadSafeFunctional.h".
30 template <typename Class, typename ReturnType, typename... Args>
31 mojo::Callback<ReturnType(Args...)>
32 sameThreadBindForMojo(ReturnType (Class::*method)(Args...), Class* instance)
33 {
34 return base::Bind(method, base::Unretained(instance));
35 }
36
37 template <typename R, typename... Args>
38 base::Callback<R(Args...)> createBaseCallback(PassOwnPtr<Function<R(Args...)>> f unctor)
39 {
40 return base::Bind(&internal::CallWTFFunction<R, Args...>, base::Owned(functo r.leakPtr()));
41 }
42
43 } // namespace blink
44
45 namespace mojo {
46
47 // A |TypeConverter| that will create a |WTFArray<T>| containing a copy of the
48 // contents of a |blink::HeapVector<E>|, using |TypeConverter<T, E>| to copy
49 // each element. The returned array will always be non-null.
50 template <typename T, typename E>
51 struct TypeConverter<WTFArray<T>, blink::HeapVector<E>> {
52 static WTFArray<T> Convert(const blink::HeapVector<E>& input)
53 {
54 WTFArray<T> result(input.size());
55 for (size_t i = 0; i < input.size(); ++i)
56 result[i] = TypeConverter<T, E>::Convert(input[i]);
57 return std::move(result);
58 }
59 };
60
61 } // namespace mojo
62
63 #endif // MojoHelper_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/platform/DEPS ('k') | third_party/WebKit/Source/platform/blink_platform.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698