mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 08:27:46 +00:00
LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr
This commit is contained in:
parent
1df3652e27
commit
7c0c1c8f49
214 changed files with 825 additions and 827 deletions
|
@ -519,7 +519,7 @@ WebIDL::ExceptionOr<void> fetch_response_handover(JS::Realm& realm, Infrastructu
|
|||
// timingInfo’s server-timing headers to the result of getting, decoding, and splitting `Server-Timing` from
|
||||
// response’s header list.
|
||||
// The user agent may decide to expose `Server-Timing` headers to non-secure contexts requests as well.
|
||||
auto* client = fetch_params.request()->client();
|
||||
auto client = fetch_params.request()->client();
|
||||
if (!response.is_network_error() && client != nullptr && HTML::is_secure_context(*client)) {
|
||||
auto server_timing_headers = TRY_OR_THROW_OOM(vm, response.header_list()->get_decode_and_split("Server-Timing"sv.bytes()));
|
||||
if (server_timing_headers.has_value())
|
||||
|
@ -588,7 +588,7 @@ WebIDL::ExceptionOr<void> fetch_response_handover(JS::Realm& realm, Infrastructu
|
|||
// 3. If fetchParams’s request’s initiator type is non-null and fetchParams’s request’s client’s global
|
||||
// object is fetchParams’s task destination, then run fetchParams’s controller’s report timing steps
|
||||
// given fetchParams’s request’s client’s global object.
|
||||
auto* client = fetch_params.request()->client();
|
||||
auto client = fetch_params.request()->client();
|
||||
auto const* task_destination_global_object = fetch_params.task_destination().get_pointer<JS::NonnullGCPtr<JS::Object>>();
|
||||
if (client != nullptr && task_destination_global_object != nullptr) {
|
||||
if (fetch_params.request()->initiator_type().has_value() && &client->global_object() == task_destination_global_object->ptr())
|
||||
|
@ -1459,7 +1459,7 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<PendingResponse>> http_network_or_cache_fet
|
|||
if (response->status() == 401
|
||||
&& http_request->response_tainting() != Infrastructure::Request::ResponseTainting::CORS
|
||||
&& include_credentials == IncludeCredentials::Yes
|
||||
&& request->window().has<HTML::EnvironmentSettingsObject*>()) {
|
||||
&& request->window().has<JS::GCPtr<HTML::EnvironmentSettingsObject>>()) {
|
||||
// 1. Needs testing: multiple `WWW-Authenticate` headers, missing, parsing issues.
|
||||
// (Red box in the spec, no-op)
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ JS::ThrowCompletionOr<void> HeadersIterator::initialize(JS::Realm& realm)
|
|||
void HeadersIterator::visit_edges(JS::Cell::Visitor& visitor)
|
||||
{
|
||||
Base::visit_edges(visitor);
|
||||
visitor.visit(&m_headers);
|
||||
visitor.visit(m_headers);
|
||||
}
|
||||
|
||||
// https://webidl.spec.whatwg.org/#es-iterable, Step 2
|
||||
|
@ -56,7 +56,7 @@ JS::ThrowCompletionOr<JS::Object*> HeadersIterator::next()
|
|||
{
|
||||
// The value pairs to iterate over are the return value of running sort and combine with this’s header list.
|
||||
auto value_pairs_to_iterate_over = [&]() -> JS::ThrowCompletionOr<Vector<Fetch::Infrastructure::Header>> {
|
||||
auto headers_or_error = m_headers.m_header_list->sort_and_combine();
|
||||
auto headers_or_error = m_headers->m_header_list->sort_and_combine();
|
||||
if (headers_or_error.is_error())
|
||||
return vm().throw_completion<JS::InternalError>(JS::ErrorType::NotEnoughMemoryToAllocate);
|
||||
return headers_or_error.release_value();
|
||||
|
|
|
@ -28,7 +28,7 @@ private:
|
|||
|
||||
HeadersIterator(Headers const&, JS::Object::PropertyKind iteration_kind);
|
||||
|
||||
Headers const& m_headers;
|
||||
JS::NonnullGCPtr<Headers const> m_headers;
|
||||
JS::Object::PropertyKind m_iteration_kind;
|
||||
size_t m_index { 0 };
|
||||
};
|
||||
|
|
|
@ -157,8 +157,8 @@ public:
|
|||
using OriginType = Variant<Origin, HTML::Origin>;
|
||||
using PolicyContainerType = Variant<PolicyContainer, HTML::PolicyContainer>;
|
||||
using ReferrerType = Variant<Referrer, AK::URL>;
|
||||
using ReservedClientType = Variant<Empty, HTML::Environment*, HTML::EnvironmentSettingsObject*>;
|
||||
using WindowType = Variant<Window, HTML::EnvironmentSettingsObject*>;
|
||||
using ReservedClientType = Variant<Empty, JS::GCPtr<HTML::Environment>, JS::GCPtr<HTML::EnvironmentSettingsObject>>;
|
||||
using WindowType = Variant<Window, JS::GCPtr<HTML::EnvironmentSettingsObject>>;
|
||||
|
||||
[[nodiscard]] static JS::NonnullGCPtr<Request> create(JS::VM&);
|
||||
|
||||
|
@ -178,8 +178,8 @@ public:
|
|||
[[nodiscard]] BodyType& body() { return m_body; }
|
||||
void set_body(BodyType body) { m_body = move(body); }
|
||||
|
||||
[[nodiscard]] HTML::EnvironmentSettingsObject const* client() const { return m_client; }
|
||||
[[nodiscard]] HTML::EnvironmentSettingsObject* client() { return m_client; }
|
||||
[[nodiscard]] JS::GCPtr<HTML::EnvironmentSettingsObject const> client() const { return m_client; }
|
||||
[[nodiscard]] JS::GCPtr<HTML::EnvironmentSettingsObject> client() { return m_client; }
|
||||
void set_client(HTML::EnvironmentSettingsObject* client) { m_client = client; }
|
||||
|
||||
[[nodiscard]] ReservedClientType const& reserved_client() const { return m_reserved_client; }
|
||||
|
@ -343,7 +343,7 @@ private:
|
|||
|
||||
// https://fetch.spec.whatwg.org/#concept-request-client
|
||||
// A request has an associated client (null or an environment settings object).
|
||||
HTML::EnvironmentSettingsObject* m_client { nullptr };
|
||||
JS::GCPtr<HTML::EnvironmentSettingsObject> m_client;
|
||||
|
||||
// https://fetch.spec.whatwg.org/#concept-request-reserved-client
|
||||
// A request has an associated reserved client (null, an environment, or an environment settings object). Unless
|
||||
|
|
|
@ -157,8 +157,8 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<Request>> Request::construct_impl(JS::Realm
|
|||
auto window = Infrastructure::Request::WindowType { Infrastructure::Request::Window::Client };
|
||||
|
||||
// 9. If request’s window is an environment settings object and its origin is same origin with origin, then set window to request’s window.
|
||||
if (input_request->window().has<HTML::EnvironmentSettingsObject*>()) {
|
||||
auto* eso = input_request->window().get<HTML::EnvironmentSettingsObject*>();
|
||||
if (input_request->window().has<JS::GCPtr<HTML::EnvironmentSettingsObject>>()) {
|
||||
auto eso = input_request->window().get<JS::GCPtr<HTML::EnvironmentSettingsObject>>();
|
||||
if (eso->origin().is_same_origin(origin))
|
||||
window = input_request->window();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue