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

Side by Side Diff: extensions/renderer/api_binding.cc

Issue 2716883003: [Extensions Bindings] Store API type methods in the reference map (Closed)
Patch Set: . Created 3 years, 9 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
« no previous file with comments | « no previous file | extensions/renderer/api_type_reference_map.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 stripped_id = id.substr(api_name_.size() + 1); // +1 for trailing '.' 178 stripped_id = id.substr(api_name_.size() + 1); // +1 for trailing '.'
179 std::vector<EnumEntry>& entries = 179 std::vector<EnumEntry>& entries =
180 enums_[stripped_id ? *stripped_id : id]; 180 enums_[stripped_id ? *stripped_id : id];
181 entries.reserve(enum_values.size()); 181 entries.reserve(enum_values.size());
182 for (const auto& enum_value : enum_values) { 182 for (const auto& enum_value : enum_values) {
183 entries.push_back( 183 entries.push_back(
184 std::make_pair(enum_value, GetJSEnumEntryName(enum_value))); 184 std::make_pair(enum_value, GetJSEnumEntryName(enum_value)));
185 } 185 }
186 } 186 }
187 type_refs->AddSpec(id, std::move(argument_spec)); 187 type_refs->AddSpec(id, std::move(argument_spec));
188 // Some types, like storage.StorageArea, have functions associated with
189 // them. Cache the function signatures in the type map.
190 const base::ListValue* type_functions = nullptr;
191 if (type_dict->GetList("functions", &type_functions)) {
192 for (const auto& func : *type_functions) {
193 const base::DictionaryValue* func_dict = nullptr;
194 CHECK(func->GetAsDictionary(&func_dict));
195 std::string function_name;
196 CHECK(func_dict->GetString("name", &function_name));
197
198 const base::ListValue* params = nullptr;
199 CHECK(func_dict->GetList("parameters", &params));
200 type_refs->AddTypeMethodSignature(
201 base::StringPrintf("%s.%s", id.c_str(), function_name.c_str()),
202 base::MakeUnique<APISignature>(*params));
203 }
204 }
188 } 205 }
189 } 206 }
190 207
191 if (event_definitions) { 208 if (event_definitions) {
192 events_.reserve(event_definitions->GetSize()); 209 events_.reserve(event_definitions->GetSize());
193 for (const auto& event : *event_definitions) { 210 for (const auto& event : *event_definitions) {
194 const base::DictionaryValue* event_dict = nullptr; 211 const base::DictionaryValue* event_dict = nullptr;
195 CHECK(event->GetAsDictionary(&event_dict)); 212 CHECK(event->GetAsDictionary(&event_dict));
196 std::string name; 213 std::string name;
197 CHECK(event_dict->GetString("name", &name)); 214 CHECK(event_dict->GetString("name", &name));
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 if (invalid_invocation) { 469 if (invalid_invocation) {
453 arguments->ThrowTypeError("Invalid invocation"); 470 arguments->ThrowTypeError("Invalid invocation");
454 return; 471 return;
455 } 472 }
456 473
457 request_handler_->StartRequest(context, name, std::move(converted_arguments), 474 request_handler_->StartRequest(context, name, std::move(converted_arguments),
458 callback, custom_callback); 475 callback, custom_callback);
459 } 476 }
460 477
461 } // namespace extensions 478 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | extensions/renderer/api_type_reference_map.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698