FetchAlgorithms.cpp 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. * Copyright (c) 2022, Linus Groh <linusg@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibJS/Heap/Heap.h>
  7. #include <LibJS/Runtime/VM.h>
  8. #include <LibWeb/Fetch/Infrastructure/FetchAlgorithms.h>
  9. namespace Web::Fetch::Infrastructure {
  10. JS_DEFINE_ALLOCATOR(FetchAlgorithms);
  11. JS::NonnullGCPtr<FetchAlgorithms> FetchAlgorithms::create(JS::VM& vm, Input input)
  12. {
  13. auto process_request_body_chunk_length = JS::create_heap_function(vm.heap(), move(input.process_request_body_chunk_length));
  14. auto process_request_end_of_body = JS::create_heap_function(vm.heap(), move(input.process_request_end_of_body));
  15. auto process_early_hints_response = JS::create_heap_function(vm.heap(), move(input.process_early_hints_response));
  16. auto process_response = JS::create_heap_function(vm.heap(), move(input.process_response));
  17. auto process_response_end_of_body = JS::create_heap_function(vm.heap(), move(input.process_response_end_of_body));
  18. auto process_response_consume_body = JS::create_heap_function(vm.heap(), move(input.process_response_consume_body));
  19. return vm.heap().allocate_without_realm<FetchAlgorithms>(
  20. process_request_body_chunk_length,
  21. process_request_end_of_body,
  22. process_early_hints_response,
  23. process_response,
  24. process_response_end_of_body,
  25. process_response_consume_body);
  26. }
  27. FetchAlgorithms::FetchAlgorithms(
  28. ProcessRequestBodyChunkLengthHeapFunction process_request_body_chunk_length,
  29. ProcessRequestEndOfBodyHeapFunction process_request_end_of_body,
  30. ProcessEarlyHintsResponseHeapFunction process_early_hints_response,
  31. ProcessResponseHeapFunction process_response,
  32. ProcessResponseEndOfBodyHeapFunction process_response_end_of_body,
  33. ProcessResponseConsumeBodyHeapFunction process_response_consume_body)
  34. : m_process_request_body_chunk_length(process_request_body_chunk_length)
  35. , m_process_request_end_of_body(process_request_end_of_body)
  36. , m_process_early_hints_response(process_early_hints_response)
  37. , m_process_response(process_response)
  38. , m_process_response_end_of_body(process_response_end_of_body)
  39. , m_process_response_consume_body(process_response_consume_body)
  40. {
  41. }
  42. void FetchAlgorithms::visit_edges(JS::Cell::Visitor& visitor)
  43. {
  44. Base::visit_edges(visitor);
  45. visitor.visit(m_process_request_body_chunk_length);
  46. visitor.visit(m_process_request_end_of_body);
  47. visitor.visit(m_process_early_hints_response);
  48. visitor.visit(m_process_response);
  49. visitor.visit(m_process_response_end_of_body);
  50. visitor.visit(m_process_response_consume_body);
  51. }
  52. }