OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "extensions/renderer/api_binding.h" | 5 #include "extensions/renderer/api_binding.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 const APISignature* signature, | 491 const APISignature* signature, |
492 gin::Arguments* arguments) { | 492 gin::Arguments* arguments) { |
493 std::string error; | 493 std::string error; |
494 v8::Isolate* isolate = arguments->isolate(); | 494 v8::Isolate* isolate = arguments->isolate(); |
495 v8::HandleScope handle_scope(isolate); | 495 v8::HandleScope handle_scope(isolate); |
496 | 496 |
497 // Since this is called synchronously from the JS entry point, | 497 // Since this is called synchronously from the JS entry point, |
498 // GetCurrentContext() should always be correct. | 498 // GetCurrentContext() should always be correct. |
499 v8::Local<v8::Context> context = isolate->GetCurrentContext(); | 499 v8::Local<v8::Context> context = isolate->GetCurrentContext(); |
500 | 500 |
501 std::vector<v8::Local<v8::Value>> argument_list; | 501 std::vector<v8::Local<v8::Value>> argument_list = arguments->GetAll(); |
502 if (arguments->Length() > 0) { | |
503 // Just copying handles should never fail. | |
504 CHECK(arguments->GetRemaining(&argument_list)); | |
505 } | |
506 | 502 |
507 bool invalid_invocation = false; | 503 bool invalid_invocation = false; |
508 v8::Local<v8::Function> custom_callback; | 504 v8::Local<v8::Function> custom_callback; |
509 bool updated_args = false; | 505 bool updated_args = false; |
510 { | 506 { |
511 v8::TryCatch try_catch(isolate); | 507 v8::TryCatch try_catch(isolate); |
512 APIBindingHooks::RequestResult hooks_result = binding_hooks_->RunHooks( | 508 APIBindingHooks::RequestResult hooks_result = binding_hooks_->RunHooks( |
513 name, context, signature, &argument_list, *type_refs_); | 509 name, context, signature, &argument_list, *type_refs_); |
514 | 510 |
515 switch (hooks_result.code) { | 511 switch (hooks_result.code) { |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
575 arguments->ThrowTypeError("Invalid invocation"); | 571 arguments->ThrowTypeError("Invalid invocation"); |
576 return; | 572 return; |
577 } | 573 } |
578 | 574 |
579 request_handler_->StartRequest(context, name, std::move(converted_arguments), | 575 request_handler_->StartRequest(context, name, std::move(converted_arguments), |
580 callback, custom_callback, | 576 callback, custom_callback, |
581 binding::RequestThread::UI); | 577 binding::RequestThread::UI); |
582 } | 578 } |
583 | 579 |
584 } // namespace extensions | 580 } // namespace extensions |
OLD | NEW |