Przeglądaj źródła

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.
Ben Wiederhake 3 lat temu
rodzic
commit
b3e9a4e603

+ 2 - 2
Userland/Libraries/LibAudio/ClientConnection.h

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

+ 4 - 3
Userland/Libraries/LibChess/UCIEndpoint.h

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

+ 2 - 1
Userland/Libraries/LibCore/EventLoop.cpp

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

+ 5 - 3
Userland/Libraries/LibCore/Promise.h

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

+ 1 - 2
Userland/Libraries/LibGUI/AbstractScrollableWidget.h

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

+ 2 - 2
Userland/Libraries/LibGUI/BoxLayout.h

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

+ 3 - 3
Userland/Libraries/LibGUI/Calendar.h

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

+ 5 - 5
Userland/Libraries/LibGUI/ColorPicker.cpp

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

+ 6 - 3
Userland/Libraries/LibGUI/TextBox.h

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

+ 3 - 3
Userland/Libraries/LibGUI/WindowManagerServerConnection.h

@@ -18,14 +18,14 @@ class WindowManagerServerConnection final
     , public WindowManagerClientEndpoint {
     C_OBJECT(WindowManagerServerConnection)
 public:
+    static WindowManagerServerConnection& the();
+
+private:
     WindowManagerServerConnection()
         : IPC::ServerConnection<WindowManagerClientEndpoint, WindowManagerServerEndpoint>(*this, "/tmp/portal/wm")
     {
     }
 
-    static WindowManagerServerConnection& the();
-
-private:
     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_icon_bitmap_changed(i32, i32, i32, Gfx::ShareableBitmap const&) override;

+ 6 - 6
Userland/Libraries/LibGemini/GeminiJob.h

@@ -17,12 +17,6 @@ namespace Gemini {
 class GeminiJob final : public Job {
     C_OBJECT(GeminiJob)
 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
     {
     }
@@ -50,6 +44,12 @@ protected:
     virtual void read_while_data_available(Function<IterationDecision()>) override;
 
 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;
     const Vector<Certificate>* m_override_ca_certificates { nullptr };
 };

+ 5 - 5
Userland/Libraries/LibHTTP/HttpJob.h

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

+ 6 - 6
Userland/Libraries/LibHTTP/HttpsJob.h

@@ -18,12 +18,6 @@ namespace HTTP {
 class HttpsJob final : public Job {
     C_OBJECT(HttpsJob)
 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
     {
     }
@@ -51,6 +45,12 @@ protected:
     virtual void read_while_data_available(Function<IterationDecision()>) override;
 
 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;
     const Vector<Certificate>* m_override_ca_certificates { nullptr };
 };

+ 2 - 1
Userland/Libraries/LibSQL/Database.h

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

+ 2 - 1
Userland/Libraries/LibSQL/Heap.h

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

+ 2 - 1
Userland/Libraries/LibSQL/Meta.h

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

+ 2 - 1
Userland/Libraries/LibVT/TerminalWidget.h

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

+ 2 - 1
Userland/Libraries/LibWebSocket/Impl/TCPWebSocketConnectionImpl.h

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

+ 2 - 1
Userland/Libraries/LibWebSocket/Impl/TLSv12WebSocketConnectionImpl.h

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