Home | History | Annotate | Download | only in extensions
      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_MESSAGE_HANDLER_H_
      6 #define CHROME_BROWSER_EXTENSIONS_MESSAGE_HANDLER_H_
      7 
      8 #include <string>
      9 
     10 #include "content/public/browser/render_view_host_observer.h"
     11 
     12 namespace extensions {
     13 
     14 // Filters and dispatches extension-related IPC messages that arrive from
     15 // renderers. There is one of these objects for each RenderViewHost in Chrome.
     16 // Contrast this with extensions::TabHelper, which is only created for
     17 // WebContents.
     18 //
     19 // TODO(aa): Handling of content script messaging should be able to move to EFD
     20 // once there is an EFD for every RVHD where extension code can run. Then we
     21 // could eliminate this class. Right now, we don't end up with an EFD for tab
     22 // contents unless that tab contents is hosting chrome-extension:// URLs. That
     23 // still leaves content scripts. See also: crbug.com/80307.
     24 class MessageHandler : public content::RenderViewHostObserver {
     25  public:
     26   // |sender| is guaranteed to outlive this object.
     27   explicit MessageHandler(content::RenderViewHost* render_view_host);
     28   virtual ~MessageHandler();
     29 
     30   // RenderViewHostObserver overrides.
     31   virtual void RenderViewHostInitialized() OVERRIDE;
     32   virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
     33 
     34  private:
     35   // Message handlers.
     36   void OnPostMessage(int port_id, const std::string& message);
     37 
     38   DISALLOW_COPY_AND_ASSIGN(MessageHandler);
     39 };
     40 
     41 }  // namespace extensions
     42 
     43 #endif  // CHROME_BROWSER_EXTENSIONS_MESSAGE_HANDLER_H_
     44