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

Libraries: Fix visibility of Object-derivative constructors

Derivatives of Core::Object should be constructed through
ClassName::construct(), to avoid handling ref-counted objects with
refcount zero. Fixing the visibility means that misuses like this are
more difficult.
This commit is contained in:
Ben Wiederhake 2021-10-31 23:38:04 +01:00 committed by Andreas Kling
parent 3796d417e0
commit b3e9a4e603
19 changed files with 62 additions and 50 deletions

View file

@ -19,8 +19,6 @@ class ClientConnection final
, public AudioClientEndpoint { , public AudioClientEndpoint {
C_OBJECT(ClientConnection) C_OBJECT(ClientConnection)
public: public:
ClientConnection();
void enqueue(Buffer const&); void enqueue(Buffer const&);
bool try_enqueue(Buffer const&); bool try_enqueue(Buffer const&);
void async_enqueue(Buffer const&); void async_enqueue(Buffer const&);
@ -31,6 +29,8 @@ public:
Function<void(double volume)> on_client_volume_change; Function<void(double volume)> on_client_volume_change;
private: private:
ClientConnection();
virtual void finished_playing_buffer(i32) override; virtual void finished_playing_buffer(i32) override;
virtual void muted_state_changed(bool) override; virtual void muted_state_changed(bool) override;
virtual void main_mix_volume_changed(double) override; virtual void main_mix_volume_changed(double) override;

View file

@ -18,9 +18,6 @@ class Endpoint : public Core::Object {
public: public:
virtual ~Endpoint() override { } virtual ~Endpoint() override { }
Endpoint() { }
Endpoint(NonnullRefPtr<Core::IODevice> in, NonnullRefPtr<Core::IODevice> out);
virtual void handle_uci() { } virtual void handle_uci() { }
virtual void handle_debug(const DebugCommand&) { } virtual void handle_debug(const DebugCommand&) { }
virtual void handle_isready() { } virtual void handle_isready() { }
@ -48,6 +45,10 @@ public:
} }
void set_out(RefPtr<Core::IODevice> out) { m_out = out; } void set_out(RefPtr<Core::IODevice> out) { m_out = out; }
protected:
Endpoint() { }
Endpoint(NonnullRefPtr<Core::IODevice> in, NonnullRefPtr<Core::IODevice> out);
private: private:
void set_in_notifier(); void set_in_notifier();
NonnullOwnPtr<Command> read_command(); NonnullOwnPtr<Command> read_command();

View file

@ -125,7 +125,7 @@ pid_t EventLoop::s_pid;
class InspectorServerConnection : public Object { class InspectorServerConnection : public Object {
C_OBJECT(InspectorServerConnection) C_OBJECT(InspectorServerConnection)
public: private:
explicit InspectorServerConnection(RefPtr<LocalSocket> socket) explicit InspectorServerConnection(RefPtr<LocalSocket> socket)
: m_socket(move(socket)) : m_socket(move(socket))
, m_client_id(s_id_allocator->allocate()) , m_client_id(s_id_allocator->allocate())
@ -162,6 +162,7 @@ public:
inspected_object->decrement_inspector_count({}); inspected_object->decrement_inspector_count({});
} }
public:
void send_response(const JsonObject& response) void send_response(const JsonObject& response)
{ {
auto serialized = response.to_string(); auto serialized = response.to_string();

View file

@ -14,9 +14,6 @@ template<typename Result>
class Promise : public Object { class Promise : public Object {
C_OBJECT(Promise); C_OBJECT(Promise);
private:
Optional<Result> m_pending;
public: public:
Function<void(Result&)> on_resolved; Function<void(Result&)> on_resolved;
@ -51,5 +48,10 @@ public:
}; };
return new_promise; return new_promise;
} }
private:
Promise() = default;
Optional<Result> m_pending;
}; };
} }

View file

@ -81,7 +81,7 @@ private:
class AbstractScrollableWidgetScrollbar final : public Scrollbar { class AbstractScrollableWidgetScrollbar final : public Scrollbar {
C_OBJECT(AbstractScrollableWidgetScrollbar); C_OBJECT(AbstractScrollableWidgetScrollbar);
protected: private:
explicit AbstractScrollableWidgetScrollbar(AbstractScrollableWidget& owner, Gfx::Orientation orientation) explicit AbstractScrollableWidgetScrollbar(AbstractScrollableWidget& owner, Gfx::Orientation orientation)
: Scrollbar(orientation) : Scrollbar(orientation)
, m_owner(owner) , m_owner(owner)
@ -93,7 +93,6 @@ private:
m_owner.handle_wheel_event(event, *this); m_owner.handle_wheel_event(event, *this);
} }
private:
AbstractScrollableWidget& m_owner; AbstractScrollableWidget& m_owner;
}; };
friend class ScrollableWidgetScrollbar; friend class ScrollableWidgetScrollbar;

