native_message_port.h revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// Use of this source code is governed by a BSD-style license that can be
3436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// found in the LICENSE file.
4436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
5436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#ifndef CHROME_BROWSER_EXTENSIONS_API_MESSAGING_NATIVE_MESSAGE_PORT_H_
6436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define CHROME_BROWSER_EXTENSIONS_API_MESSAGING_NATIVE_MESSAGE_PORT_H_
7436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
8436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#include "chrome/browser/extensions/api/messaging/message_service.h"
9436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
10436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovnamespace extensions {
11436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovclass NativeMessageProcessHost;
12436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
13436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// A port that manages communication with a native application.
14436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovclass NativeMessagePort : public MessageService::MessagePort {
15436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov public:
16436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov  // Takes ownership of |native_process|.
17436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov  explicit NativeMessagePort(NativeMessageProcessHost* native_process);
18436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov  virtual ~NativeMessagePort();
19436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov  virtual void DispatchOnMessage(const std::string& message,
20436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                 int target_port_id) OVERRIDE;
21436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
22436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov private:
23436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov  NativeMessageProcessHost* native_process_;
24436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
25436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
26436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}  // namespace extensions
27436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
28436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif  // CHROME_BROWSER_EXTENSIONS_API_MESSAGING_NATIVE_MESSAGE_PORT_H_
29436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov