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 10 class GURL; 11 12 namespace content { 13 class RenderProcessHost; 14 } // namespace content 15 16 namespace extensions { 17 18 // A port that manages communication with an extension. 19 class 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