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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 return live_callback.get() == callback; | 57 return live_callback.get() == callback; |
58 })); | 58 })); |
59 #endif // DCHECK_IS_ON() | 59 #endif // DCHECK_IS_ON() |
60 | 60 |
61 callback->Run(&args); | 61 callback->Run(&args); |
62 } | 62 } |
63 | 63 |
64 } // namespace | 64 } // namespace |
65 | 65 |
66 APIBinding::APIBinding(const std::string& api_name, | 66 APIBinding::APIBinding(const std::string& api_name, |
67 const base::ListValue& function_definitions, | 67 const base::ListValue* function_definitions, |
68 const base::ListValue* type_definitions, | 68 const base::ListValue* type_definitions, |
69 const base::ListValue* event_definitions, | 69 const base::ListValue* event_definitions, |
70 const APIMethodCallback& callback, | 70 const APIMethodCallback& callback, |
71 std::unique_ptr<APIBindingHooks> binding_hooks, | 71 std::unique_ptr<APIBindingHooks> binding_hooks, |
72 ArgumentSpec::RefMap* type_refs) | 72 ArgumentSpec::RefMap* type_refs) |
73 : api_name_(api_name), | 73 : api_name_(api_name), |
74 method_callback_(callback), | 74 method_callback_(callback), |
75 binding_hooks_(std::move(binding_hooks)), | 75 binding_hooks_(std::move(binding_hooks)), |
76 type_refs_(type_refs), | 76 type_refs_(type_refs), |
77 weak_factory_(this) { | 77 weak_factory_(this) { |
78 DCHECK(!method_callback_.is_null()); | 78 DCHECK(!method_callback_.is_null()); |
79 for (const auto& func : function_definitions) { | 79 if (function_definitions) { |
80 const base::DictionaryValue* func_dict = nullptr; | 80 for (const auto& func : *function_definitions) { |
81 CHECK(func->GetAsDictionary(&func_dict)); | 81 const base::DictionaryValue* func_dict = nullptr; |
82 std::string name; | 82 CHECK(func->GetAsDictionary(&func_dict)); |
83 CHECK(func_dict->GetString("name", &name)); | 83 std::string name; |
| 84 CHECK(func_dict->GetString("name", &name)); |
84 | 85 |
85 const base::ListValue* params = nullptr; | 86 const base::ListValue* params = nullptr; |
86 CHECK(func_dict->GetList("parameters", ¶ms)); | 87 CHECK(func_dict->GetList("parameters", ¶ms)); |
87 signatures_[name] = base::MakeUnique<APISignature>(*params); | 88 signatures_[name] = base::MakeUnique<APISignature>(*params); |
| 89 } |
88 } | 90 } |
89 if (type_definitions) { | 91 if (type_definitions) { |
90 for (const auto& type : *type_definitions) { | 92 for (const auto& type : *type_definitions) { |
91 const base::DictionaryValue* type_dict = nullptr; | 93 const base::DictionaryValue* type_dict = nullptr; |
92 CHECK(type->GetAsDictionary(&type_dict)); | 94 CHECK(type->GetAsDictionary(&type_dict)); |
93 std::string id; | 95 std::string id; |
94 CHECK(type_dict->GetString("id", &id)); | 96 CHECK(type_dict->GetString("id", &id)); |
95 DCHECK(type_refs->find(id) == type_refs->end()); | 97 DCHECK(type_refs->find(id) == type_refs->end()); |
96 // TODO(devlin): refs are sometimes preceeded by the API namespace; we | 98 // TODO(devlin): refs are sometimes preceeded by the API namespace; we |
97 // might need to take that into account. | 99 // might need to take that into account. |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 arguments->ThrowTypeError("Invalid invocation"); | 223 arguments->ThrowTypeError("Invalid invocation"); |
222 return; | 224 return; |
223 } | 225 } |
224 | 226 |
225 DCHECK(converted_arguments); | 227 DCHECK(converted_arguments); |
226 method_callback_.Run(name, std::move(converted_arguments), isolate, context, | 228 method_callback_.Run(name, std::move(converted_arguments), isolate, context, |
227 callback); | 229 callback); |
228 } | 230 } |
229 | 231 |
230 } // namespace extensions | 232 } // namespace extensions |
OLD | NEW |