Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
34405f8
++
goderbauer Apr 10, 2023
042d107
works
goderbauer Apr 11, 2023
0911082
++
goderbauer Apr 11, 2023
20b9688
can global key move
goderbauer Apr 11, 2023
a559d6d
change framework
goderbauer Apr 12, 2023
5546fb0
slots are set correctly
goderbauer Apr 12, 2023
2b02d56
examples
goderbauer Apr 12, 2023
27fbcde
WidgetInspector & SemanticsDebugger
goderbauer Apr 13, 2023
82f6ef5
dev mirgated
goderbauer Apr 13, 2023
67275d6
flutte drive
goderbauer Apr 13, 2023
8527f39
testing minus livetest
goderbauer Apr 13, 2023
0eb2111
fix createViewConfigurationFor
goderbauer Apr 14, 2023
b1a32af
disable LiveTesting stuff
goderbauer Apr 14, 2023
70aefd5
hit testing
goderbauer Apr 14, 2023
5a27c9f
semantics id chnge
goderbauer Apr 14, 2023
1602e80
backwards compatible renderVIew nad pipelineowner
goderbauer Apr 14, 2023
00b0e83
fix dirty flag
goderbauer Apr 14, 2023
06151ad
fix most of rendering
goderbauer Apr 14, 2023
7e10995
fix most of rendering
goderbauer Apr 14, 2023
ec59a3a
more fixes for tests
goderbauer Apr 14, 2023
0aeecc1
backwards
goderbauer Apr 14, 2023
34f2cc4
restoration fix - 171 failures
goderbauer Apr 17, 2023
b7e217d
fix navigator - 95 failing
goderbauer Apr 17, 2023
41ee7dc
maybe all passing?
goderbauer Apr 17, 2023
8dd38d0
all tests
goderbauer Apr 17, 2023
df2dbd2
enable datepicker tests
goderbauer Apr 17, 2023
2994559
dart:ui shims
goderbauer Apr 24, 2023
6df2048
deprecation notices
goderbauer Apr 24, 2023
70c4dc7
enable pointer tests
goderbauer Apr 24, 2023
f557b38
fix CI
goderbauer Apr 24, 2023
cb930f2
mark root in timeline
goderbauer Apr 24, 2023
b9d9868
fix more CI issues
goderbauer Apr 24, 2023
6d85176
collection
goderbauer Apr 25, 2023
2c1b6a5
adjustment for prototype
goderbauer Apr 26, 2023
7d70bd5
fix gesture view IDs
goderbauer May 8, 2023
2f44463
LiveWidgetTestBinding
goderbauer May 9, 2023
ce725c0
Add RawView
goderbauer May 9, 2023
c50c0fd
better backwards compatibility
goderbauer May 10, 2023
b65d65c
fix analyer warnings
goderbauer May 10, 2023
c508eab
fix web test
goderbauer May 10, 2023
483019f
fix test to support random execution order
goderbauer May 18, 2023
6f1083d
fix rebase
goderbauer Jun 7, 2023
48cc2eb
rebase fix
goderbauer Jun 7, 2023
67f6af1
revert cancel pointer
goderbauer Jun 7, 2023
08d015f
random fixes
goderbauer Jun 7, 2023
7c2249a
improve docs
goderbauer Jun 7, 2023
66a588c
remove unused error handler
goderbauer Jun 8, 2023
78622ce
error handling started
goderbauer Jun 8, 2023
ced43ba
some tests work
goderbauer Jun 9, 2023
1448cce
Most error tests pass
goderbauer Jun 9, 2023
4669c2a
minor improvments
goderbauer Jun 9, 2023
99652e8
more tests
goderbauer Jun 10, 2023
26d6641
all error tests pass
goderbauer Jun 10, 2023
e6cbdff
fix all but independent_widget_layout_test.dart
goderbauer Jun 10, 2023
6818c63
++
goderbauer Jun 10, 2023
d94d126
updateSlot, added commented out globalkey tests
goderbauer Jun 12, 2023
0b0a7bd
fix independent layout test
goderbauer Jun 12, 2023
2e81007
fix allocation test
goderbauer Jun 14, 2023
80224be
Fix IntegrationTestWidgetsFlutterBinding
goderbauer Jun 14, 2023
8fe8d38
WIP with lots of prints
goderbauer Jun 17, 2023
45f511f
ViewElement gets viewhooks from dependencies directly
goderbauer Jun 20, 2023
1b73a11
all framework tests pass again plus a new test
goderbauer Jun 20, 2023
60f08d8
fix analyzsis
goderbauer Jun 20, 2023
b9b44c7
fix last test
goderbauer Jun 21, 2023
1fbc927
move code arround
goderbauer Jun 21, 2023
9a894be
more tests
goderbauer Jun 21, 2023
c5f7b62
analyzer
goderbauer Jun 21, 2023
9a77c78
renderer binding tests
goderbauer Jun 21, 2023
920870b
another batch of tests
goderbauer Jun 21, 2023
d989fa2
more tests
goderbauer Jun 26, 2023
6e5199e
all framework tests done
goderbauer Jun 26, 2023
b08dc8d
fix string matching tests
goderbauer Jun 26, 2023
1638115
tiny test fix
goderbauer Jun 26, 2023
7ed29b3
a11y guideline tests
goderbauer Jun 27, 2023
982413b
controller tests
goderbauer Jun 27, 2023
ce4f9e1
more tests
goderbauer Jun 27, 2023
d4b9d67
various doc fixes
goderbauer Jun 28, 2023
4e96946
whitespace
goderbauer Jun 28, 2023
9b40ce4
rendering docs done
goderbauer Jun 28, 2023
fb8dd2e
first batch of widget docs
goderbauer Jun 28, 2023
56182fb
all docs updated
goderbauer Jun 28, 2023
d56b2cc
more tests
goderbauer Jun 28, 2023
69d08ab
fixing tests and some more tests
goderbauer Jun 30, 2023
eebcd87
fix doc references
goderbauer Jun 30, 2023
36f10b1
comment
goderbauer Jun 30, 2023
69d3d86
another comment fix
goderbauer Jun 30, 2023
92ab294
add ViewConfiguration workaround
goderbauer Jul 1, 2023
20701f1
fix semantics tree disposal
goderbauer Jul 5, 2023
1eb01e8
another test
goderbauer Jul 5, 2023
51f73f7
RenderViewRepository -> RenderViewManager
goderbauer Jul 6, 2023
d993b9d
review
goderbauer Jul 6, 2023
7394a47
remove unrechable
goderbauer Jul 6, 2023
431a40b
more review
goderbauer Jul 6, 2023
81486ec
make ViewHooksScope private
goderbauer Jul 6, 2023
8c198a4
implement DiagnosticableTreeMixin for PipelineOwner
goderbauer Jul 6, 2023
dca0cac
fix typo
goderbauer Jul 6, 2023
39257ae
rename ViewHooksScope in tests, rename attachmentPoint, doc fixes
goderbauer Jul 6, 2023
89d6e69
review
goderbauer Jul 7, 2023
15df175
fix up error strings in tests
goderbauer Jul 7, 2023
20b9671
typo
goderbauer Jul 7, 2023
765ef50
use FlutterLogo
goderbauer Jul 7, 2023
27c57e2
review
goderbauer Jul 7, 2023
0e4e8c0
update docs on RenderObjectToWidgetElement
goderbauer Jul 8, 2023
0bedad9
remove viewhooks, renderviewmanager
goderbauer Jul 8, 2023
3639a9a
Remove outdated reference to RenderViewManager
goderbauer Jul 10, 2023
3fcfe08
make rawview private
goderbauer Jul 10, 2023
1e41ab3
root PO cannot manage root node
goderbauer Jul 10, 2023
2dbd70e
typo
goderbauer Jul 10, 2023
ca48123
fix test
goderbauer Jul 11, 2023
d1c72d9
fix one more test
goderbauer Jul 11, 2023
5bd284b
doc updates
goderbauer Jul 12, 2023
2d42239
fix reference
goderbauer Jul 12, 2023
d41dec4
more doc rewrites
goderbauer Jul 12, 2023
4cb37b7
doc doctorings
goderbauer Jul 13, 2023
b33f95a
maybe the last doc fix?
goderbauer Jul 13, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Future<void> main() async {
size: const Size(355.0, 635.0),
view: tester.view,
);
final RenderView renderView = WidgetsBinding.instance.renderView;
final RenderView renderView = WidgetsBinding.instance.renderViews.single;
binding.framePolicy = LiveTestWidgetsFlutterBindingFramePolicy.benchmark;

