- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / renderer / extensions / messaging_bindings.h
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 struct Message;
28
29 // Manually implements JavaScript bindings for extension messaging.
30 //
31 // TODO(aa): This should all get re-implemented using SchemaGeneratedBindings.
32 // If anything needs to be manual for some reason, it should be implemented in
33 // its own class.
34 class MessagingBindings {
35  public:
36   // Creates an instance of the extension.
37   static ChromeV8Extension* Get(Dispatcher* dispatcher,
38                                 ChromeV8Context* context);
39
40   // Dispatches the onConnect content script messaging event to some contexts
41   // in |contexts|. If |restrict_to_render_view| is specified, only contexts in
42   // that render view will receive the message.
43   static void DispatchOnConnect(
44       const ChromeV8ContextSet::ContextSet& contexts,
45       int target_port_id,
46       const std::string& channel_name,
47       const base::DictionaryValue& source_tab,
48       const std::string& source_extension_id,
49       const std::string& target_extension_id,
50       const GURL& source_url,
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(
58       const ChromeV8ContextSet::ContextSet& context_set,
59       int target_port_id,
60       const Message& message,
61       content::RenderView* restrict_to_render_view);
62
63   // Dispatches the onDisconnect event in response to the channel being closed.
64   static void DispatchOnDisconnect(
65       const ChromeV8ContextSet::ContextSet& context_set,
66       int port_id,
67       const std::string& error_message,
68       content::RenderView* restrict_to_render_view);
69 };
70
71 }  // namespace extensions
72
73 #endif  // CHROME_RENDERER_EXTENSIONS_MESSAGING_BINDINGS_H_