flutter_flutter/tests/services/iframe-embed-vmc.sky
Eric Seidel 8ad5f14611 Currently we use package: to mean "/gen", which is not at all how
Dart actually expects package: to work.  This CL makes package:foo
map to /packages/foo, similar to how Dartium or bin/dart would expect.

This also means overlaying the /gen directory over the actual package
outputs (as consumers of an SDK would expect) as well as adding
an additional /lib indirection for the actual package source as
the Dart pub tool will expect.

This is far from perfect, but it unlocks us actually producing a
sky SDK.

I expect there may be some fallout from this change as I'm sure I
missed some package: uses.  We also don't have a general solution
for all /foo/bar/baz includes which randomly included parts
of mojo's source directory.  Those will need to be updated to use
a package: and deploy_sdk.py taught how to build a package for them.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/990493002
2015-03-13 16:58:53 -07:00

59 lines
2.2 KiB
Plaintext

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