mirror of
				https://github.com/LadybirdBrowser/ladybird.git
				synced 2025-11-03 23:00:58 +00:00 
			
		
		
		
	The main motivation behind this is to remove JS specifics of the Realm from the implementation of the Heap. As a side effect of this change, this is a bit nicer to read than the previous approach, and in my opinion, also makes it a little more clear that this method is specific to a JavaScript Realm.
		
			
				
	
	
		
			47 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
 * Copyright (c) 2024, Andrew Kaster <andrew@ladybird.org>
 | 
						|
 *
 | 
						|
 * SPDX-License-Identifier: BSD-2-Clause
 | 
						|
 */
 | 
						|
 | 
						|
#include <LibJS/Heap/Heap.h>
 | 
						|
#include <LibJS/Runtime/Realm.h>
 | 
						|
#include <LibWeb/Bindings/Intrinsics.h>
 | 
						|
#include <LibWeb/HTML/EventNames.h>
 | 
						|
#include <LibWeb/HTML/ServiceWorker.h>
 | 
						|
 | 
						|
namespace Web::HTML {
 | 
						|
 | 
						|
ServiceWorker::ServiceWorker(JS::Realm& realm, String script_url)
 | 
						|
    : DOM::EventTarget(realm)
 | 
						|
    , m_script_url(move(script_url))
 | 
						|
{
 | 
						|
}
 | 
						|
 | 
						|
ServiceWorker::~ServiceWorker() = default;
 | 
						|
 | 
						|
JS::NonnullGCPtr<ServiceWorker> ServiceWorker::create(JS::Realm& realm)
 | 
						|
{
 | 
						|
    return realm.create<ServiceWorker>(realm, ""_string);
 | 
						|
}
 | 
						|
 | 
						|
void ServiceWorker::initialize(JS::Realm& realm)
 | 
						|
{
 | 
						|
    Base::initialize(realm);
 | 
						|
    WEB_SET_PROTOTYPE_FOR_INTERFACE(ServiceWorker);
 | 
						|
}
 | 
						|
 | 
						|
#undef __ENUMERATE
 | 
						|
#define __ENUMERATE(attribute_name, event_name)                           \
 | 
						|
    void ServiceWorker::set_##attribute_name(WebIDL::CallbackType* value) \
 | 
						|
    {                                                                     \
 | 
						|
        set_event_handler_attribute(event_name, value);                   \
 | 
						|
    }                                                                     \
 | 
						|
    WebIDL::CallbackType* ServiceWorker::attribute_name()                 \
 | 
						|
    {                                                                     \
 | 
						|
        return event_handler_attribute(event_name);                       \
 | 
						|
    }
 | 
						|
ENUMERATE_SERVICE_WORKER_EVENT_HANDLERS(__ENUMERATE)
 | 
						|
#undef __ENUMERATE
 | 
						|
 | 
						|
}
 |