From 18f5b01cc684d6af73c7783d28074d809701a67a Mon Sep 17 00:00:00 2001 From: Tobias Taschner Date: Tue, 16 Mar 2021 14:21:09 +0100 Subject: [PATCH] Implement user agent access for macOS --- include/wx/osx/webview_webkit.h | 2 ++ src/osx/webview_webkit.mm | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/include/wx/osx/webview_webkit.h b/include/wx/osx/webview_webkit.h index 2166966cc5..443d9b22d1 100644 --- a/include/wx/osx/webview_webkit.h +++ b/include/wx/osx/webview_webkit.h @@ -73,6 +73,7 @@ public: virtual bool IsAccessToDevToolsEnabled() const wxOVERRIDE; virtual void EnableAccessToDevTools(bool enable = true) wxOVERRIDE; + virtual bool SetUserAgent(const wxString& userAgent) wxOVERRIDE; //History functions virtual void ClearHistory() wxOVERRIDE; @@ -111,6 +112,7 @@ protected: private: OSXWebViewPtr m_webView; wxStringToWebHandlerMap m_handlers; + wxString m_customUserAgent; WX_NSObject m_navigationDelegate; WX_NSObject m_UIDelegate; diff --git a/src/osx/webview_webkit.mm b/src/osx/webview_webkit.mm index 3f304310bf..0513df3735 100644 --- a/src/osx/webview_webkit.mm +++ b/src/osx/webview_webkit.mm @@ -151,6 +151,9 @@ bool wxWebViewWebKit::Create(wxWindow *parent, MacPostControlCreate(pos, size); + if (!m_customUserAgent.empty()) + SetUserAgent(m_customUserAgent); + [m_webView setHidden:false]; @@ -328,6 +331,21 @@ void wxWebViewWebKit::EnableAccessToDevTools(bool enable) [prefs performSelector:devToolsSelector withObject:(id)enable]; } +bool wxWebViewWebKit::SetUserAgent(const wxString& userAgent) +{ + if (WX_IS_MACOS_AVAILABLE(10, 11)) + { + if (m_webView) + m_webView.customUserAgent = wxCFStringRef(userAgent).AsNSString(); + else + m_customUserAgent = userAgent; + + return true; + } + else + return false; +} + void wxWebViewWebKit::SetZoomType(wxWebViewZoomType zoomType) { // there is only one supported zoom type at the moment so this setter