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