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

Side by Side Diff: ipc/attachment_broker_privileged_mac.h

Issue 1473883002: ipc: Minor fixes to AttachmentBrokerPrivilegedMac. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Check for nullptr. Created 5 years 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 | « ipc/attachment_broker_privileged.h ('k') | ipc/attachment_broker_privileged_mac.cc » ('j') | 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 IPC_ATTACHMENT_BROKER_PRIVILEGED_MAC_H_ 5 #ifndef IPC_ATTACHMENT_BROKER_PRIVILEGED_MAC_H_
6 #define IPC_ATTACHMENT_BROKER_PRIVILEGED_MAC_H_ 6 #define IPC_ATTACHMENT_BROKER_PRIVILEGED_MAC_H_
7 7
8 #include <mach/mach.h> 8 #include <mach/mach.h>
9 9
10 #include <map> 10 #include <map>
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 : public AttachmentBrokerPrivileged, 57 : public AttachmentBrokerPrivileged,
58 public base::PortProvider::Observer { 58 public base::PortProvider::Observer {
59 public: 59 public:
60 explicit AttachmentBrokerPrivilegedMac(base::PortProvider* port_provider); 60 explicit AttachmentBrokerPrivilegedMac(base::PortProvider* port_provider);
61 ~AttachmentBrokerPrivilegedMac() override; 61 ~AttachmentBrokerPrivilegedMac() override;
62 62
63 // IPC::AttachmentBroker overrides. 63 // IPC::AttachmentBroker overrides.
64 bool SendAttachmentToProcess( 64 bool SendAttachmentToProcess(
65 const scoped_refptr<IPC::BrokerableAttachment>& attachment, 65 const scoped_refptr<IPC::BrokerableAttachment>& attachment,
66 base::ProcessId destination_process) override; 66 base::ProcessId destination_process) override;
67 void DeregisterCommunicationChannel(Endpoint* endpoint) override;
67 68
68 // IPC::Listener overrides. 69 // IPC::Listener overrides.
69 bool OnMessageReceived(const Message& message) override; 70 bool OnMessageReceived(const Message& message) override;
70 71
71 // base::PortProvider::Observer override. 72 // base::PortProvider::Observer override.
72 void OnReceivedTaskPort(base::ProcessHandle process) override; 73 void OnReceivedTaskPort(base::ProcessHandle process) override;
73 74
74 private: 75 private:
75 FRIEND_TEST_ALL_PREFIXES(AttachmentBrokerPrivilegedMacMultiProcessTest, 76 FRIEND_TEST_ALL_PREFIXES(AttachmentBrokerPrivilegedMacMultiProcessTest,
76 InsertRight); 77 InsertRight);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 // |port_to_insert| must be a send right in the current task's name space. 144 // |port_to_insert| must be a send right in the current task's name space.
144 // Creates an intermediate Mach port in |pid| and sends |port_to_insert| as a 145 // Creates an intermediate Mach port in |pid| and sends |port_to_insert| as a
145 // mach_msg to the intermediate Mach port. 146 // mach_msg to the intermediate Mach port.
146 // Returns the intermediate port on success, and MACH_PORT_NULL on failure. 147 // Returns the intermediate port on success, and MACH_PORT_NULL on failure.
147 // This method takes ownership of |port_to_insert|. On success, ownership is 148 // This method takes ownership of |port_to_insert|. On success, ownership is
148 // passed to the intermediate Mach port. 149 // passed to the intermediate Mach port.
149 mach_port_name_t CreateIntermediateMachPort( 150 mach_port_name_t CreateIntermediateMachPort(
150 mach_port_t task_port, 151 mach_port_t task_port,
151 base::mac::ScopedMachSendRight port_to_insert); 152 base::mac::ScopedMachSendRight port_to_insert);
152 153
153 // Acquire a send right to a named right in |pid|.
154 // Returns MACH_PORT_NULL on error.
155 base::mac::ScopedMachSendRight AcquireSendRight(base::ProcessId pid,
156 mach_port_name_t named_right);
157
158 // Extracts a copy of the send right to |named_right| from |task_port|. 154 // Extracts a copy of the send right to |named_right| from |task_port|.
159 // Returns MACH_PORT_NULL on error. 155 // Returns MACH_PORT_NULL on error.
160 base::mac::ScopedMachSendRight ExtractNamedRight( 156 base::mac::ScopedMachSendRight ExtractNamedRight(
161 mach_port_t task_port, 157 mach_port_t task_port,
162 mach_port_name_t named_right); 158 mach_port_name_t named_right);
163 159
164 // Copies an existing |wire_format|, but substitutes in a different mach port. 160 // Copies an existing |wire_format|, but substitutes in a different mach port.
165 MachPortWireFormat CopyWireFormat(const MachPortWireFormat& wire_format, 161 MachPortWireFormat CopyWireFormat(const MachPortWireFormat& wire_format,
166 uint32_t mach_port); 162 uint32_t mach_port);
167 163
168 // |wire_format.destination_process| must be this process. 164 // |wire_format.destination_process| must be this process.
169 // |wire_format.mach_port| must be the final Mach port. 165 // |wire_format.mach_port| must be the final Mach port.
170 // Consumes a reference to |wire_format.mach_port|, as ownership is implicitly 166 // Consumes a reference to |wire_format.mach_port|, as ownership is implicitly
171 // passed to the consumer of the Chrome IPC message. 167 // passed to the consumer of the Chrome IPC message.
172 // Makes an attachment, queues it, and notifies the observers. 168 // Makes an attachment, queues it, and notifies the observers.
173 void RoutePrecursorToSelf(AttachmentPrecursor* precursor); 169 void RoutePrecursorToSelf(AttachmentPrecursor* precursor);
174 170
175 // |wire_format.destination_process| must be another process. 171 // |wire_format.destination_process| must be another process.
176 // |wire_format.mach_port| must be the intermediate Mach port. 172 // |wire_format.mach_port| must be the intermediate Mach port.
177 // Ownership of |wire_format.mach_port| is implicitly passed to the process 173 // Ownership of |wire_format.mach_port| is implicitly passed to the process
178 // that receives the Chrome IPC message. 174 // that receives the Chrome IPC message.
179 void RouteWireFormatToAnother(const MachPortWireFormat& wire_format); 175 // Returns |false| on irrecoverable error.
176 bool RouteWireFormatToAnother(const MachPortWireFormat& wire_format);
180 177
181 // Atempts to broker all precursors whose destination is |pid|. Has no effect 178 // Atempts to broker all precursors whose destination is |pid|. Has no effect
182 // if |port_provider_| does not have the task port for |pid|. 179 // if |port_provider_| does not have the task port for |pid|.
183 void SendPrecursorsForProcess(base::ProcessId pid); 180 void SendPrecursorsForProcess(base::ProcessId pid);
184 181
185 // Brokers a single precursor into the task represented by |task_port|. 182 // Brokers a single precursor into the task represented by |task_port|.
186 void SendPrecursor(AttachmentPrecursor* precursor, mach_port_t task_port); 183 // Returns |false| on irrecoverable error.
184 bool SendPrecursor(AttachmentPrecursor* precursor, mach_port_t task_port);
187 185
188 // Add a precursor to |precursors_|. Takes ownership of |port|. 186 // Add a precursor to |precursors_|. Takes ownership of |port|.
189 void AddPrecursor(base::ProcessId pid, 187 void AddPrecursor(base::ProcessId pid,
190 base::mac::ScopedMachSendRight port, 188 base::mac::ScopedMachSendRight port,
191 const BrokerableAttachment::AttachmentId& id); 189 const BrokerableAttachment::AttachmentId& id);
192 190
193 // Atempts to process all extractors whose source is |pid|. Has no effect 191 // Atempts to process all extractors whose source is |pid|. Has no effect
194 // if |port_provider_| does not have the task port for |pid|. 192 // if |port_provider_| does not have the task port for |pid|.
195 void ProcessExtractorsForProcess(base::ProcessId pid); 193 void ProcessExtractorsForProcess(base::ProcessId pid);
196 194
(...skipping 19 matching lines...) Expand all
216 // processed. 214 // processed.
217 std::map<base::ProcessId, ScopedVector<AttachmentExtractor>*> extractors_; 215 std::map<base::ProcessId, ScopedVector<AttachmentExtractor>*> extractors_;
218 base::Lock extractors_lock_; 216 base::Lock extractors_lock_;
219 217
220 DISALLOW_COPY_AND_ASSIGN(AttachmentBrokerPrivilegedMac); 218 DISALLOW_COPY_AND_ASSIGN(AttachmentBrokerPrivilegedMac);
221 }; 219 };
222 220
223 } // namespace IPC 221 } // namespace IPC
224 222
225 #endif // IPC_ATTACHMENT_BROKER_PRIVILEGED_MAC_H_ 223 #endif // IPC_ATTACHMENT_BROKER_PRIVILEGED_MAC_H_
OLDNEW
« no previous file with comments | « ipc/attachment_broker_privileged.h ('k') | ipc/attachment_broker_privileged_mac.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698