mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
NOTE: This CL appears far larger than it actually is for two reasons: 1) Many files were moved around to use the Dart package directory structure. 2) Many .dart files had to have import paths updated. - Organize mojo/public/dart so that it uses standard Dart package layout - Organize mojo/dart/apptest so that it uses a standard Dart package layout - Organize sky/sdk so that it uses a standard Dart package layout - Create a mojo/testing package (used by unittests) - Introduce the 'dart_pkg' gn rule which populates gen/Config/dart-pkg - All internally vended Dart packages must have a corresponding dart_pkg rule - It is now possible to use dependency_overrides: in pubspec.yaml to mix internal and external package dependencies (enables analyzer, editor, webstorm usage for internal developers). - Package root for dart content handler ends with "packages/" - Imports of mojo package uris no longer need the "public/dart" - mojo/public/tools/dart_package.py is a clone of mojo/public/tools/gn/zip.py - Sky tests no longer run 'deploy_sdk' script. R=eseidel@chromium.org Review URL: https://codereview.chromium.org/1132063007
59 lines
2.1 KiB
Plaintext
59 lines
2.1 KiB
Plaintext
<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>
|