@@ -33,14 +33,18 @@ @interface CopilotMessageHandler : NSObject <WKScriptMessageHandler>
3333 Q_OBJECT
3434
3535public:
36- WebViewWidgetMac (const QString &appId, const QUrl &url, QWidget *parent)
36+ WebViewWidgetMac (const QString &appId, const QUrl &url, QWidget *parent, const QString &userDataFolder )
3737 : WebViewWidget(appId, url, parent)
3838 {
3939 @autoreleasepool {
4040 WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc ] init ];
4141
42- // Tiered data persistence: macOS 14+ uses per-app isolated store.
43- if (@available (macOS 14.0 , *)) {
42+ // Quick Browser passes a userDataFolder. WKWebView cannot choose an
43+ // arbitrary profile directory, so use the app's persistent default
44+ // store there instead of a fresh UUID-backed store per tab.
45+ if (!userDataFolder.isEmpty ()) {
46+ config.websiteDataStore = [WKWebsiteDataStore defaultDataStore ];
47+ } else if (@available (macOS 14.0 , *)) {
4448 QUuid ns = QUuid::fromString (QStringLiteral (" {6ba7b810-9dad-11d1-80b4-00c04fd430c8}" ));
4549 QUuid storeId = QUuid::createUuidV5 (ns, appId);
4650 NSUUID *nsUuid = [[NSUUID alloc ] initWithUUIDString: storeId.toString (QUuid: :WithoutBraces).toNSString ()];
@@ -64,6 +68,8 @@ @interface CopilotMessageHandler : NSObject <WKScriptMessageHandler>
6468
6569 NSRect frame = NSMakeRect (0 , 0 , 400 , 300 );
6670 m_webView = [[WKWebView alloc ] initWithFrame: frame configuration: config];
71+ m_webView.customUserAgent = @" Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) "
72+ " AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15" ;
6773
6874 m_navDelegate = [[MiniAppNavDelegate alloc ] init ];
6975 m_navDelegate.owner = this ;
@@ -123,7 +129,7 @@ void executeScript(const QString &js, std::function<void(const QString &)> callb
123129
124130 QString nativePostMessage () const override
125131 {
126- return QStringLiteral (" window.webkit.messageHandlers.pageAgent.postMessage" );
132+ return QStringLiteral (" (function(msg){ window.webkit.messageHandlers.pageAgent.postMessage(msg); }) " );
127133 }
128134
129135 void destroy () override
@@ -212,12 +218,12 @@ - (void)userContentController:(WKUserContentController *)userContentController
212218
213219// Factory: macOS implementation
214220WebViewWidget *WebViewWidget::create (const QString &appId, const QUrl &url, int /* debugPort*/ ,
215- QWidget *parent, const QString &/* userDataFolder*/ ,
221+ QWidget *parent, const QString &userDataFolder,
216222 int /* proxyType*/ , const QString &/* proxyHost*/ ,
217223 int /* proxyPort*/ , const QString &/* proxyBypassList*/ ,
218224 bool /* allowCrossOrigin*/ )
219225{
220- return new WebViewWidgetMac (appId, url, parent);
226+ return new WebViewWidgetMac (appId, url, parent, userDataFolder );
221227}
222228
223229#include " WebViewWidget_mac.moc"
0 commit comments