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

Side by Side Diff: mojo/public/cpp/bindings/associated_group.h

Issue 2500263003: Port messages sent by WebIDBCursorImpl to Mojo. (Closed)
Patch Set: Add missing include. Created 4 years, 1 month 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
« no previous file with comments | « content/renderer/renderer_blink_platform_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_ASSOCIATED_GROUP_H_ 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_ASSOCIATED_GROUP_H_
6 #define MOJO_PUBLIC_CPP_BINDINGS_ASSOCIATED_GROUP_H_ 6 #define MOJO_PUBLIC_CPP_BINDINGS_ASSOCIATED_GROUP_H_
7 7
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
11 #include "mojo/public/cpp/bindings/associated_interface_ptr_info.h" 11 #include "mojo/public/cpp/bindings/associated_interface_ptr_info.h"
12 #include "mojo/public/cpp/bindings/associated_interface_request.h" 12 #include "mojo/public/cpp/bindings/associated_interface_request.h"
13 #include "mojo/public/cpp/bindings/bindings_export.h" 13 #include "mojo/public/cpp/bindings/bindings_export.h"
14 #include "mojo/public/cpp/bindings/lib/multiplex_router.h"
14 #include "mojo/public/cpp/bindings/scoped_interface_endpoint_handle.h" 15 #include "mojo/public/cpp/bindings/scoped_interface_endpoint_handle.h"
15 16
16 namespace mojo { 17 namespace mojo {
17 18
18 class AssociatedGroupController; 19 class AssociatedGroupController;
19 20
20 // AssociatedGroup refers to all the interface endpoints running at one end of a 21 // AssociatedGroup refers to all the interface endpoints running at one end of a
21 // message pipe. It is used to create associated interfaces for that message 22 // message pipe. It is used to create associated interfaces for that message
22 // pipe. 23 // pipe.
23 // It is thread safe and cheap to make copies. 24 // It is thread safe and cheap to make copies.
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 private: 80 private:
80 friend class AssociatedGroupController; 81 friend class AssociatedGroupController;
81 82
82 void CreateEndpointHandlePair( 83 void CreateEndpointHandlePair(
83 ScopedInterfaceEndpointHandle* local_endpoint, 84 ScopedInterfaceEndpointHandle* local_endpoint,
84 ScopedInterfaceEndpointHandle* remote_endpoint); 85 ScopedInterfaceEndpointHandle* remote_endpoint);
85 86
86 scoped_refptr<AssociatedGroupController> controller_; 87 scoped_refptr<AssociatedGroupController> controller_;
87 }; 88 };
88 89
90 // Creates an associated interface proxy in its own AssociatedGroup.
91 template <typename Interface>
92 AssociatedInterfaceRequest<Interface> GetProxyForTesting(
yzshen1 2016/11/15 17:39:50 Does it make sense to: - move this function to ass
Reilly Grant (use Gerrit) 2016/11/15 17:43:11 I tried putting it in associated_interface_ptr_inf
yzshen1 2016/11/15 17:59:35 I meant associated_interface_ptr.h (instead of ass
93 AssociatedInterfacePtrInfo<Interface>* ptr_info,
94 scoped_refptr<base::SingleThreadTaskRunner> runner =
95 base::ThreadTaskRunnerHandle::Get()) {
96 MessagePipe pipe;
97 using internal::MultiplexRouter;
98 scoped_refptr<MultiplexRouter> router0 = new MultiplexRouter(
99 std::move(pipe.handle0), MultiplexRouter::MULTI_INTERFACE, true, runner);
100 scoped_refptr<MultiplexRouter> router1 = new MultiplexRouter(
101 std::move(pipe.handle1), MultiplexRouter::MULTI_INTERFACE, false, runner);
102
103 AssociatedInterfaceRequest<Interface> request;
104 router1->CreateAssociatedGroup()->CreateAssociatedInterface(
105 AssociatedGroup::WILL_PASS_PTR, ptr_info, &request);
106
107 // Emulate passing |ptr_info| across a pipe.
108 ScopedInterfaceEndpointHandle handle = ptr_info->PassHandle();
109 CHECK(!handle.is_local());
110 *ptr_info = AssociatedInterfacePtrInfo<Interface>(
111 router0->CreateLocalEndpointHandle(handle.release()),
112 ptr_info->version());
113
114 return request;
115 }
116
89 } // namespace mojo 117 } // namespace mojo
90 118
91 #endif // MOJO_PUBLIC_CPP_BINDINGS_ASSOCIATED_GROUP_H_ 119 #endif // MOJO_PUBLIC_CPP_BINDINGS_ASSOCIATED_GROUP_H_
OLDNEW
« no previous file with comments | « content/renderer/renderer_blink_platform_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698