mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-10 13:00:29 +03:00
189d1e8291
This removes a performance problem where we'd convert the style sheet's default namespace from DeprecatedFlyString to FlyString once per rule during selector matching. The conversion now happens once, during CSS parse. It should eventually be removed from there as well, but one step at a time. :^)
39 lines
1.1 KiB
C++
39 lines
1.1 KiB
C++
/*
|
|
* Copyright (c) 2023, Jonah Shafran <jonahshafran@gmail.com>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <LibWeb/CSS/CSSRule.h>
|
|
|
|
namespace Web::CSS {
|
|
|
|
class CSSNamespaceRule final : public CSSRule {
|
|
WEB_PLATFORM_OBJECT(CSSNamespaceRule, CSSRule);
|
|
JS_DECLARE_ALLOCATOR(CSSNamespaceRule);
|
|
|
|
public:
|
|
[[nodiscard]] static JS::NonnullGCPtr<CSSNamespaceRule> create(JS::Realm&, Optional<FlyString> prefix, FlyString namespace_uri);
|
|
|
|
virtual ~CSSNamespaceRule() = default;
|
|
|
|
void set_namespace_uri(FlyString value) { m_namespace_uri = move(value); }
|
|
FlyString const& namespace_uri() const { return m_namespace_uri; }
|
|
void set_prefix(FlyString value) { m_prefix = move(value); }
|
|
FlyString const& prefix() const { return m_prefix; }
|
|
virtual Type type() const override { return Type::Namespace; }
|
|
|
|
private:
|
|
CSSNamespaceRule(JS::Realm&, Optional<FlyString> prefix, FlyString namespace_uri);
|
|
|
|
virtual void initialize(JS::Realm&) override;
|
|
|
|
virtual String serialized() const override;
|
|
FlyString m_namespace_uri;
|
|
FlyString m_prefix;
|
|
};
|
|
|
|
}
|