[sdk] Fix infinite recursion in ViewContainerListenerImpl.
This causes infinite recursion:
factory ViewContainerListenerImpl() {
return _instance ??= ViewContainerListenerImpl();
}
Testing: Manual.
Change-Id: Ifc00ca1bf7b2377545d8097414e64b8b244a6d96
diff --git a/public/dart/fuchsia_scenic_flutter/lib/src/child_view_connection.dart b/public/dart/fuchsia_scenic_flutter/lib/src/child_view_connection.dart
index 379db7d..8af9619 100644
--- a/public/dart/fuchsia_scenic_flutter/lib/src/child_view_connection.dart
+++ b/public/dart/fuchsia_scenic_flutter/lib/src/child_view_connection.dart
@@ -32,7 +32,7 @@
}
final ViewContainerProxy proxy = ViewContainerProxy()
..ctrl.bind(InterfaceHandle<ViewContainer>(Channel(handle)))
- ..setListener(ViewContainerListenerImpl().createInterfaceHandle());
+ ..setListener(ViewContainerListenerImpl.instance.createInterfaceHandle());
assert(() {
proxy.ctrl.whenClosed.then((_) async {
diff --git a/public/dart/fuchsia_scenic_flutter/lib/src/internal/_view_container_listener_impl.dart b/public/dart/fuchsia_scenic_flutter/lib/src/internal/_view_container_listener_impl.dart
index 9ba4b3e..3f4d5c1 100644
--- a/public/dart/fuchsia_scenic_flutter/lib/src/internal/_view_container_listener_impl.dart
+++ b/public/dart/fuchsia_scenic_flutter/lib/src/internal/_view_container_listener_impl.dart
@@ -11,18 +11,15 @@
/// A singleton class that allows receive events from the view container.
class ViewContainerListenerImpl extends ViewContainerListener {
- static ViewContainerListenerImpl _instance;
+ /// The shared [ViewContainerListenerImpl] instance.
+ static final ViewContainerListenerImpl instance =
+ new ViewContainerListenerImpl();
static final Map<int, ChildViewConnection> _connections =
HashMap<int, ChildViewConnection>();
final ViewContainerListenerBinding _binding = ViewContainerListenerBinding();
- /// Initializes the shared [ViewContainerListenerImpl] instance
- factory ViewContainerListenerImpl() {
- return _instance ??= ViewContainerListenerImpl();
- }
-
/// adds a [ChildViewConnection] for a given [key]
void addConnectionForKey(int key, ChildViewConnection connection) {
_connections[key] = connection;