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_RENDERER_EXTENSIONS_MESSAGING_BINDINGS_H_
      6 #define CHROME_RENDERER_EXTENSIONS_MESSAGING_BINDINGS_H_
      7 
      8 #include <string>
      9 
     10 #include "chrome/renderer/extensions/chrome_v8_context_set.h"
     11 
     12 namespace base {
     13 class DictionaryValue;
     14 }
     15 
     16 namespace content {
     17 class RenderView;
     18 }
     19 
     20 namespace v8 {
     21 class Extension;
     22 }
     23 
     24 namespace extensions {
     25 class ChromeV8Extension;
     26 class Dispatcher;
     27 
     28 // Manually implements JavaScript bindings for extension messaging.
     29 //
     30 // TODO(aa): This should all get re-implemented using SchemaGeneratedBindings.
     31 // If anything needs to be manual for some reason, it should be implemented in
     32 // its own class.
     33 class MessagingBindings {
     34  public:
     35   // Creates an instance of the extension.
     36   static ChromeV8Extension* Get(Dispatcher* dispatcher,
     37                                 ChromeV8Context* context);
     38 
     39   // Dispatches the onConnect content script messaging event to some contexts
     40   // in |contexts|. If |restrict_to_render_view| is specified, only contexts in
     41   // that render view will receive the message.
     42   static void DispatchOnConnect(
     43       const ChromeV8ContextSet::ContextSet& contexts,
     44       int target_port_id,
     45       const std::string& channel_name,
     46       const base::DictionaryValue& source_tab,
     47       const std::string& source_extension_id,
     48       const std::string& target_extension_id,
     49       const GURL& source_url,
     50       content::RenderView* restrict_to_render_view);
     51 
     52   // Delivers a message sent using content script messaging to some of the
     53   // contexts in |bindings_context_set|. If |restrict_to_render_view| is
     54   // specified, only contexts in that render view will receive the message.
     55   static void DeliverMessage(
     56       const ChromeV8ContextSet::ContextSet& context_set,
     57       int target_port_id,
     58       const std::string& message,
     59       content::RenderView* restrict_to_render_view);
     60 
     61   // Dispatches the onDisconnect event in response to the channel being closed.
     62   static void DispatchOnDisconnect(
     63       const ChromeV8ContextSet::ContextSet& context_set,
     64       int port_id,
     65       const std::string& error_message,
     66       content::RenderView* restrict_to_render_view);
     67 };
     68 
     69 }  // namespace extensions
     70 
     71 #endif  // CHROME_RENDERER_EXTENSIONS_MESSAGING_BINDINGS_H_
     72