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.
5 #ifndef CHROME_RENDERER_EXTENSIONS_MESSAGING_BINDINGS_H_
6 #define CHROME_RENDERER_EXTENSIONS_MESSAGING_BINDINGS_H_
10 #include "chrome/renderer/extensions/chrome_v8_context_set.h"
13 class DictionaryValue
;
24 namespace extensions
{
25 class ChromeV8Extension
;
29 // Manually implements JavaScript bindings for extension messaging.
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
34 class MessagingBindings
{
36 // Creates an instance of the extension.
37 static ChromeV8Extension
* Get(Dispatcher
* dispatcher
,
38 ChromeV8Context
* context
);
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
,
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
);
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
,
60 const Message
& message
,
61 content::RenderView
* restrict_to_render_view
);
63 // Dispatches the onDisconnect event in response to the channel being closed.
64 static void DispatchOnDisconnect(
65 const ChromeV8ContextSet::ContextSet
& context_set
,
67 const std::string
& error_message
,
68 content::RenderView
* restrict_to_render_view
);
71 } // namespace extensions
73 #endif // CHROME_RENDERER_EXTENSIONS_MESSAGING_BINDINGS_H_