From f097ef7a38291152664700b0123cc5813c9a008f Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 17 Mar 2023 13:38:38 -0700 Subject: [PATCH 01/12] sync lints post 3.0 --- analysis_options.yaml | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 5f355bb4e8335..2376d5fc5446c 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,7 +1,7 @@ # Specify analysis options. # # This file is a copy of analysis_options.yaml from flutter repo -# as of 2022-07-27, but with some modifications marked with +# as of 2023-03-17, but with some modifications marked with # "DIFFERENT FROM FLUTTER/FLUTTER" below. analyzer: @@ -23,7 +23,6 @@ linter: - always_declare_return_types - always_put_control_body_on_new_line # - always_put_required_named_parameters_first # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219 - - always_require_non_null_named_parameters - always_specify_types # - always_use_package_imports # we do this commonly - annotate_overrides @@ -52,8 +51,6 @@ linter: - avoid_relative_lib_imports - avoid_renaming_method_parameters - avoid_return_types_on_setters - - avoid_returning_null - - avoid_returning_null_for_future - avoid_returning_null_for_void # - avoid_returning_this # there are enough valid reasons to return `this` that this lint ends up with too many false positives - avoid_setters_without_getters @@ -74,17 +71,19 @@ linter: # - cascade_invocations # doesn't match the typical style of this repo - cast_nullable_to_non_nullable # - close_sinks # not reliable enough + - collection_methods_unrelated_type - combinators_ordering # - comment_references # blocked on https://github.com/dart-lang/linter/issues/1142 - conditional_uri_does_not_exist # - constant_identifier_names # needs an opt-out https://github.com/dart-lang/linter/issues/204 - control_flow_in_finally - curly_braces_in_flow_control_structures + - dangling_library_doc_comments - depend_on_referenced_packages - deprecated_consistency # - diagnostic_describe_all_properties # enabled only at the framework level (packages/flutter/lib) - directives_ordering - # - discarded_futures # not yet tested + # - discarded_futures # too many false positives, similar to unawaited_futures # - do_not_use_environment # there are appropriate times to use the environment, especially in our tests and build logic - empty_catches - empty_constructor_bodies @@ -95,10 +94,12 @@ linter: - flutter_style_todos - hash_and_equals - implementation_imports + - implicit_call_tearoffs - invalid_case_patterns - iterable_contains_unrelated_type # - join_return_with_assignment # not required by flutter style - leading_newlines_in_multiline_strings + - library_annotations - library_names - library_prefixes - library_private_types_in_public_api @@ -137,7 +138,6 @@ linter: # - prefer_constructors_over_static_methods # far too many false positives - prefer_contains # - prefer_double_quotes # opposite of prefer_single_quotes - - prefer_equal_for_default_values # - prefer_expression_function_bodies # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#consider-using--for-short-functions-and-methods - prefer_final_fields - prefer_final_in_for_each @@ -157,7 +157,7 @@ linter: - prefer_is_not_empty - prefer_is_not_operator - prefer_iterable_whereType - # - prefer_mixin # Has false positives, see https://github.com/dart-lang/linter/issues/3018 + # - prefer_mixin # has false positives, see https://github.com/dart-lang/linter/issues/3018 # - prefer_null_aware_method_calls # "call()" is confusing to people new to the language since it's not documented anywhere - prefer_null_aware_operators - prefer_relative_imports @@ -168,10 +168,10 @@ linter: - provide_deprecation_message - public_member_api_docs # DIFFERENT FROM FLUTTER/FLUTTER - recursive_getters - # - require_trailing_commas # blocked on https://github.com/dart-lang/sdk/issues/47441 + # - require_trailing_commas # would be nice, but requires a lot of manual work: 10,000+ code locations would need to be reformatted by hand after bulk fix is applied - secure_pubspec_urls - sized_box_for_whitespace - # - sized_box_shrink_expand # not yet tested + - sized_box_shrink_expand - slash_for_doc_comments - sort_child_properties_last - sort_constructors_first @@ -185,12 +185,14 @@ linter: # - unawaited_futures # too many false positives, especially with the way AnimationController works - unnecessary_await_in_return - unnecessary_brace_in_string_interps + - unnecessary_breaks - unnecessary_const - unnecessary_constructor_name # - unnecessary_final # conflicts with prefer_final_locals - unnecessary_getters_setters # - unnecessary_lambdas # has false positives: https://github.com/dart-lang/linter/issues/498 - unnecessary_late + - unnecessary_library_directive - unnecessary_new - unnecessary_null_aware_assignments - unnecessary_null_aware_operator_on_extension_on_nullable @@ -205,12 +207,13 @@ linter: - unnecessary_string_interpolations - unnecessary_this - unnecessary_to_list_in_spreads + # - unreachable_from_main # Do not enable this rule until it is un-marked as "experimental" and carefully re-evaluated. - unrelated_type_equality_checks - unsafe_html - use_build_context_synchronously - # - use_colored_box # not yet tested - # - use_decorated_box # not yet tested - # - use_enums # not yet tested + - use_colored_box + # - use_decorated_box # leads to bugs: DecoratedBox and Container are not equivalent (Container inserts extra padding) + - use_enums - use_full_hex_values_for_flutter_colors - use_function_type_syntax_for_parameters - use_if_null_to_convert_nulls_to_bools @@ -222,6 +225,7 @@ linter: - use_rethrow_when_possible - use_setters_to_change_properties # - use_string_buffers # has false positives: https://github.com/dart-lang/sdk/issues/34182 + # - use_string_in_part_of_directives # DIFFERENT FROM FLUTTER/FLUTTER (needs to be evaluated, dart:ui does this frequently) - use_super_parameters - use_test_throws_matchers # - use_to_and_as_if_applicable # has false positives, so we prefer to catch this by code-review From c91fff8963f4d4081e69d5d8ee6cfd4ccda001a6 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 17 Mar 2023 13:40:17 -0700 Subject: [PATCH 02/12] ui --- lib/ui/channel_buffers.dart | 2 -- lib/ui/text.dart | 2 -- 2 files changed, 4 deletions(-) diff --git a/lib/ui/channel_buffers.dart b/lib/ui/channel_buffers.dart index 84b7a90ae48f9..34ae394c4446d 100644 --- a/lib/ui/channel_buffers.dart +++ b/lib/ui/channel_buffers.dart @@ -468,7 +468,6 @@ class ChannelBuffers { } index += 1; resize(channelName, data.getUint32(index, Endian.host)); - break; case 'overflow': if (bytes[index] != 0x0C) { // 12 = value code for list throw Exception("Invalid arguments for 'overflow' method sent to $kControlChannelName (arguments must be a two-element list, channel name and flag state)"); @@ -493,7 +492,6 @@ class ChannelBuffers { throw Exception("Invalid arguments for 'overflow' method sent to $kControlChannelName (second argument must be a boolean)"); } allowOverflow(channelName, bytes[index] == 0x01); - break; default: throw Exception("Unrecognized method '$methodName' sent to $kControlChannelName"); } diff --git a/lib/ui/text.dart b/lib/ui/text.dart index 171682e55734b..64ba28c447bac 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -2831,10 +2831,8 @@ class Paragraph extends NativeFieldWrapperClass1 { switch (position.affinity) { case TextAffinity.upstream: characterPosition = position.offset - 1; - break; case TextAffinity.downstream: characterPosition = position.offset; - break; } final List boundary = _getWordBoundary(characterPosition); return TextRange(start: boundary[0], end: boundary[1]); From 4d9178009f37b95387501ed8abeb67ea4bea3594 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 17 Mar 2023 13:44:17 -0700 Subject: [PATCH 03/12] web_ui fix comment --- lib/web_ui/dev/test_platform.dart | 2 -- lib/web_ui/lib/channel_buffers.dart | 2 -- lib/web_ui/lib/painting.dart | 2 -- lib/web_ui/lib/src/engine.dart | 2 +- lib/web_ui/lib/src/engine/canvas_pool.dart | 15 ---------- .../src/engine/canvaskit/embedded_views.dart | 3 -- .../engine/canvaskit/image_web_codecs.dart | 10 +++---- .../lib/src/engine/canvaskit/layer.dart | 6 ---- lib/web_ui/lib/src/engine/canvaskit/text.dart | 10 ------- .../lib/src/engine/html/bitmap_canvas.dart | 3 -- .../lib/src/engine/html/color_filter.dart | 8 ----- lib/web_ui/lib/src/engine/html/path/path.dart | 28 ----------------- .../src/engine/html/path/path_iterator.dart | 7 ----- .../src/engine/html/path/path_metrics.dart | 8 ----- .../lib/src/engine/html/path/path_ref.dart | 30 ------------------- .../lib/src/engine/html/path/path_to_svg.dart | 6 ---- .../src/engine/html/path/path_windings.dart | 4 --- .../lib/src/engine/html/recording_canvas.dart | 1 - .../lib/src/engine/html/render_vertices.dart | 2 -- .../lib/src/engine/html/shader_mask.dart | 9 ------ .../lib/src/engine/html/shaders/shader.dart | 4 --- .../engine/html/shaders/shader_builder.dart | 7 ----- .../lib/src/engine/keyboard_binding.dart | 3 -- .../lib/src/engine/platform_dispatcher.dart | 2 -- .../lib/src/engine/pointer_binding.dart | 3 -- .../lib/src/engine/pointer_converter.dart | 9 ------ .../lib/src/engine/semantics/checkable.dart | 6 ---- .../src/engine/semantics/incrementable.dart | 2 -- .../lib/src/engine/semantics/scrollable.dart | 2 -- .../engine/semantics/semantics_helper.dart | 3 -- .../lib/src/engine/semantics/text_field.dart | 2 -- .../src/engine/services/message_codecs.dart | 14 --------- .../lib/src/engine/skwasm/skwasm_impl.dart | 1 - .../lib/src/engine/skwasm/skwasm_stub.dart | 2 ++ .../lib/src/engine/text/canvas_paragraph.dart | 2 -- .../lib/src/engine/text/layout_service.dart | 8 ----- .../lib/src/engine/text/unicode_range.dart | 2 -- .../lib/src/engine/text/word_breaker.dart | 8 ++--- .../text_editing/text_capitalization.dart | 3 -- .../src/engine/text_editing/text_editing.dart | 12 -------- lib/web_ui/lib/src/engine/util.dart | 1 - lib/web_ui/test/canvaskit/semantics_test.dart | 1 + lib/web_ui/test/channel_buffers_test.dart | 3 -- .../test/engine/app_bootstrap_test.dart | 1 + .../test/engine/configuration_test.dart | 1 + lib/web_ui/test/engine/history_test.dart | 3 +- .../engine/semantics/semantics_api_test.dart | 1 + .../test/engine/semantics/semantics_test.dart | 1 + .../engine/semantics/text_field_test.dart | 2 ++ .../surface/path/path_winding_test.dart | 24 --------------- .../engine/surface/scene_builder_test.dart | 1 + ...stom_element_dimensions_provider_test.dart | 1 + .../dimensions_provider_test.dart | 1 + .../full_page_dimensions_provider_test.dart | 1 + ...ustom_element_embedding_strategy_test.dart | 1 + .../embedding_strategy_test.dart | 1 + .../full_page_embedding_strategy_test.dart | 1 + .../hot_restart_cache_handler_test.dart | 1 + lib/web_ui/test/matchers.dart | 15 ---------- lib/web_ui/test/skwasm/smoke_test.dart | 1 + 60 files changed, 30 insertions(+), 285 deletions(-) diff --git a/lib/web_ui/dev/test_platform.dart b/lib/web_ui/dev/test_platform.dart index 6f5949c5b46e0..eb33bb4c86702 100644 --- a/lib/web_ui/dev/test_platform.dart +++ b/lib/web_ui/dev/test_platform.dart @@ -1006,11 +1006,9 @@ class BrowserManager { case 'restart': _onRestartController.add(null); - break; case 'resume': _pauseCompleter?.complete(); - break; default: // Unreachable. diff --git a/lib/web_ui/lib/channel_buffers.dart b/lib/web_ui/lib/channel_buffers.dart index 4677e790f092e..4d0e3fb4a4d13 100644 --- a/lib/web_ui/lib/channel_buffers.dart +++ b/lib/web_ui/lib/channel_buffers.dart @@ -199,7 +199,6 @@ class ChannelBuffers { } index += 1; resize(channelName, data.getUint32(index, Endian.host)); - break; case 'overflow': if (bytes[index] != 0x0C) { throw Exception("Invalid arguments for 'overflow' method sent to $kControlChannelName (arguments must be a two-element list, channel name and flag state)"); @@ -224,7 +223,6 @@ class ChannelBuffers { throw Exception("Invalid arguments for 'overflow' method sent to $kControlChannelName (second argument must be a boolean)"); } allowOverflow(channelName, bytes[index] == 0x01); - break; default: throw Exception("Unrecognized method '$methodName' sent to $kControlChannelName"); } diff --git a/lib/web_ui/lib/painting.dart b/lib/web_ui/lib/painting.dart index d15d83fc4b926..05c6182108c4e 100644 --- a/lib/web_ui/lib/painting.dart +++ b/lib/web_ui/lib/painting.dart @@ -559,10 +559,8 @@ Future createBmp( switch (format) { case PixelFormat.bgra8888: swapRedBlue = true; - break; case PixelFormat.rgba8888: swapRedBlue = false; - break; } // See https://en.wikipedia.org/wiki/BMP_file_format for format examples. diff --git a/lib/web_ui/lib/src/engine.dart b/lib/web_ui/lib/src/engine.dart index 3a86a7dbc7e6b..a82b9d9b82a0e 100644 --- a/lib/web_ui/lib/src/engine.dart +++ b/lib/web_ui/lib/src/engine.dart @@ -12,7 +12,7 @@ // The code that performs the transformations lives in: // // - https://github.com/flutter/engine/blob/main/web_sdk/sdk_rewriter.dart - +// ignore: unnecessary_library_directive library engine; export 'engine/alarm_clock.dart'; diff --git a/lib/web_ui/lib/src/engine/canvas_pool.dart b/lib/web_ui/lib/src/engine/canvas_pool.dart index f997b23ac4dba..c264080bf82a8 100644 --- a/lib/web_ui/lib/src/engine/canvas_pool.dart +++ b/lib/web_ui/lib/src/engine/canvas_pool.dart @@ -592,7 +592,6 @@ class CanvasPool extends _SaveStackTracking { ctx.arc(x, y, radius, 0, 2.0 * math.pi); ctx.fill(); } - break; case ui.PointMode.lines: ctx.beginPath(); for (int i = 0; i < (len - 2); i += 4) { @@ -600,7 +599,6 @@ class CanvasPool extends _SaveStackTracking { ctx.lineTo(points[i + 2] + offsetX, points[i + 3] + offsetY); ctx.stroke(); } - break; case ui.PointMode.polygon: ctx.beginPath(); ctx.moveTo(points[0] + offsetX, points[1] + offsetY); @@ -608,7 +606,6 @@ class CanvasPool extends _SaveStackTracking { ctx.lineTo(points[i] + offsetX, points[i + 1] + offsetY); } ctx.stroke(); - break; } } @@ -625,16 +622,12 @@ class CanvasPool extends _SaveStackTracking { switch (verb) { case SPath.kMoveVerb: ctx.moveTo(p[0], p[1]); - break; case SPath.kLineVerb: ctx.lineTo(p[2], p[3]); - break; case SPath.kCubicVerb: ctx.bezierCurveTo(p[2], p[3], p[4], p[5], p[6], p[7]); - break; case SPath.kQuadVerb: ctx.quadraticCurveTo(p[2], p[3], p[4], p[5]); - break; case SPath.kConicVerb: final double w = iter.conicWeight; final Conic conic = Conic(p[0], p[1], p[2], p[3], p[4], p[5], w); @@ -647,10 +640,8 @@ class CanvasPool extends _SaveStackTracking { final double p2y = points[i + 1].dy; ctx.quadraticCurveTo(p1x, p1y, p2x, p2y); } - break; case SPath.kCloseVerb: ctx.closePath(); - break; default: throw UnimplementedError('Unknown path verb $verb'); } @@ -683,18 +674,14 @@ class CanvasPool extends _SaveStackTracking { switch (verb) { case SPath.kMoveVerb: ctx.moveTo(p[0] + offsetX, p[1] + offsetY); - break; case SPath.kLineVerb: ctx.lineTo(p[2] + offsetX, p[3] + offsetY); - break; case SPath.kCubicVerb: ctx.bezierCurveTo(p[2] + offsetX, p[3] + offsetY, p[4] + offsetX, p[5] + offsetY, p[6] + offsetX, p[7] + offsetY); - break; case SPath.kQuadVerb: ctx.quadraticCurveTo(p[2] + offsetX, p[3] + offsetY, p[4] + offsetX, p[5] + offsetY); - break; case SPath.kConicVerb: final double w = iter.conicWeight; final Conic conic = Conic(p[0], p[1], p[2], p[3], p[4], p[5], w); @@ -708,10 +695,8 @@ class CanvasPool extends _SaveStackTracking { ctx.quadraticCurveTo(p1x + offsetX, p1y + offsetY, p2x + offsetX, p2y + offsetY); } - break; case SPath.kCloseVerb: ctx.closePath(); - break; default: throw UnimplementedError('Unknown path verb $verb'); } diff --git a/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart b/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart index f2ae09c9b236e..e2d5f196348f9 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart @@ -302,7 +302,6 @@ class HtmlViewEmbedder { headTransform = mutator.matrix!.multiplied(headTransform); head.style.transform = float64ListToCssTransform(headTransform.storage); - break; case MutatorType.clipRect: case MutatorType.clipRRect: case MutatorType.clipPath: @@ -359,10 +358,8 @@ class HtmlViewEmbedder { } _resetAnchor(clipView); head = clipView; - break; case MutatorType.opacity: embeddedOpacity *= mutator.alphaFloat; - break; } } diff --git a/lib/web_ui/lib/src/engine/canvaskit/image_web_codecs.dart b/lib/web_ui/lib/src/engine/canvaskit/image_web_codecs.dart index 54ea9eebbb1cd..6eb9ed1f7257b 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/image_web_codecs.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/image_web_codecs.dart @@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -/// Uses the `ImageDecoder` class supplied by the browser. -/// -/// See also: -/// -/// * `image_wasm_codecs.dart`, which uses codecs supplied by the CanvasKit WASM bundle. +// Uses the `ImageDecoder` class supplied by the browser. +// +// See also: +// +// * `image_wasm_codecs.dart`, which uses codecs supplied by the CanvasKit WASM bundle. import 'dart:async'; import 'dart:convert' show base64; diff --git a/lib/web_ui/lib/src/engine/canvaskit/layer.dart b/lib/web_ui/lib/src/engine/canvaskit/layer.dart index d8c98694ad1c4..801caf7c11c86 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/layer.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/layer.dart @@ -64,13 +64,10 @@ class PrerollContext { switch (m.type) { case MutatorType.clipRect: clipRect = m.rect!; - break; case MutatorType.clipRRect: clipRect = m.rrect!.outerRect; - break; case MutatorType.clipPath: clipRect = m.path!.getBounds(); - break; default: continue; } @@ -527,14 +524,11 @@ class PhysicalShapeEngineLayer extends ContainerLayer switch (_clipBehavior) { case ui.Clip.hardEdge: paintContext.internalNodesCanvas.clipPath(_path, false); - break; case ui.Clip.antiAlias: paintContext.internalNodesCanvas.clipPath(_path, true); - break; case ui.Clip.antiAliasWithSaveLayer: paintContext.internalNodesCanvas.clipPath(_path, true); paintContext.internalNodesCanvas.saveLayer(paintBounds, null); - break; case ui.Clip.none: break; } diff --git a/lib/web_ui/lib/src/engine/canvaskit/text.dart b/lib/web_ui/lib/src/engine/canvaskit/text.dart index fd6f81e4e11d2..8434a5db95949 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/text.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/text.dart @@ -115,10 +115,8 @@ class CkParagraphStyle implements ui.ParagraphStyle { break; case ui.TextLeadingDistribution.even: skStrutStyle.halfLeading = true; - break; case ui.TextLeadingDistribution.proportional: skStrutStyle.halfLeading = false; - break; } if (style._leading != null) { @@ -420,10 +418,8 @@ class CkTextStyle implements ui.TextStyle { break; case ui.TextLeadingDistribution.even: properties.halfLeading = true; - break; case ui.TextLeadingDistribution.proportional: properties.halfLeading = false; - break; } if (locale != null) { @@ -604,16 +600,12 @@ class CkParagraph extends SkiaObject implements ui.Paragraph { switch (command.type) { case _ParagraphCommandType.addText: builder.addText(command.text!); - break; case _ParagraphCommandType.pop: builder.pop(); - break; case _ParagraphCommandType.pushStyle: builder.pushStyle(command.style!); - break; case _ParagraphCommandType.addPlaceholder: builder._addPlaceholder(command.placeholderStyle!); - break; } } paragraph = builder._buildSkParagraph(); @@ -786,10 +778,8 @@ class CkParagraph extends SkiaObject implements ui.Paragraph { switch (position.affinity) { case ui.TextAffinity.upstream: characterPosition = position.offset - 1; - break; case ui.TextAffinity.downstream: characterPosition = position.offset; - break; } final SkTextRange skRange = paragraph.getWordBoundary(characterPosition.toDouble()); return ui.TextRange(start: skRange.start.toInt(), end: skRange.end.toInt()); diff --git a/lib/web_ui/lib/src/engine/html/bitmap_canvas.dart b/lib/web_ui/lib/src/engine/html/bitmap_canvas.dart index 55add4bba234d..00948fcf4c068 100644 --- a/lib/web_ui/lib/src/engine/html/bitmap_canvas.dart +++ b/lib/web_ui/lib/src/engine/html/bitmap_canvas.dart @@ -804,19 +804,16 @@ class BitmapCanvas extends EngineCanvas { case ui.BlendMode.clear: case ui.BlendMode.dstOut: style.position = 'absolute'; - break; case ui.BlendMode.src: case ui.BlendMode.srcOver: style ..position = 'absolute' ..backgroundColor = colorToCssString(filterColor)!; - break; case ui.BlendMode.dst: case ui.BlendMode.dstIn: style ..position = 'absolute' ..backgroundImage = "url('${image.imgElement.src}')"; - break; default: style ..position = 'absolute' diff --git a/lib/web_ui/lib/src/engine/html/color_filter.dart b/lib/web_ui/lib/src/engine/html/color_filter.dart index 4961d7c8dec6d..b0fc45605d9c8 100644 --- a/lib/web_ui/lib/src/engine/html/color_filter.dart +++ b/lib/web_ui/lib/src/engine/html/color_filter.dart @@ -121,24 +121,18 @@ SvgFilter svgFilterFromBlendMode( case ui.BlendMode.srcIn: case ui.BlendMode.srcATop: svgFilter = _srcInColorFilterToSvg(filterColor); - break; case ui.BlendMode.srcOut: svgFilter = _srcOutColorFilterToSvg(filterColor); - break; case ui.BlendMode.dstATop: svgFilter = _dstATopColorFilterToSvg(filterColor); - break; case ui.BlendMode.xor: svgFilter = _xorColorFilterToSvg(filterColor); - break; case ui.BlendMode.plus: // Porter duff source + destination. svgFilter = _compositeColorFilterToSvg(filterColor, 0, 1, 1, 0); - break; case ui.BlendMode.modulate: // Porter duff source * destination but preserves alpha. svgFilter = _modulateColorFilterToSvg(filterColor!); - break; case ui.BlendMode.overlay: // Since overlay is the same as hard-light by swapping layers, // pass hard-light blend function. @@ -147,7 +141,6 @@ SvgFilter svgFilterFromBlendMode( blendModeToSvgEnum(ui.BlendMode.hardLight)!, swapLayers: true, ); - break; // Several of the filters below (although supported) do not render the // same (close but not exact) as native flutter when used as blend mode // for a background-image with a background color. They only look @@ -175,7 +168,6 @@ SvgFilter svgFilterFromBlendMode( case ui.BlendMode.exclusion: svgFilter = _blendColorFilterToSvg( filterColor, blendModeToSvgEnum(colorFilterBlendMode)!); - break; case ui.BlendMode.src: case ui.BlendMode.dst: case ui.BlendMode.dstIn: diff --git a/lib/web_ui/lib/src/engine/html/path/path.dart b/lib/web_ui/lib/src/engine/html/path/path.dart index 57a1312d49349..ed3b2e7d57752 100644 --- a/lib/web_ui/lib/src/engine/html/path/path.dart +++ b/lib/web_ui/lib/src/engine/html/path/path.dart @@ -1135,24 +1135,18 @@ class SurfacePath implements ui.Path { } else { moveTo(outPts[0], outPts[1]); } - break; case SPath.kLineVerb: lineTo(outPts[2], outPts[3]); - break; case SPath.kQuadVerb: _quadTo(outPts[2], outPts[3], outPts[4], outPts[5]); - break; case SPath.kConicVerb: conicTo( outPts[2], outPts[3], outPts[4], outPts[5], iter.conicWeight); - break; case SPath.kCubicVerb: cubicTo(outPts[2], outPts[3], outPts[4], outPts[5], outPts[6], outPts[7]); - break; case SPath.kCloseVerb: close(); - break; } firstVerb = false; } @@ -1248,19 +1242,14 @@ class SurfacePath implements ui.Path { break; case SPath.kLineVerb: tangentLine(buffer, x, y, tangents); - break; case SPath.kQuadVerb: tangentQuad(buffer, x, y, tangents); - break; case SPath.kConicVerb: tangentConic(buffer, x, y, iter.conicWeight, tangents); - break; case SPath.kCubicVerb: tangentCubic(buffer, x, y, tangents); - break; case SPath.kDoneVerb: done = true; - break; } if (tangents.length > oldCount) { final int last = tangents.length - 1; @@ -1392,19 +1381,14 @@ class SurfacePath implements ui.Path { } state.setMovePt(pts[0], pts[1]); count = 0; - break; case SPath.kLineVerb: count = 1; - break; case SPath.kQuadVerb: count = 2; - break; case SPath.kConicVerb: count = 2; - break; case SPath.kCubicVerb: count = 3; - break; case SPath.kCloseVerb: if (!state.close()) { if (!state.isFinite) { @@ -1413,7 +1397,6 @@ class SurfacePath implements ui.Path { return _setComputedConvexity(SPathConvexityType.kConcave); } count = 0; - break; default: return _setComputedConvexity(SPathConvexityType.kConcave); } @@ -1479,11 +1462,9 @@ class SurfacePath implements ui.Path { case SPath.kMoveVerb: minX = maxX = points[pIndex]; minY = maxY = points[pIndex + 1]; - break; case SPath.kLineVerb: minX = maxX = points[pIndex + 2]; minY = maxY = points[pIndex + 3]; - break; case SPath.kQuadVerb: quadBounds ??= QuadBounds(); quadBounds.calculateBounds(points, pIndex); @@ -1491,7 +1472,6 @@ class SurfacePath implements ui.Path { minY = quadBounds.minY; maxX = quadBounds.maxX; maxY = quadBounds.maxY; - break; case SPath.kConicVerb: conicBounds ??= ConicBounds(); conicBounds.calculateBounds(points, iter.conicWeight, pIndex); @@ -1499,7 +1479,6 @@ class SurfacePath implements ui.Path { minY = conicBounds.minY; maxX = conicBounds.maxX; maxY = conicBounds.maxY; - break; case SPath.kCubicVerb: cubicBounds ??= CubicBounds(); cubicBounds.calculateBounds(points, pIndex); @@ -1507,7 +1486,6 @@ class SurfacePath implements ui.Path { minY = cubicBounds.minY; maxX = cubicBounds.maxX; maxY = cubicBounds.maxY; - break; } if (!ltrbInitialized) { left = minX; @@ -1591,26 +1569,20 @@ class SurfacePath implements ui.Path { switch (verb) { case SPath.kMoveVerb: sb.write('MoveTo(${points[pIndex]}, ${points[pIndex + 1]})'); - break; case SPath.kLineVerb: sb.write('LineTo(${points[pIndex + 2]}, ${points[pIndex + 3]})'); - break; case SPath.kQuadVerb: sb.write('Quad(${points[pIndex + 2]}, ${points[pIndex + 3]},' ' ${points[pIndex + 3]}, ${points[pIndex + 4]})'); - break; case SPath.kConicVerb: sb.write('Conic(${points[pIndex + 2]}, ${points[pIndex + 3]},' ' ${points[pIndex + 3]}, ${points[pIndex + 4]}, w = ${iter.conicWeight})'); - break; case SPath.kCubicVerb: sb.write('Cubic(${points[pIndex + 2]}, ${points[pIndex + 3]},' ' ${points[pIndex + 3]}, ${points[pIndex + 4]}, ' ' ${points[pIndex + 5]}, ${points[pIndex + 6]})'); - break; case SPath.kCloseVerb: sb.write('Close()'); - break; } if (iter.peek() != SPath.kDoneVerb) { sb.write(' '); diff --git a/lib/web_ui/lib/src/engine/html/path/path_iterator.dart b/lib/web_ui/lib/src/engine/html/path/path_iterator.dart index 90793a95004f0..5f09e134ffba2 100644 --- a/lib/web_ui/lib/src/engine/html/path/path_iterator.dart +++ b/lib/web_ui/lib/src/engine/html/path/path_iterator.dart @@ -153,7 +153,6 @@ class PathIterator { _lastPointX = _moveToX; _lastPointY = _moveToY; _needClose = _forceClose; - break; case SPath.kLineVerb: final ui.Offset start = _constructMoveTo(); final double offsetX = pathRef.points[_pointIndex++]; @@ -164,7 +163,6 @@ class PathIterator { outPts[3] = offsetY; _lastPointX = offsetX; _lastPointY = offsetY; - break; case SPath.kConicVerb: _conicWeightIndex++; final ui.Offset start = _constructMoveTo(); @@ -174,7 +172,6 @@ class PathIterator { outPts[3] = pathRef.points[_pointIndex++]; _lastPointX = outPts[4] = pathRef.points[_pointIndex++]; _lastPointY = outPts[5] = pathRef.points[_pointIndex++]; - break; case SPath.kQuadVerb: final ui.Offset start = _constructMoveTo(); outPts[0] = start.dx; @@ -183,7 +180,6 @@ class PathIterator { outPts[3] = pathRef.points[_pointIndex++]; _lastPointX = outPts[4] = pathRef.points[_pointIndex++]; _lastPointY = outPts[5] = pathRef.points[_pointIndex++]; - break; case SPath.kCubicVerb: final ui.Offset start = _constructMoveTo(); outPts[0] = start.dx; @@ -194,7 +190,6 @@ class PathIterator { outPts[5] = pathRef.points[_pointIndex++]; _lastPointX = outPts[6] = pathRef.points[_pointIndex++]; _lastPointY = outPts[7] = pathRef.points[_pointIndex++]; - break; case SPath.kCloseVerb: verb = _autoClose(outPts); if (verb == SPath.kLineVerb) { @@ -206,10 +201,8 @@ class PathIterator { } _lastPointX = _moveToX; _lastPointY = _moveToY; - break; case SPath.kDoneVerb: assert(_verbIndex == pathRef.countVerbs()); - break; default: throw FormatException('Unsupport Path verb $verb'); } diff --git a/lib/web_ui/lib/src/engine/html/path/path_metrics.dart b/lib/web_ui/lib/src/engine/html/path/path_metrics.dart index 7dad8f3e4f0d2..5170b20416263 100644 --- a/lib/web_ui/lib/src/engine/html/path/path_metrics.dart +++ b/lib/web_ui/lib/src/engine/html/path/path_metrics.dart @@ -258,16 +258,13 @@ class _PathContourMeasure { final double toX = (points[2] * stopT) + (points[0] * (1.0 - stopT)); final double toY = (points[3] * stopT) + (points[1] * (1.0 - stopT)); path.lineTo(toX, toY); - break; case SPath.kCubicVerb: chopCubicBetweenT(points, startT, stopT, _buffer); path.cubicTo(_buffer[2], _buffer[3], _buffer[4], _buffer[5], _buffer[6], _buffer[7]); - break; case SPath.kQuadVerb: _chopQuadBetweenT(points, startT, stopT, _buffer); path.quadraticBezierTo(_buffer[2], _buffer[3], _buffer[4], _buffer[5]); - break; case SPath.kConicVerb: // Implement this once we start writing out conic segments. throw UnimplementedError(); @@ -309,11 +306,9 @@ class _PathContourMeasure { switch (verb) { case SPath.kMoveVerb: haveSeenMoveTo = true; - break; case SPath.kLineVerb: assert(haveSeenMoveTo); lineToHandler(points[0], points[1], points[2], points[3]); - break; case SPath.kCubicVerb: assert(haveSeenMoveTo); // Compute cubic curve distance. @@ -330,7 +325,6 @@ class _PathContourMeasure { 0, _kMaxTValue, _segments); - break; case SPath.kConicVerb: assert(haveSeenMoveTo); final double w = iter.conicWeight; @@ -350,13 +344,11 @@ class _PathContourMeasure { startX = p2x; startY = p2y; } - break; case SPath.kQuadVerb: assert(haveSeenMoveTo); // Compute quad curve distance. distance = _computeQuadSegments(points[0], points[1], points[2], points[3], points[4], points[5], distance, 0, _kMaxTValue); - break; case SPath.kCloseVerb: _contourLength = distance; return iter.pathVerbIndex; diff --git a/lib/web_ui/lib/src/engine/html/path/path_ref.dart b/lib/web_ui/lib/src/engine/html/path/path_ref.dart index b54d09d28f1ea..b9885d1540998 100644 --- a/lib/web_ui/lib/src/engine/html/path/path_ref.dart +++ b/lib/web_ui/lib/src/engine/html/path/path_ref.dart @@ -532,16 +532,12 @@ class PathRef { switch (verbs[i]) { case SPath.kLineVerb: mask |= SPath.kLineSegmentMask; - break; case SPath.kQuadVerb: mask |= SPath.kQuadSegmentMask; - break; case SPath.kConicVerb: mask |= SPath.kConicSegmentMask; - break; case SPath.kCubicVerb: mask |= SPath.kCubicSegmentMask; - break; default: break; } @@ -641,32 +637,25 @@ class PathRef { switch (verb) { case SPath.kMoveVerb: pCnt = 1; - break; case SPath.kLineVerb: mask = SPath.kLineSegmentMask; pCnt = 1; - break; case SPath.kQuadVerb: mask = SPath.kQuadSegmentMask; pCnt = 2; - break; case SPath.kConicVerb: mask = SPath.kConicSegmentMask; pCnt = 2; - break; case SPath.kCubicVerb: mask = SPath.kCubicSegmentMask; pCnt = 3; - break; case SPath.kCloseVerb: pCnt = 0; - break; case SPath.kDoneVerb: if (assertionsEnabled) { throw Exception('growForVerb called for kDone'); } pCnt = 0; - break; default: if (assertionsEnabled) { throw Exception('default is not reached'); @@ -708,32 +697,25 @@ class PathRef { switch (verb) { case SPath.kMoveVerb: pCnt = numVbs; - break; case SPath.kLineVerb: mask = SPath.kLineSegmentMask; pCnt = numVbs; - break; case SPath.kQuadVerb: mask = SPath.kQuadSegmentMask; pCnt = 2 * numVbs; - break; case SPath.kConicVerb: mask = SPath.kConicSegmentMask; pCnt = 2 * numVbs; - break; case SPath.kCubicVerb: mask = SPath.kCubicSegmentMask; pCnt = 3 * numVbs; - break; case SPath.kCloseVerb: pCnt = 0; - break; case SPath.kDoneVerb: if (assertionsEnabled) { throw Exception('growForVerb called for kDone'); } pCnt = 0; - break; default: if (assertionsEnabled) { throw Exception('default is not reached'); @@ -999,29 +981,23 @@ class PathRefIterator { case SPath.kMoveVerb: iterIndex = _pointIndex; _pointIndex += 2; - break; case SPath.kLineVerb: iterIndex = _pointIndex - 2; _pointIndex += 2; - break; case SPath.kConicVerb: _conicWeightIndex++; iterIndex = _pointIndex - 2; _pointIndex += 4; - break; case SPath.kQuadVerb: iterIndex = _pointIndex - 2; _pointIndex += 4; - break; case SPath.kCubicVerb: iterIndex = _pointIndex - 2; _pointIndex += 6; - break; case SPath.kCloseVerb: break; case SPath.kDoneVerb: assert(_verbIndex == pathRef.countVerbs()); - break; default: throw FormatException('Unsupport Path verb $verb'); } @@ -1040,13 +1016,11 @@ class PathRefIterator { case SPath.kMoveVerb: outPts[0] = points[pointIndex++]; outPts[1] = points[pointIndex++]; - break; case SPath.kLineVerb: outPts[0] = points[pointIndex - 2]; outPts[1] = points[pointIndex - 1]; outPts[2] = points[pointIndex++]; outPts[3] = points[pointIndex++]; - break; case SPath.kConicVerb: _conicWeightIndex++; outPts[0] = points[pointIndex - 2]; @@ -1055,7 +1029,6 @@ class PathRefIterator { outPts[3] = points[pointIndex++]; outPts[4] = points[pointIndex++]; outPts[5] = points[pointIndex++]; - break; case SPath.kQuadVerb: outPts[0] = points[pointIndex - 2]; outPts[1] = points[pointIndex - 1]; @@ -1063,7 +1036,6 @@ class PathRefIterator { outPts[3] = points[pointIndex++]; outPts[4] = points[pointIndex++]; outPts[5] = points[pointIndex++]; - break; case SPath.kCubicVerb: outPts[0] = points[pointIndex - 2]; outPts[1] = points[pointIndex - 1]; @@ -1073,12 +1045,10 @@ class PathRefIterator { outPts[5] = points[pointIndex++]; outPts[6] = points[pointIndex++]; outPts[7] = points[pointIndex++]; - break; case SPath.kCloseVerb: break; case SPath.kDoneVerb: assert(_verbIndex == pathRef.countVerbs()); - break; default: throw FormatException('Unsupport Path verb $verb'); } diff --git a/lib/web_ui/lib/src/engine/html/path/path_to_svg.dart b/lib/web_ui/lib/src/engine/html/path/path_to_svg.dart index df36bf78bf482..ae08d0d53d2c6 100644 --- a/lib/web_ui/lib/src/engine/html/path/path_to_svg.dart +++ b/lib/web_ui/lib/src/engine/html/path/path_to_svg.dart @@ -21,18 +21,14 @@ String pathToSvg(PathRef pathRef, {double offsetX = 0, double offsetY = 0}) { switch (verb) { case SPath.kMoveVerb: buffer.write('M ${outPts[0] + offsetX} ${outPts[1] + offsetY}'); - break; case SPath.kLineVerb: buffer.write('L ${outPts[2] + offsetX} ${outPts[3] + offsetY}'); - break; case SPath.kCubicVerb: buffer.write('C ${outPts[2] + offsetX} ${outPts[3] + offsetY} ' '${outPts[4] + offsetX} ${outPts[5] + offsetY} ${outPts[6] + offsetX} ${outPts[7] + offsetY}'); - break; case SPath.kQuadVerb: buffer.write('Q ${outPts[2] + offsetX} ${outPts[3] + offsetY} ' '${outPts[4] + offsetX} ${outPts[5] + offsetY}'); - break; case SPath.kConicVerb: final double w = iter.conicWeight; final Conic conic = Conic(outPts[0], outPts[1], outPts[2], outPts[3], @@ -47,10 +43,8 @@ String pathToSvg(PathRef pathRef, {double offsetX = 0, double offsetY = 0}) { buffer.write('Q ${p1x + offsetX} ${p1y + offsetY} ' '${p2x + offsetX} ${p2y + offsetY}'); } - break; case SPath.kCloseVerb: buffer.write('Z'); - break; default: throw UnimplementedError('Unknown path verb $verb'); } diff --git a/lib/web_ui/lib/src/engine/html/path/path_windings.dart b/lib/web_ui/lib/src/engine/html/path/path_windings.dart index ac877a264d985..24779051d8732 100644 --- a/lib/web_ui/lib/src/engine/html/path/path_windings.dart +++ b/lib/web_ui/lib/src/engine/html/path/path_windings.dart @@ -41,16 +41,12 @@ class PathWinding { break; case SPath.kLineVerb: _computeLineWinding(); - break; case SPath.kQuadVerb: _computeQuadWinding(); - break; case SPath.kConicVerb: _computeConicWinding(pathRef.conicWeights![iter.conicWeightIndex]); - break; case SPath.kCubicVerb: _computeCubicWinding(); - break; } } } diff --git a/lib/web_ui/lib/src/engine/html/recording_canvas.dart b/lib/web_ui/lib/src/engine/html/recording_canvas.dart index 280ebbdc45bba..11ae75c90d206 100644 --- a/lib/web_ui/lib/src/engine/html/recording_canvas.dart +++ b/lib/web_ui/lib/src/engine/html/recording_canvas.dart @@ -281,7 +281,6 @@ class RecordingCanvas { switch (clipOp) { case ui.ClipOp.intersect: _paintBounds.clipRect(rect, command); - break; case ui.ClipOp.difference: // Since this refers to inverse, can't shrink paintBounds. break; diff --git a/lib/web_ui/lib/src/engine/html/render_vertices.dart b/lib/web_ui/lib/src/engine/html/render_vertices.dart index 1626d1736293b..3d8c42d94c7fe 100644 --- a/lib/web_ui/lib/src/engine/html/render_vertices.dart +++ b/lib/web_ui/lib/src/engine/html/render_vertices.dart @@ -466,10 +466,8 @@ class _WebGlRenderer implements GlRenderer { switch (triangleVertexIndex) { case 0: ctx.moveTo(dx, dy); - break; case 1: ctx.lineTo(dx, dy); - break; case 2: ctx.lineTo(dx, dy); ctx.closePath(); diff --git a/lib/web_ui/lib/src/engine/html/shader_mask.dart b/lib/web_ui/lib/src/engine/html/shader_mask.dart index 83988c294df09..d781039ccaf9a 100644 --- a/lib/web_ui/lib/src/engine/html/shader_mask.dart +++ b/lib/web_ui/lib/src/engine/html/shader_mask.dart @@ -132,7 +132,6 @@ class PersistedShaderMask extends PersistedContainerSurface // Since we don't have a size, we can't use background color. // Use svg filter srcIn instead. blendModeTemp = ui.BlendMode.srcIn; - break; case ui.BlendMode.src: case ui.BlendMode.dstOver: case ui.BlendMode.srcIn: @@ -188,25 +187,19 @@ SvgFilter svgMaskFilterFromImageAndBlendMode( switch (blendMode) { case ui.BlendMode.src: svgFilter = _srcImageToSvg(imageUrl, width, height); - break; case ui.BlendMode.srcIn: case ui.BlendMode.srcATop: svgFilter = _srcInImageToSvg(imageUrl, width, height); - break; case ui.BlendMode.srcOut: svgFilter = _srcOutImageToSvg(imageUrl, width, height); - break; case ui.BlendMode.xor: svgFilter = _xorImageToSvg(imageUrl, width, height); - break; case ui.BlendMode.plus: // Porter duff source + destination. svgFilter = _compositeImageToSvg(imageUrl, 0, 1, 1, 0, width, height); - break; case ui.BlendMode.modulate: // Porter duff source * destination but preserves alpha. svgFilter = _modulateImageToSvg(imageUrl, width, height); - break; case ui.BlendMode.overlay: // Since overlay is the same as hard-light by swapping layers, // pass hard-light blend function. @@ -217,7 +210,6 @@ SvgFilter svgMaskFilterFromImageAndBlendMode( height, swapLayers: true, ); - break; // Several of the filters below (although supported) do not render the // same (close but not exact) as native flutter when used as blend mode // for a background-image with a background color. They only look @@ -245,7 +237,6 @@ SvgFilter svgMaskFilterFromImageAndBlendMode( case ui.BlendMode.exclusion: svgFilter = _blendImageToSvg( imageUrl, blendModeToSvgEnum(blendMode)!, width, height); - break; case ui.BlendMode.dst: case ui.BlendMode.dstATop: case ui.BlendMode.dstIn: diff --git a/lib/web_ui/lib/src/engine/html/shaders/shader.dart b/lib/web_ui/lib/src/engine/html/shaders/shader.dart index ac83b020c8b75..effc2c6a5a96f 100644 --- a/lib/web_ui/lib/src/engine/html/shaders/shader.dart +++ b/lib/web_ui/lib/src/engine/html/shaders/shader.dart @@ -444,7 +444,6 @@ String _writeSharedGradientShader(ShaderBuilder builder, ShaderMethod method, case ui.TileMode.clamp: method.addStatement('float tiled_st = clamp(st, 0.0, 1.0);'); probeName = 'tiled_st'; - break; case ui.TileMode.decal: break; case ui.TileMode.repeated: @@ -453,13 +452,11 @@ String _writeSharedGradientShader(ShaderBuilder builder, ShaderMethod method, // pattern center is at origin. method.addStatement('float tiled_st = fract(st);'); probeName = 'tiled_st'; - break; case ui.TileMode.mirror: method.addStatement('float t_1 = (st - 1.0);'); method.addStatement( 'float tiled_st = abs((t_1 - 2.0 * floor(t_1 * 0.5)) - 1.0);'); probeName = 'tiled_st'; - break; } writeUnrolledBinarySearch(method, 0, gradient.thresholdCount - 1, probe: probeName, @@ -812,7 +809,6 @@ class ModeHtmlColorFilter extends EngineHtmlColorFilter { // Since we don't have a size, we can't use background color. // Use svg filter srcIn instead. blendMode = ui.BlendMode.srcIn; - break; case ui.BlendMode.dstOver: case ui.BlendMode.srcIn: case ui.BlendMode.srcATop: diff --git a/lib/web_ui/lib/src/engine/html/shaders/shader_builder.dart b/lib/web_ui/lib/src/engine/html/shaders/shader_builder.dart index a1e49359a4f5a..bae00fb0030de 100644 --- a/lib/web_ui/lib/src/engine/html/shaders/shader_builder.dart +++ b/lib/web_ui/lib/src/engine/html/shaders/shader_builder.dart @@ -132,17 +132,13 @@ class ShaderBuilder { switch (variable.storage) { case ShaderStorageQualifier.kConst: _buffer.write('const '); - break; case ShaderStorageQualifier.kAttribute: _buffer.write(isWebGl2 ? 'in ' : _isFragmentShader ? 'varying ' : 'attribute '); - break; case ShaderStorageQualifier.kUniform: _buffer.write('uniform '); - break; case ShaderStorageQualifier.kVarying: _buffer.write(isWebGl2 ? 'out ' : 'varying '); - break; } _buffer.write('${typeToString(variable.dataType)} ${variable.name}'); if (variable.storage == ShaderStorageQualifier.kConst) { @@ -277,17 +273,14 @@ class ShaderMethod { switch(tileMode) { case ui.TileMode.repeated: addStatement('float $destination = fract($source);'); - break; case ui.TileMode.mirror: addStatement('float $destination = ($source - 1.0);'); addStatement( '$destination = ' 'abs(($destination - 2.0 * floor($destination * 0.5)) - 1.0);'); - break; case ui.TileMode.clamp: case ui.TileMode.decal: addStatement('float $destination = $source;'); - break; } } diff --git a/lib/web_ui/lib/src/engine/keyboard_binding.dart b/lib/web_ui/lib/src/engine/keyboard_binding.dart index dee9df112b80f..443f22f2dfd8c 100644 --- a/lib/web_ui/lib/src/engine/keyboard_binding.dart +++ b/lib/web_ui/lib/src/engine/keyboard_binding.dart @@ -500,15 +500,12 @@ class KeyboardConverter { case ui.KeyEventType.down: assert(lastLogicalRecord == null); nextLogicalRecord = logicalKey(); - break; case ui.KeyEventType.up: assert(lastLogicalRecord != null); nextLogicalRecord = null; - break; case ui.KeyEventType.repeat: assert(lastLogicalRecord != null); nextLogicalRecord = lastLogicalRecord; - break; } if (nextLogicalRecord == null) { _pressingRecords.remove(physicalKey); diff --git a/lib/web_ui/lib/src/engine/platform_dispatcher.dart b/lib/web_ui/lib/src/engine/platform_dispatcher.dart index 0fcbea1600890..a0128a0c71383 100644 --- a/lib/web_ui/lib/src/engine/platform_dispatcher.dart +++ b/lib/web_ui/lib/src/engine/platform_dispatcher.dart @@ -484,7 +484,6 @@ class EnginePlatformDispatcher extends ui.PlatformDispatcher { // CanvasKit vs HTML before invoking this method. replyToPlatformMessage( callback, codec.encodeSuccessEnvelope([true])); - break; } return; @@ -541,7 +540,6 @@ class EnginePlatformDispatcher extends ui.PlatformDispatcher { ClipboardMessageHandler().getDataMethodCall(callback); return; } - break; // Dispatched by the bindings to delay service worker initialization. case 'flutter/service_worker': diff --git a/lib/web_ui/lib/src/engine/pointer_binding.dart b/lib/web_ui/lib/src/engine/pointer_binding.dart index 82a2cb4567ef8..8b035e8398723 100644 --- a/lib/web_ui/lib/src/engine/pointer_binding.dart +++ b/lib/web_ui/lib/src/engine/pointer_binding.dart @@ -437,11 +437,9 @@ mixin _WheelEventListenerMixin on _BaseAdapter { _defaultScrollLineHeight ??= _computeDefaultScrollLineHeight(); deltaX *= _defaultScrollLineHeight!; deltaY *= _defaultScrollLineHeight!; - break; case domDeltaPage: deltaX *= ui.window.physicalSize.width; deltaY *= ui.window.physicalSize.height; - break; case domDeltaPixel: if (operatingSystem == OperatingSystem.macOs && (isSafari || isFirefox)) { // Safari and Firefox seem to report delta in logical pixels while @@ -449,7 +447,6 @@ mixin _WheelEventListenerMixin on _BaseAdapter { deltaX *= ui.window.devicePixelRatio; deltaY *= ui.window.devicePixelRatio; } - break; default: break; } diff --git a/lib/web_ui/lib/src/engine/pointer_converter.dart b/lib/web_ui/lib/src/engine/pointer_converter.dart index 41c11eb8c7588..5a04c23fa936e 100644 --- a/lib/web_ui/lib/src/engine/pointer_converter.dart +++ b/lib/web_ui/lib/src/engine/pointer_converter.dart @@ -281,7 +281,6 @@ class PointerDataConverter { scale: scale, ) ); - break; case ui.PointerChange.hover: final bool alreadyAdded = _pointers.containsKey(device); _ensureStateForPointer(device, physicalX, physicalY); @@ -347,7 +346,6 @@ class PointerDataConverter { ) ); _activeButtons = buttons; - break; case ui.PointerChange.down: final bool alreadyAdded = _pointers.containsKey(device); final _PointerState state = _ensureStateForPointer( @@ -448,7 +446,6 @@ class PointerDataConverter { ) ); _activeButtons = buttons; - break; case ui.PointerChange.move: assert(_pointers.containsKey(device)); assert(isDown); @@ -482,7 +479,6 @@ class PointerDataConverter { ) ); _activeButtons = buttons; - break; case ui.PointerChange.up: case ui.PointerChange.cancel: assert(_pointers.containsKey(device)); @@ -592,7 +588,6 @@ class PointerDataConverter { ); _pointers.remove(device); } - break; case ui.PointerChange.remove: assert(_pointers.containsKey(device)); final _PointerState state = _pointers[device]!; @@ -627,13 +622,11 @@ class PointerDataConverter { ) ); _pointers.remove(device); - break; case ui.PointerChange.panZoomStart: case ui.PointerChange.panZoomUpdate: case ui.PointerChange.panZoomEnd: // Pointer pan/zoom events are not generated on web. assert(false); - break; } } else { switch (signalKind) { @@ -767,10 +760,8 @@ class PointerDataConverter { scale: scale, ) ); - break; case ui.PointerSignalKind.none: assert(false); // This branch should already have 'none' filtered out. - break; case ui.PointerSignalKind.unknown: // Ignore unknown signals. break; diff --git a/lib/web_ui/lib/src/engine/semantics/checkable.dart b/lib/web_ui/lib/src/engine/semantics/checkable.dart index a4c7de151c6f6..7ee0a067c9a63 100644 --- a/lib/web_ui/lib/src/engine/semantics/checkable.dart +++ b/lib/web_ui/lib/src/engine/semantics/checkable.dart @@ -62,13 +62,10 @@ class Checkable extends RoleManager { switch (_kind) { case _CheckableKind.checkbox: semanticsObject.setAriaRole('checkbox', true); - break; case _CheckableKind.radio: semanticsObject.setAriaRole('radio', true); - break; case _CheckableKind.toggle: semanticsObject.setAriaRole('switch', true); - break; } /// Adding disabled and aria-disabled attribute to notify the assistive @@ -90,13 +87,10 @@ class Checkable extends RoleManager { switch (_kind) { case _CheckableKind.checkbox: semanticsObject.setAriaRole('checkbox', false); - break; case _CheckableKind.radio: semanticsObject.setAriaRole('radio', false); - break; case _CheckableKind.toggle: semanticsObject.setAriaRole('switch', false); - break; } _removeDisabledAttribute(); } diff --git a/lib/web_ui/lib/src/engine/semantics/incrementable.dart b/lib/web_ui/lib/src/engine/semantics/incrementable.dart index 6cfeb6c37f80a..59f43fa2e0fe1 100644 --- a/lib/web_ui/lib/src/engine/semantics/incrementable.dart +++ b/lib/web_ui/lib/src/engine/semantics/incrementable.dart @@ -80,10 +80,8 @@ class Incrementable extends RoleManager { case GestureMode.browserGestures: _enableBrowserGestureHandling(); _updateInputValues(); - break; case GestureMode.pointerEvents: _disableBrowserGestureHandling(); - break; } } diff --git a/lib/web_ui/lib/src/engine/semantics/scrollable.dart b/lib/web_ui/lib/src/engine/semantics/scrollable.dart index 06910c7baaa76..38f07c71e91fb 100644 --- a/lib/web_ui/lib/src/engine/semantics/scrollable.dart +++ b/lib/web_ui/lib/src/engine/semantics/scrollable.dart @@ -209,7 +209,6 @@ class Scrollable extends RoleManager { assert(semanticsObject.isHorizontalScrollContainer); element.style.overflowX = 'scroll'; } - break; case GestureMode.pointerEvents: // We use "hidden" instead of "scroll" so that the browser does // not "steal" pointer events. Flutter gesture recognizers need @@ -220,7 +219,6 @@ class Scrollable extends RoleManager { assert(semanticsObject.isHorizontalScrollContainer); element.style.overflowX = 'hidden'; } - break; } } diff --git a/lib/web_ui/lib/src/engine/semantics/semantics_helper.dart b/lib/web_ui/lib/src/engine/semantics/semantics_helper.dart index f3bdbdddc4f01..1e3fffae4d176 100644 --- a/lib/web_ui/lib/src/engine/semantics/semantics_helper.dart +++ b/lib/web_ui/lib/src/engine/semantics/semantics_helper.dart @@ -327,17 +327,14 @@ class MobileSemanticsEnabler extends SemanticsEnabler { case 'click': final DomMouseEvent click = event as DomMouseEvent; activationPoint = click.offset; - break; case 'touchstart': case 'touchend': final DomTouchEvent touchEvent = event as DomTouchEvent; activationPoint = touchEvent.changedTouches.first.client; - break; case 'pointerdown': case 'pointerup': final DomPointerEvent touch = event as DomPointerEvent; activationPoint = touch.client; - break; default: // The event is not relevant, forward to framework as normal. return true; diff --git a/lib/web_ui/lib/src/engine/semantics/text_field.dart b/lib/web_ui/lib/src/engine/semantics/text_field.dart index 52e3d25b6e845..abf29dd9d6cfd 100644 --- a/lib/web_ui/lib/src/engine/semantics/text_field.dart +++ b/lib/web_ui/lib/src/engine/semantics/text_field.dart @@ -286,10 +286,8 @@ class TextField extends RoleManager { case BrowserEngine.blink: case BrowserEngine.firefox: _initializeForBlink(); - break; case BrowserEngine.webkit: _initializeForWebkit(); - break; } } diff --git a/lib/web_ui/lib/src/engine/services/message_codecs.dart b/lib/web_ui/lib/src/engine/services/message_codecs.dart index e412e4266296e..9773c6ee3c2dc 100644 --- a/lib/web_ui/lib/src/engine/services/message_codecs.dart +++ b/lib/web_ui/lib/src/engine/services/message_codecs.dart @@ -378,19 +378,14 @@ class StandardMessageCodec implements MessageCodec { switch (type) { case _valueNull: result = null; - break; case _valueTrue: result = true; - break; case _valueFalse: result = false; - break; case _valueInt32: result = buffer.getInt32(); - break; case _valueInt64: result = buffer.getInt64(); - break; case _valueLargeInt: // Flutter Engine APIs to use large ints have been deprecated on // 2018-01-09 and will be made unavailable. @@ -398,44 +393,35 @@ class StandardMessageCodec implements MessageCodec { final int length = readSize(buffer); final String hex = utf8.decoder.convert(buffer.getUint8List(length)); result = int.parse(hex, radix: 16); - break; case _valueFloat64: result = buffer.getFloat64(); - break; case _valueString: final int length = readSize(buffer); result = utf8.decoder.convert(buffer.getUint8List(length)); - break; case _valueUint8List: final int length = readSize(buffer); result = buffer.getUint8List(length); - break; case _valueInt32List: final int length = readSize(buffer); result = buffer.getInt32List(length); - break; case _valueInt64List: final int length = readSize(buffer); result = buffer.getInt64List(length); - break; case _valueFloat64List: final int length = readSize(buffer); result = buffer.getFloat64List(length); - break; case _valueList: final int length = readSize(buffer); result = []; for (int i = 0; i < length; i++) { result.add(readValue(buffer)); } - break; case _valueMap: final int length = readSize(buffer); result = {}; for (int i = 0; i < length; i++) { result[readValue(buffer)] = readValue(buffer); } - break; default: throw const FormatException('Message corrupted'); } diff --git a/lib/web_ui/lib/src/engine/skwasm/skwasm_impl.dart b/lib/web_ui/lib/src/engine/skwasm/skwasm_impl.dart index d048c10959166..02a11487bd4f4 100644 --- a/lib/web_ui/lib/src/engine/skwasm/skwasm_impl.dart +++ b/lib/web_ui/lib/src/engine/skwasm/skwasm_impl.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -library skwasm_impl; export 'skwasm_impl/canvas.dart'; export 'skwasm_impl/image.dart'; diff --git a/lib/web_ui/lib/src/engine/skwasm/skwasm_stub.dart b/lib/web_ui/lib/src/engine/skwasm/skwasm_stub.dart index 32f7960a81fff..382d34840e9f6 100644 --- a/lib/web_ui/lib/src/engine/skwasm/skwasm_stub.dart +++ b/lib/web_ui/lib/src/engine/skwasm/skwasm_stub.dart @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// The web_sdk/sdk_rewriter.dart uses this directive. +// ignore: unnecessary_library_directive library skwasm_stub; export 'skwasm_stub/renderer.dart'; diff --git a/lib/web_ui/lib/src/engine/text/canvas_paragraph.dart b/lib/web_ui/lib/src/engine/text/canvas_paragraph.dart index 2321f805a2ad7..4f270b01cb1a9 100644 --- a/lib/web_ui/lib/src/engine/text/canvas_paragraph.dart +++ b/lib/web_ui/lib/src/engine/text/canvas_paragraph.dart @@ -214,10 +214,8 @@ class CanvasParagraph implements ui.Paragraph { switch (position.affinity) { case ui.TextAffinity.upstream: characterPosition = position.offset - 1; - break; case ui.TextAffinity.downstream: characterPosition = position.offset; - break; } final int start = WordBreaker.prevBreakIndex(plainText, characterPosition + 1); final int end = WordBreaker.nextBreakIndex(plainText, characterPosition); diff --git a/lib/web_ui/lib/src/engine/text/layout_service.dart b/lib/web_ui/lib/src/engine/text/layout_service.dart index d8360440520a3..ae46ae685689f 100644 --- a/lib/web_ui/lib/src/engine/text/layout_service.dart +++ b/lib/web_ui/lib/src/engine/text/layout_service.dart @@ -210,7 +210,6 @@ class TextLayoutService { case LineBreakType.opportunity: minIntrinsicWidth = math.max(minIntrinsicWidth, runningMinIntrinsicWidth); runningMinIntrinsicWidth = 0; - break; case LineBreakType.mandatory: case LineBreakType.endOfText: @@ -218,7 +217,6 @@ class TextLayoutService { maxIntrinsicWidth = math.max(maxIntrinsicWidth, runningMaxIntrinsicWidth); runningMinIntrinsicWidth = 0; runningMaxIntrinsicWidth = 0; - break; } } } @@ -640,14 +638,12 @@ class LineBuilder { // `descent` enough to fit the placeholder. ascent = this.ascent; descent = placeholder.height - this.ascent; - break; case ui.PlaceholderAlignment.bottom: // The opposite of `top`. The `descent` is the same, but we extend the // `ascent`. ascent = placeholder.height - this.descent; descent = this.descent; - break; case ui.PlaceholderAlignment.middle: final double textMidPoint = height / 2; @@ -655,22 +651,18 @@ class LineBuilder { final double diff = placeholderMidPoint - textMidPoint; ascent = this.ascent + diff; descent = this.descent + diff; - break; case ui.PlaceholderAlignment.aboveBaseline: ascent = placeholder.height; descent = 0.0; - break; case ui.PlaceholderAlignment.belowBaseline: ascent = 0.0; descent = placeholder.height; - break; case ui.PlaceholderAlignment.baseline: ascent = placeholder.baselineOffset; descent = placeholder.height - ascent; - break; } // Update the metrics of the fragment to reflect the calculated ascent and diff --git a/lib/web_ui/lib/src/engine/text/unicode_range.dart b/lib/web_ui/lib/src/engine/text/unicode_range.dart index 558c83f7822db..d612efb80a322 100644 --- a/lib/web_ui/lib/src/engine/text/unicode_range.dart +++ b/lib/web_ui/lib/src/engine/text/unicode_range.dart @@ -170,10 +170,8 @@ class UnicodePropertyLookup

