Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
|
chasej
2017/07/11 20:12:32
Ditto about copyright include.
iclelland
2017/07/12 17:23:20
Done.
| |
| 4 | |
| 5 #include "bindings/modules/v8/ConditionalFeaturesForModules.h" | |
| 6 | |
| 7 #include "bindings/core/v8/ConditionalFeaturesForCore.h" | |
| 8 {% for include in includes %} | |
| 9 #include "{{ include }}" | |
| 10 {% endfor %} | |
| 11 | |
| 12 namespace blink { | |
| 13 | |
| 14 namespace { | |
| 15 InstallConditionalFeaturesFunction | |
| 16 g_original_install_conditional_features_function = nullptr; | |
| 17 InstallPendingConditionalFeatureFunction | |
| 18 g_original_install_pending_conditional_feature_function = nullptr; | |
| 19 } | |
| 20 | |
| 21 void InstallConditionalFeaturesForModules( | |
|
chasej
2017/07/11 20:12:32
This method seems very similar to the Core version
iclelland
2017/07/12 17:23:20
I've made them identical now, except that the Core
chasej
2017/07/12 19:53:41
Is that newly-added todo in this CL? I'm not seein
iclelland
2017/07/13 15:32:59
Oops -- missed it, thanks for catching.
| |
| 22 const WrapperTypeInfo* wrapper_type_info, | |
| 23 const ScriptState* script_state, | |
| 24 v8::Local<v8::Object> prototype_object, | |
| 25 v8::Local<v8::Function> interface_object) { | |
| 26 (*g_original_install_conditional_features_function)( | |
| 27 wrapper_type_info, script_state, prototype_object, interface_object); | |
| 28 | |
| 29 {% if installers_by_interface %} | |
| 30 ExecutionContext* execution_context = ExecutionContext::From(script_state); | |
| 31 if (!execution_context) | |
| 32 return; | |
| 33 v8::Isolate* isolate = script_state->GetIsolate(); | |
| 34 const DOMWrapperWorld& world = script_state->World(); | |
| 35 {% for interface in installers_by_interface %} | |
| 36 if (wrapper_type_info == &{{ interface.class }}::wrapperTypeInfo) { | |
| 37 {% if interface.is_global %} | |
| 38 v8::Local<v8::Object> instance_object = | |
| 39 script_state->GetContext()->Global(); | |
| 40 {% endif %} | |
| 41 {% for installer in interface.installers %} | |
| 42 if ({{ installer.condition }}(execution_context)) { | |
| 43 {{ installer.class_or_partial }}::{{ installer.install_method }}( | |
| 44 isolate, world, {% if interface.is_global %}instance_object{% else %}v 8::Local<v8::Object>(){% endif %}, prototype_object, | |
| 45 interface_object); | |
| 46 } | |
| 47 {% endfor %} | |
| 48 } | |
| 49 {% endfor %} | |
| 50 {% endif %} | |
| 51 } | |
| 52 | |
| 53 void InstallPendingConditionalFeatureForModules( | |
| 54 const String& feature, | |
| 55 const ScriptState* script_state) { | |
| 56 (*g_original_install_pending_conditional_feature_function)(feature, | |
| 57 script_state); | |
| 58 | |
| 59 {% if installers_by_feature %} | |
| 60 v8::Local<v8::Object> prototype_object; | |
| 61 v8::Local<v8::Function> interface_object; | |
| 62 v8::Isolate* isolate = script_state->GetIsolate(); | |
| 63 const DOMWrapperWorld& world = script_state->World(); | |
| 64 V8PerContextData* context_data = script_state->PerContextData(); | |
| 65 {% for feature in installers_by_feature %} | |
| 66 if (feature == "{{ feature.name }}") { | |
| 67 {% for installer in feature.installers %} | |
| 68 if (context_data->GetExistingConstructorAndPrototypeForType( | |
| 69 &{{ installer.class }}::wrapperTypeInfo, &prototype_object, | |
| 70 &interface_object)) { | |
| 71 {{ installer.class_or_partial }}::{{ installer.install_method }}( | |
| 72 isolate, world, v8::Local<v8::Object>(), prototype_object, | |
| 73 interface_object); | |
| 74 } | |
| 75 {% endfor %} | |
| 76 return; | |
| 77 } | |
| 78 {% endfor %} | |
| 79 {% endif %} | |
| 80 } | |
| 81 | |
| 82 void RegisterInstallConditionalFeaturesForModules() { | |
| 83 RegisterInstallConditionalFeaturesForCore(); | |
| 84 g_original_install_conditional_features_function = | |
| 85 SetInstallConditionalFeaturesFunction( | |
| 86 &InstallConditionalFeaturesForModules); | |
| 87 g_original_install_pending_conditional_feature_function = | |
| 88 SetInstallPendingConditionalFeatureFunction( | |
| 89 &InstallPendingConditionalFeatureForModules); | |
| 90 } | |
| 91 | |
| 92 } // namespace blink | |
| OLD | NEW |