| <sky> |
| |
| <iframe></iframe> |
| |
| <script> |
| import 'dart:async'; |
| import 'dart:sky'; |
| import 'dart:sky.internals' as internals; |
| import 'dart:typed_data'; |
| |
| import 'package:mojo/application.dart'; |
| import 'package:mojo/bindings.dart'; |
| import 'package:mojo/core.dart'; |
| import 'package:mojom/mojo/shell.mojom.dart' as shell_mojom; |
| import 'package:mojom/mojo/input_events.mojom.dart' as input_events; |
| import 'package:mojom/mojo/view_manager.mojom.dart' as view_manager; |
| |
| // This include is a hack which only works with sky_server. For this to work |
| // in the sky_sdk, this echo_service would need to make its own dart package. |
| import '/gen/services/js/test/echo_service.mojom.dart' as echo_service_mojom; |
| |
| class IFrameEmbed extends Application { |
| IFrameEmbed.fromHandle(MojoHandle handle) : super.fromHandle(handle); |
| IFrameEmbed(MojoMessagePipeEndpoint endpoint) : super(endpoint); |
| |
| void initialize(List<String> args, String url) { |
| // The vmcApp provides ViewManagerClient and EchoService. |
| const vmcURL = |
| "http://127.0.0.1:8000/sky/tests/services/resources/iframe-vmc.js"; |
| final vmcAppConnection = connectToApplication(vmcURL); |
| |
| // The Promise returned by the vmcApp's echoString() method will not |
| // resolve until the vmcApp's onEmbed() method runs. |
| final echoService = new echo_service_mojom.EchoServiceProxy.unbound(); |
| vmcAppConnection.requestService(echoService); |
| echoService.ptr.echoString("success").then((response) { |
| internals.notifyTestComplete(response.value); |
| }); |
| |
| var applicationPipe = new MojoMessagePipe(); |
| var proxyEndpoint = applicationPipe.endpoints[0]; |
| var applicationEndpoint = applicationPipe.endpoints[1]; |
| vmcAppConnection.remoteServiceProvider.ptr.connectToService( |
| view_manager.ViewManagerClientName, applicationEndpoint); |
| document.querySelector("iframe"). |
| embedViewManagerClient(proxyEndpoint.handle.h); |
| } |
| } |
| |
| main() { |
| var messagePipe = new MojoMessagePipe(); |
| var app = new IFrameEmbed(messagePipe.endpoints[1]); |
| var shellProxy = new shell_mojom.ShellProxy.fromHandle( |
| new MojoHandle(internals.takeShellProxyHandle())); |
| app.initializeFromShellProxy(shellProxy, [], ""); |
| } |
| </script> |
| </sky> |