CSSRuleWrapperFactory.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /*
  2. * Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <AK/TypeCasts.h>
  7. #include <LibWeb/Bindings/CSSFontFaceRuleWrapper.h>
  8. #include <LibWeb/Bindings/CSSImportRuleWrapper.h>
  9. #include <LibWeb/Bindings/CSSMediaRuleWrapper.h>
  10. #include <LibWeb/Bindings/CSSRuleWrapper.h>
  11. #include <LibWeb/Bindings/CSSRuleWrapperFactory.h>
  12. #include <LibWeb/Bindings/CSSStyleRuleWrapper.h>
  13. #include <LibWeb/Bindings/CSSSupportsRuleWrapper.h>
  14. #include <LibWeb/CSS/CSSFontFaceRule.h>
  15. #include <LibWeb/CSS/CSSImportRule.h>
  16. #include <LibWeb/CSS/CSSMediaRule.h>
  17. #include <LibWeb/CSS/CSSStyleRule.h>
  18. #include <LibWeb/CSS/CSSSupportsRule.h>
  19. namespace Web::Bindings {
  20. CSSRuleWrapper* wrap(JS::Realm& realm, CSS::CSSRule& rule)
  21. {
  22. if (rule.wrapper())
  23. return static_cast<CSSRuleWrapper*>(rule.wrapper());
  24. if (is<CSS::CSSStyleRule>(rule))
  25. return static_cast<CSSRuleWrapper*>(wrap_impl(realm, verify_cast<CSS::CSSStyleRule>(rule)));
  26. if (is<CSS::CSSImportRule>(rule))
  27. return static_cast<CSSRuleWrapper*>(wrap_impl(realm, verify_cast<CSS::CSSImportRule>(rule)));
  28. if (is<CSS::CSSMediaRule>(rule))
  29. return static_cast<CSSRuleWrapper*>(wrap_impl(realm, verify_cast<CSS::CSSMediaRule>(rule)));
  30. if (is<CSS::CSSFontFaceRule>(rule))
  31. return static_cast<CSSRuleWrapper*>(wrap_impl(realm, verify_cast<CSS::CSSFontFaceRule>(rule)));
  32. if (is<CSS::CSSSupportsRule>(rule))
  33. return static_cast<CSSRuleWrapper*>(wrap_impl(realm, verify_cast<CSS::CSSSupportsRule>(rule)));
  34. return static_cast<CSSRuleWrapper*>(wrap_impl(realm, rule));
  35. }
  36. }