From 338a961bd3d173df5e0f458f489ce79083a31336 Mon Sep 17 00:00:00 2001 From: David Kocik Date: Wed, 4 Dec 2024 09:09:43 +0100 Subject: [PATCH] SPE-2567: Login dialog starts with loading page to delete cookies before first request. --- src/slic3r/GUI/WebViewDialog.cpp | 22 +++++++++++++++++++++- src/slic3r/GUI/WebViewDialog.hpp | 2 ++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/WebViewDialog.cpp b/src/slic3r/GUI/WebViewDialog.cpp index 623187ee61..1a07032103 100644 --- a/src/slic3r/GUI/WebViewDialog.cpp +++ b/src/slic3r/GUI/WebViewDialog.cpp @@ -711,10 +711,14 @@ void PrintablesConnectUploadDialog::on_connect_action_close_dialog(const std::st } LoginWebViewDialog::LoginWebViewDialog(wxWindow *parent, std::string &ret_val, const wxString& url, wxEvtHandler* evt_handler) - : WebViewDialog(parent, url, _L("Log in dialog"), wxSize(50 * wxGetApp().em_unit(), 80 * wxGetApp().em_unit()), {}) + : WebViewDialog(parent, GUI::format_wxstr("file://%1%/web/other_loading.html", boost::filesystem::path(resources_dir()).generic_string()), _L("Log in dialog"), wxSize(50 * wxGetApp().em_unit(), 80 * wxGetApp().em_unit()), {}) , m_ret_val(ret_val) , p_evt_handler(evt_handler) { + // Loading screen is sent to WebViewDialog constructor to first load. + // In on_loaded real url is requested. + // This gives us space to delete cookies before requesting login page. (So it is never logged in) + m_default_url = url; Centre(); } void LoginWebViewDialog::on_navigation_request(wxWebViewEvent &evt) @@ -748,5 +752,21 @@ void LoginWebViewDialog::on_dpi_changed(const wxRect &suggested_rect) Fit(); Refresh(); } + +void LoginWebViewDialog::on_loaded(wxWebViewEvent &evt) +{ + BOOST_LOG_TRIVIAL(debug) << "LoginWebViewDialog::on_loaded " << evt.GetURL(); + + if (!m_did_default_url_request && evt.GetURL().Find("/web/other_loading.html") != wxNOT_FOUND) { + m_did_default_url_request = true; + delete_cookies(m_browser, Utils::ServiceConfig::instance().account_url()); + delete_cookies(m_browser, "https://accounts.google.com"); + delete_cookies(m_browser, "https://appleid.apple.com"); + delete_cookies(m_browser, "https://facebook.com"); + m_browser->LoadURL(m_default_url); + return; + } + +} } // GUI } // Slic3r diff --git a/src/slic3r/GUI/WebViewDialog.hpp b/src/slic3r/GUI/WebViewDialog.hpp index e7d4c529d8..d780dc03e1 100644 --- a/src/slic3r/GUI/WebViewDialog.hpp +++ b/src/slic3r/GUI/WebViewDialog.hpp @@ -132,10 +132,12 @@ public: LoginWebViewDialog(wxWindow *parent, std::string &ret_val, const wxString& url, wxEvtHandler* evt_handler); void on_navigation_request(wxWebViewEvent &evt) override; void on_dpi_changed(const wxRect &suggested_rect) override; + void on_loaded(wxWebViewEvent &evt) override; private: std::string& m_ret_val; wxEvtHandler* p_evt_handler; bool m_evt_sent{ false }; + bool m_did_default_url_request { false }; }; } // GUI