From b9edb0a417792d9c4ff9387501225f96a3e1e7e8 Mon Sep 17 00:00:00 2001 From: Takashi Kawasaki Date: Thu, 13 Feb 2025 14:21:31 +0900 Subject: [PATCH] WIP --- lib/src/web/pdf.js.dart | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/src/web/pdf.js.dart b/lib/src/web/pdf.js.dart index d0f15ef..ff0e4ab 100644 --- a/lib/src/web/pdf.js.dart +++ b/lib/src/web/pdf.js.dart @@ -4,9 +4,12 @@ library; import 'dart:js_interop'; +import 'dart:js_interop_unsafe'; import 'dart:typed_data'; +import 'package:flutter/material.dart'; import 'package:synchronized/extension.dart'; +import 'package:web/helpers.dart'; import 'package:web/web.dart' as web; import '../../pdfrx.dart'; @@ -286,6 +289,15 @@ final _dummyJsSyncContext = {}; bool _pdfjsInitialized = false; +bool get _isSharedArrayBufferSupported { + try { + // Check if SharedArrayBuffer exists in the global JavaScript context + return window.hasProperty('SharedArrayBuffer'.toJS).toDart; + } catch (e) { + return false; + } +} + Future ensurePdfjsInitialized() async { if (_pdfjsInitialized) return; await _dummyJsSyncContext.synchronized(() async { @@ -295,6 +307,11 @@ Future ensurePdfjsInitialized() async { return; } + const isRunningWithWasm = bool.fromEnvironment('dart.tool.dart2wasm'); + debugPrint( + 'Running WASM: $isRunningWithWasm\nSharedArrayBuffer ${_isSharedArrayBufferSupported ? 'supported' : 'not supported'}}', + ); + final pdfJsSrc = PdfJsConfiguration.configuration?.pdfJsSrc ?? _pdfjsUrl; try { final script =