LibWeb/CSS: Make StringStyleValue hold a FlyString

We already have a FlyString of its value from parsing, and most users
also want a FlyString from it, so let's use that instead of converting
backwards and forwards.

The two users that did want a String are:
- Quotes, which make sense as FlyString instead, so I've converted that.
- Animation names, which should probably be FlyString too, but the code
  currently also allows for other kinds of StyleValue, and I don't want
  to dive into this right now to figure out if that's needed or not.
This commit is contained in:
Sam Atkins
2024-07-17 12:42:12 +01:00
committed by Tim Ledbetter
parent d2f04b9f04
commit 9fb44cb057
Notes: sideshowbarker 2024-07-18 02:44:48 +09:00
5 changed files with 15 additions and 14 deletions

View File

@@ -1,37 +1,37 @@
/*
* Copyright (c) 2022-2023, Sam Atkins <atkinssj@serenityos.org>
* Copyright (c) 2022-2024, Sam Atkins <atkinssj@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/String.h>
#include <AK/FlyString.h>
#include <LibWeb/CSS/StyleValue.h>
namespace Web::CSS {
class StringStyleValue : public StyleValueWithDefaultOperators<StringStyleValue> {
public:
static ValueComparingNonnullRefPtr<StringStyleValue> create(String const& string)
static ValueComparingNonnullRefPtr<StringStyleValue> create(FlyString const& string)
{
return adopt_ref(*new (nothrow) StringStyleValue(string));
}
virtual ~StringStyleValue() override = default;
String string_value() const { return m_string; }
FlyString string_value() const { return m_string; }
String to_string() const override { return serialize_a_string(m_string); }
bool properties_equal(StringStyleValue const& other) const { return m_string == other.m_string; }
private:
explicit StringStyleValue(String const& string)
explicit StringStyleValue(FlyString const& string)
: StyleValueWithDefaultOperators(Type::String)
, m_string(string)
{
}
String m_string;
FlyString m_string;
};
}