Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 6 additions & 0 deletions lib/web_ui/test/golden_tests/engine/scuba.dart
Original file line number Diff line number Diff line change
Expand Up @@ -101,29 +101,35 @@ void testEachCanvas(String description, CanvasTest body,
try {
TextMeasurementService.initialize(rulerCacheCapacity: 2);
WebExperiments.instance.useCanvasText = false;
WebExperiments.instance.useCanvasRichText = false;
return body(BitmapCanvas(bounds, RenderStrategy()));
} finally {
WebExperiments.instance.useCanvasText = null;
WebExperiments.instance.useCanvasRichText = null;
TextMeasurementService.clearCache();
}
});
test('$description (bitmap + canvas measurement)', () async {
try {
TextMeasurementService.initialize(rulerCacheCapacity: 2);
WebExperiments.instance.useCanvasText = true;
WebExperiments.instance.useCanvasRichText = false;
await body(BitmapCanvas(bounds, RenderStrategy()));
} finally {
WebExperiments.instance.useCanvasText = null;
WebExperiments.instance.useCanvasRichText = null;
TextMeasurementService.clearCache();
}
});
test('$description (dom)', () {
try {
TextMeasurementService.initialize(rulerCacheCapacity: 2);
WebExperiments.instance.useCanvasText = false;
WebExperiments.instance.useCanvasRichText = false;
return body(DomCanvas(domRenderer.createElement('flt-picture')));
} finally {
WebExperiments.instance.useCanvasText = null;
WebExperiments.instance.useCanvasRichText = null;
TextMeasurementService.clearCache();
}
});
Expand Down
12 changes: 12 additions & 0 deletions lib/web_ui/test/paragraph_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,23 @@ void testEachMeasurement(String description, VoidCallback body, {bool skip}) {
try {
TextMeasurementService.initialize(rulerCacheCapacity: 2);
WebExperiments.instance.useCanvasText = false;
WebExperiments.instance.useCanvasRichText = false;
return body();
} finally {
WebExperiments.instance.useCanvasText = null;
WebExperiments.instance.useCanvasRichText = null;
TextMeasurementService.clearCache();
}
}, skip: skip);
test('$description (canvas measurement)', () async {
try {
TextMeasurementService.initialize(rulerCacheCapacity: 2);
WebExperiments.instance.useCanvasText = true;
WebExperiments.instance.useCanvasRichText = false;
return body();
} finally {
WebExperiments.instance.useCanvasText = null;
WebExperiments.instance.useCanvasRichText = null;
TextMeasurementService.clearCache();
}
}, skip: skip);
Expand Down Expand Up @@ -192,6 +196,7 @@ void testMain() async {
// [Paragraph.getPositionForOffset] for multi-line text doesn't work well
// with dom-based measurement.
WebExperiments.instance.useCanvasText = true;
WebExperiments.instance.useCanvasRichText = false;
TextMeasurementService.initialize(rulerCacheCapacity: 2);

final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle(
Expand Down Expand Up @@ -288,10 +293,12 @@ void testMain() async {

TextMeasurementService.clearCache();
WebExperiments.instance.useCanvasText = null;
WebExperiments.instance.useCanvasRichText = null;
});

test('getPositionForOffset multi-line centered', () {
WebExperiments.instance.useCanvasText = true;
WebExperiments.instance.useCanvasRichText = false;
TextMeasurementService.initialize(rulerCacheCapacity: 2);

final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle(
Expand Down Expand Up @@ -395,6 +402,7 @@ void testMain() async {

TextMeasurementService.clearCache();
WebExperiments.instance.useCanvasText = null;
WebExperiments.instance.useCanvasRichText = null;
});

test('getWordBoundary', () {
Expand Down Expand Up @@ -885,6 +893,7 @@ void testMain() async {
test('longestLine', () {
// [Paragraph.longestLine] is only supported by canvas-based measurement.
WebExperiments.instance.useCanvasText = true;
WebExperiments.instance.useCanvasRichText = false;
TextMeasurementService.initialize(rulerCacheCapacity: 2);

final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle(
Expand All @@ -900,6 +909,7 @@ void testMain() async {

TextMeasurementService.clearCache();
WebExperiments.instance.useCanvasText = null;
WebExperiments.instance.useCanvasRichText = null;
});

testEachMeasurement('getLineBoundary (single-line)', () {
Expand Down Expand Up @@ -927,6 +937,7 @@ void testMain() async {
// [Paragraph.getLineBoundary] for multi-line paragraphs is only supported
// by canvas-based measurement.
WebExperiments.instance.useCanvasText = true;
WebExperiments.instance.useCanvasRichText = false;
TextMeasurementService.initialize(rulerCacheCapacity: 2);

final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle(
Expand Down Expand Up @@ -970,6 +981,7 @@ void testMain() async {

TextMeasurementService.clearCache();
WebExperiments.instance.useCanvasText = null;
WebExperiments.instance.useCanvasRichText = null;
});

testEachMeasurement('width should be a whole integer', () {
Expand Down
33 changes: 21 additions & 12 deletions lib/web_ui/test/text/measurement_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ const ui.ParagraphConstraints constraints = ui.ParagraphConstraints(width: 50);
const ui.ParagraphConstraints infiniteConstraints =
ui.ParagraphConstraints(width: double.infinity);

ui.Paragraph build(ui.ParagraphStyle style, String text,
DomParagraph build(ui.ParagraphStyle style, String text,
{ui.TextStyle textStyle}) {
final ui.ParagraphBuilder builder = ui.ParagraphBuilder(style);
final DomParagraphBuilder builder = DomParagraphBuilder(style);
if (textStyle != null) {
builder.pushStyle(textStyle);
}
Expand All @@ -40,12 +40,26 @@ void testMeasurements(String description, MeasurementTestBody body, {
}) {
test(
'$description (dom)',
() => body(TextMeasurementService.domInstance),
() {
try {
WebExperiments.instance.useCanvasRichText = false;
return body(TextMeasurementService.domInstance);
} finally {
WebExperiments.instance.useCanvasRichText = null;
}
},
skip: skipDom,
);
test(
'$description (canvas)',
() => body(TextMeasurementService.canvasInstance),
() {
try {
WebExperiments.instance.useCanvasRichText = false;
return body(TextMeasurementService.canvasInstance);
} finally {
WebExperiments.instance.useCanvasRichText = null;
}
},
skip: skipCanvas,
);
}
Expand Down Expand Up @@ -532,14 +546,9 @@ void testMain() async {
const ui.ParagraphConstraints constraints =
ui.ParagraphConstraints(width: 100);

final ui.ParagraphBuilder normalBuilder = ui.ParagraphBuilder(ahemStyle);
normalBuilder.addText('a b c');
final ui.Paragraph normalText = normalBuilder.build();

final ui.ParagraphBuilder spacedBuilder = ui.ParagraphBuilder(ahemStyle);
spacedBuilder.pushStyle(ui.TextStyle(wordSpacing: 1.5));
spacedBuilder.addText('a b c');
final ui.Paragraph spacedText = spacedBuilder.build();
final DomParagraph normalText = build(ahemStyle, 'a b c');
final DomParagraph spacedText =
build(ahemStyle, 'a b c', textStyle: ui.TextStyle(wordSpacing: 1.5));

// Word spacing is only supported via DOM measurement.
final TextMeasurementService instance =
Expand Down