{ switch (range.compare(value)) { case _ComparisonResult.higher: min = mid + 1; - break; case _ComparisonResult.lower: max = mid; - break; case _ComparisonResult.inside: return mid; } diff --git a/lib/web_ui/lib/src/engine/text/word_breaker.dart b/lib/web_ui/lib/src/engine/text/word_breaker.dart index a3e46c81a2ab6..55a395cbad545 100644 --- a/lib/web_ui/lib/src/engine/text/word_breaker.dart +++ b/lib/web_ui/lib/src/engine/text/word_breaker.dart @@ -5,11 +5,11 @@ import '../util.dart'; import 'word_break_properties.dart'; -class _FindBreakDirection { - const _FindBreakDirection({required this.step}); +enum _FindBreakDirection { + forward(step: 1), + backward(step: -1); - static const _FindBreakDirection forward = _FindBreakDirection(step: 1); - static const _FindBreakDirection backward = _FindBreakDirection(step: -1); + const _FindBreakDirection({required this.step}); final int step; } diff --git a/lib/web_ui/lib/src/engine/text_editing/text_capitalization.dart b/lib/web_ui/lib/src/engine/text_editing/text_capitalization.dart index b871b737d7e7f..865725f0bedb4 100644 --- a/lib/web_ui/lib/src/engine/text_editing/text_capitalization.dart +++ b/lib/web_ui/lib/src/engine/text_editing/text_capitalization.dart @@ -69,13 +69,10 @@ class TextCapitalizationConfig { } else { autocapitalize = 'words'; } - break; case TextCapitalization.characters: autocapitalize = 'characters'; - break; case TextCapitalization.sentences: autocapitalize = 'sentences'; - break; case TextCapitalization.none: default: autocapitalize = 'off'; diff --git a/lib/web_ui/lib/src/engine/text_editing/text_editing.dart b/lib/web_ui/lib/src/engine/text_editing/text_editing.dart index 46447963a78e4..94e66d8b6e698 100644 --- a/lib/web_ui/lib/src/engine/text_editing/text_editing.dart +++ b/lib/web_ui/lib/src/engine/text_editing/text_editing.dart @@ -2048,7 +2048,6 @@ class TextEditingChannel { clientId: call.arguments[0] as int, configuration: InputConfiguration.fromFrameworkMessage(call.arguments[1] as Map), ); - break; case 'TextInput.updateConfig': // Set configuration eagerly because it contains data about the text @@ -2058,7 +2057,6 @@ class TextEditingChannel { call.arguments as Map ); command = const TextInputUpdateConfig(); - break; case 'TextInput.setEditingState': command = TextInputSetEditingState( @@ -2066,11 +2064,9 @@ class TextEditingChannel { call.arguments as Map ), ); - break; case 'TextInput.show': command = const TextInputShow(); - break; case 'TextInput.setEditableSizeAndTransform': command = TextInputSetEditableSizeAndTransform( @@ -2078,7 +2074,6 @@ class TextEditingChannel { call.arguments as Map ), ); - break; case 'TextInput.setStyle': command = TextInputSetStyle( @@ -2086,36 +2081,29 @@ class TextEditingChannel { call.arguments as Map, ), ); - break; case 'TextInput.clearClient': command = const TextInputClearClient(); - break; case 'TextInput.hide': command = const TextInputHide(); - break; case 'TextInput.requestAutofill': // There's no API to request autofill on the web. Instead we let the // browser show autofill options automatically, if available. We // therefore simply ignore this message. command = const TextInputRequestAutofill(); - break; case 'TextInput.finishAutofillContext': command = TextInputFinishAutofillContext( saveForm: call.arguments as bool, ); - break; case 'TextInput.setMarkedTextRect': command = const TextInputSetMarkedTextRect(); - break; case 'TextInput.setCaretRect': command = const TextInputSetCaretRect(); - break; default: EnginePlatformDispatcher.instance.replyToPlatformMessage(callback, null); diff --git a/lib/web_ui/lib/src/engine/util.dart b/lib/web_ui/lib/src/engine/util.dart index 9400936386b7a..612c03dbe8637 100644 --- a/lib/web_ui/lib/src/engine/util.dart +++ b/lib/web_ui/lib/src/engine/util.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -library util; import 'dart:async'; import 'dart:math' as math; diff --git a/lib/web_ui/test/canvaskit/semantics_test.dart b/lib/web_ui/test/canvaskit/semantics_test.dart index 7df21aeeaac19..4c36e25ff3f3a 100644 --- a/lib/web_ui/test/canvaskit/semantics_test.dart +++ b/lib/web_ui/test/canvaskit/semantics_test.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. @TestOn('chrome || safari || firefox') +library; import 'dart:async'; diff --git a/lib/web_ui/test/channel_buffers_test.dart b/lib/web_ui/test/channel_buffers_test.dart index b88af28d3ab43..bd72acab10978 100644 --- a/lib/web_ui/test/channel_buffers_test.dart +++ b/lib/web_ui/test/channel_buffers_test.dart @@ -126,13 +126,10 @@ void testMain() { switch (counter) { case 0: expect(drainedData, equals(two)); - break; case 1: expect(drainedData, equals(three)); - break; case 2: expect(drainedData, equals(four)); - break; } counter += 1; return Future.value(); diff --git a/lib/web_ui/test/engine/app_bootstrap_test.dart b/lib/web_ui/test/engine/app_bootstrap_test.dart index 76d7da58c2422..609c569883bb6 100644 --- a/lib/web_ui/test/engine/app_bootstrap_test.dart +++ b/lib/web_ui/test/engine/app_bootstrap_test.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. @TestOn('browser') +library; import 'dart:js_util'; diff --git a/lib/web_ui/test/engine/configuration_test.dart b/lib/web_ui/test/engine/configuration_test.dart index 33aaa35e381c2..a868ca2088ab4 100644 --- a/lib/web_ui/test/engine/configuration_test.dart +++ b/lib/web_ui/test/engine/configuration_test.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. @TestOn('browser') +library; import 'package:js/js_util.dart' as js_util; diff --git a/lib/web_ui/test/engine/history_test.dart b/lib/web_ui/test/engine/history_test.dart index 2995efe8d09ab..28226ad201ba6 100644 --- a/lib/web_ui/test/engine/history_test.dart +++ b/lib/web_ui/test/engine/history_test.dart @@ -2,8 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -@TestOn('!safari') // TODO(mdebbar): https://github.com/flutter/flutter/issues/51169 +@TestOn('!safari') +library; import 'dart:async'; diff --git a/lib/web_ui/test/engine/semantics/semantics_api_test.dart b/lib/web_ui/test/engine/semantics/semantics_api_test.dart index 5a457eff1aef3..d53c7263ef65d 100644 --- a/lib/web_ui/test/engine/semantics/semantics_api_test.dart +++ b/lib/web_ui/test/engine/semantics/semantics_api_test.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. @TestOn('chrome || safari || firefox') +library; import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; diff --git a/lib/web_ui/test/engine/semantics/semantics_test.dart b/lib/web_ui/test/engine/semantics/semantics_test.dart index 6e2bda120fb2e..e773cb33dcef3 100644 --- a/lib/web_ui/test/engine/semantics/semantics_test.dart +++ b/lib/web_ui/test/engine/semantics/semantics_test.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. @TestOn('chrome || safari || firefox') +library; import 'dart:async'; import 'dart:typed_data'; diff --git a/lib/web_ui/test/engine/semantics/text_field_test.dart b/lib/web_ui/test/engine/semantics/text_field_test.dart index 73e28a6948b82..b9ffec7f64067 100644 --- a/lib/web_ui/test/engine/semantics/text_field_test.dart +++ b/lib/web_ui/test/engine/semantics/text_field_test.dart @@ -3,6 +3,8 @@ // found in the LICENSE file. @TestOn('chrome || safari || firefox') +library; + import 'dart:typed_data'; import 'package:test/bootstrap/browser.dart'; diff --git a/lib/web_ui/test/engine/surface/path/path_winding_test.dart b/lib/web_ui/test/engine/surface/path/path_winding_test.dart index 6c1dc06169a11..2d4f1692d931d 100644 --- a/lib/web_ui/test/engine/surface/path/path_winding_test.dart +++ b/lib/web_ui/test/engine/surface/path/path_winding_test.dart @@ -113,19 +113,15 @@ void testMain() { switch (index % 13) { case 0: path.lineTo(nonFinitePts[i].dx, nonFinitePts[i].dy); - break; case 1: path.quadraticBezierTo(nonFinitePts[i].dx, nonFinitePts[i].dy, nonFinitePts[i].dx, nonFinitePts[i].dy); - break; case 2: path.quadraticBezierTo(nonFinitePts[i].dx, nonFinitePts[i].dy, axisAlignedPts[f].dx, axisAlignedPts[f].dy); - break; case 3: path.quadraticBezierTo(axisAlignedPts[f].dx, axisAlignedPts[f].dy, nonFinitePts[i].dx, nonFinitePts[i].dy); - break; case 4: path.cubicTo( nonFinitePts[i].dx, @@ -134,7 +130,6 @@ void testMain() { axisAlignedPts[f].dy, axisAlignedPts[f].dx, axisAlignedPts[f].dy); - break; case 5: path.cubicTo( axisAlignedPts[f].dx, @@ -143,7 +138,6 @@ void testMain() { nonFinitePts[i].dy, axisAlignedPts[f].dx, axisAlignedPts[f].dy); - break; case 6: path.cubicTo( axisAlignedPts[f].dx, @@ -152,7 +146,6 @@ void testMain() { axisAlignedPts[f].dy, nonFinitePts[i].dx, nonFinitePts[i].dy); - break; case 7: path.cubicTo( nonFinitePts[i].dx, @@ -161,7 +154,6 @@ void testMain() { nonFinitePts[i].dy, axisAlignedPts[f].dx, axisAlignedPts[f].dy); - break; case 8: path.cubicTo( nonFinitePts[i].dx, @@ -170,7 +162,6 @@ void testMain() { axisAlignedPts[f].dy, nonFinitePts[i].dx, nonFinitePts[i].dy); - break; case 9: path.cubicTo( axisAlignedPts[f].dx, @@ -179,7 +170,6 @@ void testMain() { nonFinitePts[i].dy, nonFinitePts[i].dx, nonFinitePts[i].dy); - break; case 10: path.cubicTo( nonFinitePts[i].dx, @@ -188,7 +178,6 @@ void testMain() { nonFinitePts[i].dy, nonFinitePts[i].dx, nonFinitePts[i].dy); - break; case 11: path.cubicTo( nonFinitePts[i].dx, @@ -197,10 +186,8 @@ void testMain() { axisAlignedPts[f].dy, axisAlignedPts[g].dx, axisAlignedPts[g].dy); - break; case 12: path.moveTo(nonFinitePts[i].dx, nonFinitePts[i].dy); - break; } expect(path.convexityType, SPathConvexityType.kUnknown); } @@ -213,22 +200,17 @@ void testMain() { switch (curveSelect) { case 0: path.moveTo(axisAlignedPts[f].dx, axisAlignedPts[f].dy); - break; case 1: path.lineTo(axisAlignedPts[f].dx, axisAlignedPts[f].dy); - break; case 2: path.quadraticBezierTo(axisAlignedPts[f].dx, axisAlignedPts[f].dy, axisAlignedPts[f].dx, axisAlignedPts[f].dy); - break; case 3: path.quadraticBezierTo(axisAlignedPts[f].dx, axisAlignedPts[f].dy, axisAlignedPts[g].dx, axisAlignedPts[g].dy); - break; case 4: path.quadraticBezierTo(axisAlignedPts[g].dx, axisAlignedPts[g].dy, axisAlignedPts[f].dx, axisAlignedPts[f].dy); - break; case 5: path.cubicTo( axisAlignedPts[f].dx, @@ -237,7 +219,6 @@ void testMain() { axisAlignedPts[f].dy, axisAlignedPts[f].dx, axisAlignedPts[f].dy); - break; case 6: path.cubicTo( axisAlignedPts[f].dx, @@ -246,7 +227,6 @@ void testMain() { axisAlignedPts[f].dy, axisAlignedPts[g].dx, axisAlignedPts[g].dy); - break; case 7: path.cubicTo( axisAlignedPts[f].dx, @@ -255,7 +235,6 @@ void testMain() { axisAlignedPts[g].dy, axisAlignedPts[f].dx, axisAlignedPts[f].dy); - break; case 8: path.cubicTo( axisAlignedPts[f].dx, @@ -264,7 +243,6 @@ void testMain() { axisAlignedPts[g].dy, axisAlignedPts[g].dx, axisAlignedPts[g].dy); - break; case 9: path.cubicTo( axisAlignedPts[g].dx, @@ -273,7 +251,6 @@ void testMain() { axisAlignedPts[f].dy, axisAlignedPts[f].dx, axisAlignedPts[f].dy); - break; case 10: path.cubicTo( axisAlignedPts[g].dx, @@ -282,7 +259,6 @@ void testMain() { axisAlignedPts[f].dy, axisAlignedPts[g].dx, axisAlignedPts[g].dy); - break; } if (curveSelect != 7 && curveSelect != 10) { final int result = path.convexityType; diff --git a/lib/web_ui/test/engine/surface/scene_builder_test.dart b/lib/web_ui/test/engine/surface/scene_builder_test.dart index eddb3dce5e61c..836ee056576f8 100644 --- a/lib/web_ui/test/engine/surface/scene_builder_test.dart +++ b/lib/web_ui/test/engine/surface/scene_builder_test.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. @TestOn('chrome || firefox') +library; import 'dart:async'; import 'dart:js_interop'; diff --git a/lib/web_ui/test/engine/view_embedder/dimensions_provider/custom_element_dimensions_provider_test.dart b/lib/web_ui/test/engine/view_embedder/dimensions_provider/custom_element_dimensions_provider_test.dart index 71c17fef08fa9..1b8da9e97dd7a 100644 --- a/lib/web_ui/test/engine/view_embedder/dimensions_provider/custom_element_dimensions_provider_test.dart +++ b/lib/web_ui/test/engine/view_embedder/dimensions_provider/custom_element_dimensions_provider_test.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. @TestOn('browser') +library; import 'dart:async'; diff --git a/lib/web_ui/test/engine/view_embedder/dimensions_provider/dimensions_provider_test.dart b/lib/web_ui/test/engine/view_embedder/dimensions_provider/dimensions_provider_test.dart index 8edfe33233d51..bb57e2a1c93b1 100644 --- a/lib/web_ui/test/engine/view_embedder/dimensions_provider/dimensions_provider_test.dart +++ b/lib/web_ui/test/engine/view_embedder/dimensions_provider/dimensions_provider_test.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. @TestOn('browser') +library; import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; diff --git a/lib/web_ui/test/engine/view_embedder/dimensions_provider/full_page_dimensions_provider_test.dart b/lib/web_ui/test/engine/view_embedder/dimensions_provider/full_page_dimensions_provider_test.dart index d6760e57853c9..739f9b2663279 100644 --- a/lib/web_ui/test/engine/view_embedder/dimensions_provider/full_page_dimensions_provider_test.dart +++ b/lib/web_ui/test/engine/view_embedder/dimensions_provider/full_page_dimensions_provider_test.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. @TestOn('browser') +library; import 'dart:async'; diff --git a/lib/web_ui/test/engine/view_embedder/embedding_strategy/custom_element_embedding_strategy_test.dart b/lib/web_ui/test/engine/view_embedder/embedding_strategy/custom_element_embedding_strategy_test.dart index 62dc4de5b09c4..850a2a66a2376 100644 --- a/lib/web_ui/test/engine/view_embedder/embedding_strategy/custom_element_embedding_strategy_test.dart +++ b/lib/web_ui/test/engine/view_embedder/embedding_strategy/custom_element_embedding_strategy_test.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. @TestOn('browser') +library; import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; diff --git a/lib/web_ui/test/engine/view_embedder/embedding_strategy/embedding_strategy_test.dart b/lib/web_ui/test/engine/view_embedder/embedding_strategy/embedding_strategy_test.dart index 4aaab90e44615..f13cf67c4cb4b 100644 --- a/lib/web_ui/test/engine/view_embedder/embedding_strategy/embedding_strategy_test.dart +++ b/lib/web_ui/test/engine/view_embedder/embedding_strategy/embedding_strategy_test.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. @TestOn('browser') +library; import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; diff --git a/lib/web_ui/test/engine/view_embedder/embedding_strategy/full_page_embedding_strategy_test.dart b/lib/web_ui/test/engine/view_embedder/embedding_strategy/full_page_embedding_strategy_test.dart index 1c62be92165ef..70f2fbd1e92bd 100644 --- a/lib/web_ui/test/engine/view_embedder/embedding_strategy/full_page_embedding_strategy_test.dart +++ b/lib/web_ui/test/engine/view_embedder/embedding_strategy/full_page_embedding_strategy_test.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. @TestOn('browser') +library; import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; diff --git a/lib/web_ui/test/engine/view_embedder/hot_restart_cache_handler_test.dart b/lib/web_ui/test/engine/view_embedder/hot_restart_cache_handler_test.dart index 939c8027510cd..7525b571d9acc 100644 --- a/lib/web_ui/test/engine/view_embedder/hot_restart_cache_handler_test.dart +++ b/lib/web_ui/test/engine/view_embedder/hot_restart_cache_handler_test.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. @TestOn('browser') +library; import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; diff --git a/lib/web_ui/test/matchers.dart b/lib/web_ui/test/matchers.dart index df6124d0790d5..a2bd9fe66102a 100644 --- a/lib/web_ui/test/matchers.dart +++ b/lib/web_ui/test/matchers.dart @@ -255,53 +255,38 @@ String canonicalizeHtml( switch (replacementTag) { case 'flt-scene': replacementTag = 's'; - break; case 'flt-transform': replacementTag = 't'; - break; case 'flt-opacity': replacementTag = 'o'; - break; case 'flt-clip': final String? clipType = original.attributes['clip-type']; switch (clipType) { case 'rect': replacementTag = 'clip'; - break; case 'rrect': replacementTag = 'rclip'; - break; case 'physical-shape': replacementTag = 'pshape'; - break; default: throw Exception('Unknown clip type: $clipType'); } - break; case 'flt-clip-interior': replacementTag = 'clip-i'; - break; case 'flt-picture': replacementTag = 'pic'; - break; case 'flt-canvas': replacementTag = 'c'; - break; case 'flt-dom-canvas': replacementTag = 'd'; - break; case 'flt-semantics': replacementTag = 'sem'; - break; case 'flt-semantics-container': replacementTag = 'sem-c'; - break; case 'flt-semantics-img': replacementTag = 'sem-img'; - break; case 'flt-semantics-text-field': replacementTag = 'sem-tf'; - break; } final html_package.Element replacement = diff --git a/lib/web_ui/test/skwasm/smoke_test.dart b/lib/web_ui/test/skwasm/smoke_test.dart index 103af64316d40..55f7e5aa5379d 100644 --- a/lib/web_ui/test/skwasm/smoke_test.dart +++ b/lib/web_ui/test/skwasm/smoke_test.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. @TestOn('chrome || safari || firefox') +library; import 'dart:async'; From e86db15c6f8b7b031964eedf2080182b11f6391f Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 17 Mar 2023 15:10:22 -0700 Subject: [PATCH 04/12] ci --- ci/bin/format.dart | 3 --- 1 file changed, 3 deletions(-) diff --git a/ci/bin/format.dart b/ci/bin/format.dart index e68e046533c6f..c67f9c0d7ede0 100644 --- a/ci/bin/format.dart +++ b/ci/bin/format.dart @@ -968,13 +968,10 @@ Future main(List arguments) async { switch (type) { case MessageType.message: stderr.writeln(message); - break; case MessageType.error: stderr.writeln('ERROR: $message'); - break; case MessageType.warning: stderr.writeln('WARNING: $message'); - break; } } From cdc6188af03d685aea94665eead24856d8d89435 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 17 Mar 2023 15:11:11 -0700 Subject: [PATCH 05/12] flutter_frontend_server --- flutter_frontend_server/bin/starter.dart | 1 - flutter_frontend_server/lib/server.dart | 1 - 2 files changed, 2 deletions(-) diff --git a/flutter_frontend_server/bin/starter.dart b/flutter_frontend_server/bin/starter.dart index f78c3a2754d5c..e839087dd5d04 100644 --- a/flutter_frontend_server/bin/starter.dart +++ b/flutter_frontend_server/bin/starter.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -library frontend_server; import 'dart:io'; diff --git a/flutter_frontend_server/lib/server.dart b/flutter_frontend_server/lib/server.dart index 49f8ffd08d2e5..8733c5b7a9070 100644 --- a/flutter_frontend_server/lib/server.dart +++ b/flutter_frontend_server/lib/server.dart @@ -4,7 +4,6 @@ // ignore_for_file: avoid_print -library flutter_frontend_server; import 'dart:async'; import 'dart:io' hide FileSystemEntity; From 8d51a0c8a83998daf8342f6bfe0aa9a67271417d Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 17 Mar 2023 15:15:20 -0700 Subject: [PATCH 06/12] tools --- tools/clang_tidy/lib/clang_tidy.dart | 5 ----- tools/licenses/lib/filesystem.dart | 28 ++++++++++++------------- tools/licenses/lib/licenses.dart | 30 --------------------------- tools/path_ops/dart/lib/path_ops.dart | 6 ------ 4 files changed, 14 insertions(+), 55 deletions(-) diff --git a/tools/clang_tidy/lib/clang_tidy.dart b/tools/clang_tidy/lib/clang_tidy.dart index 4a49f9b591f96..6fcbeb29d6e86 100644 --- a/tools/clang_tidy/lib/clang_tidy.dart +++ b/tools/clang_tidy/lib/clang_tidy.dart @@ -299,24 +299,19 @@ class ClangTidy { switch (action) { case LintAction.skipNoLint: _outSink.writeln('🔷 ignoring $relativePath (FLUTTER_NOLINT)'); - break; case LintAction.failMalformedNoLint: _errSink.writeln('❌ malformed opt-out $relativePath'); _errSink.writeln( ' Required format: // FLUTTER_NOLINT: $issueUrlPrefix/ISSUE_ID', ); sawMalformed = true; - break; case LintAction.lint: _outSink.writeln('🔶 linting $relativePath'); jobs.add(command.createLintJob(options)); - break; case LintAction.skipThirdParty: _outSink.writeln('🔷 ignoring $relativePath (third_party)'); - break; case LintAction.skipMissing: _outSink.writeln('🔷 ignoring $relativePath (missing)'); - break; } } return _ComputeJobsResult(jobs, sawMalformed); diff --git a/tools/licenses/lib/filesystem.dart b/tools/licenses/lib/filesystem.dart index 70a64535ab045..071ad10b578db 100644 --- a/tools/licenses/lib/filesystem.dart +++ b/tools/licenses/lib/filesystem.dart @@ -524,13 +524,13 @@ class FileSystemDirectory extends IoNode implements Directory { final io.File fileEntity = entity as io.File; if (fileEntity.lengthSync() > 0) { switch (identifyFile(fileEntity.path, () => _readBytes(fileEntity))) { - case FileType.binary: yield FileSystemFile(fileEntity); break; - case FileType.zip: yield FileSystemZipFile(fileEntity); break; - case FileType.tar: yield FileSystemTarFile(fileEntity); break; - case FileType.gz: yield FileSystemGZipFile(fileEntity); break; - case FileType.bzip2: yield FileSystemBZip2File(fileEntity); break; - case FileType.text: yield FileSystemUTF8TextFile(fileEntity); break; - case FileType.latin1Text: yield FileSystemLatin1TextFile(fileEntity); break; + case FileType.binary: yield FileSystemFile(fileEntity); + case FileType.zip: yield FileSystemZipFile(fileEntity); + case FileType.tar: yield FileSystemTarFile(fileEntity); + case FileType.gz: yield FileSystemGZipFile(fileEntity); + case FileType.bzip2: yield FileSystemBZip2File(fileEntity); + case FileType.text: yield FileSystemUTF8TextFile(fileEntity); + case FileType.latin1Text: yield FileSystemLatin1TextFile(fileEntity); case FileType.notPartOfBuild: break; // ignore this file } } @@ -618,13 +618,13 @@ class ArchiveDirectory extends IoNode implements Directory { if (entry.size > 0) { final String entryFullName = '$fullName/${path.basename(entry.name)}'; switch (identifyFile(entry.name, () => entry.content as List)) { - case FileType.binary: _files.add(ArchiveFile(entryFullName, entry)); break; - case FileType.zip: _files.add(ArchiveZipFile(entryFullName, entry)); break; - case FileType.tar: _files.add(ArchiveTarFile(entryFullName, entry)); break; - case FileType.gz: _files.add(ArchiveGZipFile(entryFullName, entry)); break; - case FileType.bzip2: _files.add(ArchiveBZip2File(entryFullName, entry)); break; - case FileType.text: _files.add(ArchiveUTF8TextFile(entryFullName, entry)); break; - case FileType.latin1Text: _files.add(ArchiveLatin1TextFile(entryFullName, entry)); break; + case FileType.binary: _files.add(ArchiveFile(entryFullName, entry)); + case FileType.zip: _files.add(ArchiveZipFile(entryFullName, entry)); + case FileType.tar: _files.add(ArchiveTarFile(entryFullName, entry)); + case FileType.gz: _files.add(ArchiveGZipFile(entryFullName, entry)); + case FileType.bzip2: _files.add(ArchiveBZip2File(entryFullName, entry)); + case FileType.text: _files.add(ArchiveUTF8TextFile(entryFullName, entry)); + case FileType.latin1Text: _files.add(ArchiveLatin1TextFile(entryFullName, entry)); case FileType.notPartOfBuild: break; // ignore this file } } diff --git a/tools/licenses/lib/licenses.dart b/tools/licenses/lib/licenses.dart index 086fdd44d4f14..17811a0471f62 100644 --- a/tools/licenses/lib/licenses.dart +++ b/tools/licenses/lib/licenses.dart @@ -344,7 +344,6 @@ abstract class License { case LicenseType.bsd: case LicenseType.mit: result = TemplateLicense._autosplit(body, type, origin: origin); - break; case LicenseType.apache: case LicenseType.freetype: case LicenseType.ijg: @@ -356,19 +355,15 @@ abstract class License { case LicenseType.vulkan: case LicenseType.zlib: result = MessageLicense._(body, type, origin: origin); - break; case LicenseType.apacheNotice: result = UniqueLicense._(body, type, origin: origin); - break; case LicenseType.mpl: result = MozillaLicense._(body, type, origin: origin); - break; // The exception in the license of Bison allows redistributing larger // works "under terms of your choice"; we choose terms that don't require // any notice in the binary distribution. case LicenseType.bison: result = BlankLicense._(body, type, origin: origin); - break; case LicenseType.icu: case LicenseType.openssl: throw 'Use License.fromMultipleBlocks rather than License.fromBodyAndType for the ICU and OpenSSL licenses.'; @@ -378,7 +373,6 @@ abstract class License { case LicenseType.gpl: case LicenseType.lgpl: result = DisallowedLicense._(body, type, origin: origin); - break; case LicenseType.defaultTemplate: throw 'should not be creating a LicenseType.defaultTemplate license, it is not a real type'; } @@ -423,62 +417,49 @@ abstract class License { // https://github.com/abseil/abseil-cpp/pull/270/files#r793181143 body = system.File('data/apache-license-2.0').readAsStringSync(); type = LicenseType.apache; - break; case 'Apache-2.0 WITH LLVM-exception': // SPDX ID case 'https://llvm.org/LICENSE.txt': body = system.File('data/apache-license-2.0-with-llvm-exception').readAsStringSync(); type = LicenseType.llvm; - break; case 'https://developers.google.com/open-source/licenses/bsd': body = system.File('data/google-bsd').readAsStringSync(); type = LicenseType.bsd; - break; case 'http://polymer.github.io/LICENSE.txt': body = system.File('data/polymer-bsd').readAsStringSync(); type = LicenseType.bsd; - break; case 'http://www.eclipse.org/legal/epl-v10.html': body = system.File('data/eclipse-1.0').readAsStringSync(); type = LicenseType.eclipse; - break; case 'COPYING3:3': body = system.File('data/gpl-3.0').readAsStringSync(); type = LicenseType.gpl; - break; case 'COPYING.LIB:2': case 'COPYING.LIother.m_:2': // blame hyatt body = system.File('data/library-gpl-2.0').readAsStringSync(); type = LicenseType.lgpl; - break; case 'GNU Lesser:2': // there has never been such a license, but the authors said they meant the LGPL2.1 case 'GNU Lesser:2.1': body = system.File('data/lesser-gpl-2.1').readAsStringSync(); type = LicenseType.lgpl; - break; case 'COPYING.RUNTIME:3.1': case 'GCC Runtime Library Exception:3.1': body = system.File('data/gpl-gcc-exception-3.1').readAsStringSync(); - break; case 'Academic Free License:3.0': body = system.File('data/academic-3.0').readAsStringSync(); type = LicenseType.afl; - break; case 'Mozilla Public License:1.1': body = system.File('data/mozilla-1.1').readAsStringSync(); type = LicenseType.mpl; - break; case 'http://mozilla.org/MPL/2.0/:2.0': body = system.File('data/mozilla-2.0').readAsStringSync(); type = LicenseType.mpl; - break; case 'MIT': // SPDX ID case 'http://opensource->org/licenses/MIT': // i don't even case 'http://opensource.org/licenses/MIT': case 'https://opensource.org/licenses/MIT': body = system.File('data/mit').readAsStringSync(); type = LicenseType.mit; - break; case 'Unicode-DFS-2016': // SPDX ID case 'http://unicode.org/copyright.html#Exhibit1': case 'http://www.unicode.org/copyright.html#License': @@ -488,11 +469,9 @@ abstract class License { case 'https://www.unicode.org/terms_of_use.html': // redirects to copyright.html body = system.File('data/unicode').readAsStringSync(); type = LicenseType.unicode; - break; case 'http://www.ietf.org/rfc/rfc3454.txt': body = system.File('data/ietf').readAsStringSync(); type = LicenseType.ietf; - break; default: throw 'unknown identifyingReference $identifyingReference'; } return License.fromBodyAndType(body, type, origin: '$identifyingReference referenced by $referencer'); @@ -513,7 +492,6 @@ abstract class License { case LicenseType.lgpl: // We do not want this kind of license in our build. assert(this is DisallowedLicense); - break; case LicenseType.apache: case LicenseType.freetype: case LicenseType.ijg: @@ -524,30 +502,22 @@ abstract class License { case LicenseType.vulkan: case LicenseType.zlib: assert(this is MessageLicense); - break; case LicenseType.apacheNotice: assert(this is UniqueLicense); - break; case LicenseType.bison: assert(this is BlankLicense); - break; case LicenseType.bsd: case LicenseType.mit: assert(this is TemplateLicense); - break; case LicenseType.icu: case LicenseType.openssl: assert(this is MultiLicense); - break; case LicenseType.mpl: assert(this is MozillaLicense); - break; case LicenseType.unknown: assert(this is MessageLicense || this is UniqueLicense); - break; case LicenseType.defaultTemplate: assert(false, 'should not be creating LicenseType.defaultTemplate license'); - break; } } on AssertionError { throw 'incorrectly created a $runtimeType for a $type'; diff --git a/tools/path_ops/dart/lib/path_ops.dart b/tools/path_ops/dart/lib/path_ops.dart index 6f6d507449361..d0736884e057f 100644 --- a/tools/path_ops/dart/lib/path_ops.dart +++ b/tools/path_ops/dart/lib/path_ops.dart @@ -171,16 +171,12 @@ class Path implements PathProxy { switch (verb) { case PathVerb.moveTo: proxy.moveTo(points[index++], points[index++]); - break; case PathVerb.lineTo: proxy.lineTo(points[index++], points[index++]); - break; case PathVerb._quadTo: assert(false); - break; case PathVerb._conicTo: assert(false); - break; case PathVerb.cubicTo: proxy.cubicTo( points[index++], @@ -190,10 +186,8 @@ class Path implements PathProxy { points[index++], points[index++], ); - break; case PathVerb.close: proxy.close(); - break; } } assert(index == points.length); From 363196bd31668c55ce82e253f0a4e828664f9902 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 17 Mar 2023 15:16:40 -0700 Subject: [PATCH 07/12] testing --- testing/dart/channel_buffers_test.dart | 3 --- testing/dart/isolate_name_server_test.dart | 2 -- testing/scenario_app/lib/main.dart | 3 --- 3 files changed, 8 deletions(-) diff --git a/testing/dart/channel_buffers_test.dart b/testing/dart/channel_buffers_test.dart index 4683a62254d77..4a17705b74c31 100644 --- a/testing/dart/channel_buffers_test.dart +++ b/testing/dart/channel_buffers_test.dart @@ -111,13 +111,10 @@ void main() { switch (counter) { case 0: expect(drainedData, equals(two)); - break; case 1: expect(drainedData, equals(three)); - break; case 2: expect(drainedData, equals(four)); - break; } counter += 1; }); diff --git a/testing/dart/isolate_name_server_test.dart b/testing/dart/isolate_name_server_test.dart index b805e814a573a..58005227699ad 100644 --- a/testing/dart/isolate_name_server_test.dart +++ b/testing/dart/isolate_name_server_test.dart @@ -110,12 +110,10 @@ void main() { break; case kCloseCode: receivePort.close(); - break; case kDeletedCode: expect(IsolateNameServer.lookupPortByName(portName), isNull); // Test is done, close the last ReceivePort. testReceivePort.close(); - break; case kErrorCode: throw message; default: diff --git a/testing/scenario_app/lib/main.dart b/testing/scenario_app/lib/main.dart index f7a9e61fd156c..d45760c62d9c9 100644 --- a/testing/scenario_app/lib/main.dart +++ b/testing/scenario_app/lib/main.dart @@ -38,7 +38,6 @@ void _handleDriverMessage(Map call) { case 'set_scenario': assert(call['args'] != null); loadScenario(call['args'] as Map, _view); - break; default: throw 'Unimplemented method: $methodName.'; } @@ -55,11 +54,9 @@ Future _handlePlatformMessage( switch (name) { case 'driver': _handleDriverMessage(json.decode(utf8.decode(data!.buffer.asUint8List())) as Map); - break; case 'write_timeline': final String timelineData = await _getTimelineData(); callback!(Uint8List.fromList(utf8.encode(timelineData)).buffer.asByteData()); - break; default: currentScenario?.onPlatformMessage(name, data, callback); } From 843acf8d05c20e755efc84286b0540cc50691bbf Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 17 Mar 2023 15:18:18 -0700 Subject: [PATCH 08/12] web_sdk --- web_sdk/test/js_access_test.dart | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/web_sdk/test/js_access_test.dart b/web_sdk/test/js_access_test.dart index 985ab28e3180d..73125698682ec 100644 --- a/web_sdk/test/js_access_test.dart +++ b/web_sdk/test/js_access_test.dart @@ -4,13 +4,13 @@ // ignore_for_file: avoid_print -/// Checks that JavaScript API is accessed properly. -/// -/// JavaScript access needs to be audited to make sure it follows security best -/// practices. To do that, all JavaScript access is consolidated into a small -/// number of libraries that change infrequently. These libraries are manually -/// audited on every change. All other code accesses JavaScript through these -/// libraries and does not require audit. +// Checks that JavaScript API is accessed properly. +// +// JavaScript access needs to be audited to make sure it follows security best +// practices. To do that, all JavaScript access is consolidated into a small +// number of libraries that change infrequently. These libraries are manually +// audited on every change. All other code accesses JavaScript through these +// libraries and does not require audit. import 'dart:io'; From 80c5bc7192166114c67f12e34e4961ae21d78d13 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Mon, 20 Mar 2023 11:33:19 -0700 Subject: [PATCH 09/12] enable prefer_mixin --- analysis_options.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 2376d5fc5446c..97f7dc0a466aa 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -157,7 +157,7 @@ linter: - prefer_is_not_empty - prefer_is_not_operator - prefer_iterable_whereType - # - prefer_mixin # has false positives, see https://github.com/dart-lang/linter/issues/3018 + - prefer_mixin # - prefer_null_aware_method_calls # "call()" is confusing to people new to the language since it's not documented anywhere - prefer_null_aware_operators - prefer_relative_imports From 8da7b0871949396297273e18b97a5214fa59ebf1 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Wed, 22 Mar 2023 14:15:00 -0700 Subject: [PATCH 10/12] Update analysis_options.yaml --- analysis_options.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 97f7dc0a466aa..c33c15e544991 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,7 +1,7 @@ # Specify analysis options. # # This file is a copy of analysis_options.yaml from flutter repo -# as of 2023-03-17, but with some modifications marked with +# as of 2023-03-22, but with some modifications marked with # "DIFFERENT FROM FLUTTER/FLUTTER" below. analyzer: From 977e727103bac5f8245b11f80d71b1a4cb606f27 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 24 Mar 2023 12:51:28 -0700 Subject: [PATCH 11/12] Update tool_signature --- ci/licenses_golden/tool_signature | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ci/licenses_golden/tool_signature b/ci/licenses_golden/tool_signature index 7d300f7b83bf6..3137bbb14fef2 100644 --- a/ci/licenses_golden/tool_signature +++ b/ci/licenses_golden/tool_signature @@ -1,2 +1 @@ -Signature: 90df0faca032ae220230aef5e61ca020 - +Signature: 61adfda2905179c8e8b7d754d8660a7f From 81d878f146f711845aeeb3eeee2e3b8f539132e6 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 24 Mar 2023 14:04:37 -0700 Subject: [PATCH 12/12] Update tool_signature --- ci/licenses_golden/tool_signature | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/licenses_golden/tool_signature b/ci/licenses_golden/tool_signature index 3137bbb14fef2..09e63acdce8ef 100644 --- a/ci/licenses_golden/tool_signature +++ b/ci/licenses_golden/tool_signature @@ -1 +1,2 @@ Signature: 61adfda2905179c8e8b7d754d8660a7f +