mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
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
59 lines
2.2 KiB
Plaintext
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>
|