|
@@ -12,8 +12,16 @@
|
|
|
namespace Web::HTML {
|
|
|
|
|
|
// https://html.spec.whatwg.org/multipage/origin.html#coop-check-access-report
|
|
|
-void check_if_access_between_two_browsing_contexts_should_be_reported(BrowsingContext const& accessor, BrowsingContext const& accessed, JS::PropertyKey const& property_key, EnvironmentSettingsObject const& environment)
|
|
|
+void check_if_access_between_two_browsing_contexts_should_be_reported(
|
|
|
+ BrowsingContext const& accessor,
|
|
|
+ BrowsingContext const* accessed,
|
|
|
+ JS::PropertyKey const& property_key,
|
|
|
+ EnvironmentSettingsObject const& environment)
|
|
|
{
|
|
|
+ // FIXME: Spec bug: https://github.com/whatwg/html/issues/10192
|
|
|
+ if (!accessed)
|
|
|
+ return;
|
|
|
+
|
|
|
// 1. If P is not a cross-origin accessible window property name, then return.
|
|
|
if (!is_cross_origin_accessible_window_property_name(property_key))
|
|
|
return;
|
|
@@ -27,11 +35,11 @@ void check_if_access_between_two_browsing_contexts_should_be_reported(BrowsingCo
|
|
|
auto accessor_accessed_relationship = AccessorAccessedRelationship::None;
|
|
|
|
|
|
// 5. If accessed's top-level browsing context's opener browsing context is accessor or an ancestor of accessor, then set accessorAccessedRelationship to accessor is opener.
|
|
|
- if (auto opener = accessed.top_level_browsing_context()->opener_browsing_context(); opener && (opener == &accessor || opener->is_ancestor_of(accessor)))
|
|
|
+ if (auto opener = accessed->top_level_browsing_context()->opener_browsing_context(); opener && (opener == &accessor || opener->is_ancestor_of(accessor)))
|
|
|
accessor_accessed_relationship = AccessorAccessedRelationship::AccessorIsOpener;
|
|
|
|
|
|
// 6. If accessor's top-level browsing context's opener browsing context is accessed or an ancestor of accessed, then set accessorAccessedRelationship to accessor is openee.
|
|
|
- if (auto opener = accessor.top_level_browsing_context()->opener_browsing_context(); opener && (opener == &accessed || opener->is_ancestor_of(accessed)))
|
|
|
+ if (auto opener = accessor.top_level_browsing_context()->opener_browsing_context(); opener && (opener == accessed || opener->is_ancestor_of(*accessed)))
|
|
|
accessor_accessed_relationship = AccessorAccessedRelationship::AccessorIsOpenee;
|
|
|
|
|
|
// FIXME: 7. Queue violation reports for accesses, given accessorAccessedRelationship, accessor's top-level browsing context's active document's cross-origin opener policy, accessed's top-level browsing context's active document's cross-origin opener policy, accessor's active document's URL, accessed's active document's URL, accessor's top-level browsing context's initial URL, accessed's top-level browsing context's initial URL, accessor's active document's origin, accessed's active document's origin, accessor's top-level browsing context's opener origin at creation, accessed's top-level browsing context's opener origin at creation, accessor's top-level browsing context's active document's referrer, accessed's top-level browsing context's active document's referrer, P, and environment.
|