| <sky> | 
 |  | 
 | <iframe></iframe> | 
 |  | 
 | <script> | 
 | import 'dart:async'; | 
 | import 'dart:sky'; | 
 | import 'dart:sky.internals' as internals; | 
 | import 'dart:typed_data'; | 
 |  | 
 | import 'package:mojo/public/dart/application.dart'; | 
 | import 'package:mojo/public/dart/bindings.dart'; | 
 | import 'package:mojo/public/dart/core.dart'; | 
 | import 'package:mojo/shell.mojom.dart' as shell_mojom; | 
 | import 'package:mojo/input_events.mojom.dart' as input_events; | 
 | import 'package: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> |