1// Copyright (c) 2012 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 CHROME_BROWSER_EXTENSIONS_API_MESSAGING_EXTENSION_MESSAGE_PORT_H_
6#define CHROME_BROWSER_EXTENSIONS_API_MESSAGING_EXTENSION_MESSAGE_PORT_H_
7
8#include "chrome/browser/extensions/api/messaging/message_service.h"
9
10class GURL;
11
12namespace content {
13class RenderProcessHost;
14}  // namespace content
15
16namespace extensions {
17
18// A port that manages communication with an extension.
19class ExtensionMessagePort : public MessageService::MessagePort {
20 public:
21  ExtensionMessagePort(content::RenderProcessHost* process,
22                       int routing_id,
23                       const std::string& extension_id);
24  virtual void DispatchOnConnect(
25      int dest_port_id,
26      const std::string& channel_name,
27      const base::DictionaryValue& source_tab,
28      const std::string& source_extension_id,
29      const std::string& target_extension_id,
30      const GURL& source_url,
31      const std::string& tls_channel_id) OVERRIDE;
32  virtual void DispatchOnDisconnect(int source_port_id,
33                                    const std::string& error_message) OVERRIDE;
34  virtual void DispatchOnMessage(const Message& message,
35                                 int target_port_id) OVERRIDE;
36  virtual void IncrementLazyKeepaliveCount() OVERRIDE;
37  virtual void DecrementLazyKeepaliveCount() OVERRIDE;
38  virtual content::RenderProcessHost* GetRenderProcessHost() OVERRIDE;
39
40 private:
41  content::RenderProcessHost* process_;
42  int routing_id_;
43  std::string extension_id_;
44  void* background_host_ptr_;  // used in IncrementLazyKeepaliveCount
45};
46
47}  // namespace extensions
48
49#endif  // CHROME_BROWSER_EXTENSIONS_API_MESSAGING_EXTENSION_MESSAGE_PORT_H_
50