| Index: extensions/renderer/dispatcher.cc
|
| diff --git a/extensions/renderer/dispatcher.cc b/extensions/renderer/dispatcher.cc
|
| index c3718d978b8fade24e5c1b55bfff4a38bc05dc1b..5ff2616e7e736ad0a90069a7d4132703329694ad 100644
|
| --- a/extensions/renderer/dispatcher.cc
|
| +++ b/extensions/renderer/dispatcher.cc
|
| @@ -1345,31 +1345,26 @@ void Dispatcher::UpdateBindingsForContext(ScriptContext* context) {
|
| // ones.
|
| const FeatureProvider* api_feature_provider =
|
| FeatureProvider::GetAPIFeatures();
|
| - const std::vector<std::string>& apis =
|
| - api_feature_provider->GetAllFeatureNames();
|
| - for (const std::string& api_name : apis) {
|
| - Feature* feature = api_feature_provider->GetFeature(api_name);
|
| - DCHECK(feature);
|
| -
|
| + for (const auto& map_entry : api_feature_provider->GetAllFeatures()) {
|
| // Internal APIs are included via require(api_name) from internal code
|
| // rather than chrome[api_name].
|
| - if (feature->IsInternal())
|
| + if (map_entry.second->IsInternal())
|
| continue;
|
|
|
| // If this API has a parent feature (and isn't marked 'noparent'),
|
| // then this must be a function or event, so we should not register.
|
| - if (api_feature_provider->GetParent(feature) != NULL)
|
| + if (api_feature_provider->GetParent(map_entry.second.get()) != nullptr)
|
| continue;
|
|
|
| // Skip chrome.test if this isn't a test.
|
| - if (api_name == "test" &&
|
| + if (map_entry.first == "test" &&
|
| !base::CommandLine::ForCurrentProcess()->HasSwitch(
|
| ::switches::kTestType)) {
|
| continue;
|
| }
|
|
|
| - if (context->IsAnyFeatureAvailableToContext(*feature))
|
| - RegisterBinding(api_name, context);
|
| + if (context->IsAnyFeatureAvailableToContext(*map_entry.second.get()))
|
| + RegisterBinding(map_entry.first, context);
|
| }
|
| break;
|
| }
|
|
|