Skip to content

Commit bed56c6

Browse files
NiccoloAntonelliDziriAtkinsSJ
authored andcommitted
LibWeb: Use enum instead of bool for CanUseCrossOriginIsolatedAPIs
Change the parameters types of the functions `coarsen_time` and `coarsened_shared_current_time` from `bool` to `CanUseCrossOriginIsolatedAPIs` for more coherence with the surrounding code.
1 parent bd76078 commit bed56c6

8 files changed

Lines changed: 21 additions & 22 deletions

File tree

Libraries/LibWeb/DOM/Document.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@ WebIDL::ExceptionOr<GC::Ref<Document>> Document::create_and_initialize(Type type
377377
// AD-HOC: The response object no longer has an associated timing info object. For now, we use response's non-standard response time property,
378378
// which represents the time that the time that the response object was created.
379379
auto response_creation_time = navigation_params.response->monotonic_response_time().nanoseconds() / 1e6;
380-
load_timing_info.navigation_start_time = HighResolutionTime::coarsen_time(response_creation_time, HTML::relevant_settings_object(*window).cross_origin_isolated_capability() == HTML::CanUseCrossOriginIsolatedAPIs::Yes);
380+
load_timing_info.navigation_start_time = HighResolutionTime::coarsen_time(response_creation_time, HTML::relevant_settings_object(*window).cross_origin_isolated_capability());
381381

382382
// 9. Let document be a new Document, with
383383
// type: type

Libraries/LibWeb/Fetch/Fetching/Fetching.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ GC::Ref<Infrastructure::FetchController> fetch(JS::Realm& realm, Infrastructure:
190190
// shared current time given crossOriginIsolatedCapability, and render-blocking is set to request’s
191191
// render-blocking.
192192
auto timing_info = Infrastructure::FetchTimingInfo::create(vm);
193-
auto now = HighResolutionTime::coarsened_shared_current_time(cross_origin_isolated_capability == HTML::CanUseCrossOriginIsolatedAPIs::Yes);
193+
auto now = HighResolutionTime::coarsened_shared_current_time(cross_origin_isolated_capability);
194194
timing_info->set_start_time(now);
195195
timing_info->set_post_redirect_start_time(now);
196196
timing_info->set_render_blocking(request.render_blocking());
@@ -1166,7 +1166,7 @@ GC::Ref<PendingResponse> http_fetch(JS::Realm& realm, Infrastructure::FetchParam
11661166

11671167
// 3. Let serviceWorkerStartTime be the coarsened shared current time given fetchParams’s cross-origin isolated
11681168
// capability.
1169-
auto service_worker_start_time = HighResolutionTime::coarsened_shared_current_time(fetch_params.cross_origin_isolated_capability() == HTML::CanUseCrossOriginIsolatedAPIs::Yes);
1169+
auto service_worker_start_time = HighResolutionTime::coarsened_shared_current_time(fetch_params.cross_origin_isolated_capability());
11701170

11711171
// FIXME: 4. Set response to the result of invoking handle fetch for requestForServiceWorker, with fetchParams’s
11721172
// controller and fetchParams’s cross-origin isolated capability.
@@ -1468,7 +1468,7 @@ GC::Ptr<PendingResponse> http_redirect_fetch(JS::Realm& realm, Infrastructure::F
14681468

14691469
// 16. Set timingInfo’s redirect end time and post-redirect start time to the coarsened shared current time given
14701470
// fetchParams’s cross-origin isolated capability.
1471-
auto now = HighResolutionTime::coarsened_shared_current_time(fetch_params.cross_origin_isolated_capability() == HTML::CanUseCrossOriginIsolatedAPIs::Yes);
1471+
auto now = HighResolutionTime::coarsened_shared_current_time(fetch_params.cross_origin_isolated_capability());
14721472
timing_info->set_redirect_end_time(now);
14731473
timing_info->set_post_redirect_start_time(now);
14741474

Libraries/LibWeb/Fetch/Infrastructure/FetchTimingInfo.cpp

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,22 +39,20 @@ GC::Ref<FetchTimingInfo> create_opaque_timing_info(JS::VM& vm, FetchTimingInfo c
3939

4040
void FetchTimingInfo::update_final_timings(Requests::RequestTimingInfo const& final_timings, HTML::CanUseCrossOriginIsolatedAPIs cross_origin_isolated_capability)
4141
{
42-
bool has_cross_origin_isolated_capability = cross_origin_isolated_capability == HTML::CanUseCrossOriginIsolatedAPIs::Yes;
43-
4442
auto domain_lookup_start_time_milliseconds = m_start_time + (static_cast<HighResolutionTime::DOMHighResTimeStamp>(final_timings.domain_lookup_start_microseconds) / 1000.0);
45-
auto coarsened_domain_lookup_start_time = HighResolutionTime::coarsen_time(domain_lookup_start_time_milliseconds, has_cross_origin_isolated_capability);
43+
auto coarsened_domain_lookup_start_time = HighResolutionTime::coarsen_time(domain_lookup_start_time_milliseconds, cross_origin_isolated_capability);
4644

4745
auto domain_lookup_end_time_milliseconds = m_start_time + (static_cast<HighResolutionTime::DOMHighResTimeStamp>(final_timings.domain_lookup_end_microseconds) / 1000.0);
48-
auto coarsened_domain_lookup_end_time = HighResolutionTime::coarsen_time(domain_lookup_end_time_milliseconds, has_cross_origin_isolated_capability);
46+
auto coarsened_domain_lookup_end_time = HighResolutionTime::coarsen_time(domain_lookup_end_time_milliseconds, cross_origin_isolated_capability);
4947

5048
auto connect_start_time_milliseconds = m_start_time + (static_cast<HighResolutionTime::DOMHighResTimeStamp>(final_timings.connect_start_microseconds) / 1000.0);
51-
auto coarsened_connection_start_time = HighResolutionTime::coarsen_time(connect_start_time_milliseconds, has_cross_origin_isolated_capability);
49+
auto coarsened_connection_start_time = HighResolutionTime::coarsen_time(connect_start_time_milliseconds, cross_origin_isolated_capability);
5250

5351
auto connect_end_time_milliseconds = m_start_time + (static_cast<HighResolutionTime::DOMHighResTimeStamp>(final_timings.connect_end_microseconds) / 1000.0);
54-
auto coarsened_connection_end_time = HighResolutionTime::coarsen_time(connect_end_time_milliseconds, has_cross_origin_isolated_capability);
52+
auto coarsened_connection_end_time = HighResolutionTime::coarsen_time(connect_end_time_milliseconds, cross_origin_isolated_capability);
5553

5654
auto secure_connect_start_time_milliseconds = m_start_time + (static_cast<HighResolutionTime::DOMHighResTimeStamp>(final_timings.secure_connect_start_microseconds) / 1000.0);
57-
auto coarsened_secure_connection_start_time = HighResolutionTime::coarsen_time(secure_connect_start_time_milliseconds, has_cross_origin_isolated_capability);
55+
auto coarsened_secure_connection_start_time = HighResolutionTime::coarsen_time(secure_connect_start_time_milliseconds, cross_origin_isolated_capability);
5856

5957
m_final_connection_timing_info = ConnectionTimingInfo {
6058
.domain_lookup_start_time = coarsened_domain_lookup_start_time,
@@ -66,11 +64,11 @@ void FetchTimingInfo::update_final_timings(Requests::RequestTimingInfo const& fi
6664
};
6765

6866
auto request_start_time_milliseconds = m_start_time + (static_cast<HighResolutionTime::DOMHighResTimeStamp>(final_timings.request_start_microseconds) / 1000.0);
69-
auto coarsened_request_start_time = HighResolutionTime::coarsen_time(request_start_time_milliseconds, has_cross_origin_isolated_capability);
67+
auto coarsened_request_start_time = HighResolutionTime::coarsen_time(request_start_time_milliseconds, cross_origin_isolated_capability);
7068
m_final_network_request_start_time = coarsened_request_start_time;
7169

7270
auto response_start_time_milliseconds = m_start_time + (static_cast<HighResolutionTime::DOMHighResTimeStamp>(final_timings.response_start_microseconds) / 1000.0);
73-
auto coarsened_response_start_time = HighResolutionTime::coarsen_time(response_start_time_milliseconds, has_cross_origin_isolated_capability);
71+
auto coarsened_response_start_time = HighResolutionTime::coarsen_time(response_start_time_milliseconds, cross_origin_isolated_capability);
7472
m_final_network_response_start_time = coarsened_response_start_time;
7573
}
7674

Libraries/LibWeb/HTML/BrowsingContext.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ WebIDL::ExceptionOr<BrowsingContext::BrowsingContextAndDocument> BrowsingContext
204204
auto load_timing_info = DOM::DocumentLoadTimingInfo();
205205
load_timing_info.navigation_start_time = HighResolutionTime::coarsen_time(
206206
unsafe_context_creation_time,
207-
as<WindowEnvironmentSettingsObject>(Bindings::principal_host_defined_environment_settings_object(window->realm())).cross_origin_isolated_capability() == CanUseCrossOriginIsolatedAPIs::Yes);
207+
as<WindowEnvironmentSettingsObject>(Bindings::principal_host_defined_environment_settings_object(window->realm())).cross_origin_isolated_capability());
208208

209209
// 15. Let document be a new Document, with:
210210
auto document = HTML::HTMLDocument::create(window->realm());

Libraries/LibWeb/HTML/Scripting/Environments.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ struct WEB_API EnvironmentSettingsObject : public Environment {
154154
auto unsafe_walltime = HighResolutionTime::wall_clock_unsafe_current_time();
155155

156156
// 2. Return the result of calling coarsen time with unsafeWallTime and settingsObject's cross-origin isolated capability.
157-
return HighResolutionTime::coarsen_time(unsafe_walltime, cross_origin_isolated_capability() == HTML::CanUseCrossOriginIsolatedAPIs::Yes);
157+
return HighResolutionTime::coarsen_time(unsafe_walltime, cross_origin_isolated_capability());
158158
}
159159

160160
protected:

Libraries/LibWeb/HTML/Scripting/WorkerEnvironmentSettingsObject.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ CanUseCrossOriginIsolatedAPIs WorkerEnvironmentSettingsObject::cross_origin_isol
114114
double WorkerEnvironmentSettingsObject::time_origin() const
115115
{
116116
// Return the result of coarsening unsafeWorkerCreationTime with worker global scope's cross-origin isolated capability.
117-
return HighResolutionTime::coarsen_time(m_unsafe_worker_creation_time, cross_origin_isolated_capability() == CanUseCrossOriginIsolatedAPIs::Yes);
117+
return HighResolutionTime::coarsen_time(m_unsafe_worker_creation_time, cross_origin_isolated_capability());
118118
}
119119

120120
void WorkerEnvironmentSettingsObject::visit_edges(JS::Cell::Visitor& visitor)

Libraries/LibWeb/HighResolutionTime/TimeOrigin.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ DOMHighResTimeStamp get_time_origin_timestamp(JS::Object const& global)
4545
}
4646

4747
// https://w3c.github.io/hr-time/#dfn-coarsen-time
48-
DOMHighResTimeStamp coarsen_time(DOMHighResTimeStamp timestamp, bool cross_origin_isolated_capability)
48+
DOMHighResTimeStamp coarsen_time(DOMHighResTimeStamp timestamp, HTML::CanUseCrossOriginIsolatedAPIs cross_origin_isolated_capability)
4949
{
5050
// 1. Let time resolution be 100 microseconds, or a higher implementation-defined value.
5151
auto time_resolution_milliseconds = 0.1;
5252

5353
// 2. If crossOriginIsolatedCapability is true, set time resolution to be 5 microseconds, or a higher implementation-defined value.
54-
if (cross_origin_isolated_capability)
54+
if (cross_origin_isolated_capability == HTML::CanUseCrossOriginIsolatedAPIs::Yes)
5555
time_resolution_milliseconds = 0.005;
5656

5757
// 3. In an implementation-defined manner, coarsen and potentially jitter timestamp such that its resolution will not exceed time resolution
@@ -79,7 +79,7 @@ DOMHighResTimeStamp relative_high_resolution_time(DOMHighResTimeStamp time, JS::
7979
auto& settings = HTML::relevant_principal_settings_object(global);
8080

8181
// 2. Let coarse time be the result of calling coarsen time with time and settings's cross-origin isolated capability.
82-
auto coarse_time = coarsen_time(time, settings.cross_origin_isolated_capability() == HTML::CanUseCrossOriginIsolatedAPIs::Yes);
82+
auto coarse_time = coarsen_time(time, settings.cross_origin_isolated_capability());
8383

8484
// 2. Return the relative high resolution coarse time for coarse time and global.
8585
return relative_high_resolution_coarsen_time(coarse_time, global);
@@ -94,7 +94,7 @@ DOMHighResTimeStamp relative_high_resolution_coarsen_time(DOMHighResTimeStamp co
9494
}
9595

9696
// https://w3c.github.io/hr-time/#dfn-coarsened-shared-current-time
97-
DOMHighResTimeStamp coarsened_shared_current_time(bool cross_origin_isolated_capability)
97+
DOMHighResTimeStamp coarsened_shared_current_time(HTML::CanUseCrossOriginIsolatedAPIs cross_origin_isolated_capability)
9898
{
9999
// The coarsened shared current time given an optional boolean crossOriginIsolatedCapability (default false), must return the result of calling coarsen time with the unsafe shared current time and crossOriginIsolatedCapability.
100100
return coarsen_time(unsafe_shared_current_time(), cross_origin_isolated_capability);

Libraries/LibWeb/HighResolutionTime/TimeOrigin.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,18 @@
99

1010
#include <LibJS/Forward.h>
1111
#include <LibWeb/Export.h>
12+
#include <LibWeb/HTML/Scripting/SerializedEnvironmentSettingsObject.h>
1213
#include <LibWeb/HighResolutionTime/DOMHighResTimeStamp.h>
1314

1415
namespace Web::HighResolutionTime {
1516

1617
DOMHighResTimeStamp estimated_monotonic_time_of_the_unix_epoch();
1718
DOMHighResTimeStamp get_time_origin_timestamp(JS::Object const&);
18-
DOMHighResTimeStamp coarsen_time(DOMHighResTimeStamp timestamp, bool cross_origin_isolated_capability = false);
19+
DOMHighResTimeStamp coarsen_time(DOMHighResTimeStamp timestamp, HTML::CanUseCrossOriginIsolatedAPIs cross_origin_isolated_capability = HTML::CanUseCrossOriginIsolatedAPIs::No);
1920
DOMHighResTimeStamp current_high_resolution_time(JS::Object const&);
2021
DOMHighResTimeStamp relative_high_resolution_time(DOMHighResTimeStamp, JS::Object const&);
2122
DOMHighResTimeStamp relative_high_resolution_coarsen_time(DOMHighResTimeStamp, JS::Object const&);
22-
WEB_API DOMHighResTimeStamp coarsened_shared_current_time(bool cross_origin_isolated_capability = false);
23+
WEB_API DOMHighResTimeStamp coarsened_shared_current_time(HTML::CanUseCrossOriginIsolatedAPIs cross_origin_isolated_capability = HTML::CanUseCrossOriginIsolatedAPIs::No);
2324
DOMHighResTimeStamp wall_clock_unsafe_current_time();
2425
WEB_API DOMHighResTimeStamp unsafe_shared_current_time();
2526

0 commit comments

Comments
 (0)