HTMLLinkElement.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /*
  2. * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  3. * Copyright (c) 2021, the SerenityOS developers.
  4. * Copyright (c) 2021, Sam Atkins <atkinssj@serenityos.org>
  5. *
  6. * SPDX-License-Identifier: BSD-2-Clause
  7. */
  8. #pragma once
  9. #include <LibWeb/DOM/DocumentLoadEventDelayer.h>
  10. #include <LibWeb/HTML/HTMLElement.h>
  11. namespace Web::HTML {
  12. class HTMLLinkElement final
  13. : public HTMLElement
  14. , public ResourceClient {
  15. public:
  16. using WrapperType = Bindings::HTMLLinkElementWrapper;
  17. HTMLLinkElement(DOM::Document&, DOM::QualifiedName);
  18. virtual ~HTMLLinkElement() override;
  19. virtual void inserted() override;
  20. String rel() const { return attribute(HTML::AttributeNames::rel); }
  21. String type() const { return attribute(HTML::AttributeNames::type); }
  22. String href() const { return attribute(HTML::AttributeNames::href); }
  23. private:
  24. void parse_attribute(const FlyString&, const String&) override;
  25. // ^ResourceClient
  26. virtual void resource_did_fail() override;
  27. virtual void resource_did_load() override;
  28. struct Relationship {
  29. enum {
  30. Alternate = 1 << 0,
  31. Stylesheet = 1 << 1,
  32. Preload = 1 << 2,
  33. DNSPrefetch = 1 << 3,
  34. Preconnect = 1 << 4,
  35. };
  36. };
  37. RefPtr<Resource> m_preload_resource;
  38. Optional<DOM::DocumentLoadEventDelayer> m_document_load_event_delayer;
  39. unsigned m_relationship { 0 };
  40. };
  41. }