From e684a3455bcc29a6e3e66a004e352dea4e1141e7 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Wed, 13 Feb 2019 15:05:36 +0100 Subject: BASELINE: Update Chromium to 72.0.3626.110 and Ninja to 1.9.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ic57220b00ecc929a893c91f5cc552f5d3e99e922 Reviewed-by: Michael BrĂ¼ning --- .../third_party/blink/renderer/core/svg/BUILD.gn | 2 + .../core/svg/animation/smil_time_container.cc | 2 +- .../core/svg/animation/smil_time_container.h | 6 +- .../core/svg/animation/svg_smil_element.cc | 87 ++-- .../renderer/core/svg/animation/svg_smil_element.h | 27 +- .../core/svg/graphics/filters/svg_fe_image.cc | 6 +- .../core/svg/graphics/filters/svg_fe_image.h | 5 +- .../core/svg/graphics/filters/svg_filter_builder.h | 8 +- .../blink/renderer/core/svg/graphics/svg_image.cc | 7 +- .../core/svg/graphics/svg_image_chrome_client.cc | 7 +- .../core/svg/graphics/svg_image_chrome_client.h | 4 +- .../renderer/core/svg/graphics/svg_image_test.cc | 3 +- .../renderer/core/svg/linear_gradient_attributes.h | 6 +- .../blink/renderer/core/svg/pattern_attributes.h | 6 +- .../core/svg/properties/svg_animated_property.h | 2 +- .../renderer/core/svg/radial_gradient_attributes.h | 6 +- .../blink/renderer/core/svg/svg_a_element.cc | 12 +- .../blink/renderer/core/svg/svg_angle.cc | 26 +- .../blink/renderer/core/svg/svg_angle.h | 18 +- .../blink/renderer/core/svg/svg_angle_tear_off.h | 10 +- .../blink/renderer/core/svg/svg_animate_element.cc | 25 +- .../blink/renderer/core/svg/svg_animate_element.h | 12 +- .../core/svg/svg_animate_motion_element.cc | 8 +- .../core/svg/svg_animate_transform_element.cc | 4 +- .../blink/renderer/core/svg/svg_animated_angle.cc | 4 +- .../blink/renderer/core/svg/svg_animated_angle.h | 6 +- .../blink/renderer/core/svg/svg_animated_boolean.h | 14 +- .../blink/renderer/core/svg/svg_animated_color.cc | 4 +- .../blink/renderer/core/svg/svg_animated_color.h | 6 +- .../renderer/core/svg/svg_animated_enumeration.h | 23 +- .../blink/renderer/core/svg/svg_animated_href.cc | 10 +- .../blink/renderer/core/svg/svg_animated_href.h | 4 +- .../blink/renderer/core/svg/svg_animated_integer.h | 28 +- .../svg/svg_animated_integer_optional_integer.h | 12 +- .../blink/renderer/core/svg/svg_animated_length.h | 21 +- .../renderer/core/svg/svg_animated_length_list.h | 15 +- .../blink/renderer/core/svg/svg_animated_number.h | 28 +- .../renderer/core/svg/svg_animated_number_list.h | 14 +- .../core/svg/svg_animated_number_optional_number.h | 12 +- .../blink/renderer/core/svg/svg_animated_path.h | 9 +- .../renderer/core/svg/svg_animated_point_list.h | 5 +- .../core/svg/svg_animated_preserve_aspect_ratio.h | 14 +- .../blink/renderer/core/svg/svg_animated_rect.h | 14 +- .../blink/renderer/core/svg/svg_animated_string.h | 16 +- .../core/svg/svg_animated_transform_list.h | 15 +- .../renderer/core/svg/svg_animation_element.cc | 57 ++- .../renderer/core/svg/svg_animation_element.h | 6 +- .../renderer/core/svg/svg_animation_element.idl | 1 - .../blink/renderer/core/svg/svg_boolean.h | 6 +- .../blink/renderer/core/svg/svg_circle_element.cc | 12 +- .../renderer/core/svg/svg_clip_path_element.cc | 11 +- .../svg/svg_component_transfer_function_element.cc | 52 ++- .../svg/svg_component_transfer_function_element.h | 4 +- .../blink/renderer/core/svg/svg_defs_element.cc | 2 +- .../blink/renderer/core/svg/svg_desc_element.cc | 2 +- .../blink/renderer/core/svg/svg_discard_element.cc | 3 +- .../renderer/core/svg/svg_discard_element.idl | 1 - .../renderer/core/svg/svg_document_extensions.cc | 11 +- .../blink/renderer/core/svg/svg_element.cc | 463 ++++++++++----------- .../renderer/core/svg/svg_element_rare_data.cc | 2 +- .../blink/renderer/core/svg/svg_ellipse_element.cc | 14 +- .../blink/renderer/core/svg/svg_enumeration.cc | 30 +- .../blink/renderer/core/svg/svg_enumeration.h | 41 +- .../blink/renderer/core/svg/svg_enumeration_map.cc | 19 + .../blink/renderer/core/svg/svg_enumeration_map.h | 63 +++ .../renderer/core/svg/svg_fe_blend_element.cc | 72 ++-- .../blink/renderer/core/svg/svg_fe_blend_element.h | 31 +- .../renderer/core/svg/svg_fe_blend_element.idl | 11 + .../core/svg/svg_fe_color_matrix_element.cc | 36 +- .../core/svg/svg_fe_color_matrix_element.h | 3 +- .../core/svg/svg_fe_component_transfer_element.cc | 6 +- .../renderer/core/svg/svg_fe_composite_element.cc | 66 ++- .../renderer/core/svg/svg_fe_composite_element.h | 4 +- .../core/svg/svg_fe_convolve_matrix_element.cc | 71 ++-- .../core/svg/svg_fe_convolve_matrix_element.h | 3 +- .../core/svg/svg_fe_diffuse_lighting_element.cc | 42 +- .../core/svg/svg_fe_displacement_map_element.cc | 41 +- .../core/svg/svg_fe_displacement_map_element.h | 4 +- .../core/svg/svg_fe_distant_light_element.cc | 2 +- .../core/svg/svg_fe_drop_shadow_element.cc | 21 +- .../renderer/core/svg/svg_fe_flood_element.cc | 6 +- .../renderer/core/svg/svg_fe_func_a_element.cc | 2 +- .../renderer/core/svg/svg_fe_func_b_element.cc | 2 +- .../renderer/core/svg/svg_fe_func_g_element.cc | 2 +- .../renderer/core/svg/svg_fe_func_r_element.cc | 2 +- .../core/svg/svg_fe_gaussian_blur_element.cc | 10 +- .../renderer/core/svg/svg_fe_image_element.cc | 13 +- .../blink/renderer/core/svg/svg_fe_image_element.h | 1 + .../renderer/core/svg/svg_fe_light_element.cc | 37 +- .../blink/renderer/core/svg/svg_fe_light_element.h | 6 +- .../renderer/core/svg/svg_fe_merge_element.cc | 2 +- .../renderer/core/svg/svg_fe_merge_node_element.cc | 6 +- .../renderer/core/svg/svg_fe_morphology_element.cc | 33 +- .../renderer/core/svg/svg_fe_morphology_element.h | 4 +- .../renderer/core/svg/svg_fe_offset_element.cc | 12 +- .../core/svg/svg_fe_point_light_element.cc | 2 +- .../core/svg/svg_fe_specular_lighting_element.cc | 46 +- .../renderer/core/svg/svg_fe_spot_light_element.cc | 2 +- .../blink/renderer/core/svg/svg_fe_tile_element.cc | 6 +- .../renderer/core/svg/svg_fe_turbulence_element.cc | 59 ++- .../renderer/core/svg/svg_fe_turbulence_element.h | 6 +- .../blink/renderer/core/svg/svg_filter_element.cc | 29 +- .../svg_filter_primitive_standard_attributes.cc | 19 +- .../blink/renderer/core/svg/svg_fit_to_view_box.cc | 15 +- .../core/svg/svg_foreign_object_element.cc | 16 +- .../blink/renderer/core/svg/svg_g_element.cc | 2 +- .../renderer/core/svg/svg_geometry_element.cc | 60 +-- .../renderer/core/svg/svg_gradient_element.cc | 41 +- .../blink/renderer/core/svg/svg_gradient_element.h | 8 +- .../renderer/core/svg/svg_graphics_element.cc | 6 +- .../blink/renderer/core/svg/svg_image_element.cc | 31 +- .../blink/renderer/core/svg/svg_image_element.h | 4 + .../blink/renderer/core/svg/svg_image_loader.cc | 2 +- .../blink/renderer/core/svg/svg_image_loader.h | 5 +- .../blink/renderer/core/svg/svg_integer.cc | 2 +- .../blink/renderer/core/svg/svg_integer.h | 8 +- .../core/svg/svg_integer_optional_integer.h | 9 +- .../blink/renderer/core/svg/svg_length.cc | 59 +-- .../blink/renderer/core/svg/svg_length.h | 11 +- .../blink/renderer/core/svg/svg_length_context.cc | 2 +- .../blink/renderer/core/svg/svg_length_context.h | 2 +- .../blink/renderer/core/svg/svg_length_list.h | 5 +- .../renderer/core/svg/svg_length_list_tear_off.h | 4 +- .../blink/renderer/core/svg/svg_length_tear_off.h | 12 +- .../blink/renderer/core/svg/svg_line_element.cc | 14 +- .../core/svg/svg_linear_gradient_element.cc | 16 +- .../blink/renderer/core/svg/svg_marker_element.cc | 49 ++- .../blink/renderer/core/svg/svg_marker_element.h | 3 +- .../blink/renderer/core/svg/svg_mask_element.cc | 27 +- .../blink/renderer/core/svg/svg_matrix_tear_off.h | 10 +- .../renderer/core/svg/svg_metadata_element.cc | 2 +- .../blink/renderer/core/svg/svg_mpath_element.cc | 3 +- .../blink/renderer/core/svg/svg_mpath_element.idl | 1 - .../blink/renderer/core/svg/svg_number.h | 15 +- .../blink/renderer/core/svg/svg_number_list.h | 7 +- .../renderer/core/svg/svg_number_list_tear_off.h | 4 +- .../renderer/core/svg/svg_number_optional_number.h | 7 +- .../blink/renderer/core/svg/svg_number_tear_off.h | 10 +- .../third_party/blink/renderer/core/svg/svg_path.h | 9 +- .../blink/renderer/core/svg/svg_path_element.cc | 6 +- .../blink/renderer/core/svg/svg_path_parser.h | 4 +- .../renderer/core/svg/svg_path_parser_test.cc | 4 +- .../renderer/core/svg/svg_path_string_source.cc | 18 +- .../renderer/core/svg/svg_path_string_source.h | 4 +- .../blink/renderer/core/svg/svg_path_utilities.cc | 10 +- .../blink/renderer/core/svg/svg_pattern_element.cc | 36 +- .../blink/renderer/core/svg/svg_point.h | 10 +- .../blink/renderer/core/svg/svg_point_list.h | 5 +- .../renderer/core/svg/svg_point_list_tear_off.h | 4 +- .../blink/renderer/core/svg/svg_point_tear_off.h | 16 +- .../blink/renderer/core/svg/svg_poly_element.cc | 4 +- .../blink/renderer/core/svg/svg_poly_element.h | 4 +- .../blink/renderer/core/svg/svg_polygon_element.cc | 2 +- .../renderer/core/svg/svg_polyline_element.cc | 2 +- .../renderer/core/svg/svg_preserve_aspect_ratio.h | 6 +- .../core/svg/svg_preserve_aspect_ratio_tear_off.h | 13 +- .../core/svg/svg_radial_gradient_element.cc | 22 +- .../third_party/blink/renderer/core/svg/svg_rect.h | 14 +- .../blink/renderer/core/svg/svg_rect_element.cc | 21 +- .../blink/renderer/core/svg/svg_rect_tear_off.h | 12 +- .../blink/renderer/core/svg/svg_resource.cc | 2 +- .../blink/renderer/core/svg/svg_script_element.cc | 18 +- .../blink/renderer/core/svg/svg_script_element.h | 4 +- .../blink/renderer/core/svg/svg_set_element.cc | 2 +- .../renderer/core/svg/svg_static_string_list.h | 12 +- .../blink/renderer/core/svg/svg_stop_element.cc | 8 +- .../blink/renderer/core/svg/svg_string.h | 12 +- .../renderer/core/svg/svg_string_list_tear_off.h | 12 +- .../blink/renderer/core/svg/svg_style_element.cc | 23 +- .../blink/renderer/core/svg/svg_style_element.h | 4 +- .../blink/renderer/core/svg/svg_svg_element.cc | 78 ++-- .../blink/renderer/core/svg/svg_svg_element.idl | 10 +- .../blink/renderer/core/svg/svg_switch_element.cc | 2 +- .../blink/renderer/core/svg/svg_symbol_element.cc | 2 +- .../blink/renderer/core/svg/svg_tag_names.json5 | 23 +- .../blink/renderer/core/svg/svg_tests.cc | 8 +- .../renderer/core/svg/svg_text_content_element.cc | 46 +- .../renderer/core/svg/svg_text_content_element.h | 4 +- .../blink/renderer/core/svg/svg_text_element.cc | 2 +- .../renderer/core/svg/svg_text_path_element.cc | 41 +- .../renderer/core/svg/svg_text_path_element.h | 9 +- .../core/svg/svg_text_positioning_element.cc | 16 +- .../blink/renderer/core/svg/svg_title_element.cc | 2 +- .../blink/renderer/core/svg/svg_transform.cc | 3 +- .../blink/renderer/core/svg/svg_transform.h | 21 +- .../blink/renderer/core/svg/svg_transform_list.h | 7 +- .../core/svg/svg_transform_list_tear_off.h | 11 +- .../renderer/core/svg/svg_transform_tear_off.h | 10 +- .../renderer/core/svg/svg_tree_scope_resources.cc | 2 +- .../blink/renderer/core/svg/svg_tspan_element.cc | 2 +- .../blink/renderer/core/svg/svg_unit_types.cc | 17 +- .../blink/renderer/core/svg/svg_unit_types.h | 4 +- .../blink/renderer/core/svg/svg_uri_reference.cc | 6 +- .../blink/renderer/core/svg/svg_use_element.cc | 71 ++-- .../blink/renderer/core/svg/svg_use_element.h | 4 +- .../blink/renderer/core/svg/svg_view_element.cc | 2 +- .../blink/renderer/core/svg/svg_view_spec.cc | 6 +- .../blink/renderer/core/svg/svg_view_spec.h | 4 +- .../blink/renderer/core/svg/svg_zoom_and_pan.cc | 4 +- .../svg/unsafe_svg_attribute_sanitization_test.cc | 34 +- 200 files changed, 1678 insertions(+), 1661 deletions(-) create mode 100644 chromium/third_party/blink/renderer/core/svg/svg_enumeration_map.cc create mode 100644 chromium/third_party/blink/renderer/core/svg/svg_enumeration_map.h (limited to 'chromium/third_party/blink/renderer/core/svg') diff --git a/chromium/third_party/blink/renderer/core/svg/BUILD.gn b/chromium/third_party/blink/renderer/core/svg/BUILD.gn index 37f9e033280..43c997e602c 100644 --- a/chromium/third_party/blink/renderer/core/svg/BUILD.gn +++ b/chromium/third_party/blink/renderer/core/svg/BUILD.gn @@ -113,6 +113,8 @@ blink_core_sources("svg") { "svg_ellipse_element.h", "svg_enumeration.cc", "svg_enumeration.h", + "svg_enumeration_map.cc", + "svg_enumeration_map.h", "svg_fe_blend_element.cc", "svg_fe_blend_element.h", "svg_fe_color_matrix_element.cc", diff --git a/chromium/third_party/blink/renderer/core/svg/animation/smil_time_container.cc b/chromium/third_party/blink/renderer/core/svg/animation/smil_time_container.cc index d5c29f46d4d..e9d898324ed 100644 --- a/chromium/third_party/blink/renderer/core/svg/animation/smil_time_container.cc +++ b/chromium/third_party/blink/renderer/core/svg/animation/smil_time_container.cc @@ -85,7 +85,7 @@ void SMILTimeContainer::Schedule(SVGSMILElement* animation, Member& scheduled = attribute_map.insert(attribute_name, nullptr).stored_value->value; if (!scheduled) - scheduled = new AnimationsLinkedHashSet; + scheduled = MakeGarbageCollected(); DCHECK(!scheduled->Contains(animation)); scheduled->insert(animation); diff --git a/chromium/third_party/blink/renderer/core/svg/animation/smil_time_container.h b/chromium/third_party/blink/renderer/core/svg/animation/smil_time_container.h index 231d376e6b4..eaee06b4402 100644 --- a/chromium/third_party/blink/renderer/core/svg/animation/smil_time_container.h +++ b/chromium/third_party/blink/renderer/core/svg/animation/smil_time_container.h @@ -46,8 +46,10 @@ class SVGSVGElement; class SMILTimeContainer : public GarbageCollectedFinalized { public: static SMILTimeContainer* Create(SVGSVGElement& owner) { - return new SMILTimeContainer(owner); + return MakeGarbageCollected(owner); } + + explicit SMILTimeContainer(SVGSVGElement& owner); ~SMILTimeContainer(); void Schedule(SVGSMILElement*, SVGElement*, const QualifiedName&); @@ -75,8 +77,6 @@ class SMILTimeContainer : public GarbageCollectedFinalized { void Trace(blink::Visitor*); private: - explicit SMILTimeContainer(SVGSVGElement& owner); - enum FrameSchedulingState { // No frame scheduled. kIdle, diff --git a/chromium/third_party/blink/renderer/core/svg/animation/svg_smil_element.cc b/chromium/third_party/blink/renderer/core/svg/animation/svg_smil_element.cc index c38da07146b..4325e7cc096 100644 --- a/chromium/third_party/blink/renderer/core/svg/animation/svg_smil_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/animation/svg_smil_element.cc @@ -38,6 +38,7 @@ #include "third_party/blink/renderer/core/svg/svg_uri_reference.h" #include "third_party/blink/renderer/core/xlink_names.h" #include "third_party/blink/renderer/platform/heap/handle.h" +#include "third_party/blink/renderer/platform/wtf/functional.h" #include "third_party/blink/renderer/platform/wtf/math_extras.h" #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" #include "third_party/blink/renderer/platform/wtf/vector.h" @@ -47,21 +48,20 @@ namespace blink { class RepeatEvent final : public Event { public: static RepeatEvent* Create(const AtomicString& type, int repeat) { - return new RepeatEvent(type, Bubbles::kNo, Cancelable::kNo, repeat); + return MakeGarbageCollected(type, Bubbles::kNo, + Cancelable::kNo, repeat); } - ~RepeatEvent() override = default; - - int Repeat() const { return repeat_; } - - void Trace(blink::Visitor* visitor) override { Event::Trace(visitor); } - - protected: RepeatEvent(const AtomicString& type, Bubbles bubbles, Cancelable cancelable, int repeat = -1) : Event(type, bubbles, cancelable), repeat_(repeat) {} + ~RepeatEvent() override = default; + + int Repeat() const { return repeat_; } + + void Trace(blink::Visitor* visitor) override { Event::Trace(visitor); } private: int repeat_; @@ -105,7 +105,7 @@ class ConditionEventListener final : public EventListener { animation_(animation), condition_(condition) {} - void handleEvent(ExecutionContext*, Event*) override; + void Invoke(ExecutionContext*, Event*) override; Member animation_; Member condition_; @@ -119,7 +119,7 @@ bool ConditionEventListener::operator==(const EventListener& listener) const { return false; } -void ConditionEventListener::handleEvent(ExecutionContext*, Event* event) { +void ConditionEventListener::Invoke(ExecutionContext*, Event* event) { if (!animation_) return; if (event->type() == "repeatn" && @@ -324,7 +324,7 @@ Node::InsertionNotificationRequest SVGSMILElement::InsertedInto( // "If no attribute is present, the default begin value (an offset-value of 0) // must be evaluated." - if (!FastHasAttribute(SVGNames::beginAttr)) + if (!FastHasAttribute(svg_names::kBeginAttr)) begin_times_.push_back(SMILTimeWithOrigin()); if (is_waiting_for_first_interval_) @@ -508,10 +508,10 @@ void SVGSMILElement::ParseBeginOrEnd(const String& parse_string, void SVGSMILElement::ParseAttribute(const AttributeModificationParams& params) { const QualifiedName& name = params.name; const AtomicString& value = params.new_value; - if (name == SVGNames::beginAttr) { + if (name == svg_names::kBeginAttr) { if (!conditions_.IsEmpty()) { ClearConditions(); - ParseBeginOrEnd(FastGetAttribute(SVGNames::endAttr), kEnd); + ParseBeginOrEnd(FastGetAttribute(svg_names::kEndAttr), kEnd); } ParseBeginOrEnd(value.GetString(), kBegin); if (isConnected()) { @@ -520,10 +520,10 @@ void SVGSMILElement::ParseAttribute(const AttributeModificationParams& params) { BeginListChanged(Elapsed()); } AnimationAttributeChanged(); - } else if (name == SVGNames::endAttr) { + } else if (name == svg_names::kEndAttr) { if (!conditions_.IsEmpty()) { ClearConditions(); - ParseBeginOrEnd(FastGetAttribute(SVGNames::beginAttr), kBegin); + ParseBeginOrEnd(FastGetAttribute(svg_names::kBeginAttr), kBegin); } ParseBeginOrEnd(value.GetString(), kEnd); if (isConnected()) { @@ -532,23 +532,23 @@ void SVGSMILElement::ParseAttribute(const AttributeModificationParams& params) { EndListChanged(Elapsed()); } AnimationAttributeChanged(); - } else if (name == SVGNames::onbeginAttr) { - SetAttributeEventListener(EventTypeNames::beginEvent, + } else if (name == svg_names::kOnbeginAttr) { + SetAttributeEventListener(event_type_names::kBeginEvent, CreateAttributeEventListener(this, name, value)); - } else if (name == SVGNames::onendAttr) { - SetAttributeEventListener(EventTypeNames::endEvent, + } else if (name == svg_names::kOnendAttr) { + SetAttributeEventListener(event_type_names::kEndEvent, CreateAttributeEventListener(this, name, value)); - } else if (name == SVGNames::onrepeatAttr) { - SetAttributeEventListener(EventTypeNames::repeatEvent, + } else if (name == svg_names::kOnrepeatAttr) { + SetAttributeEventListener(event_type_names::kRepeatEvent, CreateAttributeEventListener(this, name, value)); - } else if (name == SVGNames::restartAttr) { + } else if (name == svg_names::kRestartAttr) { if (value == "never") restart_ = kRestartNever; else if (value == "whenNotActive") restart_ = kRestartWhenNotActive; else restart_ = kRestartAlways; - } else if (name == SVGNames::fillAttr) { + } else if (name == svg_names::kFillAttr) { fill_ = value == "freeze" ? kFillFreeze : kFillRemove; } else { SVGElement::ParseAttribute(params); @@ -556,18 +556,18 @@ void SVGSMILElement::ParseAttribute(const AttributeModificationParams& params) { } void SVGSMILElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::durAttr) { + if (attr_name == svg_names::kDurAttr) { cached_dur_ = kInvalidCachedTime; - } else if (attr_name == SVGNames::repeatDurAttr) { + } else if (attr_name == svg_names::kRepeatDurAttr) { cached_repeat_dur_ = kInvalidCachedTime; - } else if (attr_name == SVGNames::repeatCountAttr) { + } else if (attr_name == svg_names::kRepeatCountAttr) { cached_repeat_count_ = kInvalidCachedTime; - } else if (attr_name == SVGNames::minAttr) { + } else if (attr_name == svg_names::kMinAttr) { cached_min_ = kInvalidCachedTime; - } else if (attr_name == SVGNames::maxAttr) { + } else if (attr_name == svg_names::kMaxAttr) { cached_max_ = kInvalidCachedTime; - } else if (attr_name.Matches(SVGNames::hrefAttr) || - attr_name.Matches(XLinkNames::hrefAttr)) { + } else if (attr_name.Matches(svg_names::kHrefAttr) || + attr_name.Matches(xlink_names::kHrefAttr)) { // TODO(fs): Could be smarter here when 'href' is specified and 'xlink:href' // is changed. SVGElement::InvalidationGuard invalidation_guard(this); @@ -647,7 +647,7 @@ bool SVGSMILElement::IsFrozen() const { SMILTime SVGSMILElement::Dur() const { if (cached_dur_ != kInvalidCachedTime) return cached_dur_; - const AtomicString& value = FastGetAttribute(SVGNames::durAttr); + const AtomicString& value = FastGetAttribute(svg_names::kDurAttr); SMILTime clock_value = ParseClockValue(value); return cached_dur_ = clock_value <= 0 ? SMILTime::Unresolved() : clock_value; } @@ -655,7 +655,7 @@ SMILTime SVGSMILElement::Dur() const { SMILTime SVGSMILElement::RepeatDur() const { if (cached_repeat_dur_ != kInvalidCachedTime) return cached_repeat_dur_; - const AtomicString& value = FastGetAttribute(SVGNames::repeatDurAttr); + const AtomicString& value = FastGetAttribute(svg_names::kRepeatDurAttr); SMILTime clock_value = ParseClockValue(value); cached_repeat_dur_ = clock_value <= 0 ? SMILTime::Unresolved() : clock_value; return cached_repeat_dur_; @@ -666,7 +666,7 @@ SMILTime SVGSMILElement::RepeatCount() const { if (cached_repeat_count_ != kInvalidCachedTime) return cached_repeat_count_; SMILTime computed_repeat_count = SMILTime::Unresolved(); - const AtomicString& value = FastGetAttribute(SVGNames::repeatCountAttr); + const AtomicString& value = FastGetAttribute(svg_names::kRepeatCountAttr); if (!value.IsNull()) { DEFINE_STATIC_LOCAL(const AtomicString, indefinite_value, ("indefinite")); if (value == indefinite_value) { @@ -685,7 +685,7 @@ SMILTime SVGSMILElement::RepeatCount() const { SMILTime SVGSMILElement::MaxValue() const { if (cached_max_ != kInvalidCachedTime) return cached_max_; - const AtomicString& value = FastGetAttribute(SVGNames::maxAttr); + const AtomicString& value = FastGetAttribute(svg_names::kMaxAttr); SMILTime result = ParseClockValue(value); return cached_max_ = (result.IsUnresolved() || result <= 0) ? SMILTime::Indefinite() @@ -695,7 +695,7 @@ SMILTime SVGSMILElement::MaxValue() const { SMILTime SVGSMILElement::MinValue() const { if (cached_min_ != kInvalidCachedTime) return cached_min_; - const AtomicString& value = FastGetAttribute(SVGNames::minAttr); + const AtomicString& value = FastGetAttribute(svg_names::kMinAttr); SMILTime result = ParseClockValue(value); return cached_min_ = (result.IsUnresolved() || result < 0) ? 0 : result; } @@ -1130,7 +1130,7 @@ bool SVGSMILElement::Progress(double elapsed, bool seek_to_time) { if (animation_is_contributing) { if (old_active_state == kInactive || restarted_interval == kDidRestartInterval) { - ScheduleEvent(EventTypeNames::beginEvent); + ScheduleEvent(event_type_names::kBeginEvent); StartedActiveInterval(); } @@ -1143,14 +1143,14 @@ bool SVGSMILElement::Progress(double elapsed, bool seek_to_time) { if ((old_active_state == kActive && GetActiveState() != kActive) || restarted_interval == kDidRestartInterval) { - ScheduleEvent(EventTypeNames::endEvent); + ScheduleEvent(event_type_names::kEndEvent); EndedActiveInterval(); } // Triggering all the pending events if the animation timeline is changed. if (seek_to_time) { if (GetActiveState() == kInactive) - ScheduleEvent(EventTypeNames::beginEvent); + ScheduleEvent(event_type_names::kBeginEvent); if (repeat) { for (unsigned repeat_event_count = 1; repeat_event_count < repeat; @@ -1161,7 +1161,7 @@ bool SVGSMILElement::Progress(double elapsed, bool seek_to_time) { } if (GetActiveState() == kInactive || GetActiveState() == kFrozen) - ScheduleEvent(EventTypeNames::endEvent); + ScheduleEvent(event_type_names::kEndEvent); } next_progress_time_ = CalculateNextProgressTime(elapsed); @@ -1232,7 +1232,7 @@ void SVGSMILElement::EndedActiveInterval() { void SVGSMILElement::ScheduleRepeatEvents(unsigned count) { repeat_event_count_list_.push_back(count); - ScheduleEvent(EventTypeNames::repeatEvent); + ScheduleEvent(event_type_names::kRepeatEvent); ScheduleEvent(AtomicString("repeatn")); } @@ -1244,9 +1244,10 @@ void SVGSMILElement::ScheduleEvent(const AtomicString& event_type) { } void SVGSMILElement::DispatchPendingEvent(const AtomicString& event_type) { - DCHECK(event_type == EventTypeNames::endEvent || - event_type == EventTypeNames::beginEvent || - event_type == EventTypeNames::repeatEvent || event_type == "repeatn"); + DCHECK(event_type == event_type_names::kEndEvent || + event_type == event_type_names::kBeginEvent || + event_type == event_type_names::kRepeatEvent || + event_type == "repeatn"); if (event_type == "repeatn") { unsigned repeat_event_count = repeat_event_count_list_.front(); repeat_event_count_list_.EraseAt(0); diff --git a/chromium/third_party/blink/renderer/core/svg/animation/svg_smil_element.h b/chromium/third_party/blink/renderer/core/svg/animation/svg_smil_element.h index b6545a42e20..ccca384b6ea 100644 --- a/chromium/third_party/blink/renderer/core/svg/animation/svg_smil_element.h +++ b/chromium/third_party/blink/renderer/core/svg/animation/svg_smil_element.h @@ -192,8 +192,16 @@ class CORE_EXPORT SVGSMILElement : public SVGElement, public SVGTests { const AtomicString& name, SMILTime offset, int repeat = -1) { - return new Condition(type, begin_or_end, base_id, name, offset, repeat); + return MakeGarbageCollected(type, begin_or_end, base_id, name, + offset, repeat); } + + Condition(Type, + BeginOrEnd, + const AtomicString& base_id, + const AtomicString& name, + SMILTime offset, + int repeat); ~Condition(); void Trace(blink::Visitor*); @@ -213,13 +221,6 @@ class CORE_EXPORT SVGSMILElement : public SVGElement, public SVGTests { void DisconnectEventBase(SVGSMILElement&); private: - Condition(Type, - BeginOrEnd, - const AtomicString& base_id, - const AtomicString& name, - SMILTime offset, - int repeat); - Type type_; BeginOrEnd begin_or_end_; AtomicString base_id_; @@ -298,11 +299,11 @@ class CORE_EXPORT SVGSMILElement : public SVGElement, public SVGTests { }; inline bool IsSVGSMILElement(const SVGElement& element) { - return element.HasTagName(SVGNames::setTag) || - element.HasTagName(SVGNames::animateTag) || - element.HasTagName(SVGNames::animateMotionTag) || - element.HasTagName(SVGNames::animateTransformTag) || - element.HasTagName((SVGNames::discardTag)); + return element.HasTagName(svg_names::kSetTag) || + element.HasTagName(svg_names::kAnimateTag) || + element.HasTagName(svg_names::kAnimateMotionTag) || + element.HasTagName(svg_names::kAnimateTransformTag) || + element.HasTagName((svg_names::kDiscardTag)); } DEFINE_SVGELEMENT_TYPE_CASTS_WITH_FUNCTION(SVGSMILElement); diff --git a/chromium/third_party/blink/renderer/core/svg/graphics/filters/svg_fe_image.cc b/chromium/third_party/blink/renderer/core/svg/graphics/filters/svg_fe_image.cc index 5464eb85da9..73d1f564544 100644 --- a/chromium/third_party/blink/renderer/core/svg/graphics/filters/svg_fe_image.cc +++ b/chromium/third_party/blink/renderer/core/svg/graphics/filters/svg_fe_image.cc @@ -69,7 +69,8 @@ FEImage* FEImage::CreateWithImage( Filter* filter, scoped_refptr image, SVGPreserveAspectRatio* preserve_aspect_ratio) { - return new FEImage(filter, std::move(image), preserve_aspect_ratio); + return MakeGarbageCollected(filter, std::move(image), + preserve_aspect_ratio); } FEImage* FEImage::CreateWithIRIReference( @@ -77,7 +78,8 @@ FEImage* FEImage::CreateWithIRIReference( TreeScope& tree_scope, const String& href, SVGPreserveAspectRatio* preserve_aspect_ratio) { - return new FEImage(filter, tree_scope, href, preserve_aspect_ratio); + return MakeGarbageCollected(filter, tree_scope, href, + preserve_aspect_ratio); } static FloatRect GetLayoutObjectRepaintRect(LayoutObject* layout_object) { diff --git a/chromium/third_party/blink/renderer/core/svg/graphics/filters/svg_fe_image.h b/chromium/third_party/blink/renderer/core/svg/graphics/filters/svg_fe_image.h index 9628569647d..7e318cee9e9 100644 --- a/chromium/third_party/blink/renderer/core/svg/graphics/filters/svg_fe_image.h +++ b/chromium/third_party/blink/renderer/core/svg/graphics/filters/svg_fe_image.h @@ -43,6 +43,9 @@ class FEImage final : public FilterEffect { const String&, SVGPreserveAspectRatio*); + FEImage(Filter*, scoped_refptr, SVGPreserveAspectRatio*); + FEImage(Filter*, TreeScope&, const String&, SVGPreserveAspectRatio*); + // feImage does not perform color interpolation of any kind, so doesn't // depend on the value of color-interpolation-filters. void SetOperatingInterpolationSpace(InterpolationSpace) override {} @@ -54,8 +57,6 @@ class FEImage final : public FilterEffect { private: ~FEImage() override = default; - FEImage(Filter*, scoped_refptr, SVGPreserveAspectRatio*); - FEImage(Filter*, TreeScope&, const String&, SVGPreserveAspectRatio*); LayoutObject* ReferencedLayoutObject() const; FilterEffectType GetFilterEffectType() const override { diff --git a/chromium/third_party/blink/renderer/core/svg/graphics/filters/svg_filter_builder.h b/chromium/third_party/blink/renderer/core/svg/graphics/filters/svg_filter_builder.h index e0bfa7826ee..f112e888ff8 100644 --- a/chromium/third_party/blink/renderer/core/svg/graphics/filters/svg_filter_builder.h +++ b/chromium/third_party/blink/renderer/core/svg/graphics/filters/svg_filter_builder.h @@ -42,7 +42,11 @@ class SVGFilterElement; class SVGFilterGraphNodeMap final : public GarbageCollected { public: - static SVGFilterGraphNodeMap* Create() { return new SVGFilterGraphNodeMap; } + static SVGFilterGraphNodeMap* Create() { + return MakeGarbageCollected(); + } + + SVGFilterGraphNodeMap(); typedef HeapHashSet> FilterEffectSet; @@ -66,8 +70,6 @@ class SVGFilterGraphNodeMap final void Trace(blink::Visitor*); private: - SVGFilterGraphNodeMap(); - // The value is a list, which contains those filter effects, // which depends on the key filter effect. HeapHashMap, FilterEffectSet> effect_references_; diff --git a/chromium/third_party/blink/renderer/core/svg/graphics/svg_image.cc b/chromium/third_party/blink/renderer/core/svg/graphics/svg_image.cc index 2ed010aa064..59a27fd3ddb 100644 --- a/chromium/third_party/blink/renderer/core/svg/graphics/svg_image.cc +++ b/chromium/third_party/blink/renderer/core/svg/graphics/svg_image.cc @@ -53,6 +53,7 @@ #include "third_party/blink/renderer/core/svg/svg_svg_element.h" #include "third_party/blink/renderer/platform/bindings/script_forbidden_scope.h" #include "third_party/blink/renderer/platform/geometry/int_rect.h" +#include "third_party/blink/renderer/platform/geometry/length_functions.h" #include "third_party/blink/renderer/platform/graphics/color.h" #include "third_party/blink/renderer/platform/graphics/graphics_context.h" #include "third_party/blink/renderer/platform/graphics/image_observer.h" @@ -62,7 +63,6 @@ #include "third_party/blink/renderer/platform/graphics/paint/paint_record.h" #include "third_party/blink/renderer/platform/graphics/paint/paint_record_builder.h" #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h" -#include "third_party/blink/renderer/platform/length_functions.h" namespace blink { @@ -680,7 +680,7 @@ void SVGImage::AdvanceAnimationForTesting() { page_->Animator().ServiceScriptedAnimations( base::TimeTicks() + base::TimeDelta::FromSecondsD(root_element->getCurrentTime())); - GetImageObserver()->AnimationAdvanced(this); + GetImageObserver()->Changed(this); } } @@ -766,7 +766,6 @@ Image::SizeAvailability SVGImage::DataChanged(bool all_data_received) { page = Page::Create(page_clients); page->GetSettings().SetScriptEnabled(false); page->GetSettings().SetPluginsEnabled(false); - page->GetSettings().SetAcceleratedCompositingEnabled(false); // Because this page is detached, it can't get default font settings // from the embedder. Copy over font settings so we have sensible @@ -791,7 +790,7 @@ Image::SizeAvailability SVGImage::DataChanged(bool all_data_received) { { TRACE_EVENT0("blink", "SVGImage::dataChanged::createFrame"); DCHECK(!frame_client_); - frame_client_ = new SVGImageLocalFrameClient(this); + frame_client_ = MakeGarbageCollected(this); frame = LocalFrame::Create(frame_client_, *page, nullptr); frame->SetView(LocalFrameView::Create(*frame)); frame->Init(); diff --git a/chromium/third_party/blink/renderer/core/svg/graphics/svg_image_chrome_client.cc b/chromium/third_party/blink/renderer/core/svg/graphics/svg_image_chrome_client.cc index 2ffa6b17050..fe25613cd1d 100644 --- a/chromium/third_party/blink/renderer/core/svg/graphics/svg_image_chrome_client.cc +++ b/chromium/third_party/blink/renderer/core/svg/graphics/svg_image_chrome_client.cc @@ -44,16 +44,13 @@ static constexpr TimeDelta kAnimationFrameDelay = SVGImageChromeClient::SVGImageChromeClient(SVGImage* image) : image_(image), animation_timer_(std::make_unique>( - blink::Platform::Current() - ->CurrentThread() - ->Scheduler() - ->CompositorTaskRunner(), + ThreadScheduler::Current()->CompositorTaskRunner(), this, &SVGImageChromeClient::AnimationTimerFired)), timeline_state_(kRunning) {} SVGImageChromeClient* SVGImageChromeClient::Create(SVGImage* image) { - return new SVGImageChromeClient(image); + return MakeGarbageCollected(image); } bool SVGImageChromeClient::IsSVGImageChromeClient() const { diff --git a/chromium/third_party/blink/renderer/core/svg/graphics/svg_image_chrome_client.h b/chromium/third_party/blink/renderer/core/svg/graphics/svg_image_chrome_client.h index 059446061e1..a6177c2c389 100644 --- a/chromium/third_party/blink/renderer/core/svg/graphics/svg_image_chrome_client.h +++ b/chromium/third_party/blink/renderer/core/svg/graphics/svg_image_chrome_client.h @@ -43,6 +43,8 @@ class CORE_EXPORT SVGImageChromeClient final : public EmptyChromeClient { public: static SVGImageChromeClient* Create(SVGImage*); + explicit SVGImageChromeClient(SVGImage*); + bool IsSVGImageChromeClient() const override; SVGImage* GetImage() const { return image_; } @@ -54,8 +56,6 @@ class CORE_EXPORT SVGImageChromeClient final : public EmptyChromeClient { bool IsSuspended() const { return timeline_state_ >= kSuspended; } private: - explicit SVGImageChromeClient(SVGImage*); - void ChromeDestroyed() override; void InvalidateRect(const IntRect&) override; void ScheduleAnimation(const LocalFrameView*) override; diff --git a/chromium/third_party/blink/renderer/core/svg/graphics/svg_image_test.cc b/chromium/third_party/blink/renderer/core/svg/graphics/svg_image_test.cc index 629d8d3d0df..c1d26a3b287 100644 --- a/chromium/third_party/blink/renderer/core/svg/graphics/svg_image_test.cc +++ b/chromium/third_party/blink/renderer/core/svg/graphics/svg_image_test.cc @@ -33,7 +33,7 @@ class SVGImageTest : public testing::Test { SVGImage& GetImage() { return *image_; } void Load(const char* data, bool should_pause) { - observer_ = new PauseControlImageObserver(should_pause); + observer_ = MakeGarbageCollected(should_pause); image_ = SVGImage::Create(observer_); image_->SetData(SharedBuffer::Create(data, strlen(data)), true); } @@ -62,7 +62,6 @@ class SVGImageTest : public testing::Test { void DecodedSizeChangedTo(const Image*, size_t new_size) override {} bool ShouldPauseAnimation(const Image*) override { return should_pause_; } - void AnimationAdvanced(const Image*) override {} void Changed(const Image*) override {} diff --git a/chromium/third_party/blink/renderer/core/svg/linear_gradient_attributes.h b/chromium/third_party/blink/renderer/core/svg/linear_gradient_attributes.h index 775fffaba5a..a4de407df19 100644 --- a/chromium/third_party/blink/renderer/core/svg/linear_gradient_attributes.h +++ b/chromium/third_party/blink/renderer/core/svg/linear_gradient_attributes.h @@ -95,9 +95,11 @@ class LinearGradientAttributesWrapper : public GarbageCollectedFinalized { public: static LinearGradientAttributesWrapper* Create() { - return new LinearGradientAttributesWrapper; + return MakeGarbageCollected(); } + LinearGradientAttributesWrapper() = default; + LinearGradientAttributes& Attributes() { return attributes_; } void Set(const LinearGradientAttributes& attributes) { attributes_ = attributes; @@ -105,8 +107,6 @@ class LinearGradientAttributesWrapper void Trace(blink::Visitor* visitor) { visitor->Trace(attributes_); } private: - LinearGradientAttributesWrapper() = default; - LinearGradientAttributes attributes_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/pattern_attributes.h b/chromium/third_party/blink/renderer/core/svg/pattern_attributes.h index b19ea533a5c..85e7696b836 100644 --- a/chromium/third_party/blink/renderer/core/svg/pattern_attributes.h +++ b/chromium/third_party/blink/renderer/core/svg/pattern_attributes.h @@ -172,16 +172,16 @@ class PatternAttributesWrapper : public GarbageCollected { public: static PatternAttributesWrapper* Create() { - return new PatternAttributesWrapper; + return MakeGarbageCollected(); } + PatternAttributesWrapper() = default; + PatternAttributes& Attributes() { return attributes_; } void Set(const PatternAttributes& attributes) { attributes_ = attributes; } void Trace(blink::Visitor* visitor) { visitor->Trace(attributes_); } private: - PatternAttributesWrapper() = default; - PatternAttributes attributes_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/properties/svg_animated_property.h b/chromium/third_party/blink/renderer/core/svg/properties/svg_animated_property.h index 2ecf29619a6..cd8948bb20a 100644 --- a/chromium/third_party/blink/renderer/core/svg/properties/svg_animated_property.h +++ b/chromium/third_party/blink/renderer/core/svg/properties/svg_animated_property.h @@ -32,7 +32,7 @@ #define THIRD_PARTY_BLINK_RENDERER_CORE_SVG_PROPERTIES_SVG_ANIMATED_PROPERTY_H_ #include "base/macros.h" -#include "third_party/blink/renderer/core/css_property_names.h" +#include "third_party/blink/renderer/core/css/css_property_names.h" #include "third_party/blink/renderer/core/dom/qualified_name.h" #include "third_party/blink/renderer/core/svg/properties/svg_property_info.h" #include "third_party/blink/renderer/core/svg/properties/svg_property_tear_off.h" diff --git a/chromium/third_party/blink/renderer/core/svg/radial_gradient_attributes.h b/chromium/third_party/blink/renderer/core/svg/radial_gradient_attributes.h index 1fe61dd8cf6..747d1d3655a 100644 --- a/chromium/third_party/blink/renderer/core/svg/radial_gradient_attributes.h +++ b/chromium/third_party/blink/renderer/core/svg/radial_gradient_attributes.h @@ -117,9 +117,11 @@ class RadialGradientAttributesWrapper : public GarbageCollectedFinalized { public: static RadialGradientAttributesWrapper* Create() { - return new RadialGradientAttributesWrapper; + return MakeGarbageCollected(); } + RadialGradientAttributesWrapper() = default; + RadialGradientAttributes& Attributes() { return attributes_; } void Set(const RadialGradientAttributes& attributes) { attributes_ = attributes; @@ -127,8 +129,6 @@ class RadialGradientAttributesWrapper void Trace(blink::Visitor* visitor) { visitor->Trace(attributes_); } private: - RadialGradientAttributesWrapper() = default; - RadialGradientAttributes attributes_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_a_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_a_element.cc index 14afe3d3752..3e252ea711c 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_a_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_a_element.cc @@ -47,12 +47,12 @@ namespace blink { -using namespace HTMLNames; +using namespace html_names; inline SVGAElement::SVGAElement(Document& document) - : SVGGraphicsElement(SVGNames::aTag, document), + : SVGGraphicsElement(svg_names::kATag, document), SVGURIReference(this), - svg_target_(SVGAnimatedString::Create(this, SVGNames::targetAttr)) { + svg_target_(SVGAnimatedString::Create(this, svg_names::kTargetAttr)) { AddToPropertyMap(svg_target_); } @@ -66,7 +66,7 @@ DEFINE_NODE_FACTORY(SVGAElement) String SVGAElement::title() const { // If the xlink:title is set (non-empty string), use it. - const AtomicString& title = FastGetAttribute(XLinkNames::titleAttr); + const AtomicString& title = FastGetAttribute(xlink_names::kTitleAttr); if (!title.IsEmpty()) return title; @@ -126,7 +126,7 @@ void SVGAElement::DefaultEventHandler(Event& event) { } AtomicString target(svg_target_->CurrentValue()->Value()); - if (target.IsEmpty() && FastGetAttribute(XLinkNames::showAttr) == "new") + if (target.IsEmpty() && FastGetAttribute(xlink_names::kShowAttr) == "new") target = AtomicString("_blank"); event.SetDefaultHandled(); @@ -172,7 +172,7 @@ bool SVGAElement::ShouldHaveFocusAppearance() const { } bool SVGAElement::IsURLAttribute(const Attribute& attribute) const { - return attribute.GetName().LocalName() == hrefAttr || + return attribute.GetName().LocalName() == kHrefAttr || SVGGraphicsElement::IsURLAttribute(attribute); } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_angle.cc b/chromium/third_party/blink/renderer/core/svg/svg_angle.cc index cccd5e46a7c..f6e5f5d4814 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_angle.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_angle.cc @@ -22,6 +22,7 @@ #include "third_party/blink/renderer/core/svg/svg_angle.h" #include "third_party/blink/renderer/core/svg/svg_animation_element.h" +#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h" #include "third_party/blink/renderer/core/svg/svg_parser_utilities.h" #include "third_party/blink/renderer/platform/wtf/math_extras.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" @@ -29,23 +30,16 @@ namespace blink { template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries() { - DEFINE_STATIC_LOCAL(SVGEnumerationStringEntries, entries, ()); - if (entries.IsEmpty()) { - entries.push_back(std::make_pair(kSVGMarkerOrientAuto, "auto")); - entries.push_back(std::make_pair(kSVGMarkerOrientAngle, "angle")); - entries.push_back( - std::make_pair(kSVGMarkerOrientAutoStartReverse, "auto-start-reverse")); - } +const SVGEnumerationMap& GetEnumerationMap() { + static const SVGEnumerationMap::Entry enum_items[] = { + {kSVGMarkerOrientAuto, "auto"}, + {kSVGMarkerOrientAngle, "angle"}, + {kSVGMarkerOrientAutoStartReverse, "auto-start-reverse"}, + }; + static const SVGEnumerationMap entries(enum_items, kSVGMarkerOrientAngle); return entries; } -template <> -unsigned short GetMaxExposedEnumValue() { - return kSVGMarkerOrientAngle; -} - SVGMarkerOrientEnumeration::SVGMarkerOrientEnumeration(SVGAngle* angle) : SVGEnumeration(kSVGMarkerOrientAngle), angle_(angle) {} @@ -109,8 +103,8 @@ void SVGAngle::Trace(blink::Visitor* visitor) { } SVGAngle* SVGAngle::Clone() const { - return new SVGAngle(unit_type_, value_in_specified_units_, - orient_type_->EnumValue()); + return MakeGarbageCollected(unit_type_, value_in_specified_units_, + orient_type_->EnumValue()); } float SVGAngle::Value() const { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_angle.h b/chromium/third_party/blink/renderer/core/svg/svg_angle.h index 1ce89a2f040..0ceab5ed1d9 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_angle.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_angle.h @@ -38,19 +38,16 @@ enum SVGMarkerOrientType { kSVGMarkerOrientAngle, kSVGMarkerOrientAutoStartReverse }; -template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries(); -template <> -unsigned short GetMaxExposedEnumValue(); +DECLARE_SVG_ENUM_MAP(SVGMarkerOrientType); class SVGMarkerOrientEnumeration final : public SVGEnumeration { public: static SVGMarkerOrientEnumeration* Create(SVGAngle* angle) { - return new SVGMarkerOrientEnumeration(angle); + return MakeGarbageCollected(angle); } + SVGMarkerOrientEnumeration(SVGAngle*); ~SVGMarkerOrientEnumeration() override; void Add(SVGPropertyBase*, SVGElement*) override; @@ -66,8 +63,6 @@ class SVGMarkerOrientEnumeration final void Trace(blink::Visitor*) override; private: - SVGMarkerOrientEnumeration(SVGAngle*); - void NotifyChange() override; Member angle_; @@ -86,8 +81,10 @@ class SVGAngle final : public SVGPropertyHelper { kSvgAngletypeTurn = 5 }; - static SVGAngle* Create() { return new SVGAngle(); } + static SVGAngle* Create() { return MakeGarbageCollected(); } + SVGAngle(); + SVGAngle(SVGAngleType, float, SVGMarkerOrientType); ~SVGAngle() override; SVGAngleType UnitType() const { return unit_type_; } @@ -142,9 +139,6 @@ class SVGAngle final : public SVGPropertyHelper { void Trace(blink::Visitor*) override; private: - SVGAngle(); - SVGAngle(SVGAngleType, float, SVGMarkerOrientType); - void Assign(const SVGAngle&); SVGAngleType unit_type_; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_angle_tear_off.h b/chromium/third_party/blink/renderer/core/svg/svg_angle_tear_off.h index 951cf98744a..991960bbea5 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_angle_tear_off.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_angle_tear_off.h @@ -43,7 +43,8 @@ class SVGAngleTearOff final : public SVGPropertyTearOff { static SVGAngleTearOff* Create(SVGAngle* target, SVGAnimatedPropertyBase* binding, PropertyIsAnimValType property_is_anim_val) { - return new SVGAngleTearOff(target, binding, property_is_anim_val); + return MakeGarbageCollected(target, binding, + property_is_anim_val); } static SVGAngleTearOff* CreateDetached(); @@ -55,6 +56,9 @@ class SVGAngleTearOff final : public SVGPropertyTearOff { kSvgAngletypeGrad = SVGAngle::kSvgAngletypeGrad }; + SVGAngleTearOff(SVGAngle*, + SVGAnimatedPropertyBase* binding, + PropertyIsAnimValType); ~SVGAngleTearOff() override; unsigned short unitType() { @@ -80,10 +84,6 @@ class SVGAngleTearOff final : public SVGPropertyTearOff { void setValueAsString(const String&, ExceptionState&); private: - SVGAngleTearOff(SVGAngle*, - SVGAnimatedPropertyBase* binding, - PropertyIsAnimValType); - bool HasExposedAngleUnit() { return Target()->UnitType() <= SVGAngle::kSvgAngletypeGrad; } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animate_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_animate_element.cc index a642c1cc0ac..c88b7c7abd1 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animate_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_animate_element.cc @@ -91,8 +91,8 @@ QualifiedName ConstructQualifiedName(const SVGElement& svg_element, // "Animation elements treat attributeName='xlink:href' as being an alias // for targetting the 'href' attribute." // https://svgwg.org/svg2-draft/types.html#__svg__SVGURIReference__href - if (resolved_attr_name == XLinkNames::hrefAttr) - return SVGNames::hrefAttr; + if (resolved_attr_name == xlink_names::kHrefAttr) + return svg_names::kHrefAttr; return resolved_attr_name; } @@ -108,19 +108,20 @@ SVGAnimateElement::SVGAnimateElement(const QualifiedName& tag_name, attribute_type_(kAttributeTypeAuto) {} SVGAnimateElement* SVGAnimateElement::Create(Document& document) { - return new SVGAnimateElement(SVGNames::animateTag, document); + return MakeGarbageCollected(svg_names::kAnimateTag, + document); } SVGAnimateElement::~SVGAnimateElement() = default; bool SVGAnimateElement::IsSVGAnimationAttributeSettingJavaScriptURL( const Attribute& attribute) const { - if ((attribute.GetName() == SVGNames::fromAttr || - attribute.GetName() == SVGNames::toAttr) && + if ((attribute.GetName() == svg_names::kFromAttr || + attribute.GetName() == svg_names::kToAttr) && AttributeValueIsJavaScriptURL(attribute)) return true; - if (attribute.GetName() == SVGNames::valuesAttr) { + if (attribute.GetName() == svg_names::kValuesAttr) { Vector parts; if (!ParseValues(attribute.Value(), parts)) { // Assume the worst. @@ -140,7 +141,7 @@ Node::InsertionNotificationRequest SVGAnimateElement::InsertedInto( SVGAnimationElement::InsertedInto(root_parent); if (root_parent.isConnected()) { SetAttributeName(ConstructQualifiedName( - *this, FastGetAttribute(SVGNames::attributeNameAttr))); + *this, FastGetAttribute(svg_names::kAttributeNameAttr))); } return kInsertionDone; } @@ -153,12 +154,12 @@ void SVGAnimateElement::RemovedFrom(ContainerNode& root_parent) { void SVGAnimateElement::ParseAttribute( const AttributeModificationParams& params) { - if (params.name == SVGNames::attributeTypeAttr) { + if (params.name == svg_names::kAttributeTypeAttr) { SetAttributeType(params.new_value); AnimationAttributeChanged(); return; } - if (params.name == SVGNames::attributeNameAttr) { + if (params.name == svg_names::kAttributeNameAttr) { SetAttributeName(ConstructQualifiedName(*this, params.new_value)); AnimationAttributeChanged(); return; @@ -465,8 +466,8 @@ void SVGAnimateElement::ClearAnimatedType() { target_element->EnsureAnimatedSMILStyleProperties(); if (property_set->RemoveProperty(css_property_id_)) { target_element->SetNeedsStyleRecalc( - kLocalStyleChange, - StyleChangeReasonForTracing::Create(StyleChangeReason::kAnimation)); + kLocalStyleChange, StyleChangeReasonForTracing::Create( + style_change_reason::kAnimation)); } } } @@ -507,7 +508,7 @@ void SVGAnimateElement::ApplyResultsToTarget() { .did_change) { targetElement()->SetNeedsStyleRecalc( kLocalStyleChange, - StyleChangeReasonForTracing::Create(StyleChangeReason::kAnimation)); + StyleChangeReasonForTracing::Create(style_change_reason::kAnimation)); } } if (IsAnimatingSVGDom()) { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animate_element.h b/chromium/third_party/blink/renderer/core/svg/svg_animate_element.h index 0a300c31b9e..796237f1dfa 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animate_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animate_element.h @@ -25,7 +25,7 @@ #include #include "third_party/blink/renderer/core/core_export.h" -#include "third_party/blink/renderer/core/css_property_names.h" +#include "third_party/blink/renderer/core/css/css_property_names.h" #include "third_party/blink/renderer/core/svg/svg_animation_element.h" #include "third_party/blink/renderer/core/svg_names.h" #include "third_party/blink/renderer/platform/heap/handle.h" @@ -41,6 +41,8 @@ class CORE_EXPORT SVGAnimateElement : public SVGAnimationElement { public: static SVGAnimateElement* Create(Document&); + + SVGAnimateElement(const QualifiedName&, Document&); ~SVGAnimateElement() override; void Trace(blink::Visitor*) override; @@ -52,8 +54,6 @@ class CORE_EXPORT SVGAnimateElement : public SVGAnimationElement { bool AnimatedPropertyTypeSupportsAddition(); protected: - SVGAnimateElement(const QualifiedName&, Document&); - bool HasValidTarget() override; void WillChangeAnimationTarget() final; @@ -133,9 +133,9 @@ class CORE_EXPORT SVGAnimateElement : public SVGAnimationElement { }; inline bool IsSVGAnimateElement(const SVGElement& element) { - return element.HasTagName(SVGNames::animateTag) || - element.HasTagName(SVGNames::animateTransformTag) || - element.HasTagName(SVGNames::setTag); + return element.HasTagName(svg_names::kAnimateTag) || + element.HasTagName(svg_names::kAnimateTransformTag) || + element.HasTagName(svg_names::kSetTag); } DEFINE_SVGELEMENT_TYPE_CASTS_WITH_FUNCTION(SVGAnimateElement); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animate_motion_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_animate_motion_element.cc index 5467317ab2a..0c229b5e601 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animate_motion_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_animate_motion_element.cc @@ -57,7 +57,7 @@ bool TargetCanHaveMotionTransform(const SVGElement& target) { } inline SVGAnimateMotionElement::SVGAnimateMotionElement(Document& document) - : SVGAnimationElement(SVGNames::animateMotionTag, document), + : SVGAnimationElement(svg_names::kAnimateMotionTag, document), has_to_point_at_end_of_duration_(false) { SetCalcMode(kCalcModePaced); } @@ -73,7 +73,7 @@ bool SVGAnimateMotionElement::HasValidTarget() { void SVGAnimateMotionElement::ParseAttribute( const AttributeModificationParams& params) { - if (params.name == SVGNames::pathAttr) { + if (params.name == svg_names::kPathAttr) { path_ = Path(); BuildPathFromString(params.new_value, path_); UpdateAnimationPath(); @@ -87,7 +87,7 @@ SVGAnimateMotionElement::RotateMode SVGAnimateMotionElement::GetRotateMode() const { DEFINE_STATIC_LOCAL(const AtomicString, auto_val, ("auto")); DEFINE_STATIC_LOCAL(const AtomicString, auto_reverse, ("auto-reverse")); - const AtomicString& rotate = getAttribute(SVGNames::rotateAttr); + const AtomicString& rotate = getAttribute(svg_names::kRotateAttr); if (rotate == auto_val) return kRotateAuto; if (rotate == auto_reverse) @@ -108,7 +108,7 @@ void SVGAnimateMotionElement::UpdateAnimationPath() { } } - if (!found_m_path && FastHasAttribute(SVGNames::pathAttr)) + if (!found_m_path && FastHasAttribute(svg_names::kPathAttr)) animation_path_ = path_; UpdateAnimationMode(); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animate_transform_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_animate_transform_element.cc index 12ecd8caa71..4972e03e215 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animate_transform_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_animate_transform_element.cc @@ -30,7 +30,7 @@ namespace blink { inline SVGAnimateTransformElement::SVGAnimateTransformElement( Document& document) - : SVGAnimateElement(SVGNames::animateTransformTag, document), + : SVGAnimateElement(svg_names::kAnimateTransformTag, document), transform_type_(kSvgTransformUnknown) {} DEFINE_NODE_FACTORY(SVGAnimateTransformElement) @@ -67,7 +67,7 @@ SVGPropertyBase* SVGAnimateTransformElement::CreatePropertyForAnimation( void SVGAnimateTransformElement::ParseAttribute( const AttributeModificationParams& params) { - if (params.name == SVGNames::typeAttr) { + if (params.name == svg_names::kTypeAttr) { transform_type_ = ParseTransformType(params.new_value); if (transform_type_ == kSvgTransformMatrix) transform_type_ = kSvgTransformUnknown; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_angle.cc b/chromium/third_party/blink/renderer/core/svg/svg_animated_angle.cc index 47ddc36a7e5..2f69e0eb03c 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_angle.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_angle.cc @@ -36,11 +36,11 @@ namespace blink { SVGAnimatedAngle::SVGAnimatedAngle(SVGElement* context_element) : SVGAnimatedProperty(context_element, - SVGNames::orientAttr, + svg_names::kOrientAttr, SVGAngle::Create()), orient_type_(SVGAnimatedEnumeration::Create( context_element, - SVGNames::orientAttr, + svg_names::kOrientAttr, BaseValue()->OrientType())) {} SVGAnimatedAngle::~SVGAnimatedAngle() = default; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_angle.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_angle.h index 3e8761e6faf..a7edb0aca21 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_angle.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_angle.h @@ -45,9 +45,10 @@ class SVGAnimatedAngle final : public ScriptWrappable, public: static SVGAnimatedAngle* Create(SVGElement* context_element) { - return new SVGAnimatedAngle(context_element); + return MakeGarbageCollected(context_element); } + explicit SVGAnimatedAngle(SVGElement* context_element); ~SVGAnimatedAngle() override; SVGAnimatedEnumeration* OrientType() { @@ -63,9 +64,6 @@ class SVGAnimatedAngle final : public ScriptWrappable, void Trace(blink::Visitor*) override; - protected: - explicit SVGAnimatedAngle(SVGElement* context_element); - private: Member> orient_type_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_boolean.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_boolean.h index 1220c930907..b7c06b10871 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_boolean.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_boolean.h @@ -45,20 +45,20 @@ class SVGAnimatedBoolean final : public ScriptWrappable, public: static SVGAnimatedBoolean* Create(SVGElement* context_element, const QualifiedName& attribute_name) { - return new SVGAnimatedBoolean(context_element, attribute_name); + return MakeGarbageCollected(context_element, + attribute_name); } - void Trace(blink::Visitor* visitor) override { - SVGAnimatedProperty::Trace(visitor); - ScriptWrappable::Trace(visitor); - } - - protected: SVGAnimatedBoolean(SVGElement* context_element, const QualifiedName& attribute_name) : SVGAnimatedProperty(context_element, attribute_name, SVGBoolean::Create()) {} + + void Trace(blink::Visitor* visitor) override { + SVGAnimatedProperty::Trace(visitor); + ScriptWrappable::Trace(visitor); + } }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_color.cc b/chromium/third_party/blink/renderer/core/svg/svg_animated_color.cc index ea32f72178e..906aca80cf7 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_color.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_color.cc @@ -19,6 +19,7 @@ #include "third_party/blink/renderer/core/svg/svg_animated_color.h" +#include "third_party/blink/renderer/core/css/css_color_value.h" #include "third_party/blink/renderer/core/css/parser/css_parser.h" #include "third_party/blink/renderer/core/layout/layout_object.h" #include "third_party/blink/renderer/core/svg/color_distance.h" @@ -36,7 +37,8 @@ SVGColorProperty::SVGColorProperty(const String& color_string) String SVGColorProperty::ValueAsString() const { return style_color_.IsCurrentColor() ? "currentColor" - : style_color_.GetColor().SerializedAsCSSComponentValue(); + : cssvalue::CSSColorValue::SerializeAsCSSComponentValue( + style_color_.GetColor()); } SVGPropertyBase* SVGColorProperty::CloneForAnimation(const String&) const { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_color.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_color.h index 0747ef29358..f59a49d17f2 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_color.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_color.h @@ -44,9 +44,11 @@ class SVGAnimationElement; class SVGColorProperty final : public SVGPropertyBase { public: static SVGColorProperty* Create(const String& color_string) { - return new SVGColorProperty(color_string); + return MakeGarbageCollected(color_string); } + explicit SVGColorProperty(const String&); + SVGPropertyBase* CloneForAnimation(const String&) const override; String ValueAsString() const override; @@ -64,8 +66,6 @@ class SVGColorProperty final : public SVGPropertyBase { AnimatedPropertyType GetType() const override { return ClassType(); } private: - explicit SVGColorProperty(const String&); - StyleColor style_color_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_enumeration.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_enumeration.h index b64f188d34c..cb8dfe6c45d 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_enumeration.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_enumeration.h @@ -42,7 +42,7 @@ class SVGAnimatedEnumeration : public SVGAnimatedEnumerationBase { SVGElement* context_element, const QualifiedName& attribute_name, Enum initial_value) { - return new SVGAnimatedEnumeration( + return MakeGarbageCollected( context_element, attribute_name, SVGEnumeration::Create(initial_value), static_cast(initial_value)); @@ -52,11 +52,20 @@ class SVGAnimatedEnumeration : public SVGAnimatedEnumerationBase { SVGElement* context_element, const QualifiedName& attribute_name, SVGEnumeration* initial_value) { - return new SVGAnimatedEnumeration( + return MakeGarbageCollected( context_element, attribute_name, initial_value, static_cast(initial_value->EnumValue())); } + SVGAnimatedEnumeration(SVGElement* context_element, + const QualifiedName& attribute_name, + SVGEnumeration* initial_value, + unsigned initial_enum_value) + : SVGAnimatedEnumerationBase(context_element, + attribute_name, + initial_value, + initial_enum_value) {} + SVGEnumeration* BaseValue() { return static_cast*>( SVGAnimatedEnumerationBase::BaseValue()); @@ -71,16 +80,6 @@ class SVGAnimatedEnumeration : public SVGAnimatedEnumerationBase { return static_cast*>( SVGAnimatedEnumerationBase::CurrentValue()); } - - protected: - SVGAnimatedEnumeration(SVGElement* context_element, - const QualifiedName& attribute_name, - SVGEnumeration* initial_value, - unsigned initial_enum_value) - : SVGAnimatedEnumerationBase(context_element, - attribute_name, - initial_value, - initial_enum_value) {} }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_href.cc b/chromium/third_party/blink/renderer/core/svg/svg_animated_href.cc index 2cfdfe71a05..accfa5b6398 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_href.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_href.cc @@ -12,7 +12,7 @@ namespace blink { SVGAnimatedHref* SVGAnimatedHref::Create(SVGElement* context_element) { - return new SVGAnimatedHref(context_element); + return MakeGarbageCollected(context_element); } void SVGAnimatedHref::Trace(blink::Visitor* visitor) { @@ -21,9 +21,9 @@ void SVGAnimatedHref::Trace(blink::Visitor* visitor) { } SVGAnimatedHref::SVGAnimatedHref(SVGElement* context_element) - : SVGAnimatedString(context_element, SVGNames::hrefAttr), + : SVGAnimatedString(context_element, svg_names::kHrefAttr), xlink_href_( - SVGAnimatedString::Create(context_element, XLinkNames::hrefAttr)) {} + SVGAnimatedString::Create(context_element, xlink_names::kHrefAttr)) {} void SVGAnimatedHref::AddToPropertyMap(SVGElement* element) { element->AddToPropertyMap(this); @@ -31,8 +31,8 @@ void SVGAnimatedHref::AddToPropertyMap(SVGElement* element) { } bool SVGAnimatedHref::IsKnownAttribute(const QualifiedName& attr_name) { - return attr_name.Matches(SVGNames::hrefAttr) || - attr_name.Matches(XLinkNames::hrefAttr); + return attr_name.Matches(svg_names::kHrefAttr) || + attr_name.Matches(xlink_names::kHrefAttr); } SVGString* SVGAnimatedHref::CurrentValue() { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_href.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_href.h index a1aae285c84..041276d6b8f 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_href.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_href.h @@ -21,6 +21,8 @@ class SVGAnimatedHref final : public SVGAnimatedString { public: static SVGAnimatedHref* Create(SVGElement* context_element); + explicit SVGAnimatedHref(SVGElement* context_element); + SVGString* CurrentValue(); const SVGString* CurrentValue() const; @@ -38,8 +40,6 @@ class SVGAnimatedHref final : public SVGAnimatedString { void Trace(blink::Visitor*) override; private: - explicit SVGAnimatedHref(SVGElement* context_element); - SVGAnimatedString* BackingString(); const SVGAnimatedString* BackingString() const; bool UseXLink() const; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_integer.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_integer.h index aed647f75b9..ab271dbb255 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_integer.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_integer.h @@ -51,26 +51,16 @@ class SVGAnimatedInteger : public ScriptWrappable, const QualifiedName& attribute_name, int initial) { SVGInteger* initial_value = SVGInteger::Create(initial); - return new SVGAnimatedInteger(context_element, attribute_name, - initial_value); + return MakeGarbageCollected( + context_element, attribute_name, initial_value); } static SVGAnimatedInteger* Create(SVGElement* context_element, const QualifiedName& attribute_name, SVGInteger* initial_value) { - return new SVGAnimatedInteger(context_element, attribute_name, - initial_value); + return MakeGarbageCollected( + context_element, attribute_name, initial_value); } - void SynchronizeAttribute() override; - - void SetParentOptionalInteger( - SVGAnimatedIntegerOptionalInteger* number_optional_integer) { - parent_integer_optional_integer_ = number_optional_integer; - } - - void Trace(blink::Visitor*) override; - - protected: SVGAnimatedInteger(SVGElement* context_element, const QualifiedName& attribute_name, SVGInteger* initial_value) @@ -81,6 +71,16 @@ class SVGAnimatedInteger : public ScriptWrappable, initial_value->Value()), parent_integer_optional_integer_(nullptr) {} + void SynchronizeAttribute() override; + + void SetParentOptionalInteger( + SVGAnimatedIntegerOptionalInteger* number_optional_integer) { + parent_integer_optional_integer_ = number_optional_integer; + } + + void Trace(blink::Visitor*) override; + + protected: Member parent_integer_optional_integer_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_integer_optional_integer.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_integer_optional_integer.h index a7a095bcbe9..776c9a5644c 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_integer_optional_integer.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_integer_optional_integer.h @@ -53,10 +53,14 @@ class SVGAnimatedIntegerOptionalInteger SVGElement* context_element, const QualifiedName& attribute_name, int initial_value) { - return new SVGAnimatedIntegerOptionalInteger(context_element, - attribute_name, initial_value); + return MakeGarbageCollected( + context_element, attribute_name, initial_value); } + SVGAnimatedIntegerOptionalInteger(SVGElement* context_element, + const QualifiedName& attribute_name, + int initial_value); + void SetAnimatedValue(SVGPropertyBase*) override; bool NeedsSynchronizeAttribute() const override; void AnimationEnded() override; @@ -67,10 +71,6 @@ class SVGAnimatedIntegerOptionalInteger void Trace(blink::Visitor*) override; protected: - SVGAnimatedIntegerOptionalInteger(SVGElement* context_element, - const QualifiedName& attribute_name, - int initial_value); - Member first_integer_; Member second_integer_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_length.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_length.h index 0f2cff3c3c4..587c23eeed6 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_length.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_length.h @@ -49,19 +49,10 @@ class SVGAnimatedLength : public ScriptWrappable, SVGLengthMode mode, SVGLength::Initial initial_value, CSSPropertyID css_property_id = CSSPropertyInvalid) { - return new SVGAnimatedLength(context_element, attribute_name, mode, - initial_value, css_property_id); + return MakeGarbageCollected( + context_element, attribute_name, mode, initial_value, css_property_id); } - SVGParsingError AttributeChanged(const String&) override; - - const CSSValue& CssValue() const { - return CurrentValue()->AsCSSPrimitiveValue(); - } - - void Trace(blink::Visitor*) override; - - protected: SVGAnimatedLength(SVGElement* context_element, const QualifiedName& attribute_name, SVGLengthMode mode, @@ -72,6 +63,14 @@ class SVGAnimatedLength : public ScriptWrappable, SVGLength::Create(initial_value, mode), css_property_id, static_cast(initial_value)) {} + + SVGParsingError AttributeChanged(const String&) override; + + const CSSValue& CssValue() const { + return CurrentValue()->AsCSSPrimitiveValue(); + } + + void Trace(blink::Visitor*) override; }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_length_list.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_length_list.h index 3738a2012b8..91905177f91 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_length_list.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_length_list.h @@ -48,22 +48,21 @@ class SVGAnimatedLengthList final : public ScriptWrappable, static SVGAnimatedLengthList* Create(SVGElement* context_element, const QualifiedName& attribute_name, SVGLengthList* initial_value) { - return new SVGAnimatedLengthList(context_element, attribute_name, - initial_value); + return MakeGarbageCollected( + context_element, attribute_name, initial_value); } - void Trace(blink::Visitor* visitor) override { - SVGAnimatedProperty::Trace(visitor); - ScriptWrappable::Trace(visitor); - } - - protected: SVGAnimatedLengthList(SVGElement* context_element, const QualifiedName& attribute_name, SVGLengthList* initial_value) : SVGAnimatedProperty(context_element, attribute_name, initial_value) {} + + void Trace(blink::Visitor* visitor) override { + SVGAnimatedProperty::Trace(visitor); + ScriptWrappable::Trace(visitor); + } }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_number.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_number.h index cbf8d4b7f78..317ca37274f 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_number.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_number.h @@ -51,26 +51,16 @@ class SVGAnimatedNumber : public ScriptWrappable, const QualifiedName& attribute_name, float initial_number) { SVGNumber* initial_value = SVGNumber::Create(initial_number); - return new SVGAnimatedNumber(context_element, attribute_name, - initial_value); + return MakeGarbageCollected( + context_element, attribute_name, initial_value); } static SVGAnimatedNumber* Create(SVGElement* context_element, const QualifiedName& attribute_name, SVGNumber* initial_value) { - return new SVGAnimatedNumber(context_element, attribute_name, - initial_value); + return MakeGarbageCollected( + context_element, attribute_name, initial_value); } - void SynchronizeAttribute() override; - - void SetParentOptionalNumber( - SVGAnimatedNumberOptionalNumber* number_optional_number) { - parent_number_optional_number_ = number_optional_number; - } - - void Trace(blink::Visitor*) override; - - protected: SVGAnimatedNumber(SVGElement* context_element, const QualifiedName& attribute_name, SVGNumber* initial_value) @@ -82,6 +72,16 @@ class SVGAnimatedNumber : public ScriptWrappable, static_cast(initial_value->Value())), parent_number_optional_number_(nullptr) {} + void SynchronizeAttribute() override; + + void SetParentOptionalNumber( + SVGAnimatedNumberOptionalNumber* number_optional_number) { + parent_number_optional_number_ = number_optional_number; + } + + void Trace(blink::Visitor*) override; + + protected: Member parent_number_optional_number_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_number_list.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_number_list.h index e06f6ac5a78..df7e2fe994e 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_number_list.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_number_list.h @@ -47,20 +47,20 @@ class SVGAnimatedNumberList final : public ScriptWrappable, public: static SVGAnimatedNumberList* Create(SVGElement* context_element, const QualifiedName& attribute_name) { - return new SVGAnimatedNumberList(context_element, attribute_name); + return MakeGarbageCollected(context_element, + attribute_name); } - void Trace(blink::Visitor* visitor) override { - SVGAnimatedProperty::Trace(visitor); - ScriptWrappable::Trace(visitor); - } - - protected: SVGAnimatedNumberList(SVGElement* context_element, const QualifiedName& attribute_name) : SVGAnimatedProperty(context_element, attribute_name, SVGNumberList::Create()) {} + + void Trace(blink::Visitor* visitor) override { + SVGAnimatedProperty::Trace(visitor); + ScriptWrappable::Trace(visitor); + } }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_number_optional_number.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_number_optional_number.h index 658b1462ac2..b8185ca5daa 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_number_optional_number.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_number_optional_number.h @@ -53,10 +53,14 @@ class SVGAnimatedNumberOptionalNumber SVGElement* context_element, const QualifiedName& attribute_name, float initial_value) { - return new SVGAnimatedNumberOptionalNumber(context_element, attribute_name, - initial_value); + return MakeGarbageCollected( + context_element, attribute_name, initial_value); } + SVGAnimatedNumberOptionalNumber(SVGElement* context_element, + const QualifiedName& attribute_name, + float initial_value); + void SetAnimatedValue(SVGPropertyBase*) override; bool NeedsSynchronizeAttribute() const override; void AnimationEnded() override; @@ -67,10 +71,6 @@ class SVGAnimatedNumberOptionalNumber void Trace(blink::Visitor*) override; protected: - SVGAnimatedNumberOptionalNumber(SVGElement* context_element, - const QualifiedName& attribute_name, - float initial_value); - Member first_number_; Member second_number_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_path.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_path.h index 8e0dbee9fe7..8cb6a9b3b28 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_path.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_path.h @@ -47,16 +47,15 @@ class SVGAnimatedPath final : public GarbageCollectedFinalized, SVGElement* context_element, const QualifiedName& attribute_name, CSSPropertyID css_property_id = CSSPropertyInvalid) { - return new SVGAnimatedPath(context_element, attribute_name, - css_property_id); + return MakeGarbageCollected( + context_element, attribute_name, css_property_id); } - const CSSValue& CssValue() const; - - protected: SVGAnimatedPath(SVGElement*, const QualifiedName&, CSSPropertyID = CSSPropertyInvalid); + + const CSSValue& CssValue() const; }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_point_list.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_point_list.h index 903d3a0bdfa..26844d948a2 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_point_list.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_point_list.h @@ -47,11 +47,10 @@ class SVGAnimatedPointList final const QualifiedName& attribute_name, SVGPointList* initial_value, CSSPropertyID css_property_id = CSSPropertyInvalid) { - return new SVGAnimatedPointList(context_element, attribute_name, - initial_value, css_property_id); + return MakeGarbageCollected( + context_element, attribute_name, initial_value, css_property_id); } - protected: SVGAnimatedPointList(SVGElement* context_element, const QualifiedName& attribute_name, SVGPointList* initial_value, diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_preserve_aspect_ratio.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_preserve_aspect_ratio.h index 9a5a2708c06..c26839054c9 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_preserve_aspect_ratio.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_preserve_aspect_ratio.h @@ -47,21 +47,21 @@ class SVGAnimatedPreserveAspectRatio static SVGAnimatedPreserveAspectRatio* Create( SVGElement* context_element, const QualifiedName& attribute_name) { - return new SVGAnimatedPreserveAspectRatio(context_element, attribute_name); + return MakeGarbageCollected(context_element, + attribute_name); } - void Trace(blink::Visitor* visitor) override { - SVGAnimatedProperty::Trace(visitor); - ScriptWrappable::Trace(visitor); - } - - protected: SVGAnimatedPreserveAspectRatio(SVGElement* context_element, const QualifiedName& attribute_name) : SVGAnimatedProperty( context_element, attribute_name, SVGPreserveAspectRatio::Create()) {} + + void Trace(blink::Visitor* visitor) override { + SVGAnimatedProperty::Trace(visitor); + ScriptWrappable::Trace(visitor); + } }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_rect.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_rect.h index c400d9c3840..ad95d13a810 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_rect.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_rect.h @@ -45,20 +45,20 @@ class SVGAnimatedRect : public ScriptWrappable, public: static SVGAnimatedRect* Create(SVGElement* context_element, const QualifiedName& attribute_name) { - return new SVGAnimatedRect(context_element, attribute_name); + return MakeGarbageCollected(context_element, + attribute_name); } - void Trace(blink::Visitor* visitor) override { - SVGAnimatedProperty::Trace(visitor); - ScriptWrappable::Trace(visitor); - } - - protected: SVGAnimatedRect(SVGElement* context_element, const QualifiedName& attribute_name) : SVGAnimatedProperty(context_element, attribute_name, SVGRect::CreateInvalid()) {} + + void Trace(blink::Visitor* visitor) override { + SVGAnimatedProperty::Trace(visitor); + ScriptWrappable::Trace(visitor); + } }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_string.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_string.h index 13b213d5b6a..dc9399f2bce 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_string.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_string.h @@ -45,21 +45,21 @@ class SVGAnimatedString : public ScriptWrappable, public: static SVGAnimatedString* Create(SVGElement* context_element, const QualifiedName& attribute_name) { - return new SVGAnimatedString(context_element, attribute_name); + return MakeGarbageCollected(context_element, + attribute_name); } - virtual String baseVal(); - virtual void setBaseVal(const String&, ExceptionState&); - virtual String animVal(); - - void Trace(blink::Visitor*) override; - - protected: SVGAnimatedString(SVGElement* context_element, const QualifiedName& attribute_name) : SVGAnimatedProperty(context_element, attribute_name, SVGString::Create()) {} + + virtual String baseVal(); + virtual void setBaseVal(const String&, ExceptionState&); + virtual String animVal(); + + void Trace(blink::Visitor*) override; }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animated_transform_list.h b/chromium/third_party/blink/renderer/core/svg/svg_animated_transform_list.h index e40b3dc092b..31bae649dd0 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animated_transform_list.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animated_transform_list.h @@ -50,16 +50,10 @@ class SVGAnimatedTransformList final SVGElement* context_element, const QualifiedName& attribute_name, CSSPropertyID css_property_id = CSSPropertyInvalid) { - return new SVGAnimatedTransformList(context_element, attribute_name, - css_property_id); + return MakeGarbageCollected( + context_element, attribute_name, css_property_id); } - void Trace(blink::Visitor* visitor) override { - SVGAnimatedProperty::Trace(visitor); - ScriptWrappable::Trace(visitor); - } - - protected: SVGAnimatedTransformList(SVGElement* context_element, const QualifiedName& attribute_name, CSSPropertyID css_property_id) @@ -67,6 +61,11 @@ class SVGAnimatedTransformList final attribute_name, SVGTransformList::Create(), css_property_id) {} + + void Trace(blink::Visitor* visitor) override { + SVGAnimatedProperty::Trace(visitor); + ScriptWrappable::Trace(visitor); + } }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animation_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_animation_element.cc index 1c8e310b5b1..6c4c0b34cd7 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animation_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_animation_element.cc @@ -40,7 +40,6 @@ SVGAnimationElement::SVGAnimationElement(const QualifiedName& tag_name, animation_valid_(false), calc_mode_(kCalcModeLinear), animation_mode_(kNoAnimation) { - DCHECK(RuntimeEnabledFeatures::SMILEnabled()); UseCounter::Count(document, WebFeature::kSVGAnimationElement); } @@ -156,7 +155,7 @@ static bool ParseKeySplines(const String& string, void SVGAnimationElement::ParseAttribute( const AttributeModificationParams& params) { const QualifiedName& name = params.name; - if (name == SVGNames::valuesAttr) { + if (name == svg_names::kValuesAttr) { if (!ParseValues(params.new_value, values_)) { ReportAttributeParsingError(SVGParseStatus::kParsingFailed, name, params.new_value); @@ -166,7 +165,7 @@ void SVGAnimationElement::ParseAttribute( return; } - if (name == SVGNames::keyTimesAttr) { + if (name == svg_names::kKeyTimesAttr) { if (!ParseKeyTimes(params.new_value, key_times_, true)) { ReportAttributeParsingError(SVGParseStatus::kParsingFailed, name, params.new_value); @@ -174,7 +173,7 @@ void SVGAnimationElement::ParseAttribute( return; } - if (name == SVGNames::keyPointsAttr) { + if (name == svg_names::kKeyPointsAttr) { if (IsSVGAnimateMotionElement(*this)) { // This is specified to be an animateMotion attribute only but it is // simpler to put it here where the other timing calculatations are. @@ -186,7 +185,7 @@ void SVGAnimationElement::ParseAttribute( return; } - if (name == SVGNames::keySplinesAttr) { + if (name == svg_names::kKeySplinesAttr) { if (!ParseKeySplines(params.new_value, key_splines_)) { ReportAttributeParsingError(SVGParseStatus::kParsingFailed, name, params.new_value); @@ -194,13 +193,13 @@ void SVGAnimationElement::ParseAttribute( return; } - if (name == SVGNames::calcModeAttr) { + if (name == svg_names::kCalcModeAttr) { SetCalcMode(params.new_value); return; } - if (name == SVGNames::fromAttr || name == SVGNames::toAttr || - name == SVGNames::byAttr) { + if (name == svg_names::kFromAttr || name == svg_names::kToAttr || + name == svg_names::kByAttr) { UpdateAnimationMode(); return; } @@ -209,12 +208,12 @@ void SVGAnimationElement::ParseAttribute( } void SVGAnimationElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::valuesAttr || attr_name == SVGNames::byAttr || - attr_name == SVGNames::fromAttr || attr_name == SVGNames::toAttr || - attr_name == SVGNames::calcModeAttr || - attr_name == SVGNames::keySplinesAttr || - attr_name == SVGNames::keyPointsAttr || - attr_name == SVGNames::keyTimesAttr) { + if (attr_name == svg_names::kValuesAttr || attr_name == svg_names::kByAttr || + attr_name == svg_names::kFromAttr || attr_name == svg_names::kToAttr || + attr_name == svg_names::kCalcModeAttr || + attr_name == svg_names::kKeySplinesAttr || + attr_name == svg_names::kKeyPointsAttr || + attr_name == svg_names::kKeyTimesAttr) { AnimationAttributeChanged(); return; } @@ -272,7 +271,7 @@ void SVGAnimationElement::endElementAt(float offset) { void SVGAnimationElement::UpdateAnimationMode() { // http://www.w3.org/TR/2001/REC-smil-animation-20010904/#AnimFuncValues - if (hasAttribute(SVGNames::valuesAttr)) + if (hasAttribute(svg_names::kValuesAttr)) SetAnimationMode(kValuesAnimation); else if (!ToValue().IsEmpty()) SetAnimationMode(FromValue().IsEmpty() ? kToAnimation : kFromToAnimation); @@ -310,26 +309,26 @@ void SVGAnimationElement::SetCalcMode(const AtomicString& calc_mode) { } String SVGAnimationElement::ToValue() const { - return FastGetAttribute(SVGNames::toAttr); + return FastGetAttribute(svg_names::kToAttr); } String SVGAnimationElement::ByValue() const { - return FastGetAttribute(SVGNames::byAttr); + return FastGetAttribute(svg_names::kByAttr); } String SVGAnimationElement::FromValue() const { - return FastGetAttribute(SVGNames::fromAttr); + return FastGetAttribute(svg_names::kFromAttr); } bool SVGAnimationElement::IsAdditive() { DEFINE_STATIC_LOCAL(const AtomicString, sum, ("sum")); - const AtomicString& value = FastGetAttribute(SVGNames::additiveAttr); + const AtomicString& value = FastGetAttribute(svg_names::kAdditiveAttr); return value == sum || GetAnimationMode() == kByAnimation; } bool SVGAnimationElement::IsAccumulated() const { DEFINE_STATIC_LOCAL(const AtomicString, sum, ("sum")); - const AtomicString& value = FastGetAttribute(SVGNames::accumulateAttr); + const AtomicString& value = FastGetAttribute(svg_names::kAccumulateAttr); return value == sum && GetAnimationMode() != kToAnimation; } @@ -524,7 +523,7 @@ void SVGAnimationElement::StartedActiveInterval() { return; // These validations are appropriate for all animation modes. - if (FastHasAttribute(SVGNames::keyPointsAttr) && + if (FastHasAttribute(svg_names::kKeyPointsAttr) && key_points_.size() != key_times_.size()) return; @@ -533,11 +532,11 @@ void SVGAnimationElement::StartedActiveInterval() { if (calc_mode == kCalcModeSpline) { unsigned splines_count = key_splines_.size(); if (!splines_count || - (FastHasAttribute(SVGNames::keyPointsAttr) && + (FastHasAttribute(svg_names::kKeyPointsAttr) && key_points_.size() - 1 != splines_count) || (animation_mode == kValuesAnimation && values_.size() - 1 != splines_count) || - (FastHasAttribute(SVGNames::keyTimesAttr) && + (FastHasAttribute(svg_names::kKeyTimesAttr) && key_times_.size() - 1 != splines_count)) return; } @@ -550,8 +549,8 @@ void SVGAnimationElement::StartedActiveInterval() { if ((animation_mode == kFromToAnimation || animation_mode == kFromByAnimation || animation_mode == kToAnimation || animation_mode == kByAnimation) && - (FastHasAttribute(SVGNames::keyPointsAttr) && - FastHasAttribute(SVGNames::keyTimesAttr) && + (FastHasAttribute(svg_names::kKeyPointsAttr) && + FastHasAttribute(svg_names::kKeyTimesAttr) && (key_times_.size() < 2 || key_times_.size() != key_points_.size()))) return; if (animation_mode == kFromToAnimation) { @@ -569,8 +568,8 @@ void SVGAnimationElement::StartedActiveInterval() { animation_valid_ = values_.size() >= 1 && (calc_mode == kCalcModePaced || - !FastHasAttribute(SVGNames::keyTimesAttr) || - FastHasAttribute(SVGNames::keyPointsAttr) || + !FastHasAttribute(svg_names::kKeyTimesAttr) || + FastHasAttribute(svg_names::kKeyPointsAttr) || (values_.size() == key_times_.size())) && (calc_mode == kCalcModeDiscrete || !key_times_.size() || key_times_.back() == 1) && @@ -578,7 +577,7 @@ void SVGAnimationElement::StartedActiveInterval() { ((key_splines_.size() && (key_splines_.size() == values_.size() - 1)) || key_splines_.size() == key_points_.size() - 1)) && - (!FastHasAttribute(SVGNames::keyPointsAttr) || + (!FastHasAttribute(svg_names::kKeyPointsAttr) || (key_times_.size() > 1 && key_times_.size() == key_points_.size())); if (animation_valid_) animation_valid_ = CalculateToAtEndOfDurationValue(values_.back()); @@ -587,7 +586,7 @@ void SVGAnimationElement::StartedActiveInterval() { } else if (animation_mode == kPathAnimation) { animation_valid_ = calc_mode == kCalcModePaced || - !FastHasAttribute(SVGNames::keyPointsAttr) || + !FastHasAttribute(svg_names::kKeyPointsAttr) || (key_times_.size() > 1 && key_times_.size() == key_points_.size()); } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animation_element.h b/chromium/third_party/blink/renderer/core/svg/svg_animation_element.h index d9129f870e6..9c03ef7264c 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animation_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_animation_element.h @@ -65,9 +65,9 @@ class CORE_EXPORT SVGAnimationElement : public SVGSMILElement { void endElement() { endElementAt(0); } void endElementAt(float offset); - DEFINE_MAPPED_ATTRIBUTE_EVENT_LISTENER(begin, beginEvent); - DEFINE_MAPPED_ATTRIBUTE_EVENT_LISTENER(end, endEvent); - DEFINE_MAPPED_ATTRIBUTE_EVENT_LISTENER(repeat, repeatEvent); + DEFINE_ATTRIBUTE_EVENT_LISTENER(begin, kBeginEvent); + DEFINE_ATTRIBUTE_EVENT_LISTENER(end, kEndEvent); + DEFINE_ATTRIBUTE_EVENT_LISTENER(repeat, kRepeatEvent); virtual bool IsAdditive(); bool IsAccumulated() const; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_animation_element.idl b/chromium/third_party/blink/renderer/core/svg/svg_animation_element.idl index 0eaf56fe27f..a56ef3dc1d6 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_animation_element.idl +++ b/chromium/third_party/blink/renderer/core/svg/svg_animation_element.idl @@ -26,7 +26,6 @@ // https://svgwg.org/specs/animations/#InterfaceSVGAnimationElement -[RuntimeEnabled=SMIL] interface SVGAnimationElement : SVGElement { readonly attribute SVGElement targetElement; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_boolean.h b/chromium/third_party/blink/renderer/core/svg/svg_boolean.h index 84cd9b11e0d..5a266f603b0 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_boolean.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_boolean.h @@ -43,9 +43,11 @@ class SVGBoolean final : public SVGPropertyHelper { typedef bool PrimitiveType; static SVGBoolean* Create(bool value = false) { - return new SVGBoolean(value); + return MakeGarbageCollected(value); } + SVGBoolean(bool value) : value_(value) {} + SVGBoolean* Clone() const { return Create(value_); } String ValueAsString() const override; @@ -67,8 +69,6 @@ class SVGBoolean final : public SVGPropertyHelper { static AnimatedPropertyType ClassType() { return kAnimatedBoolean; } private: - SVGBoolean(bool value) : value_(value) {} - bool value_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_circle_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_circle_element.cc index 41d800695ed..317133f6ebe 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_circle_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_circle_element.cc @@ -26,19 +26,19 @@ namespace blink { inline SVGCircleElement::SVGCircleElement(Document& document) - : SVGGeometryElement(SVGNames::circleTag, document), + : SVGGeometryElement(svg_names::kCircleTag, document), cx_(SVGAnimatedLength::Create(this, - SVGNames::cxAttr, + svg_names::kCxAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero, CSSPropertyCx)), cy_(SVGAnimatedLength::Create(this, - SVGNames::cyAttr, + svg_names::kCyAttr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero, CSSPropertyCy)), r_(SVGAnimatedLength::Create(this, - SVGNames::rAttr, + svg_names::kRAttr, SVGLengthMode::kOther, SVGLength::Initial::kUnitlessZero, CSSPropertyR)) { @@ -96,8 +96,8 @@ void SVGCircleElement::CollectStyleForPresentationAttribute( } void SVGCircleElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::rAttr || attr_name == SVGNames::cxAttr || - attr_name == SVGNames::cyAttr) { + if (attr_name == svg_names::kRAttr || attr_name == svg_names::kCxAttr || + attr_name == svg_names::kCyAttr) { UpdateRelativeLengthsInformation(); GeometryPresentationAttributeChanged(attr_name); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_clip_path_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_clip_path_element.cc index 82b66e13d50..eb5fe77b7e0 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_clip_path_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_clip_path_element.cc @@ -26,11 +26,11 @@ namespace blink { inline SVGClipPathElement::SVGClipPathElement(Document& document) - : SVGGraphicsElement(SVGNames::clipPathTag, document), + : SVGGraphicsElement(svg_names::kClipPathTag, document), clip_path_units_( SVGAnimatedEnumeration::Create( this, - SVGNames::clipPathUnitsAttr, + svg_names::kClipPathUnitsAttr, SVGUnitTypes::kSvgUnitTypeUserspaceonuse)) { AddToPropertyMap(clip_path_units_); } @@ -43,7 +43,7 @@ void SVGClipPathElement::Trace(blink::Visitor* visitor) { DEFINE_NODE_FACTORY(SVGClipPathElement) void SVGClipPathElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::clipPathUnitsAttr) { + if (attr_name == svg_names::kClipPathUnitsAttr) { SVGElement::InvalidationGuard invalidation_guard(this); LayoutSVGResourceContainer* layout_object = @@ -62,9 +62,10 @@ void SVGClipPathElement::ChildrenChanged(const ChildrenChange& change) { if (change.by_parser) return; - if (LayoutObject* object = GetLayoutObject()) + if (LayoutObject* object = GetLayoutObject()) { object->SetNeedsLayoutAndFullPaintInvalidation( - LayoutInvalidationReason::kChildChanged); + layout_invalidation_reason::kChildChanged); + } } LayoutObject* SVGClipPathElement::CreateLayoutObject(const ComputedStyle&) { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_component_transfer_function_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_component_transfer_function_element.cc index 2781cab9a1c..b9a59d421a2 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_component_transfer_function_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_component_transfer_function_element.cc @@ -20,7 +20,7 @@ #include "third_party/blink/renderer/core/svg/svg_component_transfer_function_element.h" -#include "third_party/blink/renderer/core/dom/attribute.h" +#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h" #include "third_party/blink/renderer/core/svg/svg_fe_component_transfer_element.h" #include "third_party/blink/renderer/core/svg/svg_number_list.h" #include "third_party/blink/renderer/core/svg_names.h" @@ -28,19 +28,15 @@ namespace blink { template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries() { - DEFINE_STATIC_LOCAL(SVGEnumerationStringEntries, entries, ()); - if (entries.IsEmpty()) { - entries.push_back( - std::make_pair(FECOMPONENTTRANSFER_TYPE_IDENTITY, "identity")); - entries.push_back(std::make_pair(FECOMPONENTTRANSFER_TYPE_TABLE, "table")); - entries.push_back( - std::make_pair(FECOMPONENTTRANSFER_TYPE_DISCRETE, "discrete")); - entries.push_back( - std::make_pair(FECOMPONENTTRANSFER_TYPE_LINEAR, "linear")); - entries.push_back(std::make_pair(FECOMPONENTTRANSFER_TYPE_GAMMA, "gamma")); - } +const SVGEnumerationMap& GetEnumerationMap() { + static const SVGEnumerationMap::Entry enum_items[] = { + {FECOMPONENTTRANSFER_TYPE_IDENTITY, "identity"}, + {FECOMPONENTTRANSFER_TYPE_TABLE, "table"}, + {FECOMPONENTTRANSFER_TYPE_DISCRETE, "discrete"}, + {FECOMPONENTTRANSFER_TYPE_LINEAR, "linear"}, + {FECOMPONENTTRANSFER_TYPE_GAMMA, "gamma"}, + }; + static const SVGEnumerationMap entries(enum_items); return entries; } @@ -49,16 +45,16 @@ SVGComponentTransferFunctionElement::SVGComponentTransferFunctionElement( Document& document) : SVGElement(tag_name, document), table_values_( - SVGAnimatedNumberList::Create(this, SVGNames::tableValuesAttr)), - slope_(SVGAnimatedNumber::Create(this, SVGNames::slopeAttr, 1)), + SVGAnimatedNumberList::Create(this, svg_names::kTableValuesAttr)), + slope_(SVGAnimatedNumber::Create(this, svg_names::kSlopeAttr, 1)), intercept_( - SVGAnimatedNumber::Create(this, SVGNames::interceptAttr, 0.0f)), - amplitude_(SVGAnimatedNumber::Create(this, SVGNames::amplitudeAttr, 1)), - exponent_(SVGAnimatedNumber::Create(this, SVGNames::exponentAttr, 1)), - offset_(SVGAnimatedNumber::Create(this, SVGNames::offsetAttr, 0.0f)), + SVGAnimatedNumber::Create(this, svg_names::kInterceptAttr, 0.0f)), + amplitude_(SVGAnimatedNumber::Create(this, svg_names::kAmplitudeAttr, 1)), + exponent_(SVGAnimatedNumber::Create(this, svg_names::kExponentAttr, 1)), + offset_(SVGAnimatedNumber::Create(this, svg_names::kOffsetAttr, 0.0f)), type_(SVGAnimatedEnumeration::Create( this, - SVGNames::typeAttr, + svg_names::kTypeAttr, FECOMPONENTTRANSFER_TYPE_IDENTITY)) { AddToPropertyMap(table_values_); AddToPropertyMap(slope_); @@ -82,13 +78,13 @@ void SVGComponentTransferFunctionElement::Trace(blink::Visitor* visitor) { void SVGComponentTransferFunctionElement::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::typeAttr || - attr_name == SVGNames::tableValuesAttr || - attr_name == SVGNames::slopeAttr || - attr_name == SVGNames::interceptAttr || - attr_name == SVGNames::amplitudeAttr || - attr_name == SVGNames::exponentAttr || - attr_name == SVGNames::offsetAttr) { + if (attr_name == svg_names::kTypeAttr || + attr_name == svg_names::kTableValuesAttr || + attr_name == svg_names::kSlopeAttr || + attr_name == svg_names::kInterceptAttr || + attr_name == svg_names::kAmplitudeAttr || + attr_name == svg_names::kExponentAttr || + attr_name == svg_names::kOffsetAttr) { SVGElement::InvalidationGuard invalidation_guard(this); InvalidateFilterPrimitiveParent(*this); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_component_transfer_function_element.h b/chromium/third_party/blink/renderer/core/svg/svg_component_transfer_function_element.h index fdfd53e651b..1d1eeb8162e 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_component_transfer_function_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_component_transfer_function_element.h @@ -30,9 +30,7 @@ namespace blink { -template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries(); +DECLARE_SVG_ENUM_MAP(ComponentTransferType); class SVGComponentTransferFunctionElement : public SVGElement { DEFINE_WRAPPERTYPEINFO(); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_defs_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_defs_element.cc index 598a160f63f..7e8fbcf0c9b 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_defs_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_defs_element.cc @@ -26,7 +26,7 @@ namespace blink { inline SVGDefsElement::SVGDefsElement(Document& document) - : SVGGraphicsElement(SVGNames::defsTag, document) {} + : SVGGraphicsElement(svg_names::kDefsTag, document) {} DEFINE_NODE_FACTORY(SVGDefsElement) diff --git a/chromium/third_party/blink/renderer/core/svg/svg_desc_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_desc_element.cc index fbab758166f..64364cd5506 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_desc_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_desc_element.cc @@ -25,7 +25,7 @@ namespace blink { inline SVGDescElement::SVGDescElement(Document& document) - : SVGElement(SVGNames::descTag, document) {} + : SVGElement(svg_names::kDescTag, document) {} DEFINE_NODE_FACTORY(SVGDescElement) } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_discard_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_discard_element.cc index 3604e8db060..25456931c44 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_discard_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_discard_element.cc @@ -35,8 +35,7 @@ namespace blink { inline SVGDiscardElement::SVGDiscardElement(Document& document) - : SVGSMILElement(SVGNames::discardTag, document) { - DCHECK(RuntimeEnabledFeatures::SMILEnabled()); + : SVGSMILElement(svg_names::kDiscardTag, document) { } DEFINE_NODE_FACTORY(SVGDiscardElement) diff --git a/chromium/third_party/blink/renderer/core/svg/svg_discard_element.idl b/chromium/third_party/blink/renderer/core/svg/svg_discard_element.idl index a6db8fac1e3..be85d164920 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_discard_element.idl +++ b/chromium/third_party/blink/renderer/core/svg/svg_discard_element.idl @@ -30,6 +30,5 @@ // https://svgwg.org/specs/animations/#InterfaceSVGDiscardElement -[RuntimeEnabled=SMIL] interface SVGDiscardElement : SVGElement { }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_document_extensions.cc b/chromium/third_party/blink/renderer/core/svg/svg_document_extensions.cc index 32838316fa3..4d1b965d5da 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_document_extensions.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_document_extensions.cc @@ -43,7 +43,6 @@ void SVGDocumentExtensions::RemoveTimeContainer(SVGSVGElement* element) { void SVGDocumentExtensions::AddWebAnimationsPendingSVGElement( SVGElement& element) { - DCHECK(RuntimeEnabledFeatures::WebAnimationsSVGEnabled()); web_animations_pending_svg_elements_.insert(&element); } @@ -54,12 +53,10 @@ void SVGDocumentExtensions::ServiceOnAnimationFrame(Document& document) { } void SVGDocumentExtensions::ServiceAnimations() { - if (RuntimeEnabledFeatures::SMILEnabled()) { - HeapVector> time_containers; - CopyToVector(time_containers_, time_containers); - for (const auto& container : time_containers) - container->TimeContainer()->ServiceAnimations(); - } + HeapVector> time_containers; + CopyToVector(time_containers_, time_containers); + for (const auto& container : time_containers) + container->TimeContainer()->ServiceAnimations(); SVGElementSet web_animations_pending_svg_elements; web_animations_pending_svg_elements.swap( diff --git a/chromium/third_party/blink/renderer/core/svg/svg_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_element.cc index aab9d982f41..c4df89477b8 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_element.cc @@ -38,6 +38,7 @@ #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/dom/element_traversal.h" #include "third_party/blink/renderer/core/dom/events/event.h" +#include "third_party/blink/renderer/core/dom/flat_tree_traversal.h" #include "third_party/blink/renderer/core/dom/node_computed_style.h" #include "third_party/blink/renderer/core/dom/shadow_root.h" #include "third_party/blink/renderer/core/frame/csp/content_security_policy.h" @@ -61,15 +62,15 @@ namespace blink { -using namespace HTMLNames; -using namespace SVGNames; +using namespace html_names; +using namespace svg_names; SVGElement::SVGElement(const QualifiedName& tag_name, Document& document, ConstructionType construction_type) : Element(tag_name, &document, construction_type), svg_rare_data_(nullptr), - class_name_(SVGAnimatedString::Create(this, HTMLNames::classAttr)) { + class_name_(SVGAnimatedString::Create(this, html_names::kClassAttr)) { AddToPropertyMap(class_name_); SetHasCustomStyleCallbacks(); } @@ -119,7 +120,7 @@ void SVGElement::WillRecalcStyle(StyleRecalcChange change) { SVGElementRareData* SVGElement::EnsureSVGRareData() { if (!svg_rare_data_) - svg_rare_data_ = new SVGElementRareData(); + svg_rare_data_ = MakeGarbageCollected(); return svg_rare_data_.Get(); } @@ -376,12 +377,12 @@ Node::InsertionNotificationRequest SVGElement::InsertedInto( Element::InsertedInto(root_parent); UpdateRelativeLengthsInformation(); - const AtomicString& nonce_value = FastGetAttribute(nonceAttr); + const AtomicString& nonce_value = FastGetAttribute(kNonceAttr); if (!nonce_value.IsEmpty()) { setNonce(nonce_value); if (InActiveDocument() && GetDocument().GetContentSecurityPolicy()->HasHeaderDeliveredPolicy()) { - setAttribute(nonceAttr, g_empty_atom); + setAttribute(kNonceAttr, g_empty_atom); } } return kInsertionDone; @@ -436,64 +437,64 @@ CSSPropertyID SVGElement::CssPropertyIdForSVGAttributeName( // This is a list of all base CSS and SVG CSS properties which are exposed // as SVG XML attributes const QualifiedName* const attr_names[] = { - &alignment_baselineAttr, - &baseline_shiftAttr, - &buffered_renderingAttr, - &clipAttr, - &clip_pathAttr, - &clip_ruleAttr, - &SVGNames::colorAttr, - &color_interpolationAttr, - &color_interpolation_filtersAttr, - &color_renderingAttr, - &cursorAttr, - &SVGNames::directionAttr, - &displayAttr, - &dominant_baselineAttr, - &fillAttr, - &fill_opacityAttr, - &fill_ruleAttr, - &filterAttr, - &flood_colorAttr, - &flood_opacityAttr, - &font_familyAttr, - &font_sizeAttr, - &font_stretchAttr, - &font_styleAttr, - &font_variantAttr, - &font_weightAttr, - &image_renderingAttr, - &letter_spacingAttr, - &lighting_colorAttr, - &marker_endAttr, - &marker_midAttr, - &marker_startAttr, - &maskAttr, - &mask_typeAttr, - &opacityAttr, - &overflowAttr, - &paint_orderAttr, - &pointer_eventsAttr, - &shape_renderingAttr, - &stop_colorAttr, - &stop_opacityAttr, - &strokeAttr, - &stroke_dasharrayAttr, - &stroke_dashoffsetAttr, - &stroke_linecapAttr, - &stroke_linejoinAttr, - &stroke_miterlimitAttr, - &stroke_opacityAttr, - &stroke_widthAttr, - &text_anchorAttr, - &text_decorationAttr, - &text_renderingAttr, - &transform_originAttr, - &unicode_bidiAttr, - &vector_effectAttr, - &visibilityAttr, - &word_spacingAttr, - &writing_modeAttr, + &kAlignmentBaselineAttr, + &kBaselineShiftAttr, + &kBufferedRenderingAttr, + &kClipAttr, + &kClipPathAttr, + &kClipRuleAttr, + &svg_names::kColorAttr, + &kColorInterpolationAttr, + &kColorInterpolationFiltersAttr, + &kColorRenderingAttr, + &kCursorAttr, + &svg_names::kDirectionAttr, + &kDisplayAttr, + &kDominantBaselineAttr, + &kFillAttr, + &kFillOpacityAttr, + &kFillRuleAttr, + &kFilterAttr, + &kFloodColorAttr, + &kFloodOpacityAttr, + &kFontFamilyAttr, + &kFontSizeAttr, + &kFontStretchAttr, + &kFontStyleAttr, + &kFontVariantAttr, + &kFontWeightAttr, + &kImageRenderingAttr, + &kLetterSpacingAttr, + &kLightingColorAttr, + &kMarkerEndAttr, + &kMarkerMidAttr, + &kMarkerStartAttr, + &kMaskAttr, + &kMaskTypeAttr, + &kOpacityAttr, + &kOverflowAttr, + &kPaintOrderAttr, + &kPointerEventsAttr, + &kShapeRenderingAttr, + &kStopColorAttr, + &kStopOpacityAttr, + &kStrokeAttr, + &kStrokeDasharrayAttr, + &kStrokeDashoffsetAttr, + &kStrokeLinecapAttr, + &kStrokeLinejoinAttr, + &kStrokeMiterlimitAttr, + &kStrokeOpacityAttr, + &kStrokeWidthAttr, + &kTextAnchorAttr, + &kTextDecorationAttr, + &kTextRenderingAttr, + &kTransformOriginAttr, + &kUnicodeBidiAttr, + &kVectorEffectAttr, + &kVisibilityAttr, + &kWordSpacingAttr, + &kWritingModeAttr, }; for (size_t i = 0; i < arraysize(attr_names); i++) { CSSPropertyID property_id = cssPropertyID(attr_names[i]->LocalName()); @@ -575,10 +576,10 @@ void SVGElement::InvalidateRelativeLengthClients( if (HasRelativeLengths() && layout_object->IsSVGResourceContainer()) { ToLayoutSVGResourceContainer(layout_object) ->InvalidateCacheAndMarkForLayout( - LayoutInvalidationReason::kSizeChanged, layout_scope); + layout_invalidation_reason::kSizeChanged, layout_scope); } else if (SelfHasRelativeLengths()) { layout_object->SetNeedsLayoutAndFullPaintInvalidation( - LayoutInvalidationReason::kUnknown, kMarkContainerChain, + layout_invalidation_reason::kUnknown, kMarkContainerChain, layout_scope); } } @@ -641,9 +642,9 @@ void SVGElement::RemoveInstanceMapping(SVGElement* instance) { } static HeapHashSet>& EmptyInstances() { - DEFINE_STATIC_LOCAL(Persistent>>, - empty_instances, - (new HeapHashSet>)); + DEFINE_STATIC_LOCAL( + Persistent>>, empty_instances, + (MakeGarbageCollected>>())); return *empty_instances; } @@ -725,59 +726,59 @@ AnimatedPropertyType SVGElement::AnimatedPropertyTypeForCSSAttribute( const AnimatedPropertyType prop_type; }; const AttrToTypeEntry attr_to_types[] = { - {alignment_baselineAttr, kAnimatedString}, - {baseline_shiftAttr, kAnimatedString}, - {buffered_renderingAttr, kAnimatedString}, - {clip_pathAttr, kAnimatedString}, - {clip_ruleAttr, kAnimatedString}, - {SVGNames::colorAttr, kAnimatedColor}, - {color_interpolationAttr, kAnimatedString}, - {color_interpolation_filtersAttr, kAnimatedString}, - {color_renderingAttr, kAnimatedString}, - {cursorAttr, kAnimatedString}, - {displayAttr, kAnimatedString}, - {dominant_baselineAttr, kAnimatedString}, - {fillAttr, kAnimatedColor}, - {fill_opacityAttr, kAnimatedNumber}, - {fill_ruleAttr, kAnimatedString}, - {filterAttr, kAnimatedString}, - {flood_colorAttr, kAnimatedColor}, - {flood_opacityAttr, kAnimatedNumber}, - {font_familyAttr, kAnimatedString}, - {font_sizeAttr, kAnimatedLength}, - {font_stretchAttr, kAnimatedString}, - {font_styleAttr, kAnimatedString}, - {font_variantAttr, kAnimatedString}, - {font_weightAttr, kAnimatedString}, - {image_renderingAttr, kAnimatedString}, - {letter_spacingAttr, kAnimatedLength}, - {lighting_colorAttr, kAnimatedColor}, - {marker_endAttr, kAnimatedString}, - {marker_midAttr, kAnimatedString}, - {marker_startAttr, kAnimatedString}, - {maskAttr, kAnimatedString}, - {mask_typeAttr, kAnimatedString}, - {opacityAttr, kAnimatedNumber}, - {overflowAttr, kAnimatedString}, - {paint_orderAttr, kAnimatedString}, - {pointer_eventsAttr, kAnimatedString}, - {shape_renderingAttr, kAnimatedString}, - {stop_colorAttr, kAnimatedColor}, - {stop_opacityAttr, kAnimatedNumber}, - {strokeAttr, kAnimatedColor}, - {stroke_dasharrayAttr, kAnimatedLengthList}, - {stroke_dashoffsetAttr, kAnimatedLength}, - {stroke_linecapAttr, kAnimatedString}, - {stroke_linejoinAttr, kAnimatedString}, - {stroke_miterlimitAttr, kAnimatedNumber}, - {stroke_opacityAttr, kAnimatedNumber}, - {stroke_widthAttr, kAnimatedLength}, - {text_anchorAttr, kAnimatedString}, - {text_decorationAttr, kAnimatedString}, - {text_renderingAttr, kAnimatedString}, - {vector_effectAttr, kAnimatedString}, - {visibilityAttr, kAnimatedString}, - {word_spacingAttr, kAnimatedLength}, + {kAlignmentBaselineAttr, kAnimatedString}, + {kBaselineShiftAttr, kAnimatedString}, + {kBufferedRenderingAttr, kAnimatedString}, + {kClipPathAttr, kAnimatedString}, + {kClipRuleAttr, kAnimatedString}, + {svg_names::kColorAttr, kAnimatedColor}, + {kColorInterpolationAttr, kAnimatedString}, + {kColorInterpolationFiltersAttr, kAnimatedString}, + {kColorRenderingAttr, kAnimatedString}, + {kCursorAttr, kAnimatedString}, + {kDisplayAttr, kAnimatedString}, + {kDominantBaselineAttr, kAnimatedString}, + {kFillAttr, kAnimatedColor}, + {kFillOpacityAttr, kAnimatedNumber}, + {kFillRuleAttr, kAnimatedString}, + {kFilterAttr, kAnimatedString}, + {kFloodColorAttr, kAnimatedColor}, + {kFloodOpacityAttr, kAnimatedNumber}, + {kFontFamilyAttr, kAnimatedString}, + {kFontSizeAttr, kAnimatedLength}, + {kFontStretchAttr, kAnimatedString}, + {kFontStyleAttr, kAnimatedString}, + {kFontVariantAttr, kAnimatedString}, + {kFontWeightAttr, kAnimatedString}, + {kImageRenderingAttr, kAnimatedString}, + {kLetterSpacingAttr, kAnimatedLength}, + {kLightingColorAttr, kAnimatedColor}, + {kMarkerEndAttr, kAnimatedString}, + {kMarkerMidAttr, kAnimatedString}, + {kMarkerStartAttr, kAnimatedString}, + {kMaskAttr, kAnimatedString}, + {kMaskTypeAttr, kAnimatedString}, + {kOpacityAttr, kAnimatedNumber}, + {kOverflowAttr, kAnimatedString}, + {kPaintOrderAttr, kAnimatedString}, + {kPointerEventsAttr, kAnimatedString}, + {kShapeRenderingAttr, kAnimatedString}, + {kStopColorAttr, kAnimatedColor}, + {kStopOpacityAttr, kAnimatedNumber}, + {kStrokeAttr, kAnimatedColor}, + {kStrokeDasharrayAttr, kAnimatedLengthList}, + {kStrokeDashoffsetAttr, kAnimatedLength}, + {kStrokeLinecapAttr, kAnimatedString}, + {kStrokeLinejoinAttr, kAnimatedString}, + {kStrokeMiterlimitAttr, kAnimatedNumber}, + {kStrokeOpacityAttr, kAnimatedNumber}, + {kStrokeWidthAttr, kAnimatedLength}, + {kTextAnchorAttr, kAnimatedString}, + {kTextDecorationAttr, kAnimatedString}, + {kTextRenderingAttr, kAnimatedString}, + {kVectorEffectAttr, kAnimatedString}, + {kVisibilityAttr, kAnimatedString}, + {kWordSpacingAttr, kAnimatedLength}, }; for (size_t i = 0; i < arraysize(attr_to_types); i++) css_property_map.Set(attr_to_types[i].attr, attr_to_types[i].prop_type); @@ -855,7 +856,7 @@ void SVGElement::AddedEventListener( // Add event listener to all shadow tree DOM element instances HeapHashSet> instances; CollectInstancesForSVGElement(this, instances); - AddEventListenerOptionsResolved options = registered_listener.Options(); + AddEventListenerOptionsResolved* options = registered_listener.Options(); EventListener* listener = registered_listener.Callback(); for (SVGElement* element : instances) { bool result = @@ -872,7 +873,7 @@ void SVGElement::RemovedEventListener( // Remove event listener from all shadow tree DOM element instances HeapHashSet> instances; CollectInstancesForSVGElement(this, instances); - EventListenerOptions options = registered_listener.Options(); + EventListenerOptions* options = registered_listener.Options(); const EventListener* listener = registered_listener.Callback(); for (SVGElement* shadow_tree_element : instances) { DCHECK(shadow_tree_element); @@ -883,13 +884,13 @@ void SVGElement::RemovedEventListener( } static bool HasLoadListener(Element* element) { - if (element->HasEventListeners(EventTypeNames::load)) + if (element->HasEventListeners(event_type_names::kLoad)) return true; for (element = element->ParentOrShadowHostElement(); element; element = element->ParentOrShadowHostElement()) { EventListenerVector* entry = - element->GetEventListeners(EventTypeNames::load); + element->GetEventListeners(event_type_names::kLoad); if (!entry) continue; for (wtf_size_t i = 0; i < entry->size(); ++i) { @@ -906,7 +907,7 @@ bool SVGElement::SendSVGLoadEventIfPossible() { return false; if ((IsStructurallyExternal() || IsSVGSVGElement(*this)) && HasLoadListener(this)) - DispatchEvent(*Event::Create(EventTypeNames::load)); + DispatchEvent(*Event::Create(event_type_names::kLoad)); return true; } @@ -936,7 +937,7 @@ void SVGElement::SendSVGLoadEventToSelfAndAncestorChainIfPossible() { void SVGElement::AttributeChanged(const AttributeModificationParams& params) { Element::AttributeChanged(params); - if (params.name == HTMLNames::idAttr) { + if (params.name == html_names::kIdAttr) { RebuildAllIncomingReferences(); InvalidateInstances(); return; @@ -945,7 +946,7 @@ void SVGElement::AttributeChanged(const AttributeModificationParams& params) { // Changes to the style attribute are processed lazily (see // Element::getAttribute() and related methods), so we don't want changes to // the style attribute to result in extra work here. - if (params.name == HTMLNames::styleAttr) + if (params.name == html_names::kStyleAttr) return; SvgAttributeBaseValChanged(params.name); @@ -959,7 +960,7 @@ void SVGElement::SvgAttributeChanged(const QualifiedName& attr_name) { return; } - if (attr_name == HTMLNames::classAttr) { + if (attr_name == html_names::kClassAttr) { ClassAttributeChanged(AtomicString(class_name_->CurrentValue()->Value())); InvalidateInstances(); return; @@ -1035,10 +1036,8 @@ bool SVGElement::LayoutObjectIsNeeded(const ComputedStyle& style) const { } bool SVGElement::HasSVGParent() const { - // Should we use the flat tree parent instead? If so, we should probably fix a - // few other checks. - return ParentOrShadowHostElement() && - ParentOrShadowHostElement()->IsSVGElement(); + Element* parent = FlatTreeTraversal::ParentElement(*this); + return parent && parent->IsSVGElement(); } MutableCSSPropertyValueSet* SVGElement::AnimatedSMILStyleProperties() const { @@ -1071,10 +1070,10 @@ const ComputedStyle* SVGElement::EnsureComputedStyle( } bool SVGElement::HasFocusEventListeners() const { - return HasEventListeners(EventTypeNames::focusin) || - HasEventListeners(EventTypeNames::focusout) || - HasEventListeners(EventTypeNames::focus) || - HasEventListeners(EventTypeNames::blur); + return HasEventListeners(event_type_names::kFocusin) || + HasEventListeners(event_type_names::kFocusout) || + HasEventListeners(event_type_names::kFocus) || + HasEventListeners(event_type_names::kBlur); } void SVGElement::MarkForLayoutAndParentResourceInvalidation( @@ -1133,100 +1132,100 @@ bool SVGElement::IsAnimatableAttribute(const QualifiedName& name) const { // a race when dumping debug data for a layer. DEFINE_THREAD_SAFE_STATIC_LOCAL(HashSet, animatable_attributes, ({ - SVGNames::amplitudeAttr, - SVGNames::azimuthAttr, - SVGNames::baseFrequencyAttr, - SVGNames::biasAttr, - SVGNames::clipPathUnitsAttr, - SVGNames::cxAttr, - SVGNames::cyAttr, - SVGNames::diffuseConstantAttr, - SVGNames::divisorAttr, - SVGNames::dxAttr, - SVGNames::dyAttr, - SVGNames::edgeModeAttr, - SVGNames::elevationAttr, - SVGNames::exponentAttr, - SVGNames::filterUnitsAttr, - SVGNames::fxAttr, - SVGNames::fyAttr, - SVGNames::gradientTransformAttr, - SVGNames::gradientUnitsAttr, - SVGNames::heightAttr, - SVGNames::hrefAttr, - SVGNames::in2Attr, - SVGNames::inAttr, - SVGNames::interceptAttr, - SVGNames::k1Attr, - SVGNames::k2Attr, - SVGNames::k3Attr, - SVGNames::k4Attr, - SVGNames::kernelMatrixAttr, - SVGNames::kernelUnitLengthAttr, - SVGNames::lengthAdjustAttr, - SVGNames::limitingConeAngleAttr, - SVGNames::markerHeightAttr, - SVGNames::markerUnitsAttr, - SVGNames::markerWidthAttr, - SVGNames::maskContentUnitsAttr, - SVGNames::maskUnitsAttr, - SVGNames::methodAttr, - SVGNames::modeAttr, - SVGNames::numOctavesAttr, - SVGNames::offsetAttr, - SVGNames::operatorAttr, - SVGNames::orderAttr, - SVGNames::orientAttr, - SVGNames::pathLengthAttr, - SVGNames::patternContentUnitsAttr, - SVGNames::patternTransformAttr, - SVGNames::patternUnitsAttr, - SVGNames::pointsAtXAttr, - SVGNames::pointsAtYAttr, - SVGNames::pointsAtZAttr, - SVGNames::preserveAlphaAttr, - SVGNames::preserveAspectRatioAttr, - SVGNames::primitiveUnitsAttr, - SVGNames::radiusAttr, - SVGNames::rAttr, - SVGNames::refXAttr, - SVGNames::refYAttr, - SVGNames::resultAttr, - SVGNames::rotateAttr, - SVGNames::rxAttr, - SVGNames::ryAttr, - SVGNames::scaleAttr, - SVGNames::seedAttr, - SVGNames::slopeAttr, - SVGNames::spacingAttr, - SVGNames::specularConstantAttr, - SVGNames::specularExponentAttr, - SVGNames::spreadMethodAttr, - SVGNames::startOffsetAttr, - SVGNames::stdDeviationAttr, - SVGNames::stitchTilesAttr, - SVGNames::surfaceScaleAttr, - SVGNames::tableValuesAttr, - SVGNames::targetAttr, - SVGNames::targetXAttr, - SVGNames::targetYAttr, - SVGNames::transformAttr, - SVGNames::typeAttr, - SVGNames::valuesAttr, - SVGNames::viewBoxAttr, - SVGNames::widthAttr, - SVGNames::x1Attr, - SVGNames::x2Attr, - SVGNames::xAttr, - SVGNames::xChannelSelectorAttr, - SVGNames::y1Attr, - SVGNames::y2Attr, - SVGNames::yAttr, - SVGNames::yChannelSelectorAttr, - SVGNames::zAttr, + svg_names::kAmplitudeAttr, + svg_names::kAzimuthAttr, + svg_names::kBaseFrequencyAttr, + svg_names::kBiasAttr, + svg_names::kClipPathUnitsAttr, + svg_names::kCxAttr, + svg_names::kCyAttr, + svg_names::kDiffuseConstantAttr, + svg_names::kDivisorAttr, + svg_names::kDxAttr, + svg_names::kDyAttr, + svg_names::kEdgeModeAttr, + svg_names::kElevationAttr, + svg_names::kExponentAttr, + svg_names::kFilterUnitsAttr, + svg_names::kFxAttr, + svg_names::kFyAttr, + svg_names::kGradientTransformAttr, + svg_names::kGradientUnitsAttr, + svg_names::kHeightAttr, + svg_names::kHrefAttr, + svg_names::kIn2Attr, + svg_names::kInAttr, + svg_names::kInterceptAttr, + svg_names::kK1Attr, + svg_names::kK2Attr, + svg_names::kK3Attr, + svg_names::kK4Attr, + svg_names::kKernelMatrixAttr, + svg_names::kKernelUnitLengthAttr, + svg_names::kLengthAdjustAttr, + svg_names::kLimitingConeAngleAttr, + svg_names::kMarkerHeightAttr, + svg_names::kMarkerUnitsAttr, + svg_names::kMarkerWidthAttr, + svg_names::kMaskContentUnitsAttr, + svg_names::kMaskUnitsAttr, + svg_names::kMethodAttr, + svg_names::kModeAttr, + svg_names::kNumOctavesAttr, + svg_names::kOffsetAttr, + svg_names::kOperatorAttr, + svg_names::kOrderAttr, + svg_names::kOrientAttr, + svg_names::kPathLengthAttr, + svg_names::kPatternContentUnitsAttr, + svg_names::kPatternTransformAttr, + svg_names::kPatternUnitsAttr, + svg_names::kPointsAtXAttr, + svg_names::kPointsAtYAttr, + svg_names::kPointsAtZAttr, + svg_names::kPreserveAlphaAttr, + svg_names::kPreserveAspectRatioAttr, + svg_names::kPrimitiveUnitsAttr, + svg_names::kRadiusAttr, + svg_names::kRAttr, + svg_names::kRefXAttr, + svg_names::kRefYAttr, + svg_names::kResultAttr, + svg_names::kRotateAttr, + svg_names::kRxAttr, + svg_names::kRyAttr, + svg_names::kScaleAttr, + svg_names::kSeedAttr, + svg_names::kSlopeAttr, + svg_names::kSpacingAttr, + svg_names::kSpecularConstantAttr, + svg_names::kSpecularExponentAttr, + svg_names::kSpreadMethodAttr, + svg_names::kStartOffsetAttr, + svg_names::kStdDeviationAttr, + svg_names::kStitchTilesAttr, + svg_names::kSurfaceScaleAttr, + svg_names::kTableValuesAttr, + svg_names::kTargetAttr, + svg_names::kTargetXAttr, + svg_names::kTargetYAttr, + svg_names::kTransformAttr, + svg_names::kTypeAttr, + svg_names::kValuesAttr, + svg_names::kViewBoxAttr, + svg_names::kWidthAttr, + svg_names::kX1Attr, + svg_names::kX2Attr, + svg_names::kXAttr, + svg_names::kXChannelSelectorAttr, + svg_names::kY1Attr, + svg_names::kY2Attr, + svg_names::kYAttr, + svg_names::kYChannelSelectorAttr, + svg_names::kZAttr, })); - if (name == classAttr) + if (name == kClassAttr) return true; return animatable_attributes.Contains(name); @@ -1250,7 +1249,7 @@ SVGElementSet& SVGElement::GetDependencyTraversalVisitedSet() { // This strong reference is safe, as it is guaranteed that this set will be // emptied at the end of recursion in NotifyIncomingReferences. DEFINE_STATIC_LOCAL(Persistent, invalidating_dependencies, - (new SVGElementSet)); + (MakeGarbageCollected())); return *invalidating_dependencies; } @@ -1270,7 +1269,7 @@ void SVGElement::RebuildAllIncomingReferences() { // Before rebuilding |sourceElement| ensure it was not removed from under // us. if (incoming_references.Contains(source_element)) - source_element->SvgAttributeChanged(SVGNames::hrefAttr); + source_element->SvgAttributeChanged(svg_names::kHrefAttr); } } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_element_rare_data.cc b/chromium/third_party/blink/renderer/core/svg/svg_element_rare_data.cc index c8e0334db2a..6f51b651723 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_element_rare_data.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_element_rare_data.cc @@ -45,7 +45,7 @@ void SVGElementRareData::ClearOverriddenComputedStyle() { SVGResourceClient& SVGElementRareData::EnsureSVGResourceClient( SVGElement* element) { if (!resource_client_) - resource_client_ = new SVGElementResourceClient(element); + resource_client_ = MakeGarbageCollected(element); return *resource_client_; } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_ellipse_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_ellipse_element.cc index a20bdbccaed..8815419a5f3 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_ellipse_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_ellipse_element.cc @@ -26,24 +26,24 @@ namespace blink { inline SVGEllipseElement::SVGEllipseElement(Document& document) - : SVGGeometryElement(SVGNames::ellipseTag, document), + : SVGGeometryElement(svg_names::kEllipseTag, document), cx_(SVGAnimatedLength::Create(this, - SVGNames::cxAttr, + svg_names::kCxAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero, CSSPropertyCx)), cy_(SVGAnimatedLength::Create(this, - SVGNames::cyAttr, + svg_names::kCyAttr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero, CSSPropertyCy)), rx_(SVGAnimatedLength::Create(this, - SVGNames::rxAttr, + svg_names::kRxAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero, CSSPropertyRx)), ry_(SVGAnimatedLength::Create(this, - SVGNames::ryAttr, + svg_names::kRyAttr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero, CSSPropertyRy)) { @@ -111,8 +111,8 @@ void SVGEllipseElement::CollectStyleForPresentationAttribute( } void SVGEllipseElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::cxAttr || attr_name == SVGNames::cyAttr || - attr_name == SVGNames::rxAttr || attr_name == SVGNames::ryAttr) { + if (attr_name == svg_names::kCxAttr || attr_name == svg_names::kCyAttr || + attr_name == svg_names::kRxAttr || attr_name == svg_names::kRyAttr) { UpdateRelativeLengthsInformation(); GeometryPresentationAttributeChanged(attr_name); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_enumeration.cc b/chromium/third_party/blink/renderer/core/svg/svg_enumeration.cc index fc9d5518bf6..64e58a8dbc5 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_enumeration.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_enumeration.cc @@ -31,6 +31,7 @@ #include "third_party/blink/renderer/core/svg/svg_enumeration.h" #include "third_party/blink/renderer/core/svg/svg_animation_element.h" +#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h" namespace blink { @@ -46,10 +47,8 @@ SVGPropertyBase* SVGEnumerationBase::CloneForAnimation( } String SVGEnumerationBase::ValueAsString() const { - for (const auto& entry : entries_) { - if (value_ == entry.first) - return entry.second; - } + if (const char* enum_name = map_.NameFromValue(value_)) + return String(enum_name); DCHECK_LT(value_, MaxInternalEnumValue()); return g_empty_string; @@ -61,17 +60,12 @@ void SVGEnumerationBase::SetValue(unsigned short value) { } SVGParsingError SVGEnumerationBase::SetValueAsString(const String& string) { - for (const auto& entry : entries_) { - if (string == entry.second) { - // 0 corresponds to _UNKNOWN enumeration values, and should not be - // settable. - DCHECK(entry.first); - value_ = entry.first; - NotifyChange(); - return SVGParseStatus::kNoError; - } + unsigned short value = map_.ValueFromName(string); + if (value) { + value_ = value; + NotifyChange(); + return SVGParseStatus::kNoError; } - NotifyChange(); return SVGParseStatus::kExpectedEnumeration; } @@ -104,4 +98,12 @@ float SVGEnumerationBase::CalculateDistance(SVGPropertyBase*, SVGElement*) { return -1; } +unsigned short SVGEnumerationBase::MaxExposedEnumValue() const { + return map_.MaxExposedValue(); +} + +unsigned short SVGEnumerationBase::MaxInternalEnumValue() const { + return map_.ValueOfLast(); +} + } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_enumeration.h b/chromium/third_party/blink/renderer/core/svg/svg_enumeration.h index 4b4a0749312..9e70421b56e 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_enumeration.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_enumeration.h @@ -36,11 +36,10 @@ namespace blink { +class SVGEnumerationMap; + class SVGEnumerationBase : public SVGPropertyBase { public: - typedef std::pair StringEntry; - typedef Vector StringEntries; - // SVGEnumeration does not have a tear-off type. typedef void TearOffType; typedef unsigned short PrimitiveType; @@ -72,13 +71,9 @@ class SVGEnumerationBase : public SVGPropertyBase { static AnimatedPropertyType ClassType() { return kAnimatedEnumeration; } AnimatedPropertyType GetType() const override { return ClassType(); } - static unsigned short ValueOfLastEnum(const StringEntries& entries) { - return entries.back().first; - } - // This is the maximum value that is exposed as an IDL constant on the // relevant interface. - unsigned short MaxExposedEnumValue() const { return max_exposed_; } + unsigned short MaxExposedEnumValue() const; void SetInitial(unsigned value) { SetValue(static_cast(value)); @@ -86,32 +81,26 @@ class SVGEnumerationBase : public SVGPropertyBase { static constexpr int kInitialValueBits = 3; protected: - SVGEnumerationBase(unsigned short value, - const StringEntries& entries, - unsigned short max_exposed) - : value_(value), max_exposed_(max_exposed), entries_(entries) {} + SVGEnumerationBase(unsigned short value, const SVGEnumerationMap& map) + : value_(value), map_(map) {} // This is the maximum value of all the internal enumeration values. - // This assumes that |m_entries| are sorted. - unsigned short MaxInternalEnumValue() const { - return ValueOfLastEnum(entries_); - } + // This assumes that the map is sorted on the enumeration value. + unsigned short MaxInternalEnumValue() const; // Used by SVGMarkerOrientEnumeration. virtual void NotifyChange() {} unsigned short value_; - const unsigned short max_exposed_; - const StringEntries& entries_; + const SVGEnumerationMap& map_; }; -typedef SVGEnumerationBase::StringEntries SVGEnumerationStringEntries; template -const SVGEnumerationStringEntries& GetStaticStringEntries(); -template -unsigned short GetMaxExposedEnumValue() { - return SVGEnumerationBase::ValueOfLastEnum(GetStaticStringEntries()); -} +const SVGEnumerationMap& GetEnumerationMap(); + +#define DECLARE_SVG_ENUM_MAP(cpp_enum_type) \ + template <> \ + const SVGEnumerationMap& GetEnumerationMap() template class SVGEnumeration : public SVGEnumerationBase { @@ -136,9 +125,7 @@ class SVGEnumeration : public SVGEnumerationBase { protected: explicit SVGEnumeration(Enum new_value) - : SVGEnumerationBase(new_value, - GetStaticStringEntries(), - GetMaxExposedEnumValue()) {} + : SVGEnumerationBase(new_value, GetEnumerationMap()) {} }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_enumeration_map.cc b/chromium/third_party/blink/renderer/core/svg/svg_enumeration_map.cc new file mode 100644 index 00000000000..446efe950ad --- /dev/null +++ b/chromium/third_party/blink/renderer/core/svg/svg_enumeration_map.cc @@ -0,0 +1,19 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h" + +#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + +namespace blink { + +unsigned short SVGEnumerationMap::ValueFromName(const String& name) const { + for (const Entry& entry : *this) { + if (name == entry.name) + return entry.value; + } + return 0; +} + +} // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_enumeration_map.h b/chromium/third_party/blink/renderer/core/svg/svg_enumeration_map.h new file mode 100644 index 00000000000..6cecee9db33 --- /dev/null +++ b/chromium/third_party/blink/renderer/core/svg/svg_enumeration_map.h @@ -0,0 +1,63 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_SVG_SVG_ENUMERATION_MAP_H_ +#define THIRD_PARTY_BLINK_RENDERER_CORE_SVG_SVG_ENUMERATION_MAP_H_ + +#include "third_party/blink/renderer/platform/wtf/assertions.h" +#include "third_party/blink/renderer/platform/wtf/forward.h" + +namespace blink { + +// Helper class for SVG enumerations. Maps between name (string) and value. +// +// It is assumed that enumeration values are contiguous, non-zero and +// starting at 1. +// +// For enumerations that have had new values added since SVG 1.1, the +// |max_exposed_value| should be set to the last old value. From this also +// follow that the new values should sort last - after the |max_exposed_value|. +// (This is currently always the case in the spec too.) +class SVGEnumerationMap { + public: + struct Entry { + const unsigned short value; + const char* const name; + }; + + template + constexpr SVGEnumerationMap(const Entry (&entries)[entries_length]) + : SVGEnumerationMap(entries, entries[entries_length - 1].value) {} + template + constexpr SVGEnumerationMap(const Entry (&entries)[entries_length], + unsigned short max_exposed_value) + : entries_(entries), + num_entries_(entries_length), + max_exposed_value_(max_exposed_value) {} + + const char* NameFromValue(unsigned short value) const { + DCHECK(value); // We should never store 0 (*_UNKNOWN) in the map. + DCHECK_LT(value - 1, num_entries_); + DCHECK_EQ(entries_[value - 1].value, value); + return entries_[value - 1].name; + } + unsigned short ValueFromName(const String&) const; + + unsigned short ValueOfLast() const { + return entries_[num_entries_ - 1].value; + } + unsigned short MaxExposedValue() const { return max_exposed_value_; } + + private: + const Entry* begin() const { return entries_; } + const Entry* end() const { return entries_ + num_entries_; } + + const Entry* const entries_; + const unsigned short num_entries_; + const unsigned short max_exposed_value_; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_CORE_SVG_SVG_ENUMERATION_MAP_H_ diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_blend_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_blend_element.cc index 3f123235949..fba813e976d 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_blend_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_blend_element.cc @@ -21,6 +21,7 @@ #include "third_party/blink/renderer/core/svg/svg_fe_blend_element.h" #include "third_party/blink/renderer/core/svg/graphics/filters/svg_filter_builder.h" +#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h" #include "third_party/blink/renderer/core/svg_names.h" #include "third_party/blink/renderer/platform/graphics/filters/fe_blend.h" @@ -56,53 +57,36 @@ static BlendMode ToBlendMode(SVGFEBlendElement::Mode mode) { } template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries() { - DEFINE_STATIC_LOCAL(SVGEnumerationStringEntries, entries, ()); - if (entries.IsEmpty()) { - entries.push_back(std::make_pair(SVGFEBlendElement::kModeNormal, "normal")); - entries.push_back( - std::make_pair(SVGFEBlendElement::kModeMultiply, "multiply")); - entries.push_back(std::make_pair(SVGFEBlendElement::kModeScreen, "screen")); - entries.push_back(std::make_pair(SVGFEBlendElement::kModeDarken, "darken")); - entries.push_back( - std::make_pair(SVGFEBlendElement::kModeLighten, "lighten")); - entries.push_back( - std::make_pair(SVGFEBlendElement::kModeOverlay, "overlay")); - entries.push_back( - std::make_pair(SVGFEBlendElement::kModeColorDodge, "color-dodge")); - entries.push_back( - std::make_pair(SVGFEBlendElement::kModeColorBurn, "color-burn")); - entries.push_back( - std::make_pair(SVGFEBlendElement::kModeHardLight, "hard-light")); - entries.push_back( - std::make_pair(SVGFEBlendElement::kModeSoftLight, "soft-light")); - entries.push_back( - std::make_pair(SVGFEBlendElement::kModeDifference, "difference")); - entries.push_back( - std::make_pair(SVGFEBlendElement::kModeExclusion, "exclusion")); - entries.push_back(std::make_pair(SVGFEBlendElement::kModeHue, "hue")); - entries.push_back( - std::make_pair(SVGFEBlendElement::kModeSaturation, "saturation")); - entries.push_back(std::make_pair(SVGFEBlendElement::kModeColor, "color")); - entries.push_back( - std::make_pair(SVGFEBlendElement::kModeLuminosity, "luminosity")); - } +const SVGEnumerationMap& GetEnumerationMap() { + static const SVGEnumerationMap::Entry enum_items[] = { + {SVGFEBlendElement::kModeNormal, "normal"}, + {SVGFEBlendElement::kModeMultiply, "multiply"}, + {SVGFEBlendElement::kModeScreen, "screen"}, + {SVGFEBlendElement::kModeDarken, "darken"}, + {SVGFEBlendElement::kModeLighten, "lighten"}, + {SVGFEBlendElement::kModeOverlay, "overlay"}, + {SVGFEBlendElement::kModeColorDodge, "color-dodge"}, + {SVGFEBlendElement::kModeColorBurn, "color-burn"}, + {SVGFEBlendElement::kModeHardLight, "hard-light"}, + {SVGFEBlendElement::kModeSoftLight, "soft-light"}, + {SVGFEBlendElement::kModeDifference, "difference"}, + {SVGFEBlendElement::kModeExclusion, "exclusion"}, + {SVGFEBlendElement::kModeHue, "hue"}, + {SVGFEBlendElement::kModeSaturation, "saturation"}, + {SVGFEBlendElement::kModeColor, "color"}, + {SVGFEBlendElement::kModeLuminosity, "luminosity"}, + }; + static const SVGEnumerationMap entries(enum_items); return entries; } -template <> -unsigned short GetMaxExposedEnumValue() { - return SVGFEBlendElement::kModeLighten; -} - inline SVGFEBlendElement::SVGFEBlendElement(Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feBlendTag, document), - in1_(SVGAnimatedString::Create(this, SVGNames::inAttr)), - in2_(SVGAnimatedString::Create(this, SVGNames::in2Attr)), + : SVGFilterPrimitiveStandardAttributes(svg_names::kFEBlendTag, document), + in1_(SVGAnimatedString::Create(this, svg_names::kInAttr)), + in2_(SVGAnimatedString::Create(this, svg_names::kIn2Attr)), mode_(SVGAnimatedEnumeration::Create( this, - SVGNames::modeAttr, + svg_names::kModeAttr, SVGFEBlendElement::kModeNormal)) { AddToPropertyMap(in1_); AddToPropertyMap(in2_); @@ -122,7 +106,7 @@ bool SVGFEBlendElement::SetFilterEffectAttribute( FilterEffect* effect, const QualifiedName& attr_name) { FEBlend* blend = static_cast(effect); - if (attr_name == SVGNames::modeAttr) + if (attr_name == svg_names::kModeAttr) return blend->SetBlendMode(ToBlendMode(mode_->CurrentValue()->EnumValue())); return SVGFilterPrimitiveStandardAttributes::SetFilterEffectAttribute( @@ -130,13 +114,13 @@ bool SVGFEBlendElement::SetFilterEffectAttribute( } void SVGFEBlendElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::modeAttr) { + if (attr_name == svg_names::kModeAttr) { SVGElement::InvalidationGuard invalidation_guard(this); PrimitiveAttributeChanged(attr_name); return; } - if (attr_name == SVGNames::inAttr || attr_name == SVGNames::in2Attr) { + if (attr_name == svg_names::kInAttr || attr_name == svg_names::kIn2Attr) { SVGElement::InvalidationGuard invalidation_guard(this); Invalidate(); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_blend_element.h b/chromium/third_party/blink/renderer/core/svg/svg_fe_blend_element.h index 0ca38c0be5e..cc6cf833568 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_blend_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_blend_element.h @@ -38,20 +38,17 @@ class SVGFEBlendElement final : public SVGFilterPrimitiveStandardAttributes { kModeScreen = 3, kModeDarken = 4, kModeLighten = 5, - - // The following modes do not map to IDL constants on - // SVGFEBlendElement. - kModeOverlay, - kModeColorDodge, - kModeColorBurn, - kModeHardLight, - kModeSoftLight, - kModeDifference, - kModeExclusion, - kModeHue, - kModeSaturation, - kModeColor, - kModeLuminosity, + kModeOverlay = 6, + kModeColorDodge = 7, + kModeColorBurn = 8, + kModeHardLight = 9, + kModeSoftLight = 10, + kModeDifference = 11, + kModeExclusion = 12, + kModeHue = 13, + kModeSaturation = 14, + kModeColor = 15, + kModeLuminosity = 16, }; DECLARE_NODE_FACTORY(SVGFEBlendElement); @@ -74,11 +71,7 @@ class SVGFEBlendElement final : public SVGFilterPrimitiveStandardAttributes { Member> mode_; }; -template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries(); -template <> -unsigned short GetMaxExposedEnumValue(); +DECLARE_SVG_ENUM_MAP(SVGFEBlendElement::Mode); } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_blend_element.idl b/chromium/third_party/blink/renderer/core/svg/svg_fe_blend_element.idl index 88bc48c9c99..5f7487b76a7 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_blend_element.idl +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_blend_element.idl @@ -36,6 +36,17 @@ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_SCREEN = 3; [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_DARKEN = 4; [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_LIGHTEN = 5; + [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_OVERLAY = 6; + [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_COLOR_DODGE = 7; + [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_COLOR_BURN = 8; + [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_HARD_LIGHT = 9; + [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_SOFT_LIGHT = 10; + [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_DIFFERENCE = 11; + [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_EXCLUSION = 12; + [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_HUE = 13; + [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_SATURATION = 14; + [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_COLOR = 15; + [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_LUMINOSITY = 16; [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1; [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in2; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_color_matrix_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_color_matrix_element.cc index 1d4ec5d95b4..46cb2d95219 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_color_matrix_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_color_matrix_element.cc @@ -21,32 +21,31 @@ #include "third_party/blink/renderer/core/svg/svg_fe_color_matrix_element.h" #include "third_party/blink/renderer/core/svg/graphics/filters/svg_filter_builder.h" +#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h" #include "third_party/blink/renderer/core/svg_names.h" namespace blink { template <> -const SVGEnumerationStringEntries& GetStaticStringEntries() { - DEFINE_STATIC_LOCAL(SVGEnumerationStringEntries, entries, ()); - if (entries.IsEmpty()) { - entries.push_back(std::make_pair(FECOLORMATRIX_TYPE_MATRIX, "matrix")); - entries.push_back(std::make_pair(FECOLORMATRIX_TYPE_SATURATE, "saturate")); - entries.push_back( - std::make_pair(FECOLORMATRIX_TYPE_HUEROTATE, "hueRotate")); - entries.push_back(std::make_pair(FECOLORMATRIX_TYPE_LUMINANCETOALPHA, - "luminanceToAlpha")); - } +const SVGEnumerationMap& GetEnumerationMap() { + static const SVGEnumerationMap::Entry enum_items[] = { + {FECOLORMATRIX_TYPE_MATRIX, "matrix"}, + {FECOLORMATRIX_TYPE_SATURATE, "saturate"}, + {FECOLORMATRIX_TYPE_HUEROTATE, "hueRotate"}, + {FECOLORMATRIX_TYPE_LUMINANCETOALPHA, "luminanceToAlpha"}, + }; + static const SVGEnumerationMap entries(enum_items); return entries; } inline SVGFEColorMatrixElement::SVGFEColorMatrixElement(Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feColorMatrixTag, + : SVGFilterPrimitiveStandardAttributes(svg_names::kFEColorMatrixTag, document), - values_(SVGAnimatedNumberList::Create(this, SVGNames::valuesAttr)), - in1_(SVGAnimatedString::Create(this, SVGNames::inAttr)), + values_(SVGAnimatedNumberList::Create(this, svg_names::kValuesAttr)), + in1_(SVGAnimatedString::Create(this, svg_names::kInAttr)), type_(SVGAnimatedEnumeration::Create( this, - SVGNames::typeAttr, + svg_names::kTypeAttr, FECOLORMATRIX_TYPE_MATRIX)) { AddToPropertyMap(values_); AddToPropertyMap(in1_); @@ -66,9 +65,9 @@ bool SVGFEColorMatrixElement::SetFilterEffectAttribute( FilterEffect* effect, const QualifiedName& attr_name) { FEColorMatrix* color_matrix = static_cast(effect); - if (attr_name == SVGNames::typeAttr) + if (attr_name == svg_names::kTypeAttr) return color_matrix->SetType(type_->CurrentValue()->EnumValue()); - if (attr_name == SVGNames::valuesAttr) + if (attr_name == svg_names::kValuesAttr) return color_matrix->SetValues(values_->CurrentValue()->ToFloatVector()); return SVGFilterPrimitiveStandardAttributes::SetFilterEffectAttribute( @@ -77,13 +76,14 @@ bool SVGFEColorMatrixElement::SetFilterEffectAttribute( void SVGFEColorMatrixElement::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::typeAttr || attr_name == SVGNames::valuesAttr) { + if (attr_name == svg_names::kTypeAttr || + attr_name == svg_names::kValuesAttr) { SVGElement::InvalidationGuard invalidation_guard(this); PrimitiveAttributeChanged(attr_name); return; } - if (attr_name == SVGNames::inAttr) { + if (attr_name == svg_names::kInAttr) { SVGElement::InvalidationGuard invalidation_guard(this); Invalidate(); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_color_matrix_element.h b/chromium/third_party/blink/renderer/core/svg/svg_fe_color_matrix_element.h index 6263a90f7e8..6342432ac8b 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_color_matrix_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_color_matrix_element.h @@ -29,8 +29,7 @@ namespace blink { -template <> -const SVGEnumerationStringEntries& GetStaticStringEntries(); +DECLARE_SVG_ENUM_MAP(ColorMatrixType); class SVGFEColorMatrixElement final : public SVGFilterPrimitiveStandardAttributes { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_component_transfer_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_component_transfer_element.cc index 756642087e9..6255f1e907e 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_component_transfer_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_component_transfer_element.cc @@ -33,9 +33,9 @@ namespace blink { inline SVGFEComponentTransferElement::SVGFEComponentTransferElement( Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feComponentTransferTag, + : SVGFilterPrimitiveStandardAttributes(svg_names::kFEComponentTransferTag, document), - in1_(SVGAnimatedString::Create(this, SVGNames::inAttr)) { + in1_(SVGAnimatedString::Create(this, svg_names::kInAttr)) { AddToPropertyMap(in1_); } @@ -48,7 +48,7 @@ DEFINE_NODE_FACTORY(SVGFEComponentTransferElement) void SVGFEComponentTransferElement::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::inAttr) { + if (attr_name == svg_names::kInAttr) { SVGElement::InvalidationGuard invalidation_guard(this); Invalidate(); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_composite_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_composite_element.cc index a86fdd0e2d7..68c63e6478d 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_composite_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_composite_element.cc @@ -21,43 +21,39 @@ #include "third_party/blink/renderer/core/svg/svg_fe_composite_element.h" #include "third_party/blink/renderer/core/svg/graphics/filters/svg_filter_builder.h" +#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h" #include "third_party/blink/renderer/core/svg_names.h" namespace blink { template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries() { - DEFINE_STATIC_LOCAL(SVGEnumerationStringEntries, entries, ()); - if (entries.IsEmpty()) { - entries.push_back(std::make_pair(FECOMPOSITE_OPERATOR_OVER, "over")); - entries.push_back(std::make_pair(FECOMPOSITE_OPERATOR_IN, "in")); - entries.push_back(std::make_pair(FECOMPOSITE_OPERATOR_OUT, "out")); - entries.push_back(std::make_pair(FECOMPOSITE_OPERATOR_ATOP, "atop")); - entries.push_back(std::make_pair(FECOMPOSITE_OPERATOR_XOR, "xor")); - entries.push_back( - std::make_pair(FECOMPOSITE_OPERATOR_ARITHMETIC, "arithmetic")); - entries.push_back(std::make_pair(FECOMPOSITE_OPERATOR_LIGHTER, "lighter")); - } +const SVGEnumerationMap& GetEnumerationMap() { + static const SVGEnumerationMap::Entry enum_items[] = { + {FECOMPOSITE_OPERATOR_OVER, "over"}, + {FECOMPOSITE_OPERATOR_IN, "in"}, + {FECOMPOSITE_OPERATOR_OUT, "out"}, + {FECOMPOSITE_OPERATOR_ATOP, "atop"}, + {FECOMPOSITE_OPERATOR_XOR, "xor"}, + {FECOMPOSITE_OPERATOR_ARITHMETIC, "arithmetic"}, + {FECOMPOSITE_OPERATOR_LIGHTER, "lighter"}, + }; + static const SVGEnumerationMap entries(enum_items, + FECOMPOSITE_OPERATOR_ARITHMETIC); return entries; } -template <> -unsigned short GetMaxExposedEnumValue() { - return FECOMPOSITE_OPERATOR_ARITHMETIC; -} - inline SVGFECompositeElement::SVGFECompositeElement(Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feCompositeTag, document), - k1_(SVGAnimatedNumber::Create(this, SVGNames::k1Attr, 0.0f)), - k2_(SVGAnimatedNumber::Create(this, SVGNames::k2Attr, 0.0f)), - k3_(SVGAnimatedNumber::Create(this, SVGNames::k3Attr, 0.0f)), - k4_(SVGAnimatedNumber::Create(this, SVGNames::k4Attr, 0.0f)), - in1_(SVGAnimatedString::Create(this, SVGNames::inAttr)), - in2_(SVGAnimatedString::Create(this, SVGNames::in2Attr)), + : SVGFilterPrimitiveStandardAttributes(svg_names::kFECompositeTag, + document), + k1_(SVGAnimatedNumber::Create(this, svg_names::kK1Attr, 0.0f)), + k2_(SVGAnimatedNumber::Create(this, svg_names::kK2Attr, 0.0f)), + k3_(SVGAnimatedNumber::Create(this, svg_names::kK3Attr, 0.0f)), + k4_(SVGAnimatedNumber::Create(this, svg_names::kK4Attr, 0.0f)), + in1_(SVGAnimatedString::Create(this, svg_names::kInAttr)), + in2_(SVGAnimatedString::Create(this, svg_names::kIn2Attr)), svg_operator_(SVGAnimatedEnumeration::Create( this, - SVGNames::operatorAttr, + svg_names::kOperatorAttr, FECOMPOSITE_OPERATOR_OVER)) { AddToPropertyMap(k1_); AddToPropertyMap(k2_); @@ -85,15 +81,15 @@ bool SVGFECompositeElement::SetFilterEffectAttribute( FilterEffect* effect, const QualifiedName& attr_name) { FEComposite* composite = static_cast(effect); - if (attr_name == SVGNames::operatorAttr) + if (attr_name == svg_names::kOperatorAttr) return composite->SetOperation(svg_operator_->CurrentValue()->EnumValue()); - if (attr_name == SVGNames::k1Attr) + if (attr_name == svg_names::kK1Attr) return composite->SetK1(k1_->CurrentValue()->Value()); - if (attr_name == SVGNames::k2Attr) + if (attr_name == svg_names::kK2Attr) return composite->SetK2(k2_->CurrentValue()->Value()); - if (attr_name == SVGNames::k3Attr) + if (attr_name == svg_names::kK3Attr) return composite->SetK3(k3_->CurrentValue()->Value()); - if (attr_name == SVGNames::k4Attr) + if (attr_name == svg_names::kK4Attr) return composite->SetK4(k4_->CurrentValue()->Value()); return SVGFilterPrimitiveStandardAttributes::SetFilterEffectAttribute( @@ -102,15 +98,15 @@ bool SVGFECompositeElement::SetFilterEffectAttribute( void SVGFECompositeElement::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::operatorAttr || attr_name == SVGNames::k1Attr || - attr_name == SVGNames::k2Attr || attr_name == SVGNames::k3Attr || - attr_name == SVGNames::k4Attr) { + if (attr_name == svg_names::kOperatorAttr || + attr_name == svg_names::kK1Attr || attr_name == svg_names::kK2Attr || + attr_name == svg_names::kK3Attr || attr_name == svg_names::kK4Attr) { SVGElement::InvalidationGuard invalidation_guard(this); PrimitiveAttributeChanged(attr_name); return; } - if (attr_name == SVGNames::inAttr || attr_name == SVGNames::in2Attr) { + if (attr_name == svg_names::kInAttr || attr_name == svg_names::kIn2Attr) { SVGElement::InvalidationGuard invalidation_guard(this); Invalidate(); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_composite_element.h b/chromium/third_party/blink/renderer/core/svg/svg_fe_composite_element.h index 319cf54c665..e3f74eed510 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_composite_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_composite_element.h @@ -29,9 +29,7 @@ namespace blink { -template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries(); +DECLARE_SVG_ENUM_MAP(CompositeOperationType); class SVGFECompositeElement final : public SVGFilterPrimitiveStandardAttributes { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_convolve_matrix_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_convolve_matrix_element.cc index 78cda0dfc92..e699329735a 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_convolve_matrix_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_convolve_matrix_element.cc @@ -21,6 +21,7 @@ #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/svg/graphics/filters/svg_filter_builder.h" +#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h" #include "third_party/blink/renderer/core/svg_names.h" #include "third_party/blink/renderer/platform/geometry/int_point.h" #include "third_party/blink/renderer/platform/geometry/int_size.h" @@ -28,30 +29,30 @@ namespace blink { template <> -const SVGEnumerationStringEntries& GetStaticStringEntries() { - DEFINE_STATIC_LOCAL(SVGEnumerationStringEntries, entries, ()); - if (entries.IsEmpty()) { - entries.push_back(std::make_pair(EDGEMODE_DUPLICATE, "duplicate")); - entries.push_back(std::make_pair(EDGEMODE_WRAP, "wrap")); - entries.push_back(std::make_pair(EDGEMODE_NONE, "none")); - } +const SVGEnumerationMap& GetEnumerationMap() { + static const SVGEnumerationMap::Entry enum_items[] = { + {EDGEMODE_DUPLICATE, "duplicate"}, + {EDGEMODE_WRAP, "wrap"}, + {EDGEMODE_NONE, "none"}, + }; + static const SVGEnumerationMap entries(enum_items); return entries; } class SVGAnimatedOrder : public SVGAnimatedIntegerOptionalInteger { public: static SVGAnimatedOrder* Create(SVGElement* context_element) { - return new SVGAnimatedOrder(context_element); + return MakeGarbageCollected(context_element); } - SVGParsingError AttributeChanged(const String&) override; - - protected: SVGAnimatedOrder(SVGElement* context_element) : SVGAnimatedIntegerOptionalInteger(context_element, - SVGNames::orderAttr, + svg_names::kOrderAttr, 3) {} + SVGParsingError AttributeChanged(const String&) override; + + protected: static SVGParsingError CheckValue(SVGParsingError parse_status, int value) { if (parse_status != SVGParseStatus::kNoError) return parse_status; @@ -75,26 +76,26 @@ SVGParsingError SVGAnimatedOrder::AttributeChanged(const String& value) { inline SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement( Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feConvolveMatrixTag, + : SVGFilterPrimitiveStandardAttributes(svg_names::kFEConvolveMatrixTag, document), - bias_(SVGAnimatedNumber::Create(this, SVGNames::biasAttr, 0.0f)), - divisor_(SVGAnimatedNumber::Create(this, SVGNames::divisorAttr, 1)), - in1_(SVGAnimatedString::Create(this, SVGNames::inAttr)), + bias_(SVGAnimatedNumber::Create(this, svg_names::kBiasAttr, 0.0f)), + divisor_(SVGAnimatedNumber::Create(this, svg_names::kDivisorAttr, 1)), + in1_(SVGAnimatedString::Create(this, svg_names::kInAttr)), edge_mode_( SVGAnimatedEnumeration::Create(this, - SVGNames::edgeModeAttr, + svg_names::kEdgeModeAttr, EDGEMODE_DUPLICATE)), kernel_matrix_( - SVGAnimatedNumberList::Create(this, SVGNames::kernelMatrixAttr)), + SVGAnimatedNumberList::Create(this, svg_names::kKernelMatrixAttr)), kernel_unit_length_(SVGAnimatedNumberOptionalNumber::Create( this, - SVGNames::kernelUnitLengthAttr, + svg_names::kKernelUnitLengthAttr, 0.0f)), order_(SVGAnimatedOrder::Create(this)), preserve_alpha_( - SVGAnimatedBoolean::Create(this, SVGNames::preserveAlphaAttr)), - target_x_(SVGAnimatedInteger::Create(this, SVGNames::targetXAttr, 0)), - target_y_(SVGAnimatedInteger::Create(this, SVGNames::targetYAttr, 0)) { + SVGAnimatedBoolean::Create(this, svg_names::kPreserveAlphaAttr)), + target_x_(SVGAnimatedInteger::Create(this, svg_names::kTargetXAttr, 0)), + target_y_(SVGAnimatedInteger::Create(this, svg_names::kTargetYAttr, 0)) { AddToPropertyMap(preserve_alpha_); AddToPropertyMap(divisor_); AddToPropertyMap(bias_); @@ -158,16 +159,17 @@ bool SVGFEConvolveMatrixElement::SetFilterEffectAttribute( FilterEffect* effect, const QualifiedName& attr_name) { FEConvolveMatrix* convolve_matrix = static_cast(effect); - if (attr_name == SVGNames::edgeModeAttr) + if (attr_name == svg_names::kEdgeModeAttr) return convolve_matrix->SetEdgeMode( edge_mode_->CurrentValue()->EnumValue()); - if (attr_name == SVGNames::divisorAttr) + if (attr_name == svg_names::kDivisorAttr) return convolve_matrix->SetDivisor(ComputeDivisor()); - if (attr_name == SVGNames::biasAttr) + if (attr_name == svg_names::kBiasAttr) return convolve_matrix->SetBias(bias_->CurrentValue()->Value()); - if (attr_name == SVGNames::targetXAttr || attr_name == SVGNames::targetYAttr) + if (attr_name == svg_names::kTargetXAttr || + attr_name == svg_names::kTargetYAttr) return convolve_matrix->SetTargetOffset(TargetPoint()); - if (attr_name == SVGNames::preserveAlphaAttr) + if (attr_name == svg_names::kPreserveAlphaAttr) return convolve_matrix->SetPreserveAlpha( preserve_alpha_->CurrentValue()->Value()); return SVGFilterPrimitiveStandardAttributes::SetFilterEffectAttribute( @@ -176,18 +178,19 @@ bool SVGFEConvolveMatrixElement::SetFilterEffectAttribute( void SVGFEConvolveMatrixElement::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::edgeModeAttr || - attr_name == SVGNames::divisorAttr || attr_name == SVGNames::biasAttr || - attr_name == SVGNames::targetXAttr || - attr_name == SVGNames::targetYAttr || - attr_name == SVGNames::preserveAlphaAttr) { + if (attr_name == svg_names::kEdgeModeAttr || + attr_name == svg_names::kDivisorAttr || + attr_name == svg_names::kBiasAttr || + attr_name == svg_names::kTargetXAttr || + attr_name == svg_names::kTargetYAttr || + attr_name == svg_names::kPreserveAlphaAttr) { SVGElement::InvalidationGuard invalidation_guard(this); PrimitiveAttributeChanged(attr_name); return; } - if (attr_name == SVGNames::inAttr || attr_name == SVGNames::orderAttr || - attr_name == SVGNames::kernelMatrixAttr) { + if (attr_name == svg_names::kInAttr || attr_name == svg_names::kOrderAttr || + attr_name == svg_names::kKernelMatrixAttr) { SVGElement::InvalidationGuard invalidation_guard(this); Invalidate(); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_convolve_matrix_element.h b/chromium/third_party/blink/renderer/core/svg/svg_fe_convolve_matrix_element.h index d87032740f3..2b633845a25 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_convolve_matrix_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_convolve_matrix_element.h @@ -33,8 +33,7 @@ namespace blink { -template <> -const SVGEnumerationStringEntries& GetStaticStringEntries(); +DECLARE_SVG_ENUM_MAP(EdgeModeType); class SVGFEConvolveMatrixElement final : public SVGFilterPrimitiveStandardAttributes { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_diffuse_lighting_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_diffuse_lighting_element.cc index 737f65248af..ab43b2a009e 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_diffuse_lighting_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_diffuse_lighting_element.cc @@ -29,17 +29,17 @@ namespace blink { inline SVGFEDiffuseLightingElement::SVGFEDiffuseLightingElement( Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feDiffuseLightingTag, + : SVGFilterPrimitiveStandardAttributes(svg_names::kFEDiffuseLightingTag, document), diffuse_constant_( - SVGAnimatedNumber::Create(this, SVGNames::diffuseConstantAttr, 1)), + SVGAnimatedNumber::Create(this, svg_names::kDiffuseConstantAttr, 1)), surface_scale_( - SVGAnimatedNumber::Create(this, SVGNames::surfaceScaleAttr, 1)), + SVGAnimatedNumber::Create(this, svg_names::kSurfaceScaleAttr, 1)), kernel_unit_length_(SVGAnimatedNumberOptionalNumber::Create( this, - SVGNames::kernelUnitLengthAttr, + svg_names::kKernelUnitLengthAttr, 0.0f)), - in1_(SVGAnimatedString::Create(this, SVGNames::inAttr)) { + in1_(SVGAnimatedString::Create(this, svg_names::kInAttr)) { AddToPropertyMap(diffuse_constant_); AddToPropertyMap(surface_scale_); AddToPropertyMap(kernel_unit_length_); @@ -61,15 +61,15 @@ bool SVGFEDiffuseLightingElement::SetFilterEffectAttribute( const QualifiedName& attr_name) { FEDiffuseLighting* diffuse_lighting = static_cast(effect); - if (attr_name == SVGNames::lighting_colorAttr) { + if (attr_name == svg_names::kLightingColorAttr) { const ComputedStyle& style = ComputedStyleRef(); return diffuse_lighting->SetLightingColor( style.VisitedDependentColor(GetCSSPropertyLightingColor())); } - if (attr_name == SVGNames::surfaceScaleAttr) + if (attr_name == svg_names::kSurfaceScaleAttr) return diffuse_lighting->SetSurfaceScale( surface_scale_->CurrentValue()->Value()); - if (attr_name == SVGNames::diffuseConstantAttr) + if (attr_name == svg_names::kDiffuseConstantAttr) return diffuse_lighting->SetDiffuseConstant( diffuse_constant_->CurrentValue()->Value()); @@ -81,25 +81,25 @@ bool SVGFEDiffuseLightingElement::SetFilterEffectAttribute( DCHECK(light_element); DCHECK(effect->GetFilter()); - if (attr_name == SVGNames::azimuthAttr) + if (attr_name == svg_names::kAzimuthAttr) return light_source->SetAzimuth( light_element->azimuth()->CurrentValue()->Value()); - if (attr_name == SVGNames::elevationAttr) + if (attr_name == svg_names::kElevationAttr) return light_source->SetElevation( light_element->elevation()->CurrentValue()->Value()); - if (attr_name == SVGNames::xAttr || attr_name == SVGNames::yAttr || - attr_name == SVGNames::zAttr) + if (attr_name == svg_names::kXAttr || attr_name == svg_names::kYAttr || + attr_name == svg_names::kZAttr) return light_source->SetPosition( effect->GetFilter()->Resolve3dPoint(light_element->GetPosition())); - if (attr_name == SVGNames::pointsAtXAttr || - attr_name == SVGNames::pointsAtYAttr || - attr_name == SVGNames::pointsAtZAttr) + if (attr_name == svg_names::kPointsAtXAttr || + attr_name == svg_names::kPointsAtYAttr || + attr_name == svg_names::kPointsAtZAttr) return light_source->SetPointsAt( effect->GetFilter()->Resolve3dPoint(light_element->PointsAt())); - if (attr_name == SVGNames::specularExponentAttr) + if (attr_name == svg_names::kSpecularExponentAttr) return light_source->SetSpecularExponent( light_element->specularExponent()->CurrentValue()->Value()); - if (attr_name == SVGNames::limitingConeAngleAttr) + if (attr_name == svg_names::kLimitingConeAngleAttr) return light_source->SetLimitingConeAngle( light_element->limitingConeAngle()->CurrentValue()->Value()); @@ -109,15 +109,15 @@ bool SVGFEDiffuseLightingElement::SetFilterEffectAttribute( void SVGFEDiffuseLightingElement::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::surfaceScaleAttr || - attr_name == SVGNames::diffuseConstantAttr || - attr_name == SVGNames::lighting_colorAttr) { + if (attr_name == svg_names::kSurfaceScaleAttr || + attr_name == svg_names::kDiffuseConstantAttr || + attr_name == svg_names::kLightingColorAttr) { SVGElement::InvalidationGuard invalidation_guard(this); PrimitiveAttributeChanged(attr_name); return; } - if (attr_name == SVGNames::inAttr) { + if (attr_name == svg_names::kInAttr) { SVGElement::InvalidationGuard invalidation_guard(this); Invalidate(); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_displacement_map_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_displacement_map_element.cc index 653f37e208a..9ae2dddc0b5 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_displacement_map_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_displacement_map_element.cc @@ -20,37 +20,34 @@ #include "third_party/blink/renderer/core/svg/svg_fe_displacement_map_element.h" #include "third_party/blink/renderer/core/svg/graphics/filters/svg_filter_builder.h" +#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h" #include "third_party/blink/renderer/core/svg_names.h" namespace blink { template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries() { - DEFINE_STATIC_LOCAL(SVGEnumerationStringEntries, entries, ()); - if (entries.IsEmpty()) { - entries.push_back(std::make_pair(CHANNEL_R, "R")); - entries.push_back(std::make_pair(CHANNEL_G, "G")); - entries.push_back(std::make_pair(CHANNEL_B, "B")); - entries.push_back(std::make_pair(CHANNEL_A, "A")); - } +const SVGEnumerationMap& GetEnumerationMap() { + static const SVGEnumerationMap::Entry enum_items[] = { + {CHANNEL_R, "R"}, {CHANNEL_G, "G"}, {CHANNEL_B, "B"}, {CHANNEL_A, "A"}, + }; + static const SVGEnumerationMap entries(enum_items); return entries; } inline SVGFEDisplacementMapElement::SVGFEDisplacementMapElement( Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feDisplacementMapTag, + : SVGFilterPrimitiveStandardAttributes(svg_names::kFEDisplacementMapTag, document), - scale_(SVGAnimatedNumber::Create(this, SVGNames::scaleAttr, 0.0f)), - in1_(SVGAnimatedString::Create(this, SVGNames::inAttr)), - in2_(SVGAnimatedString::Create(this, SVGNames::in2Attr)), + scale_(SVGAnimatedNumber::Create(this, svg_names::kScaleAttr, 0.0f)), + in1_(SVGAnimatedString::Create(this, svg_names::kInAttr)), + in2_(SVGAnimatedString::Create(this, svg_names::kIn2Attr)), x_channel_selector_(SVGAnimatedEnumeration::Create( this, - SVGNames::xChannelSelectorAttr, + svg_names::kXChannelSelectorAttr, CHANNEL_A)), y_channel_selector_(SVGAnimatedEnumeration::Create( this, - SVGNames::yChannelSelectorAttr, + svg_names::kYChannelSelectorAttr, CHANNEL_A)) { AddToPropertyMap(scale_); AddToPropertyMap(in1_); @@ -74,13 +71,13 @@ bool SVGFEDisplacementMapElement::SetFilterEffectAttribute( FilterEffect* effect, const QualifiedName& attr_name) { FEDisplacementMap* displacement_map = static_cast(effect); - if (attr_name == SVGNames::xChannelSelectorAttr) + if (attr_name == svg_names::kXChannelSelectorAttr) return displacement_map->SetXChannelSelector( x_channel_selector_->CurrentValue()->EnumValue()); - if (attr_name == SVGNames::yChannelSelectorAttr) + if (attr_name == svg_names::kYChannelSelectorAttr) return displacement_map->SetYChannelSelector( y_channel_selector_->CurrentValue()->EnumValue()); - if (attr_name == SVGNames::scaleAttr) + if (attr_name == svg_names::kScaleAttr) return displacement_map->SetScale(scale_->CurrentValue()->Value()); return SVGFilterPrimitiveStandardAttributes::SetFilterEffectAttribute( @@ -89,15 +86,15 @@ bool SVGFEDisplacementMapElement::SetFilterEffectAttribute( void SVGFEDisplacementMapElement::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::xChannelSelectorAttr || - attr_name == SVGNames::yChannelSelectorAttr || - attr_name == SVGNames::scaleAttr) { + if (attr_name == svg_names::kXChannelSelectorAttr || + attr_name == svg_names::kYChannelSelectorAttr || + attr_name == svg_names::kScaleAttr) { SVGElement::InvalidationGuard invalidation_guard(this); PrimitiveAttributeChanged(attr_name); return; } - if (attr_name == SVGNames::inAttr || attr_name == SVGNames::in2Attr) { + if (attr_name == svg_names::kInAttr || attr_name == svg_names::kIn2Attr) { SVGElement::InvalidationGuard invalidation_guard(this); Invalidate(); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_displacement_map_element.h b/chromium/third_party/blink/renderer/core/svg/svg_fe_displacement_map_element.h index a2ea61a18fc..29175d2d618 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_displacement_map_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_displacement_map_element.h @@ -28,9 +28,7 @@ namespace blink { -template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries(); +DECLARE_SVG_ENUM_MAP(ChannelSelectorType); class SVGFEDisplacementMapElement final : public SVGFilterPrimitiveStandardAttributes { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_distant_light_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_distant_light_element.cc index 99645e252d2..f6b135f4747 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_distant_light_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_distant_light_element.cc @@ -25,7 +25,7 @@ namespace blink { inline SVGFEDistantLightElement::SVGFEDistantLightElement(Document& document) - : SVGFELightElement(SVGNames::feDistantLightTag, document) {} + : SVGFELightElement(svg_names::kFEDistantLightTag, document) {} DEFINE_NODE_FACTORY(SVGFEDistantLightElement) diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_drop_shadow_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_drop_shadow_element.cc index 64656ded04e..561173cc518 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_drop_shadow_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_drop_shadow_element.cc @@ -29,14 +29,15 @@ namespace blink { inline SVGFEDropShadowElement::SVGFEDropShadowElement(Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feDropShadowTag, document), - dx_(SVGAnimatedNumber::Create(this, SVGNames::dxAttr, 2)), - dy_(SVGAnimatedNumber::Create(this, SVGNames::dyAttr, 2)), + : SVGFilterPrimitiveStandardAttributes(svg_names::kFEDropShadowTag, + document), + dx_(SVGAnimatedNumber::Create(this, svg_names::kDxAttr, 2)), + dy_(SVGAnimatedNumber::Create(this, svg_names::kDyAttr, 2)), std_deviation_( SVGAnimatedNumberOptionalNumber::Create(this, - SVGNames::stdDeviationAttr, + svg_names::kStdDeviationAttr, 2)), - in1_(SVGAnimatedString::Create(this, SVGNames::inAttr)) { + in1_(SVGAnimatedString::Create(this, svg_names::kInAttr)) { AddToPropertyMap(dx_); AddToPropertyMap(dy_); AddToPropertyMap(std_deviation_); @@ -65,12 +66,12 @@ bool SVGFEDropShadowElement::SetFilterEffectAttribute( const ComputedStyle& style = ComputedStyleRef(); FEDropShadow* drop_shadow = static_cast(effect); - if (attr_name == SVGNames::flood_colorAttr) { + if (attr_name == svg_names::kFloodColorAttr) { drop_shadow->SetShadowColor( style.VisitedDependentColor(GetCSSPropertyFloodColor())); return true; } - if (attr_name == SVGNames::flood_opacityAttr) { + if (attr_name == svg_names::kFloodOpacityAttr) { drop_shadow->SetShadowOpacity(style.SvgStyle().FloodOpacity()); return true; } @@ -80,9 +81,9 @@ bool SVGFEDropShadowElement::SetFilterEffectAttribute( void SVGFEDropShadowElement::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::inAttr || - attr_name == SVGNames::stdDeviationAttr || - attr_name == SVGNames::dxAttr || attr_name == SVGNames::dyAttr) { + if (attr_name == svg_names::kInAttr || + attr_name == svg_names::kStdDeviationAttr || + attr_name == svg_names::kDxAttr || attr_name == svg_names::kDyAttr) { SVGElement::InvalidationGuard invalidation_guard(this); Invalidate(); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_flood_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_flood_element.cc index 318b3f46be5..3b436135fb6 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_flood_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_flood_element.cc @@ -29,7 +29,7 @@ namespace blink { inline SVGFEFloodElement::SVGFEFloodElement(Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feFloodTag, document) {} + : SVGFilterPrimitiveStandardAttributes(svg_names::kFEFloodTag, document) {} DEFINE_NODE_FACTORY(SVGFEFloodElement) @@ -39,11 +39,11 @@ bool SVGFEFloodElement::SetFilterEffectAttribute( const ComputedStyle& style = ComputedStyleRef(); FEFlood* flood = static_cast(effect); - if (attr_name == SVGNames::flood_colorAttr) { + if (attr_name == svg_names::kFloodColorAttr) { return flood->SetFloodColor( style.VisitedDependentColor(GetCSSPropertyFloodColor())); } - if (attr_name == SVGNames::flood_opacityAttr) + if (attr_name == svg_names::kFloodOpacityAttr) return flood->SetFloodOpacity(style.SvgStyle().FloodOpacity()); return SVGFilterPrimitiveStandardAttributes::SetFilterEffectAttribute( diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_func_a_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_func_a_element.cc index b725ce5c976..c7b40eebb7e 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_func_a_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_func_a_element.cc @@ -23,7 +23,7 @@ namespace blink { inline SVGFEFuncAElement::SVGFEFuncAElement(Document& document) - : SVGComponentTransferFunctionElement(SVGNames::feFuncATag, document) {} + : SVGComponentTransferFunctionElement(svg_names::kFEFuncATag, document) {} DEFINE_NODE_FACTORY(SVGFEFuncAElement) } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_func_b_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_func_b_element.cc index bcb4d9d35df..00f0835cb0f 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_func_b_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_func_b_element.cc @@ -23,7 +23,7 @@ namespace blink { inline SVGFEFuncBElement::SVGFEFuncBElement(Document& document) - : SVGComponentTransferFunctionElement(SVGNames::feFuncBTag, document) {} + : SVGComponentTransferFunctionElement(svg_names::kFEFuncBTag, document) {} DEFINE_NODE_FACTORY(SVGFEFuncBElement) } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_func_g_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_func_g_element.cc index 78bbcad47be..ab64f16e365 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_func_g_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_func_g_element.cc @@ -23,7 +23,7 @@ namespace blink { inline SVGFEFuncGElement::SVGFEFuncGElement(Document& document) - : SVGComponentTransferFunctionElement(SVGNames::feFuncGTag, document) {} + : SVGComponentTransferFunctionElement(svg_names::kFEFuncGTag, document) {} DEFINE_NODE_FACTORY(SVGFEFuncGElement) } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_func_r_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_func_r_element.cc index 1f6aa0db6f1..1b3b77bc9ab 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_func_r_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_func_r_element.cc @@ -23,7 +23,7 @@ namespace blink { inline SVGFEFuncRElement::SVGFEFuncRElement(Document& document) - : SVGComponentTransferFunctionElement(SVGNames::feFuncRTag, document) {} + : SVGComponentTransferFunctionElement(svg_names::kFEFuncRTag, document) {} DEFINE_NODE_FACTORY(SVGFEFuncRElement) } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_gaussian_blur_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_gaussian_blur_element.cc index 2c234c1354a..6bee7ecb4ca 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_gaussian_blur_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_gaussian_blur_element.cc @@ -27,13 +27,13 @@ namespace blink { inline SVGFEGaussianBlurElement::SVGFEGaussianBlurElement(Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feGaussianBlurTag, + : SVGFilterPrimitiveStandardAttributes(svg_names::kFEGaussianBlurTag, document), std_deviation_( SVGAnimatedNumberOptionalNumber::Create(this, - SVGNames::stdDeviationAttr, + svg_names::kStdDeviationAttr, 0.0f)), - in1_(SVGAnimatedString::Create(this, SVGNames::inAttr)) { + in1_(SVGAnimatedString::Create(this, svg_names::kInAttr)) { AddToPropertyMap(std_deviation_); AddToPropertyMap(in1_); } @@ -54,8 +54,8 @@ void SVGFEGaussianBlurElement::setStdDeviation(float x, float y) { void SVGFEGaussianBlurElement::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::inAttr || - attr_name == SVGNames::stdDeviationAttr) { + if (attr_name == svg_names::kInAttr || + attr_name == svg_names::kStdDeviationAttr) { SVGElement::InvalidationGuard invalidation_guard(this); Invalidate(); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_image_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_image_element.cc index 475a22e09c6..92106996649 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_image_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_image_element.cc @@ -35,11 +35,11 @@ namespace blink { inline SVGFEImageElement::SVGFEImageElement(Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feImageTag, document), + : SVGFilterPrimitiveStandardAttributes(svg_names::kFEImageTag, document), SVGURIReference(this), preserve_aspect_ratio_(SVGAnimatedPreserveAspectRatio::Create( this, - SVGNames::preserveAspectRatioAttr)) { + svg_names::kPreserveAspectRatioAttr)) { AddToPropertyMap(preserve_aspect_ratio_); } @@ -108,7 +108,7 @@ void SVGFEImageElement::BuildPendingResource() { } void SVGFEImageElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::preserveAspectRatioAttr) { + if (attr_name == svg_names::kPreserveAspectRatioAttr) { SVGElement::InvalidationGuard invalidation_guard(this); Invalidate(); return; @@ -162,4 +162,11 @@ FilterEffect* SVGFEImageElement::Build(SVGFilterBuilder*, Filter* filter) { preserve_aspect_ratio_->CurrentValue()); } +bool SVGFEImageElement::TaintsOrigin(bool inputs_taint_origin) const { + const SecurityOrigin* security_origin = GetDocument().GetSecurityOrigin(); + if (cached_image_ && cached_image_->IsAccessAllowed(security_origin)) + return inputs_taint_origin; + return true; +} + } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_image_element.h b/chromium/third_party/blink/renderer/core/svg/svg_fe_image_element.h index 759f6ad3cb2..2c9f4eb08bc 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_image_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_image_element.h @@ -67,6 +67,7 @@ class SVGFEImageElement final : public SVGFilterPrimitiveStandardAttributes, void BuildPendingResource() override; InsertionNotificationRequest InsertedInto(ContainerNode&) override; void RemovedFrom(ContainerNode&) override; + bool TaintsOrigin(bool inputs_taint_origin) const override; Member preserve_aspect_ratio_; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_light_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_light_element.cc index fc0d2d72c43..3c9ae10456c 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_light_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_light_element.cc @@ -32,23 +32,23 @@ namespace blink { SVGFELightElement::SVGFELightElement(const QualifiedName& tag_name, Document& document) : SVGElement(tag_name, document), - azimuth_(SVGAnimatedNumber::Create(this, SVGNames::azimuthAttr, 0.0f)), + azimuth_(SVGAnimatedNumber::Create(this, svg_names::kAzimuthAttr, 0.0f)), elevation_( - SVGAnimatedNumber::Create(this, SVGNames::elevationAttr, 0.0f)), - x_(SVGAnimatedNumber::Create(this, SVGNames::xAttr, 0.0f)), - y_(SVGAnimatedNumber::Create(this, SVGNames::yAttr, 0.0f)), - z_(SVGAnimatedNumber::Create(this, SVGNames::zAttr, 0.0f)), + SVGAnimatedNumber::Create(this, svg_names::kElevationAttr, 0.0f)), + x_(SVGAnimatedNumber::Create(this, svg_names::kXAttr, 0.0f)), + y_(SVGAnimatedNumber::Create(this, svg_names::kYAttr, 0.0f)), + z_(SVGAnimatedNumber::Create(this, svg_names::kZAttr, 0.0f)), points_at_x_( - SVGAnimatedNumber::Create(this, SVGNames::pointsAtXAttr, 0.0f)), + SVGAnimatedNumber::Create(this, svg_names::kPointsAtXAttr, 0.0f)), points_at_y_( - SVGAnimatedNumber::Create(this, SVGNames::pointsAtYAttr, 0.0f)), + SVGAnimatedNumber::Create(this, svg_names::kPointsAtYAttr, 0.0f)), points_at_z_( - SVGAnimatedNumber::Create(this, SVGNames::pointsAtZAttr, 0.0f)), + SVGAnimatedNumber::Create(this, svg_names::kPointsAtZAttr, 0.0f)), specular_exponent_( - SVGAnimatedNumber::Create(this, SVGNames::specularExponentAttr, 1)), + SVGAnimatedNumber::Create(this, svg_names::kSpecularExponentAttr, 1)), limiting_cone_angle_( SVGAnimatedNumber::Create(this, - SVGNames::limitingConeAngleAttr, + svg_names::kLimitingConeAngleAttr, 0.0f)) { AddToPropertyMap(azimuth_); AddToPropertyMap(elevation_); @@ -94,14 +94,15 @@ FloatPoint3D SVGFELightElement::PointsAt() const { } void SVGFELightElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::azimuthAttr || - attr_name == SVGNames::elevationAttr || attr_name == SVGNames::xAttr || - attr_name == SVGNames::yAttr || attr_name == SVGNames::zAttr || - attr_name == SVGNames::pointsAtXAttr || - attr_name == SVGNames::pointsAtYAttr || - attr_name == SVGNames::pointsAtZAttr || - attr_name == SVGNames::specularExponentAttr || - attr_name == SVGNames::limitingConeAngleAttr) { + if (attr_name == svg_names::kAzimuthAttr || + attr_name == svg_names::kElevationAttr || + attr_name == svg_names::kXAttr || attr_name == svg_names::kYAttr || + attr_name == svg_names::kZAttr || + attr_name == svg_names::kPointsAtXAttr || + attr_name == svg_names::kPointsAtYAttr || + attr_name == svg_names::kPointsAtZAttr || + attr_name == svg_names::kSpecularExponentAttr || + attr_name == svg_names::kLimitingConeAngleAttr) { ContainerNode* parent = parentNode(); if (!parent) return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_light_element.h b/chromium/third_party/blink/renderer/core/svg/svg_fe_light_element.h index 7ffddd7342b..aad4aad8f38 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_light_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_light_element.h @@ -91,9 +91,9 @@ class SVGFELightElement : public SVGElement { }; inline bool IsSVGFELightElement(const SVGElement& element) { - return element.HasTagName(SVGNames::feDistantLightTag) || - element.HasTagName(SVGNames::fePointLightTag) || - element.HasTagName(SVGNames::feSpotLightTag); + return element.HasTagName(svg_names::kFEDistantLightTag) || + element.HasTagName(svg_names::kFEPointLightTag) || + element.HasTagName(svg_names::kFESpotLightTag); } DEFINE_SVGELEMENT_TYPE_CASTS_WITH_FUNCTION(SVGFELightElement); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_merge_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_merge_element.cc index c32f8ee387c..aa7b48e4a86 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_merge_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_merge_element.cc @@ -29,7 +29,7 @@ namespace blink { inline SVGFEMergeElement::SVGFEMergeElement(Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feMergeTag, document) {} + : SVGFilterPrimitiveStandardAttributes(svg_names::kFEMergeTag, document) {} DEFINE_NODE_FACTORY(SVGFEMergeElement) diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_merge_node_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_merge_node_element.cc index 7662fc4bfe9..4f8b7b38df9 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_merge_node_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_merge_node_element.cc @@ -25,8 +25,8 @@ namespace blink { inline SVGFEMergeNodeElement::SVGFEMergeNodeElement(Document& document) - : SVGElement(SVGNames::feMergeNodeTag, document), - in1_(SVGAnimatedString::Create(this, SVGNames::inAttr)) { + : SVGElement(svg_names::kFEMergeNodeTag, document), + in1_(SVGAnimatedString::Create(this, svg_names::kInAttr)) { AddToPropertyMap(in1_); } @@ -39,7 +39,7 @@ DEFINE_NODE_FACTORY(SVGFEMergeNodeElement) void SVGFEMergeNodeElement::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::inAttr) { + if (attr_name == svg_names::kInAttr) { SVGElement::InvalidationGuard invalidation_guard(this); InvalidateFilterPrimitiveParent(*this); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_morphology_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_morphology_element.cc index f67392902f7..15e75d0a099 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_morphology_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_morphology_element.cc @@ -20,30 +20,31 @@ #include "third_party/blink/renderer/core/svg/svg_fe_morphology_element.h" #include "third_party/blink/renderer/core/svg/graphics/filters/svg_filter_builder.h" +#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h" #include "third_party/blink/renderer/core/svg_names.h" namespace blink { template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries() { - DEFINE_STATIC_LOCAL(SVGEnumerationStringEntries, entries, ()); - if (entries.IsEmpty()) { - entries.push_back(std::make_pair(FEMORPHOLOGY_OPERATOR_ERODE, "erode")); - entries.push_back(std::make_pair(FEMORPHOLOGY_OPERATOR_DILATE, "dilate")); - } +const SVGEnumerationMap& GetEnumerationMap() { + static const SVGEnumerationMap::Entry enum_items[] = { + {FEMORPHOLOGY_OPERATOR_ERODE, "erode"}, + {FEMORPHOLOGY_OPERATOR_DILATE, "dilate"}, + }; + static const SVGEnumerationMap entries(enum_items); return entries; } inline SVGFEMorphologyElement::SVGFEMorphologyElement(Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feMorphologyTag, document), + : SVGFilterPrimitiveStandardAttributes(svg_names::kFEMorphologyTag, + document), radius_(SVGAnimatedNumberOptionalNumber::Create(this, - SVGNames::radiusAttr, + svg_names::kRadiusAttr, 0.0f)), - in1_(SVGAnimatedString::Create(this, SVGNames::inAttr)), + in1_(SVGAnimatedString::Create(this, svg_names::kInAttr)), svg_operator_(SVGAnimatedEnumeration::Create( this, - SVGNames::operatorAttr, + svg_names::kOperatorAttr, FEMORPHOLOGY_OPERATOR_ERODE)) { AddToPropertyMap(radius_); AddToPropertyMap(in1_); @@ -63,10 +64,10 @@ bool SVGFEMorphologyElement::SetFilterEffectAttribute( FilterEffect* effect, const QualifiedName& attr_name) { FEMorphology* morphology = static_cast(effect); - if (attr_name == SVGNames::operatorAttr) + if (attr_name == svg_names::kOperatorAttr) return morphology->SetMorphologyOperator( svg_operator_->CurrentValue()->EnumValue()); - if (attr_name == SVGNames::radiusAttr) { + if (attr_name == svg_names::kRadiusAttr) { // Both setRadius functions should be evaluated separately. bool is_radius_x_changed = morphology->SetRadiusX(radiusX()->CurrentValue()->Value()); @@ -80,14 +81,14 @@ bool SVGFEMorphologyElement::SetFilterEffectAttribute( void SVGFEMorphologyElement::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::operatorAttr || - attr_name == SVGNames::radiusAttr) { + if (attr_name == svg_names::kOperatorAttr || + attr_name == svg_names::kRadiusAttr) { SVGElement::InvalidationGuard invalidation_guard(this); PrimitiveAttributeChanged(attr_name); return; } - if (attr_name == SVGNames::inAttr) { + if (attr_name == svg_names::kInAttr) { SVGElement::InvalidationGuard invalidation_guard(this); Invalidate(); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_morphology_element.h b/chromium/third_party/blink/renderer/core/svg/svg_fe_morphology_element.h index 21d55b3e085..53d796f640b 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_morphology_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_morphology_element.h @@ -28,9 +28,7 @@ namespace blink { -template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries(); +DECLARE_SVG_ENUM_MAP(MorphologyOperatorType); class SVGFEMorphologyElement final : public SVGFilterPrimitiveStandardAttributes { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_offset_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_offset_element.cc index 05dd198c465..349fc64d492 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_offset_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_offset_element.cc @@ -27,10 +27,10 @@ namespace blink { inline SVGFEOffsetElement::SVGFEOffsetElement(Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feOffsetTag, document), - dx_(SVGAnimatedNumber::Create(this, SVGNames::dxAttr, 0.0f)), - dy_(SVGAnimatedNumber::Create(this, SVGNames::dyAttr, 0.0f)), - in1_(SVGAnimatedString::Create(this, SVGNames::inAttr)) { + : SVGFilterPrimitiveStandardAttributes(svg_names::kFEOffsetTag, document), + dx_(SVGAnimatedNumber::Create(this, svg_names::kDxAttr, 0.0f)), + dy_(SVGAnimatedNumber::Create(this, svg_names::kDyAttr, 0.0f)), + in1_(SVGAnimatedString::Create(this, svg_names::kInAttr)) { AddToPropertyMap(dx_); AddToPropertyMap(dy_); AddToPropertyMap(in1_); @@ -46,8 +46,8 @@ void SVGFEOffsetElement::Trace(blink::Visitor* visitor) { DEFINE_NODE_FACTORY(SVGFEOffsetElement) void SVGFEOffsetElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::inAttr || attr_name == SVGNames::dxAttr || - attr_name == SVGNames::dyAttr) { + if (attr_name == svg_names::kInAttr || attr_name == svg_names::kDxAttr || + attr_name == svg_names::kDyAttr) { SVGElement::InvalidationGuard invalidation_guard(this); Invalidate(); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_point_light_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_point_light_element.cc index b6d7cd27ac7..4d2d8fefbcc 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_point_light_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_point_light_element.cc @@ -26,7 +26,7 @@ namespace blink { inline SVGFEPointLightElement::SVGFEPointLightElement(Document& document) - : SVGFELightElement(SVGNames::fePointLightTag, document) {} + : SVGFELightElement(svg_names::kFEPointLightTag, document) {} DEFINE_NODE_FACTORY(SVGFEPointLightElement) diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_specular_lighting_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_specular_lighting_element.cc index 3f56237449f..f2bda029e61 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_specular_lighting_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_specular_lighting_element.cc @@ -31,19 +31,19 @@ namespace blink { inline SVGFESpecularLightingElement::SVGFESpecularLightingElement( Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feSpecularLightingTag, + : SVGFilterPrimitiveStandardAttributes(svg_names::kFESpecularLightingTag, document), specular_constant_( - SVGAnimatedNumber::Create(this, SVGNames::specularConstantAttr, 1)), + SVGAnimatedNumber::Create(this, svg_names::kSpecularConstantAttr, 1)), specular_exponent_( - SVGAnimatedNumber::Create(this, SVGNames::specularExponentAttr, 1)), + SVGAnimatedNumber::Create(this, svg_names::kSpecularExponentAttr, 1)), surface_scale_( - SVGAnimatedNumber::Create(this, SVGNames::surfaceScaleAttr, 1)), + SVGAnimatedNumber::Create(this, svg_names::kSurfaceScaleAttr, 1)), kernel_unit_length_(SVGAnimatedNumberOptionalNumber::Create( this, - SVGNames::kernelUnitLengthAttr, + svg_names::kKernelUnitLengthAttr, 0.0f)), - in1_(SVGAnimatedString::Create(this, SVGNames::inAttr)) { + in1_(SVGAnimatedString::Create(this, svg_names::kInAttr)) { AddToPropertyMap(specular_constant_); AddToPropertyMap(specular_exponent_); AddToPropertyMap(surface_scale_); @@ -68,18 +68,18 @@ bool SVGFESpecularLightingElement::SetFilterEffectAttribute( FESpecularLighting* specular_lighting = static_cast(effect); - if (attr_name == SVGNames::lighting_colorAttr) { + if (attr_name == svg_names::kLightingColorAttr) { const ComputedStyle& style = ComputedStyleRef(); return specular_lighting->SetLightingColor( style.VisitedDependentColor(GetCSSPropertyLightingColor())); } - if (attr_name == SVGNames::surfaceScaleAttr) + if (attr_name == svg_names::kSurfaceScaleAttr) return specular_lighting->SetSurfaceScale( surface_scale_->CurrentValue()->Value()); - if (attr_name == SVGNames::specularConstantAttr) + if (attr_name == svg_names::kSpecularConstantAttr) return specular_lighting->SetSpecularConstant( specular_constant_->CurrentValue()->Value()); - if (attr_name == SVGNames::specularExponentAttr) + if (attr_name == svg_names::kSpecularExponentAttr) return specular_lighting->SetSpecularExponent( specular_exponent_->CurrentValue()->Value()); @@ -90,25 +90,25 @@ bool SVGFESpecularLightingElement::SetFilterEffectAttribute( DCHECK(light_element); DCHECK(effect->GetFilter()); - if (attr_name == SVGNames::azimuthAttr) + if (attr_name == svg_names::kAzimuthAttr) return light_source->SetAzimuth( light_element->azimuth()->CurrentValue()->Value()); - if (attr_name == SVGNames::elevationAttr) + if (attr_name == svg_names::kElevationAttr) return light_source->SetElevation( light_element->elevation()->CurrentValue()->Value()); - if (attr_name == SVGNames::xAttr || attr_name == SVGNames::yAttr || - attr_name == SVGNames::zAttr) + if (attr_name == svg_names::kXAttr || attr_name == svg_names::kYAttr || + attr_name == svg_names::kZAttr) return light_source->SetPosition( effect->GetFilter()->Resolve3dPoint(light_element->GetPosition())); - if (attr_name == SVGNames::pointsAtXAttr || - attr_name == SVGNames::pointsAtYAttr || - attr_name == SVGNames::pointsAtZAttr) + if (attr_name == svg_names::kPointsAtXAttr || + attr_name == svg_names::kPointsAtYAttr || + attr_name == svg_names::kPointsAtZAttr) return light_source->SetPointsAt( effect->GetFilter()->Resolve3dPoint(light_element->PointsAt())); - if (attr_name == SVGNames::specularExponentAttr) + if (attr_name == svg_names::kSpecularExponentAttr) return light_source->SetSpecularExponent( light_element->specularExponent()->CurrentValue()->Value()); - if (attr_name == SVGNames::limitingConeAngleAttr) + if (attr_name == svg_names::kLimitingConeAngleAttr) return light_source->SetLimitingConeAngle( light_element->limitingConeAngle()->CurrentValue()->Value()); @@ -118,15 +118,15 @@ bool SVGFESpecularLightingElement::SetFilterEffectAttribute( void SVGFESpecularLightingElement::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::surfaceScaleAttr || - attr_name == SVGNames::specularConstantAttr || - attr_name == SVGNames::specularExponentAttr) { + if (attr_name == svg_names::kSurfaceScaleAttr || + attr_name == svg_names::kSpecularConstantAttr || + attr_name == svg_names::kSpecularExponentAttr) { SVGElement::InvalidationGuard invalidation_guard(this); PrimitiveAttributeChanged(attr_name); return; } - if (attr_name == SVGNames::inAttr) { + if (attr_name == svg_names::kInAttr) { SVGElement::InvalidationGuard invalidation_guard(this); Invalidate(); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_spot_light_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_spot_light_element.cc index 7e63ff4e8aa..3d6be8223bf 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_spot_light_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_spot_light_element.cc @@ -26,7 +26,7 @@ namespace blink { inline SVGFESpotLightElement::SVGFESpotLightElement(Document& document) - : SVGFELightElement(SVGNames::feSpotLightTag, document) {} + : SVGFELightElement(svg_names::kFESpotLightTag, document) {} DEFINE_NODE_FACTORY(SVGFESpotLightElement) diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_tile_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_tile_element.cc index 0be047e2af6..aa39c46c9fe 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_tile_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_tile_element.cc @@ -27,8 +27,8 @@ namespace blink { inline SVGFETileElement::SVGFETileElement(Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feTileTag, document), - in1_(SVGAnimatedString::Create(this, SVGNames::inAttr)) { + : SVGFilterPrimitiveStandardAttributes(svg_names::kFETileTag, document), + in1_(SVGAnimatedString::Create(this, svg_names::kInAttr)) { AddToPropertyMap(in1_); } @@ -40,7 +40,7 @@ void SVGFETileElement::Trace(blink::Visitor* visitor) { DEFINE_NODE_FACTORY(SVGFETileElement) void SVGFETileElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::inAttr) { + if (attr_name == svg_names::kInAttr) { SVGElement::InvalidationGuard invalidation_guard(this); Invalidate(); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_turbulence_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_fe_turbulence_element.cc index 6ace7ca2b54..091ce6697dd 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_turbulence_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_turbulence_element.cc @@ -20,49 +20,48 @@ #include "third_party/blink/renderer/core/svg/svg_fe_turbulence_element.h" +#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h" #include "third_party/blink/renderer/core/svg_names.h" namespace blink { template <> -const SVGEnumerationStringEntries& GetStaticStringEntries() { - DEFINE_STATIC_LOCAL(SVGEnumerationStringEntries, entries, ()); - if (entries.IsEmpty()) { - entries.push_back(std::make_pair(kSvgStitchtypeStitch, "stitch")); - entries.push_back(std::make_pair(kSvgStitchtypeNostitch, "noStitch")); - } +const SVGEnumerationMap& GetEnumerationMap() { + static const SVGEnumerationMap::Entry enum_items[] = { + {kSvgStitchtypeStitch, "stitch"}, {kSvgStitchtypeNostitch, "noStitch"}, + }; + static const SVGEnumerationMap entries(enum_items); return entries; } template <> -const SVGEnumerationStringEntries& GetStaticStringEntries() { - DEFINE_STATIC_LOCAL(SVGEnumerationStringEntries, entries, ()); - if (entries.IsEmpty()) { - entries.push_back( - std::make_pair(FETURBULENCE_TYPE_FRACTALNOISE, "fractalNoise")); - entries.push_back( - std::make_pair(FETURBULENCE_TYPE_TURBULENCE, "turbulence")); - } +const SVGEnumerationMap& GetEnumerationMap() { + static const SVGEnumerationMap::Entry enum_items[] = { + {FETURBULENCE_TYPE_FRACTALNOISE, "fractalNoise"}, + {FETURBULENCE_TYPE_TURBULENCE, "turbulence"}, + }; + static const SVGEnumerationMap entries(enum_items); return entries; } inline SVGFETurbulenceElement::SVGFETurbulenceElement(Document& document) - : SVGFilterPrimitiveStandardAttributes(SVGNames::feTurbulenceTag, document), + : SVGFilterPrimitiveStandardAttributes(svg_names::kFETurbulenceTag, + document), base_frequency_( SVGAnimatedNumberOptionalNumber::Create(this, - SVGNames::baseFrequencyAttr, + svg_names::kBaseFrequencyAttr, 0.0f)), - seed_(SVGAnimatedNumber::Create(this, SVGNames::seedAttr, 0.0f)), + seed_(SVGAnimatedNumber::Create(this, svg_names::kSeedAttr, 0.0f)), stitch_tiles_(SVGAnimatedEnumeration::Create( this, - SVGNames::stitchTilesAttr, + svg_names::kStitchTilesAttr, kSvgStitchtypeNostitch)), type_(SVGAnimatedEnumeration::Create( this, - SVGNames::typeAttr, + svg_names::kTypeAttr, FETURBULENCE_TYPE_TURBULENCE)), num_octaves_( - SVGAnimatedInteger::Create(this, SVGNames::numOctavesAttr, 1)) { + SVGAnimatedInteger::Create(this, svg_names::kNumOctavesAttr, 1)) { AddToPropertyMap(base_frequency_); AddToPropertyMap(seed_); AddToPropertyMap(stitch_tiles_); @@ -85,21 +84,21 @@ bool SVGFETurbulenceElement::SetFilterEffectAttribute( FilterEffect* effect, const QualifiedName& attr_name) { FETurbulence* turbulence = static_cast(effect); - if (attr_name == SVGNames::typeAttr) + if (attr_name == svg_names::kTypeAttr) return turbulence->SetType(type_->CurrentValue()->EnumValue()); - if (attr_name == SVGNames::stitchTilesAttr) + if (attr_name == svg_names::kStitchTilesAttr) return turbulence->SetStitchTiles( stitch_tiles_->CurrentValue()->EnumValue() == kSvgStitchtypeStitch); - if (attr_name == SVGNames::baseFrequencyAttr) { + if (attr_name == svg_names::kBaseFrequencyAttr) { bool base_frequency_x_changed = turbulence->SetBaseFrequencyX( baseFrequencyX()->CurrentValue()->Value()); bool base_frequency_y_changed = turbulence->SetBaseFrequencyY( baseFrequencyY()->CurrentValue()->Value()); return (base_frequency_x_changed || base_frequency_y_changed); } - if (attr_name == SVGNames::seedAttr) + if (attr_name == svg_names::kSeedAttr) return turbulence->SetSeed(seed_->CurrentValue()->Value()); - if (attr_name == SVGNames::numOctavesAttr) + if (attr_name == svg_names::kNumOctavesAttr) return turbulence->SetNumOctaves(num_octaves_->CurrentValue()->Value()); return SVGFilterPrimitiveStandardAttributes::SetFilterEffectAttribute( @@ -108,11 +107,11 @@ bool SVGFETurbulenceElement::SetFilterEffectAttribute( void SVGFETurbulenceElement::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::baseFrequencyAttr || - attr_name == SVGNames::numOctavesAttr || - attr_name == SVGNames::seedAttr || - attr_name == SVGNames::stitchTilesAttr || - attr_name == SVGNames::typeAttr) { + if (attr_name == svg_names::kBaseFrequencyAttr || + attr_name == svg_names::kNumOctavesAttr || + attr_name == svg_names::kSeedAttr || + attr_name == svg_names::kStitchTilesAttr || + attr_name == svg_names::kTypeAttr) { SVGElement::InvalidationGuard invalidation_guard(this); PrimitiveAttributeChanged(attr_name); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fe_turbulence_element.h b/chromium/third_party/blink/renderer/core/svg/svg_fe_turbulence_element.h index 916dd74b8fa..3540909aac6 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fe_turbulence_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_fe_turbulence_element.h @@ -36,11 +36,9 @@ enum SVGStitchOptions { kSvgStitchtypeStitch = 1, kSvgStitchtypeNostitch = 2 }; -template <> -const SVGEnumerationStringEntries& GetStaticStringEntries(); +DECLARE_SVG_ENUM_MAP(SVGStitchOptions); -template <> -const SVGEnumerationStringEntries& GetStaticStringEntries(); +DECLARE_SVG_ENUM_MAP(TurbulenceType); class SVGFETurbulenceElement final : public SVGFilterPrimitiveStandardAttributes { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_filter_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_filter_element.cc index 137c33ff9df..8cc60f85e04 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_filter_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_filter_element.cc @@ -30,36 +30,36 @@ namespace blink { inline SVGFilterElement::SVGFilterElement(Document& document) - : SVGElement(SVGNames::filterTag, document), + : SVGElement(svg_names::kFilterTag, document), SVGURIReference(this), // Spec: If the x/y attribute is not specified, the effect is as if a // value of "-10%" were specified. x_(SVGAnimatedLength::Create(this, - SVGNames::xAttr, + svg_names::kXAttr, SVGLengthMode::kWidth, SVGLength::Initial::kPercentMinus10)), y_(SVGAnimatedLength::Create(this, - SVGNames::yAttr, + svg_names::kYAttr, SVGLengthMode::kHeight, SVGLength::Initial::kPercentMinus10)), // Spec: If the width/height attribute is not specified, the effect is as // if a value of "120%" were specified. width_(SVGAnimatedLength::Create(this, - SVGNames::widthAttr, + svg_names::kWidthAttr, SVGLengthMode::kWidth, SVGLength::Initial::kPercent120)), height_(SVGAnimatedLength::Create(this, - SVGNames::heightAttr, + svg_names::kHeightAttr, SVGLengthMode::kHeight, SVGLength::Initial::kPercent120)), filter_units_(SVGAnimatedEnumeration::Create( this, - SVGNames::filterUnitsAttr, + svg_names::kFilterUnitsAttr, SVGUnitTypes::kSvgUnitTypeObjectboundingbox)), primitive_units_( SVGAnimatedEnumeration::Create( this, - SVGNames::primitiveUnitsAttr, + svg_names::kPrimitiveUnitsAttr, SVGUnitTypes::kSvgUnitTypeUserspaceonuse)) { AddToPropertyMap(x_); AddToPropertyMap(y_); @@ -85,14 +85,14 @@ void SVGFilterElement::Trace(blink::Visitor* visitor) { } void SVGFilterElement::SvgAttributeChanged(const QualifiedName& attr_name) { - bool is_xywh = attr_name == SVGNames::xAttr || attr_name == SVGNames::yAttr || - attr_name == SVGNames::widthAttr || - attr_name == SVGNames::heightAttr; + bool is_xywh = + attr_name == svg_names::kXAttr || attr_name == svg_names::kYAttr || + attr_name == svg_names::kWidthAttr || attr_name == svg_names::kHeightAttr; if (is_xywh) UpdateRelativeLengthsInformation(); - if (is_xywh || attr_name == SVGNames::filterUnitsAttr || - attr_name == SVGNames::primitiveUnitsAttr) { + if (is_xywh || attr_name == svg_names::kFilterUnitsAttr || + attr_name == svg_names::kPrimitiveUnitsAttr) { SVGElement::InvalidationGuard invalidation_guard(this); InvalidateFilterChain(); return; @@ -132,9 +132,10 @@ void SVGFilterElement::ChildrenChanged(const ChildrenChange& change) { if (change.by_parser) return; - if (LayoutObject* object = GetLayoutObject()) + if (LayoutObject* object = GetLayoutObject()) { object->SetNeedsLayoutAndFullPaintInvalidation( - LayoutInvalidationReason::kChildChanged); + layout_invalidation_reason::kChildChanged); + } InvalidateFilterChain(); } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_filter_primitive_standard_attributes.cc b/chromium/third_party/blink/renderer/core/svg/svg_filter_primitive_standard_attributes.cc index 0edfa01206f..20ee4603490 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_filter_primitive_standard_attributes.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_filter_primitive_standard_attributes.cc @@ -38,24 +38,24 @@ SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes( // Spec: If the x/y attribute is not specified, the effect is as if a // value of "0%" were specified. x_(SVGAnimatedLength::Create(this, - SVGNames::xAttr, + svg_names::kXAttr, SVGLengthMode::kWidth, SVGLength::Initial::kPercent0)), y_(SVGAnimatedLength::Create(this, - SVGNames::yAttr, + svg_names::kYAttr, SVGLengthMode::kHeight, SVGLength::Initial::kPercent0)), // Spec: If the width/height attribute is not specified, the effect is as // if a value of "100%" were specified. width_(SVGAnimatedLength::Create(this, - SVGNames::widthAttr, + svg_names::kWidthAttr, SVGLengthMode::kWidth, SVGLength::Initial::kPercent100)), height_(SVGAnimatedLength::Create(this, - SVGNames::heightAttr, + svg_names::kHeightAttr, SVGLengthMode::kHeight, SVGLength::Initial::kPercent100)), - result_(SVGAnimatedString::Create(this, SVGNames::resultAttr)) { + result_(SVGAnimatedString::Create(this, svg_names::kResultAttr)) { AddToPropertyMap(x_); AddToPropertyMap(y_); AddToPropertyMap(width_); @@ -75,7 +75,7 @@ void SVGFilterPrimitiveStandardAttributes::Trace(blink::Visitor* visitor) { bool SVGFilterPrimitiveStandardAttributes::SetFilterEffectAttribute( FilterEffect* effect, const QualifiedName& attr_name) { - DCHECK(attr_name == SVGNames::color_interpolation_filtersAttr); + DCHECK(attr_name == svg_names::kColorInterpolationFiltersAttr); DCHECK(GetLayoutObject()); EColorInterpolation color_interpolation = GetLayoutObject()->StyleRef().SvgStyle().ColorInterpolationFilters(); @@ -89,9 +89,10 @@ bool SVGFilterPrimitiveStandardAttributes::SetFilterEffectAttribute( void SVGFilterPrimitiveStandardAttributes::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::xAttr || attr_name == SVGNames::yAttr || - attr_name == SVGNames::widthAttr || attr_name == SVGNames::heightAttr || - attr_name == SVGNames::resultAttr) { + if (attr_name == svg_names::kXAttr || attr_name == svg_names::kYAttr || + attr_name == svg_names::kWidthAttr || + attr_name == svg_names::kHeightAttr || + attr_name == svg_names::kResultAttr) { SVGElement::InvalidationGuard invalidation_guard(this); Invalidate(); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_fit_to_view_box.cc b/chromium/third_party/blink/renderer/core/svg/svg_fit_to_view_box.cc index 4fab93100d3..2b71a02216a 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_fit_to_view_box.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_fit_to_view_box.cc @@ -32,14 +32,13 @@ namespace blink { class SVGAnimatedViewBoxRect : public SVGAnimatedRect { public: static SVGAnimatedRect* Create(SVGElement* context_element) { - return new SVGAnimatedViewBoxRect(context_element); + return MakeGarbageCollected(context_element); } - SVGParsingError AttributeChanged(const String&) override; - - protected: SVGAnimatedViewBoxRect(SVGElement* context_element) - : SVGAnimatedRect(context_element, SVGNames::viewBoxAttr) {} + : SVGAnimatedRect(context_element, svg_names::kViewBoxAttr) {} + + SVGParsingError AttributeChanged(const String&) override; }; SVGParsingError SVGAnimatedViewBoxRect::AttributeChanged(const String& value) { @@ -57,7 +56,7 @@ SVGFitToViewBox::SVGFitToViewBox(SVGElement* element) : view_box_(SVGAnimatedViewBoxRect::Create(element)), preserve_aspect_ratio_(SVGAnimatedPreserveAspectRatio::Create( element, - SVGNames::preserveAspectRatioAttr)) { + svg_names::kPreserveAspectRatioAttr)) { DCHECK(element); element->AddToPropertyMap(view_box_); element->AddToPropertyMap(preserve_aspect_ratio_); @@ -83,8 +82,8 @@ AffineTransform SVGFitToViewBox::ViewBoxToViewTransform( } bool SVGFitToViewBox::IsKnownAttribute(const QualifiedName& attr_name) { - return attr_name == SVGNames::viewBoxAttr || - attr_name == SVGNames::preserveAspectRatioAttr; + return attr_name == svg_names::kViewBoxAttr || + attr_name == svg_names::kPreserveAspectRatioAttr; } } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_foreign_object_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_foreign_object_element.cc index 1356e6937df..96ba4d10177 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_foreign_object_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_foreign_object_element.cc @@ -29,24 +29,24 @@ namespace blink { inline SVGForeignObjectElement::SVGForeignObjectElement(Document& document) - : SVGGraphicsElement(SVGNames::foreignObjectTag, document), + : SVGGraphicsElement(svg_names::kForeignObjectTag, document), x_(SVGAnimatedLength::Create(this, - SVGNames::xAttr, + svg_names::kXAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero, CSSPropertyX)), y_(SVGAnimatedLength::Create(this, - SVGNames::yAttr, + svg_names::kYAttr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero, CSSPropertyY)), width_(SVGAnimatedLength::Create(this, - SVGNames::widthAttr, + svg_names::kWidthAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero, CSSPropertyWidth)), height_(SVGAnimatedLength::Create(this, - SVGNames::heightAttr, + svg_names::kHeightAttr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero, CSSPropertyHeight)) { @@ -94,9 +94,9 @@ void SVGForeignObjectElement::CollectStyleForPresentationAttribute( void SVGForeignObjectElement::SvgAttributeChanged( const QualifiedName& attr_name) { bool is_width_height_attribute = - attr_name == SVGNames::widthAttr || attr_name == SVGNames::heightAttr; + attr_name == svg_names::kWidthAttr || attr_name == svg_names::kHeightAttr; bool is_xy_attribute = - attr_name == SVGNames::xAttr || attr_name == SVGNames::yAttr; + attr_name == svg_names::kXAttr || attr_name == svg_names::kYAttr; if (is_xy_attribute || is_width_height_attribute) { SVGElement::InvalidationGuard invalidation_guard(this); @@ -106,7 +106,7 @@ void SVGForeignObjectElement::SvgAttributeChanged( kLocalStyleChange, is_width_height_attribute ? StyleChangeReasonForTracing::Create( - StyleChangeReason::kSVGContainerSizeChange) + style_change_reason::kSVGContainerSizeChange) : StyleChangeReasonForTracing::FromAttribute(attr_name)); UpdateRelativeLengthsInformation(); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_g_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_g_element.cc index b13a737d2c4..3ecd67566fa 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_g_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_g_element.cc @@ -28,7 +28,7 @@ namespace blink { inline SVGGElement::SVGGElement(Document& document, ConstructionType construction_type) - : SVGGraphicsElement(SVGNames::gTag, document, construction_type) {} + : SVGGraphicsElement(svg_names::kGTag, document, construction_type) {} DEFINE_NODE_FACTORY(SVGGElement) diff --git a/chromium/third_party/blink/renderer/core/svg/svg_geometry_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_geometry_element.cc index d5f452f6c46..a4fb066e0a4 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_geometry_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_geometry_element.cc @@ -31,33 +31,32 @@ #include "third_party/blink/renderer/core/svg/svg_geometry_element.h" #include "third_party/blink/renderer/core/css/style_change_reason.h" -#include "third_party/blink/renderer/core/layout/hit_test_request.h" -#include "third_party/blink/renderer/core/layout/pointer_events_hit_rules.h" #include "third_party/blink/renderer/core/layout/svg/layout_svg_path.h" #include "third_party/blink/renderer/core/layout/svg/layout_svg_shape.h" +#include "third_party/blink/renderer/core/layout/svg/svg_layout_support.h" #include "third_party/blink/renderer/core/svg/svg_point_tear_off.h" #include "third_party/blink/renderer/core/svg_names.h" +#include "third_party/blink/renderer/platform/graphics/stroke_data.h" namespace blink { class SVGAnimatedPathLength final : public SVGAnimatedNumber { public: static SVGAnimatedPathLength* Create(SVGGeometryElement* context_element) { - return new SVGAnimatedPathLength(context_element); + return MakeGarbageCollected(context_element); } + explicit SVGAnimatedPathLength(SVGGeometryElement* context_element) + : SVGAnimatedNumber(context_element, + svg_names::kPathLengthAttr, + SVGNumber::Create()) {} + SVGParsingError AttributeChanged(const String& value) override { SVGParsingError parse_status = SVGAnimatedNumber::AttributeChanged(value); if (parse_status == SVGParseStatus::kNoError && BaseValue()->Value() < 0) parse_status = SVGParseStatus::kNegativeValue; return parse_status; } - - private: - explicit SVGAnimatedPathLength(SVGGeometryElement* context_element) - : SVGAnimatedNumber(context_element, - SVGNames::pathLengthAttr, - SVGNumber::Create()) {} }; SVGGeometryElement::SVGGeometryElement(const QualifiedName& tag_name, @@ -69,7 +68,7 @@ SVGGeometryElement::SVGGeometryElement(const QualifiedName& tag_name, } void SVGGeometryElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::pathLengthAttr) { + if (attr_name == svg_names::kPathLengthAttr) { SVGElement::InvalidationGuard invalidation_guard(this); if (LayoutObject* layout_object = GetLayoutObject()) MarkForLayoutAndParentResourceInvalidation(*layout_object); @@ -89,17 +88,13 @@ bool SVGGeometryElement::isPointInFill(SVGPointTearOff* point) const { // FIXME: Eventually we should support isPointInFill for display:none // elements. - if (!GetLayoutObject() || !GetLayoutObject()->IsSVGShape()) + const LayoutObject* layout_object = GetLayoutObject(); + if (!layout_object) return false; - HitTestRequest request(HitTestRequest::kReadOnly); - PointerEventsHitRules hit_rules( - PointerEventsHitRules::SVG_GEOMETRY_HITTESTING, request, - GetLayoutObject()->StyleRef().PointerEvents()); - hit_rules.can_hit_stroke = false; - HitTestLocation location(point->Target()->Value()); - return ToLayoutSVGShape(GetLayoutObject()) - ->NodeAtPointInternal(request, location, hit_rules); + // Path::Contains will reject points with a non-finite component. + WindRule fill_rule = layout_object->StyleRef().SvgStyle().FillRule(); + return AsPath().Contains(point->Target()->Value(), fill_rule); } bool SVGGeometryElement::isPointInStroke(SVGPointTearOff* point) const { @@ -107,17 +102,26 @@ bool SVGGeometryElement::isPointInStroke(SVGPointTearOff* point) const { // FIXME: Eventually we should support isPointInStroke for display:none // elements. - if (!GetLayoutObject() || !GetLayoutObject()->IsSVGShape()) + const LayoutObject* layout_object = GetLayoutObject(); + if (!layout_object) return false; + const LayoutSVGShape& layout_shape = ToLayoutSVGShape(*layout_object); + + StrokeData stroke_data; + SVGLayoutSupport::ApplyStrokeStyleToStrokeData( + stroke_data, layout_shape.StyleRef(), layout_shape, + PathLengthScaleFactor()); - HitTestRequest request(HitTestRequest::kReadOnly); - PointerEventsHitRules hit_rules( - PointerEventsHitRules::SVG_GEOMETRY_HITTESTING, request, - GetLayoutObject()->StyleRef().PointerEvents()); - hit_rules.can_hit_fill = false; - HitTestLocation location(point->Target()->Value()); - return ToLayoutSVGShape(GetLayoutObject()) - ->NodeAtPointInternal(request, location, hit_rules); + Path path = AsPath(); + FloatPoint local_point(point->Target()->Value()); + if (layout_shape.HasNonScalingStroke()) { + const AffineTransform transform = + layout_shape.ComputeNonScalingStrokeTransform(); + path.Transform(transform); + local_point = transform.MapPoint(local_point); + } + // Path::StrokeContains will reject points with a non-finite component. + return path.StrokeContains(local_point, stroke_data); } Path SVGGeometryElement::ToClipPath() const { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_gradient_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_gradient_element.cc index 033e8c5177c..5f29ecaf0f8 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_gradient_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_gradient_element.cc @@ -22,25 +22,24 @@ #include "third_party/blink/renderer/core/svg/svg_gradient_element.h" #include "third_party/blink/renderer/core/css/style_change_reason.h" -#include "third_party/blink/renderer/core/dom/attribute.h" #include "third_party/blink/renderer/core/dom/element_traversal.h" #include "third_party/blink/renderer/core/dom/id_target_observer.h" #include "third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.h" #include "third_party/blink/renderer/core/svg/gradient_attributes.h" +#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h" #include "third_party/blink/renderer/core/svg/svg_stop_element.h" #include "third_party/blink/renderer/core/svg/svg_transform_list.h" namespace blink { template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries() { - DEFINE_STATIC_LOCAL(SVGEnumerationStringEntries, entries, ()); - if (entries.IsEmpty()) { - entries.push_back(std::make_pair(kSVGSpreadMethodPad, "pad")); - entries.push_back(std::make_pair(kSVGSpreadMethodReflect, "reflect")); - entries.push_back(std::make_pair(kSVGSpreadMethodRepeat, "repeat")); - } +const SVGEnumerationMap& GetEnumerationMap() { + static const SVGEnumerationMap::Entry enum_items[] = { + {kSVGSpreadMethodPad, "pad"}, + {kSVGSpreadMethodReflect, "reflect"}, + {kSVGSpreadMethodRepeat, "repeat"}, + }; + static const SVGEnumerationMap entries(enum_items); return entries; } @@ -50,15 +49,15 @@ SVGGradientElement::SVGGradientElement(const QualifiedName& tag_name, SVGURIReference(this), gradient_transform_( SVGAnimatedTransformList::Create(this, - SVGNames::gradientTransformAttr, + svg_names::kGradientTransformAttr, CSSPropertyTransform)), spread_method_(SVGAnimatedEnumeration::Create( this, - SVGNames::spreadMethodAttr, + svg_names::kSpreadMethodAttr, kSVGSpreadMethodPad)), gradient_units_(SVGAnimatedEnumeration::Create( this, - SVGNames::gradientUnitsAttr, + svg_names::kGradientUnitsAttr, SVGUnitTypes::kSvgUnitTypeObjectboundingbox)) { AddToPropertyMap(gradient_transform_); AddToPropertyMap(spread_method_); @@ -82,7 +81,7 @@ void SVGGradientElement::BuildPendingResource() { if (auto* gradient = ToSVGGradientElementOrNull(target)) AddReferenceTo(gradient); - InvalidateGradient(LayoutInvalidationReason::kSvgResourceInvalidated); + InvalidateGradient(layout_invalidation_reason::kSvgResourceInvalidated); } void SVGGradientElement::ClearResourceReferences() { @@ -94,7 +93,7 @@ void SVGGradientElement::CollectStyleForPresentationAttribute( const QualifiedName& name, const AtomicString& value, MutableCSSPropertyValueSet* style) { - if (name == SVGNames::gradientTransformAttr) { + if (name == svg_names::kGradientTransformAttr) { AddPropertyToPresentationAttributeStyle( style, CSSPropertyTransform, *gradient_transform_->CurrentValue()->CssValue()); @@ -104,17 +103,17 @@ void SVGGradientElement::CollectStyleForPresentationAttribute( } void SVGGradientElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::gradientTransformAttr) { + if (attr_name == svg_names::kGradientTransformAttr) { InvalidateSVGPresentationAttributeStyle(); SetNeedsStyleRecalc(kLocalStyleChange, StyleChangeReasonForTracing::FromAttribute(attr_name)); } - if (attr_name == SVGNames::gradientUnitsAttr || - attr_name == SVGNames::gradientTransformAttr || - attr_name == SVGNames::spreadMethodAttr) { + if (attr_name == svg_names::kGradientUnitsAttr || + attr_name == svg_names::kGradientTransformAttr || + attr_name == svg_names::kSpreadMethodAttr) { SVGElement::InvalidationGuard invalidation_guard(this); - InvalidateGradient(LayoutInvalidationReason::kAttributeChanged); + InvalidateGradient(layout_invalidation_reason::kAttributeChanged); return; } @@ -147,7 +146,7 @@ void SVGGradientElement::ChildrenChanged(const ChildrenChange& change) { if (change.by_parser) return; - InvalidateGradient(LayoutInvalidationReason::kChildChanged); + InvalidateGradient(layout_invalidation_reason::kChildChanged); } void SVGGradientElement::InvalidateGradient( @@ -160,7 +159,7 @@ void SVGGradientElement::InvalidateDependentGradients() { NotifyIncomingReferences([](SVGElement& element) { if (auto* gradient = ToSVGGradientElementOrNull(element)) { gradient->InvalidateGradient( - LayoutInvalidationReason::kSvgResourceInvalidated); + layout_invalidation_reason::kSvgResourceInvalidated); } }); } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_gradient_element.h b/chromium/third_party/blink/renderer/core/svg/svg_gradient_element.h index 2e6116e01cc..0376e5dfd46 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_gradient_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_gradient_element.h @@ -41,9 +41,7 @@ enum SVGSpreadMethodType { kSVGSpreadMethodReflect, kSVGSpreadMethodRepeat }; -template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries(); +DECLARE_SVG_ENUM_MAP(SVGSpreadMethodType); class SVGGradientElement : public SVGElement, public SVGURIReference { DEFINE_WRAPPERTYPEINFO(); @@ -97,8 +95,8 @@ class SVGGradientElement : public SVGElement, public SVGURIReference { }; inline bool IsSVGGradientElement(const SVGElement& element) { - return element.HasTagName(SVGNames::radialGradientTag) || - element.HasTagName(SVGNames::linearGradientTag); + return element.HasTagName(svg_names::kRadialGradientTag) || + element.HasTagName(svg_names::kLinearGradientTag); } DEFINE_SVGELEMENT_TYPE_CASTS_WITH_FUNCTION(SVGGradientElement); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_graphics_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_graphics_element.cc index 288eed1fcb0..bfca480f88b 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_graphics_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_graphics_element.cc @@ -37,7 +37,7 @@ SVGGraphicsElement::SVGGraphicsElement(const QualifiedName& tag_name, : SVGElement(tag_name, document, construction_type), SVGTests(this), transform_(SVGAnimatedTransformList::Create(this, - SVGNames::transformAttr, + svg_names::kTransformAttr, CSSPropertyTransform)) { AddToPropertyMap(transform_); } @@ -103,7 +103,7 @@ void SVGGraphicsElement::CollectStyleForPresentationAttribute( const QualifiedName& name, const AtomicString& value, MutableCSSPropertyValueSet* style) { - if (name == SVGNames::transformAttr) { + if (name == svg_names::kTransformAttr) { AddPropertyToPresentationAttributeStyle( style, CSSPropertyTransform, *transform_->CurrentValue()->CssValue()); return; @@ -124,7 +124,7 @@ void SVGGraphicsElement::SvgAttributeChanged(const QualifiedName& attr_name) { return; } - if (attr_name == SVGNames::transformAttr) { + if (attr_name == svg_names::kTransformAttr) { SVGElement::InvalidationGuard invalidation_guard(this); InvalidateSVGPresentationAttributeStyle(); // TODO(fs): The InvalidationGuard will make sure all instances are diff --git a/chromium/third_party/blink/renderer/core/svg/svg_image_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_image_element.cc index 31cb70339bd..2556bfc7f2b 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_image_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_image_element.cc @@ -21,8 +21,9 @@ #include "third_party/blink/renderer/core/svg/svg_image_element.h" +#include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom-blink.h" +#include "third_party/blink/renderer/core/css/css_property_names.h" #include "third_party/blink/renderer/core/css/style_change_reason.h" -#include "third_party/blink/renderer/core/css_property_names.h" #include "third_party/blink/renderer/core/frame/use_counter.h" #include "third_party/blink/renderer/core/html/media/media_element_parser_helpers.h" #include "third_party/blink/renderer/core/inspector/console_message.h" @@ -34,32 +35,32 @@ namespace blink { inline SVGImageElement::SVGImageElement(Document& document) - : SVGGraphicsElement(SVGNames::imageTag, document), + : SVGGraphicsElement(svg_names::kImageTag, document), SVGURIReference(this), is_default_overridden_intrinsic_size_(false), x_(SVGAnimatedLength::Create(this, - SVGNames::xAttr, + svg_names::kXAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero, CSSPropertyX)), y_(SVGAnimatedLength::Create(this, - SVGNames::yAttr, + svg_names::kYAttr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero, CSSPropertyY)), width_(SVGAnimatedLength::Create(this, - SVGNames::widthAttr, + svg_names::kWidthAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero, CSSPropertyWidth)), height_(SVGAnimatedLength::Create(this, - SVGNames::heightAttr, + svg_names::kHeightAttr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero, CSSPropertyHeight)), preserve_aspect_ratio_(SVGAnimatedPreserveAspectRatio::Create( this, - SVGNames::preserveAspectRatioAttr)), + svg_names::kPreserveAspectRatioAttr)), image_loader_(SVGImageLoader::Create(this)) { AddToPropertyMap(x_); AddToPropertyMap(y_); @@ -67,8 +68,8 @@ inline SVGImageElement::SVGImageElement(Document& document) AddToPropertyMap(height_); AddToPropertyMap(preserve_aspect_ratio_); - if (MediaElementParserHelpers::IsMediaElement(this) && - !MediaElementParserHelpers::IsUnsizedMediaEnabled(document)) { + if (media_element_parser_helpers::IsMediaElement(this) && + !document.IsFeatureEnabled(mojom::FeaturePolicyFeature::kUnsizedMedia)) { is_default_overridden_intrinsic_size_ = true; overridden_intrinsic_size_ = IntSize(LayoutReplaced::kDefaultWidth, LayoutReplaced::kDefaultHeight); @@ -131,10 +132,10 @@ void SVGImageElement::CollectStyleForPresentationAttribute( void SVGImageElement::SvgAttributeChanged(const QualifiedName& attr_name) { bool is_length_attribute = - attr_name == SVGNames::xAttr || attr_name == SVGNames::yAttr || - attr_name == SVGNames::widthAttr || attr_name == SVGNames::heightAttr; + attr_name == svg_names::kXAttr || attr_name == svg_names::kYAttr || + attr_name == svg_names::kWidthAttr || attr_name == svg_names::kHeightAttr; - if (is_length_attribute || attr_name == SVGNames::preserveAspectRatioAttr) { + if (is_length_attribute || attr_name == svg_names::kPreserveAspectRatioAttr) { SVGElement::InvalidationGuard invalidation_guard(this); if (is_length_attribute) { @@ -168,15 +169,15 @@ void SVGImageElement::SvgAttributeChanged(const QualifiedName& attr_name) { void SVGImageElement::ParseAttribute( const AttributeModificationParams& params) { - if (params.name == SVGNames::decodingAttr) { + if (params.name == svg_names::kDecodingAttr) { UseCounter::Count(GetDocument(), WebFeature::kImageDecodingAttribute); decoding_mode_ = ParseImageDecodingMode(params.new_value); - } else if (params.name == SVGNames::intrinsicsizeAttr && + } else if (params.name == svg_names::kIntrinsicsizeAttr && RuntimeEnabledFeatures:: ExperimentalProductivityFeaturesEnabled()) { String message; bool intrinsic_size_changed = - MediaElementParserHelpers::ParseIntrinsicSizeAttribute( + media_element_parser_helpers::ParseIntrinsicSizeAttribute( params.new_value, this, &overridden_intrinsic_size_, &is_default_overridden_intrinsic_size_, &message); if (!message.IsEmpty()) { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_image_element.h b/chromium/third_party/blink/renderer/core/svg/svg_image_element.h index 711256cc38c..333eb0dd6a3 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_image_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_image_element.h @@ -73,6 +73,10 @@ class CORE_EXPORT SVGImageElement final return is_default_overridden_intrinsic_size_; } + void SetImageForTest(ImageResourceContent* content) { + GetImageLoader().SetImageForTest(content); + } + private: explicit SVGImageElement(Document&); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_image_loader.cc b/chromium/third_party/blink/renderer/core/svg/svg_image_loader.cc index a7ce9fe9322..ed5b0f33c40 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_image_loader.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_image_loader.cc @@ -29,7 +29,7 @@ SVGImageLoader::SVGImageLoader(SVGImageElement* node) : ImageLoader(node) {} void SVGImageLoader::DispatchLoadEvent() { if (GetContent()->ErrorOccurred()) { - GetElement()->DispatchEvent(*Event::Create(EventTypeNames::error)); + GetElement()->DispatchEvent(*Event::Create(event_type_names::kError)); } else { SVGImageElement* image_element = ToSVGImageElement(GetElement()); image_element->SendSVGLoadEventToSelfAndAncestorChainIfPossible(); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_image_loader.h b/chromium/third_party/blink/renderer/core/svg/svg_image_loader.h index ef8ab6ba358..3b1381140e0 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_image_loader.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_image_loader.h @@ -29,11 +29,12 @@ class SVGImageElement; class SVGImageLoader final : public ImageLoader { public: static SVGImageLoader* Create(SVGImageElement* element) { - return new SVGImageLoader(element); + return MakeGarbageCollected(element); } - private: explicit SVGImageLoader(SVGImageElement*); + + private: void DispatchLoadEvent() override; String DebugName() const override { return "SVGImageLoader"; } }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_integer.cc b/chromium/third_party/blink/renderer/core/svg/svg_integer.cc index e8f277eff7c..a160403c146 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_integer.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_integer.cc @@ -79,7 +79,7 @@ void SVGInteger::CalculateAnimatedValue(SVGAnimationElement* animation_element, animation_element->AnimateAdditiveNumber( percentage, repeat_count, from_integer->Value(), to_integer->Value(), to_at_end_of_duration_integer->Value(), animated_float); - value_ = static_cast(roundf(animated_float)); + value_ = clampTo(roundf(animated_float)); } float SVGInteger::CalculateDistance(SVGPropertyBase* other, SVGElement*) { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_integer.h b/chromium/third_party/blink/renderer/core/svg/svg_integer.h index 2abffc47da1..0b4e7338c10 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_integer.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_integer.h @@ -41,7 +41,11 @@ class SVGInteger final : public SVGPropertyHelper { typedef void TearOffType; typedef int PrimitiveType; - static SVGInteger* Create(int value = 0) { return new SVGInteger(value); } + static SVGInteger* Create(int value = 0) { + return MakeGarbageCollected(value); + } + + explicit SVGInteger(int); virtual SVGInteger* Clone() const; @@ -68,8 +72,6 @@ class SVGInteger final : public SVGPropertyHelper { static constexpr int kInitialValueBits = 2; protected: - explicit SVGInteger(int); - int value_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_integer_optional_integer.h b/chromium/third_party/blink/renderer/core/svg/svg_integer_optional_integer.h index 2caaf582355..50acdcdfed2 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_integer_optional_integer.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_integer_optional_integer.h @@ -45,9 +45,13 @@ class SVGIntegerOptionalInteger final : public SVGPropertyBase { static SVGIntegerOptionalInteger* Create(SVGInteger* first_integer, SVGInteger* second_integer) { - return new SVGIntegerOptionalInteger(first_integer, second_integer); + return MakeGarbageCollected(first_integer, + second_integer); } + SVGIntegerOptionalInteger(SVGInteger* first_integer, + SVGInteger* second_integer); + SVGIntegerOptionalInteger* Clone() const; SVGPropertyBase* CloneForAnimation(const String&) const override; @@ -78,9 +82,6 @@ class SVGIntegerOptionalInteger final : public SVGPropertyBase { void Trace(blink::Visitor*) override; protected: - SVGIntegerOptionalInteger(SVGInteger* first_integer, - SVGInteger* second_integer); - Member first_integer_; Member second_integer_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_length.cc b/chromium/third_party/blink/renderer/core/svg/svg_length.cc index 8a82679b154..1297ba1791c 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_length.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_length.cc @@ -51,7 +51,7 @@ void SVGLength::Trace(blink::Visitor* visitor) { } SVGLength* SVGLength::Clone() const { - return new SVGLength(*this); + return MakeGarbageCollected(*this); } SVGPropertyBase* SVGLength::CloneForAnimation(const String& value) const { @@ -191,30 +191,30 @@ SVGLengthMode SVGLength::LengthModeForAnimatedLengthAttribute( DEFINE_STATIC_LOCAL(LengthModeForLengthAttributeMap, length_mode_map, ()); if (length_mode_map.IsEmpty()) { - length_mode_map.Set(SVGNames::xAttr, SVGLengthMode::kWidth); - length_mode_map.Set(SVGNames::yAttr, SVGLengthMode::kHeight); - length_mode_map.Set(SVGNames::cxAttr, SVGLengthMode::kWidth); - length_mode_map.Set(SVGNames::cyAttr, SVGLengthMode::kHeight); - length_mode_map.Set(SVGNames::dxAttr, SVGLengthMode::kWidth); - length_mode_map.Set(SVGNames::dyAttr, SVGLengthMode::kHeight); - length_mode_map.Set(SVGNames::frAttr, SVGLengthMode::kOther); - length_mode_map.Set(SVGNames::fxAttr, SVGLengthMode::kWidth); - length_mode_map.Set(SVGNames::fyAttr, SVGLengthMode::kHeight); - length_mode_map.Set(SVGNames::rAttr, SVGLengthMode::kOther); - length_mode_map.Set(SVGNames::rxAttr, SVGLengthMode::kWidth); - length_mode_map.Set(SVGNames::ryAttr, SVGLengthMode::kHeight); - length_mode_map.Set(SVGNames::widthAttr, SVGLengthMode::kWidth); - length_mode_map.Set(SVGNames::heightAttr, SVGLengthMode::kHeight); - length_mode_map.Set(SVGNames::x1Attr, SVGLengthMode::kWidth); - length_mode_map.Set(SVGNames::x2Attr, SVGLengthMode::kWidth); - length_mode_map.Set(SVGNames::y1Attr, SVGLengthMode::kHeight); - length_mode_map.Set(SVGNames::y2Attr, SVGLengthMode::kHeight); - length_mode_map.Set(SVGNames::refXAttr, SVGLengthMode::kWidth); - length_mode_map.Set(SVGNames::refYAttr, SVGLengthMode::kHeight); - length_mode_map.Set(SVGNames::markerWidthAttr, SVGLengthMode::kWidth); - length_mode_map.Set(SVGNames::markerHeightAttr, SVGLengthMode::kHeight); - length_mode_map.Set(SVGNames::textLengthAttr, SVGLengthMode::kWidth); - length_mode_map.Set(SVGNames::startOffsetAttr, SVGLengthMode::kWidth); + length_mode_map.Set(svg_names::kXAttr, SVGLengthMode::kWidth); + length_mode_map.Set(svg_names::kYAttr, SVGLengthMode::kHeight); + length_mode_map.Set(svg_names::kCxAttr, SVGLengthMode::kWidth); + length_mode_map.Set(svg_names::kCyAttr, SVGLengthMode::kHeight); + length_mode_map.Set(svg_names::kDxAttr, SVGLengthMode::kWidth); + length_mode_map.Set(svg_names::kDyAttr, SVGLengthMode::kHeight); + length_mode_map.Set(svg_names::kFrAttr, SVGLengthMode::kOther); + length_mode_map.Set(svg_names::kFxAttr, SVGLengthMode::kWidth); + length_mode_map.Set(svg_names::kFyAttr, SVGLengthMode::kHeight); + length_mode_map.Set(svg_names::kRAttr, SVGLengthMode::kOther); + length_mode_map.Set(svg_names::kRxAttr, SVGLengthMode::kWidth); + length_mode_map.Set(svg_names::kRyAttr, SVGLengthMode::kHeight); + length_mode_map.Set(svg_names::kWidthAttr, SVGLengthMode::kWidth); + length_mode_map.Set(svg_names::kHeightAttr, SVGLengthMode::kHeight); + length_mode_map.Set(svg_names::kX1Attr, SVGLengthMode::kWidth); + length_mode_map.Set(svg_names::kX2Attr, SVGLengthMode::kWidth); + length_mode_map.Set(svg_names::kY1Attr, SVGLengthMode::kHeight); + length_mode_map.Set(svg_names::kY2Attr, SVGLengthMode::kHeight); + length_mode_map.Set(svg_names::kRefXAttr, SVGLengthMode::kWidth); + length_mode_map.Set(svg_names::kRefYAttr, SVGLengthMode::kHeight); + length_mode_map.Set(svg_names::kMarkerWidthAttr, SVGLengthMode::kWidth); + length_mode_map.Set(svg_names::kMarkerHeightAttr, SVGLengthMode::kHeight); + length_mode_map.Set(svg_names::kTextLengthAttr, SVGLengthMode::kWidth); + length_mode_map.Set(svg_names::kStartOffsetAttr, SVGLengthMode::kWidth); } if (length_mode_map.Contains(attr_name)) @@ -228,9 +228,10 @@ bool SVGLength::NegativeValuesForbiddenForAnimatedLengthAttribute( DEFINE_STATIC_LOCAL( HashSet, no_negative_values_set, ({ - SVGNames::frAttr, SVGNames::rAttr, SVGNames::rxAttr, SVGNames::ryAttr, - SVGNames::widthAttr, SVGNames::heightAttr, SVGNames::markerWidthAttr, - SVGNames::markerHeightAttr, SVGNames::textLengthAttr, + svg_names::kFrAttr, svg_names::kRAttr, svg_names::kRxAttr, + svg_names::kRyAttr, svg_names::kWidthAttr, svg_names::kHeightAttr, + svg_names::kMarkerWidthAttr, svg_names::kMarkerHeightAttr, + svg_names::kTextLengthAttr, })); return no_negative_values_set.Contains(attr_name); } @@ -326,7 +327,7 @@ const CSSPrimitiveValue& CreateInitialCSSValue( } // namespace SVGLength* SVGLength::Create(Initial initial, SVGLengthMode mode) { - return new SVGLength(CreateInitialCSSValue(initial), mode); + return MakeGarbageCollected(CreateInitialCSSValue(initial), mode); } void SVGLength::SetInitial(unsigned initial_value) { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_length.h b/chromium/third_party/blink/renderer/core/svg/svg_length.h index c757faa1bab..27b03f6a3f9 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_length.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_length.h @@ -38,7 +38,7 @@ class SVGLength final : public SVGPropertyBase { typedef SVGLengthTearOff TearOffType; static SVGLength* Create(SVGLengthMode mode = SVGLengthMode::kOther) { - return new SVGLength(mode); + return MakeGarbageCollected(mode); } // Initial values for SVGLength properties. If adding a new initial value, @@ -56,6 +56,11 @@ class SVGLength final : public SVGPropertyBase { }; static constexpr int kInitialValueBits = 3; static SVGLength* Create(Initial, SVGLengthMode); + + explicit SVGLength(SVGLengthMode); + SVGLength(const CSSPrimitiveValue&, SVGLengthMode); + SVGLength(const SVGLength&); + void SetInitial(unsigned); void Trace(blink::Visitor*) override; @@ -133,10 +138,6 @@ class SVGLength final : public SVGPropertyBase { AnimatedPropertyType GetType() const override { return ClassType(); } private: - explicit SVGLength(SVGLengthMode); - SVGLength(const CSSPrimitiveValue&, SVGLengthMode); - SVGLength(const SVGLength&); - Member value_; unsigned unit_mode_ : 2; }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_length_context.cc b/chromium/third_party/blink/renderer/core/svg/svg_length_context.cc index ae0f267f3ea..06d9526f952 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_length_context.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_length_context.cc @@ -31,7 +31,7 @@ #include "third_party/blink/renderer/core/style/computed_style.h" #include "third_party/blink/renderer/core/svg/svg_svg_element.h" #include "third_party/blink/renderer/platform/fonts/font_metrics.h" -#include "third_party/blink/renderer/platform/length_functions.h" +#include "third_party/blink/renderer/platform/geometry/length_functions.h" namespace blink { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_length_context.h b/chromium/third_party/blink/renderer/core/svg/svg_length_context.h index 920e8426866..ba97426dd50 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_length_context.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_length_context.h @@ -23,7 +23,7 @@ #include "third_party/blink/renderer/core/css/css_primitive_value.h" #include "third_party/blink/renderer/core/svg/svg_unit_types.h" #include "third_party/blink/renderer/platform/geometry/float_rect.h" -#include "third_party/blink/renderer/platform/length.h" +#include "third_party/blink/renderer/platform/geometry/length.h" namespace blink { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_length_list.h b/chromium/third_party/blink/renderer/core/svg/svg_length_list.h index 8fe98b4edcc..e83176244b0 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_length_list.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_length_list.h @@ -45,9 +45,10 @@ class SVGLengthList final typedef SVGLengthListTearOff TearOffType; static SVGLengthList* Create(SVGLengthMode mode = SVGLengthMode::kOther) { - return new SVGLengthList(mode); + return MakeGarbageCollected(mode); } + explicit SVGLengthList(SVGLengthMode); ~SVGLengthList() override; SVGParsingError SetValueAsString(const String&); @@ -72,8 +73,6 @@ class SVGLengthList final AnimatedPropertyType GetType() const override { return ClassType(); } private: - explicit SVGLengthList(SVGLengthMode); - // Create SVGLength items used to adjust the list length // when animation from/to lists are longer than this list. SVGLength* CreatePaddingItem() const override; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_length_list_tear_off.h b/chromium/third_party/blink/renderer/core/svg/svg_length_list_tear_off.h index cd50f249b38..fac130c0fec 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_length_list_tear_off.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_length_list_tear_off.h @@ -45,10 +45,10 @@ class SVGLengthListTearOff final SVGLengthList* target, SVGAnimatedPropertyBase* binding, PropertyIsAnimValType property_is_anim_val) { - return new SVGLengthListTearOff(target, binding, property_is_anim_val); + return MakeGarbageCollected(target, binding, + property_is_anim_val); } - private: SVGLengthListTearOff(SVGLengthList* target, SVGAnimatedPropertyBase* binding, PropertyIsAnimValType property_is_anim_val) diff --git a/chromium/third_party/blink/renderer/core/svg/svg_length_tear_off.h b/chromium/third_party/blink/renderer/core/svg/svg_length_tear_off.h index 0181b86b45d..95f39325f3d 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_length_tear_off.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_length_tear_off.h @@ -58,10 +58,15 @@ class SVGLengthTearOff final : public SVGPropertyTearOff { static SVGLengthTearOff* Create(SVGLength* target, SVGAnimatedPropertyBase* binding, PropertyIsAnimValType property_is_anim_val) { - return new SVGLengthTearOff(target, binding, property_is_anim_val); + return MakeGarbageCollected(target, binding, + property_is_anim_val); } static SVGLengthTearOff* CreateDetached(); + SVGLengthTearOff(SVGLength*, + SVGAnimatedPropertyBase* binding, + PropertyIsAnimValType); + unsigned short unitType(); SVGLengthMode UnitMode(); float value(ExceptionState&); @@ -76,11 +81,6 @@ class SVGLengthTearOff final : public SVGPropertyTearOff { void convertToSpecifiedUnits(unsigned short unit_type, ExceptionState&); bool HasExposedLengthUnit(); - - private: - SVGLengthTearOff(SVGLength*, - SVGAnimatedPropertyBase* binding, - PropertyIsAnimValType); }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_line_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_line_element.cc index 056d4ff06dd..b7bd1435de4 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_line_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_line_element.cc @@ -26,21 +26,21 @@ namespace blink { inline SVGLineElement::SVGLineElement(Document& document) - : SVGGeometryElement(SVGNames::lineTag, document), + : SVGGeometryElement(svg_names::kLineTag, document), x1_(SVGAnimatedLength::Create(this, - SVGNames::x1Attr, + svg_names::kX1Attr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero)), y1_(SVGAnimatedLength::Create(this, - SVGNames::y1Attr, + svg_names::kY1Attr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero)), x2_(SVGAnimatedLength::Create(this, - SVGNames::x2Attr, + svg_names::kX2Attr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero)), y2_(SVGAnimatedLength::Create(this, - SVGNames::y2Attr, + svg_names::kY2Attr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero)) { AddToPropertyMap(x1_); @@ -72,8 +72,8 @@ Path SVGLineElement::AsPath() const { } void SVGLineElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::x1Attr || attr_name == SVGNames::y1Attr || - attr_name == SVGNames::x2Attr || attr_name == SVGNames::y2Attr) { + if (attr_name == svg_names::kX1Attr || attr_name == svg_names::kY1Attr || + attr_name == svg_names::kX2Attr || attr_name == svg_names::kY2Attr) { UpdateRelativeLengthsInformation(); GeometryAttributeChanged(); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_linear_gradient_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_linear_gradient_element.cc index 80a243db1e7..2345cb111cd 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_linear_gradient_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_linear_gradient_element.cc @@ -30,25 +30,25 @@ namespace blink { inline SVGLinearGradientElement::SVGLinearGradientElement(Document& document) - : SVGGradientElement(SVGNames::linearGradientTag, document), + : SVGGradientElement(svg_names::kLinearGradientTag, document), // Spec: If the x1|y1|y2 attribute is not specified, the effect is as if a // value of "0%" were specified. // Spec: If the x2 attribute is not specified, the effect is as if a value // of "100%" were specified. x1_(SVGAnimatedLength::Create(this, - SVGNames::x1Attr, + svg_names::kX1Attr, SVGLengthMode::kWidth, SVGLength::Initial::kPercent0)), y1_(SVGAnimatedLength::Create(this, - SVGNames::y1Attr, + svg_names::kY1Attr, SVGLengthMode::kHeight, SVGLength::Initial::kPercent0)), x2_(SVGAnimatedLength::Create(this, - SVGNames::x2Attr, + svg_names::kX2Attr, SVGLengthMode::kWidth, SVGLength::Initial::kPercent100)), y2_(SVGAnimatedLength::Create(this, - SVGNames::y2Attr, + svg_names::kY2Attr, SVGLengthMode::kHeight, SVGLength::Initial::kPercent0)) { AddToPropertyMap(x1_); @@ -69,11 +69,11 @@ DEFINE_NODE_FACTORY(SVGLinearGradientElement) void SVGLinearGradientElement::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::x1Attr || attr_name == SVGNames::x2Attr || - attr_name == SVGNames::y1Attr || attr_name == SVGNames::y2Attr) { + if (attr_name == svg_names::kX1Attr || attr_name == svg_names::kX2Attr || + attr_name == svg_names::kY1Attr || attr_name == svg_names::kY2Attr) { SVGElement::InvalidationGuard invalidation_guard(this); UpdateRelativeLengthsInformation(); - InvalidateGradient(LayoutInvalidationReason::kAttributeChanged); + InvalidateGradient(layout_invalidation_reason::kAttributeChanged); return; } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_marker_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_marker_element.cc index f4968f96318..e4675e246c8 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_marker_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_marker_element.cc @@ -24,48 +24,46 @@ #include "third_party/blink/renderer/core/layout/svg/layout_svg_resource_marker.h" #include "third_party/blink/renderer/core/svg/svg_angle_tear_off.h" +#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h" #include "third_party/blink/renderer/core/svg_names.h" namespace blink { template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries() { - DEFINE_STATIC_LOCAL(SVGEnumerationStringEntries, entries, ()); - if (entries.IsEmpty()) { - entries.push_back( - std::make_pair(kSVGMarkerUnitsUserSpaceOnUse, "userSpaceOnUse")); - entries.push_back( - std::make_pair(kSVGMarkerUnitsStrokeWidth, "strokeWidth")); - } +const SVGEnumerationMap& GetEnumerationMap() { + static const SVGEnumerationMap::Entry enum_items[] = { + {kSVGMarkerUnitsUserSpaceOnUse, "userSpaceOnUse"}, + {kSVGMarkerUnitsStrokeWidth, "strokeWidth"}, + }; + static const SVGEnumerationMap entries(enum_items); return entries; } inline SVGMarkerElement::SVGMarkerElement(Document& document) - : SVGElement(SVGNames::markerTag, document), + : SVGElement(svg_names::kMarkerTag, document), SVGFitToViewBox(this), ref_x_(SVGAnimatedLength::Create(this, - SVGNames::refXAttr, + svg_names::kRefXAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero)), ref_y_(SVGAnimatedLength::Create(this, - SVGNames::refYAttr, + svg_names::kRefYAttr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero)), // Spec: If the markerWidth/markerHeight attribute is not specified, the // effect is as if a value of "3" were specified. marker_width_(SVGAnimatedLength::Create(this, - SVGNames::markerWidthAttr, + svg_names::kMarkerWidthAttr, SVGLengthMode::kWidth, SVGLength::Initial::kNumber3)), marker_height_(SVGAnimatedLength::Create(this, - SVGNames::markerHeightAttr, + svg_names::kMarkerHeightAttr, SVGLengthMode::kHeight, SVGLength::Initial::kNumber3)), orient_angle_(SVGAnimatedAngle::Create(this)), marker_units_(SVGAnimatedEnumeration::Create( this, - SVGNames::markerUnitsAttr, + svg_names::kMarkerUnitsAttr, kSVGMarkerUnitsStrokeWidth)) { AddToPropertyMap(ref_x_); AddToPropertyMap(ref_y_); @@ -98,16 +96,16 @@ AffineTransform SVGMarkerElement::ViewBoxToViewTransform( void SVGMarkerElement::SvgAttributeChanged(const QualifiedName& attr_name) { bool viewbox_attribute_changed = SVGFitToViewBox::IsKnownAttribute(attr_name); - bool length_attribute_changed = attr_name == SVGNames::refXAttr || - attr_name == SVGNames::refYAttr || - attr_name == SVGNames::markerWidthAttr || - attr_name == SVGNames::markerHeightAttr; + bool length_attribute_changed = attr_name == svg_names::kRefXAttr || + attr_name == svg_names::kRefYAttr || + attr_name == svg_names::kMarkerWidthAttr || + attr_name == svg_names::kMarkerHeightAttr; if (length_attribute_changed) UpdateRelativeLengthsInformation(); if (viewbox_attribute_changed || length_attribute_changed || - attr_name == SVGNames::markerUnitsAttr || - attr_name == SVGNames::orientAttr) { + attr_name == svg_names::kMarkerUnitsAttr || + attr_name == svg_names::kOrientAttr) { SVGElement::InvalidationGuard invalidation_guard(this); auto* resource_container = ToLayoutSVGResourceContainer(GetLayoutObject()); if (resource_container) { @@ -130,19 +128,20 @@ void SVGMarkerElement::ChildrenChanged(const ChildrenChange& change) { if (change.by_parser) return; - if (LayoutObject* object = GetLayoutObject()) + if (LayoutObject* object = GetLayoutObject()) { object->SetNeedsLayoutAndFullPaintInvalidation( - LayoutInvalidationReason::kChildChanged); + layout_invalidation_reason::kChildChanged); + } } void SVGMarkerElement::setOrientToAuto() { - setAttribute(SVGNames::orientAttr, "auto"); + setAttribute(svg_names::kOrientAttr, "auto"); } void SVGMarkerElement::setOrientToAngle(SVGAngleTearOff* angle) { DCHECK(angle); SVGAngle* target = angle->Target(); - setAttribute(SVGNames::orientAttr, AtomicString(target->ValueAsString())); + setAttribute(svg_names::kOrientAttr, AtomicString(target->ValueAsString())); } LayoutObject* SVGMarkerElement::CreateLayoutObject(const ComputedStyle&) { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_marker_element.h b/chromium/third_party/blink/renderer/core/svg/svg_marker_element.h index 453f1ab7ee9..e667e9f152e 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_marker_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_marker_element.h @@ -36,8 +36,7 @@ enum SVGMarkerUnitsType { kSVGMarkerUnitsUserSpaceOnUse, kSVGMarkerUnitsStrokeWidth }; -template <> -const SVGEnumerationStringEntries& GetStaticStringEntries(); +DECLARE_SVG_ENUM_MAP(SVGMarkerUnitsType); class SVGMarkerElement final : public SVGElement, public SVGFitToViewBox { DEFINE_WRAPPERTYPEINFO(); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_mask_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_mask_element.cc index 0d6cd764251..cac840f1d9d 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_mask_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_mask_element.cc @@ -29,40 +29,40 @@ namespace blink { inline SVGMaskElement::SVGMaskElement(Document& document) - : SVGElement(SVGNames::maskTag, document), + : SVGElement(svg_names::kMaskTag, document), SVGTests(this), // Spec: If the x/y attribute is not specified, the effect is as if a // value of "-10%" were specified. x_(SVGAnimatedLength::Create(this, - SVGNames::xAttr, + svg_names::kXAttr, SVGLengthMode::kWidth, SVGLength::Initial::kPercentMinus10, CSSPropertyX)), y_(SVGAnimatedLength::Create(this, - SVGNames::yAttr, + svg_names::kYAttr, SVGLengthMode::kHeight, SVGLength::Initial::kPercentMinus10, CSSPropertyY)), // Spec: If the width/height attribute is not specified, the effect is as // if a value of "120%" were specified. width_(SVGAnimatedLength::Create(this, - SVGNames::widthAttr, + svg_names::kWidthAttr, SVGLengthMode::kWidth, SVGLength::Initial::kPercent120, CSSPropertyWidth)), height_(SVGAnimatedLength::Create(this, - SVGNames::heightAttr, + svg_names::kHeightAttr, SVGLengthMode::kHeight, SVGLength::Initial::kPercent120, CSSPropertyHeight)), mask_units_(SVGAnimatedEnumeration::Create( this, - SVGNames::maskUnitsAttr, + svg_names::kMaskUnitsAttr, SVGUnitTypes::kSvgUnitTypeObjectboundingbox)), mask_content_units_( SVGAnimatedEnumeration::Create( this, - SVGNames::maskContentUnitsAttr, + svg_names::kMaskContentUnitsAttr, SVGUnitTypes::kSvgUnitTypeUserspaceonuse)) { AddToPropertyMap(x_); AddToPropertyMap(y_); @@ -109,11 +109,11 @@ void SVGMaskElement::CollectStyleForPresentationAttribute( void SVGMaskElement::SvgAttributeChanged(const QualifiedName& attr_name) { bool is_length_attr = - attr_name == SVGNames::xAttr || attr_name == SVGNames::yAttr || - attr_name == SVGNames::widthAttr || attr_name == SVGNames::heightAttr; + attr_name == svg_names::kXAttr || attr_name == svg_names::kYAttr || + attr_name == svg_names::kWidthAttr || attr_name == svg_names::kHeightAttr; - if (is_length_attr || attr_name == SVGNames::maskUnitsAttr || - attr_name == SVGNames::maskContentUnitsAttr || + if (is_length_attr || attr_name == svg_names::kMaskUnitsAttr || + attr_name == svg_names::kMaskContentUnitsAttr || SVGTests::IsKnownAttribute(attr_name)) { SVGElement::InvalidationGuard invalidation_guard(this); @@ -142,9 +142,10 @@ void SVGMaskElement::ChildrenChanged(const ChildrenChange& change) { if (change.by_parser) return; - if (LayoutObject* object = GetLayoutObject()) + if (LayoutObject* object = GetLayoutObject()) { object->SetNeedsLayoutAndFullPaintInvalidation( - LayoutInvalidationReason::kChildChanged); + layout_invalidation_reason::kChildChanged); + } } LayoutObject* SVGMaskElement::CreateLayoutObject(const ComputedStyle&) { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_matrix_tear_off.h b/chromium/third_party/blink/renderer/core/svg/svg_matrix_tear_off.h index aa78ee20ee0..8c735691f30 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_matrix_tear_off.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_matrix_tear_off.h @@ -51,13 +51,16 @@ class CORE_EXPORT SVGMatrixTearOff final : public ScriptWrappable { public: static SVGMatrixTearOff* Create(const AffineTransform& value) { - return new SVGMatrixTearOff(value); + return MakeGarbageCollected(value); } static SVGMatrixTearOff* Create(SVGTransformTearOff* target) { - return new SVGMatrixTearOff(target); + return MakeGarbageCollected(target); } + explicit SVGMatrixTearOff(const AffineTransform&); + explicit SVGMatrixTearOff(SVGTransformTearOff*); + double a() { return Value().A(); } double b() { return Value().B(); } double c() { return Value().C(); } @@ -91,9 +94,6 @@ class CORE_EXPORT SVGMatrixTearOff final : public ScriptWrappable { void Trace(blink::Visitor*) override; private: - explicit SVGMatrixTearOff(const AffineTransform&); - explicit SVGMatrixTearOff(SVGTransformTearOff*); - AffineTransform* MutableValue(); void CommitChange(); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_metadata_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_metadata_element.cc index 6caa0d60709..0fd9920e170 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_metadata_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_metadata_element.cc @@ -25,7 +25,7 @@ namespace blink { inline SVGMetadataElement::SVGMetadataElement(Document& document) - : SVGElement(SVGNames::metadataTag, document) {} + : SVGElement(svg_names::kMetadataTag, document) {} DEFINE_NODE_FACTORY(SVGMetadataElement) } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_mpath_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_mpath_element.cc index 8256e3f48f1..b49d09d5f5c 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_mpath_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_mpath_element.cc @@ -28,8 +28,7 @@ namespace blink { inline SVGMPathElement::SVGMPathElement(Document& document) - : SVGElement(SVGNames::mpathTag, document), SVGURIReference(this) { - DCHECK(RuntimeEnabledFeatures::SMILEnabled()); + : SVGElement(svg_names::kMPathTag, document), SVGURIReference(this) { } void SVGMPathElement::Trace(blink::Visitor* visitor) { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_mpath_element.idl b/chromium/third_party/blink/renderer/core/svg/svg_mpath_element.idl index c3933b2b691..7889bbb94ff 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_mpath_element.idl +++ b/chromium/third_party/blink/renderer/core/svg/svg_mpath_element.idl @@ -25,7 +25,6 @@ // https://svgwg.org/specs/animations/#InterfaceSVGMPathElement -[RuntimeEnabled=SMIL] interface SVGMPathElement : SVGElement { }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_number.h b/chromium/third_party/blink/renderer/core/svg/svg_number.h index 7cb5255ad9e..efd281a268c 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_number.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_number.h @@ -44,7 +44,11 @@ class SVGNumber : public SVGPropertyHelper { typedef SVGNumberTearOff TearOffType; typedef float PrimitiveType; - static SVGNumber* Create(float value = 0.0f) { return new SVGNumber(value); } + static SVGNumber* Create(float value = 0.0f) { + return MakeGarbageCollected(value); + } + + explicit SVGNumber(float); virtual SVGNumber* Clone() const; @@ -71,8 +75,6 @@ class SVGNumber : public SVGPropertyHelper { static constexpr int kInitialValueBits = 2; protected: - explicit SVGNumber(float); - template SVGParsingError Parse(const CharType*& ptr, const CharType* end); @@ -88,14 +90,13 @@ DEFINE_SVG_PROPERTY_TYPE_CASTS(SVGNumber); class SVGNumberAcceptPercentage final : public SVGNumber { public: static SVGNumberAcceptPercentage* Create(float value = 0) { - return new SVGNumberAcceptPercentage(value); + return MakeGarbageCollected(value); } + explicit SVGNumberAcceptPercentage(float); + SVGNumber* Clone() const override; SVGParsingError SetValueAsString(const String&) override; - - private: - explicit SVGNumberAcceptPercentage(float); }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_number_list.h b/chromium/third_party/blink/renderer/core/svg/svg_number_list.h index ebf00bd2303..ca3c6c4332f 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_number_list.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_number_list.h @@ -44,8 +44,11 @@ class SVGNumberList final public: typedef SVGNumberListTearOff TearOffType; - static SVGNumberList* Create() { return new SVGNumberList(); } + static SVGNumberList* Create() { + return MakeGarbageCollected(); + } + SVGNumberList(); ~SVGNumberList() override; SVGParsingError SetValueAsString(const String&); @@ -69,8 +72,6 @@ class SVGNumberList final Vector ToFloatVector() const; private: - SVGNumberList(); - template SVGParsingError Parse(const CharType*& ptr, const CharType* end); }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_number_list_tear_off.h b/chromium/third_party/blink/renderer/core/svg/svg_number_list_tear_off.h index dab0a184dd6..7e5878f3596 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_number_list_tear_off.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_number_list_tear_off.h @@ -45,10 +45,10 @@ class SVGNumberListTearOff final SVGNumberList* target, SVGAnimatedPropertyBase* binding, PropertyIsAnimValType property_is_anim_val) { - return new SVGNumberListTearOff(target, binding, property_is_anim_val); + return MakeGarbageCollected(target, binding, + property_is_anim_val); } - private: SVGNumberListTearOff(SVGNumberList* target, SVGAnimatedPropertyBase* binding, PropertyIsAnimValType property_is_anim_val) diff --git a/chromium/third_party/blink/renderer/core/svg/svg_number_optional_number.h b/chromium/third_party/blink/renderer/core/svg/svg_number_optional_number.h index 07f8e51f55c..5224a522648 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_number_optional_number.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_number_optional_number.h @@ -45,9 +45,12 @@ class SVGNumberOptionalNumber final : public SVGPropertyBase { static SVGNumberOptionalNumber* Create(SVGNumber* first_number, SVGNumber* second_number) { - return new SVGNumberOptionalNumber(first_number, second_number); + return MakeGarbageCollected(first_number, + second_number); } + SVGNumberOptionalNumber(SVGNumber* first_number, SVGNumber* second_number); + SVGNumberOptionalNumber* Clone() const; SVGPropertyBase* CloneForAnimation(const String&) const override; @@ -78,8 +81,6 @@ class SVGNumberOptionalNumber final : public SVGPropertyBase { void Trace(blink::Visitor*) override; protected: - SVGNumberOptionalNumber(SVGNumber* first_number, SVGNumber* second_number); - Member first_number_; Member second_number_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_number_tear_off.h b/chromium/third_party/blink/renderer/core/svg/svg_number_tear_off.h index cdc90fcb7f6..7748b332636 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_number_tear_off.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_number_tear_off.h @@ -43,17 +43,17 @@ class SVGNumberTearOff : public SVGPropertyTearOff { static SVGNumberTearOff* Create(SVGNumber* target, SVGAnimatedPropertyBase* binding, PropertyIsAnimValType property_is_anim_val) { - return new SVGNumberTearOff(target, binding, property_is_anim_val); + return MakeGarbageCollected(target, binding, + property_is_anim_val); } static SVGNumberTearOff* CreateDetached(); - void setValue(float, ExceptionState&); - float value() { return Target()->Value(); } - - protected: SVGNumberTearOff(SVGNumber*, SVGAnimatedPropertyBase* binding, PropertyIsAnimValType); + + void setValue(float, ExceptionState&); + float value() { return Target()->Value(); } }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_path.h b/chromium/third_party/blink/renderer/core/svg/svg_path.h index c3b5d0aa0a8..696cc58d4a4 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_path.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_path.h @@ -42,11 +42,13 @@ class SVGPath final : public SVGPropertyBase { public: typedef void TearOffType; - static SVGPath* Create() { return new SVGPath(); } + static SVGPath* Create() { return MakeGarbageCollected(); } static SVGPath* Create(cssvalue::CSSPathValue* path_value) { - return new SVGPath(path_value); + return MakeGarbageCollected(path_value); } + SVGPath(); + explicit SVGPath(cssvalue::CSSPathValue*); ~SVGPath() override; const SVGPathByteStream& ByteStream() const { @@ -77,9 +79,6 @@ class SVGPath final : public SVGPropertyBase { void Trace(blink::Visitor*) override; private: - SVGPath(); - explicit SVGPath(cssvalue::CSSPathValue*); - Member path_value_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_path_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_path_element.cc index 1f96415490b..6b8cffd0da8 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_path_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_path_element.cc @@ -29,8 +29,8 @@ namespace blink { inline SVGPathElement::SVGPathElement(Document& document) - : SVGGeometryElement(SVGNames::pathTag, document), - path_(SVGAnimatedPath::Create(this, SVGNames::dAttr, CSSPropertyD)) { + : SVGGeometryElement(svg_names::kPathTag, document), + path_(SVGAnimatedPath::Create(this, svg_names::kDAttr, CSSPropertyD)) { AddToPropertyMap(path_); } @@ -83,7 +83,7 @@ SVGPointTearOff* SVGPathElement::getPointAtLength(float length) { } void SVGPathElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::dAttr) { + if (attr_name == svg_names::kDAttr) { InvalidateMPathDependencies(); GeometryPresentationAttributeChanged(attr_name); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_path_parser.h b/chromium/third_party/blink/renderer/core/svg/svg_path_parser.h index b8cc12131be..32191f188d1 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_path_parser.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_path_parser.h @@ -33,7 +33,7 @@ namespace blink { class SVGPathConsumer; -namespace SVGPathParser { +namespace svg_path_parser { template inline bool ParsePath(SourceType& source, ConsumerType& consumer) { @@ -47,7 +47,7 @@ inline bool ParsePath(SourceType& source, ConsumerType& consumer) { return true; } -} // namespace SVGPathParser +} // namespace svg_path_parser class SVGPathNormalizer { STACK_ALLOCATED(); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_path_parser_test.cc b/chromium/third_party/blink/renderer/core/svg/svg_path_parser_test.cc index f4c64252802..231dbe7d212 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_path_parser_test.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_path_parser_test.cc @@ -16,7 +16,7 @@ bool ParsePath(const char* input, String& output) { String input_string(input); SVGPathStringSource source(input_string); SVGPathStringBuilder builder; - bool had_error = SVGPathParser::ParsePath(source, builder); + bool had_error = svg_path_parser::ParsePath(source, builder); output = builder.Result(); // Coerce a null result to empty. if (output.IsNull()) @@ -160,7 +160,7 @@ SVGParsingError ParsePathWithError(const char* input) { String input_string(input); SVGPathStringSource source(input_string); SVGPathStringBuilder builder; - SVGPathParser::ParsePath(source, builder); + svg_path_parser::ParsePath(source, builder); return source.ParseError(); } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_path_string_source.cc b/chromium/third_party/blink/renderer/core/svg/svg_path_string_source.cc index 223f7801ca5..befbe62ddcc 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_path_string_source.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_path_string_source.cc @@ -26,12 +26,12 @@ namespace blink { SVGPathStringSource::SVGPathStringSource(const String& string) - : is8_bit_source_(string.Is8Bit()), + : is_8bit_source_(string.Is8Bit()), previous_command_(kPathSegUnknown), string_(string) { DCHECK(!string.IsNull()); - if (is8_bit_source_) { + if (is_8bit_source_) { current_.character8_ = string.Characters8(); end_.character8_ = current_.character8_ + string.length(); } else { @@ -42,7 +42,7 @@ SVGPathStringSource::SVGPathStringSource(const String& string) } void SVGPathStringSource::EatWhitespace() { - if (is8_bit_source_) + if (is_8bit_source_) SkipOptionalSVGSpaces(current_.character8_, end_.character8_); else SkipOptionalSVGSpaces(current_.character16_, end_.character16_); @@ -124,7 +124,7 @@ static bool MaybeImplicitCommand(unsigned lookahead, void SVGPathStringSource::SetErrorMark(SVGParseStatus status) { if (error_.Status() != SVGParseStatus::kNoError) return; - size_t locus = is8_bit_source_ + size_t locus = is_8bit_source_ ? current_.character8_ - string_.Characters8() : current_.character16_ - string_.Characters16(); error_ = SVGParsingError(status, locus); @@ -133,7 +133,7 @@ void SVGPathStringSource::SetErrorMark(SVGParseStatus status) { float SVGPathStringSource::ParseNumberWithError() { float number_value = 0; bool error; - if (is8_bit_source_) + if (is_8bit_source_) error = !ParseNumber(current_.character8_, end_.character8_, number_value); else error = @@ -146,7 +146,7 @@ float SVGPathStringSource::ParseNumberWithError() { bool SVGPathStringSource::ParseArcFlagWithError() { bool flag_value = false; bool error; - if (is8_bit_source_) + if (is_8bit_source_) error = !ParseArcFlag(current_.character8_, end_.character8_, flag_value); else error = !ParseArcFlag(current_.character16_, end_.character16_, flag_value); @@ -159,7 +159,7 @@ PathSegmentData SVGPathStringSource::ParseSegment() { DCHECK(HasMoreData()); PathSegmentData segment; unsigned lookahead = - is8_bit_source_ ? *current_.character8_ : *current_.character16_; + is_8bit_source_ ? *current_.character8_ : *current_.character16_; SVGPathSegType command = MapLetterToSegmentType(lookahead); if (UNLIKELY(previous_command_ == kPathSegUnknown)) { // First command has to be a moveto. @@ -168,7 +168,7 @@ PathSegmentData SVGPathStringSource::ParseSegment() { return segment; } // Consume command letter. - if (is8_bit_source_) + if (is_8bit_source_) current_.character8_++; else current_.character16_++; @@ -181,7 +181,7 @@ PathSegmentData SVGPathStringSource::ParseSegment() { } } else { // Valid explicit command. - if (is8_bit_source_) + if (is_8bit_source_) current_.character8_++; else current_.character16_++; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_path_string_source.h b/chromium/third_party/blink/renderer/core/svg/svg_path_string_source.h index a20acbe5463..ba18f114c6f 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_path_string_source.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_path_string_source.h @@ -36,7 +36,7 @@ class CORE_EXPORT SVGPathStringSource { explicit SVGPathStringSource(const String&); bool HasMoreData() const { - if (is8_bit_source_) + if (is_8bit_source_) return current_.character8_ < end_.character8_; return current_.character16_ < end_.character16_; } @@ -50,7 +50,7 @@ class CORE_EXPORT SVGPathStringSource { bool ParseArcFlagWithError(); void SetErrorMark(SVGParseStatus); - bool is8_bit_source_; + bool is_8bit_source_; union { const LChar* character8_; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_path_utilities.cc b/chromium/third_party/blink/renderer/core/svg/svg_path_utilities.cc index 4fb92cd2d88..37e46ea7d10 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_path_utilities.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_path_utilities.cc @@ -34,7 +34,7 @@ bool BuildPathFromString(const String& d, Path& result) { SVGPathBuilder builder(result); SVGPathStringSource source(d); - return SVGPathParser::ParsePath(source, builder); + return svg_path_parser::ParsePath(source, builder); } bool BuildPathFromByteStream(const SVGPathByteStream& stream, Path& result) { @@ -43,7 +43,7 @@ bool BuildPathFromByteStream(const SVGPathByteStream& stream, Path& result) { SVGPathBuilder builder(result); SVGPathByteStreamSource source(stream); - return SVGPathParser::ParsePath(source, builder); + return svg_path_parser::ParsePath(source, builder); } String BuildStringFromByteStream(const SVGPathByteStream& stream, @@ -55,9 +55,9 @@ String BuildStringFromByteStream(const SVGPathByteStream& stream, SVGPathByteStreamSource source(stream); if (format == kTransformToAbsolute) { SVGPathAbsolutizer absolutizer(&builder); - SVGPathParser::ParsePath(source, absolutizer); + svg_path_parser::ParsePath(source, absolutizer); } else { - SVGPathParser::ParsePath(source, builder); + svg_path_parser::ParsePath(source, builder); } return builder.Result(); } @@ -74,7 +74,7 @@ SVGParsingError BuildByteStreamFromString(const String& d, SVGPathByteStreamBuilder builder(result); SVGPathStringSource source(d); - SVGPathParser::ParsePath(source, builder); + svg_path_parser::ParsePath(source, builder); result.ShrinkToFit(); return source.ParseError(); } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_pattern_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_pattern_element.cc index 1ed75ec4aa9..c165ccb2a8a 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_pattern_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_pattern_element.cc @@ -34,38 +34,38 @@ namespace blink { inline SVGPatternElement::SVGPatternElement(Document& document) - : SVGElement(SVGNames::patternTag, document), + : SVGElement(svg_names::kPatternTag, document), SVGURIReference(this), SVGTests(this), SVGFitToViewBox(this), x_(SVGAnimatedLength::Create(this, - SVGNames::xAttr, + svg_names::kXAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero)), y_(SVGAnimatedLength::Create(this, - SVGNames::yAttr, + svg_names::kYAttr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero)), width_(SVGAnimatedLength::Create(this, - SVGNames::widthAttr, + svg_names::kWidthAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero)), height_(SVGAnimatedLength::Create(this, - SVGNames::heightAttr, + svg_names::kHeightAttr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero)), pattern_transform_( SVGAnimatedTransformList::Create(this, - SVGNames::patternTransformAttr, + svg_names::kPatternTransformAttr, CSSPropertyTransform)), pattern_units_(SVGAnimatedEnumeration::Create( this, - SVGNames::patternUnitsAttr, + svg_names::kPatternUnitsAttr, SVGUnitTypes::kSvgUnitTypeObjectboundingbox)), pattern_content_units_( SVGAnimatedEnumeration::Create( this, - SVGNames::patternContentUnitsAttr, + svg_names::kPatternContentUnitsAttr, SVGUnitTypes::kSvgUnitTypeUserspaceonuse)) { AddToPropertyMap(x_); AddToPropertyMap(y_); @@ -105,7 +105,7 @@ void SVGPatternElement::BuildPendingResource() { if (resource_) resource_->AddClient(EnsureSVGResourceClient()); - InvalidatePattern(LayoutInvalidationReason::kSvgResourceInvalidated); + InvalidatePattern(layout_invalidation_reason::kSvgResourceInvalidated); if (auto* layout_object = GetLayoutObject()) SVGResourcesCache::ResourceReferenceChanged(*layout_object); } @@ -121,7 +121,7 @@ void SVGPatternElement::CollectStyleForPresentationAttribute( const QualifiedName& name, const AtomicString& value, MutableCSSPropertyValueSet* style) { - if (name == SVGNames::patternTransformAttr) { + if (name == svg_names::kPatternTransformAttr) { AddPropertyToPresentationAttributeStyle( style, CSSPropertyTransform, *pattern_transform_->CurrentValue()->CssValue()); @@ -132,18 +132,18 @@ void SVGPatternElement::CollectStyleForPresentationAttribute( void SVGPatternElement::SvgAttributeChanged(const QualifiedName& attr_name) { bool is_length_attr = - attr_name == SVGNames::xAttr || attr_name == SVGNames::yAttr || - attr_name == SVGNames::widthAttr || attr_name == SVGNames::heightAttr; + attr_name == svg_names::kXAttr || attr_name == svg_names::kYAttr || + attr_name == svg_names::kWidthAttr || attr_name == svg_names::kHeightAttr; - if (attr_name == SVGNames::patternTransformAttr) { + if (attr_name == svg_names::kPatternTransformAttr) { InvalidateSVGPresentationAttributeStyle(); SetNeedsStyleRecalc(kLocalStyleChange, StyleChangeReasonForTracing::FromAttribute(attr_name)); } - if (is_length_attr || attr_name == SVGNames::patternUnitsAttr || - attr_name == SVGNames::patternContentUnitsAttr || - attr_name == SVGNames::patternTransformAttr || + if (is_length_attr || attr_name == svg_names::kPatternUnitsAttr || + attr_name == svg_names::kPatternContentUnitsAttr || + attr_name == svg_names::kPatternTransformAttr || SVGFitToViewBox::IsKnownAttribute(attr_name) || SVGTests::IsKnownAttribute(attr_name)) { SVGElement::InvalidationGuard invalidation_guard(this); @@ -151,7 +151,7 @@ void SVGPatternElement::SvgAttributeChanged(const QualifiedName& attr_name) { if (is_length_attr) UpdateRelativeLengthsInformation(); - InvalidatePattern(LayoutInvalidationReason::kAttributeChanged); + InvalidatePattern(layout_invalidation_reason::kAttributeChanged); return; } @@ -184,7 +184,7 @@ void SVGPatternElement::ChildrenChanged(const ChildrenChange& change) { if (change.by_parser) return; - InvalidatePattern(LayoutInvalidationReason::kChildChanged); + InvalidatePattern(layout_invalidation_reason::kChildChanged); } void SVGPatternElement::InvalidatePattern( diff --git a/chromium/third_party/blink/renderer/core/svg/svg_point.h b/chromium/third_party/blink/renderer/core/svg/svg_point.h index fc39e06ee5a..13c5246f692 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_point.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_point.h @@ -44,12 +44,15 @@ class SVGPoint final : public SVGPropertyHelper { public: typedef SVGPointTearOff TearOffType; - static SVGPoint* Create() { return new SVGPoint(); } + static SVGPoint* Create() { return MakeGarbageCollected(); } static SVGPoint* Create(const FloatPoint& point) { - return new SVGPoint(point); + return MakeGarbageCollected(point); } + SVGPoint(); + explicit SVGPoint(const FloatPoint&); + SVGPoint* Clone() const; const FloatPoint& Value() const { return value_; } @@ -79,9 +82,6 @@ class SVGPoint final : public SVGPropertyHelper { static AnimatedPropertyType ClassType() { return kAnimatedPoint; } private: - SVGPoint(); - explicit SVGPoint(const FloatPoint&); - template SVGParsingError Parse(const CharType*& ptr, const CharType* end); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_point_list.h b/chromium/third_party/blink/renderer/core/svg/svg_point_list.h index 98eae93939d..76a1973bc83 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_point_list.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_point_list.h @@ -44,8 +44,9 @@ class SVGPointList final public: typedef SVGPointListTearOff TearOffType; - static SVGPointList* Create() { return new SVGPointList(); } + static SVGPointList* Create() { return MakeGarbageCollected(); } + SVGPointList(); ~SVGPointList() override; SVGParsingError SetValueAsString(const String&); @@ -67,8 +68,6 @@ class SVGPointList final AnimatedPropertyType GetType() const override { return ClassType(); } private: - SVGPointList(); - template SVGParsingError Parse(const CharType*& ptr, const CharType* end); }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_point_list_tear_off.h b/chromium/third_party/blink/renderer/core/svg/svg_point_list_tear_off.h index e29f06e308e..0dacaf36c61 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_point_list_tear_off.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_point_list_tear_off.h @@ -45,10 +45,10 @@ class SVGPointListTearOff final SVGPointList* target, SVGAnimatedPropertyBase* binding, PropertyIsAnimValType property_is_anim_val) { - return new SVGPointListTearOff(target, binding, property_is_anim_val); + return MakeGarbageCollected(target, binding, + property_is_anim_val); } - private: SVGPointListTearOff(SVGPointList* target, SVGAnimatedPropertyBase* binding, PropertyIsAnimValType property_is_anim_val) diff --git a/chromium/third_party/blink/renderer/core/svg/svg_point_tear_off.h b/chromium/third_party/blink/renderer/core/svg/svg_point_tear_off.h index 2caab949654..dcc63e148ff 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_point_tear_off.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_point_tear_off.h @@ -45,26 +45,26 @@ class SVGPointTearOff : public SVGPropertyTearOff { static SVGPointTearOff* Create(SVGPoint* target, SVGAnimatedPropertyBase* binding, PropertyIsAnimValType property_is_anim_val) { - return new SVGPointTearOff(target, binding, property_is_anim_val); + return MakeGarbageCollected(target, binding, + property_is_anim_val); } static SVGPointTearOff* Create(SVGPoint* target, SVGElement* context_element) { - return new SVGPointTearOff(target, context_element); + return MakeGarbageCollected(target, context_element); } static SVGPointTearOff* CreateDetached(const FloatPoint&); + SVGPointTearOff(SVGPoint*, + SVGAnimatedPropertyBase* binding, + PropertyIsAnimValType); + SVGPointTearOff(SVGPoint*, SVGElement*); + void setX(float, ExceptionState&); void setY(float, ExceptionState&); float x() { return Target()->X(); } float y() { return Target()->Y(); } SVGPointTearOff* matrixTransform(SVGMatrixTearOff*); - - protected: - SVGPointTearOff(SVGPoint*, - SVGAnimatedPropertyBase* binding, - PropertyIsAnimValType); - SVGPointTearOff(SVGPoint*, SVGElement*); }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_poly_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_poly_element.cc index b1d40b4b03f..dacf9445c35 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_poly_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_poly_element.cc @@ -29,7 +29,7 @@ SVGPolyElement::SVGPolyElement(const QualifiedName& tag_name, Document& document) : SVGGeometryElement(tag_name, document), points_(SVGAnimatedPointList::Create(this, - SVGNames::pointsAttr, + svg_names::kPointsAttr, SVGPointList::Create())) { AddToPropertyMap(points_); } @@ -59,7 +59,7 @@ Path SVGPolyElement::AsPathFromPoints() const { } void SVGPolyElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::pointsAttr) { + if (attr_name == svg_names::kPointsAttr) { GeometryAttributeChanged(); return; } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_poly_element.h b/chromium/third_party/blink/renderer/core/svg/svg_poly_element.h index 37c66133615..87a146ced44 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_poly_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_poly_element.h @@ -50,8 +50,8 @@ class SVGPolyElement : public SVGGeometryElement { }; inline bool IsSVGPolyElement(const SVGElement& element) { - return element.HasTagName(SVGNames::polygonTag) || - element.HasTagName(SVGNames::polylineTag); + return element.HasTagName(svg_names::kPolygonTag) || + element.HasTagName(svg_names::kPolylineTag); } DEFINE_SVGELEMENT_TYPE_CASTS_WITH_FUNCTION(SVGPolyElement); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_polygon_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_polygon_element.cc index b2ba991e2c4..4149711d37c 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_polygon_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_polygon_element.cc @@ -25,7 +25,7 @@ namespace blink { inline SVGPolygonElement::SVGPolygonElement(Document& document) - : SVGPolyElement(SVGNames::polygonTag, document) {} + : SVGPolyElement(svg_names::kPolygonTag, document) {} DEFINE_NODE_FACTORY(SVGPolygonElement) diff --git a/chromium/third_party/blink/renderer/core/svg/svg_polyline_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_polyline_element.cc index 5e355c9bc0f..1d2b1f18e03 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_polyline_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_polyline_element.cc @@ -25,7 +25,7 @@ namespace blink { SVGPolylineElement::SVGPolylineElement(Document& document) - : SVGPolyElement(SVGNames::polylineTag, document) {} + : SVGPolyElement(svg_names::kPolylineTag, document) {} DEFINE_NODE_FACTORY(SVGPolylineElement) diff --git a/chromium/third_party/blink/renderer/core/svg/svg_preserve_aspect_ratio.h b/chromium/third_party/blink/renderer/core/svg/svg_preserve_aspect_ratio.h index 8aa69f0d98c..24750bea9ff 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_preserve_aspect_ratio.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_preserve_aspect_ratio.h @@ -56,9 +56,11 @@ class SVGPreserveAspectRatio final typedef SVGPreserveAspectRatioTearOff TearOffType; static SVGPreserveAspectRatio* Create() { - return new SVGPreserveAspectRatio(); + return MakeGarbageCollected(); } + SVGPreserveAspectRatio(); + virtual SVGPreserveAspectRatio* Clone() const; bool operator==(const SVGPreserveAspectRatio&) const; @@ -106,8 +108,6 @@ class SVGPreserveAspectRatio final void SetDefault(); private: - SVGPreserveAspectRatio(); - template SVGParsingError ParseInternal(const CharType*& ptr, const CharType* end, diff --git a/chromium/third_party/blink/renderer/core/svg/svg_preserve_aspect_ratio_tear_off.h b/chromium/third_party/blink/renderer/core/svg/svg_preserve_aspect_ratio_tear_off.h index a2b3d6d9600..240844fc1be 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_preserve_aspect_ratio_tear_off.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_preserve_aspect_ratio_tear_off.h @@ -77,19 +77,18 @@ class SVGPreserveAspectRatioTearOff final SVGPreserveAspectRatio* target, SVGAnimatedPropertyBase* binding, PropertyIsAnimValType property_is_anim_val) { - return new SVGPreserveAspectRatioTearOff(target, binding, - property_is_anim_val); + return MakeGarbageCollected( + target, binding, property_is_anim_val); } + SVGPreserveAspectRatioTearOff(SVGPreserveAspectRatio*, + SVGAnimatedPropertyBase* binding, + PropertyIsAnimValType); + void setAlign(unsigned short, ExceptionState&); unsigned short align() { return Target()->Align(); } void setMeetOrSlice(unsigned short, ExceptionState&); unsigned short meetOrSlice() { return Target()->MeetOrSlice(); } - - private: - SVGPreserveAspectRatioTearOff(SVGPreserveAspectRatio*, - SVGAnimatedPropertyBase* binding, - PropertyIsAnimValType); }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_radial_gradient_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_radial_gradient_element.cc index c855caf7683..e5800f6be35 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_radial_gradient_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_radial_gradient_element.cc @@ -29,33 +29,33 @@ namespace blink { inline SVGRadialGradientElement::SVGRadialGradientElement(Document& document) - : SVGGradientElement(SVGNames::radialGradientTag, document), + : SVGGradientElement(svg_names::kRadialGradientTag, document), // Spec: If the cx/cy/r attribute is not specified, the effect is as if a // value of "50%" were specified. cx_(SVGAnimatedLength::Create(this, - SVGNames::cxAttr, + svg_names::kCxAttr, SVGLengthMode::kWidth, SVGLength::Initial::kPercent50)), cy_(SVGAnimatedLength::Create(this, - SVGNames::cyAttr, + svg_names::kCyAttr, SVGLengthMode::kHeight, SVGLength::Initial::kPercent50)), r_(SVGAnimatedLength::Create(this, - SVGNames::rAttr, + svg_names::kRAttr, SVGLengthMode::kOther, SVGLength::Initial::kPercent50)), fx_(SVGAnimatedLength::Create(this, - SVGNames::fxAttr, + svg_names::kFxAttr, SVGLengthMode::kWidth, SVGLength::Initial::kPercent50)), fy_(SVGAnimatedLength::Create(this, - SVGNames::fyAttr, + svg_names::kFyAttr, SVGLengthMode::kHeight, SVGLength::Initial::kPercent50)), // SVG2-Draft Spec: If the fr attribute is not specified, the effect is as // if a value of "0%" were specified. fr_(SVGAnimatedLength::Create(this, - SVGNames::frAttr, + svg_names::kFrAttr, SVGLengthMode::kOther, SVGLength::Initial::kPercent0)) { AddToPropertyMap(cx_); @@ -80,12 +80,12 @@ DEFINE_NODE_FACTORY(SVGRadialGradientElement) void SVGRadialGradientElement::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::cxAttr || attr_name == SVGNames::cyAttr || - attr_name == SVGNames::fxAttr || attr_name == SVGNames::fyAttr || - attr_name == SVGNames::rAttr || attr_name == SVGNames::frAttr) { + if (attr_name == svg_names::kCxAttr || attr_name == svg_names::kCyAttr || + attr_name == svg_names::kFxAttr || attr_name == svg_names::kFyAttr || + attr_name == svg_names::kRAttr || attr_name == svg_names::kFrAttr) { SVGElement::InvalidationGuard invalidation_guard(this); UpdateRelativeLengthsInformation(); - InvalidateGradient(LayoutInvalidationReason::kAttributeChanged); + InvalidateGradient(layout_invalidation_reason::kAttributeChanged); return; } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_rect.h b/chromium/third_party/blink/renderer/core/svg/svg_rect.h index be77de53b23..de2a678a5fc 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_rect.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_rect.h @@ -33,15 +33,20 @@ class SVGRect final : public SVGPropertyHelper { public: typedef SVGRectTearOff TearOffType; - static SVGRect* Create() { return new SVGRect(); } + static SVGRect* Create() { return MakeGarbageCollected(); } static SVGRect* CreateInvalid() { - SVGRect* rect = new SVGRect(); + SVGRect* rect = MakeGarbageCollected(); rect->SetInvalid(); return rect; } - static SVGRect* Create(const FloatRect& rect) { return new SVGRect(rect); } + static SVGRect* Create(const FloatRect& rect) { + return MakeGarbageCollected(rect); + } + + SVGRect(); + SVGRect(const FloatRect&); SVGRect* Clone() const; @@ -77,9 +82,6 @@ class SVGRect final : public SVGPropertyHelper { static AnimatedPropertyType ClassType() { return kAnimatedRect; } private: - SVGRect(); - SVGRect(const FloatRect&); - template SVGParsingError Parse(const CharType*& ptr, const CharType* end); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_rect_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_rect_element.cc index ed62484c0f7..9bfa8676d0f 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_rect_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_rect_element.cc @@ -26,34 +26,34 @@ namespace blink { inline SVGRectElement::SVGRectElement(Document& document) - : SVGGeometryElement(SVGNames::rectTag, document), + : SVGGeometryElement(svg_names::kRectTag, document), x_(SVGAnimatedLength::Create(this, - SVGNames::xAttr, + svg_names::kXAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero, CSSPropertyX)), y_(SVGAnimatedLength::Create(this, - SVGNames::yAttr, + svg_names::kYAttr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero, CSSPropertyY)), width_(SVGAnimatedLength::Create(this, - SVGNames::widthAttr, + svg_names::kWidthAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero, CSSPropertyWidth)), height_(SVGAnimatedLength::Create(this, - SVGNames::heightAttr, + svg_names::kHeightAttr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero, CSSPropertyHeight)), rx_(SVGAnimatedLength::Create(this, - SVGNames::rxAttr, + svg_names::kRxAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero, CSSPropertyRx)), ry_(SVGAnimatedLength::Create(this, - SVGNames::ryAttr, + svg_names::kRyAttr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero, CSSPropertyRy)) { @@ -139,9 +139,10 @@ void SVGRectElement::CollectStyleForPresentationAttribute( } void SVGRectElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::xAttr || attr_name == SVGNames::yAttr || - attr_name == SVGNames::widthAttr || attr_name == SVGNames::heightAttr || - attr_name == SVGNames::rxAttr || attr_name == SVGNames::ryAttr) { + if (attr_name == svg_names::kXAttr || attr_name == svg_names::kYAttr || + attr_name == svg_names::kWidthAttr || + attr_name == svg_names::kHeightAttr || attr_name == svg_names::kRxAttr || + attr_name == svg_names::kRyAttr) { UpdateRelativeLengthsInformation(); GeometryPresentationAttributeChanged(attr_name); return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_rect_tear_off.h b/chromium/third_party/blink/renderer/core/svg/svg_rect_tear_off.h index dad272d61b5..36976210c43 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_rect_tear_off.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_rect_tear_off.h @@ -43,10 +43,15 @@ class SVGRectTearOff : public SVGPropertyTearOff { static SVGRectTearOff* Create(SVGRect* target, SVGAnimatedPropertyBase* binding, PropertyIsAnimValType property_is_anim_val) { - return new SVGRectTearOff(target, binding, property_is_anim_val); + return MakeGarbageCollected(target, binding, + property_is_anim_val); } static SVGRectTearOff* CreateDetached(const FloatRect&); + SVGRectTearOff(SVGRect*, + SVGAnimatedPropertyBase* binding, + PropertyIsAnimValType); + void setX(float, ExceptionState&); void setY(float, ExceptionState&); void setWidth(float, ExceptionState&); @@ -55,11 +60,6 @@ class SVGRectTearOff : public SVGPropertyTearOff { float y() { return Target()->Y(); } float width() { return Target()->Width(); } float height() { return Target()->Height(); } - - private: - SVGRectTearOff(SVGRect*, - SVGAnimatedPropertyBase* binding, - PropertyIsAnimValType); }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_resource.cc b/chromium/third_party/blink/renderer/core/svg/svg_resource.cc index 7e633505609..bf7c8a10c7b 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_resource.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_resource.cc @@ -126,7 +126,7 @@ void ExternalSVGResource::Load(const Document& document) { if (resource_document_) return; ResourceLoaderOptions options; - options.initiator_info.name = FetchInitiatorTypeNames::css; + options.initiator_info.name = fetch_initiator_type_names::kCSS; FetchParameters params(ResourceRequest(url_), options); params.MutableResourceRequest().SetFetchRequestMode( network::mojom::FetchRequestMode::kSameOrigin); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_script_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_script_element.cc index 0d76d329616..d6b017bf1d4 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_script_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_script_element.cc @@ -35,21 +35,21 @@ namespace blink { inline SVGScriptElement::SVGScriptElement(Document& document, const CreateElementFlags flags) - : SVGElement(SVGNames::scriptTag, document), + : SVGElement(svg_names::kScriptTag, document), SVGURIReference(this), loader_(InitializeScriptLoader(flags.IsCreatedByParser(), flags.WasAlreadyStarted())) {} SVGScriptElement* SVGScriptElement::Create(Document& document, const CreateElementFlags flags) { - return new SVGScriptElement(document, flags); + return MakeGarbageCollected(document, flags); } void SVGScriptElement::ParseAttribute( const AttributeModificationParams& params) { - if (params.name == HTMLNames::onerrorAttr) { + if (params.name == html_names::kOnerrorAttr) { SetAttributeEventListener( - EventTypeNames::error, + event_type_names::kError, CreateAttributeEventListener( this, params.name, params.new_value, JSEventHandler::HandlerType::kOnErrorEventHandler)); @@ -109,7 +109,7 @@ String SVGScriptElement::SourceAttributeValue() const { } String SVGScriptElement::TypeAttributeValue() const { - return getAttribute(SVGNames::typeAttr).GetString(); + return getAttribute(svg_names::kTypeAttr).GetString(); } String SVGScriptElement::TextFromChildren() { @@ -156,12 +156,12 @@ Element* SVGScriptElement::CloneWithoutAttributesAndChildren( } void SVGScriptElement::DispatchLoadEvent() { - DispatchEvent(*Event::Create(EventTypeNames::load)); + DispatchEvent(*Event::Create(event_type_names::kLoad)); have_fired_load_ = true; } void SVGScriptElement::DispatchErrorEvent() { - DispatchEvent(*Event::Create(EventTypeNames::error)); + DispatchEvent(*Event::Create(event_type_names::kError)); } void SVGScriptElement::SetScriptElementForBinding( @@ -172,8 +172,8 @@ void SVGScriptElement::SetScriptElementForBinding( #if DCHECK_IS_ON() bool SVGScriptElement::IsAnimatableAttribute(const QualifiedName& name) const { - if (name == SVGNames::typeAttr || name == SVGNames::hrefAttr || - name == XLinkNames::hrefAttr) + if (name == svg_names::kTypeAttr || name == svg_names::kHrefAttr || + name == xlink_names::kHrefAttr) return false; return SVGElement::IsAnimatableAttribute(name); } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_script_element.h b/chromium/third_party/blink/renderer/core/svg/svg_script_element.h index 157afbae070..4525f28fb1c 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_script_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_script_element.h @@ -41,6 +41,8 @@ class SVGScriptElement final : public SVGElement, public: static SVGScriptElement* Create(Document&, const CreateElementFlags); + SVGScriptElement(Document&, const CreateElementFlags); + ScriptLoader* Loader() const final { return loader_.Get(); } #if DCHECK_IS_ON() @@ -52,8 +54,6 @@ class SVGScriptElement final : public SVGElement, void Trace(blink::Visitor*) override; private: - SVGScriptElement(Document&, const CreateElementFlags); - void ParseAttribute(const AttributeModificationParams&) override; InsertionNotificationRequest InsertedInto(ContainerNode&) override; void DidNotifySubtreeInsertionsToDocument() override; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_set_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_set_element.cc index 9d5836e485f..8d889dafe45 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_set_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_set_element.cc @@ -25,7 +25,7 @@ namespace blink { inline SVGSetElement::SVGSetElement(Document& document) - : SVGAnimateElement(SVGNames::setTag, document) { + : SVGAnimateElement(svg_names::kSetTag, document) { SetAnimationMode(kToAnimation); } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_static_string_list.h b/chromium/third_party/blink/renderer/core/svg/svg_static_string_list.h index 1b3867c58b4..cf134e39937 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_static_string_list.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_static_string_list.h @@ -51,10 +51,14 @@ class SVGStaticStringList final template static SVGStaticStringList* Create(SVGElement* context_element, const QualifiedName& attribute_name) { - return new SVGStaticStringList(context_element, attribute_name, - SVGStringList::Create()); + return MakeGarbageCollected( + context_element, attribute_name, + SVGStringList::Create()); } + SVGStaticStringList(SVGElement*, + const QualifiedName&, + SVGStringListBase* initial_value); ~SVGStaticStringList() override; // SVGAnimatedPropertyBase: @@ -73,10 +77,6 @@ class SVGStaticStringList final void Trace(blink::Visitor*) override; private: - SVGStaticStringList(SVGElement*, - const QualifiedName&, - SVGStringListBase* initial_value); - Member value_; Member tear_off_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_stop_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_stop_element.cc index 214b3359f0e..03ecf0e995d 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_stop_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_stop_element.cc @@ -26,9 +26,9 @@ namespace blink { inline SVGStopElement::SVGStopElement(Document& document) - : SVGElement(SVGNames::stopTag, document), + : SVGElement(svg_names::kStopTag, document), offset_(SVGAnimatedNumber::Create(this, - SVGNames::offsetAttr, + svg_names::kOffsetAttr, SVGNumberAcceptPercentage::Create())) { AddToPropertyMap(offset_); @@ -51,13 +51,13 @@ void InvalidateInstancesAndAncestorResources(SVGStopElement* stop_element) { Element* parent = stop_element->parentElement(); if (auto* gradient = ToSVGGradientElementOrNull(parent)) - gradient->InvalidateGradient(LayoutInvalidationReason::kChildChanged); + gradient->InvalidateGradient(layout_invalidation_reason::kChildChanged); } } // namespace void SVGStopElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::offsetAttr) { + if (attr_name == svg_names::kOffsetAttr) { InvalidateInstancesAndAncestorResources(this); return; } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_string.h b/chromium/third_party/blink/renderer/core/svg/svg_string.h index 143f7e0d461..2343bcc8a7c 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_string.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_string.h @@ -42,9 +42,14 @@ class SVGString final : public SVGPropertyBase { typedef void TearOffType; typedef String PrimitiveType; - static SVGString* Create() { return new SVGString(); } + static SVGString* Create() { return MakeGarbageCollected(); } - static SVGString* Create(const String& value) { return new SVGString(value); } + static SVGString* Create(const String& value) { + return MakeGarbageCollected(value); + } + + SVGString() = default; + explicit SVGString(const String& value) : value_(value) {} SVGString* Clone() const { return Create(value_); } SVGPropertyBase* CloneForAnimation(const String& value) const override { @@ -74,9 +79,6 @@ class SVGString final : public SVGPropertyBase { AnimatedPropertyType GetType() const override { return ClassType(); } private: - SVGString() = default; - explicit SVGString(const String& value) : value_(value) {} - String value_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_string_list_tear_off.h b/chromium/third_party/blink/renderer/core/svg/svg_string_list_tear_off.h index bf18847e41a..48d730e34bb 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_string_list_tear_off.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_string_list_tear_off.h @@ -44,9 +44,14 @@ class SVGStringListTearOff : public SVGPropertyTearOff { SVGStringListBase* target, SVGAnimatedPropertyBase* binding, PropertyIsAnimValType property_is_anim_val) { - return new SVGStringListTearOff(target, binding, property_is_anim_val); + return MakeGarbageCollected(target, binding, + property_is_anim_val); } + SVGStringListTearOff(SVGStringListBase*, + SVGAnimatedPropertyBase* binding, + PropertyIsAnimValType); + // SVGStringList DOM interface: // WebIDL requires "unsigned long" type which is uint32_t. @@ -125,11 +130,6 @@ class SVGStringListTearOff : public SVGPropertyTearOff { CommitChange(); return item; } - - protected: - SVGStringListTearOff(SVGStringListBase*, - SVGAnimatedPropertyBase* binding, - PropertyIsAnimValType); }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_style_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_style_element.cc index 6c25bb52ae3..25f587b66f9 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_style_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_style_element.cc @@ -26,20 +26,21 @@ #include "third_party/blink/renderer/core/css/css_style_sheet.h" #include "third_party/blink/renderer/core/dom/events/event.h" #include "third_party/blink/renderer/core/media_type_names.h" +#include "third_party/blink/renderer/platform/wtf/functional.h" #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" namespace blink { inline SVGStyleElement::SVGStyleElement(Document& document, const CreateElementFlags flags) - : SVGElement(SVGNames::styleTag, document), + : SVGElement(svg_names::kStyleTag, document), StyleElement(&document, flags.IsCreatedByParser()) {} SVGStyleElement::~SVGStyleElement() = default; SVGStyleElement* SVGStyleElement::Create(Document& document, const CreateElementFlags flags) { - return new SVGStyleElement(document, flags); + return MakeGarbageCollected(document, flags); } bool SVGStyleElement::disabled() const { @@ -56,34 +57,34 @@ void SVGStyleElement::setDisabled(bool set_disabled) { const AtomicString& SVGStyleElement::type() const { DEFINE_STATIC_LOCAL(const AtomicString, default_value, ("text/css")); - const AtomicString& n = getAttribute(SVGNames::typeAttr); + const AtomicString& n = getAttribute(svg_names::kTypeAttr); return n.IsNull() ? default_value : n; } void SVGStyleElement::setType(const AtomicString& type) { - setAttribute(SVGNames::typeAttr, type); + setAttribute(svg_names::kTypeAttr, type); } const AtomicString& SVGStyleElement::media() const { - const AtomicString& n = FastGetAttribute(SVGNames::mediaAttr); - return n.IsNull() ? MediaTypeNames::all : n; + const AtomicString& n = FastGetAttribute(svg_names::kMediaAttr); + return n.IsNull() ? media_type_names::kAll : n; } void SVGStyleElement::setMedia(const AtomicString& media) { - setAttribute(SVGNames::mediaAttr, media); + setAttribute(svg_names::kMediaAttr, media); } String SVGStyleElement::title() const { - return FastGetAttribute(SVGNames::titleAttr); + return FastGetAttribute(svg_names::kTitleAttr); } void SVGStyleElement::setTitle(const AtomicString& title) { - setAttribute(SVGNames::titleAttr, title); + setAttribute(svg_names::kTitleAttr, title); } void SVGStyleElement::ParseAttribute( const AttributeModificationParams& params) { - if (params.name == SVGNames::titleAttr) { + if (params.name == svg_names::kTitleAttr) { if (sheet_ && IsInDocumentTree()) sheet_->SetTitle(params.new_value); @@ -139,7 +140,7 @@ void SVGStyleElement::NotifyLoadedSheetAndAllCriticalSubresources( } void SVGStyleElement::DispatchPendingEvent() { - DispatchEvent(*Event::Create(EventTypeNames::error)); + DispatchEvent(*Event::Create(event_type_names::kError)); } void SVGStyleElement::Trace(blink::Visitor* visitor) { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_style_element.h b/chromium/third_party/blink/renderer/core/svg/svg_style_element.h index 763e0b14fe0..8fba25f8e55 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_style_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_style_element.h @@ -33,6 +33,8 @@ class SVGStyleElement final : public SVGElement, public StyleElement { public: static SVGStyleElement* Create(Document&, const CreateElementFlags); + + SVGStyleElement(Document&, const CreateElementFlags); ~SVGStyleElement() override; using StyleElement::sheet; @@ -54,8 +56,6 @@ class SVGStyleElement final : public SVGElement, public StyleElement { void Trace(blink::Visitor*) override; private: - SVGStyleElement(Document&, const CreateElementFlags); - void ParseAttribute(const AttributeModificationParams&) override; InsertionNotificationRequest InsertedInto(ContainerNode&) override; void RemovedFrom(ContainerNode&) override; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_svg_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_svg_element.cc index e80aac4a38a..ee1c8b05cd7 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_svg_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_svg_element.cc @@ -54,7 +54,7 @@ #include "third_party/blink/renderer/core/svg/svg_view_spec.h" #include "third_party/blink/renderer/core/svg_names.h" #include "third_party/blink/renderer/platform/geometry/float_rect.h" -#include "third_party/blink/renderer/platform/length_functions.h" +#include "third_party/blink/renderer/platform/geometry/length_functions.h" #include "third_party/blink/renderer/platform/transforms/affine_transform.h" #include "third_party/blink/renderer/platform/wtf/math_extras.h" #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" @@ -62,25 +62,25 @@ namespace blink { inline SVGSVGElement::SVGSVGElement(Document& doc) - : SVGGraphicsElement(SVGNames::svgTag, doc), + : SVGGraphicsElement(svg_names::kSVGTag, doc), SVGFitToViewBox(this), x_(SVGAnimatedLength::Create(this, - SVGNames::xAttr, + svg_names::kXAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero, CSSPropertyX)), y_(SVGAnimatedLength::Create(this, - SVGNames::yAttr, + svg_names::kYAttr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero, CSSPropertyY)), width_(SVGAnimatedLength::Create(this, - SVGNames::widthAttr, + svg_names::kWidthAttr, SVGLengthMode::kWidth, SVGLength::Initial::kPercent100, CSSPropertyWidth)), height_(SVGAnimatedLength::Create(this, - SVGNames::heightAttr, + svg_names::kHeightAttr, SVGLengthMode::kHeight, SVGLength::Initial::kPercent100, CSSPropertyHeight)), @@ -118,17 +118,16 @@ void SVGSVGElement::setCurrentScale(float scale) { class SVGCurrentTranslateTearOff : public SVGPointTearOff { public: static SVGCurrentTranslateTearOff* Create(SVGSVGElement* context_element) { - return new SVGCurrentTranslateTearOff(context_element); + return MakeGarbageCollected(context_element); } + SVGCurrentTranslateTearOff(SVGSVGElement* context_element) + : SVGPointTearOff(context_element->translation_, context_element) {} + void CommitChange() override { DCHECK(ContextElement()); ToSVGSVGElement(ContextElement())->UpdateUserTransform(); } - - private: - SVGCurrentTranslateTearOff(SVGSVGElement* context_element) - : SVGPointTearOff(context_element->translation_, context_element) {} }; SVGPointTearOff* SVGSVGElement::currentTranslateFromJavascript() { @@ -141,9 +140,10 @@ void SVGSVGElement::SetCurrentTranslate(const FloatPoint& point) { } void SVGSVGElement::UpdateUserTransform() { - if (LayoutObject* object = GetLayoutObject()) + if (LayoutObject* object = GetLayoutObject()) { object->SetNeedsLayoutAndFullPaintInvalidation( - LayoutInvalidationReason::kUnknown); + layout_invalidation_reason::kUnknown); + } } bool SVGSVGElement::ZoomAndPanEnabled() const { @@ -160,17 +160,17 @@ void SVGSVGElement::ParseAttribute(const AttributeModificationParams& params) { bool set_listener = true; // Only handle events if we're the outermost element - if (name == HTMLNames::onunloadAttr) { + if (name == html_names::kOnunloadAttr) { GetDocument().SetWindowAttributeEventListener( - EventTypeNames::unload, + event_type_names::kUnload, CreateAttributeEventListener(GetDocument().GetFrame(), name, value)); - } else if (name == HTMLNames::onresizeAttr) { + } else if (name == html_names::kOnresizeAttr) { GetDocument().SetWindowAttributeEventListener( - EventTypeNames::resize, + event_type_names::kResize, CreateAttributeEventListener(GetDocument().GetFrame(), name, value)); - } else if (name == HTMLNames::onscrollAttr) { + } else if (name == html_names::kOnscrollAttr) { GetDocument().SetWindowAttributeEventListener( - EventTypeNames::scroll, + event_type_names::kScroll, CreateAttributeEventListener(GetDocument().GetFrame(), name, value)); } else { set_listener = false; @@ -180,13 +180,13 @@ void SVGSVGElement::ParseAttribute(const AttributeModificationParams& params) { return; } - if (name == HTMLNames::onabortAttr) { + if (name == html_names::kOnabortAttr) { GetDocument().SetWindowAttributeEventListener( - EventTypeNames::abort, + event_type_names::kAbort, CreateAttributeEventListener(GetDocument().GetFrame(), name, value)); - } else if (name == HTMLNames::onerrorAttr) { + } else if (name == html_names::kOnerrorAttr) { GetDocument().SetWindowAttributeEventListener( - EventTypeNames::error, + event_type_names::kError, CreateAttributeEventListener( GetDocument().GetFrame(), name, value, JSEventHandler::HandlerType::kOnErrorEventHandler)); @@ -197,7 +197,7 @@ void SVGSVGElement::ParseAttribute(const AttributeModificationParams& params) { } bool SVGSVGElement::IsPresentationAttribute(const QualifiedName& name) const { - if ((name == SVGNames::widthAttr || name == SVGNames::heightAttr) && + if ((name == svg_names::kWidthAttr || name == svg_names::kHeightAttr) && !IsOutermostSVGSVGElement()) return false; return SVGGraphicsElement::IsPresentationAttribute(name); @@ -205,7 +205,7 @@ bool SVGSVGElement::IsPresentationAttribute(const QualifiedName& name) const { bool SVGSVGElement::IsPresentationAttributeWithSVGDOM( const QualifiedName& attr_name) const { - if (attr_name == SVGNames::widthAttr || attr_name == SVGNames::heightAttr) + if (attr_name == svg_names::kWidthAttr || attr_name == svg_names::kHeightAttr) return false; return SVGGraphicsElement::IsPresentationAttributeWithSVGDOM(attr_name); } @@ -239,9 +239,9 @@ void SVGSVGElement::CollectStyleForPresentationAttribute( void SVGSVGElement::SvgAttributeChanged(const QualifiedName& attr_name) { bool update_relative_lengths_or_view_box = false; bool width_or_height_changed = - attr_name == SVGNames::widthAttr || attr_name == SVGNames::heightAttr; - if (width_or_height_changed || attr_name == SVGNames::xAttr || - attr_name == SVGNames::yAttr) { + attr_name == svg_names::kWidthAttr || attr_name == svg_names::kHeightAttr; + if (width_or_height_changed || attr_name == svg_names::kXAttr || + attr_name == svg_names::kYAttr) { update_relative_lengths_or_view_box = true; UpdateRelativeLengthsInformation(); InvalidateRelativeLengthClients(); @@ -258,7 +258,7 @@ void SVGSVGElement::SvgAttributeChanged(const QualifiedName& attr_name) { InvalidateSVGPresentationAttributeStyle(); SetNeedsStyleRecalc(kLocalStyleChange, StyleChangeReasonForTracing::Create( - StyleChangeReason::kSVGContainerSizeChange)); + style_change_reason::kSVGContainerSizeChange)); if (layout_object) ToLayoutSVGRoot(layout_object)->IntrinsicSizingInfoChanged(); } @@ -275,7 +275,7 @@ void SVGSVGElement::SvgAttributeChanged(const QualifiedName& attr_name) { InvalidateRelativeLengthClients(); if (LayoutObject* object = GetLayoutObject()) { object->SetNeedsTransformUpdate(); - if (attr_name == SVGNames::viewBoxAttr && object->IsSVGRoot()) + if (attr_name == svg_names::kViewBoxAttr && object->IsSVGRoot()) ToLayoutSVGRoot(object)->IntrinsicSizingInfoChanged(); } } @@ -514,17 +514,15 @@ Node::InsertionNotificationRequest SVGSVGElement::InsertedInto( if (root_parent.GetDocument().IsXMLDocument()) UseCounter::Count(GetDocument(), WebFeature::kSVGSVGElementInXMLDocument); - if (RuntimeEnabledFeatures::SMILEnabled()) { - GetDocument().AccessSVGExtensions().AddTimeContainer(this); + GetDocument().AccessSVGExtensions().AddTimeContainer(this); - // Animations are started at the end of document parsing and after firing - // the load event, but if we miss that train (deferred programmatic - // element insertion for example) we need to initialize the time container - // here. - if (!GetDocument().Parsing() && GetDocument().LoadEventFinished() && - !TimeContainer()->IsStarted()) - TimeContainer()->Start(); - } + // Animations are started at the end of document parsing and after firing + // the load event, but if we miss that train (deferred programmatic + // element insertion for example) we need to initialize the time container + // here. + if (!GetDocument().Parsing() && GetDocument().LoadEventFinished() && + !TimeContainer()->IsStarted()) + TimeContainer()->Start(); } return SVGGraphicsElement::InsertedInto(root_parent); } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_svg_element.idl b/chromium/third_party/blink/renderer/core/svg/svg_svg_element.idl index 4cc98bb6e62..0643aed5a90 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_svg_element.idl +++ b/chromium/third_party/blink/renderer/core/svg/svg_svg_element.idl @@ -59,11 +59,11 @@ interface SVGSVGElement : SVGGraphicsElement { // SVG Animations // https://svgwg.org/specs/animations/#InterfaceSVGSVGElement - [MeasureAs=SVGSMILPausing, RuntimeEnabled=SMIL] void pauseAnimations(); - [MeasureAs=SVGSMILPausing, RuntimeEnabled=SMIL] void unpauseAnimations(); - [MeasureAs=SVGSMILPausing, RuntimeEnabled=SMIL] boolean animationsPaused(); - [MeasureAs=SVGSMILCurrentTime, RuntimeEnabled=SMIL] float getCurrentTime(); - [MeasureAs=SVGSMILCurrentTime, RuntimeEnabled=SMIL] void setCurrentTime(float seconds); + [MeasureAs=SVGSMILPausing] void pauseAnimations(); + [MeasureAs=SVGSMILPausing] void unpauseAnimations(); + [MeasureAs=SVGSMILPausing] boolean animationsPaused(); + [MeasureAs=SVGSMILCurrentTime] float getCurrentTime(); + [MeasureAs=SVGSMILCurrentTime] void setCurrentTime(float seconds); }; SVGSVGElement implements SVGFitToViewBox; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_switch_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_switch_element.cc index 4612379f922..7b516fcb941 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_switch_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_switch_element.cc @@ -27,7 +27,7 @@ namespace blink { inline SVGSwitchElement::SVGSwitchElement(Document& document) - : SVGGraphicsElement(SVGNames::switchTag, document) { + : SVGGraphicsElement(svg_names::kSwitchTag, document) { UseCounter::Count(document, WebFeature::kSVGSwitchElement); } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_symbol_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_symbol_element.cc index 3e6fd018caa..d13c35ebce5 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_symbol_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_symbol_element.cc @@ -26,7 +26,7 @@ namespace blink { inline SVGSymbolElement::SVGSymbolElement(Document& document) - : SVGElement(SVGNames::symbolTag, document), SVGFitToViewBox(this) {} + : SVGElement(svg_names::kSymbolTag, document), SVGFitToViewBox(this) {} void SVGSymbolElement::Trace(blink::Visitor* visitor) { SVGElement::Trace(visitor); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_tag_names.json5 b/chromium/third_party/blink/renderer/core/svg/svg_tag_names.json5 index 2591fb1930f..53fc167c31b 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_tag_names.json5 +++ b/chromium/third_party/blink/renderer/core/svg/svg_tag_names.json5 @@ -12,35 +12,21 @@ { name: "animate", noTypeHelpers: true, - runtimeEnabled: "SMIL", }, { name: "animateColor", JSInterfaceName: "SVGElement", interfaceName: "SVGUnknownElement", noConstructor: true, - runtimeEnabled: "SMIL", - }, - { - name: "animateMotion", - runtimeEnabled: "SMIL", - }, - { - name: "animateTransform", - runtimeEnabled: "SMIL", - }, - { - name: "set", - runtimeEnabled: "SMIL", }, + "animateMotion", + "animateTransform", + "set", "circle", "clipPath", "defs", "desc", - { - name: "discard", - runtimeEnabled: "SMIL", - }, + "discard", "ellipse", "feBlend", "feColorMatrix", @@ -79,7 +65,6 @@ { name: "mpath", interfaceName: "SVGMPathElement", - runtimeEnabled: "SMIL", }, "path", "pattern", diff --git a/chromium/third_party/blink/renderer/core/svg/svg_tests.cc b/chromium/third_party/blink/renderer/core/svg/svg_tests.cc index ca20e9174d6..dbbc2e9e5e7 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_tests.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_tests.cc @@ -32,10 +32,10 @@ namespace blink { SVGTests::SVGTests(SVGElement* context_element) : required_extensions_( SVGStaticStringList::Create<' '>(context_element, - SVGNames::requiredExtensionsAttr)), + svg_names::kRequiredExtensionsAttr)), system_language_( SVGStaticStringList::Create<','>(context_element, - SVGNames::systemLanguageAttr)) { + svg_names::kSystemLanguageAttr)) { DCHECK(context_element); context_element->AddToPropertyMap(required_extensions_); @@ -98,8 +98,8 @@ bool SVGTests::IsValid() const { } bool SVGTests::IsKnownAttribute(const QualifiedName& attr_name) { - return attr_name == SVGNames::requiredExtensionsAttr || - attr_name == SVGNames::systemLanguageAttr; + return attr_name == svg_names::kRequiredExtensionsAttr || + attr_name == svg_names::kSystemLanguageAttr; } } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_text_content_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_text_content_element.cc index 99abac1b520..307267cab67 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_text_content_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_text_content_element.cc @@ -20,13 +20,14 @@ #include "third_party/blink/renderer/core/svg/svg_text_content_element.h" -#include "third_party/blink/renderer/core/css_property_names.h" +#include "third_party/blink/renderer/core/css/css_property_names.h" #include "third_party/blink/renderer/core/css_value_keywords.h" #include "third_party/blink/renderer/core/editing/frame_selection.h" #include "third_party/blink/renderer/core/frame/local_frame.h" #include "third_party/blink/renderer/core/frame/use_counter.h" #include "third_party/blink/renderer/core/layout/api/line_layout_item.h" #include "third_party/blink/renderer/core/layout/svg/svg_text_query.h" +#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h" #include "third_party/blink/renderer/core/svg/svg_point_tear_off.h" #include "third_party/blink/renderer/core/svg/svg_rect_tear_off.h" #include "third_party/blink/renderer/core/svg_names.h" @@ -37,14 +38,12 @@ namespace blink { template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries() { - DEFINE_STATIC_LOCAL(SVGEnumerationStringEntries, entries, ()); - if (entries.IsEmpty()) { - entries.push_back(std::make_pair(kSVGLengthAdjustSpacing, "spacing")); - entries.push_back( - std::make_pair(kSVGLengthAdjustSpacingAndGlyphs, "spacingAndGlyphs")); - } +const SVGEnumerationMap& GetEnumerationMap() { + static const SVGEnumerationMap::Entry enum_items[] = { + {kSVGLengthAdjustSpacing, "spacing"}, + {kSVGLengthAdjustSpacingAndGlyphs, "spacingAndGlyphs"}, + }; + static const SVGEnumerationMap entries(enum_items); return entries; } @@ -54,9 +53,15 @@ GetStaticStringEntries() { class SVGAnimatedTextLength final : public SVGAnimatedLength { public: static SVGAnimatedTextLength* Create(SVGTextContentElement* context_element) { - return new SVGAnimatedTextLength(context_element); + return MakeGarbageCollected(context_element); } + SVGAnimatedTextLength(SVGTextContentElement* context_element) + : SVGAnimatedLength(context_element, + svg_names::kTextLengthAttr, + SVGLengthMode::kWidth, + SVGLength::Initial::kUnitlessZero) {} + SVGLengthTearOff* baseVal() override { SVGTextContentElement* text_content_element = ToSVGTextContentElement(ContextElement()); @@ -67,13 +72,6 @@ class SVGAnimatedTextLength final : public SVGAnimatedLength { return SVGAnimatedLength::baseVal(); } - - private: - SVGAnimatedTextLength(SVGTextContentElement* context_element) - : SVGAnimatedLength(context_element, - SVGNames::textLengthAttr, - SVGLengthMode::kWidth, - SVGLength::Initial::kUnitlessZero) {} }; SVGTextContentElement::SVGTextContentElement(const QualifiedName& tag_name, @@ -83,7 +81,7 @@ SVGTextContentElement::SVGTextContentElement(const QualifiedName& tag_name, text_length_is_specified_by_user_(false), length_adjust_(SVGAnimatedEnumeration::Create( this, - SVGNames::lengthAdjustAttr, + svg_names::kLengthAdjustAttr, kSVGLengthAdjustSpacing)) { AddToPropertyMap(text_length_); AddToPropertyMap(length_adjust_); @@ -224,7 +222,7 @@ void SVGTextContentElement::selectSubString(unsigned charnum, bool SVGTextContentElement::IsPresentationAttribute( const QualifiedName& name) const { - if (name.Matches(XMLNames::spaceAttr)) + if (name.Matches(xml_names::kSpaceAttr)) return true; return SVGGraphicsElement::IsPresentationAttribute(name); } @@ -233,7 +231,7 @@ void SVGTextContentElement::CollectStyleForPresentationAttribute( const QualifiedName& name, const AtomicString& value, MutableCSSPropertyValueSet* style) { - if (name.Matches(XMLNames::spaceAttr)) { + if (name.Matches(xml_names::kSpaceAttr)) { DEFINE_STATIC_LOCAL(const AtomicString, preserve_string, ("preserve")); if (value == preserve_string) { @@ -254,12 +252,12 @@ void SVGTextContentElement::CollectStyleForPresentationAttribute( void SVGTextContentElement::SvgAttributeChanged( const QualifiedName& attr_name) { - if (attr_name == SVGNames::textLengthAttr) + if (attr_name == svg_names::kTextLengthAttr) text_length_is_specified_by_user_ = true; - if (attr_name == SVGNames::textLengthAttr || - attr_name == SVGNames::lengthAdjustAttr || - attr_name == XMLNames::spaceAttr) { + if (attr_name == svg_names::kTextLengthAttr || + attr_name == svg_names::kLengthAdjustAttr || + attr_name == xml_names::kSpaceAttr) { SVGElement::InvalidationGuard invalidation_guard(this); if (LayoutObject* layout_object = GetLayoutObject()) diff --git a/chromium/third_party/blink/renderer/core/svg/svg_text_content_element.h b/chromium/third_party/blink/renderer/core/svg/svg_text_content_element.h index 6aeb290ea6e..e6b76611395 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_text_content_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_text_content_element.h @@ -37,9 +37,7 @@ enum SVGLengthAdjustType { kSVGLengthAdjustSpacing, kSVGLengthAdjustSpacingAndGlyphs }; -template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries(); +DECLARE_SVG_ENUM_MAP(SVGLengthAdjustType); class CORE_EXPORT SVGTextContentElement : public SVGGraphicsElement { DEFINE_WRAPPERTYPEINFO(); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_text_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_text_element.cc index 49862d01f09..2a034fd29bf 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_text_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_text_element.cc @@ -25,7 +25,7 @@ namespace blink { inline SVGTextElement::SVGTextElement(Document& doc) - : SVGTextPositioningElement(SVGNames::textTag, doc) {} + : SVGTextPositioningElement(svg_names::kTextTag, doc) {} DEFINE_NODE_FACTORY(SVGTextElement) diff --git a/chromium/third_party/blink/renderer/core/svg/svg_text_path_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_text_path_element.cc index e0c5228c442..63f9cb629ef 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_text_path_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_text_path_element.cc @@ -22,46 +22,44 @@ #include "third_party/blink/renderer/core/dom/id_target_observer.h" #include "third_party/blink/renderer/core/layout/svg/layout_svg_text_path.h" +#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h" namespace blink { template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries() { - DEFINE_STATIC_LOCAL(SVGEnumerationStringEntries, entries, ()); - if (entries.IsEmpty()) { - entries.push_back(std::make_pair(kSVGTextPathMethodAlign, "align")); - entries.push_back(std::make_pair(kSVGTextPathMethodStretch, "stretch")); - } +const SVGEnumerationMap& GetEnumerationMap() { + static const SVGEnumerationMap::Entry enum_items[] = { + {kSVGTextPathMethodAlign, "align"}, + {kSVGTextPathMethodStretch, "stretch"}, + }; + static const SVGEnumerationMap entries(enum_items); return entries; } template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries() { - DEFINE_STATIC_LOCAL(SVGEnumerationStringEntries, entries, ()); - if (entries.IsEmpty()) { - entries.push_back(std::make_pair(kSVGTextPathSpacingAuto, "auto")); - entries.push_back(std::make_pair(kSVGTextPathSpacingExact, "exact")); - } +const SVGEnumerationMap& GetEnumerationMap() { + static const SVGEnumerationMap::Entry enum_items[] = { + {kSVGTextPathSpacingAuto, "auto"}, {kSVGTextPathSpacingExact, "exact"}, + }; + static const SVGEnumerationMap entries(enum_items); return entries; } inline SVGTextPathElement::SVGTextPathElement(Document& document) - : SVGTextContentElement(SVGNames::textPathTag, document), + : SVGTextContentElement(svg_names::kTextPathTag, document), SVGURIReference(this), start_offset_( SVGAnimatedLength::Create(this, - SVGNames::startOffsetAttr, + svg_names::kStartOffsetAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero)), method_(SVGAnimatedEnumeration::Create( this, - SVGNames::methodAttr, + svg_names::kMethodAttr, kSVGTextPathMethodAlign)), spacing_(SVGAnimatedEnumeration::Create( this, - SVGNames::spacingAttr, + svg_names::kSpacingAttr, kSVGTextPathSpacingExact)) { AddToPropertyMap(start_offset_); AddToPropertyMap(method_); @@ -93,11 +91,12 @@ void SVGTextPathElement::SvgAttributeChanged(const QualifiedName& attr_name) { return; } - if (attr_name == SVGNames::startOffsetAttr) + if (attr_name == svg_names::kStartOffsetAttr) UpdateRelativeLengthsInformation(); - if (attr_name == SVGNames::startOffsetAttr || - attr_name == SVGNames::methodAttr || attr_name == SVGNames::spacingAttr) { + if (attr_name == svg_names::kStartOffsetAttr || + attr_name == svg_names::kMethodAttr || + attr_name == svg_names::kSpacingAttr) { SVGElement::InvalidationGuard invalidation_guard(this); if (LayoutObject* object = GetLayoutObject()) MarkForLayoutAndParentResourceInvalidation(*object); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_text_path_element.h b/chromium/third_party/blink/renderer/core/svg/svg_text_path_element.h index a1816bc891e..48a53d9510a 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_text_path_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_text_path_element.h @@ -31,19 +31,14 @@ enum SVGTextPathMethodType { kSVGTextPathMethodAlign, kSVGTextPathMethodStretch }; +DECLARE_SVG_ENUM_MAP(SVGTextPathMethodType); enum SVGTextPathSpacingType { kSVGTextPathSpacingUnknown = 0, kSVGTextPathSpacingAuto, kSVGTextPathSpacingExact }; - -template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries(); -template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries(); +DECLARE_SVG_ENUM_MAP(SVGTextPathSpacingType); class SVGTextPathElement final : public SVGTextContentElement, public SVGURIReference { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_text_positioning_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_text_positioning_element.cc index d529137a169..1d41c7a261c 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_text_positioning_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_text_positioning_element.cc @@ -33,21 +33,21 @@ SVGTextPositioningElement::SVGTextPositioningElement( : SVGTextContentElement(tag_name, document), x_(SVGAnimatedLengthList::Create( this, - SVGNames::xAttr, + svg_names::kXAttr, SVGLengthList::Create(SVGLengthMode::kWidth))), y_(SVGAnimatedLengthList::Create( this, - SVGNames::yAttr, + svg_names::kYAttr, SVGLengthList::Create(SVGLengthMode::kHeight))), dx_(SVGAnimatedLengthList::Create( this, - SVGNames::dxAttr, + svg_names::kDxAttr, SVGLengthList::Create(SVGLengthMode::kWidth))), dy_(SVGAnimatedLengthList::Create( this, - SVGNames::dyAttr, + svg_names::kDyAttr, SVGLengthList::Create(SVGLengthMode::kHeight))), - rotate_(SVGAnimatedNumberList::Create(this, SVGNames::rotateAttr)) { + rotate_(SVGAnimatedNumberList::Create(this, svg_names::kRotateAttr)) { AddToPropertyMap(x_); AddToPropertyMap(y_); AddToPropertyMap(dx_); @@ -67,13 +67,13 @@ void SVGTextPositioningElement::Trace(blink::Visitor* visitor) { void SVGTextPositioningElement::SvgAttributeChanged( const QualifiedName& attr_name) { bool update_relative_lengths = - attr_name == SVGNames::xAttr || attr_name == SVGNames::yAttr || - attr_name == SVGNames::dxAttr || attr_name == SVGNames::dyAttr; + attr_name == svg_names::kXAttr || attr_name == svg_names::kYAttr || + attr_name == svg_names::kDxAttr || attr_name == svg_names::kDyAttr; if (update_relative_lengths) UpdateRelativeLengthsInformation(); - if (update_relative_lengths || attr_name == SVGNames::rotateAttr) { + if (update_relative_lengths || attr_name == svg_names::kRotateAttr) { SVGElement::InvalidationGuard invalidation_guard(this); LayoutObject* layout_object = GetLayoutObject(); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_title_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_title_element.cc index c98d0599bfc..8609f51dace 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_title_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_title_element.cc @@ -29,7 +29,7 @@ namespace blink { inline SVGTitleElement::SVGTitleElement(Document& document) - : SVGElement(SVGNames::titleTag, document), + : SVGElement(svg_names::kTitleTag, document), ignore_title_updates_when_children_change_(false) {} DEFINE_NODE_FACTORY(SVGTitleElement) diff --git a/chromium/third_party/blink/renderer/core/svg/svg_transform.cc b/chromium/third_party/blink/renderer/core/svg/svg_transform.cc index 8a5841959f2..0c8ca92dc36 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_transform.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_transform.cc @@ -51,7 +51,8 @@ SVGTransform::SVGTransform(SVGTransformType transform_type, SVGTransform::~SVGTransform() = default; SVGTransform* SVGTransform::Clone() const { - return new SVGTransform(transform_type_, angle_, center_, matrix_); + return MakeGarbageCollected(transform_type_, angle_, center_, + matrix_); } SVGPropertyBase* SVGTransform::CloneForAnimation(const String&) const { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_transform.h b/chromium/third_party/blink/renderer/core/svg/svg_transform.h index a304c587747..b356a94a8b6 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_transform.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_transform.h @@ -50,18 +50,25 @@ class SVGTransform final : public SVGPropertyBase { kConstructZeroTransform }; - static SVGTransform* Create() { return new SVGTransform(); } + static SVGTransform* Create() { return MakeGarbageCollected(); } static SVGTransform* Create( SVGTransformType type, ConstructionMode mode = kConstructIdentityTransform) { - return new SVGTransform(type, mode); + return MakeGarbageCollected(type, mode); } static SVGTransform* Create(const AffineTransform& affine_transform) { - return new SVGTransform(affine_transform); + return MakeGarbageCollected(affine_transform); } + SVGTransform(); + SVGTransform(SVGTransformType, ConstructionMode); + explicit SVGTransform(const AffineTransform&); + SVGTransform(SVGTransformType, + float, + const FloatPoint&, + const AffineTransform&); ~SVGTransform() override; SVGTransform* Clone() const; @@ -106,14 +113,6 @@ class SVGTransform final : public SVGPropertyBase { AnimatedPropertyType GetType() const override { return ClassType(); } private: - SVGTransform(); - SVGTransform(SVGTransformType, ConstructionMode); - explicit SVGTransform(const AffineTransform&); - SVGTransform(SVGTransformType, - float, - const FloatPoint&, - const AffineTransform&); - SVGTransformType transform_type_; float angle_; FloatPoint center_; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_transform_list.h b/chromium/third_party/blink/renderer/core/svg/svg_transform_list.h index bad9ad5a722..561f8546d0e 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_transform_list.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_transform_list.h @@ -44,10 +44,13 @@ class SVGTransformList final public: typedef SVGTransformListTearOff TearOffType; - static SVGTransformList* Create() { return new SVGTransformList(); } + static SVGTransformList* Create() { + return MakeGarbageCollected(); + } static SVGTransformList* Create(SVGTransformType, const String&); + SVGTransformList(); ~SVGTransformList() override; SVGTransform* Consolidate(); @@ -77,8 +80,6 @@ class SVGTransformList final const CSSValue* CssValue() const; private: - SVGTransformList(); - template SVGParsingError ParseInternal(const CharType*& ptr, const CharType* end); }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_transform_list_tear_off.h b/chromium/third_party/blink/renderer/core/svg/svg_transform_list_tear_off.h index 4819715f240..70fcd0a606f 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_transform_list_tear_off.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_transform_list_tear_off.h @@ -49,18 +49,17 @@ class SVGTransformListTearOff final SVGTransformList* target, SVGAnimatedPropertyBase* binding, PropertyIsAnimValType property_is_anim_val) { - return new SVGTransformListTearOff(target, binding, property_is_anim_val); + return MakeGarbageCollected(target, binding, + property_is_anim_val); } + SVGTransformListTearOff(SVGTransformList*, + SVGAnimatedPropertyBase* binding, + PropertyIsAnimValType); ~SVGTransformListTearOff() override; SVGTransformTearOff* createSVGTransformFromMatrix(SVGMatrixTearOff*) const; SVGTransformTearOff* consolidate(ExceptionState&); - - private: - SVGTransformListTearOff(SVGTransformList*, - SVGAnimatedPropertyBase* binding, - PropertyIsAnimValType); }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_transform_tear_off.h b/chromium/third_party/blink/renderer/core/svg/svg_transform_tear_off.h index c9901d9a6ad..2a2c695cc23 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_transform_tear_off.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_transform_tear_off.h @@ -56,11 +56,15 @@ class SVGTransformTearOff final : public SVGPropertyTearOff { SVGTransform* target, SVGAnimatedPropertyBase* binding, PropertyIsAnimValType property_is_anim_val) { - return new SVGTransformTearOff(target, binding, property_is_anim_val); + return MakeGarbageCollected(target, binding, + property_is_anim_val); } static SVGTransformTearOff* CreateDetached(); static SVGTransformTearOff* Create(SVGMatrixTearOff*); + SVGTransformTearOff(SVGTransform*, + SVGAnimatedPropertyBase* binding, + PropertyIsAnimValType); ~SVGTransformTearOff() override; unsigned short transformType() { return Target()->TransformType(); } @@ -77,10 +81,6 @@ class SVGTransformTearOff final : public SVGPropertyTearOff { void Trace(blink::Visitor*) override; private: - SVGTransformTearOff(SVGTransform*, - SVGAnimatedPropertyBase* binding, - PropertyIsAnimValType); - Member matrix_tearoff_; }; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_tree_scope_resources.cc b/chromium/third_party/blink/renderer/core/svg/svg_tree_scope_resources.cc index 4fbdf635b12..f4f4d4b74d5 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_tree_scope_resources.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_tree_scope_resources.cc @@ -21,7 +21,7 @@ LocalSVGResource* SVGTreeScopeResources::ResourceForId(const AtomicString& id) { return nullptr; auto& entry = resources_.insert(id, nullptr).stored_value->value; if (!entry) - entry = new LocalSVGResource(*tree_scope_, id); + entry = MakeGarbageCollected(*tree_scope_, id); return entry; } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_tspan_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_tspan_element.cc index 1bc48d8d606..7b6047f2ba6 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_tspan_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_tspan_element.cc @@ -26,7 +26,7 @@ namespace blink { inline SVGTSpanElement::SVGTSpanElement(Document& document) - : SVGTextPositioningElement(SVGNames::tspanTag, document) {} + : SVGTextPositioningElement(svg_names::kTSpanTag, document) {} DEFINE_NODE_FACTORY(SVGTSpanElement) diff --git a/chromium/third_party/blink/renderer/core/svg/svg_unit_types.cc b/chromium/third_party/blink/renderer/core/svg/svg_unit_types.cc index 93f88967d0a..fa37657628d 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_unit_types.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_unit_types.cc @@ -30,18 +30,17 @@ #include "third_party/blink/renderer/core/svg/svg_unit_types.h" +#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h" + namespace blink { template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries() { - DEFINE_STATIC_LOCAL(SVGEnumerationStringEntries, entries, ()); - if (entries.IsEmpty()) { - entries.push_back(std::make_pair(SVGUnitTypes::kSvgUnitTypeUserspaceonuse, - "userSpaceOnUse")); - entries.push_back(std::make_pair( - SVGUnitTypes::kSvgUnitTypeObjectboundingbox, "objectBoundingBox")); - } +const SVGEnumerationMap& GetEnumerationMap() { + static const SVGEnumerationMap::Entry enum_items[] = { + {SVGUnitTypes::kSvgUnitTypeUserspaceonuse, "userSpaceOnUse"}, + {SVGUnitTypes::kSvgUnitTypeObjectboundingbox, "objectBoundingBox"}, + }; + static const SVGEnumerationMap entries(enum_items); return entries; } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_unit_types.h b/chromium/third_party/blink/renderer/core/svg/svg_unit_types.h index 7abf0ef0c15..c15bba841fa 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_unit_types.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_unit_types.h @@ -40,9 +40,7 @@ class SVGUnitTypes final : public ScriptWrappable { SVGUnitTypes() = delete; // No instantiation. }; -template <> -const SVGEnumerationStringEntries& -GetStaticStringEntries(); +DECLARE_SVG_ENUM_MAP(SVGUnitTypes::SVGUnitType); } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/svg/svg_uri_reference.cc b/chromium/third_party/blink/renderer/core/svg/svg_uri_reference.cc index e7a380160f8..bce67926c47 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_uri_reference.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_uri_reference.cc @@ -61,9 +61,9 @@ bool SVGURIReference::IsKnownAttribute(const QualifiedName& attr_name) { const AtomicString& SVGURIReference::LegacyHrefString( const SVGElement& element) { - if (element.hasAttribute(SVGNames::hrefAttr)) - return element.getAttribute(SVGNames::hrefAttr); - return element.getAttribute(XLinkNames::hrefAttr); + if (element.hasAttribute(svg_names::kHrefAttr)) + return element.getAttribute(svg_names::kHrefAttr); + return element.getAttribute(xlink_names::kHrefAttr); } KURL SVGURIReference::LegacyHrefURL(const Document& document) const { diff --git a/chromium/third_party/blink/renderer/core/svg/svg_use_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_use_element.cc index 8d2a8427c2c..93c756faa29 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_use_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_use_element.cc @@ -49,24 +49,24 @@ namespace blink { inline SVGUseElement::SVGUseElement(Document& document) - : SVGGraphicsElement(SVGNames::useTag, document), + : SVGGraphicsElement(svg_names::kUseTag, document), SVGURIReference(this), x_(SVGAnimatedLength::Create(this, - SVGNames::xAttr, + svg_names::kXAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero, CSSPropertyX)), y_(SVGAnimatedLength::Create(this, - SVGNames::yAttr, + svg_names::kYAttr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero, CSSPropertyY)), width_(SVGAnimatedLength::Create(this, - SVGNames::widthAttr, + svg_names::kWidthAttr, SVGLengthMode::kWidth, SVGLength::Initial::kUnitlessZero)), height_(SVGAnimatedLength::Create(this, - SVGNames::heightAttr, + svg_names::kHeightAttr, SVGLengthMode::kHeight, SVGLength::Initial::kUnitlessZero)), element_url_is_local_(true), @@ -82,7 +82,7 @@ inline SVGUseElement::SVGUseElement(Document& document) SVGUseElement* SVGUseElement::Create(Document& document) { // Always build a user agent #shadow-root for SVGUseElement. - SVGUseElement* use = new SVGUseElement(document); + SVGUseElement* use = MakeGarbageCollected(document); use->AttachShadowRootInternal(ShadowRootType::kClosed); return use; } @@ -150,12 +150,12 @@ static void TransferUseWidthAndHeightIfNeeded( // width and/or height are not specified, the generated 'svg' element // will use values of 100% for these attributes. shadow_element.setAttribute( - SVGNames::widthAttr, + svg_names::kWidthAttr, use.width()->IsSpecified() ? AtomicString(use.width()->CurrentValue()->ValueAsString()) : hundred_percent_string); shadow_element.setAttribute( - SVGNames::heightAttr, + svg_names::kHeightAttr, use.height()->IsSpecified() ? AtomicString(use.height()->CurrentValue()->ValueAsString()) : hundred_percent_string); @@ -164,15 +164,15 @@ static void TransferUseWidthAndHeightIfNeeded( // provided on the 'use' element, then these values will override the // corresponding attributes on the 'svg' in the generated tree. shadow_element.setAttribute( - SVGNames::widthAttr, + svg_names::kWidthAttr, use.width()->IsSpecified() ? AtomicString(use.width()->CurrentValue()->ValueAsString()) - : original_element.getAttribute(SVGNames::widthAttr)); + : original_element.getAttribute(svg_names::kWidthAttr)); shadow_element.setAttribute( - SVGNames::heightAttr, + svg_names::kHeightAttr, use.height()->IsSpecified() ? AtomicString(use.height()->CurrentValue()->ValueAsString()) - : original_element.getAttribute(SVGNames::heightAttr)); + : original_element.getAttribute(svg_names::kHeightAttr)); } } @@ -220,11 +220,12 @@ void SVGUseElement::UpdateTargetReference() { } void SVGUseElement::SvgAttributeChanged(const QualifiedName& attr_name) { - if (attr_name == SVGNames::xAttr || attr_name == SVGNames::yAttr || - attr_name == SVGNames::widthAttr || attr_name == SVGNames::heightAttr) { + if (attr_name == svg_names::kXAttr || attr_name == svg_names::kYAttr || + attr_name == svg_names::kWidthAttr || + attr_name == svg_names::kHeightAttr) { SVGElement::InvalidationGuard invalidation_guard(this); - if (attr_name == SVGNames::xAttr || attr_name == SVGNames::yAttr) { + if (attr_name == svg_names::kXAttr || attr_name == svg_names::kYAttr) { InvalidateSVGPresentationAttributeStyle(); SetNeedsStyleRecalc( kLocalStyleChange, @@ -264,17 +265,19 @@ static bool IsDisallowedElement(const Element& element) { if (!element.IsSVGElement()) return true; - DEFINE_STATIC_LOCAL( - HashSet, allowed_element_tags, - ({ - SVGNames::aTag, SVGNames::circleTag, SVGNames::descTag, - SVGNames::ellipseTag, SVGNames::gTag, SVGNames::imageTag, - SVGNames::lineTag, SVGNames::metadataTag, SVGNames::pathTag, - SVGNames::polygonTag, SVGNames::polylineTag, SVGNames::rectTag, - SVGNames::svgTag, SVGNames::switchTag, SVGNames::symbolTag, - SVGNames::textTag, SVGNames::textPathTag, SVGNames::titleTag, - SVGNames::tspanTag, SVGNames::useTag, - })); + DEFINE_STATIC_LOCAL(HashSet, allowed_element_tags, + ({ + svg_names::kATag, svg_names::kCircleTag, + svg_names::kDescTag, svg_names::kEllipseTag, + svg_names::kGTag, svg_names::kImageTag, + svg_names::kLineTag, svg_names::kMetadataTag, + svg_names::kPathTag, svg_names::kPolygonTag, + svg_names::kPolylineTag, svg_names::kRectTag, + svg_names::kSVGTag, svg_names::kSwitchTag, + svg_names::kSymbolTag, svg_names::kTextTag, + svg_names::kTextPathTag, svg_names::kTitleTag, + svg_names::kTSpanTag, svg_names::kUseTag, + })); return !allowed_element_tags.Contains( element.TagQName()); } @@ -577,12 +580,12 @@ bool SVGUseElement::HasCycleUseReferencing(const ContainerNode& target_instance, // xlink:href are transferred to the generated 'g' element. static void RemoveAttributesFromReplacementElement( SVGElement& replacement_element) { - replacement_element.removeAttribute(SVGNames::xAttr); - replacement_element.removeAttribute(SVGNames::yAttr); - replacement_element.removeAttribute(SVGNames::widthAttr); - replacement_element.removeAttribute(SVGNames::heightAttr); - replacement_element.removeAttribute(SVGNames::hrefAttr); - replacement_element.removeAttribute(XLinkNames::hrefAttr); + replacement_element.removeAttribute(svg_names::kXAttr); + replacement_element.removeAttribute(svg_names::kYAttr); + replacement_element.removeAttribute(svg_names::kWidthAttr); + replacement_element.removeAttribute(svg_names::kHeightAttr); + replacement_element.removeAttribute(svg_names::kHrefAttr); + replacement_element.removeAttribute(xlink_names::kHrefAttr); } void SVGUseElement::ExpandUseElementsInShadowTree() { @@ -686,7 +689,7 @@ FloatRect SVGUseElement::GetBBox() { void SVGUseElement::DispatchPendingEvent() { DCHECK(IsStructurallyExternal()); DCHECK(have_fired_load_event_); - DispatchEvent(*Event::Create(EventTypeNames::load)); + DispatchEvent(*Event::Create(event_type_names::kLoad)); } void SVGUseElement::NotifyFinished(Resource* resource) { @@ -696,7 +699,7 @@ void SVGUseElement::NotifyFinished(Resource* resource) { InvalidateShadowTree(); if (!ResourceIsValid()) { - DispatchEvent(*Event::Create(EventTypeNames::error)); + DispatchEvent(*Event::Create(event_type_names::kError)); } else if (!resource->WasCanceled()) { if (have_fired_load_event_) return; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_use_element.h b/chromium/third_party/blink/renderer/core/svg/svg_use_element.h index 5e853d81ea8..d7dc58afceb 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_use_element.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_use_element.h @@ -40,6 +40,8 @@ class SVGUseElement final : public SVGGraphicsElement, public: static SVGUseElement* Create(Document&); + + explicit SVGUseElement(Document&); ~SVGUseElement() override; void InvalidateShadowTree(); @@ -62,8 +64,6 @@ class SVGUseElement final : public SVGGraphicsElement, void Trace(blink::Visitor*) override; private: - explicit SVGUseElement(Document&); - void Dispose(); FloatRect GetBBox() override; diff --git a/chromium/third_party/blink/renderer/core/svg/svg_view_element.cc b/chromium/third_party/blink/renderer/core/svg/svg_view_element.cc index 0b75e9ad2ab..3406b2b94fe 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_view_element.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_view_element.cc @@ -26,7 +26,7 @@ namespace blink { inline SVGViewElement::SVGViewElement(Document& document) - : SVGElement(SVGNames::viewTag, document), SVGFitToViewBox(this) { + : SVGElement(svg_names::kViewTag, document), SVGFitToViewBox(this) { UseCounter::Count(document, WebFeature::kSVGViewElement); } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_view_spec.cc b/chromium/third_party/blink/renderer/core/svg/svg_view_spec.cc index 3fff52025ff..7e255936c37 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_view_spec.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_view_spec.cc @@ -37,21 +37,21 @@ void SVGViewSpec::Trace(Visitor* visitor) { } SVGViewSpec* SVGViewSpec::CreateFromFragment(const String& fragment) { - SVGViewSpec* view_spec = new SVGViewSpec(); + SVGViewSpec* view_spec = MakeGarbageCollected(); if (!view_spec->ParseViewSpec(fragment)) return nullptr; return view_spec; } SVGViewSpec* SVGViewSpec::CreateForViewElement(const SVGViewElement& view) { - SVGViewSpec* view_spec = new SVGViewSpec(); + SVGViewSpec* view_spec = MakeGarbageCollected(); if (view.HasValidViewBox()) view_spec->view_box_ = view.viewBox()->CurrentValue()->Clone(); if (view.preserveAspectRatio()->IsSpecified()) { view_spec->preserve_aspect_ratio_ = view.preserveAspectRatio()->CurrentValue()->Clone(); } - if (view.hasAttribute(SVGNames::zoomAndPanAttr)) + if (view.hasAttribute(svg_names::kZoomAndPanAttr)) view_spec->zoom_and_pan_ = view.zoomAndPan(); return view_spec; } diff --git a/chromium/third_party/blink/renderer/core/svg/svg_view_spec.h b/chromium/third_party/blink/renderer/core/svg/svg_view_spec.h index ff9fa2a4b77..6b8dee6edc7 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_view_spec.h +++ b/chromium/third_party/blink/renderer/core/svg/svg_view_spec.h @@ -35,6 +35,8 @@ class SVGViewSpec final : public GarbageCollectedFinalized { static SVGViewSpec* CreateFromFragment(const String&); static SVGViewSpec* CreateForViewElement(const SVGViewElement&); + SVGViewSpec(); + const SVGRect* ViewBox() const { return view_box_; } const SVGPreserveAspectRatio* PreserveAspectRatio() const { return preserve_aspect_ratio_; @@ -45,8 +47,6 @@ class SVGViewSpec final : public GarbageCollectedFinalized { void Trace(Visitor*); private: - SVGViewSpec(); - bool ParseViewSpec(const String&); template bool ParseViewSpecInternal(const CharType* ptr, const CharType* end); diff --git a/chromium/third_party/blink/renderer/core/svg/svg_zoom_and_pan.cc b/chromium/third_party/blink/renderer/core/svg/svg_zoom_and_pan.cc index 5ae806fc7ea..967dff1231f 100644 --- a/chromium/third_party/blink/renderer/core/svg/svg_zoom_and_pan.cc +++ b/chromium/third_party/blink/renderer/core/svg/svg_zoom_and_pan.cc @@ -28,12 +28,12 @@ namespace blink { SVGZoomAndPan::SVGZoomAndPan() : zoom_and_pan_(kSVGZoomAndPanMagnify) {} bool SVGZoomAndPan::IsKnownAttribute(const QualifiedName& attr_name) { - return attr_name == SVGNames::zoomAndPanAttr; + return attr_name == svg_names::kZoomAndPanAttr; } bool SVGZoomAndPan::ParseAttribute(const QualifiedName& name, const AtomicString& value) { - if (name != SVGNames::zoomAndPanAttr) + if (name != svg_names::kZoomAndPanAttr) return false; zoom_and_pan_ = kSVGZoomAndPanUnknown; if (!value.IsEmpty()) { diff --git a/chromium/third_party/blink/renderer/core/svg/unsafe_svg_attribute_sanitization_test.cc b/chromium/third_party/blink/renderer/core/svg/unsafe_svg_attribute_sanitization_test.cc index 9f003f031bc..f046a182192 100644 --- a/chromium/third_party/blink/renderer/core/svg/unsafe_svg_attribute_sanitization_test.cc +++ b/chromium/third_party/blink/renderer/core/svg/unsafe_svg_attribute_sanitization_test.cc @@ -59,7 +59,7 @@ String ContentAfterPastingHTML(DummyPageHolder* page_holder, HTMLElement* body = page_holder->GetDocument().body(); // Make the body editable, and put the caret in it. - body->setAttribute(HTMLNames::contenteditableAttr, "true"); + body->setAttribute(html_names::kContenteditableAttr, "true"); body->focus(); frame.GetDocument()->UpdateStyleAndLayout(); frame.Selection().SetSelectionAndEndTyping( @@ -277,14 +277,14 @@ TEST(UnsafeSVGAttributeSanitizationTest, stringsShouldNotSupportAddition) { SVGElement* target = SVGAElement::Create(*document); SVGAnimateElement* element = SVGAnimateElement::Create(*document); element->SetTargetElement(target); - element->SetAttributeName(XLinkNames::hrefAttr); + element->SetAttributeName(xlink_names::kHrefAttr); // Sanity check that xlink:href was identified as a "string" attribute EXPECT_EQ(kAnimatedString, element->GetAnimatedPropertyType()); EXPECT_FALSE(element->AnimatedPropertyTypeSupportsAddition()); - element->SetAttributeName(SVGNames::hrefAttr); + element->SetAttributeName(svg_names::kHrefAttr); // Sanity check that href was identified as a "string" attribute EXPECT_EQ(kAnimatedString, element->GetAnimatedPropertyType()); @@ -295,10 +295,10 @@ TEST(UnsafeSVGAttributeSanitizationTest, stringsShouldNotSupportAddition) { TEST(UnsafeSVGAttributeSanitizationTest, stripScriptingAttributes_animateElement) { Vector attributes; - attributes.push_back(Attribute(XLinkNames::hrefAttr, "javascript:alert()")); - attributes.push_back(Attribute(SVGNames::hrefAttr, "javascript:alert()")); - attributes.push_back(Attribute(SVGNames::fromAttr, "/home")); - attributes.push_back(Attribute(SVGNames::toAttr, "javascript:own3d()")); + attributes.push_back(Attribute(xlink_names::kHrefAttr, "javascript:alert()")); + attributes.push_back(Attribute(svg_names::kHrefAttr, "javascript:alert()")); + attributes.push_back(Attribute(svg_names::kFromAttr, "/home")); + attributes.push_back(Attribute(svg_names::kToAttr, "javascript:own3d()")); Document* document = Document::CreateForTest(); Element* element = SVGAnimateElement::Create(*document); @@ -306,20 +306,20 @@ TEST(UnsafeSVGAttributeSanitizationTest, EXPECT_EQ(3ul, attributes.size()) << "One of the attributes should have been stripped."; - EXPECT_EQ(XLinkNames::hrefAttr, attributes[0].GetName()) + EXPECT_EQ(xlink_names::kHrefAttr, attributes[0].GetName()) << "The 'xlink:href' attribute should not have been stripped from " " because it is not a URL attribute of ."; - EXPECT_EQ(SVGNames::hrefAttr, attributes[1].GetName()) + EXPECT_EQ(svg_names::kHrefAttr, attributes[1].GetName()) << "The 'href' attribute should not have been stripped from " " because it is not a URL attribute of ."; - EXPECT_EQ(SVGNames::fromAttr, attributes[2].GetName()) + EXPECT_EQ(svg_names::kFromAttr, attributes[2].GetName()) << "The 'from' attribute should not have been strippef from " "because its value is innocuous."; } TEST(UnsafeSVGAttributeSanitizationTest, isJavaScriptURLAttribute_hrefContainingJavascriptURL) { - Attribute attribute(SVGNames::hrefAttr, "javascript:alert()"); + Attribute attribute(svg_names::kHrefAttr, "javascript:alert()"); Document* document = Document::CreateForTest(); Element* element = SVGAElement::Create(*document); EXPECT_TRUE(element->IsJavaScriptURLAttribute(attribute)) @@ -329,7 +329,7 @@ TEST(UnsafeSVGAttributeSanitizationTest, TEST(UnsafeSVGAttributeSanitizationTest, isJavaScriptURLAttribute_xlinkHrefContainingJavascriptURL) { - Attribute attribute(XLinkNames::hrefAttr, "javascript:alert()"); + Attribute attribute(xlink_names::kHrefAttr, "javascript:alert()"); Document* document = Document::CreateForTest(); Element* element = SVGAElement::Create(*document); EXPECT_TRUE(element->IsJavaScriptURLAttribute(attribute)) @@ -341,7 +341,7 @@ TEST( UnsafeSVGAttributeSanitizationTest, isJavaScriptURLAttribute_xlinkHrefContainingJavascriptURL_alternatePrefix) { QualifiedName href_alternate_prefix("foo", "href", - XLinkNames::xlinkNamespaceURI); + xlink_names::kNamespaceURI); Attribute evil_attribute(href_alternate_prefix, "javascript:alert()"); Document* document = Document::CreateForTest(); Element* element = SVGAElement::Create(*document); @@ -353,7 +353,7 @@ TEST( TEST(UnsafeSVGAttributeSanitizationTest, isSVGAnimationAttributeSettingJavaScriptURL_fromContainingJavaScriptURL) { - Attribute evil_attribute(SVGNames::fromAttr, "javascript:alert()"); + Attribute evil_attribute(svg_names::kFromAttr, "javascript:alert()"); Document* document = Document::CreateForTest(); Element* element = SVGAnimateElement::Create(*document); EXPECT_TRUE( @@ -364,7 +364,7 @@ TEST(UnsafeSVGAttributeSanitizationTest, TEST(UnsafeSVGAttributeSanitizationTest, isSVGAnimationAttributeSettingJavaScriptURL_toContainingJavaScripURL) { - Attribute evil_attribute(SVGNames::toAttr, "javascript:window.close()"); + Attribute evil_attribute(svg_names::kToAttr, "javascript:window.close()"); Document* document = Document::CreateForTest(); Element* element = SVGSetElement::Create(*document); EXPECT_TRUE( @@ -376,7 +376,7 @@ TEST(UnsafeSVGAttributeSanitizationTest, TEST( UnsafeSVGAttributeSanitizationTest, isSVGAnimationAttributeSettingJavaScriptURL_valuesContainingJavaScriptURL) { - Attribute evil_attribute(SVGNames::valuesAttr, "hi!; javascript:confirm()"); + Attribute evil_attribute(svg_names::kValuesAttr, "hi!; javascript:confirm()"); Document* document = Document::CreateForTest(); Element* element = SVGAnimateElement::Create(*document); element = SVGAnimateElement::Create(*document); @@ -388,7 +388,7 @@ TEST( TEST(UnsafeSVGAttributeSanitizationTest, isSVGAnimationAttributeSettingJavaScriptURL_innocuousAnimationAttribute) { - Attribute fine_attribute(SVGNames::fromAttr, "hello, world!"); + Attribute fine_attribute(svg_names::kFromAttr, "hello, world!"); Document* document = Document::CreateForTest(); Element* element = SVGSetElement::Create(*document); EXPECT_FALSE( -- cgit v1.2.1