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