From a661025637f301013d9da781e67334853162c6b3 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Thu, 17 Jan 2019 11:19:44 -0500 Subject: [PATCH] core/frontend/applets/web_browser: Make OpenPage() non-const This is a function that definitely doesn't always have a non-modifying behavior across all implementations, so this should be made non-const. This gets rid of the need to mark data members as mutable to work around the fact mutating data members needs to occur. --- src/core/core.cpp | 16 ++++++++++------ src/core/core.h | 13 +++++++------ src/core/frontend/applets/web_browser.cpp | 2 +- src/core/frontend/applets/web_browser.h | 4 ++-- src/core/hle/service/am/applets/web_browser.cpp | 2 +- src/yuzu/applets/web_browser.cpp | 2 +- src/yuzu/applets/web_browser.h | 6 +++--- 7 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/core/core.cpp b/src/core/core.cpp index 31c5908669..572814e4b5 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -443,27 +443,31 @@ std::shared_ptr System::GetFilesystem() const { return impl->virtual_filesystem; } -void System::SetProfileSelector(std::unique_ptr applet) { +void System::SetProfileSelector(std::unique_ptr applet) { impl->profile_selector = std::move(applet); } -const Core::Frontend::ProfileSelectApplet& System::GetProfileSelector() const { +const Frontend::ProfileSelectApplet& System::GetProfileSelector() const { return *impl->profile_selector; } -void System::SetSoftwareKeyboard(std::unique_ptr applet) { +void System::SetSoftwareKeyboard(std::unique_ptr applet) { impl->software_keyboard = std::move(applet); } -const Core::Frontend::SoftwareKeyboardApplet& System::GetSoftwareKeyboard() const { +const Frontend::SoftwareKeyboardApplet& System::GetSoftwareKeyboard() const { return *impl->software_keyboard; } -void System::SetWebBrowser(std::unique_ptr applet) { +void System::SetWebBrowser(std::unique_ptr applet) { impl->web_browser = std::move(applet); } -const Core::Frontend::WebBrowserApplet& System::GetWebBrowser() const { +Frontend::WebBrowserApplet& System::GetWebBrowser() { + return *impl->web_browser; +} + +const Frontend::WebBrowserApplet& System::GetWebBrowser() const { return *impl->web_browser; } diff --git a/src/core/core.h b/src/core/core.h index a53dbb4d48..511a5ad3ae 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -243,17 +243,18 @@ public: std::shared_ptr GetFilesystem() const; - void SetProfileSelector(std::unique_ptr applet); + void SetProfileSelector(std::unique_ptr applet); - const Core::Frontend::ProfileSelectApplet& GetProfileSelector() const; + const Frontend::ProfileSelectApplet& GetProfileSelector() const; - void SetSoftwareKeyboard(std::unique_ptr applet); + void SetSoftwareKeyboard(std::unique_ptr applet); - const Core::Frontend::SoftwareKeyboardApplet& GetSoftwareKeyboard() const; + const Frontend::SoftwareKeyboardApplet& GetSoftwareKeyboard() const; - void SetWebBrowser(std::unique_ptr applet); + void SetWebBrowser(std::unique_ptr applet); - const Core::Frontend::WebBrowserApplet& GetWebBrowser() const; + Frontend::WebBrowserApplet& GetWebBrowser(); + const Frontend::WebBrowserApplet& GetWebBrowser() const; private: System(); diff --git a/src/core/frontend/applets/web_browser.cpp b/src/core/frontend/applets/web_browser.cpp index 6a36b4b8f2..3a3d3d0bf5 100644 --- a/src/core/frontend/applets/web_browser.cpp +++ b/src/core/frontend/applets/web_browser.cpp @@ -13,7 +13,7 @@ DefaultWebBrowserApplet::~DefaultWebBrowserApplet() = default; void DefaultWebBrowserApplet::OpenPage(std::string_view filename, std::function unpack_romfs_callback, - std::function finished_callback) const { + std::function finished_callback) { LOG_INFO(Service_AM, "(STUBBED) called - No suitable web browser implementation found to open website page " "at '{}'!", diff --git a/src/core/frontend/applets/web_browser.h b/src/core/frontend/applets/web_browser.h index 41d272d265..f952856af1 100644 --- a/src/core/frontend/applets/web_browser.h +++ b/src/core/frontend/applets/web_browser.h @@ -14,7 +14,7 @@ public: virtual ~WebBrowserApplet(); virtual void OpenPage(std::string_view url, std::function unpack_romfs_callback, - std::function finished_callback) const = 0; + std::function finished_callback) = 0; }; class DefaultWebBrowserApplet final : public WebBrowserApplet { @@ -22,7 +22,7 @@ public: ~DefaultWebBrowserApplet() override; void OpenPage(std::string_view url, std::function unpack_romfs_callback, - std::function finished_callback) const override; + std::function finished_callback) override; }; } // namespace Core::Frontend diff --git a/src/core/hle/service/am/applets/web_browser.cpp b/src/core/hle/service/am/applets/web_browser.cpp index d975207f53..ba2650e8bc 100644 --- a/src/core/hle/service/am/applets/web_browser.cpp +++ b/src/core/hle/service/am/applets/web_browser.cpp @@ -146,7 +146,7 @@ void WebBrowser::Execute() { return; } - const auto& frontend{Core::System::GetInstance().GetWebBrowser()}; + auto& frontend{Core::System::GetInstance().GetWebBrowser()}; frontend.OpenPage(filename, [this] { UnpackRomFS(); }, [this] { Finalize(); }); } diff --git a/src/yuzu/applets/web_browser.cpp b/src/yuzu/applets/web_browser.cpp index b801d38fe8..6a9138d53e 100644 --- a/src/yuzu/applets/web_browser.cpp +++ b/src/yuzu/applets/web_browser.cpp @@ -86,7 +86,7 @@ QtWebBrowser::QtWebBrowser(GMainWindow& main_window) { QtWebBrowser::~QtWebBrowser() = default; void QtWebBrowser::OpenPage(std::string_view url, std::function unpack_romfs_callback, - std::function finished_callback) const { + std::function finished_callback) { this->unpack_romfs_callback = std::move(unpack_romfs_callback); this->finished_callback = std::move(finished_callback); diff --git a/src/yuzu/applets/web_browser.h b/src/yuzu/applets/web_browser.h index 9838865863..1a3d67353f 100644 --- a/src/yuzu/applets/web_browser.h +++ b/src/yuzu/applets/web_browser.h @@ -38,7 +38,7 @@ public: ~QtWebBrowser() override; void OpenPage(std::string_view url, std::function unpack_romfs_callback, - std::function finished_callback) const override; + std::function finished_callback) override; signals: void MainWindowOpenPage(std::string_view filename, std::string_view additional_args) const; @@ -47,6 +47,6 @@ private: void MainWindowUnpackRomFS(); void MainWindowFinishedBrowsing(); - mutable std::function unpack_romfs_callback; - mutable std::function finished_callback; + std::function unpack_romfs_callback; + std::function finished_callback; };