watch.start();
Expand Down
2 changes: 1 addition & 1 deletion dev/bots/test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1361,7 +1361,7 @@ Future<void> _runWebTreeshakeTest() async {
final String javaScript = mainDartJs.readAsStringSync();

// Check that we're not looking at minified JS. Otherwise this test would result in false positive.
expect(javaScript.contains('RenderObjectToWidgetElement'), true);
expect(javaScript.contains('RootElement'), true);

const String word = 'debugFillProperties';
int count = 0;
Expand Down
4 changes: 2 additions & 2 deletions dev/integration_tests/flutter_gallery/test/smoke_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ Future<void> smokeDemo(WidgetTester tester, GalleryDemo demo) async {
// Verify that the dumps are pretty.
final String routeName = demo.routeName;
verifyToStringOutput('debugDumpApp', routeName, WidgetsBinding.instance.rootElement!.toStringDeep());
verifyToStringOutput('debugDumpRenderTree', routeName, RendererBinding.instance.renderView.toStringDeep());
verifyToStringOutput('debugDumpLayerTree', routeName, RendererBinding.instance.renderView.debugLayer?.toStringDeep() ?? '');
verifyToStringOutput('debugDumpRenderTree', routeName, RendererBinding.instance.renderViews.single.toStringDeep());
verifyToStringOutput('debugDumpLayerTree', routeName, RendererBinding.instance.renderViews.single.debugLayer?.toStringDeep() ?? '');
verifyToStringOutput('debugDumpFocusTree', routeName, WidgetsBinding.instance.focusManager.toStringDeep());

// Scroll the demo around a bit more.
Expand Down
3 changes: 2 additions & 1 deletion examples/layers/rendering/custom_coordinate_systems.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
// system. Most of the guts of this examples are in src/sector_layout.dart.

import 'package:flutter/rendering.dart';
import 'src/binding.dart';
import 'src/sector_layout.dart';

RenderBox buildSectorExample() {
Expand All @@ -21,5 +22,5 @@ RenderBox buildSectorExample() {
}

void main() {
RenderingFlutterBinding(root: buildSectorExample()).scheduleFrame();
ViewRenderingFlutterBinding(root: buildSectorExample()).scheduleFrame();
}
3 changes: 2 additions & 1 deletion examples/layers/rendering/flex_layout.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import 'package:flutter/rendering.dart';

import 'src/binding.dart';
import 'src/solid_color_box.dart';

void main() {
Expand Down Expand Up @@ -86,5 +87,5 @@ void main() {
child: RenderPadding(child: table, padding: const EdgeInsets.symmetric(vertical: 50.0)),
);

RenderingFlutterBinding(root: root).scheduleFrame();
ViewRenderingFlutterBinding(root: root).scheduleFrame();
}
6 changes: 4 additions & 2 deletions examples/layers/rendering/hello_world.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@

import 'package:flutter/rendering.dart';

import 'src/binding.dart';

void main() {
// We use RenderingFlutterBinding to attach the render tree to the window.
RenderingFlutterBinding(
// We use ViewRenderingFlutterBinding to attach the render tree to the window.
ViewRenderingFlutterBinding(
// The root of our render tree is a RenderPositionedBox, which centers its
// child both vertically and horizontally.
root: RenderPositionedBox(
Expand Down
4 changes: 3 additions & 1 deletion examples/layers/rendering/spinning_square.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import 'package:flutter/animation.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/scheduler.dart';

import 'src/binding.dart';

class NonStopVSync implements TickerProvider {
const NonStopVSync();
@override
Expand Down Expand Up @@ -42,7 +44,7 @@ void main() {
child: spin,
);
// and attach it to the window.
RenderingFlutterBinding(root: root);
ViewRenderingFlutterBinding(root: root);

// To make the square spin, we use an animation that repeats every 1800
// milliseconds.
Expand Down
69 changes: 69 additions & 0 deletions examples/layers/rendering/src/binding.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:ui';

import 'package:flutter/rendering.dart';

/// An extension of [RenderingFlutterBinding] that owns and manages a
/// [renderView].
///
/// Unlike [RenderingFlutterBinding], this binding also creates and owns a
/// [renderView] to simplify bootstrapping for apps that have a dedicated main
/// view.
class ViewRenderingFlutterBinding extends RenderingFlutterBinding {
/// Creates a binding for the rendering layer.
///
/// The `root` render box is attached directly to the [renderView] and is
/// given constraints that require it to fill the window. The [renderView]
/// itself is attached to the [rootPipelineOwner].
///
/// This binding does not automatically schedule any frames. Callers are
/// responsible for deciding when to first call [scheduleFrame].
ViewRenderingFlutterBinding({ RenderBox? root }) : _root = root;

@override
void initInstances() {
super.initInstances();
// TODO(goderbauer): Create window if embedder doesn't provide an implicit view.
assert(PlatformDispatcher.instance.implicitView != null);
_renderView = initRenderView(PlatformDispatcher.instance.implicitView!);
_renderView.child = _root;
_root = null;
}

RenderBox? _root;

@override
RenderView get renderView => _renderView;
late RenderView _renderView;

/// Creates a [RenderView] object to be the root of the
/// [RenderObject] rendering tree, and initializes it so that it
/// will be rendered when the next frame is requested.
///
/// Called automatically when the binding is created.
RenderView initRenderView(FlutterView view) {
final RenderView renderView = RenderView(view: view);
rootPipelineOwner.rootNode = renderView;
addRenderView(renderView);
renderView.prepareInitialFrame();
return renderView;
}

@override
PipelineOwner createRootPipelineOwner() {
return PipelineOwner(
onSemanticsOwnerCreated: () {
renderView.scheduleInitialSemantics();
},
onSemanticsUpdate: (SemanticsUpdate update) {
renderView.updateSemantics(update);
},
onSemanticsOwnerDisposed: () {
renderView.clearSemantics();
},
);
}
}
4 changes: 3 additions & 1 deletion examples/layers/rendering/touch_input.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import 'package:flutter/material.dart'; // Imported just for its color palette.
import 'package:flutter/rendering.dart';

import 'src/binding.dart';

// Material design colors. :p
List<Color> _kColors = <Color>[
Colors.teal,
Expand Down Expand Up @@ -133,5 +135,5 @@ void main() {
..left = 20.0;

// Finally, we attach the render tree we've built to the screen.
RenderingFlutterBinding(root: stack).scheduleFrame();
ViewRenderingFlutterBinding(root: stack).scheduleFrame();
}
18 changes: 14 additions & 4 deletions examples/layers/widgets/spinning_mixed.dart
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,10 @@ void attachWidgetTreeToRenderTree(RenderProxyBox container) {
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
ElevatedButton(
child: Row(
child: const Row(
children: <Widget>[
Image.network('https://flutter.dev/images/favicon.png'),
const Text('PRESS ME'),
FlutterLogo(),
Text('PRESS ME'),
],
),
onPressed: () {
Expand Down Expand Up @@ -102,6 +102,16 @@ void main() {
transformBox = RenderTransform(child: flexRoot, transform: Matrix4.identity(), alignment: Alignment.center);
final RenderPadding root = RenderPadding(padding: const EdgeInsets.all(80.0), child: transformBox);

binding.renderView.child = root;
// TODO(goderbauer): Create a window if embedder doesn't provide an implicit view to draw into.
assert(binding.platformDispatcher.implicitView != null);
final RenderView view = RenderView(
view: binding.platformDispatcher.implicitView!,
child: root,
);
final PipelineOwner pipelineOwner = PipelineOwner()..rootNode = view;
binding.rootPipelineOwner.adoptChild(pipelineOwner);
binding.addRenderView(view);
view.prepareInitialFrame();

binding.addPersistentFrameCallback(rotate);
}
Loading