mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
This change causes the generated abstract class having the same name as the interface to contain only the interface's method declarations. The generated Proxy class then implements the base class. In addition to implementing the interface methods, the generated Proxy class has one private field _proxyImpl, which is a MojoEventStreamListener and manages sending messages and receiving responses. Operations on the ProxyImpl (close, bind, etc.) are exposed through generated utility functions. The generated Stub is largely as before with the difference that a class providing a service will implement the mojo interface and *have* a Stub rather than be a Stub. Where appropriate, this change also calls listen() immediately where a Stub is constructed. BUG= R=hansmuller@google.com, sky@chromium.org Review URL: https://codereview.chromium.org/959993002
56 lines
2.1 KiB
Plaintext
56 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 '/mojo/public/dart/application.dart';
|
|
import 'mojo:bindings';
|
|
import 'mojo:core';
|
|
|
|
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;
|
|
import 'package: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>
|