1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 15:57:36 +00:00

LibWeb+WebContent: Move Serenity EventLoop and Font plugins into LibWeb

These are exactly what's wanted by headless-browser too, so this saves
us some duplication. LibWeb already links LibCore so it should not
cause any issues for Ladybird.
This commit is contained in:
Sam Atkins 2022-09-21 19:33:57 +01:00 committed by Linus Groh
parent 69dd158f91
commit 6b2a916069
9 changed files with 30 additions and 30 deletions

View file

@ -10,11 +10,8 @@ compile_ipc(WebContentClient.ipc WebContentClientEndpoint.h)
set(SOURCES
ConnectionFromClient.cpp
ConsoleGlobalObject.cpp
EventLoopPluginSerenity.cpp
FontPluginSerenity.cpp
ImageCodecPluginSerenity.cpp
PageHost.cpp
TimerSerenity.cpp
WebContentClientEndpoint.h
WebContentConsoleClient.cpp
WebContentServerEndpoint.h

View file

@ -1,34 +0,0 @@
/*
* Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include "EventLoopPluginSerenity.h"
#include "TimerSerenity.h"
#include <AK/Function.h>
#include <AK/NonnullRefPtr.h>
#include <LibCore/EventLoop.h>
namespace WebContent {
EventLoopPluginSerenity::EventLoopPluginSerenity() = default;
EventLoopPluginSerenity::~EventLoopPluginSerenity() = default;
void EventLoopPluginSerenity::spin_until(Function<bool()> goal_condition)
{
Core::EventLoop::current().spin_until(move(goal_condition));
}
void EventLoopPluginSerenity::deferred_invoke(Function<void()> function)
{
VERIFY(function);
Core::deferred_invoke(move(function));
}
NonnullRefPtr<Web::Platform::Timer> EventLoopPluginSerenity::create_timer()
{
return TimerSerenity::create();
}
}

View file

@ -1,23 +0,0 @@
/*
* Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibWeb/Platform/EventLoopPlugin.h>
namespace WebContent {
class EventLoopPluginSerenity final : public Web::Platform::EventLoopPlugin {
public:
EventLoopPluginSerenity();
virtual ~EventLoopPluginSerenity() override;
virtual void spin_until(Function<bool()> goal_condition) override;
virtual void deferred_invoke(Function<void()>) override;
virtual NonnullRefPtr<Web::Platform::Timer> create_timer() override;
};
}

View file

@ -1,54 +0,0 @@
/*
* Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include "FontPluginSerenity.h"
#include <AK/String.h>
#include <LibGfx/Font/FontDatabase.h>
namespace WebContent {
FontPluginSerenity::FontPluginSerenity()
{
}
FontPluginSerenity::~FontPluginSerenity() = default;
Gfx::Font& FontPluginSerenity::default_font()
{
return Gfx::FontDatabase::default_font();
}
Gfx::Font& FontPluginSerenity::default_fixed_width_font()
{
return Gfx::FontDatabase::default_fixed_width_font();
}
String FontPluginSerenity::generic_font_name(Web::Platform::GenericFont generic_font)
{
// FIXME: Replace hard-coded font names with a relevant call to FontDatabase.
// Currently, we cannot request the default font's name, or request it at a specific size and weight.
// So, hard-coded font names it is.
switch (generic_font) {
case Web::Platform::GenericFont::SansSerif:
case Web::Platform::GenericFont::UiSansSerif:
case Web::Platform::GenericFont::Cursive:
case Web::Platform::GenericFont::UiRounded:
return "Katica";
case Web::Platform::GenericFont::Monospace:
case Web::Platform::GenericFont::UiMonospace:
return "Csilla";
case Web::Platform::GenericFont::Serif:
case Web::Platform::GenericFont::UiSerif:
return "Roman";
case Web::Platform::GenericFont::Fantasy:
return "Comic Book";
case Web::Platform::GenericFont::__Count:
VERIFY_NOT_REACHED();
}
VERIFY_NOT_REACHED();
}
}

View file

@ -1,24 +0,0 @@
/*
* Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/Vector.h>
#include <LibWeb/Platform/FontPlugin.h>
namespace WebContent {
class FontPluginSerenity final : public Web::Platform::FontPlugin {
public:
FontPluginSerenity();
virtual ~FontPluginSerenity();
virtual Gfx::Font& default_font() override;
virtual Gfx::Font& default_fixed_width_font() override;
virtual String generic_font_name(Web::Platform::GenericFont) override;
};
}

View file

@ -1,84 +0,0 @@
/*
* Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include "TimerSerenity.h"
#include <AK/NonnullRefPtr.h>
#include <LibCore/Timer.h>
namespace WebContent {
NonnullRefPtr<TimerSerenity> TimerSerenity::create()
{
return adopt_ref(*new TimerSerenity);
}
TimerSerenity::TimerSerenity()
: m_timer(Core::Timer::construct())
{
m_timer->on_timeout = [this] {
if (on_timeout)
on_timeout();
};
}
TimerSerenity::~TimerSerenity() = default;
void TimerSerenity::start()
{
m_timer->start();
}
void TimerSerenity::start(int interval_ms)
{
m_timer->start(interval_ms);
}
void TimerSerenity::restart()
{
m_timer->restart();
}
void TimerSerenity::restart(int interval_ms)
{
m_timer->restart(interval_ms);
}
void TimerSerenity::stop()
{
m_timer->stop();
}
void TimerSerenity::set_active(bool active)
{
m_timer->set_active(active);
}
bool TimerSerenity::is_active() const
{
return m_timer->is_active();
}
int TimerSerenity::interval() const
{
return m_timer->interval();
}
void TimerSerenity::set_interval(int interval_ms)
{
m_timer->set_interval(interval_ms);
}
bool TimerSerenity::is_single_shot() const
{
return m_timer->is_single_shot();
}
void TimerSerenity::set_single_shot(bool single_shot)
{
m_timer->set_single_shot(single_shot);
}
}

View file

@ -1,42 +0,0 @@
/*
* Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/NonnullRefPtr.h>
#include <LibCore/Forward.h>
#include <LibWeb/Platform/Timer.h>
namespace WebContent {
class TimerSerenity final : public Web::Platform::Timer {
public:
static NonnullRefPtr<TimerSerenity> create();
virtual ~TimerSerenity();
virtual void start() override;
virtual void start(int interval_ms) override;
virtual void restart() override;
virtual void restart(int interval_ms) override;
virtual void stop() override;
virtual void set_active(bool) override;
virtual bool is_active() const override;
virtual int interval() const override;
virtual void set_interval(int interval_ms) override;
virtual bool is_single_shot() const override;
virtual void set_single_shot(bool) override;
private:
TimerSerenity();
NonnullRefPtr<Core::Timer> m_timer;
};
}

View file

@ -4,8 +4,6 @@
* SPDX-License-Identifier: BSD-2-Clause
*/
#include "EventLoopPluginSerenity.h"
#include "FontPluginSerenity.h"
#include "ImageCodecPluginSerenity.h"
#include <LibCore/EventLoop.h>
#include <LibCore/LocalServer.h>
@ -14,6 +12,8 @@
#include <LibMain/Main.h>
#include <LibWeb/Loader/ResourceLoader.h>
#include <LibWeb/Platform/EventLoopPlugin.h>
#include <LibWeb/Platform/EventLoopPluginSerenity.h>
#include <LibWeb/Platform/FontPluginSerenity.h>
#include <LibWeb/WebSockets/WebSocket.h>
#include <LibWebView/RequestServerAdapter.h>
#include <LibWebView/WebSocketClientAdapter.h>
@ -30,9 +30,9 @@ ErrorOr<int> serenity_main(Main::Arguments)
TRY(Core::System::unveil("/tmp/user/%uid/portal/websocket", "rw"));
TRY(Core::System::unveil(nullptr, nullptr));
Web::Platform::EventLoopPlugin::install(*new WebContent::EventLoopPluginSerenity);
Web::Platform::EventLoopPlugin::install(*new Web::Platform::EventLoopPluginSerenity);
Web::Platform::ImageCodecPlugin::install(*new WebContent::ImageCodecPluginSerenity);
Web::Platform::FontPlugin::install(*new WebContent::FontPluginSerenity);
Web::Platform::FontPlugin::install(*new Web::Platform::FontPluginSerenity);
Web::WebSockets::WebSocketClientManager::initialize(TRY(WebView::WebSocketClientManagerAdapter::try_create()));
Web::ResourceLoader::initialize(TRY(WebView::RequestServerAdapter::try_create()));