View file

@ -36,7 +36,7 @@ private:
class VerticalBoxLayout final : public BoxLayout { class VerticalBoxLayout final : public BoxLayout {
C_OBJECT(VerticalBoxLayout); C_OBJECT(VerticalBoxLayout);
public: private:
explicit VerticalBoxLayout() explicit VerticalBoxLayout()
: BoxLayout(Gfx::Orientation::Vertical) : BoxLayout(Gfx::Orientation::Vertical)
{ {
@ -47,7 +47,7 @@ public:
class HorizontalBoxLayout final : public BoxLayout { class HorizontalBoxLayout final : public BoxLayout {
C_OBJECT(HorizontalBoxLayout); C_OBJECT(HorizontalBoxLayout);
public: private:
explicit HorizontalBoxLayout() explicit HorizontalBoxLayout()
: BoxLayout(Gfx::Orientation::Horizontal) : BoxLayout(Gfx::Orientation::Horizontal)
{ {

View file

@ -30,9 +30,6 @@ public:
YearOnly YearOnly
}; };
Calendar(Core::DateTime date_time = Core::DateTime::now(), Mode mode = Month);
virtual ~Calendar() override;
void set_selected_date(Core::DateTime date_time) { m_selected_date = date_time; } void set_selected_date(Core::DateTime date_time) { m_selected_date = date_time; }
Core::DateTime selected_date() const { return m_selected_date; } Core::DateTime selected_date() const { return m_selected_date; }
@ -75,6 +72,9 @@ public:
Function<void()> on_month_click; Function<void()> on_month_click;
private: private:
Calendar(Core::DateTime date_time = Core::DateTime::now(), Mode mode = Month);
virtual ~Calendar() override;
virtual void resize_event(GUI::ResizeEvent&) override; virtual void resize_event(GUI::ResizeEvent&) override;
virtual void paint_event(GUI::PaintEvent&) override; virtual void paint_event(GUI::PaintEvent&) override;
virtual void mousemove_event(GUI::MouseEvent&) override; virtual void mousemove_event(GUI::MouseEvent&) override;

View file

@ -129,11 +129,6 @@ private:
class ColorSelectOverlay final : public Widget { class ColorSelectOverlay final : public Widget {
C_OBJECT(ColorSelectOverlay) C_OBJECT(ColorSelectOverlay)
public: public:
ColorSelectOverlay()
{
set_override_cursor(Gfx::StandardCursor::Eyedropper);
}
Optional<Color> exec() Optional<Color> exec()
{ {
m_event_loop = make<Core::EventLoop>(); m_event_loop = make<Core::EventLoop>();
@ -156,6 +151,11 @@ public:
Function<void(Color)> on_color_changed; Function<void(Color)> on_color_changed;
private: private:
ColorSelectOverlay()
{
set_override_cursor(Gfx::StandardCursor::Eyedropper);
}
virtual void mousedown_event(GUI::MouseEvent&) override { m_event_loop->quit(1); } virtual void mousedown_event(GUI::MouseEvent&) override { m_event_loop->quit(1); }
virtual void mousemove_event(GUI::MouseEvent&) override virtual void mousemove_event(GUI::MouseEvent&) override
{ {

View file

@ -14,7 +14,6 @@ namespace GUI {
class TextBox : public TextEditor { class TextBox : public TextEditor {
C_OBJECT(TextBox) C_OBJECT(TextBox)
public: public:
TextBox();
virtual ~TextBox() override; virtual ~TextBox() override;
Function<void()> on_up_pressed; Function<void()> on_up_pressed;
@ -23,6 +22,9 @@ public:
void set_history_enabled(bool enabled) { m_history_enabled = enabled; } void set_history_enabled(bool enabled) { m_history_enabled = enabled; }
void add_current_text_to_history(); void add_current_text_to_history();
protected:
TextBox();
private: private:
virtual void keydown_event(GUI::KeyEvent&) override; virtual void keydown_event(GUI::KeyEvent&) override;
@ -39,20 +41,21 @@ private:
class PasswordBox : public TextBox { class PasswordBox : public TextBox {
C_OBJECT(PasswordBox) C_OBJECT(PasswordBox)
public: private:
PasswordBox(); PasswordBox();
}; };
class UrlBox : public TextBox { class UrlBox : public TextBox {
C_OBJECT(UrlBox) C_OBJECT(UrlBox)
public: public:
UrlBox();
virtual ~UrlBox() override; virtual ~UrlBox() override;
void set_focus_transition(bool focus_transition) { m_focus_transition = focus_transition; } void set_focus_transition(bool focus_transition) { m_focus_transition = focus_transition; }
bool is_focus_transition() const { return m_focus_transition; } bool is_focus_transition() const { return m_focus_transition; }
private: private:
UrlBox();
virtual void mousedown_event(GUI::MouseEvent&) override; virtual void mousedown_event(GUI::MouseEvent&) override;
virtual void focusout_event(GUI::FocusEvent&) override; virtual void focusout_event(GUI::FocusEvent&) override;

View file

@ -18,14 +18,14 @@ class WindowManagerServerConnection final
, public WindowManagerClientEndpoint { , public WindowManagerClientEndpoint {
C_OBJECT(WindowManagerServerConnection) C_OBJECT(WindowManagerServerConnection)
public: public:
static WindowManagerServerConnection& the();
private:
WindowManagerServerConnection() WindowManagerServerConnection()
: IPC::ServerConnection<WindowManagerClientEndpoint, WindowManagerServerEndpoint>(*this, "/tmp/portal/wm") : IPC::ServerConnection<WindowManagerClientEndpoint, WindowManagerServerEndpoint>(*this, "/tmp/portal/wm")
{ {
} }
static WindowManagerServerConnection& the();
private:
virtual void window_removed(i32, i32, i32) override; virtual void window_removed(i32, i32, i32) override;
virtual void window_state_changed(i32, i32, i32, i32, i32, u32, u32, bool, bool, bool, bool, i32, String const&, Gfx::IntRect const&, Optional<i32> const&) override; virtual void window_state_changed(i32, i32, i32, i32, i32, u32, u32, bool, bool, bool, bool, i32, String const&, Gfx::IntRect const&, Optional<i32> const&) override;
virtual void window_icon_bitmap_changed(i32, i32, i32, Gfx::ShareableBitmap const&) override; virtual void window_icon_bitmap_changed(i32, i32, i32, Gfx::ShareableBitmap const&) override;

View file

@ -17,12 +17,6 @@ namespace Gemini {
class GeminiJob final : public Job { class GeminiJob final : public Job {
C_OBJECT(GeminiJob) C_OBJECT(GeminiJob)
public: public:
explicit GeminiJob(const GeminiRequest& request, OutputStream& output_stream, const Vector<Certificate>* override_certificates = nullptr)
: Job(request, output_stream)
, m_override_ca_certificates(override_certificates)
{
}
virtual ~GeminiJob() override virtual ~GeminiJob() override
{ {
} }
@ -50,6 +44,12 @@ protected:
virtual void read_while_data_available(Function<IterationDecision()>) override; virtual void read_while_data_available(Function<IterationDecision()>) override;
private: private:
explicit GeminiJob(const GeminiRequest& request, OutputStream& output_stream, const Vector<Certificate>* override_certificates = nullptr)
: Job(request, output_stream)
, m_override_ca_certificates(override_certificates)
{
}
RefPtr<TLS::TLSv12> m_socket; RefPtr<TLS::TLSv12> m_socket;
const Vector<Certificate>* m_override_ca_certificates { nullptr }; const Vector<Certificate>* m_override_ca_certificates { nullptr };
}; };

View file

@ -18,11 +18,6 @@ namespace HTTP {
class HttpJob final : public Job { class HttpJob final : public Job {
C_OBJECT(HttpJob) C_OBJECT(HttpJob)
public: public:
explicit HttpJob(const HttpRequest& request, OutputStream& output_stream)
: Job(request, output_stream)
{
}
virtual ~HttpJob() override virtual ~HttpJob() override
{ {
} }
@ -46,6 +41,11 @@ protected:
virtual bool is_established() const override { return true; } virtual bool is_established() const override { return true; }
private: private:
explicit HttpJob(const HttpRequest& request, OutputStream& output_stream)
: Job(request, output_stream)
{
}
RefPtr<Core::Socket> m_socket; RefPtr<Core::Socket> m_socket;
}; };

View file

@ -18,12 +18,6 @@ namespace HTTP {
class HttpsJob final : public Job { class HttpsJob final : public Job {
C_OBJECT(HttpsJob) C_OBJECT(HttpsJob)
public: public:
explicit HttpsJob(const HttpRequest& request, OutputStream& output_stream, const Vector<Certificate>* override_certs = nullptr)
: Job(request, output_stream)
, m_override_ca_certificates(override_certs)
{
}
virtual ~HttpsJob() override virtual ~HttpsJob() override
{ {
} }
@ -51,6 +45,12 @@ protected:
virtual void read_while_data_available(Function<IterationDecision()>) override; virtual void read_while_data_available(Function<IterationDecision()>) override;
private: private:
explicit HttpsJob(const HttpRequest& request, OutputStream& output_stream, const Vector<Certificate>* override_certs = nullptr)
: Job(request, output_stream)
, m_override_ca_certificates(override_certs)
{
}
RefPtr<TLS::TLSv12> m_socket; RefPtr<TLS::TLSv12> m_socket;
const Vector<Certificate>* m_override_ca_certificates { nullptr }; const Vector<Certificate>* m_override_ca_certificates { nullptr };
}; };

View file

@ -24,7 +24,6 @@ class Database : public Core::Object {
C_OBJECT(Database); C_OBJECT(Database);
public: public:
explicit Database(String);
~Database() override = default; ~Database() override = default;
void commit() { m_heap->flush(); } void commit() { m_heap->flush(); }
@ -43,6 +42,8 @@ public:
bool update(Row&); bool update(Row&);
private: private:
explicit Database(String);
NonnullRefPtr<Heap> m_heap; NonnullRefPtr<Heap> m_heap;
Serializer m_serializer; Serializer m_serializer;
RefPtr<BTree> m_schemas; RefPtr<BTree> m_schemas;

View file

@ -32,7 +32,6 @@ class Heap : public Core::Object {
C_OBJECT(Heap); C_OBJECT(Heap);
public: public:
explicit Heap(String);
virtual ~Heap() override { flush(); } virtual ~Heap() override { flush(); }
u32 size() const { return m_end_of_file; } u32 size() const { return m_end_of_file; }
@ -93,6 +92,8 @@ public:
void flush(); void flush();
private: private:
explicit Heap(String);
bool seek_block(u32); bool seek_block(u32);
void read_zero_block(); void read_zero_block();
void initialize_zero_block(); void initialize_zero_block();

View file

@ -96,10 +96,11 @@ class KeyPartDef : public ColumnDef {
C_OBJECT(KeyPartDef); C_OBJECT(KeyPartDef);
public: public:
KeyPartDef(IndexDef*, String, SQLType, Order = Order::Ascending);
Order sort_order() const { return m_sort_order; } Order sort_order() const { return m_sort_order; }
private: private:
KeyPartDef(IndexDef*, String, SQLType, Order = Order::Ascending);
Order m_sort_order { Order::Ascending }; Order m_sort_order { Order::Ascending };
}; };

View file

@ -27,7 +27,6 @@ class TerminalWidget final
C_OBJECT(TerminalWidget); C_OBJECT(TerminalWidget);
public: public:
TerminalWidget(int ptm_fd, bool automatic_size_policy);
virtual ~TerminalWidget() override; virtual ~TerminalWidget() override;
void set_pty_master_fd(int fd); void set_pty_master_fd(int fd);
@ -95,6 +94,8 @@ public:
void set_color_scheme(const StringView&); void set_color_scheme(const StringView&);
private: private:
TerminalWidget(int ptm_fd, bool automatic_size_policy);
// ^GUI::Widget // ^GUI::Widget
virtual void event(Core::Event&) override; virtual void event(Core::Event&) override;
virtual void paint_event(GUI::PaintEvent&) override; virtual void paint_event(GUI::PaintEvent&) override;

View file

@ -22,7 +22,6 @@ class TCPWebSocketConnectionImpl final : public AbstractWebSocketImpl {
public: public:
virtual ~TCPWebSocketConnectionImpl() override; virtual ~TCPWebSocketConnectionImpl() override;
explicit TCPWebSocketConnectionImpl(Core::Object* parent = nullptr);
virtual void connect(ConnectionInfo const& connection) override; virtual void connect(ConnectionInfo const& connection) override;
@ -39,6 +38,8 @@ public:
virtual void discard_connection() override; virtual void discard_connection() override;
private: private:
explicit TCPWebSocketConnectionImpl(Core::Object* parent = nullptr);
RefPtr<Core::Notifier> m_notifier; RefPtr<Core::Notifier> m_notifier;
RefPtr<Core::TCPSocket> m_socket; RefPtr<Core::TCPSocket> m_socket;
}; };

View file

@ -21,7 +21,6 @@ class TLSv12WebSocketConnectionImpl final : public AbstractWebSocketImpl {
public: public:
virtual ~TLSv12WebSocketConnectionImpl() override; virtual ~TLSv12WebSocketConnectionImpl() override;
explicit TLSv12WebSocketConnectionImpl(Core::Object* parent = nullptr);
void connect(ConnectionInfo const& connection) override; void connect(ConnectionInfo const& connection) override;
@ -38,6 +37,8 @@ public:
virtual void discard_connection() override; virtual void discard_connection() override;
private: private:
explicit TLSv12WebSocketConnectionImpl(Core::Object* parent = nullptr);
RefPtr<TLS::TLSv12> m_socket; RefPtr<TLS::TLSv12> m_socket;
}; };