-
-
Notifications
You must be signed in to change notification settings - Fork 496
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
LibWeb: Stub BroadcastChannel interface
This is enough to get the 1Password login page to load :^)
- Loading branch information
1 parent
7abf47f
commit d4a7cfb
Showing
9 changed files
with
130 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
/* | ||
* Copyright (c) 2024, Jamie Mansfield <jmansfield@cadixdev.org> | ||
* | ||
* SPDX-License-Identifier: BSD-2-Clause | ||
*/ | ||
|
||
#include <LibJS/Runtime/Realm.h> | ||
#include <LibWeb/Bindings/BroadcastChannelPrototype.h> | ||
#include <LibWeb/Bindings/Intrinsics.h> | ||
#include <LibWeb/HTML/BroadcastChannel.h> | ||
#include <LibWeb/HTML/EventNames.h> | ||
|
||
namespace Web::HTML { | ||
|
||
JS_DEFINE_ALLOCATOR(BroadcastChannel); | ||
|
||
JS::NonnullGCPtr<BroadcastChannel> BroadcastChannel::construct_impl(JS::Realm& realm, FlyString const& name) | ||
{ | ||
return realm.heap().allocate<BroadcastChannel>(realm, realm, name); | ||
} | ||
|
||
BroadcastChannel::BroadcastChannel(JS::Realm& realm, FlyString const& name) | ||
: DOM::EventTarget(realm) | ||
, m_channel_name(name) | ||
{ | ||
} | ||
|
||
void BroadcastChannel::initialize(JS::Realm& realm) | ||
{ | ||
Base::initialize(realm); | ||
WEB_SET_PROTOTYPE_FOR_INTERFACE(BroadcastChannel); | ||
} | ||
|
||
// https://html.spec.whatwg.org/multipage/web-messaging.html#dom-broadcastchannel-name | ||
FlyString BroadcastChannel::name() | ||
{ | ||
// The name getter steps are to return this's channel name. | ||
return m_channel_name; | ||
} | ||
|
||
// https://html.spec.whatwg.org/multipage/web-messaging.html#dom-broadcastchannel-close | ||
void BroadcastChannel::close() | ||
{ | ||
// The close() method steps are to set this's closed flag to true. | ||
m_closed_flag = true; | ||
} | ||
|
||
// https://html.spec.whatwg.org/multipage/web-messaging.html#handler-broadcastchannel-onmessage | ||
void BroadcastChannel::set_onmessage(WebIDL::CallbackType* event_handler) | ||
{ | ||
set_event_handler_attribute(HTML::EventNames::message, event_handler); | ||
} | ||
|
||
// https://html.spec.whatwg.org/multipage/web-messaging.html#handler-broadcastchannel-onmessage | ||
WebIDL::CallbackType* BroadcastChannel::onmessage() | ||
{ | ||
return event_handler_attribute(HTML::EventNames::message); | ||
} | ||
|
||
// https://html.spec.whatwg.org/multipage/web-messaging.html#handler-broadcastchannel-onmessageerror | ||
void BroadcastChannel::set_onmessageerror(WebIDL::CallbackType* event_handler) | ||
{ | ||
set_event_handler_attribute(HTML::EventNames::messageerror, event_handler); | ||
} | ||
|
||
// https://html.spec.whatwg.org/multipage/web-messaging.html#handler-broadcastchannel-onmessageerror | ||
WebIDL::CallbackType* BroadcastChannel::onmessageerror() | ||
{ | ||
return event_handler_attribute(HTML::EventNames::messageerror); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/* | ||
* Copyright (c) 2024, Jamie Mansfield <jmansfield@cadixdev.org> | ||
* | ||
* SPDX-License-Identifier: BSD-2-Clause | ||
*/ | ||
|
||
#pragma once | ||
|
||
#include <LibWeb/DOM/EventTarget.h> | ||
|
||
namespace Web::HTML { | ||
|
||
class BroadcastChannel final : public DOM::EventTarget { | ||
WEB_PLATFORM_OBJECT(BroadcastChannel, DOM::EventTarget); | ||
JS_DECLARE_ALLOCATOR(BroadcastChannel); | ||
|
||
public: | ||
[[nodiscard]] static JS::NonnullGCPtr<BroadcastChannel> construct_impl(JS::Realm&, FlyString const& name); | ||
|
||
FlyString name(); | ||
|
||
void close(); | ||
|
||
void set_onmessage(WebIDL::CallbackType*); | ||
WebIDL::CallbackType* onmessage(); | ||
void set_onmessageerror(WebIDL::CallbackType*); | ||
WebIDL::CallbackType* onmessageerror(); | ||
|
||
private: | ||
BroadcastChannel(JS::Realm&, FlyString const& name); | ||
|
||
virtual void initialize(JS::Realm&) override; | ||
|
||
FlyString m_channel_name; | ||
bool m_closed_flag { false }; | ||
}; | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#import <DOM/EventHandler.idl> | ||
#import <DOM/EventTarget.idl> | ||
|
||
// https://html.spec.whatwg.org/multipage/web-messaging.html#broadcastchannel | ||
[Exposed=(Window,Worker)] | ||
interface BroadcastChannel : EventTarget { | ||
constructor(DOMString name); | ||
|
||
readonly attribute DOMString name; | ||
[FIXME] undefined postMessage(any message); | ||
undefined close(); | ||
attribute EventHandler onmessage; | ||
attribute EventHandler onmessageerror; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters