14
14
#include < LibIDL/Types.h>
15
15
#include < LibMain/Main.h>
16
16
17
- static ErrorOr<void > add_to_interface_sets (IDL::Interface&, Vector<IDL::Interface&>& intrinsics, Vector<IDL::Interface&>& window_exposed, Vector<IDL::Interface&>& dedicated_worker_exposed, Vector<IDL::Interface&>& shared_worker_exposed);
17
+ static ErrorOr<void > add_to_interface_sets (IDL::Interface&, Vector<IDL::Interface&>& intrinsics, Vector<IDL::Interface&>& window_exposed, Vector<IDL::Interface&>& dedicated_worker_exposed, Vector<IDL::Interface&>& shared_worker_exposed, Vector<IDL::Interface&>& shadow_realm_exposed );
18
18
static ByteString s_error_string;
19
19
20
20
struct LegacyConstructor {
@@ -367,6 +367,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
367
367
Vector<IDL::Interface&> window_exposed;
368
368
Vector<IDL::Interface&> dedicated_worker_exposed;
369
369
Vector<IDL::Interface&> shared_worker_exposed;
370
+ Vector<IDL::Interface&> shadow_realm_exposed;
370
371
// TODO: service_worker_exposed
371
372
372
373
for (size_t i = 0 ; i < paths.size (); ++i) {
@@ -378,7 +379,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
378
379
return Error::from_string_view (s_error_string.view ());
379
380
}
380
381
381
- TRY (add_to_interface_sets (interface, intrinsics, window_exposed, dedicated_worker_exposed, shared_worker_exposed));
382
+ TRY (add_to_interface_sets (interface, intrinsics, window_exposed, dedicated_worker_exposed, shared_worker_exposed, shadow_realm_exposed ));
382
383
parsers.append (move (parser));
383
384
}
384
385
@@ -387,11 +388,13 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
387
388
TRY (generate_exposed_interface_header (" Window" sv, output_path));
388
389
TRY (generate_exposed_interface_header (" DedicatedWorker" sv, output_path));
389
390
TRY (generate_exposed_interface_header (" SharedWorker" sv, output_path));
391
+ TRY (generate_exposed_interface_header (" ShadowRealm" sv, output_path));
390
392
// TODO: ServiceWorkerExposed.h
391
393
392
394
TRY (generate_exposed_interface_implementation (" Window" sv, output_path, window_exposed));
393
395
TRY (generate_exposed_interface_implementation (" DedicatedWorker" sv, output_path, dedicated_worker_exposed));
394
396
TRY (generate_exposed_interface_implementation (" SharedWorker" sv, output_path, shared_worker_exposed));
397
+ TRY (generate_exposed_interface_implementation (" ShadowRealm" sv, output_path, shadow_realm_exposed));
395
398
// TODO: ServiceWorkerExposed.cpp
396
399
397
400
return 0 ;
@@ -404,8 +407,9 @@ enum ExposedTo {
404
407
ServiceWorker = 0x4 ,
405
408
AudioWorklet = 0x8 ,
406
409
Window = 0x10 ,
407
- AllWorkers = 0xF , // FIXME: Is "AudioWorklet" a Worker? We'll assume it is for now
408
- All = 0x1F ,
410
+ ShadowRealm = 0x20 ,
411
+ AllWorkers = DedicatedWorker | SharedWorker | ServiceWorker | AudioWorklet, // FIXME: Is "AudioWorklet" a Worker? We'll assume it is for now (here, and line below)
412
+ All = AllWorkers | Window | ShadowRealm
409
413
};
410
414
AK_ENUM_BITWISE_OPERATORS (ExposedTo);
411
415
@@ -436,6 +440,8 @@ static ErrorOr<ExposedTo> parse_exposure_set(IDL::Interface& interface)
436
440
return ExposedTo::ServiceWorker;
437
441
if (exposed == " AudioWorklet" sv)
438
442
return ExposedTo::AudioWorklet;
443
+ if (exposed == " ShadowRealm" sv)
444
+ return ExposedTo::ShadowRealm;
439
445
440
446
if (exposed[0 ] == ' (' ) {
441
447
ExposedTo whom = Nobody;
@@ -453,6 +459,8 @@ static ErrorOr<ExposedTo> parse_exposure_set(IDL::Interface& interface)
453
459
whom |= ExposedTo::ServiceWorker;
454
460
} else if (candidate == " AudioWorklet" sv) {
455
461
whom |= ExposedTo::AudioWorklet;
462
+ } else if (candidate == " ShadowRealm" sv) {
463
+ whom |= ExposedTo::ShadowRealm;
456
464
} else {
457
465
s_error_string = ByteString::formatted (" Unknown Exposed attribute candidate {} in {} in {}" , candidate, exposed, interface.name );
458
466
return Error::from_string_view (s_error_string.view ());
@@ -469,7 +477,7 @@ static ErrorOr<ExposedTo> parse_exposure_set(IDL::Interface& interface)
469
477
return Error::from_string_view (s_error_string.view ());
470
478
}
471
479
472
- ErrorOr<void > add_to_interface_sets (IDL::Interface& interface, Vector<IDL::Interface&>& intrinsics, Vector<IDL::Interface&>& window_exposed, Vector<IDL::Interface&>& dedicated_worker_exposed, Vector<IDL::Interface&>& shared_worker_exposed)
480
+ ErrorOr<void > add_to_interface_sets (IDL::Interface& interface, Vector<IDL::Interface&>& intrinsics, Vector<IDL::Interface&>& window_exposed, Vector<IDL::Interface&>& dedicated_worker_exposed, Vector<IDL::Interface&>& shared_worker_exposed, Vector<IDL::Interface&>& shadow_realm_exposed )
473
481
{
474
482
// TODO: Add service worker exposed and audio worklet exposed
475
483
auto whom = TRY (parse_exposure_set (interface));
@@ -485,5 +493,8 @@ ErrorOr<void> add_to_interface_sets(IDL::Interface& interface, Vector<IDL::Inter
485
493
if (whom & ExposedTo::SharedWorker)
486
494
shared_worker_exposed.append (interface);
487
495
496
+ if (whom & ExposedTo::ShadowRealm)
497
+ shadow_realm_exposed.append (interface);
498
+
488
499
return {};
489
500
}
0 commit comments