FileFilter.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * Copyright (c) 2024, Tim Flynn <trflynn89@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibIPC/Decoder.h>
  7. #include <LibIPC/Encoder.h>
  8. #include <LibWeb/HTML/FileFilter.h>
  9. namespace Web::HTML {
  10. void FileFilter::add_filter(FilterType filter)
  11. {
  12. if (!filters.contains_slow(filter))
  13. filters.append(move(filter));
  14. }
  15. }
  16. template<>
  17. ErrorOr<void> IPC::encode(Encoder& encoder, Web::HTML::FileFilter::MimeType const& mime_type)
  18. {
  19. TRY(encoder.encode(mime_type.value));
  20. return {};
  21. }
  22. template<>
  23. ErrorOr<Web::HTML::FileFilter::MimeType> IPC::decode(Decoder& decoder)
  24. {
  25. auto value = TRY(decoder.decode<String>());
  26. return Web::HTML::FileFilter::MimeType { move(value) };
  27. }
  28. template<>
  29. ErrorOr<void> IPC::encode(Encoder& encoder, Web::HTML::FileFilter::Extension const& extension)
  30. {
  31. TRY(encoder.encode(extension.value));
  32. return {};
  33. }
  34. template<>
  35. ErrorOr<Web::HTML::FileFilter::Extension> IPC::decode(Decoder& decoder)
  36. {
  37. auto value = TRY(decoder.decode<String>());
  38. return Web::HTML::FileFilter::Extension { move(value) };
  39. }
  40. template<>
  41. ErrorOr<void> IPC::encode(Encoder& encoder, Web::HTML::FileFilter const& filter)
  42. {
  43. TRY(encoder.encode(filter.filters));
  44. return {};
  45. }
  46. template<>
  47. ErrorOr<Web::HTML::FileFilter> IPC::decode(Decoder& decoder)
  48. {
  49. auto filters = TRY(decoder.decode<Vector<Web::HTML::FileFilter::FilterType>>());
  50. return Web::HTML::FileFilter { move(filters) };
  51. }