diff --git a/src/plugins/platforms/wasm/qwasmclipboard.cpp b/src/plugins/platforms/wasm/qwasmclipboard.cpp index 99f3e611556..97a0547563c 100644 --- a/src/plugins/platforms/wasm/qwasmclipboard.cpp +++ b/src/plugins/platforms/wasm/qwasmclipboard.cpp @@ -149,21 +149,11 @@ QWasmClipboard::QWasmClipboard() : m_isListener(false) { val clipboard = val::global("navigator")["clipboard"]; - val permissions = val::global("navigator")["permissions"]; - val hasInstallTrigger = val::global("window")["InstallTrigger"]; - hasPermissionsApi = !permissions.isUndefined(); - hasClipboardApi = (!clipboard.isUndefined() && !clipboard["readText"].isUndefined()); - bool isFirefox = !hasInstallTrigger.isUndefined(); - isSafari = !emscripten::val::global("window")["safari"].isUndefined(); + const bool hasPermissionsApi = !val::global("navigator")["permissions"].isUndefined(); + hasClipboardApi = !clipboard.isUndefined() && !clipboard["readText"].isUndefined(); - // firefox has clipboard API if user sets these config tweaks: - // dom.events.asyncClipboard.clipboardItem true - // dom.events.asyncClipboard.read true - // dom.events.testing.asyncClipboard - // and permissions API, but does not currently support - // the clipboardRead and clipboardWrite permissions - if (hasClipboardApi && hasPermissionsApi && !isFirefox) + if (hasClipboardApi && hasPermissionsApi) initClipboardPermissions(); } @@ -214,17 +204,18 @@ void QWasmClipboard::qWasmClipboardPaste(QMimeData *mData) void QWasmClipboard::initClipboardPermissions() { - if (!hasClipboardApi) - return; - val permissions = val::global("navigator")["permissions"]; - val readPermissionsMap = val::object(); - readPermissionsMap.set("name", val("clipboard-read")); - permissions.call("query", readPermissionsMap); - val writePermissionsMap = val::object(); - writePermissionsMap.set("name", val("clipboard-write")); - permissions.call("query", writePermissionsMap); + qstdweb::Promise::make(permissions, "query", { .catchFunc = [](emscripten::val) {} }, ([]() { + val readPermissionsMap = val::object(); + readPermissionsMap.set("name", val("clipboard-read")); + return readPermissionsMap; + })()); + qstdweb::Promise::make(permissions, "query", { .catchFunc = [](emscripten::val) {} }, ([]() { + val readPermissionsMap = val::object(); + readPermissionsMap.set("name", val("clipboard-write")); + return readPermissionsMap; + })()); } void QWasmClipboard::installEventHandlers(const emscripten::val &canvas) diff --git a/src/plugins/platforms/wasm/qwasmclipboard.h b/src/plugins/platforms/wasm/qwasmclipboard.h index ef11fd2e49f..3aafb1eec85 100644 --- a/src/plugins/platforms/wasm/qwasmclipboard.h +++ b/src/plugins/platforms/wasm/qwasmclipboard.h @@ -30,12 +30,10 @@ public: void initClipboardPermissions(); void installEventHandlers(const emscripten::val &canvas); bool hasClipboardApi; - bool hasPermissionsApi; void writeToClipboardApi(); void writeToClipboard(const QMimeData *data); bool isPaste; bool m_isListener; - bool isSafari; }; QT_END_NAMESPACE