| 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 |