OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <map> | 7 #include <map> |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/command_line.h" | 12 #include "base/command_line.h" |
13 #include "base/json/json_reader.h" | 13 #include "base/json/json_reader.h" |
14 #include "base/lazy_instance.h" | 14 #include "base/lazy_instance.h" |
15 #include "base/scoped_ptr.h" | 15 #include "base/scoped_ptr.h" |
16 #include "base/string_number_conversions.h" | 16 #include "base/string_number_conversions.h" |
17 #include "base/string_util.h" | 17 #include "base/string_util.h" |
18 #include "chrome/common/extensions/extension.h" | 18 #include "chrome/common/extensions/extension.h" |
19 #include "chrome/common/extensions/extension_constants.h" | 19 #include "chrome/common/extensions/extension_constants.h" |
| 20 #include "chrome/common/extensions/extension_messages.h" |
20 #include "chrome/common/extensions/extension_set.h" | 21 #include "chrome/common/extensions/extension_set.h" |
21 #include "chrome/common/extensions/url_pattern.h" | 22 #include "chrome/common/extensions/url_pattern.h" |
22 #include "chrome/common/render_messages.h" | 23 #include "chrome/common/render_messages.h" |
23 #include "chrome/common/render_messages_params.h" | 24 #include "chrome/common/render_messages_params.h" |
24 #include "chrome/common/url_constants.h" | 25 #include "chrome/common/url_constants.h" |
25 #include "chrome/renderer/extensions/bindings_utils.h" | 26 #include "chrome/renderer/extensions/bindings_utils.h" |
26 #include "chrome/renderer/extensions/event_bindings.h" | 27 #include "chrome/renderer/extensions/event_bindings.h" |
27 #include "chrome/renderer/extensions/js_only_v8_extensions.h" | 28 #include "chrome/renderer/extensions/js_only_v8_extensions.h" |
28 #include "chrome/renderer/extensions/renderer_extension_bindings.h" | 29 #include "chrome/renderer/extensions/renderer_extension_bindings.h" |
29 #include "chrome/renderer/user_script_slave.h" | 30 #include "chrome/renderer/user_script_slave.h" |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
325 RenderView* renderview = bindings_utils::GetRenderViewForCurrentContext(); | 326 RenderView* renderview = bindings_utils::GetRenderViewForCurrentContext(); |
326 if (!renderview) | 327 if (!renderview) |
327 return v8::Undefined(); | 328 return v8::Undefined(); |
328 | 329 |
329 if (args.Length() >= 3 && args[0]->IsInt32() && args[1]->IsString() && | 330 if (args.Length() >= 3 && args[0]->IsInt32() && args[1]->IsString() && |
330 args[2]->IsString()) { | 331 args[2]->IsString()) { |
331 int tab_id = args[0]->Int32Value(); | 332 int tab_id = args[0]->Int32Value(); |
332 std::string extension_id = *v8::String::Utf8Value(args[1]->ToString()); | 333 std::string extension_id = *v8::String::Utf8Value(args[1]->ToString()); |
333 std::string channel_name = *v8::String::Utf8Value(args[2]->ToString()); | 334 std::string channel_name = *v8::String::Utf8Value(args[2]->ToString()); |
334 int port_id = -1; | 335 int port_id = -1; |
335 renderview->Send(new ViewHostMsg_OpenChannelToTab( | 336 renderview->Send(new ExtensionHostMsg_OpenChannelToTab( |
336 renderview->routing_id(), tab_id, extension_id, channel_name, | 337 renderview->routing_id(), tab_id, extension_id, channel_name, |
337 &port_id)); | 338 &port_id)); |
338 return v8::Integer::New(port_id); | 339 return v8::Integer::New(port_id); |
339 } | 340 } |
340 return v8::Undefined(); | 341 return v8::Undefined(); |
341 } | 342 } |
342 | 343 |
343 static v8::Handle<v8::Value> GetCurrentPageActions( | 344 static v8::Handle<v8::Value> GetCurrentPageActions( |
344 const v8::Arguments& args) { | 345 const v8::Arguments& args) { |
345 std::string extension_id = *v8::String::Utf8Value(args[0]->ToString()); | 346 std::string extension_id = *v8::String::Utf8Value(args[0]->ToString()); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
391 | 392 |
392 int request_id = args[2]->Int32Value(); | 393 int request_id = args[2]->Int32Value(); |
393 bool has_callback = args[3]->BooleanValue(); | 394 bool has_callback = args[3]->BooleanValue(); |
394 | 395 |
395 v8::Persistent<v8::Context> current_context = | 396 v8::Persistent<v8::Context> current_context = |
396 v8::Persistent<v8::Context>::New(v8::Context::GetCurrent()); | 397 v8::Persistent<v8::Context>::New(v8::Context::GetCurrent()); |
397 DCHECK(!current_context.IsEmpty()); | 398 DCHECK(!current_context.IsEmpty()); |
398 GetPendingRequestMap()[request_id].reset(new PendingRequest( | 399 GetPendingRequestMap()[request_id].reset(new PendingRequest( |
399 current_context, name)); | 400 current_context, name)); |
400 | 401 |
401 ViewHostMsg_DomMessage_Params params; | 402 ExtensionHostMsg_DomMessage_Params params; |
402 params.name = name; | 403 params.name = name; |
403 params.arguments.Swap(value_args); | 404 params.arguments.Swap(value_args); |
404 params.source_url = source_url; | 405 params.source_url = source_url; |
405 params.request_id = request_id; | 406 params.request_id = request_id; |
406 params.has_callback = has_callback; | 407 params.has_callback = has_callback; |
407 params.user_gesture = webframe->isProcessingUserGesture(); | 408 params.user_gesture = webframe->isProcessingUserGesture(); |
408 renderview->SendExtensionRequest(params); | 409 renderview->Send(new ExtensionHostMsg_Request( |
| 410 renderview->routing_id(), params)); |
409 | 411 |
410 return v8::Undefined(); | 412 return v8::Undefined(); |
411 } | 413 } |
412 | 414 |
413 // Starts an API request to the browser, with an optional callback. The | 415 // Starts an API request to the browser, with an optional callback. The |
414 // callback will be dispatched to EventBindings::HandleResponse. | 416 // callback will be dispatched to EventBindings::HandleResponse. |
415 static v8::Handle<v8::Value> StartRequest(const v8::Arguments& args) { | 417 static v8::Handle<v8::Value> StartRequest(const v8::Arguments& args) { |
416 std::string str_args = *v8::String::Utf8Value(args[1]); | 418 std::string str_args = *v8::String::Utf8Value(args[1]); |
417 base::JSONReader reader; | 419 base::JSONReader reader; |
418 scoped_ptr<Value> value_args; | 420 scoped_ptr<Value> value_args; |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
647 ExtensionProcessBindings::ThrowPermissionDeniedException( | 649 ExtensionProcessBindings::ThrowPermissionDeniedException( |
648 const std::string& function_name) { | 650 const std::string& function_name) { |
649 static const char kMessage[] = | 651 static const char kMessage[] = |
650 "You do not have permission to use '%s'. Be sure to declare" | 652 "You do not have permission to use '%s'. Be sure to declare" |
651 " in your manifest what permissions you need."; | 653 " in your manifest what permissions you need."; |
652 std::string error_msg = StringPrintf(kMessage, function_name.c_str()); | 654 std::string error_msg = StringPrintf(kMessage, function_name.c_str()); |
653 | 655 |
654 return v8::ThrowException(v8::Exception::Error( | 656 return v8::ThrowException(v8::Exception::Error( |
655 v8::String::New(error_msg.c_str()))); | 657 v8::String::New(error_msg.c_str()))); |
656 } | 658 } |
OLD | NEW |