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