| 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 "modules/csspaint/PaintWorkletGlobalScope.h" | 5 #include "modules/csspaint/PaintWorkletGlobalScope.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/IDLTypes.h" |
| 8 #include "bindings/core/v8/NativeValueTraitsImpl.h" |
| 7 #include "bindings/core/v8/V8BindingMacros.h" | 9 #include "bindings/core/v8/V8BindingMacros.h" |
| 8 #include "bindings/core/v8/WorkerOrWorkletScriptController.h" | 10 #include "bindings/core/v8/WorkerOrWorkletScriptController.h" |
| 9 #include "core/CSSPropertyNames.h" | 11 #include "core/CSSPropertyNames.h" |
| 10 #include "core/css/CSSSyntaxDescriptor.h" | 12 #include "core/css/CSSSyntaxDescriptor.h" |
| 11 #include "core/dom/ExceptionCode.h" | 13 #include "core/dom/ExceptionCode.h" |
| 12 #include "core/inspector/MainThreadDebugger.h" | 14 #include "core/inspector/MainThreadDebugger.h" |
| 13 #include "modules/csspaint/CSSPaintDefinition.h" | 15 #include "modules/csspaint/CSSPaintDefinition.h" |
| 14 #include "modules/csspaint/CSSPaintImageGeneratorImpl.h" | 16 #include "modules/csspaint/CSSPaintImageGeneratorImpl.h" |
| 15 | 17 |
| 16 namespace blink { | 18 namespace blink { |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 | 83 |
| 82 v8::Local<v8::Value> input_properties_value; | 84 v8::Local<v8::Value> input_properties_value; |
| 83 if (!V8Call(constructor->Get(context, V8String(isolate, "inputProperties")), | 85 if (!V8Call(constructor->Get(context, V8String(isolate, "inputProperties")), |
| 84 input_properties_value)) | 86 input_properties_value)) |
| 85 return; | 87 return; |
| 86 | 88 |
| 87 Vector<CSSPropertyID> native_invalidation_properties; | 89 Vector<CSSPropertyID> native_invalidation_properties; |
| 88 Vector<AtomicString> custom_invalidation_properties; | 90 Vector<AtomicString> custom_invalidation_properties; |
| 89 | 91 |
| 90 if (!IsUndefinedOrNull(input_properties_value)) { | 92 if (!IsUndefinedOrNull(input_properties_value)) { |
| 91 Vector<String> properties = ToImplArray<Vector<String>>( | 93 Vector<String> properties = |
| 92 input_properties_value, 0, isolate, exception_state); | 94 NativeValueTraits<IDLSequence<IDLString>>::NativeValue( |
| 95 isolate, input_properties_value, exception_state); |
| 93 | 96 |
| 94 if (exception_state.HadException()) | 97 if (exception_state.HadException()) |
| 95 return; | 98 return; |
| 96 | 99 |
| 97 for (const auto& property : properties) { | 100 for (const auto& property : properties) { |
| 98 CSSPropertyID property_id = cssPropertyID(property); | 101 CSSPropertyID property_id = cssPropertyID(property); |
| 99 if (property_id == CSSPropertyVariable) { | 102 if (property_id == CSSPropertyVariable) { |
| 100 custom_invalidation_properties.push_back(property); | 103 custom_invalidation_properties.push_back(property); |
| 101 } else if (property_id != CSSPropertyInvalid) { | 104 } else if (property_id != CSSPropertyInvalid) { |
| 102 native_invalidation_properties.push_back(property_id); | 105 native_invalidation_properties.push_back(property_id); |
| 103 } | 106 } |
| 104 } | 107 } |
| 105 } | 108 } |
| 106 | 109 |
| 107 // Get input argument types. Parse the argument type values only when | 110 // Get input argument types. Parse the argument type values only when |
| 108 // cssPaintAPIArguments is enabled. | 111 // cssPaintAPIArguments is enabled. |
| 109 Vector<CSSSyntaxDescriptor> input_argument_types; | 112 Vector<CSSSyntaxDescriptor> input_argument_types; |
| 110 if (RuntimeEnabledFeatures::cssPaintAPIArgumentsEnabled()) { | 113 if (RuntimeEnabledFeatures::cssPaintAPIArgumentsEnabled()) { |
| 111 v8::Local<v8::Value> input_argument_type_values; | 114 v8::Local<v8::Value> input_argument_type_values; |
| 112 if (!V8Call(constructor->Get(context, V8String(isolate, "inputArguments")), | 115 if (!V8Call(constructor->Get(context, V8String(isolate, "inputArguments")), |
| 113 input_argument_type_values)) | 116 input_argument_type_values)) |
| 114 return; | 117 return; |
| 115 | 118 |
| 116 if (!IsUndefinedOrNull(input_argument_type_values)) { | 119 if (!IsUndefinedOrNull(input_argument_type_values)) { |
| 117 Vector<String> argument_types = ToImplArray<Vector<String>>( | 120 Vector<String> argument_types = |
| 118 input_argument_type_values, 0, isolate, exception_state); | 121 NativeValueTraits<IDLSequence<IDLString>>::NativeValue( |
| 122 isolate, input_argument_type_values, exception_state); |
| 119 | 123 |
| 120 if (exception_state.HadException()) | 124 if (exception_state.HadException()) |
| 121 return; | 125 return; |
| 122 | 126 |
| 123 for (const auto& type : argument_types) { | 127 for (const auto& type : argument_types) { |
| 124 CSSSyntaxDescriptor syntax_descriptor(type); | 128 CSSSyntaxDescriptor syntax_descriptor(type); |
| 125 if (!syntax_descriptor.IsValid()) { | 129 if (!syntax_descriptor.IsValid()) { |
| 126 exception_state.ThrowTypeError("Invalid argument types."); | 130 exception_state.ThrowTypeError("Invalid argument types."); |
| 127 return; | 131 return; |
| 128 } | 132 } |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 set->insert(generator); | 220 set->insert(generator); |
| 217 } | 221 } |
| 218 | 222 |
| 219 DEFINE_TRACE(PaintWorkletGlobalScope) { | 223 DEFINE_TRACE(PaintWorkletGlobalScope) { |
| 220 visitor->Trace(paint_definitions_); | 224 visitor->Trace(paint_definitions_); |
| 221 visitor->Trace(pending_generators_); | 225 visitor->Trace(pending_generators_); |
| 222 MainThreadWorkletGlobalScope::Trace(visitor); | 226 MainThreadWorkletGlobalScope::Trace(visitor); |
| 223 } | 227 } |
| 224 | 228 |
| 225 } // namespace blink | 229 } // namespace blink |
| OLD | NEW |