Upstreaming browser/ui/uikit_ui_util from iOS.
[chromium-blink-merge.git] / ipc / attachment_broker_privileged.h
blob52befc45196109fdb2269ca6201dec671e50bec8
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
3 // found in the LICENSE file.
5 #ifndef IPC_ATTACHMENT_BROKER_PRIVILEGED_H_
6 #define IPC_ATTACHMENT_BROKER_PRIVILEGED_H_
8 #include <vector>
10 #include "ipc/attachment_broker.h"
11 #include "ipc/ipc_export.h"
13 namespace IPC {
15 class Channel;
17 // This abstract subclass of AttachmentBroker is intended for use in a
18 // privileged process . When unprivileged processes want to send attachments,
19 // the attachments get routed through the privileged process, and more
20 // specifically, an instance of this class.
21 class IPC_EXPORT AttachmentBrokerPrivileged : public IPC::AttachmentBroker {
22 public:
23 AttachmentBrokerPrivileged();
24 ~AttachmentBrokerPrivileged() override;
26 // Each unprivileged process should have one IPC channel on which it
27 // communicates attachment information with the broker process. In the broker
28 // process, these channels must be registered and deregistered with the
29 // Attachment Broker as they are created and destroyed.
30 void RegisterCommunicationChannel(Channel* channel);
31 void DeregisterCommunicationChannel(Channel* channel);
33 protected:
34 // Returns nullptr if no channel is found.
35 Channel* GetChannelWithProcessId(base::ProcessId id);
37 private:
38 std::vector<Channel*> channels_;
39 DISALLOW_COPY_AND_ASSIGN(AttachmentBrokerPrivileged);
42 } // namespace IPC
44 #endif // IPC_ATTACHMENT_BROKER_PRIVILEGED_H_