root/chrome/browser/extensions/api/messaging/extension_message_port.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_EXTENSIONS_API_MESSAGING_EXTENSION_MESSAGE_PORT_H_
#define CHROME_BROWSER_EXTENSIONS_API_MESSAGING_EXTENSION_MESSAGE_PORT_H_

#include "chrome/browser/extensions/api/messaging/message_service.h"

class GURL;

namespace content {
class RenderProcessHost;
}  // namespace content

namespace extensions {

// A port that manages communication with an extension.
class ExtensionMessagePort : public MessageService::MessagePort {
 public:
  ExtensionMessagePort(content::RenderProcessHost* process,
                       int routing_id,
                       const std::string& extension_id);
  virtual void DispatchOnConnect(
      int dest_port_id,
      const std::string& channel_name,
      const base::DictionaryValue& source_tab,
      const std::string& source_extension_id,
      const std::string& target_extension_id,
      const GURL& source_url,
      const std::string& tls_channel_id) OVERRIDE;
  virtual void DispatchOnDisconnect(int source_port_id,
                                    const std::string& error_message) OVERRIDE;
  virtual void DispatchOnMessage(const Message& message,
                                 int target_port_id) OVERRIDE;
  virtual void IncrementLazyKeepaliveCount() OVERRIDE;
  virtual void DecrementLazyKeepaliveCount() OVERRIDE;
  virtual content::RenderProcessHost* GetRenderProcessHost() OVERRIDE;

 private:
  content::RenderProcessHost* process_;
  int routing_id_;
  std::string extension_id_;
  void* background_host_ptr_;  // used in IncrementLazyKeepaliveCount
};

}  // namespace extensions

#endif  // CHROME_BROWSER_EXTENSIONS_API_MESSAGING_EXTENSION_MESSAGE_PORT_H_

/* [<][>][^][v][top][bottom][index][help] */