WorkerEnvironmentSettingsObject.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. * Copyright (c) 2022, Ben Abraham <ben.d.abraham@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/URL.h>
  8. #include <LibWeb/Bindings/DedicatedWorkerExposedInterfaces.h>
  9. #include <LibWeb/DOM/Document.h>
  10. #include <LibWeb/Forward.h>
  11. namespace Web::HTML {
  12. class WorkerEnvironmentSettingsObject final
  13. : public EnvironmentSettingsObject {
  14. JS_CELL(WindowEnvironmentSettingsObject, EnvironmentSettingsObject);
  15. public:
  16. WorkerEnvironmentSettingsObject(NonnullOwnPtr<JS::ExecutionContext> execution_context)
  17. : EnvironmentSettingsObject(move(execution_context))
  18. {
  19. }
  20. static JS::NonnullGCPtr<WorkerEnvironmentSettingsObject> setup(NonnullOwnPtr<JS::ExecutionContext> execution_context /* FIXME: null or an environment reservedEnvironment, a URL topLevelCreationURL, and an origin topLevelOrigin */)
  21. {
  22. auto realm = execution_context->realm;
  23. VERIFY(realm);
  24. auto settings_object = realm->heap().allocate<WorkerEnvironmentSettingsObject>(*realm, move(execution_context));
  25. settings_object->target_browsing_context = nullptr;
  26. auto intrinsics = realm->heap().allocate<Bindings::Intrinsics>(*realm, *realm);
  27. auto host_defined = make<Bindings::HostDefined>(settings_object, intrinsics);
  28. realm->set_host_defined(move(host_defined));
  29. // FIXME: Shared workers should use the shared worker method
  30. Bindings::add_dedicated_worker_exposed_interfaces(realm->global_object());
  31. return settings_object;
  32. }
  33. virtual ~WorkerEnvironmentSettingsObject() override = default;
  34. JS::GCPtr<DOM::Document> responsible_document() override { return nullptr; }
  35. DeprecatedString api_url_character_encoding() override { return m_api_url_character_encoding; }
  36. AK::URL api_base_url() override { return m_url; }
  37. Origin origin() override { return m_origin; }
  38. PolicyContainer policy_container() override { return m_policy_container; }
  39. CanUseCrossOriginIsolatedAPIs cross_origin_isolated_capability() override { TODO(); }
  40. private:
  41. DeprecatedString m_api_url_character_encoding;
  42. AK::URL m_url;
  43. HTML::Origin m_origin;
  44. HTML::PolicyContainer m_policy_container;
  45. };
  46. }