|
167 | 167 | ReturnValues["invokeAsyncThrowsSerializingCircularStructure"] = $"Failure: {ex.Message}"; |
168 | 168 | } |
169 | 169 |
|
170 | | - try |
171 | | - { |
172 | | - var undefinedJsObjectReference = await JSRuntime.InvokeAsync<IJSObjectReference>("returnUndefined"); |
173 | | - ReturnValues["invokeAsyncUndefinedJSObjectReference"] = undefinedJsObjectReference is null ? "Success" : "Failure: not null"; |
174 | | - } |
175 | | - catch (JSException ex) |
176 | | - { |
177 | | - ReturnValues["invokeAsyncUndefinedJSObjectReference"] = $"Failure: {ex.Message}"; |
178 | | - } |
179 | | - catch (Exception ex) |
180 | | - { |
181 | | - ReturnValues["invokeAsyncUndefinedJSObjectReference"] = $"Failure: {ex.Message}"; |
182 | | - } |
183 | | - |
184 | | - try |
185 | | - { |
186 | | - var nullJsObjectReference = await JSRuntime.InvokeAsync<IJSObjectReference>("returnNull"); |
187 | | - ReturnValues["invokeAsyncNullJSObjectReference"] = nullJsObjectReference is null ? "Success" : "Failure: not null"; |
188 | | - } |
189 | | - catch (JSException ex) |
190 | | - { |
191 | | - ReturnValues["invokeAsyncNullJSObjectReference"] = $"Failure: {ex.Message}"; |
192 | | - } |
193 | | - catch (Exception ex) |
194 | | - { |
195 | | - ReturnValues["invokeAsyncNullJSObjectReference"] = $"Failure: {ex.Message}"; |
196 | | - } |
197 | | - |
198 | | - try |
199 | | - { |
200 | | - var nullVariableJsObjectReference = await JSRuntime.GetValueAsync<IJSObjectReference>("jsInteropTests.testObject.nullProperty"); |
201 | | - ReturnValues["invokeAsyncNullFromVariableJSObjectReference"] = nullVariableJsObjectReference is null ? "Success" : "Failure: not null"; |
202 | | - } |
203 | | - catch (JSException) |
204 | | - { |
205 | | - ReturnValues["invokeAsyncNullFromVariableJSObjectReference"] = "Failure"; |
206 | | - } |
207 | | - catch (Exception ex) |
208 | | - { |
209 | | - ReturnValues["invokeAsyncNullFromVariableJSObjectReference"] = $"Failure: {ex.Message}"; |
210 | | - } |
211 | 170 |
|
212 | 171 | var jsObjectReference = await JSRuntime.InvokeAsync<IJSObjectReference>("returnJSObjectReference"); |
213 | 172 | ReturnValues["jsObjectReference.identity"] = await jsObjectReference.InvokeAsync<string>("identity", "Invoked from JSObjectReference"); |
|
322 | 281 | FunctionReferenceTests(); |
323 | 282 | } |
324 | 283 |
|
| 284 | + await JSObjectReferenceAsyncTests(); |
| 285 | + if (shouldSupportSyncInterop) |
| 286 | + { |
| 287 | + JSObjectReferenceTests(); |
| 288 | + } |
| 289 | + |
325 | 290 | Invocations = invocations; |
326 | 291 | DoneWithInterop = true; |
327 | 292 | } |
|
408 | 373 | ReturnValues["invokeThrowsSerializingCircularStructure"] = $"Failure: {ex.Message}"; |
409 | 374 | } |
410 | 375 |
|
411 | | - try |
412 | | - { |
413 | | - var undefinedJsObjectReference = inProcRuntime.Invoke<IJSObjectReference>("returnUndefined"); |
414 | | - ReturnValues["invokeUndefinedJSObjectReference"] = undefinedJsObjectReference is null ? "Success" : "Failure: not null"; |
415 | | - Console.WriteLine($"Received undefined JSObjectReference: {undefinedJsObjectReference}"); |
416 | | - } |
417 | | - catch (JSException ex) |
418 | | - { |
419 | | - ReturnValues["invokeUndefinedJSObjectReference"] = $"Failure: {ex.Message}"; |
420 | | - } |
421 | | - catch (Exception ex) |
422 | | - { |
423 | | - ReturnValues["invokeUndefinedJSObjectReference"] = $"Failure: {ex.Message}"; |
424 | | - } |
425 | | - |
426 | | - try |
427 | | - { |
428 | | - var nullJsObjectReference = inProcRuntime.Invoke<IJSObjectReference>("returnNull"); |
429 | | - ReturnValues["invokeNullJSObjectReference"] = nullJsObjectReference is null ? "Success" : "Failure: not null"; |
430 | | - Console.WriteLine($"Received undefined JSObjectReference: {nullJsObjectReference}"); |
431 | | - } |
432 | | - catch (JSException ex) |
433 | | - { |
434 | | - ReturnValues["invokeNullJSObjectReference"] = $"Failure: {ex.Message}"; |
435 | | - } |
436 | | - catch (Exception ex) |
437 | | - { |
438 | | - ReturnValues["invokeNullJSObjectReference"] = $"Failure: {ex.Message}"; |
439 | | - } |
440 | | - |
441 | | - try |
442 | | - { |
443 | | - var nullVariableJsObjectReference = inProcRuntime.GetValue<IJSObjectReference>("jsInteropTests.testObject.nullProperty"); |
444 | | - ReturnValues["invokeNullFromVariableJSObjectReference"] = nullVariableJsObjectReference is null ? "Success" : "Failure: not null"; |
445 | | - Console.WriteLine($"Received undefined JSObjectReference: {nullVariableJsObjectReference}"); |
446 | | - } |
447 | | - catch (JSException ex) |
448 | | - { |
449 | | - ReturnValues["invokeNullFromVariableJSObjectReference"] = $"Failure: {ex.Message}"; |
450 | | - } |
451 | | - catch (Exception ex) |
452 | | - { |
453 | | - ReturnValues["invokeNullFromVariableJSObjectReference"] = $"Failure: {ex.Message}"; |
454 | | - } |
455 | | - |
456 | 376 | var jsInProcObjectReference = inProcRuntime.Invoke<IJSInProcessObjectReference>("returnJSObjectReference"); |
457 | 377 | ReturnValues["jsInProcessObjectReference.identity"] = jsInProcObjectReference.Invoke<string>("identity", "Invoked from JSInProcessObjectReference"); |
458 | 378 |
|
|
657 | 577 | ReturnValues["changeFunctionViaObjectReference"] = testClassRef.Invoke<int>("getTextLength").ToString(); |
658 | 578 | } |
659 | 579 |
|
| 580 | + private async Task JSObjectReferenceAsyncTests() |
| 581 | + { |
| 582 | + try |
| 583 | + { |
| 584 | + var undefinedJsObjectReference = await JSRuntime.InvokeAsync<IJSObjectReference>("jsInteropTests.returnUndefined"); |
| 585 | + ReturnValues["invokeAsyncUndefinedJSObjectReference"] = undefinedJsObjectReference is null ? "Success" : $"Failure: not null (type: {undefinedJsObjectReference.GetType().FullName})"; |
| 586 | + } |
| 587 | + catch (JSException ex) |
| 588 | + { |
| 589 | + ReturnValues["invokeAsyncUndefinedJSObjectReference"] = $"Failure: {ex.Message}"; |
| 590 | + } |
| 591 | + catch (Exception ex) |
| 592 | + { |
| 593 | + ReturnValues["invokeAsyncUndefinedJSObjectReference"] = $"Failure: {ex.Message}"; |
| 594 | + } |
| 595 | + |
| 596 | + try |
| 597 | + { |
| 598 | + var nullJsObjectReference = await JSRuntime.InvokeAsync<IJSObjectReference>("jsInteropTests.returnNull"); |
| 599 | + ReturnValues["invokeAsyncNullJSObjectReference"] = nullJsObjectReference is null ? "Success" : $"Failure: not null (type: {nullJsObjectReference.GetType().FullName})"; |
| 600 | + } |
| 601 | + catch (JSException ex) |
| 602 | + { |
| 603 | + ReturnValues["invokeAsyncNullJSObjectReference"] = $"Failure: {ex.Message}"; |
| 604 | + } |
| 605 | + catch (Exception ex) |
| 606 | + { |
| 607 | + ReturnValues["invokeAsyncNullJSObjectReference"] = $"Failure: {ex.Message}"; |
| 608 | + } |
| 609 | + |
| 610 | + try |
| 611 | + { |
| 612 | + var nullVariableJsObjectReference = await JSRuntime.GetValueAsync<IJSObjectReference>("jsInteropTests.testObject.nullProperty"); |
| 613 | + ReturnValues["invokeAsyncNullFromVariableJSObjectReference"] = nullVariableJsObjectReference is null ? "Success" : $"Failure: not null (type: {nullVariableJsObjectReference.GetType().FullName})"; |
| 614 | + } |
| 615 | + catch (JSException ex) |
| 616 | + { |
| 617 | + ReturnValues["invokeAsyncNullFromVariableJSObjectReference"] = $"Failure: {ex.Message}"; |
| 618 | + } |
| 619 | + catch (Exception ex) |
| 620 | + { |
| 621 | + ReturnValues["invokeAsyncNullFromVariableJSObjectReference"] = $"Failure: {ex.Message}"; |
| 622 | + } |
| 623 | + |
| 624 | + try |
| 625 | + { |
| 626 | + await JSRuntime.GetValueAsync<IJSObjectReference>("nonexistend"); |
| 627 | + } |
| 628 | + catch (JSException) |
| 629 | + { |
| 630 | + ReturnValues["invokeAsyncNonExistentJSObjectReference"] = "Success"; |
| 631 | + } |
| 632 | + catch (Exception ex) |
| 633 | + { |
| 634 | + ReturnValues["invokeAsyncNonExistentJSObjectReference"] = "Failure"; |
| 635 | + } |
| 636 | + } |
| 637 | + |
| 638 | + private async Task JSObjectReferenceTests() |
| 639 | + { |
| 640 | + var inProcRuntime = ((IJSInProcessRuntime)JSRuntime); |
| 641 | + |
| 642 | + try |
| 643 | + { |
| 644 | + var undefinedJsObjectReference = inProcRuntime.Invoke<IJSObjectReference>("returnUndefined"); |
| 645 | + ReturnValues["invokeUndefinedJSObjectReference"] = undefinedJsObjectReference is null ? "Success" : $"Failure: not null (type: {undefinedJsObjectReference.GetType().FullName})"; |
| 646 | + } |
| 647 | + catch (JSException ex) |
| 648 | + { |
| 649 | + ReturnValues["invokeUndefinedJSObjectReference"] = $"Failure: {ex.Message}"; |
| 650 | + } |
| 651 | + catch (Exception ex) |
| 652 | + { |
| 653 | + ReturnValues["invokeUndefinedJSObjectReference"] = $"Failure: {ex.Message}"; |
| 654 | + } |
| 655 | + |
| 656 | + try |
| 657 | + { |
| 658 | + var nullJsObjectReference = inProcRuntime.Invoke<IJSObjectReference>("returnNull"); |
| 659 | + ReturnValues["invokeNullJSObjectReference"] = nullJsObjectReference is null ? "Success" : $"Failure: not null (type: {nullJsObjectReference.GetType().FullName})"; |
| 660 | + } |
| 661 | + catch (JSException ex) |
| 662 | + { |
| 663 | + ReturnValues["invokeNullJSObjectReference"] = $"Failure: {ex.Message}"; |
| 664 | + } |
| 665 | + catch (Exception ex) |
| 666 | + { |
| 667 | + ReturnValues["invokeNullJSObjectReference"] = $"Failure: {ex.Message}"; |
| 668 | + } |
| 669 | + |
| 670 | + try |
| 671 | + { |
| 672 | + var nullVariableJsObjectReference = inProcRuntime.GetValue<IJSObjectReference>("jsInteropTests.testObject.nullProperty"); |
| 673 | + ReturnValues["invokeNullFromVariableJSObjectReference"] = nullVariableJsObjectReference is null ? "Success" : $"Failure: not null (type: {nullVariableJsObjectReference.GetType().FullName})"; |
| 674 | + } |
| 675 | + catch (JSException ex) |
| 676 | + { |
| 677 | + ReturnValues["invokeNullFromVariableJSObjectReference"] = $"Failure: {ex.Message}"; |
| 678 | + } |
| 679 | + catch (Exception ex) |
| 680 | + { |
| 681 | + ReturnValues["invokeNullFromVariableJSObjectReference"] = $"Failure: {ex.Message}"; |
| 682 | + } |
| 683 | + |
| 684 | + try |
| 685 | + { |
| 686 | + inProcRuntime.GetValue<IJSObjectReference>("nonexistend"); |
| 687 | + } |
| 688 | + catch (JSException) |
| 689 | + { |
| 690 | + ReturnValues["invokeNonExistentJSObjectReference"] = "Success"; |
| 691 | + } |
| 692 | + catch (Exception ex) |
| 693 | + { |
| 694 | + ReturnValues["invokeNonExistentJSObjectReference"] = "Failure"; |
| 695 | + } |
| 696 | + } |
| 697 | + |
660 | 698 | public class PassDotNetObjectByRefArgs |
661 | 699 | { |
662 | 700 | public string StringValue { get; set; } |
|
0 commit comments