1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 07:08:10 +00:00

LibWeb: Implement <meta http-equiv="Refresh">

Required by Atlassian to continue to their authorization process.
Also used by the SerenityOS FAQ redirect on the website, the Bootstrap
documentation for going to older versions from the dropdown and
likely several other sites.
This commit is contained in:
Luke Wilde 2023-07-28 02:20:57 +01:00 committed by Andreas Kling
parent 0e8a0a8191
commit 34c702e6e8
4 changed files with 242 additions and 0 deletions

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2020, the SerenityOS developers.
* Copyright (c) 2023, Luke Wilde <lukew@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@ -10,16 +11,37 @@
namespace Web::HTML {
// https://html.spec.whatwg.org/multipage/semantics.html#pragma-directives
#define ENUMERATE_HTML_META_HTTP_EQUIV_ATTRIBUTES \
__ENUMERATE_HTML_META_HTTP_EQUIV_ATTRIBUTE("content-language", ContentLanguage) \
__ENUMERATE_HTML_META_HTTP_EQUIV_ATTRIBUTE("content-type", EncodingDeclaration) \
__ENUMERATE_HTML_META_HTTP_EQUIV_ATTRIBUTE("default-style", DefaultStyle) \
__ENUMERATE_HTML_META_HTTP_EQUIV_ATTRIBUTE(refresh, Refresh) \
__ENUMERATE_HTML_META_HTTP_EQUIV_ATTRIBUTE("set-cookie", SetCookie) \
__ENUMERATE_HTML_META_HTTP_EQUIV_ATTRIBUTE("x-ua-compatible", XUACompatible) \
__ENUMERATE_HTML_META_HTTP_EQUIV_ATTRIBUTE("content-security-policy", ContentSecurityPolicy)
class HTMLMetaElement final : public HTMLElement {
WEB_PLATFORM_OBJECT(HTMLMetaElement, HTMLElement);
public:
virtual ~HTMLMetaElement() override;
enum class HttpEquivAttributeState {
#define __ENUMERATE_HTML_META_HTTP_EQUIV_ATTRIBUTE(_, state) state,
ENUMERATE_HTML_META_HTTP_EQUIV_ATTRIBUTES
#undef __ENUMERATE_HTML_META_HTTP_EQUIV_ATTRIBUTE
};
Optional<HttpEquivAttributeState> http_equiv_state() const;
private:
HTMLMetaElement(DOM::Document&, DOM::QualifiedName);
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
// ^DOM::Element
virtual void inserted() override;
};
}