@@ -305,16 +305,10 @@ final class DatabaseClient implements WebSqlite {
305305
306306 Future <void > _startDedicated () async {
307307 if (globalContext.has ('Worker' )) {
308- final Worker dedicated;
309- try {
310- dedicated = Worker (
311- workerUri.toString ().toJS,
312- WorkerOptions (name: 'sqlite3_worker' ),
313- );
314- } on Object {
315- _missingFeatures.add (MissingBrowserFeature .dedicatedWorkers);
316- return ;
317- }
308+ final dedicated = Worker (
309+ workerUri.toString ().toJS,
310+ WorkerOptions (name: 'sqlite3_worker' ),
311+ );
318312
319313 final (endpoint, channel) = await createChannel ();
320314 ConnectRequest (endpoint: endpoint, requestId: 0 ).sendToWorker (dedicated);
@@ -328,14 +322,8 @@ final class DatabaseClient implements WebSqlite {
328322
329323 Future <void > _startShared () async {
330324 if (globalContext.has ('SharedWorker' )) {
331- final SharedWorker shared;
332- try {
333- shared = SharedWorker (workerUri.toString ().toJS);
334- shared.port.start ();
335- } on Object {
336- _missingFeatures.add (MissingBrowserFeature .sharedWorkers);
337- return ;
338- }
325+ final shared = SharedWorker (workerUri.toString ().toJS);
326+ shared.port.start ();
339327
340328 final (endpoint, channel) = await createChannel ();
341329 ConnectRequest (endpoint: endpoint, requestId: 0 ).sendToPort (shared.port);
@@ -398,15 +386,22 @@ final class DatabaseClient implements WebSqlite {
398386 final available = < (StorageMode , AccessMode )> [];
399387 var workersReportedIndexedDbSupport = false ;
400388
401- if (_connectionToDedicated case final connection? ) {
402- final response = await connection.sendRequest (
403- CompatibilityCheck (
404- requestId: 0 ,
405- type: MessageType .dedicatedCompatibilityCheck,
406- databaseName: databaseName,
407- ),
408- MessageType .simpleSuccessResponse,
409- );
389+ Future <void > dedicatedCompatibilityCheck (
390+ WorkerConnection connection) async {
391+ SimpleSuccessResponse response;
392+ try {
393+ response = await connection.sendRequest (
394+ CompatibilityCheck (
395+ requestId: 0 ,
396+ type: MessageType .dedicatedCompatibilityCheck,
397+ databaseName: databaseName,
398+ ),
399+ MessageType .simpleSuccessResponse,
400+ );
401+ } on Object {
402+ return ;
403+ }
404+
410405 final result = CompatibilityResult .fromJS (response.response as JSObject );
411406 existing.addAll (result.existingDatabases);
412407 available.add ((StorageMode .inMemory, AccessMode .throughDedicatedWorker));
@@ -440,15 +435,21 @@ final class DatabaseClient implements WebSqlite {
440435 }
441436 }
442437
443- if (_connectionToShared case final connection? ) {
444- final response = await connection.sendRequest (
445- CompatibilityCheck (
446- requestId: 0 ,
447- type: MessageType .sharedCompatibilityCheck,
448- databaseName: databaseName,
449- ),
450- MessageType .simpleSuccessResponse,
451- );
438+ Future <void > sharedCompatibilityCheck (WorkerConnection connection) async {
439+ SimpleSuccessResponse response;
440+ try {
441+ response = await connection.sendRequest (
442+ CompatibilityCheck (
443+ requestId: 0 ,
444+ type: MessageType .sharedCompatibilityCheck,
445+ databaseName: databaseName,
446+ ),
447+ MessageType .simpleSuccessResponse,
448+ );
449+ } on Object {
450+ return ;
451+ }
452+
452453 final result = CompatibilityResult .fromJS (response.response as JSObject );
453454
454455 if (result.canUseIndexedDb) {
@@ -473,6 +474,13 @@ final class DatabaseClient implements WebSqlite {
473474 }
474475 }
475476
477+ if (_connectionToDedicated case final dedicated? ) {
478+ await dedicatedCompatibilityCheck (dedicated);
479+ }
480+ if (_connectionToShared case final shared? ) {
481+ await sharedCompatibilityCheck (shared);
482+ }
483+
476484 available.add ((StorageMode .inMemory, AccessMode .inCurrentContext));
477485 if (workersReportedIndexedDbSupport || await checkIndexedDbSupport ()) {
478486 // If the workers can use IndexedDb, so can we.
0 commit comments