Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Side by Side Diff: chrome/renderer/extensions/extension_process_bindings.cc

Issue 155707: Changed the extension.connect() API not to broadcast to all tabs. Added a (Closed)
Patch Set: review comments Created 11 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/renderer/extensions/extension_process_bindings.h" 5 #include "chrome/renderer/extensions/extension_process_bindings.h"
6 6
7 #include "base/singleton.h" 7 #include "base/singleton.h"
8 #include "chrome/common/render_messages.h" 8 #include "chrome/common/render_messages.h"
9 #include "chrome/common/url_constants.h" 9 #include "chrome/common/url_constants.h"
10 #include "chrome/renderer/extensions/bindings_utils.h" 10 #include "chrome/renderer/extensions/bindings_utils.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 name_set->insert(names[i]); 61 name_set->insert(names[i]);
62 } 62 }
63 } 63 }
64 64
65 virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction( 65 virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction(
66 v8::Handle<v8::String> name) { 66 v8::Handle<v8::String> name) {
67 if (name->Equals(v8::String::New("GetViews"))) { 67 if (name->Equals(v8::String::New("GetViews"))) {
68 return v8::FunctionTemplate::New(GetViews); 68 return v8::FunctionTemplate::New(GetViews);
69 } else if (name->Equals(v8::String::New("GetNextRequestId"))) { 69 } else if (name->Equals(v8::String::New("GetNextRequestId"))) {
70 return v8::FunctionTemplate::New(GetNextRequestId); 70 return v8::FunctionTemplate::New(GetNextRequestId);
71 } else if (name->Equals(v8::String::New("OpenChannelToTab"))) {
72 return v8::FunctionTemplate::New(OpenChannelToTab);
71 } else if (name->Equals(v8::String::New("GetCurrentPageActions"))) { 73 } else if (name->Equals(v8::String::New("GetCurrentPageActions"))) {
72 return v8::FunctionTemplate::New(GetCurrentPageActions); 74 return v8::FunctionTemplate::New(GetCurrentPageActions);
73 } else if (name->Equals(v8::String::New("StartRequest"))) { 75 } else if (name->Equals(v8::String::New("StartRequest"))) {
74 return v8::FunctionTemplate::New(StartRequest); 76 return v8::FunctionTemplate::New(StartRequest);
75 } 77 }
76 78
77 return ExtensionBase::GetNativeFunction(name); 79 return ExtensionBase::GetNativeFunction(name);
78 } 80 }
79 81
80 private: 82 private:
(...skipping 22 matching lines...) Expand all
103 index++; 105 index++;
104 } 106 }
105 return views; 107 return views;
106 } 108 }
107 109
108 static v8::Handle<v8::Value> GetNextRequestId(const v8::Arguments& args) { 110 static v8::Handle<v8::Value> GetNextRequestId(const v8::Arguments& args) {
109 static int next_request_id = 0; 111 static int next_request_id = 0;
110 return v8::Integer::New(next_request_id++); 112 return v8::Integer::New(next_request_id++);
111 } 113 }
112 114
115 // Creates a new messaging channel to the tab with the given ID.
116 static v8::Handle<v8::Value> OpenChannelToTab(const v8::Arguments& args) {
117 // Get the current RenderView so that we can send a routed IPC message from
118 // the correct source.
119 RenderView* renderview = bindings_utils::GetRenderViewForCurrentContext();
120 if (!renderview)
121 return v8::Undefined();
122
123 if (args.Length() >= 3 && args[0]->IsInt32() && args[1]->IsString() &&
124 args[2]->IsString()) {
125 int tab_id = args[0]->Int32Value();
126 std::string extension_id = *v8::String::Utf8Value(args[1]->ToString());
127 std::string channel_name = *v8::String::Utf8Value(args[2]->ToString());
128 int port_id = -1;
129 renderview->Send(new ViewHostMsg_OpenChannelToTab(
130 renderview->routing_id(), tab_id, extension_id, channel_name,
131 &port_id));
132 return v8::Integer::New(port_id);
133 }
134 return v8::Undefined();
135 }
136
113 static v8::Handle<v8::Value> GetCurrentPageActions( 137 static v8::Handle<v8::Value> GetCurrentPageActions(
114 const v8::Arguments& args) { 138 const v8::Arguments& args) {
115 std::string extension_id = ExtensionIdFromCurrentContext(); 139 std::string extension_id = ExtensionIdFromCurrentContext();
116 PageActionIdMap* page_action_map = 140 PageActionIdMap* page_action_map =
117 GetPageActionMap(); 141 GetPageActionMap();
118 PageActionIdMap::const_iterator it = 142 PageActionIdMap::const_iterator it =
119 page_action_map->find(extension_id); 143 page_action_map->find(extension_id);
120 144
121 std::vector<std::string> page_actions; 145 std::vector<std::string> page_actions;
122 size_t size = 0; 146 size_t size = 0;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 const std::string& extension_id, 231 const std::string& extension_id,
208 const std::vector<std::string>& page_actions) { 232 const std::vector<std::string>& page_actions) {
209 PageActionIdMap& page_action_map = *GetPageActionMap(); 233 PageActionIdMap& page_action_map = *GetPageActionMap();
210 if (!page_actions.empty()) { 234 if (!page_actions.empty()) {
211 page_action_map[extension_id] = page_actions; 235 page_action_map[extension_id] = page_actions;
212 } else { 236 } else {
213 if (page_action_map.find(extension_id) != page_action_map.end()) 237 if (page_action_map.find(extension_id) != page_action_map.end())
214 page_action_map.erase(extension_id); 238 page_action_map.erase(extension_id);
215 } 239 }
216 } 240 }
OLDNEW
« no previous file with comments | « chrome/renderer/extensions/event_bindings.cc ('k') | chrome/renderer/extensions/renderer_extension_bindings.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698