summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/platforms/wasm/qwasmclipboard.cpp39
-rw-r--r--src/plugins/platforms/wasm/qwasmclipboard.h2
2 files changed, 15 insertions, 26 deletions
diff --git a/src/plugins/platforms/wasm/qwasmclipboard.cpp b/src/plugins/platforms/wasm/qwasmclipboard.cpp
index 99f3e61155..97a0547563 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();
-
- // 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)
+
+ const bool hasPermissionsApi = !val::global("navigator")["permissions"].isUndefined();
+ hasClipboardApi = !clipboard.isUndefined() && !clipboard["readText"].isUndefined();
+
+ 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<val>("query", readPermissionsMap);
- val writePermissionsMap = val::object();
- writePermissionsMap.set("name", val("clipboard-write"));
- permissions.call<val>("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 ef11fd2e49..3aafb1eec8 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