From 0a8b615fe806ee6dacf27981c3bb905e89396cf9 Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Wed, 29 Nov 2023 16:11:05 -0500 Subject: [PATCH 01/26] [web] No implicit view in multi-view mode (#48505) - No implicit view in mult-view mode. - `window.devicePixelRatio` => `EngineFlutterDisplay.instance.devicePixelRatio`. - `window.physicalSize` => `view.physicalSize`. - Remove `LayerTree.frameSize`. - `defaultRouteName` is set to `/` when there's no implicit view. - All routing operations are noops in multi-view mode. With these changes, I was able to run all examples in https://github.com/goderbauer/mvp without an implicit view. --- lib/web_ui/lib/src/engine/canvas_pool.dart | 3 +- .../lib/src/engine/canvaskit/canvas.dart | 3 +- .../src/engine/canvaskit/embedded_views.dart | 6 +-- .../lib/src/engine/canvaskit/layer_tree.dart | 3 -- .../lib/src/engine/canvaskit/rasterizer.dart | 10 ++-- .../src/engine/canvaskit/render_canvas.dart | 11 ++-- .../lib/src/engine/canvaskit/renderer.dart | 2 +- .../lib/src/engine/html/bitmap_canvas.dart | 7 ++- .../lib/src/engine/html/scene_builder.dart | 6 +-- lib/web_ui/lib/src/engine/initialization.dart | 6 ++- .../lib/src/engine/platform_dispatcher.dart | 51 ++++++++++++++----- lib/web_ui/lib/src/engine/scene_view.dart | 19 ++++--- .../src/engine/skwasm/skwasm_impl/canvas.dart | 2 +- 13 files changed, 79 insertions(+), 50 deletions(-) diff --git a/lib/web_ui/lib/src/engine/canvas_pool.dart b/lib/web_ui/lib/src/engine/canvas_pool.dart index fd1762856ea68..c5fe8378b5ba1 100644 --- a/lib/web_ui/lib/src/engine/canvas_pool.dart +++ b/lib/web_ui/lib/src/engine/canvas_pool.dart @@ -26,7 +26,6 @@ import 'safe_browser_api.dart'; import 'shadow.dart'; import 'util.dart'; import 'vector_math.dart'; -import 'window.dart'; /// Renders picture to a CanvasElement by allocating and caching 0 or more /// canvas(s) for [BitmapCanvas]. @@ -1039,7 +1038,7 @@ class ContextStateHandle { // // transformedShadowDelta = M*shadowDelta - M*origin. final Float32List tempVector = Float32List(2); - tempVector[0] = kOutsideTheBoundsOffset * window.devicePixelRatio; + tempVector[0] = kOutsideTheBoundsOffset * EngineFlutterDisplay.instance.devicePixelRatio; _canvasPool.currentTransform.transform2(tempVector); final double shadowOffsetX = tempVector[0]; final double shadowOffsetY = tempVector[1]; diff --git a/lib/web_ui/lib/src/engine/canvaskit/canvas.dart b/lib/web_ui/lib/src/engine/canvaskit/canvas.dart index 6e4fa96e543fb..26c780c6ce0bb 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/canvas.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/canvas.dart @@ -8,6 +8,7 @@ import 'dart:typed_data'; import 'package:ui/ui.dart' as ui; import '../color_filter.dart'; +import '../display.dart'; import 'canvaskit_api.dart'; import 'color_filter.dart'; import 'image.dart'; @@ -248,7 +249,7 @@ class CkCanvas { void drawShadow( CkPath path, ui.Color color, double elevation, bool transparentOccluder) { drawSkShadow(skCanvas, path, color, elevation, transparentOccluder, - ui.window.devicePixelRatio); + EngineFlutterDisplay.instance.devicePixelRatio); } void drawVertices( 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 146363a482e14..f7a8dcfaa5e65 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart @@ -5,13 +5,13 @@ import 'package:ui/ui.dart' as ui; import '../../engine.dart' show PlatformViewManager; +import '../display.dart'; import '../dom.dart'; import '../html/path_to_svg_clip.dart'; import '../platform_views/slots.dart'; import '../svg.dart'; import '../util.dart'; import '../vector_math.dart'; -import '../window.dart'; import 'canvas.dart'; import 'embedded_views_diff.dart'; import 'path.dart'; @@ -68,7 +68,7 @@ class HtmlViewEmbedder { List _activeOverlayGroups = []; /// The size of the frame, in physical pixels. - ui.Size _frameSize = ui.window.physicalSize; + late ui.Size _frameSize; set frameSize(ui.Size size) { _frameSize = size; @@ -326,7 +326,7 @@ class HtmlViewEmbedder { // // HTML elements use logical (CSS) pixels, but we have been using physical // pixels, so scale down the head element to match the logical resolution. - final double scale = window.devicePixelRatio; + final double scale = EngineFlutterDisplay.instance.devicePixelRatio; final double inverseScale = 1 / scale; final Matrix4 scaleMatrix = Matrix4.diagonal3Values(inverseScale, inverseScale, 1); diff --git a/lib/web_ui/lib/src/engine/canvaskit/layer_tree.dart b/lib/web_ui/lib/src/engine/canvaskit/layer_tree.dart index d41e7daec4807..2aca00f35dd3c 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/layer_tree.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/layer_tree.dart @@ -21,9 +21,6 @@ class LayerTree { /// The root of the layer tree. final RootLayer rootLayer; - /// The size (in physical pixels) of the frame to paint this layer tree into. - final ui.Size frameSize = ui.window.physicalSize; - /// The devicePixelRatio of the frame to paint this layer tree into. double? devicePixelRatio; diff --git a/lib/web_ui/lib/src/engine/canvaskit/rasterizer.dart b/lib/web_ui/lib/src/engine/canvaskit/rasterizer.dart index 6138955d301c4..104d96109fa23 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/rasterizer.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/rasterizer.dart @@ -7,9 +7,10 @@ import 'package:ui/ui.dart' as ui; /// A class that can rasterize [LayerTree]s into a given `sceneHost` element. class Rasterizer { - Rasterizer(this.sceneHost); + Rasterizer(this.view); - final DomElement sceneHost; + final EngineFlutterView view; + DomElement get sceneHost => view.dom.sceneHost; final CompositorContext context = CompositorContext(); final RenderCanvasFactory renderCanvasFactory = RenderCanvasFactory(); late final HtmlViewEmbedder viewEmbedder = @@ -30,12 +31,13 @@ class Rasterizer { /// Creates a new frame from this rasterizer's surface, draws the given /// [LayerTree] into it, and then submits the frame. void draw(LayerTree layerTree) { - if (layerTree.frameSize.isEmpty) { + final ui.Size frameSize = view.physicalSize; + if (frameSize.isEmpty) { // Available drawing area is empty. Skip drawing. return; } - _currentFrameSize = layerTree.frameSize; + _currentFrameSize = frameSize; CanvasKitRenderer.instance.offscreenSurface.acquireFrame(_currentFrameSize); viewEmbedder.frameSize = _currentFrameSize; final CkPictureRecorder pictureRecorder = CkPictureRecorder(); diff --git a/lib/web_ui/lib/src/engine/canvaskit/render_canvas.dart b/lib/web_ui/lib/src/engine/canvaskit/render_canvas.dart index 9c444929ea431..9308c11ac6e2b 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/render_canvas.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/render_canvas.dart @@ -6,8 +6,8 @@ import 'dart:js_interop'; import 'package:ui/ui.dart' as ui; +import '../display.dart'; import '../dom.dart'; -import '../window.dart'; /// A visible (on-screen) canvas that can display bitmaps produced by CanvasKit /// in the (off-screen) SkSurface which is backed by an OffscreenCanvas. @@ -68,12 +68,13 @@ class RenderCanvas { /// match the size of the window precisely we use the most precise floating /// point value we can get. void _updateLogicalHtmlCanvasSize() { - final double logicalWidth = _pixelWidth / window.devicePixelRatio; - final double logicalHeight = _pixelHeight / window.devicePixelRatio; + final double devicePixelRatio = EngineFlutterDisplay.instance.devicePixelRatio; + final double logicalWidth = _pixelWidth / devicePixelRatio; + final double logicalHeight = _pixelHeight / devicePixelRatio; final DomCSSStyleDeclaration style = canvasElement.style; style.width = '${logicalWidth}px'; style.height = '${logicalHeight}px'; - _currentDevicePixelRatio = window.devicePixelRatio; + _currentDevicePixelRatio = devicePixelRatio; } /// Render the given [bitmap] with this [RenderCanvas]. @@ -112,7 +113,7 @@ class RenderCanvas { size.height.ceil() == _pixelHeight) { // The existing canvas doesn't need to be resized (unless the device pixel // ratio changed). - if (window.devicePixelRatio != _currentDevicePixelRatio) { + if (EngineFlutterDisplay.instance.devicePixelRatio != _currentDevicePixelRatio) { _updateLogicalHtmlCanvasSize(); } return; diff --git a/lib/web_ui/lib/src/engine/canvaskit/renderer.dart b/lib/web_ui/lib/src/engine/canvaskit/renderer.dart index ec4db4399cbfb..a948b5b55f08c 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/renderer.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/renderer.dart @@ -400,7 +400,7 @@ class CanvasKitRenderer implements Renderer { Rasterizer _getRasterizerForView(EngineFlutterView view) { return _rasterizers.putIfAbsent(view, () { - return Rasterizer(view.dom.sceneHost); + return Rasterizer(view); }); } 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 ef1f3015e4347..66cdc1aad2848 100644 --- a/lib/web_ui/lib/src/engine/html/bitmap_canvas.dart +++ b/lib/web_ui/lib/src/engine/html/bitmap_canvas.dart @@ -17,7 +17,6 @@ import '../html_image_codec.dart'; import '../text/canvas_paragraph.dart'; import '../util.dart'; import '../vector_math.dart'; -import '../window.dart'; import 'clip.dart'; import 'color_filter.dart'; import 'dom_canvas.dart'; @@ -1036,7 +1035,7 @@ class BitmapCanvas extends EngineCanvas { _drawPointsPaint.color = paint.color; _drawPointsPaint.maskFilter = paint.maskFilter; - final double dpr = ui.window.devicePixelRatio; + final double dpr = EngineFlutterDisplay.instance.devicePixelRatio; // Use hairline (device pixel when strokeWidth is not specified). final double strokeWidth = paint.strokeWidth == null ? 1.0 / dpr : paint.strokeWidth!; @@ -1077,7 +1076,7 @@ class BitmapCanvas extends EngineCanvas { /// viewport. ui.Rect _computeScreenBounds(Matrix4 targetTransform) { final Matrix4 inverted = targetTransform.clone()..invert(); - final double dpr = ui.window.devicePixelRatio; + final double dpr = EngineFlutterDisplay.instance.devicePixelRatio; final double width = ui.window.physicalSize.width * dpr; final double height = ui.window.physicalSize.height * dpr; final Vector3 topLeft = inverted.perspectiveTransform(x: 0, y: 0, z: 0); @@ -1457,7 +1456,7 @@ String maskFilterToCanvasFilter(ui.MaskFilter? maskFilter) { if (maskFilter != null) { // Multiply by device-pixel ratio because the canvas' pixel width and height // are larger than its CSS width and height by device-pixel ratio. - return 'blur(${maskFilter.webOnlySigma * window.devicePixelRatio}px)'; + return 'blur(${maskFilter.webOnlySigma * EngineFlutterDisplay.instance.devicePixelRatio}px)'; } else { return 'none'; } diff --git a/lib/web_ui/lib/src/engine/html/scene_builder.dart b/lib/web_ui/lib/src/engine/html/scene_builder.dart index 5f1a7c687474c..e721aa5a5576b 100644 --- a/lib/web_ui/lib/src/engine/html/scene_builder.dart +++ b/lib/web_ui/lib/src/engine/html/scene_builder.dart @@ -8,12 +8,12 @@ import 'package:ui/ui.dart' as ui; import 'package:ui/ui_web/src/ui_web.dart' as ui_web; import '../../engine.dart' show kProfileApplyFrame, kProfilePrerollFrame; +import '../display.dart'; import '../dom.dart'; import '../picture.dart'; import '../profiler.dart'; import '../util.dart'; import '../vector_math.dart'; -import '../window.dart'; import 'backdrop_filter.dart'; import 'clip.dart'; import 'color_filter.dart'; @@ -113,8 +113,8 @@ class SurfaceSceneBuilder implements ui.SceneBuilder { // scene to devicepixelratio. Use identity instead since CSS uses // logical device pixels. if (!ui_web.debugEmulateFlutterTesterEnvironment) { - assert(matrix4[0] == window.devicePixelRatio && - matrix4[5] == window.devicePixelRatio); + assert(matrix4[0] == EngineFlutterDisplay.instance.devicePixelRatio && + matrix4[5] == EngineFlutterDisplay.instance.devicePixelRatio); } matrix = Matrix4.identity().storage; } else { diff --git a/lib/web_ui/lib/src/engine/initialization.dart b/lib/web_ui/lib/src/engine/initialization.dart index 2d17adc0d4d92..c8badf914ccf5 100644 --- a/lib/web_ui/lib/src/engine/initialization.dart +++ b/lib/web_ui/lib/src/engine/initialization.dart @@ -218,8 +218,10 @@ Future initializeEngineUi() async { _initializationState = DebugEngineInitializationState.initializingUi; RawKeyboard.initialize(onMacOs: operatingSystem == OperatingSystem.macOs); - ensureImplicitViewInitialized(hostElement: configuration.hostElement); - ensureFlutterViewEmbedderInitialized(); + if (!configuration.multiViewEnabled) { + ensureImplicitViewInitialized(hostElement: configuration.hostElement); + ensureFlutterViewEmbedderInitialized(); + } _initializationState = DebugEngineInitializationState.initialized; } diff --git a/lib/web_ui/lib/src/engine/platform_dispatcher.dart b/lib/web_ui/lib/src/engine/platform_dispatcher.dart index 2f573ed08ac5b..ff0951cf1c449 100644 --- a/lib/web_ui/lib/src/engine/platform_dispatcher.dart +++ b/lib/web_ui/lib/src/engine/platform_dispatcher.dart @@ -500,10 +500,22 @@ class EnginePlatformDispatcher extends ui.PlatformDispatcher { // TODO(a-wallen): As multi-window support expands, the pop call // will need to include the view ID. Right now only one view is // supported. - implicitView!.browserHistory.exit().then((_) { + // + // TODO(mdebbar): What should we do in multi-view mode? + // https://github.com/flutter/flutter/issues/139174 + if (implicitView != null) { + implicitView!.browserHistory.exit().then((_) { + replyToPlatformMessage( + callback, + jsonCodec.encodeSuccessEnvelope(true), + ); + }); + } else { replyToPlatformMessage( - callback, jsonCodec.encodeSuccessEnvelope(true)); - }); + callback, + jsonCodec.encodeSuccessEnvelope(true), + ); + } return; case 'HapticFeedback.vibrate': final String? type = decoded.arguments as String?; @@ -588,7 +600,9 @@ class EnginePlatformDispatcher extends ui.PlatformDispatcher { decoded.arguments as Map; switch (decoded.method) { case 'activateSystemCursor': - implicitView!.mouseCursor + // TODO(mdebbar): This needs a view ID from the framework. + // https://github.com/flutter/flutter/issues/137289 + implicitView?.mouseCursor .activateSystemCursor(arguments.tryString('kind')); } return; @@ -628,14 +642,23 @@ class EnginePlatformDispatcher extends ui.PlatformDispatcher { // TODO(a-wallen): As multi-window support expands, the navigation call // will need to include the view ID. Right now only one view is // supported. - implicitView!.handleNavigationMessage(data).then((bool handled) { - if (handled) { - replyToPlatformMessage( - callback, jsonCodec.encodeSuccessEnvelope(true)); - } else { - callback?.call(null); - } - }); + // + // TODO(mdebbar): What should we do in multi-view mode? + // https://github.com/flutter/flutter/issues/139174 + if (implicitView != null) { + implicitView!.handleNavigationMessage(data).then((bool handled) { + if (handled) { + replyToPlatformMessage( + callback, + jsonCodec.encodeSuccessEnvelope(true), + ); + } else { + callback?.call(null); + } + }); + } else { + callback?.call(null); + } // As soon as Flutter starts taking control of the app navigation, we // should reset _defaultRouteName to "/" so it doesn't have any @@ -1249,7 +1272,9 @@ class EnginePlatformDispatcher extends ui.PlatformDispatcher { /// requests from the embedder. @override String get defaultRouteName { - return _defaultRouteName ??= implicitView!.browserHistory.currentPath; + // TODO(mdebbar): What should we do in multi-view mode? + // https://github.com/flutter/flutter/issues/139174 + return _defaultRouteName ??= implicitView?.browserHistory.currentPath ?? '/'; } /// Lazily initialized when the `defaultRouteName` getter is invoked. diff --git a/lib/web_ui/lib/src/engine/scene_view.dart b/lib/web_ui/lib/src/engine/scene_view.dart index 41ac3fab96cd0..61f4e48b7bb90 100644 --- a/lib/web_ui/lib/src/engine/scene_view.dart +++ b/lib/web_ui/lib/src/engine/scene_view.dart @@ -194,10 +194,11 @@ final class PictureSliceContainer extends SliceContainer { bounds.bottom.ceilToDouble() ); final DomCSSStyleDeclaration style = canvas.style; - final double logicalWidth = roundedOutBounds.width / window.devicePixelRatio; - final double logicalHeight = roundedOutBounds.height / window.devicePixelRatio; - final double logicalLeft = roundedOutBounds.left / window.devicePixelRatio; - final double logicalTop = roundedOutBounds.top / window.devicePixelRatio; + final double devicePixelRatio = EngineFlutterDisplay.instance.devicePixelRatio; + final double logicalWidth = roundedOutBounds.width / devicePixelRatio; + final double logicalHeight = roundedOutBounds.height / devicePixelRatio; + final double logicalLeft = roundedOutBounds.left / devicePixelRatio; + final double logicalTop = roundedOutBounds.top / devicePixelRatio; style.width = '${logicalWidth}px'; style.height = '${logicalHeight}px'; style.position = 'absolute'; @@ -243,21 +244,23 @@ final class PlatformViewContainer extends SliceContainer { } } + @override void updateContents() { assert(_styling != null); assert(_size != null); if (_dirty) { final DomCSSStyleDeclaration style = container.style; - final double logicalWidth = _size!.width / window.devicePixelRatio; - final double logicalHeight = _size!.height / window.devicePixelRatio; + final double devicePixelRatio = EngineFlutterDisplay.instance.devicePixelRatio; + final double logicalWidth = _size!.width / devicePixelRatio; + final double logicalHeight = _size!.height / devicePixelRatio; style.width = '${logicalWidth}px'; style.height = '${logicalHeight}px'; style.position = 'absolute'; final ui.Offset? offset = _styling!.position.offset; - final double logicalLeft = (offset?.dx ?? 0) / window.devicePixelRatio; - final double logicalTop = (offset?.dy ?? 0) / window.devicePixelRatio; + final double logicalLeft = (offset?.dx ?? 0) / devicePixelRatio; + final double logicalTop = (offset?.dy ?? 0) / devicePixelRatio; style.left = '${logicalLeft}px'; style.top = '${logicalTop}px'; diff --git a/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/canvas.dart b/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/canvas.dart index 0e331835f7f46..e33a515d281b9 100644 --- a/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/canvas.dart +++ b/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/canvas.dart @@ -375,7 +375,7 @@ class SkwasmCanvas implements SceneCanvas { _handle, path.handle, elevation, - ui.window.devicePixelRatio, + EngineFlutterDisplay.instance.devicePixelRatio, color.value, transparentOccluder); } From fcb866befa76eb82a54c539a05503882724e8ee1 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 29 Nov 2023 17:41:23 -0500 Subject: [PATCH 02/26] Roll Skia from 928e8950e8e3 to 5a635f2211ce (1 revision) (#48511) https://skia.googlesource.com/skia.git/+log/928e8950e8e3..5a635f2211ce 2023-11-29 smartercallum@gmail.com Fix single-cluster justification for RTL If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,jcgregorio@google.com,matanl@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f0d0e1f4e56a1..a1b40a9b724df 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '928e8950e8e3a2dde039320f55bff36375151237', + 'skia_revision': '5a635f2211ceb7639ceca4200e0094a6ca17111b', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 90186ee6c6cd5..df10fc3fd8894 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 45f6e626e9b2ce68b103515b77184eb3 +Signature: c1fa2526c99d527e8a08ac4d672f52d8 ==================================================================================================== LIBRARY: etc1 From bd2f01f6ad58d1eaa697ebeb8f1a5ae25e1fc802 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 29 Nov 2023 19:51:24 -0500 Subject: [PATCH 03/26] Roll Skia from 5a635f2211ce to 23721750e433 (1 revision) (#48514) https://skia.googlesource.com/skia.git/+log/5a635f2211ce..23721750e433 2023-11-30 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 8729848ad369 to 6c61584c8b14 (9 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,jcgregorio@google.com,matanl@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index a1b40a9b724df..8fdf8b0166587 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '5a635f2211ceb7639ceca4200e0094a6ca17111b', + 'skia_revision': '23721750e4339b74039dd8efc678840f413fe141', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From 8624b9f08f68093dae1b0b2fe5e9426fd318b1e7 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 29 Nov 2023 23:40:05 -0500 Subject: [PATCH 04/26] Roll Fuchsia Linux SDK from 8wu5EgBh1yJPNOd5W... to Bb2k375udWIltCEAx... (#48519) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter-engine Please CC matanl@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/excluded_files | 9 + ci/licenses_golden/licenses_fuchsia | 1927 ++++++++++++++++++++++++++- 3 files changed, 1928 insertions(+), 10 deletions(-) diff --git a/DEPS b/DEPS index 8fdf8b0166587..f3b0290b17006 100644 --- a/DEPS +++ b/DEPS @@ -944,7 +944,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': '8wu5EgBh1yJPNOd5WIdI-lOUfdlCY5SuR42rAxhPf5YC' + 'version': 'Bb2k375udWIltCEAxFF6_R5gP1NRKSTcUzab8OR0RI0C' } ], 'condition': 'host_os == "linux" and not download_fuchsia_sdk', diff --git a/ci/licenses_golden/excluded_files b/ci/licenses_golden/excluded_files index d42021fa80147..4a11ee1be417e 100644 --- a/ci/licenses_golden/excluded_files +++ b/ci/licenses_golden/excluded_files @@ -1268,6 +1268,8 @@ ../../../fuchsia/sdk/linux/obj/arm64-api-14/sysroot/dist/lib/ld.so.1 ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/dist/lib/asan/ld.so.1 ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/dist/lib/ld.so.1 +../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/dist/lib/asan/ld.so.1 +../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/dist/lib/ld.so.1 ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/dist/lib/asan/ld.so.1 ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/dist/lib/ld.so.1 ../../../fuchsia/sdk/linux/obj/riscv64-api-13/sysroot/dist/lib/asan/ld.so.1 @@ -1276,6 +1278,8 @@ ../../../fuchsia/sdk/linux/obj/riscv64-api-14/sysroot/dist/lib/ld.so.1 ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/dist/lib/asan/ld.so.1 ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/dist/lib/ld.so.1 +../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/dist/lib/asan/ld.so.1 +../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/dist/lib/ld.so.1 ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/dist/lib/asan/ld.so.1 ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/dist/lib/ld.so.1 ../../../fuchsia/sdk/linux/obj/x64-api-13/sysroot/dist/lib/asan/ld.so.1 @@ -1284,6 +1288,8 @@ ../../../fuchsia/sdk/linux/obj/x64-api-14/sysroot/dist/lib/ld.so.1 ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/dist/lib/asan/ld.so.1 ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/dist/lib/ld.so.1 +../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/dist/lib/asan/ld.so.1 +../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/dist/lib/ld.so.1 ../../../fuchsia/sdk/linux/packages/blobs ../../../fuchsia/sdk/linux/packages/heapdump-collector/meta.json ../../../fuchsia/sdk/linux/packages/realm_builder_server/meta.json @@ -1362,7 +1368,10 @@ ../../../fuchsia/sdk/linux/pkg/sysroot/meta.json ../../../fuchsia/sdk/linux/pkg/trace-engine-headersonly/meta.json ../../../fuchsia/sdk/linux/pkg/trace-engine/meta.json +../../../fuchsia/sdk/linux/pkg/trace-headersonly/meta.json ../../../fuchsia/sdk/linux/pkg/trace-provider-so/meta.json +../../../fuchsia/sdk/linux/pkg/trace-vthread-headersonly/meta.json +../../../fuchsia/sdk/linux/pkg/trace-vthread/meta.json ../../../fuchsia/sdk/linux/pkg/trace/meta.json ../../../fuchsia/sdk/linux/pkg/utf-utils/meta.json ../../../fuchsia/sdk/linux/pkg/vfs_cpp/meta.json diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index e92b0ebf61f5f..a51403ba050cb 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: 2876b2be8e782c4ab5c25a18a3c4eac5 +Signature: 7c90070795a6c83ee6a2f2352b3c8458 ==================================================================================================== LIBRARY: fuchsia_sdk @@ -26,6 +26,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libsync.a FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libsyslog.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libtrace-engine.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libtrace-vthread.a FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libvulkan.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/alloca.h FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/ar.h @@ -205,6 +206,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libsync.a FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libsyslog.so FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libtrace-engine.so FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libtrace-vthread.a FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libvulkan.so FILE: ../../../fuchsia/sdk/linux/arch/riscv64/sysroot/include/alloca.h FILE: ../../../fuchsia/sdk/linux/arch/riscv64/sysroot/include/ar.h @@ -384,6 +386,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libsync.a FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libsyslog.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libtrace-engine.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libtrace-vthread.a FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libvulkan.so FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/alloca.h FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/ar.h @@ -1246,6 +1249,182 @@ FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/lib/libm.so FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/lib/libpthread.so FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/lib/libzircon.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libasync-loop-default.a +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libsync.a +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/alloca.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/ar.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/ftp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/inet.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/nameser.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/nameser_compat.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/telnet.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/tftp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/assert.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/aarch64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/aarch64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/alltypes.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/io.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/null.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/posix.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/riscv64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/riscv64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/x86_64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/x86_64/io.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/x86_64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/byteswap.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/complex.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/cpio.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/ctype.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/dirent.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/dlfcn.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/elf.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/endian.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/err.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/features.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/fnmatch.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/getopt.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/glob.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/grp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/iconv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/ifaddrs.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/inttypes.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/iso646.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/langinfo.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/libgen.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/link.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/locale.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/malloc.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/math.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/memory.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/monetary.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/net/ethernet.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/net/if.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/net/if_arp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/net/route.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netdb.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/ether.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/icmp6.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/if_ether.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/igmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/in.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/in_systm.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/ip.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/ip6.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/ip_icmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/tcp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/udp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netpacket/packet.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/nl_types.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/paths.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/pthread.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/pwd.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/regex.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/resolv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sched.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/semaphore.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/spawn.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/stdio.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/stdlib.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/string.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/strings.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/acct.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/auxv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/dir.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/eventfd.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/file.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/inotify.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/io.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/ipc.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/mman.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/mount.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/msg.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/mtio.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/param.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/random.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/select.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/sem.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/shm.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/socket.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/statvfs.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/time.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/timeb.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/timerfd.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/times.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/ttydefaults.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/types.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/uio.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/un.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/utsname.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/vfs.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sysexits.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/tar.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/threads.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/time.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/uchar.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/unistd.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/utime.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/values.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/wchar.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/wctype.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/wordexp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/Scrt1.o +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/libc.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/libdl.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/libm.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/libpthread.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/librt.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/dist/libasync-default.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/dist/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/dist/libfdio.so @@ -1950,6 +2129,182 @@ FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/lib/libm.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/lib/libpthread.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/lib/libzircon.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libasync-loop-default.a +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libsync.a +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/alloca.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/ar.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/ftp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/inet.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/nameser.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/nameser_compat.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/telnet.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/tftp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/assert.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/aarch64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/aarch64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/alltypes.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/io.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/null.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/posix.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/riscv64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/riscv64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/x86_64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/x86_64/io.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/x86_64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/byteswap.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/complex.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/cpio.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/ctype.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/dirent.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/dlfcn.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/elf.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/endian.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/err.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/features.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/fnmatch.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/getopt.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/glob.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/grp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/iconv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/ifaddrs.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/inttypes.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/iso646.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/langinfo.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/libgen.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/link.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/locale.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/malloc.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/math.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/memory.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/monetary.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/net/ethernet.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/net/if.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/net/if_arp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/net/route.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netdb.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/ether.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/icmp6.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/if_ether.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/igmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/in.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/in_systm.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/ip.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/ip6.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/ip_icmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/tcp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/udp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netpacket/packet.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/nl_types.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/paths.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/pthread.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/pwd.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/regex.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/resolv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sched.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/semaphore.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/spawn.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/stdio.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/stdlib.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/string.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/strings.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/acct.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/auxv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/dir.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/eventfd.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/file.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/inotify.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/io.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/ipc.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/mman.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/mount.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/msg.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/mtio.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/param.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/random.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/select.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/sem.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/shm.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/socket.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/statvfs.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/time.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/timeb.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/timerfd.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/times.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/ttydefaults.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/types.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/uio.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/un.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/utsname.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/vfs.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sysexits.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/tar.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/threads.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/time.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/uchar.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/unistd.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/utime.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/values.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/wchar.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/wctype.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/wordexp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/Scrt1.o +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/libc.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/libdl.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/libm.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/libpthread.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/librt.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/dist/libasync-default.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/dist/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/dist/libfdio.so @@ -2654,6 +3009,182 @@ FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/lib/libm.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/lib/libpthread.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/lib/libzircon.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libasync-loop-default.a +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libsync.a +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/alloca.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/ar.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/ftp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/inet.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/nameser.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/nameser_compat.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/telnet.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/tftp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/assert.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/aarch64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/aarch64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/alltypes.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/io.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/null.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/posix.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/riscv64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/riscv64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/x86_64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/x86_64/io.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/x86_64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/byteswap.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/complex.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/cpio.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/ctype.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/dirent.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/dlfcn.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/elf.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/endian.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/err.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/features.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/fnmatch.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/getopt.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/glob.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/grp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/iconv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/ifaddrs.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/inttypes.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/iso646.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/langinfo.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/libgen.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/link.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/locale.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/malloc.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/math.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/memory.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/monetary.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/net/ethernet.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/net/if.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/net/if_arp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/net/route.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netdb.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/ether.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/icmp6.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/if_ether.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/igmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/in.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/in_systm.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/ip.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/ip6.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/ip_icmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/tcp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/udp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netpacket/packet.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/nl_types.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/paths.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/pthread.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/pwd.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/regex.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/resolv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sched.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/semaphore.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/spawn.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/stdio.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/stdlib.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/string.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/strings.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/acct.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/auxv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/dir.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/eventfd.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/file.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/inotify.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/io.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/ipc.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/mman.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/mount.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/msg.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/mtio.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/param.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/random.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/select.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/sem.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/shm.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/socket.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/statvfs.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/time.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/timeb.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/timerfd.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/times.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/ttydefaults.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/types.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/uio.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/un.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/utsname.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/vfs.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sysexits.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/tar.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/threads.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/time.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/uchar.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/unistd.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/utime.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/values.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/wchar.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/wctype.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/wordexp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/Scrt1.o +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/libc.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/libdl.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/libm.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/libpthread.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/librt.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/packages/heapdump-collector/arm64-api-1/release/content_checklist_path FILE: ../../../fuchsia/sdk/linux/packages/heapdump-collector/arm64-api-1/release/package_manifest.json FILE: ../../../fuchsia/sdk/linux/packages/heapdump-collector/riscv64-api-1/release/content_checklist_path @@ -3057,6 +3588,22 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/sysca ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/resource.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/types.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/types.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/assert.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/compiler.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/listnode.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/processargs.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/status.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/debug.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/exception.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/log.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/object.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/pci.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/port.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/profile.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/resource.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/types.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/types.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/assert.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/compiler.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/listnode.h + ../../../fuchsia/sdk/linux/LICENSE @@ -3121,6 +3668,22 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/sys ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/resource.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/types.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/types.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/assert.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/compiler.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/listnode.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/processargs.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/status.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/debug.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/exception.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/log.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/object.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/pci.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/port.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/profile.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/resource.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/types.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/types.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/assert.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/compiler.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/listnode.h + ../../../fuchsia/sdk/linux/LICENSE @@ -3185,6 +3748,22 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscall ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/resource.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/types.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/types.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/assert.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/compiler.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/listnode.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/processargs.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/status.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/debug.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/exception.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/log.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/object.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/pci.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/port.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/profile.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/resource.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/types.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/types.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fdio/include/lib/fdio/fdio.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fdio/include/lib/fdio/io.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/fdio/include/lib/fdio/vfs.h + ../../../fuchsia/sdk/linux/LICENSE @@ -3353,6 +3932,22 @@ FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscall FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/resource.h FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/types.h FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/types.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/assert.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/compiler.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/listnode.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/processargs.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/status.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/debug.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/exception.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/log.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/object.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/pci.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/port.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/profile.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/resource.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/types.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/types.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/assert.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/compiler.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/listnode.h @@ -3417,6 +4012,22 @@ FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/sysca FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/resource.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/types.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/types.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/assert.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/compiler.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/listnode.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/processargs.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/status.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/debug.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/exception.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/log.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/object.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/pci.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/port.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/profile.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/resource.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/types.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/types.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/assert.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/compiler.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/listnode.h @@ -3481,6 +4092,22 @@ FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/ FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/resource.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/types.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/types.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/assert.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/compiler.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/listnode.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/processargs.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/status.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/debug.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/exception.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/log.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/object.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/pci.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/port.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/profile.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/resource.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/types.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/types.h FILE: ../../../fuchsia/sdk/linux/pkg/fdio/include/lib/fdio/fdio.h FILE: ../../../fuchsia/sdk/linux/pkg/fdio/include/lib/fdio/io.h FILE: ../../../fuchsia/sdk/linux/pkg/fdio/include/lib/fdio/vfs.h @@ -3659,6 +4286,17 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/sysca ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/policy.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/system.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/tls.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/device/audio.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/fidl.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/hw/gpt.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/process.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/rights.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/sanitizer.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/hypervisor.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/iommu.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/policy.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/system.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/tls.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/device/audio.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/fidl.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/hw/gpt.h + ../../../fuchsia/sdk/linux/LICENSE @@ -3703,6 +4341,17 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/sys ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/policy.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/system.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/tls.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/device/audio.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/fidl.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/hw/gpt.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/process.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/rights.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/sanitizer.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/hypervisor.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/iommu.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/policy.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/system.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/tls.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/device/audio.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/fidl.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/hw/gpt.h + ../../../fuchsia/sdk/linux/LICENSE @@ -3747,6 +4396,17 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscall ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/policy.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/system.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/tls.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/device/audio.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/fidl.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/hw/gpt.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/process.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/rights.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/sanitizer.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/hypervisor.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/iommu.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/policy.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/system.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/tls.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/async-cpp/include/lib/async/cpp/receiver.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/async-cpp/include/lib/async/cpp/task.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/async-cpp/include/lib/async/cpp/wait.h + ../../../fuchsia/sdk/linux/LICENSE @@ -3789,6 +4449,12 @@ ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-engine/include/lib/trace-engine/fie ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-engine/include/lib/trace-engine/handler.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-engine/include/lib/trace-engine/instrumentation.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-engine/include/lib/trace-engine/types.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-headersonly/include/lib/trace/event.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-headersonly/include/lib/trace/internal/event_common.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-headersonly/include/lib/trace/internal/event_internal.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-headersonly/include/lib/trace/internal/pairs_internal.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-headersonly/include/lib/trace/internal/string_traits.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-headersonly/include/lib/trace/observer.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-provider-so/include/lib/trace-provider/handler.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-provider-so/include/lib/trace-provider/provider.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace/event.cc + ../../../fuchsia/sdk/linux/LICENSE @@ -3918,6 +4584,17 @@ FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscall FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/policy.h FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/system.h FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/tls.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/device/audio.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/fidl.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/hw/gpt.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/process.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/rights.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/sanitizer.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/hypervisor.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/iommu.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/policy.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/system.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/tls.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/device/audio.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/fidl.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/hw/gpt.h @@ -3962,6 +4639,17 @@ FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/sysca FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/policy.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/system.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/tls.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/device/audio.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/fidl.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/hw/gpt.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/process.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/rights.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/sanitizer.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/hypervisor.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/iommu.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/policy.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/system.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/tls.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/device/audio.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/fidl.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/hw/gpt.h @@ -4006,6 +4694,17 @@ FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/ FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/policy.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/system.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/tls.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/device/audio.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/fidl.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/hw/gpt.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/process.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/rights.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/sanitizer.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/hypervisor.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/iommu.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/policy.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/system.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/tls.h FILE: ../../../fuchsia/sdk/linux/pkg/async-cpp/include/lib/async/cpp/receiver.h FILE: ../../../fuchsia/sdk/linux/pkg/async-cpp/include/lib/async/cpp/task.h FILE: ../../../fuchsia/sdk/linux/pkg/async-cpp/include/lib/async/cpp/wait.h @@ -4048,6 +4747,12 @@ FILE: ../../../fuchsia/sdk/linux/pkg/trace-engine/include/lib/trace-engine/field FILE: ../../../fuchsia/sdk/linux/pkg/trace-engine/include/lib/trace-engine/handler.h FILE: ../../../fuchsia/sdk/linux/pkg/trace-engine/include/lib/trace-engine/instrumentation.h FILE: ../../../fuchsia/sdk/linux/pkg/trace-engine/include/lib/trace-engine/types.h +FILE: ../../../fuchsia/sdk/linux/pkg/trace-headersonly/include/lib/trace/event.h +FILE: ../../../fuchsia/sdk/linux/pkg/trace-headersonly/include/lib/trace/internal/event_common.h +FILE: ../../../fuchsia/sdk/linux/pkg/trace-headersonly/include/lib/trace/internal/event_internal.h +FILE: ../../../fuchsia/sdk/linux/pkg/trace-headersonly/include/lib/trace/internal/pairs_internal.h +FILE: ../../../fuchsia/sdk/linux/pkg/trace-headersonly/include/lib/trace/internal/string_traits.h +FILE: ../../../fuchsia/sdk/linux/pkg/trace-headersonly/include/lib/trace/observer.h FILE: ../../../fuchsia/sdk/linux/pkg/trace-provider-so/include/lib/trace-provider/handler.h FILE: ../../../fuchsia/sdk/linux/pkg/trace-provider-so/include/lib/trace-provider/provider.h FILE: ../../../fuchsia/sdk/linux/pkg/trace/event.cc @@ -4202,6 +4907,13 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/limit ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/smc.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/threads.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/time.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/dlfcn.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/features.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/hw/pci.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/limits.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/smc.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/threads.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/time.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/dlfcn.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/features.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/hw/pci.h + ../../../fuchsia/sdk/linux/LICENSE @@ -4230,6 +4942,13 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/lim ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/smc.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/threads.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/time.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/dlfcn.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/features.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/hw/pci.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/limits.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/smc.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/threads.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/time.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/dlfcn.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/features.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/hw/pci.h + ../../../fuchsia/sdk/linux/LICENSE @@ -4258,6 +4977,13 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/limits. ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/smc.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/threads.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/time.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/dlfcn.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/features.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/hw/pci.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/limits.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/smc.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/threads.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/time.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/async-cpp/include/lib/async/cpp/time.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/async-cpp/include/lib/async/cpp/trap.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/async-testing/include/lib/async-testing/test_loop.h + ../../../fuchsia/sdk/linux/LICENSE @@ -4367,7 +5093,13 @@ ORIGIN: ../../../fuchsia/sdk/linux/pkg/syslog/include/lib/syslog/global.h + ../. ORIGIN: ../../../fuchsia/sdk/linux/pkg/syslog/include/lib/syslog/logger.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/syslog/include/lib/syslog/wire_format.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-engine-headersonly/include/lib/trace-engine/buffer_internal.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-headersonly/include/lib/trace/event_args.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-headersonly/include/lib/trace/internal/event_args.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-provider-so/include/lib/trace-provider/fdio_connect.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-vthread-headersonly/include/trace-vthread/event_vthread.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-vthread-headersonly/include/trace-vthread/internal/event_vthread.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-vthread/include/trace-vthread/event_vthread.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace-vthread/include/trace-vthread/internal/event_vthread.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace/include/lib/trace/event_args.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/trace/include/lib/trace/internal/event_args.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/vfs_cpp/composed_service_dir.cc + ../../../fuchsia/sdk/linux/LICENSE @@ -4501,6 +5233,13 @@ FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/limits. FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/smc.h FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/threads.h FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/time.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/dlfcn.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/features.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/hw/pci.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/smc.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/threads.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/time.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/dlfcn.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/features.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/hw/pci.h @@ -4529,6 +5268,13 @@ FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/limit FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/smc.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/threads.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/time.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/dlfcn.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/features.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/hw/pci.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/smc.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/threads.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/time.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/dlfcn.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/features.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/hw/pci.h @@ -4557,6 +5303,13 @@ FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/limits.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/smc.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/threads.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/time.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/dlfcn.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/features.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/hw/pci.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/smc.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/threads.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/time.h FILE: ../../../fuchsia/sdk/linux/pkg/async-cpp/include/lib/async/cpp/time.h FILE: ../../../fuchsia/sdk/linux/pkg/async-cpp/include/lib/async/cpp/trap.h FILE: ../../../fuchsia/sdk/linux/pkg/async-testing/include/lib/async-testing/test_loop.h @@ -4666,7 +5419,13 @@ FILE: ../../../fuchsia/sdk/linux/pkg/syslog/include/lib/syslog/global.h FILE: ../../../fuchsia/sdk/linux/pkg/syslog/include/lib/syslog/logger.h FILE: ../../../fuchsia/sdk/linux/pkg/syslog/include/lib/syslog/wire_format.h FILE: ../../../fuchsia/sdk/linux/pkg/trace-engine-headersonly/include/lib/trace-engine/buffer_internal.h +FILE: ../../../fuchsia/sdk/linux/pkg/trace-headersonly/include/lib/trace/event_args.h +FILE: ../../../fuchsia/sdk/linux/pkg/trace-headersonly/include/lib/trace/internal/event_args.h FILE: ../../../fuchsia/sdk/linux/pkg/trace-provider-so/include/lib/trace-provider/fdio_connect.h +FILE: ../../../fuchsia/sdk/linux/pkg/trace-vthread-headersonly/include/trace-vthread/event_vthread.h +FILE: ../../../fuchsia/sdk/linux/pkg/trace-vthread-headersonly/include/trace-vthread/internal/event_vthread.h +FILE: ../../../fuchsia/sdk/linux/pkg/trace-vthread/include/trace-vthread/event_vthread.h +FILE: ../../../fuchsia/sdk/linux/pkg/trace-vthread/include/trace-vthread/internal/event_vthread.h FILE: ../../../fuchsia/sdk/linux/pkg/trace/include/lib/trace/event_args.h FILE: ../../../fuchsia/sdk/linux/pkg/trace/include/lib/trace/internal/event_args.h FILE: ../../../fuchsia/sdk/linux/pkg/vfs_cpp/composed_service_dir.cc @@ -4777,6 +5536,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libsync.a FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libsyslog.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libtrace-engine.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libtrace-vthread.a FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libvulkan.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/alloca.h FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/ar.h @@ -4956,6 +5716,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libsync.a FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libsyslog.so FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libtrace-engine.so FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libtrace-vthread.a FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libvulkan.so FILE: ../../../fuchsia/sdk/linux/arch/riscv64/sysroot/include/alloca.h FILE: ../../../fuchsia/sdk/linux/arch/riscv64/sysroot/include/ar.h @@ -5135,6 +5896,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libsync.a FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libsyslog.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libtrace-engine.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libtrace-vthread.a FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libvulkan.so FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/alloca.h FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/ar.h @@ -5997,6 +6759,182 @@ FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/lib/libm.so FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/lib/libpthread.so FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/lib/libzircon.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libasync-loop-default.a +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libsync.a +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/alloca.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/ar.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/ftp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/inet.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/nameser.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/nameser_compat.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/telnet.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/tftp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/assert.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/aarch64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/aarch64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/alltypes.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/io.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/null.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/posix.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/riscv64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/riscv64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/x86_64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/x86_64/io.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/x86_64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/byteswap.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/complex.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/cpio.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/ctype.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/dirent.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/dlfcn.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/elf.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/endian.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/err.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/features.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/fnmatch.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/getopt.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/glob.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/grp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/iconv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/ifaddrs.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/inttypes.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/iso646.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/langinfo.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/libgen.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/link.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/locale.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/malloc.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/math.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/memory.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/monetary.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/net/ethernet.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/net/if.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/net/if_arp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/net/route.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netdb.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/ether.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/icmp6.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/if_ether.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/igmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/in.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/in_systm.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/ip.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/ip6.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/ip_icmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/tcp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/udp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netpacket/packet.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/nl_types.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/paths.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/pthread.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/pwd.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/regex.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/resolv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sched.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/semaphore.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/spawn.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/stdio.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/stdlib.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/string.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/strings.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/acct.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/auxv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/dir.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/eventfd.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/file.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/inotify.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/io.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/ipc.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/mman.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/mount.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/msg.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/mtio.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/param.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/random.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/select.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/sem.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/shm.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/socket.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/statvfs.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/time.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/timeb.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/timerfd.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/times.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/ttydefaults.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/types.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/uio.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/un.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/utsname.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/vfs.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sysexits.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/tar.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/threads.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/time.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/uchar.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/unistd.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/utime.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/values.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/wchar.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/wctype.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/wordexp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/Scrt1.o +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/libc.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/libdl.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/libm.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/libpthread.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/librt.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/dist/libasync-default.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/dist/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/dist/libfdio.so @@ -6701,6 +7639,182 @@ FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/lib/libm.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/lib/libpthread.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/lib/libzircon.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libasync-loop-default.a +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libsync.a +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/alloca.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/ar.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/ftp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/inet.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/nameser.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/nameser_compat.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/telnet.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/tftp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/assert.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/aarch64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/aarch64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/alltypes.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/io.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/null.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/posix.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/riscv64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/riscv64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/x86_64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/x86_64/io.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/x86_64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/byteswap.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/complex.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/cpio.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/ctype.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/dirent.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/dlfcn.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/elf.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/endian.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/err.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/features.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/fnmatch.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/getopt.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/glob.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/grp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/iconv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/ifaddrs.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/inttypes.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/iso646.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/langinfo.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/libgen.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/link.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/locale.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/malloc.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/math.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/memory.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/monetary.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/net/ethernet.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/net/if.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/net/if_arp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/net/route.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netdb.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/ether.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/icmp6.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/if_ether.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/igmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/in.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/in_systm.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/ip.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/ip6.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/ip_icmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/tcp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/udp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netpacket/packet.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/nl_types.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/paths.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/pthread.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/pwd.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/regex.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/resolv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sched.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/semaphore.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/spawn.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/stdio.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/stdlib.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/string.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/strings.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/acct.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/auxv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/dir.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/eventfd.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/file.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/inotify.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/io.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/ipc.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/mman.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/mount.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/msg.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/mtio.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/param.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/random.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/select.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/sem.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/shm.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/socket.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/statvfs.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/time.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/timeb.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/timerfd.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/times.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/ttydefaults.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/types.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/uio.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/un.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/utsname.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/vfs.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sysexits.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/tar.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/threads.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/time.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/uchar.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/unistd.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/utime.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/values.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/wchar.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/wctype.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/wordexp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/Scrt1.o +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/libc.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/libdl.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/libm.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/libpthread.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/librt.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/dist/libasync-default.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/dist/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/dist/libfdio.so @@ -7405,6 +8519,182 @@ FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/lib/libm.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/lib/libpthread.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/lib/libzircon.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libasync-loop-default.a +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libsync.a +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/alloca.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/ar.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/ftp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/inet.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/nameser.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/nameser_compat.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/telnet.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/tftp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/assert.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/aarch64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/aarch64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/alltypes.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/io.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/null.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/posix.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/riscv64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/riscv64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/x86_64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/x86_64/io.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/x86_64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/byteswap.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/complex.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/cpio.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/ctype.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/dirent.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/dlfcn.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/elf.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/endian.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/err.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/features.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/fnmatch.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/getopt.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/glob.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/grp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/iconv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/ifaddrs.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/inttypes.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/iso646.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/langinfo.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/libgen.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/link.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/locale.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/malloc.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/math.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/memory.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/monetary.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/net/ethernet.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/net/if.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/net/if_arp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/net/route.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netdb.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/ether.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/icmp6.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/if_ether.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/igmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/in.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/in_systm.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/ip.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/ip6.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/ip_icmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/tcp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/udp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netpacket/packet.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/nl_types.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/paths.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/pthread.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/pwd.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/regex.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/resolv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sched.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/semaphore.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/spawn.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/stdio.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/stdlib.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/string.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/strings.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/acct.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/auxv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/dir.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/eventfd.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/file.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/inotify.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/io.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/ipc.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/mman.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/mount.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/msg.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/mtio.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/param.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/random.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/select.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/sem.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/shm.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/socket.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/statvfs.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/time.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/timeb.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/timerfd.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/times.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/ttydefaults.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/types.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/uio.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/un.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/utsname.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/vfs.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sysexits.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/tar.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/threads.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/time.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/uchar.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/unistd.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/utime.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/values.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/wchar.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/wctype.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/wordexp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/Scrt1.o +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/libc.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/libdl.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/libm.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/libpthread.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/librt.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/packages/heapdump-collector/arm64-api-1/release/content_checklist_path FILE: ../../../fuchsia/sdk/linux/packages/heapdump-collector/arm64-api-1/release/package_manifest.json FILE: ../../../fuchsia/sdk/linux/packages/heapdump-collector/riscv64-api-1/release/content_checklist_path @@ -7680,6 +8970,13 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/looku ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/clock.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/scheduler.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/utc.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/exception.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/hw/debug/arm64.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/hw/debug/x86.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/lookup.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/clock.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/scheduler.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/utc.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/exception.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/hw/debug/arm64.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/hw/debug/x86.h + ../../../fuchsia/sdk/linux/LICENSE @@ -7708,6 +9005,13 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/loo ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/clock.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/scheduler.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/utc.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/exception.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/hw/debug/arm64.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/hw/debug/x86.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/lookup.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/clock.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/scheduler.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/utc.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/exception.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/hw/debug/arm64.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/hw/debug/x86.h + ../../../fuchsia/sdk/linux/LICENSE @@ -7736,6 +9040,13 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/lookup. ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/clock.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/scheduler.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/utc.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/exception.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/hw/debug/arm64.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/hw/debug/x86.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/lookup.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/clock.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/scheduler.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/utc.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/async-cpp/executor.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/async-cpp/include/lib/async/cpp/executor.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/async-cpp/include/lib/async/cpp/irq.h + ../../../fuchsia/sdk/linux/LICENSE @@ -8063,6 +9374,13 @@ FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/lookup. FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/clock.h FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/scheduler.h FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/utc.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/exception.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/hw/debug/arm64.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/hw/debug/x86.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/lookup.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/clock.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/scheduler.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/utc.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/exception.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/hw/debug/arm64.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/hw/debug/x86.h @@ -8091,6 +9409,13 @@ FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/looku FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/clock.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/scheduler.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/utc.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/exception.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/hw/debug/arm64.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/hw/debug/x86.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/lookup.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/clock.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/scheduler.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/utc.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/exception.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/hw/debug/arm64.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/hw/debug/x86.h @@ -8119,6 +9444,13 @@ FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/lookup.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/clock.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/scheduler.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/utc.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/exception.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/hw/debug/arm64.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/hw/debug/x86.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/lookup.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/clock.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/scheduler.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/utc.h FILE: ../../../fuchsia/sdk/linux/pkg/async-cpp/executor.cc FILE: ../../../fuchsia/sdk/linux/pkg/async-cpp/include/lib/async/cpp/executor.h FILE: ../../../fuchsia/sdk/linux/pkg/async-cpp/include/lib/async/cpp/irq.h @@ -8411,6 +9743,11 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/boot/ ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/string_view.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls-next.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/testonly-syscalls.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/analyzer.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/boot/crash-reason.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/string_view.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls-next.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/testonly-syscalls.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/analyzer.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/boot/crash-reason.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/string_view.h + ../../../fuchsia/sdk/linux/LICENSE @@ -8431,6 +9768,11 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/boo ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/string_view.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls-next.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/testonly-syscalls.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/analyzer.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/boot/crash-reason.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/string_view.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls-next.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/testonly-syscalls.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/analyzer.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/boot/crash-reason.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/string_view.h + ../../../fuchsia/sdk/linux/LICENSE @@ -8451,6 +9793,11 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/boot/cr ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/string_view.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls-next.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/testonly-syscalls.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/analyzer.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/boot/crash-reason.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/string_view.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls-next.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/testonly-syscalls.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/start_args.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/symbols.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_incoming_cpp/include/lib/driver/incoming/cpp/namespace.h + ../../../fuchsia/sdk/linux/LICENSE @@ -8645,6 +9992,11 @@ FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/boot/cr FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/string_view.h FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls-next.h FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/testonly-syscalls.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/analyzer.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/boot/crash-reason.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/string_view.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls-next.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/testonly-syscalls.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/analyzer.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/boot/crash-reason.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/string_view.h @@ -8665,6 +10017,11 @@ FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/boot/ FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/string_view.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls-next.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/testonly-syscalls.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/analyzer.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/boot/crash-reason.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/string_view.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls-next.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/testonly-syscalls.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/analyzer.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/boot/crash-reason.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/string_view.h @@ -8685,6 +10042,11 @@ FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/boot/cras FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/string_view.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls-next.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/testonly-syscalls.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/analyzer.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/boot/crash-reason.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/string_view.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls-next.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/testonly-syscalls.h FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/start_args.h FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/symbols.h FILE: ../../../fuchsia/sdk/linux/pkg/driver_incoming_cpp/include/lib/driver/incoming/cpp/namespace.h @@ -8830,14 +10192,17 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-12/sysroot/include/zircon/avail ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-13/sysroot/include/zircon/availability.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-14/sysroot/include/zircon/availability.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/availability.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/availability.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/availability.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-13/sysroot/include/zircon/availability.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-14/sysroot/include/zircon/availability.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/availability.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/availability.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/availability.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-13/sysroot/include/zircon/availability.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-14/sysroot/include/zircon/availability.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/availability.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/availability.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_logging_cpp/include/lib/driver/logging/cpp/internal/logger_internal.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_logging_cpp/include/lib/driver/logging/cpp/structured_logger.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime/include/lib/fdf/arena.h + ../../../fuchsia/sdk/linux/LICENSE @@ -8990,14 +10355,17 @@ FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-12/sysroot/include/zircon/availab FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-13/sysroot/include/zircon/availability.h FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-14/sysroot/include/zircon/availability.h FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/availability.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/availability.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/availability.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-13/sysroot/include/zircon/availability.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-14/sysroot/include/zircon/availability.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/availability.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/availability.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/availability.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-13/sysroot/include/zircon/availability.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-14/sysroot/include/zircon/availability.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/availability.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/availability.h FILE: ../../../fuchsia/sdk/linux/pkg/driver_logging_cpp/include/lib/driver/logging/cpp/internal/logger_internal.h FILE: ../../../fuchsia/sdk/linux/pkg/driver_logging_cpp/include/lib/driver/logging/cpp/structured_logger.h FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime/include/lib/fdf/arena.h @@ -9250,6 +10618,9 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-14/sysroot/include/zircon/sysca ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/errors.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/internal/cdecls.inc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/iob.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/errors.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/internal/cdecls.inc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/iob.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/errors.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/syscalls/internal/cdecls.inc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/syscalls/iob.h + ../../../fuchsia/sdk/linux/LICENSE @@ -9262,6 +10633,9 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-14/sysroot/include/zircon/sys ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/errors.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/internal/cdecls.inc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/iob.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/errors.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/internal/cdecls.inc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/iob.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/errors.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/syscalls/internal/cdecls.inc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/syscalls/iob.h + ../../../fuchsia/sdk/linux/LICENSE @@ -9274,6 +10648,9 @@ ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-14/sysroot/include/zircon/syscall ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/errors.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/internal/cdecls.inc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/iob.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/errors.h + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/internal/cdecls.inc + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/iob.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/async-cpp/include/lib/async/cpp/sequence_checker.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/async-cpp/sequence_checker.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/async/include/lib/async/sequence_id.h + ../../../fuchsia/sdk/linux/LICENSE @@ -9546,6 +10923,9 @@ FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-14/sysroot/include/zircon/syscall FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/errors.h FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/internal/cdecls.inc FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/include/zircon/syscalls/iob.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/errors.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/internal/cdecls.inc +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/zircon/syscalls/iob.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/errors.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/syscalls/internal/cdecls.inc FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/sysroot/include/zircon/syscalls/iob.h @@ -9558,6 +10938,9 @@ FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-14/sysroot/include/zircon/sysca FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/errors.h FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/internal/cdecls.inc FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/include/zircon/syscalls/iob.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/errors.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/internal/cdecls.inc +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/zircon/syscalls/iob.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/errors.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/syscalls/internal/cdecls.inc FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/sysroot/include/zircon/syscalls/iob.h @@ -9570,6 +10953,9 @@ FILE: ../../../fuchsia/sdk/linux/obj/x64-api-14/sysroot/include/zircon/syscalls/ FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/errors.h FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/internal/cdecls.inc FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/include/zircon/syscalls/iob.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/errors.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/internal/cdecls.inc +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/zircon/syscalls/iob.h FILE: ../../../fuchsia/sdk/linux/pkg/async-cpp/include/lib/async/cpp/sequence_checker.h FILE: ../../../fuchsia/sdk/linux/pkg/async-cpp/sequence_checker.cc FILE: ../../../fuchsia/sdk/linux/pkg/async/include/lib/async/sequence_id.h @@ -9778,13 +11164,9 @@ ORIGIN: ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/globals.cc + ../.. ORIGIN: ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/include/lib/component/outgoing/cpp/globals.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/driver_base.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/driver_export.h + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/basic_factory.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/driver_server.h + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/lifecycle.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/prepare_stop_completer.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/start_completer.h + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/internal/lifecycle.cc + ../../../fuchsia/sdk/linux/LICENSE -ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/prepare_stop_completer.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/start_completer.cc + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_devfs_cpp/include/lib/driver/devfs/cpp/connector.h + ../../../fuchsia/sdk/linux/LICENSE ORIGIN: ../../../fuchsia/sdk/linux/pkg/driver_runtime_testing_cpp/internal/default_dispatcher_setting.cc + ../../../fuchsia/sdk/linux/LICENSE @@ -9864,13 +11246,9 @@ FILE: ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/globals.cc FILE: ../../../fuchsia/sdk/linux/pkg/component_outgoing_cpp/include/lib/component/outgoing/cpp/globals.h FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/driver_base.cc FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/driver_export.h -FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/basic_factory.h FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/driver_server.h -FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/internal/lifecycle.h FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/prepare_stop_completer.h FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/include/lib/driver/component/cpp/start_completer.h -FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/internal/lifecycle.cc -FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/prepare_stop_completer.cc FILE: ../../../fuchsia/sdk/linux/pkg/driver_component_cpp/start_completer.cc FILE: ../../../fuchsia/sdk/linux/pkg/driver_devfs_cpp/include/lib/driver/devfs/cpp/connector.h FILE: ../../../fuchsia/sdk/linux/pkg/driver_runtime_testing_cpp/internal/default_dispatcher_setting.cc @@ -9946,6 +11324,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libsync.a FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libsyslog.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libtrace-engine.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libtrace-vthread.a FILE: ../../../fuchsia/sdk/linux/arch/arm64/lib/libvulkan.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/alloca.h FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/ar.h @@ -10125,6 +11504,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libsync.a FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libsyslog.so FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libtrace-engine.so FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libtrace-vthread.a FILE: ../../../fuchsia/sdk/linux/arch/riscv64/lib/libvulkan.so FILE: ../../../fuchsia/sdk/linux/arch/riscv64/sysroot/include/alloca.h FILE: ../../../fuchsia/sdk/linux/arch/riscv64/sysroot/include/ar.h @@ -10304,6 +11684,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libsync.a FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libsyslog.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libtrace-engine.so FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libtrace-vthread.a FILE: ../../../fuchsia/sdk/linux/arch/x64/lib/libvulkan.so FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/alloca.h FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/ar.h @@ -11166,6 +12547,182 @@ FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/lib/libm.so FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/lib/libpthread.so FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-15/sysroot/lib/libzircon.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/dist/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libasync-loop-default.a +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libsync.a +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/lib/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/alloca.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/ar.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/ftp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/inet.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/nameser.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/nameser_compat.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/telnet.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/arpa/tftp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/assert.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/aarch64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/aarch64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/alltypes.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/io.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/null.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/posix.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/riscv64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/riscv64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/x86_64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/x86_64/io.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/bits/x86_64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/byteswap.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/complex.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/cpio.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/ctype.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/dirent.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/dlfcn.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/elf.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/endian.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/err.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/features.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/fnmatch.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/getopt.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/glob.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/grp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/iconv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/ifaddrs.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/inttypes.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/iso646.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/langinfo.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/libgen.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/link.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/locale.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/malloc.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/math.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/memory.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/monetary.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/net/ethernet.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/net/if.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/net/if_arp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/net/route.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netdb.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/ether.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/icmp6.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/if_ether.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/igmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/in.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/in_systm.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/ip.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/ip6.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/ip_icmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/tcp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netinet/udp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/netpacket/packet.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/nl_types.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/paths.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/pthread.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/pwd.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/regex.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/resolv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sched.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/semaphore.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/spawn.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/stdio.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/stdlib.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/string.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/strings.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/acct.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/auxv.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/dir.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/eventfd.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/file.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/inotify.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/io.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/ipc.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/mman.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/mount.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/msg.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/mtio.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/param.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/random.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/select.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/sem.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/shm.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/socket.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/statvfs.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/time.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/timeb.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/timerfd.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/times.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/ttydefaults.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/types.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/uio.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/un.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/utsname.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/vfs.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sys/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/sysexits.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/tar.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/threads.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/time.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/uchar.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/unistd.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/utime.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/values.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/wchar.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/wctype.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/include/wordexp.h +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/Scrt1.o +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/libc.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/libdl.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/libm.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/libpthread.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/librt.so +FILE: ../../../fuchsia/sdk/linux/obj/arm64-api-16/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/dist/libasync-default.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/dist/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-12/dist/libfdio.so @@ -11870,6 +13427,182 @@ FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/lib/libm.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/lib/libpthread.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-15/sysroot/lib/libzircon.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/dist/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libasync-loop-default.a +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libsync.a +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/lib/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/alloca.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/ar.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/ftp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/inet.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/nameser.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/nameser_compat.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/telnet.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/arpa/tftp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/assert.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/aarch64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/aarch64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/alltypes.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/io.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/null.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/posix.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/riscv64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/riscv64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/x86_64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/x86_64/io.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/bits/x86_64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/byteswap.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/complex.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/cpio.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/ctype.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/dirent.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/dlfcn.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/elf.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/endian.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/err.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/features.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/fnmatch.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/getopt.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/glob.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/grp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/iconv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/ifaddrs.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/inttypes.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/iso646.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/langinfo.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/libgen.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/link.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/locale.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/malloc.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/math.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/memory.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/monetary.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/net/ethernet.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/net/if.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/net/if_arp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/net/route.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netdb.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/ether.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/icmp6.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/if_ether.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/igmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/in.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/in_systm.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/ip.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/ip6.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/ip_icmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/tcp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netinet/udp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/netpacket/packet.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/nl_types.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/paths.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/pthread.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/pwd.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/regex.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/resolv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sched.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/semaphore.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/spawn.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/stdio.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/stdlib.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/string.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/strings.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/acct.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/auxv.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/dir.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/eventfd.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/file.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/inotify.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/io.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/ipc.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/mman.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/mount.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/msg.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/mtio.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/param.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/random.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/select.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/sem.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/shm.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/socket.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/statvfs.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/time.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/timeb.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/timerfd.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/times.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/ttydefaults.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/types.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/uio.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/un.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/utsname.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/vfs.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sys/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/sysexits.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/tar.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/threads.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/time.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/uchar.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/unistd.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/utime.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/values.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/wchar.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/wctype.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/include/wordexp.h +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/Scrt1.o +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/libc.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/libdl.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/libm.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/libpthread.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/librt.so +FILE: ../../../fuchsia/sdk/linux/obj/riscv64-api-16/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/dist/libasync-default.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/dist/libdriver_runtime.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-12/dist/libfdio.so @@ -12574,6 +14307,182 @@ FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/lib/libm.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/lib/libpthread.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/obj/x64-api-15/sysroot/lib/libzircon.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/dist/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libasync-default.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libasync-loop-default.a +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libdriver_runtime.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libfdio.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libheapdump_instrumentation.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libsvc.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libsync.a +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libsyslog.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libtrace-engine.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libtrace-provider-so.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/lib/libvulkan.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/alloca.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/ar.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/ftp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/inet.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/nameser.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/nameser_compat.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/telnet.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/arpa/tftp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/assert.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/aarch64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/aarch64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/alltypes.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/io.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/null.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/posix.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/riscv64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/riscv64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/x86_64/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/x86_64/io.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/bits/x86_64/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/byteswap.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/complex.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/cpio.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/ctype.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/dirent.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/dlfcn.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/elf.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/endian.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/err.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/features.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/fenv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/fnmatch.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/getopt.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/glob.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/grp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/iconv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/ifaddrs.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/inttypes.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/iso646.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/langinfo.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/libgen.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/limits.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/link.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/locale.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/malloc.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/math.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/memory.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/monetary.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/net/ethernet.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/net/if.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/net/if_arp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/net/route.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netdb.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/ether.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/icmp6.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/if_ether.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/igmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/in.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/in_systm.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/ip.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/ip6.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/ip_icmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/tcp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netinet/udp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/netpacket/packet.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/nl_types.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/paths.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/pthread.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/pwd.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/regex.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/resolv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sched.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/semaphore.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/setjmp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/spawn.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/stdio.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/stdlib.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/string.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/strings.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/acct.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/auxv.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/dir.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/errno.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/eventfd.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/fcntl.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/file.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/inotify.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/io.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/ioctl.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/ipc.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/mman.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/mount.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/msg.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/mtio.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/param.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/poll.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/random.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/select.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/sem.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/shm.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/signal.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/socket.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/stat.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/statfs.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/statvfs.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/stropts.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/time.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/timeb.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/timerfd.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/times.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/ttydefaults.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/types.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/uio.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/un.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/utsname.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/vfs.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sys/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/sysexits.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/syslog.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/tar.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/termios.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/threads.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/time.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/uchar.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/ucontext.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/unistd.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/utime.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/values.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/wait.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/wchar.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/wctype.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/include/wordexp.h +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/Scrt1.o +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/libc.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/libdl.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/libm.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/libpthread.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/librt.so +FILE: ../../../fuchsia/sdk/linux/obj/x64-api-16/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/packages/heapdump-collector/arm64-api-1/release/content_checklist_path FILE: ../../../fuchsia/sdk/linux/packages/heapdump-collector/arm64-api-1/release/package_manifest.json FILE: ../../../fuchsia/sdk/linux/packages/heapdump-collector/riscv64-api-1/release/content_checklist_path From 3e0994025483c08422bd3429cde719fb79226286 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 30 Nov 2023 00:08:31 -0500 Subject: [PATCH 05/26] Roll Skia from 23721750e433 to 5d64b1322879 (1 revision) (#48520) https://skia.googlesource.com/skia.git/+log/23721750e433..5d64b1322879 2023-11-30 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skcms from 3020b5f04bb1 to e0a502ae9dab (1 revision) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,jcgregorio@google.com,matanl@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f3b0290b17006..2c0a202438454 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '23721750e4339b74039dd8efc678840f413fe141', + 'skia_revision': '5d64b132287991a46f8e9df6250ebe659c18eadf', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index df10fc3fd8894..0dc6ba6d6699d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c1fa2526c99d527e8a08ac4d672f52d8 +Signature: 32ec5fa8438088b617e260968d9db180 ==================================================================================================== LIBRARY: etc1 From eb1b0e7965fefae59e70aa019c23a06b6f99edbd Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 30 Nov 2023 00:58:59 -0500 Subject: [PATCH 06/26] Roll Skia from 5d64b1322879 to 84fdd36b1eea (1 revision) (#48521) https://skia.googlesource.com/skia.git/+log/5d64b1322879..84fdd36b1eea 2023-11-30 skia-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from 35b1a501141a to 4befa3ada54c (1 revision) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,jcgregorio@google.com,matanl@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 2c0a202438454..d496598457812 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '5d64b132287991a46f8e9df6250ebe659c18eadf', + 'skia_revision': '84fdd36b1eea1ac39e433e9438304d5c473a83fb', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From 1a9efa85bdd2f4c25ae39f8161675e4477156562 Mon Sep 17 00:00:00 2001 From: Bruno Leroux Date: Thu, 30 Nov 2023 07:12:11 +0100 Subject: [PATCH 07/26] [Android] Add support for the PlatformChannel "Share.invoke" command (#48265) ## Description This PR adds support for the PlatformChannel `Share.invoke` message on Android (before this PR it is only supported on iOS). ## Related Issue Engine side for https://github.com/flutter/flutter/issues/138728 ## Tests Adds 2 tests. --- .../systemchannels/PlatformChannel.java | 12 ++++++ .../plugin/platform/PlatformPlugin.java | 15 ++++++++ .../systemchannels/PlatformChannelTest.java | 25 +++++++++++++ .../plugin/platform/PlatformPluginTest.java | 37 +++++++++++++++++++ 4 files changed, 89 insertions(+) diff --git a/shell/platform/android/io/flutter/embedding/engine/systemchannels/PlatformChannel.java b/shell/platform/android/io/flutter/embedding/engine/systemchannels/PlatformChannel.java index 06244b5b32f68..d3fd6774fa6f7 100644 --- a/shell/platform/android/io/flutter/embedding/engine/systemchannels/PlatformChannel.java +++ b/shell/platform/android/io/flutter/embedding/engine/systemchannels/PlatformChannel.java @@ -187,6 +187,11 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result.success(response); break; } + case "Share.invoke": + String text = (String) arguments; + platformMessageHandler.share(text); + result.success(null); + break; default: result.notImplemented(); break; @@ -549,6 +554,13 @@ default void setFrameworkHandlesBack(boolean frameworkHandlesBack) {} * can be pasted. */ boolean clipboardHasStrings(); + + /** + * The Flutter application would like to share the given {@code text} using the Android standard + * intent action named {@code Intent.ACTION_SEND}. See: + * https://developer.android.com/reference/android/content/Intent.html#ACTION_SEND + */ + void share(@NonNull String text); } /** Types of sounds the Android OS can play on behalf of an application. */ diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index c3c14dff25213..58618b2b83247 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -11,6 +11,7 @@ import android.content.ClipDescription; import android.content.ClipboardManager; import android.content.Context; +import android.content.Intent; import android.content.res.AssetFileDescriptor; import android.os.Build; import android.view.HapticFeedbackConstants; @@ -145,6 +146,11 @@ public void setClipboardData(@NonNull String text) { public boolean clipboardHasStrings() { return PlatformPlugin.this.clipboardHasStrings(); } + + @Override + public void share(@NonNull String text) { + PlatformPlugin.this.share(text); + } }; public PlatformPlugin(@NonNull Activity activity, @NonNull PlatformChannel platformChannel) { @@ -570,4 +576,13 @@ private boolean clipboardHasStrings() { } return description.hasMimeType("text/*"); } + + private void share(@NonNull String text) { + Intent intent = new Intent(); + intent.setAction(Intent.ACTION_SEND); + intent.setType("text/plain"); + intent.putExtra(Intent.EXTRA_TEXT, text); + + activity.startActivity(Intent.createChooser(intent, null)); + } } diff --git a/shell/platform/android/test/io/flutter/embedding/engine/systemchannels/PlatformChannelTest.java b/shell/platform/android/test/io/flutter/embedding/engine/systemchannels/PlatformChannelTest.java index 85ebafd471ff8..a8c203d917ffe 100644 --- a/shell/platform/android/test/io/flutter/embedding/engine/systemchannels/PlatformChannelTest.java +++ b/shell/platform/android/test/io/flutter/embedding/engine/systemchannels/PlatformChannelTest.java @@ -1,6 +1,8 @@ package io.flutter.embedding.engine.systemchannels; +import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.refEq; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -15,6 +17,7 @@ import org.json.JSONObject; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; import org.robolectric.annotation.Config; @Config(manifest = Config.NONE) @@ -42,4 +45,26 @@ public void platformChannel_hasStringsMessage() { } verify(mockResult).success(refEq(expected)); } + + @Test + public void platformChannel_shareInvokeMessage() { + MethodChannel rawChannel = mock(MethodChannel.class); + FlutterJNI mockFlutterJNI = mock(FlutterJNI.class); + DartExecutor dartExecutor = new DartExecutor(mockFlutterJNI, mock(AssetManager.class)); + PlatformChannel fakePlatformChannel = new PlatformChannel(dartExecutor); + PlatformChannel.PlatformMessageHandler mockMessageHandler = + mock(PlatformChannel.PlatformMessageHandler.class); + fakePlatformChannel.setPlatformMessageHandler(mockMessageHandler); + + ArgumentCaptor valueCapture = ArgumentCaptor.forClass(String.class); + doNothing().when(mockMessageHandler).share(valueCapture.capture()); + + final String expectedContent = "Flutter"; + MethodCall methodCall = new MethodCall("Share.invoke", expectedContent); + MethodChannel.Result mockResult = mock(MethodChannel.Result.class); + fakePlatformChannel.parsingMethodCallHandler.onMethodCall(methodCall, mockResult); + + assertEquals(valueCapture.getValue(), expectedContent); + verify(mockResult).success(null); + } } diff --git a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java index 51e66c91db30b..a9ced69401eee 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -6,16 +6,19 @@ import static android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS; import static android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyBoolean; import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; @@ -28,6 +31,7 @@ import android.content.ClipboardManager; import android.content.ContentResolver; import android.content.Context; +import android.content.Intent; import android.content.res.AssetFileDescriptor; import android.net.Uri; import android.os.Build; @@ -47,6 +51,8 @@ import java.util.concurrent.atomic.AtomicBoolean; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.MockedStatic; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.android.controller.ActivityController; @@ -629,4 +635,35 @@ public void performsDefaultBehaviorWhenNoDelegateProvided() { verify(mockActivity, times(1)).finish(); } + + @Test + public void startChoosenActivityWhenSharingText() { + Activity mockActivity = mock(Activity.class); + PlatformChannel mockPlatformChannel = mock(PlatformChannel.class); + PlatformPluginDelegate mockPlatformPluginDelegate = mock(PlatformPluginDelegate.class); + PlatformPlugin platformPlugin = + new PlatformPlugin(mockActivity, mockPlatformChannel, mockPlatformPluginDelegate); + + // Mock Intent.createChooser (in real application it opens a chooser where the user can + // select which application will be used to share the selected text). + Intent choosenIntent = new Intent(); + MockedStatic intentClass = mockStatic(Intent.class); + ArgumentCaptor intentCaptor = ArgumentCaptor.forClass(Intent.class); + intentClass + .when(() -> Intent.createChooser(intentCaptor.capture(), any())) + .thenReturn(choosenIntent); + + final String expectedContent = "Flutter"; + platformPlugin.mPlatformMessageHandler.share(expectedContent); + + // Activity.startActivity should have been called. + verify(mockActivity, times(1)).startActivity(choosenIntent); + + // The intent action created by the plugin and passed to Intent.createChooser should be + // 'Intent.ACTION_SEND'. + Intent sendToIntent = intentCaptor.getValue(); + assertEquals(sendToIntent.getAction(), Intent.ACTION_SEND); + assertEquals(sendToIntent.getType(), "text/plain"); + assertEquals(sendToIntent.getStringExtra(Intent.EXTRA_TEXT), expectedContent); + } } From 549c6605d8a49e4712b1c6cb337d78be760e23ad Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 30 Nov 2023 01:48:15 -0500 Subject: [PATCH 08/26] Roll Skia from 84fdd36b1eea to 11a15444a3aa (1 revision) (#48523) https://skia.googlesource.com/skia.git/+log/84fdd36b1eea..11a15444a3aa 2023-11-30 skia-autoroll@skia-public.iam.gserviceaccount.com Roll SK Tool from 7b7899f7534d to ed90b0303460 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,jcgregorio@google.com,matanl@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index d496598457812..3054f64317109 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '84fdd36b1eea1ac39e433e9438304d5c473a83fb', + 'skia_revision': '11a15444a3aaa3df573850575ccabedf675e26f4', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From 0ab66aeff7d6c16c627a36efc6d86a21ba364bd2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 30 Nov 2023 02:33:14 -0500 Subject: [PATCH 09/26] Roll Skia from 11a15444a3aa to 2f01d500a352 (1 revision) (#48524) https://skia.googlesource.com/skia.git/+log/11a15444a3aa..2f01d500a352 2023-11-30 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 716c5d00b8b6 to 6f4f5e3992cb (17 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,jcgregorio@google.com,matanl@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 3054f64317109..79fc82fc521a4 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '11a15444a3aaa3df573850575ccabedf675e26f4', + 'skia_revision': '2f01d500a3527e3bbe031b5d8030537cc6c19c30', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. From 7cba4225b9d945b95670b10d21d9e4e1abcff626 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 30 Nov 2023 09:57:10 -0500 Subject: [PATCH 10/26] Roll Skia from 2f01d500a352 to 0968fe18ff75 (2 revisions) (#48531) https://skia.googlesource.com/skia.git/+log/2f01d500a352..0968fe18ff75 2023-11-30 bungeman@google.com Use weak binding for blocking region functions 2023-11-30 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 6c61584c8b14 to 9b8a5224f9db (2 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,jcgregorio@google.com,matanl@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 79fc82fc521a4..b52ae383f9fd8 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '2f01d500a3527e3bbe031b5d8030537cc6c19c30', + 'skia_revision': '0968fe18ff75de1d02f2341f7684e7ea0bfa37d8', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0dc6ba6d6699d..099d31ab9f5a6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 32ec5fa8438088b617e260968d9db180 +Signature: d59b5b2fc8e8083c12ac2438289a65b9 ==================================================================================================== LIBRARY: etc1 From fb4105e60ad8b8b6076ef0f5b1081328a64c60d6 Mon Sep 17 00:00:00 2001 From: Jesse Seales <103135467+sealesj@users.noreply.github.com> Date: Thu, 30 Nov 2023 12:26:31 -0500 Subject: [PATCH 11/26] Use Chromium mirror for archive dependency (#48509) The archive dependency is currently being pulled directly from github which is not the desired workflow (see context in b/313920867) This change migrates the source of the archive dependency to be the already exsiting auto-updated mirror. [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index b52ae383f9fd8..cdf4bceb43cfa 100644 --- a/DEPS +++ b/DEPS @@ -677,7 +677,7 @@ deps = { # Dart packages 'src/flutter/third_party/pkg/archive': - Var('github_git') + '/brendan-duncan/archive.git' + '@' + '9de7a0544457c6aba755ccb65abb41b0dc1db70d', # 3.1.2 + Var('chromium_git') + '/external/github.com/brendan-duncan/archive.git' + '@' + '9de7a0544457c6aba755ccb65abb41b0dc1db70d', # 3.1.2 'src/flutter/third_party/pkg/equatable': Var('github_git') + '/felangel/equatable.git' + '@' + '2117551ff3054f8edb1a58f63ffe1832a8d25623', # 2.0.5 From ead66f5d7cd702727c32d68afc75e540f526f37a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 30 Nov 2023 12:41:33 -0500 Subject: [PATCH 12/26] Roll Skia from 0968fe18ff75 to 0e479728cc1f (1 revision) (#48534) https://skia.googlesource.com/skia.git/+log/0968fe18ff75..0e479728cc1f 2023-11-30 johnstiles@google.com Add SkRasterPipeline context for InitLaneMasks op. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,jcgregorio@google.com,matanl@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index cdf4bceb43cfa..7edb95ded98f4 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '0968fe18ff75de1d02f2341f7684e7ea0bfa37d8', + 'skia_revision': '0e479728cc1fd005fccba67c2b0307519a8a56dc', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 099d31ab9f5a6..2fa1803210885 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d59b5b2fc8e8083c12ac2438289a65b9 +Signature: 2ad0091669f7988d67dc57267888ed9b ==================================================================================================== LIBRARY: etc1 From f92946e911c20c547571b98edf42ae97f15fdbc8 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 30 Nov 2023 13:42:24 -0500 Subject: [PATCH 13/26] Roll Skia from 0e479728cc1f to 6b4bdebaab88 (1 revision) (#48536) https://skia.googlesource.com/skia.git/+log/0e479728cc1f..6b4bdebaab88 2023-11-30 johnstiles@google.com Add tail pointer to SkRasterPipeline_BranchIfAllLanesActiveCtx. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,jcgregorio@google.com,matanl@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 7edb95ded98f4..f53e33ac0ccc5 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '0e479728cc1fd005fccba67c2b0307519a8a56dc', + 'skia_revision': '6b4bdebaab88cd84de31a3d7902f60649d6c142f', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 2fa1803210885..495744a1ab59f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2ad0091669f7988d67dc57267888ed9b +Signature: 9666dd22602be535e04f33c5b9661371 ==================================================================================================== LIBRARY: etc1 From 3848f505cb4367b0c49691b807a3314be17210c6 Mon Sep 17 00:00:00 2001 From: gaaclarke <30870216+gaaclarke@users.noreply.github.com> Date: Thu, 30 Nov 2023 11:26:06 -0800 Subject: [PATCH 14/26] [Impeller] Started expanding the blur clip region (#48535) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fixes https://github.com/flutter/flutter/issues/139317 test: AiksTest.CanRenderClippedBlur This works by double padding. First it applies the padding to clip region, then it add a transparent gutter around the snapshot to account for any of the expanded clip region that was ignored. This is suboptimal since there maybe a considerable region for which blur is calculated that is clipped. That can be optimized in the future by adjusting the UVs in the blur phases to match the clip region. ## screenshot of result Screenshot 2023-11-30 at 10 28 14 AM ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide] and the [C++, Objective-C, Java style guides]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I added new tests to check the change I am making or feature I am adding, or the PR is [test-exempt]. See [testing the engine] for instructions on writing and running engine tests. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I signed the [CLA]. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. [Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview [Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene [test-exempt]: https://github.com/flutter/flutter/wiki/Tree-hygiene#tests [Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style [testing the engine]: https://github.com/flutter/flutter/wiki/Testing-the-engine [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/wiki/Chat --- .../filters/gaussian_blur_filter_contents.cc | 41 +++++++++++++++---- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/impeller/entity/contents/filters/gaussian_blur_filter_contents.cc b/impeller/entity/contents/filters/gaussian_blur_filter_contents.cc index bcbf85f55e9cd..7b8f01cc90ab6 100644 --- a/impeller/entity/contents/filters/gaussian_blur_filter_contents.cc +++ b/impeller/entity/contents/filters/gaussian_blur_filter_contents.cc @@ -17,6 +17,17 @@ using GaussianBlurVertexShader = GaussianBlurPipeline::VertexShader; using GaussianBlurFragmentShader = GaussianBlurPipeline::FragmentShader; namespace { + +std::optional ExpandCoverageHint(const std::optional& coverage_hint, + const Matrix& source_to_local_transform, + const Vector2& padding) { + if (!coverage_hint.has_value()) { + return std::nullopt; + } + Vector2 transformed_padding = (source_to_local_transform * padding).Abs(); + return coverage_hint->Expand(transformed_padding); +} + SamplerDescriptor MakeSamplerDescriptor(MinMagFilter filter, SamplerAddressMode address_mode) { SamplerDescriptor sampler_desc; @@ -43,6 +54,8 @@ Matrix MakeAnchorScale(const Point& anchor, Vector2 scale) { Matrix::MakeTranslation({-anchor.x, -anchor.y, 0}); } +/// Makes a subpass that will render the scaled down input and add the +/// transparent gutter required for the blur halo. std::shared_ptr MakeDownsampleSubpass( const ContentContext& renderer, std::shared_ptr input_texture, @@ -66,7 +79,8 @@ std::shared_ptr MakeDownsampleSubpass( frame_info.alpha = 1.0; // Insert transparent gutter around the downsampled image so the blur - // creates a halo effect. + // creates a halo effect. This compensates for when the expanded clip + // region can't give us the full gutter we want. Vector2 texture_size = Vector2(input_texture->GetSize()); Quad vertices = MakeAnchorScale({0.5, 0.5}, @@ -106,6 +120,8 @@ std::shared_ptr MakeBlurSubpass( std::shared_ptr input_texture, const SamplerDescriptor& sampler_descriptor, const GaussianBlurFragmentShader::BlurInfo& blur_info) { + // TODO(gaaclarke): This blurs the whole image, but because we know the clip + // region we could focus on just blurring that. ISize subpass_size = input_texture->GetSize(); ContentContext::SubpassCallback subpass_callback = [&](const ContentContext& renderer, RenderPass& pass) { @@ -200,9 +216,23 @@ std::optional GaussianBlurFilterContents::RenderFilter( return std::nullopt; } + Scalar blur_radius = CalculateBlurRadius(sigma_); + Vector2 padding(ceil(blur_radius), ceil(blur_radius)); + + // Apply as much of the desired padding as possible from the source. This may + // be ignored so must be accounted for in the downsample pass by adding a + // transparent gutter. + std::optional expanded_coverage_hint = ExpandCoverageHint( + coverage_hint, entity.GetTransform() * effect_transform, padding); + // TODO(gaaclarke): How much of the gutter is thrown away can be used to + // adjust the padding that is added in the downsample pass. + // For example, if we get all the padding we requested from + // the expanded_coverage_hint, there is no need to add a + // transparent gutter. + std::optional input_snapshot = inputs[0]->GetSnapshot("GaussianBlur", renderer, entity, - /*coverage_limit=*/coverage_hint); + /*coverage_limit=*/expanded_coverage_hint); if (!input_snapshot.has_value()) { return std::nullopt; } @@ -212,14 +242,11 @@ std::optional GaussianBlurFilterContents::RenderFilter( entity.GetClipDepth()); // No blur to render. } - Scalar blur_radius = CalculateBlurRadius(sigma_); Scalar desired_scalar = CalculateScale(sigma_); - // TODO(jonahwilliams): if scaling value is 1.0, then skip the downsample + // TODO(jonahwilliams): If desired_scalar is 1.0 and we fully acquired the + // gutter from the expanded_coverage_hint, we can skip the downsample pass. // pass. - Vector2 downsample_scalar(desired_scalar, desired_scalar); - Vector2 padding(ceil(blur_radius), ceil(blur_radius)); - Vector2 padded_size = Vector2(input_snapshot->texture->GetSize()) + 2.0 * padding; Vector2 downsampled_size = padded_size * downsample_scalar; From 0880b3d2ad33056c4bb512be583bb6ef78a1fffa Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 30 Nov 2023 14:57:24 -0500 Subject: [PATCH 15/26] Roll Skia from 6b4bdebaab88 to 2d236de89898 (1 revision) (#48537) https://skia.googlesource.com/skia.git/+log/6b4bdebaab88..2d236de89898 2023-11-30 johnstiles@google.com Use initializer for tail. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,jcgregorio@google.com,matanl@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f53e33ac0ccc5..df3f7ebe41348 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '6b4bdebaab88cd84de31a3d7902f60649d6c142f', + 'skia_revision': '2d236de8989841e56c0d4569b0be54239bb4b0d1', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 495744a1ab59f..f2b9da2ed3cc2 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9666dd22602be535e04f33c5b9661371 +Signature: ec1def150c4d8318feb663eacc03909e ==================================================================================================== LIBRARY: etc1 From ab77461774f09059083b9c17e1cdcb32e72ae4b3 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen <1961493+harryterkelsen@users.noreply.github.com> Date: Thu, 30 Nov 2023 12:41:23 -0800 Subject: [PATCH 16/26] [canvaskit] Revert to `drawImage` rendering on Chrome 110 or earlier (#48515) This updates a fix for Chrome 110 and earlier to always activate, not just on Windows. Fixes https://github.com/flutter/flutter/issues/138827 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide] and the [C++, Objective-C, Java style guides]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I added new tests to check the change I am making or feature I am adding, or the PR is [test-exempt]. See [testing the engine] for instructions on writing and running engine tests. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I signed the [CLA]. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. [Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview [Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene [test-exempt]: https://github.com/flutter/flutter/wiki/Tree-hygiene#tests [Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style [testing the engine]: https://github.com/flutter/flutter/wiki/Testing-the-engine [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/wiki/Chat --- .../lib/src/engine/browser_detection.dart | 28 +++++++++---------- lib/web_ui/lib/src/engine/dom.dart | 2 +- .../no_create_image_bitmap_test.dart | 4 +-- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/lib/web_ui/lib/src/engine/browser_detection.dart b/lib/web_ui/lib/src/engine/browser_detection.dart index f771c9ea64ee4..c6c7dc8422292 100644 --- a/lib/web_ui/lib/src/engine/browser_detection.dart +++ b/lib/web_ui/lib/src/engine/browser_detection.dart @@ -206,35 +206,33 @@ bool get isIOS15 { domWindow.navigator.userAgent.contains('OS 15_'); } -/// Detect if running on Chrome version 110 or older on Windows. +/// Detect if running on Chrome version 110 or older. /// -/// These versions of Chrome have a bug on Windows which causes -/// rendering to be flipped upside down. +/// These versions of Chrome have a bug which causes rendering to be flipped +/// upside down when using `createImageBitmap`: see +/// https://chromium.googlesource.com/chromium/src/+/a7f9b00e422a1755918f8ca5500380f98b6fddf2 // TODO(harryterkelsen): Remove this check once we stop supporting Chrome 110 // and earlier, https://github.com/flutter/flutter/issues/139186. -bool get isChrome110OrOlderOnWindows { - if (debugIsChrome110OrOlderOnWindows != null) { - return debugIsChrome110OrOlderOnWindows!; +bool get isChrome110OrOlder { + if (debugIsChrome110OrOlder != null) { + return debugIsChrome110OrOlder!; } - if (_cachedIsChrome110OrOlderOnWindows != null) { - return _cachedIsChrome110OrOlderOnWindows!; - } - if (operatingSystem != OperatingSystem.windows) { - return _cachedIsChrome110OrOlderOnWindows = false; + if (_cachedIsChrome110OrOlder != null) { + return _cachedIsChrome110OrOlder!; } final RegExp chromeRegexp = RegExp(r'Chrom(e|ium)\/([0-9]+)\.'); final RegExpMatch? match = chromeRegexp.firstMatch(domWindow.navigator.userAgent); if (match != null) { final int chromeVersion = int.parse(match.group(2)!); - return _cachedIsChrome110OrOlderOnWindows = chromeVersion <= 110; + return _cachedIsChrome110OrOlder = chromeVersion <= 110; } - return _cachedIsChrome110OrOlderOnWindows = false; + return _cachedIsChrome110OrOlder = false; } // Cache the result of checking if the app is running on Chrome 110 on Windows // since we check this on every frame. -bool? _cachedIsChrome110OrOlderOnWindows; +bool? _cachedIsChrome110OrOlder; /// If set to true pretends that the current browser is iOS Safari. /// @@ -267,7 +265,7 @@ bool get isWasm => const bool.fromEnvironment('dart.library.ffi'); bool? debugIsIOS15; /// Use in tests to simulated the detection of Chrome 110 or older on Windows. -bool? debugIsChrome110OrOlderOnWindows; +bool? debugIsChrome110OrOlder; int? _cachedWebGLVersion; diff --git a/lib/web_ui/lib/src/engine/dom.dart b/lib/web_ui/lib/src/engine/dom.dart index 47c464a8de840..cd2d3a46c31e5 100644 --- a/lib/web_ui/lib/src/engine/dom.dart +++ b/lib/web_ui/lib/src/engine/dom.dart @@ -3674,7 +3674,7 @@ bool debugDisableCreateImageBitmapSupport = false; bool get browserSupportsCreateImageBitmap => _createImageBitmapFunction != null && - !isChrome110OrOlderOnWindows && + !isChrome110OrOlder && !debugDisableCreateImageBitmapSupport; @JS() diff --git a/lib/web_ui/test/canvaskit/no_create_image_bitmap_test.dart b/lib/web_ui/test/canvaskit/no_create_image_bitmap_test.dart index d23270e1e8a31..8861e9c037fe7 100644 --- a/lib/web_ui/test/canvaskit/no_create_image_bitmap_test.dart +++ b/lib/web_ui/test/canvaskit/no_create_image_bitmap_test.dart @@ -24,7 +24,7 @@ void testMain() { tearDown(() { debugDisableCreateImageBitmapSupport = false; - debugIsChrome110OrOlderOnWindows = null; + debugIsChrome110OrOlder = null; }); test('can render without createImageBitmap', () async { @@ -69,7 +69,7 @@ void testMain() { test( 'createImageBitmap support is disabled on ' 'Windows on Chrome version 110 or older', () async { - debugIsChrome110OrOlderOnWindows = true; + debugIsChrome110OrOlder = true; debugDisableCreateImageBitmapSupport = false; expect(browserSupportsCreateImageBitmap, isFalse); From 2420fb0f93d181f4ff983a8051cbb81566964c2e Mon Sep 17 00:00:00 2001 From: Jim Graham Date: Thu, 30 Nov 2023 12:54:06 -0800 Subject: [PATCH 17/26] [Impeller] Add direct tesselation of circles for DrawCircle and Round end caps (#48103) Note: The GPU tesselation for drawPoints is disabled in this test PR, but will be re-enabled when I can run some benchmarks to see where a good cutoff exists. Tessellation for circular or quarter circular paths is now handled by a single tessellator class that provides services for DrawCircle, DrawPoints (round caps), and DrawLines (round caps). Creating a general path is avoided along with the associated overhead of recognizing and using a generic tessellation step. --- ci/licenses_golden/excluded_files | 2 + ci/licenses_golden/licenses_flutter | 12 + impeller/aiks/aiks_unittests.cc | 26 +++ impeller/aiks/canvas.cc | 40 ++-- impeller/entity/BUILD.gn | 2 + impeller/entity/geometry/ellipse_geometry.cc | 130 +++++++++++ impeller/entity/geometry/ellipse_geometry.h | 68 ++++++ impeller/entity/geometry/geometry.cc | 5 + impeller/entity/geometry/geometry.h | 2 + impeller/entity/geometry/line_geometry.cc | 157 ++++++++++--- impeller/entity/geometry/line_geometry.h | 5 + .../entity/geometry/point_field_geometry.cc | 83 ++++--- impeller/geometry/BUILD.gn | 3 + impeller/geometry/trig.cc | 11 + impeller/geometry/trig.h | 32 +++ impeller/geometry/trig_unittests.cc | 64 ++++++ impeller/renderer/vertex_buffer_builder.h | 5 + impeller/tessellator/BUILD.gn | 16 +- impeller/tessellator/circle_tessellator.cc | 211 ++++++++++++++++++ impeller/tessellator/circle_tessellator.h | 132 +++++++++++ .../circle_tessellator_unittests.cc | 97 ++++++++ impeller/tessellator/tessellator.h | 6 + 22 files changed, 1018 insertions(+), 91 deletions(-) create mode 100644 impeller/entity/geometry/ellipse_geometry.cc create mode 100644 impeller/entity/geometry/ellipse_geometry.h create mode 100644 impeller/geometry/trig.cc create mode 100644 impeller/geometry/trig.h create mode 100644 impeller/geometry/trig_unittests.cc create mode 100644 impeller/tessellator/circle_tessellator.cc create mode 100644 impeller/tessellator/circle_tessellator.h create mode 100644 impeller/tessellator/circle_tessellator_unittests.cc diff --git a/ci/licenses_golden/excluded_files b/ci/licenses_golden/excluded_files index 4a11ee1be417e..3cbe03f25dbda 100644 --- a/ci/licenses_golden/excluded_files +++ b/ci/licenses_golden/excluded_files @@ -156,6 +156,7 @@ ../../../flutter/impeller/geometry/path_unittests.cc ../../../flutter/impeller/geometry/rect_unittests.cc ../../../flutter/impeller/geometry/size_unittests.cc +../../../flutter/impeller/geometry/trig_unittests.cc ../../../flutter/impeller/golden_tests/README.md ../../../flutter/impeller/golden_tests_harvester/.dart_tool ../../../flutter/impeller/golden_tests_harvester/.gitignore @@ -193,6 +194,7 @@ ../../../flutter/impeller/scene/importer/importer_unittests.cc ../../../flutter/impeller/scene/scene_unittests.cc ../../../flutter/impeller/shader_archive/shader_archive_unittests.cc +../../../flutter/impeller/tessellator/circle_tessellator_unittests.cc ../../../flutter/impeller/tessellator/dart/.dart_tool ../../../flutter/impeller/tessellator/dart/pubspec.lock ../../../flutter/impeller/tessellator/dart/pubspec.yaml diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 22d3e68741eb6..5e94ca5d1e55c 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -5101,6 +5101,8 @@ ORIGIN: ../../../flutter/impeller/entity/entity_playground.cc + ../../../flutter ORIGIN: ../../../flutter/impeller/entity/entity_playground.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/entity/geometry/cover_geometry.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/entity/geometry/cover_geometry.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/entity/geometry/ellipse_geometry.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/entity/geometry/ellipse_geometry.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/entity/geometry/fill_path_geometry.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/entity/geometry/fill_path_geometry.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/entity/geometry/geometry.cc + ../../../flutter/LICENSE @@ -5206,6 +5208,8 @@ ORIGIN: ../../../flutter/impeller/geometry/sigma.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/geometry/sigma.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/geometry/size.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/geometry/size.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/geometry/trig.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/geometry/trig.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/geometry/type_traits.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/geometry/type_traits.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/geometry/vector.cc + ../../../flutter/LICENSE @@ -5523,6 +5527,8 @@ ORIGIN: ../../../flutter/impeller/shader_archive/shader_archive_writer.cc + ../. ORIGIN: ../../../flutter/impeller/shader_archive/shader_archive_writer.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/tessellator/c/tessellator.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/tessellator/c/tessellator.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/tessellator/circle_tessellator.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/tessellator/circle_tessellator.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/tessellator/dart/lib/tessellator.dart + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/tessellator/tessellator.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/tessellator/tessellator.h + ../../../flutter/LICENSE @@ -7893,6 +7899,8 @@ FILE: ../../../flutter/impeller/entity/entity_playground.cc FILE: ../../../flutter/impeller/entity/entity_playground.h FILE: ../../../flutter/impeller/entity/geometry/cover_geometry.cc FILE: ../../../flutter/impeller/entity/geometry/cover_geometry.h +FILE: ../../../flutter/impeller/entity/geometry/ellipse_geometry.cc +FILE: ../../../flutter/impeller/entity/geometry/ellipse_geometry.h FILE: ../../../flutter/impeller/entity/geometry/fill_path_geometry.cc FILE: ../../../flutter/impeller/entity/geometry/fill_path_geometry.h FILE: ../../../flutter/impeller/entity/geometry/geometry.cc @@ -7998,6 +8006,8 @@ FILE: ../../../flutter/impeller/geometry/sigma.cc FILE: ../../../flutter/impeller/geometry/sigma.h FILE: ../../../flutter/impeller/geometry/size.cc FILE: ../../../flutter/impeller/geometry/size.h +FILE: ../../../flutter/impeller/geometry/trig.cc +FILE: ../../../flutter/impeller/geometry/trig.h FILE: ../../../flutter/impeller/geometry/type_traits.cc FILE: ../../../flutter/impeller/geometry/type_traits.h FILE: ../../../flutter/impeller/geometry/vector.cc @@ -8316,6 +8326,8 @@ FILE: ../../../flutter/impeller/shader_archive/shader_archive_writer.cc FILE: ../../../flutter/impeller/shader_archive/shader_archive_writer.h FILE: ../../../flutter/impeller/tessellator/c/tessellator.cc FILE: ../../../flutter/impeller/tessellator/c/tessellator.h +FILE: ../../../flutter/impeller/tessellator/circle_tessellator.cc +FILE: ../../../flutter/impeller/tessellator/circle_tessellator.h FILE: ../../../flutter/impeller/tessellator/dart/lib/tessellator.dart FILE: ../../../flutter/impeller/tessellator/tessellator.cc FILE: ../../../flutter/impeller/tessellator/tessellator.h diff --git a/impeller/aiks/aiks_unittests.cc b/impeller/aiks/aiks_unittests.cc index 81c5ed7aaf48b..da402f0d30cce 100644 --- a/impeller/aiks/aiks_unittests.cc +++ b/impeller/aiks/aiks_unittests.cc @@ -2060,6 +2060,32 @@ TEST_P(AiksTest, DrawLinesRenderCorrectly) { ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture())); } +TEST_P(AiksTest, FillCirclesRenderCorrectly) { + Canvas canvas; + canvas.Scale(GetContentScale()); + Paint paint; + const int color_count = 3; + Color colors[color_count] = { + Color::Blue(), + Color::Green(), + Color::Crimson(), + }; + + int c_index = 0; + int radius = 600; + while (radius > 0) { + paint.color = colors[(c_index++) % color_count]; + canvas.DrawCircle({10, 10}, radius, paint); + if (radius > 30) { + radius -= 10; + } else { + radius -= 2; + } + } + + ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture())); +} + TEST_P(AiksTest, GradientStrokesRenderCorrectly) { // Compare with https://fiddle.skia.org/c/027392122bec8ac2b5d5de00a4b9bbe2 auto callback = [&](AiksContext& renderer) -> std::optional { diff --git a/impeller/aiks/canvas.cc b/impeller/aiks/canvas.cc index 906287c61c8f5..02b215e41c274 100644 --- a/impeller/aiks/canvas.cc +++ b/impeller/aiks/canvas.cc @@ -232,17 +232,6 @@ bool Canvas::AttemptDrawBlurredRRect(const Rect& rect, } void Canvas::DrawLine(const Point& p0, const Point& p1, const Paint& paint) { - if (paint.stroke_cap == Cap::kRound) { - auto path = PathBuilder{} - .AddLine((p0), (p1)) - .SetConvexity(Convexity::kConvex) - .TakePath(); - Paint stroke_paint = paint; - stroke_paint.style = Paint::Style::kStroke; - DrawPath(path, stroke_paint); - return; - } - Entity entity; entity.SetTransform(GetCurrentTransform()); entity.SetClipDepth(GetClipDepth()); @@ -298,20 +287,33 @@ void Canvas::DrawRRect(Rect rect, Point corner_radii, const Paint& paint) { } void Canvas::DrawCircle(Point center, Scalar radius, const Paint& paint) { + if (paint.style == Paint::Style::kStroke) { + auto circle_path = + PathBuilder{} + .AddCircle(center, radius) + .SetConvexity(Convexity::kConvex) + .SetBounds(Rect::MakeLTRB(center.x - radius, center.y - radius, + center.x + radius, center.y + radius)) + .TakePath(); + DrawPath(circle_path, paint); + return; + } + Size half_size(radius, radius); if (AttemptDrawBlurredRRect( Rect::MakeOriginSize(center - half_size, half_size * 2), radius, paint)) { return; } - auto circle_path = - PathBuilder{} - .AddCircle(center, radius) - .SetConvexity(Convexity::kConvex) - .SetBounds(Rect::MakeLTRB(center.x - radius, center.y - radius, - center.x + radius, center.y + radius)) - .TakePath(); - DrawPath(circle_path, paint); + + Entity entity; + entity.SetTransform(GetCurrentTransform()); + entity.SetClipDepth(GetClipDepth()); + entity.SetBlendMode(paint.blend_mode); + entity.SetContents(paint.WithFilters( + paint.CreateContentsForGeometry(Geometry::MakeCircle(center, radius)))); + + GetCurrentPass().AddEntity(entity); } void Canvas::ClipPath(const Path& path, Entity::ClipOperation clip_op) { diff --git a/impeller/entity/BUILD.gn b/impeller/entity/BUILD.gn index d5841d47fd120..24bc4670e94da 100644 --- a/impeller/entity/BUILD.gn +++ b/impeller/entity/BUILD.gn @@ -193,6 +193,8 @@ impeller_component("entity") { "entity_pass_target.h", "geometry/cover_geometry.cc", "geometry/cover_geometry.h", + "geometry/ellipse_geometry.cc", + "geometry/ellipse_geometry.h", "geometry/fill_path_geometry.cc", "geometry/fill_path_geometry.h", "geometry/geometry.cc", diff --git a/impeller/entity/geometry/ellipse_geometry.cc b/impeller/entity/geometry/ellipse_geometry.cc new file mode 100644 index 0000000000000..c0c42f1e8fdc4 --- /dev/null +++ b/impeller/entity/geometry/ellipse_geometry.cc @@ -0,0 +1,130 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "impeller/entity/geometry/ellipse_geometry.h" + +#include "flutter/impeller/tessellator/circle_tessellator.h" + +namespace impeller { + +EllipseGeometry::EllipseGeometry(Point center, Scalar radius) + : center_(center), radius_(radius) { + FML_DCHECK(radius >= 0); +} + +GeometryResult EllipseGeometry::GetPositionBuffer( + const ContentContext& renderer, + const Entity& entity, + RenderPass& pass) const { + auto& host_buffer = pass.GetTransientsBuffer(); + using VT = SolidFillVertexShader::PerVertexData; + + Scalar radius = radius_; + const Point& center = center_; + std::shared_ptr tessellator = renderer.GetTessellator(); + CircleTessellator circle_tessellator(tessellator, entity.GetTransform(), + radius_); + size_t count = circle_tessellator.GetCircleVertexCount(); + auto vertex_buffer = host_buffer.Emplace( + count * sizeof(VT), alignof(VT), + [&circle_tessellator, ¢er, radius](uint8_t* buffer) { + auto vertices = reinterpret_cast(buffer); + circle_tessellator.GenerateCircleTriangleStrip( + [&vertices](const Point& p) { // + *vertices++ = { + .position = p, + }; + }, + center, radius); + }); + + return GeometryResult{ + .type = PrimitiveType::kTriangleStrip, + .vertex_buffer = + { + .vertex_buffer = vertex_buffer, + .vertex_count = count, + .index_type = IndexType::kNone, + }, + .transform = Matrix::MakeOrthographic(pass.GetRenderTargetSize()) * + entity.GetTransform(), + .prevent_overdraw = false, + }; +} + +// |Geometry| +GeometryResult EllipseGeometry::GetPositionUVBuffer( + Rect texture_coverage, + Matrix effect_transform, + const ContentContext& renderer, + const Entity& entity, + RenderPass& pass) const { + auto& host_buffer = pass.GetTransientsBuffer(); + using VT = TextureFillVertexShader::PerVertexData; + auto uv_transform = + texture_coverage.GetNormalizingTransform() * effect_transform; + + Scalar radius = radius_; + const Point& center = center_; + std::shared_ptr tessellator = renderer.GetTessellator(); + CircleTessellator circle_tessellator(tessellator, entity.GetTransform(), + radius_); + size_t count = circle_tessellator.GetCircleVertexCount(); + auto vertex_buffer = host_buffer.Emplace( + count * sizeof(VT), alignof(VT), + [&circle_tessellator, &uv_transform, ¢er, radius](uint8_t* buffer) { + auto vertices = reinterpret_cast(buffer); + circle_tessellator.GenerateCircleTriangleStrip( + [&vertices, &uv_transform](const Point& p) { // + *vertices++ = { + .position = p, + .texture_coords = uv_transform * p, + }; + }, + center, radius); + }); + + return GeometryResult{ + .type = PrimitiveType::kTriangleStrip, + .vertex_buffer = + { + .vertex_buffer = vertex_buffer, + .vertex_count = count, + .index_type = IndexType::kNone, + }, + .transform = Matrix::MakeOrthographic(pass.GetRenderTargetSize()) * + entity.GetTransform(), + .prevent_overdraw = false, + }; +} + +GeometryVertexType EllipseGeometry::GetVertexType() const { + return GeometryVertexType::kPosition; +} + +std::optional EllipseGeometry::GetCoverage( + const Matrix& transform) const { + Point corners[4]{ + {center_.x, center_.y - radius_}, + {center_.x + radius_, center_.y}, + {center_.x, center_.y + radius_}, + {center_.x - radius_, center_.y}, + }; + + for (int i = 0; i < 4; i++) { + corners[i] = transform * corners[i]; + } + return Rect::MakePointBounds(std::begin(corners), std::end(corners)); +} + +bool EllipseGeometry::CoversArea(const Matrix& transform, + const Rect& rect) const { + return false; +} + +bool EllipseGeometry::IsAxisAlignedRect() const { + return false; +} + +} // namespace impeller diff --git a/impeller/entity/geometry/ellipse_geometry.h b/impeller/entity/geometry/ellipse_geometry.h new file mode 100644 index 0000000000000..ecc56331b70ae --- /dev/null +++ b/impeller/entity/geometry/ellipse_geometry.h @@ -0,0 +1,68 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#pragma once + +#include "impeller/entity/geometry/geometry.h" + +namespace impeller { + +class EllipseGeometry final : public Geometry { + public: + explicit EllipseGeometry(Point center, Scalar radius); + + ~EllipseGeometry() = default; + + // |Geometry| + bool CoversArea(const Matrix& transform, const Rect& rect) const override; + + // |Geometry| + bool IsAxisAlignedRect() const override; + + private: + // Computes the 4 corners of a rectangle that defines the line and + // possibly extended endpoints which will be rendered under the given + // transform, and returns true if such a rectangle is defined. + // + // The coordinates will be generated in the original coordinate system + // of the line end points and the transform will only be used to determine + // the minimum line width. + // + // For kButt and kSquare end caps the ends should always be exteded as + // per that decoration, but for kRound caps the ends might be extended + // if the goal is to get a conservative bounds and might not be extended + // if the calling code is planning to draw the round caps on the ends. + // + // @return true if the transform and width were not degenerate + bool ComputeCorners(Point corners[4], + const Matrix& transform, + bool extend_endpoints) const; + + // |Geometry| + GeometryResult GetPositionBuffer(const ContentContext& renderer, + const Entity& entity, + RenderPass& pass) const override; + + // |Geometry| + GeometryVertexType GetVertexType() const override; + + // |Geometry| + std::optional GetCoverage(const Matrix& transform) const override; + + // |Geometry| + GeometryResult GetPositionUVBuffer(Rect texture_coverage, + Matrix effect_transform, + const ContentContext& renderer, + const Entity& entity, + RenderPass& pass) const override; + + Point center_; + Scalar radius_; + + EllipseGeometry(const EllipseGeometry&) = delete; + + EllipseGeometry& operator=(const EllipseGeometry&) = delete; +}; + +} // namespace impeller diff --git a/impeller/entity/geometry/geometry.cc b/impeller/entity/geometry/geometry.cc index 9f787b651e481..4b1a32a6e3fe1 100644 --- a/impeller/entity/geometry/geometry.cc +++ b/impeller/entity/geometry/geometry.cc @@ -8,6 +8,7 @@ #include #include "impeller/entity/geometry/cover_geometry.h" +#include "impeller/entity/geometry/ellipse_geometry.h" #include "impeller/entity/geometry/fill_path_geometry.h" #include "impeller/entity/geometry/line_geometry.h" #include "impeller/entity/geometry/point_field_geometry.h" @@ -118,6 +119,10 @@ std::shared_ptr Geometry::MakeLine(Point p0, return std::make_shared(p0, p1, width, cap); } +std::shared_ptr Geometry::MakeCircle(Point center, Scalar radius) { + return std::make_shared(center, radius); +} + bool Geometry::CoversArea(const Matrix& transform, const Rect& rect) const { return false; } diff --git a/impeller/entity/geometry/geometry.h b/impeller/entity/geometry/geometry.h index 307ce315d1af7..2d1dac945e28e 100644 --- a/impeller/entity/geometry/geometry.h +++ b/impeller/entity/geometry/geometry.h @@ -68,6 +68,8 @@ class Geometry { Scalar width, Cap cap); + static std::shared_ptr MakeCircle(Point center, Scalar radius); + static std::shared_ptr MakePointField(std::vector points, Scalar radius, bool round); diff --git a/impeller/entity/geometry/line_geometry.cc b/impeller/entity/geometry/line_geometry.cc index 6682e56af17a4..2d2dd8317d783 100644 --- a/impeller/entity/geometry/line_geometry.cc +++ b/impeller/entity/geometry/line_geometry.cc @@ -4,40 +4,54 @@ #include "impeller/entity/geometry/line_geometry.h" +#include "flutter/impeller/tessellator/circle_tessellator.h" + namespace impeller { LineGeometry::LineGeometry(Point p0, Point p1, Scalar width, Cap cap) : p0_(p0), p1_(p1), width_(width), cap_(cap) { - // Some of the code below is prepared to deal with things like coverage - // of a line with round caps, but more work is needed to deal with drawing - // the round end caps FML_DCHECK(width >= 0); - FML_DCHECK(cap != Cap::kRound); } -bool LineGeometry::ComputeCorners(Point corners[4], - const Matrix& transform, - bool extend_endpoints) const { +Scalar LineGeometry::ComputeHalfWidth(const Matrix& transform) const { auto determinant = transform.GetDeterminant(); if (determinant == 0) { - return false; + return 0.0f; } Scalar min_size = 1.0f / sqrt(std::abs(determinant)); - Scalar stroke_half_width = std::max(width_, min_size) * 0.5f; + return std::max(width_, min_size) * 0.5f; +} + +Vector2 LineGeometry::ComputeAlongVector(const Matrix& transform, + bool allow_zero_length) const { + Scalar stroke_half_width = ComputeHalfWidth(transform); + if (stroke_half_width < kEhCloseEnough) { + return {}; + } - Point along = p1_ - p0_; + auto along = p1_ - p0_; Scalar length = along.GetLength(); if (length < kEhCloseEnough) { - if (!extend_endpoints) { + if (!allow_zero_length) { // We won't enclose any pixels unless the endpoints are extended - return false; + return {}; } - along = {stroke_half_width, 0}; + return {stroke_half_width, 0}; } else { - along *= stroke_half_width / length; + return along * stroke_half_width / length; + } +} + +bool LineGeometry::ComputeCorners(Point corners[4], + const Matrix& transform, + bool extend_endpoints) const { + auto along = ComputeAlongVector(transform, extend_endpoints); + if (along.IsZero()) { + return false; } - Point across = {along.y, -along.x}; + + auto across = Vector2(along.y, -along.x); corners[0] = p0_ - across; corners[1] = p1_ - across; corners[2] = p0_ + across; @@ -55,19 +69,57 @@ GeometryResult LineGeometry::GetPositionBuffer(const ContentContext& renderer, const Entity& entity, RenderPass& pass) const { auto& host_buffer = pass.GetTransientsBuffer(); - - Point corners[4]; - if (!ComputeCorners(corners, entity.GetTransform(), cap_ == Cap::kSquare)) { - return {}; + using VT = SolidFillVertexShader::PerVertexData; + + auto& transform = entity.GetTransform(); + auto radius = ComputeHalfWidth(transform); + + size_t count; + BufferView vertex_buffer; + if (cap_ == Cap::kRound) { + const Point& p0 = p0_; + const Point& p1 = p1_; + + std::shared_ptr tessellator = renderer.GetTessellator(); + CircleTessellator circle_tessellator(tessellator, entity.GetTransform(), + radius); + count = circle_tessellator.GetCircleVertexCount(); + vertex_buffer = host_buffer.Emplace( + count * sizeof(VT), alignof(VT), + [&circle_tessellator, &p0, &p1, radius](uint8_t* buffer) { + auto vertices = reinterpret_cast(buffer); + circle_tessellator.GenerateRoundCapLineTriangleStrip( + [&vertices](const Point& p) { // + *vertices++ = { + .position = p, + }; + }, + p0, p1, radius); + }); + } else { + Point corners[4]; + if (ComputeCorners(corners, transform, cap_ == Cap::kSquare)) { + count = 4; + vertex_buffer = host_buffer.Emplace( + count * sizeof(VT), alignof(VT), [&corners](uint8_t* buffer) { + auto vertices = reinterpret_cast(buffer); + for (auto& corner : corners) { + *vertices++ = { + .position = corner, + }; + } + }); + } else { + return {}; + } } return GeometryResult{ .type = PrimitiveType::kTriangleStrip, .vertex_buffer = { - .vertex_buffer = host_buffer.Emplace(corners, 8 * sizeof(float), - alignof(float)), - .vertex_count = 4, + .vertex_buffer = vertex_buffer, + .vertex_count = count, .index_type = IndexType::kNone, }, .transform = Matrix::MakeOrthographic(pass.GetRenderTargetSize()) * @@ -83,27 +135,64 @@ GeometryResult LineGeometry::GetPositionUVBuffer(Rect texture_coverage, const Entity& entity, RenderPass& pass) const { auto& host_buffer = pass.GetTransientsBuffer(); + using VT = TextureFillVertexShader::PerVertexData; + + auto& transform = entity.GetTransform(); + auto radius = ComputeHalfWidth(transform); auto uv_transform = texture_coverage.GetNormalizingTransform() * effect_transform; - Point corners[4]; - if (!ComputeCorners(corners, entity.GetTransform(), cap_ == Cap::kSquare)) { - return {}; - } - std::vector data(8); - for (auto i = 0u, j = 0u; i < 8; i += 2, j++) { - data[i] = corners[j]; - data[i + 1] = uv_transform * corners[j]; + size_t count; + BufferView vertex_buffer; + if (cap_ == Cap::kRound) { + const Point& p0 = p0_; + const Point& p1 = p1_; + + std::shared_ptr tessellator = renderer.GetTessellator(); + CircleTessellator circle_tessellator(tessellator, entity.GetTransform(), + radius); + count = circle_tessellator.GetCircleVertexCount(); + vertex_buffer = host_buffer.Emplace( + count * sizeof(VT), alignof(VT), + [&circle_tessellator, &uv_transform, &p0, &p1, + radius](uint8_t* buffer) { + auto vertices = reinterpret_cast(buffer); + circle_tessellator.GenerateRoundCapLineTriangleStrip( + [&vertices, &uv_transform](const Point& p) { // + *vertices++ = { + .position = p, + .texture_coords = uv_transform * p, + }; + }, + p0, p1, radius); + }); + } else { + Point corners[4]; + if (ComputeCorners(corners, transform, cap_ == Cap::kSquare)) { + count = 4; + vertex_buffer = + host_buffer.Emplace(count * sizeof(VT), alignof(VT), + [&uv_transform, &corners](uint8_t* buffer) { + auto vertices = reinterpret_cast(buffer); + for (auto& corner : corners) { + *vertices++ = { + .position = corner, + .texture_coords = uv_transform * corner, + }; + } + }); + } else { + return {}; + } } return GeometryResult{ .type = PrimitiveType::kTriangleStrip, .vertex_buffer = { - .vertex_buffer = host_buffer.Emplace( - data.data(), 16 * sizeof(float), alignof(float)), - .vertex_count = 4, + .vertex_buffer = vertex_buffer, + .vertex_count = count, .index_type = IndexType::kNone, }, .transform = Matrix::MakeOrthographic(pass.GetRenderTargetSize()) * @@ -137,7 +226,7 @@ bool LineGeometry::CoversArea(const Matrix& transform, const Rect& rect) const { } bool LineGeometry::IsAxisAlignedRect() const { - return p0_.x == p1_.x || p0_.y == p1_.y; + return cap_ != Cap::kRound && (p0_.x == p1_.x || p0_.y == p1_.y); } } // namespace impeller diff --git a/impeller/entity/geometry/line_geometry.h b/impeller/entity/geometry/line_geometry.h index fe37de6a62f56..272702d91a42a 100644 --- a/impeller/entity/geometry/line_geometry.h +++ b/impeller/entity/geometry/line_geometry.h @@ -40,6 +40,11 @@ class LineGeometry final : public Geometry { const Matrix& transform, bool extend_endpoints) const; + Vector2 ComputeAlongVector(const Matrix& transform, + bool allow_zero_length) const; + + Scalar ComputeHalfWidth(const Matrix& transform) const; + // |Geometry| GeometryResult GetPositionBuffer(const ContentContext& renderer, const Entity& entity, diff --git a/impeller/entity/geometry/point_field_geometry.cc b/impeller/entity/geometry/point_field_geometry.cc index c1f08c501e2dc..dfc97059dac20 100644 --- a/impeller/entity/geometry/point_field_geometry.cc +++ b/impeller/entity/geometry/point_field_geometry.cc @@ -4,6 +4,7 @@ #include "impeller/entity/geometry/point_field_geometry.h" +#include "flutter/impeller/tessellator/circle_tessellator.h" #include "impeller/renderer/command_buffer.h" #include "impeller/renderer/compute_command.h" @@ -28,7 +29,7 @@ GeometryResult PointFieldGeometry::GetPositionBuffer( auto& host_buffer = pass.GetTransientsBuffer(); return { - .type = PrimitiveType::kTriangle, + .type = PrimitiveType::kTriangleStrip, .vertex_buffer = vtx_builder->CreateVertexBuffer(host_buffer), .transform = Matrix::MakeOrthographic(pass.GetRenderTargetSize()) * entity.GetTransform(), @@ -56,7 +57,7 @@ GeometryResult PointFieldGeometry::GetPositionUVBuffer( auto& host_buffer = pass.GetTransientsBuffer(); return { - .type = PrimitiveType::kTriangle, + .type = PrimitiveType::kTriangleStrip, .vertex_buffer = uv_vtx_builder.CreateVertexBuffer(host_buffer), .transform = Matrix::MakeOrthographic(pass.GetRenderTargetSize()) * entity.GetTransform(), @@ -79,44 +80,54 @@ PointFieldGeometry::GetPositionBufferCPU(const ContentContext& renderer, Scalar min_size = 1.0f / sqrt(std::abs(determinant)); Scalar radius = std::max(radius_, min_size); - auto vertices_per_geom = ComputeCircleDivisions( - entity.GetTransform().GetMaxBasisLength() * radius, round_); - auto points_per_circle = 3 + (vertices_per_geom - 3) * 3; - auto total = points_per_circle * points_.size(); - auto radian_start = round_ ? 0.0f : 0.785398f; - auto radian_step = k2Pi / vertices_per_geom; - VertexBufferBuilder vtx_builder; - vtx_builder.Reserve(total); - - /// Precompute all relative points and angles for a fixed geometry size. - auto elapsed_angle = radian_start; - std::vector angle_table(vertices_per_geom); - for (auto i = 0u; i < vertices_per_geom; i++) { - angle_table[i] = Point(cos(elapsed_angle), sin(elapsed_angle)) * radius; - elapsed_angle += radian_step; - } - for (auto i = 0u; i < points_.size(); i++) { - auto center = points_[i]; - - auto origin = center + angle_table[0]; - vtx_builder.AppendVertex({origin}); - - auto pt1 = center + angle_table[1]; - vtx_builder.AppendVertex({pt1}); - - auto pt2 = center + angle_table[2]; - vtx_builder.AppendVertex({pt2}); - - for (auto j = 0u; j < vertices_per_geom - 3; j++) { - vtx_builder.AppendVertex({origin}); - vtx_builder.AppendVertex({pt2}); - - pt2 = center + angle_table[j + 3]; - vtx_builder.AppendVertex({pt2}); + if (round_) { + std::shared_ptr tessellator = renderer.GetTessellator(); + CircleTessellator circle_tessellator(tessellator, entity.GetTransform(), + radius_); + + // Get triangulation relative to {0, 0} so we can translate it to each + // point in turn. + std::vector circle_vertices; + circle_vertices.reserve(circle_tessellator.GetCircleVertexCount()); + circle_tessellator.GenerateCircleTriangleStrip( + [&circle_vertices](const Point& p) { // + circle_vertices.push_back(p); + }, + {}, radius); + FML_DCHECK(circle_vertices.size() == + circle_tessellator.GetCircleVertexCount()); + + vtx_builder.Reserve((circle_vertices.size() + 2) * points_.size() - 2); + for (auto& center : points_) { + if (vtx_builder.HasVertices()) { + vtx_builder.AppendVertex(vtx_builder.Last()); + vtx_builder.AppendVertex({center + circle_vertices[0]}); + } + + for (auto& vertex : circle_vertices) { + vtx_builder.AppendVertex({center + vertex}); + } + } + } else { + vtx_builder.Reserve(6 * points_.size() - 2); + for (auto& point : points_) { + auto first = Point(point.x - radius, point.y - radius); + + if (vtx_builder.HasVertices()) { + vtx_builder.AppendVertex(vtx_builder.Last()); + vtx_builder.AppendVertex({first}); + } + + // Z pattern from UL -> UR -> LL -> LR + vtx_builder.AppendVertex({first}); + vtx_builder.AppendVertex({{point.x + radius, point.y - radius}}); + vtx_builder.AppendVertex({{point.x - radius, point.y + radius}}); + vtx_builder.AppendVertex({{point.x + radius, point.y + radius}}); } } + return vtx_builder; } diff --git a/impeller/geometry/BUILD.gn b/impeller/geometry/BUILD.gn index 72b8a01160153..ce6fe023c999d 100644 --- a/impeller/geometry/BUILD.gn +++ b/impeller/geometry/BUILD.gn @@ -36,6 +36,8 @@ impeller_component("geometry") { "sigma.h", "size.cc", "size.h", + "trig.cc", + "trig.h", "type_traits.cc", "type_traits.h", "vector.cc", @@ -65,6 +67,7 @@ impeller_component("geometry_unittests") { "path_unittests.cc", "rect_unittests.cc", "size_unittests.cc", + "trig_unittests.cc", ] deps = [ diff --git a/impeller/geometry/trig.cc b/impeller/geometry/trig.cc new file mode 100644 index 0000000000000..c613a7b5c9620 --- /dev/null +++ b/impeller/geometry/trig.cc @@ -0,0 +1,11 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "trig.h" + +namespace impeller { + +// + +} // namespace impeller diff --git a/impeller/geometry/trig.h b/impeller/geometry/trig.h new file mode 100644 index 0000000000000..eddf6552f5ed3 --- /dev/null +++ b/impeller/geometry/trig.h @@ -0,0 +1,32 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#pragma once + +#include +#include + +#include "flutter/impeller/geometry/point.h" + +namespace impeller { + +/// @brief A structure to store the sine and cosine of an angle. +struct Trig { + /// Construct a Trig object from a given angle in radians. + explicit Trig(Radians r) + : cos(std::cos(r.radians)), sin(std::sin(r.radians)) {} + + /// Construct a Trig object from the given cosine and sine values. + Trig(double cos, double sin) : cos(cos), sin(sin) {} + + double cos; + double sin; + + Vector2 operator*(double radius) const { + return Vector2(static_cast(cos * radius), + static_cast(sin * radius)); + } +}; + +} // namespace impeller diff --git a/impeller/geometry/trig_unittests.cc b/impeller/geometry/trig_unittests.cc new file mode 100644 index 0000000000000..dcdc6b6da2934 --- /dev/null +++ b/impeller/geometry/trig_unittests.cc @@ -0,0 +1,64 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "fml/logging.h" +#include "gtest/gtest.h" + +#include "flutter/impeller/geometry/trig.h" + +namespace impeller { +namespace testing { + +TEST(TrigTest, TrigAngles) { + { + Trig trig(Degrees(0.0)); + EXPECT_EQ(trig.cos, 1.0); + EXPECT_EQ(trig.sin, 0.0); + } + + { + Trig trig(Radians(0.0)); + EXPECT_EQ(trig.cos, 1.0); + EXPECT_EQ(trig.sin, 0.0); + } + + { + Trig trig(Degrees(30.0)); + EXPECT_NEAR(trig.cos, sqrt(0.75), kEhCloseEnough); + EXPECT_NEAR(trig.sin, 0.5, kEhCloseEnough); + } + + { + Trig trig(Radians(kPi / 6.0)); + EXPECT_NEAR(trig.cos, sqrt(0.75), kEhCloseEnough); + EXPECT_NEAR(trig.sin, 0.5, kEhCloseEnough); + } + + { + Trig trig(Degrees(60.0)); + EXPECT_NEAR(trig.cos, 0.5, kEhCloseEnough); + EXPECT_NEAR(trig.sin, sqrt(0.75), kEhCloseEnough); + } + + { + Trig trig(Radians(kPi / 3.0)); + EXPECT_NEAR(trig.cos, 0.5, kEhCloseEnough); + EXPECT_NEAR(trig.sin, sqrt(0.75), kEhCloseEnough); + } + + { + Trig trig(Degrees(90.0)); + EXPECT_NEAR(trig.cos, 0.0, kEhCloseEnough); + EXPECT_NEAR(trig.sin, 1.0, kEhCloseEnough); + } + + { + Trig trig(Radians(kPi / 2.0)); + EXPECT_NEAR(trig.cos, 0.0, kEhCloseEnough); + EXPECT_NEAR(trig.sin, 1.0, kEhCloseEnough); + } +} + +} // namespace testing +} // namespace impeller diff --git a/impeller/renderer/vertex_buffer_builder.h b/impeller/renderer/vertex_buffer_builder.h index b70e8a700389a..2f92e24c96eec 100644 --- a/impeller/renderer/vertex_buffer_builder.h +++ b/impeller/renderer/vertex_buffer_builder.h @@ -56,6 +56,11 @@ class VertexBufferBuilder { return indices_.size() > 0 ? indices_.size() : vertices_.size(); } + const VertexType& Last() const { + FML_DCHECK(!vertices_.empty()); + return vertices_.back(); + } + VertexBufferBuilder& AppendVertex(VertexType_ vertex) { vertices_.emplace_back(std::move(vertex)); return *this; diff --git a/impeller/tessellator/BUILD.gn b/impeller/tessellator/BUILD.gn index d3915f9996679..d49c2459492c5 100644 --- a/impeller/tessellator/BUILD.gn +++ b/impeller/tessellator/BUILD.gn @@ -6,13 +6,18 @@ import("//flutter/impeller/tools/impeller.gni") impeller_component("tessellator") { sources = [ + "circle_tessellator.cc", + "circle_tessellator.h", "tessellator.cc", "tessellator.h", ] public_deps = [ "../geometry" ] - deps = [ "//third_party/libtess2" ] + deps = [ + "//flutter/fml", + "//third_party/libtess2", + ] } impeller_component("tessellator_shared") { @@ -26,12 +31,15 @@ impeller_component("tessellator_shared") { sources = [ "c/tessellator.cc", "c/tessellator.h", + "circle_tessellator.cc", + "circle_tessellator.h", "tessellator.cc", "tessellator.h", ] deps = [ "../geometry", + "//flutter/fml", "//third_party/libtess2", ] @@ -42,9 +50,13 @@ impeller_component("tessellator_shared") { impeller_component("tessellator_unittests") { testonly = true - sources = [ "tessellator_unittests.cc" ] + sources = [ + "circle_tessellator_unittests.cc", + "tessellator_unittests.cc", + ] deps = [ ":tessellator", + "../geometry:geometry_asserts", "//flutter/testing", ] } diff --git a/impeller/tessellator/circle_tessellator.cc b/impeller/tessellator/circle_tessellator.cc new file mode 100644 index 0000000000000..35f0f924db38c --- /dev/null +++ b/impeller/tessellator/circle_tessellator.cc @@ -0,0 +1,211 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "flutter/impeller/tessellator/circle_tessellator.h" + +#include "flutter/fml/logging.h" + +namespace impeller { + +int CircleTessellator::kPrecomputedDivisions[kPrecomputedDivisionCount] = { + // clang-format off + 1, 2, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7, + 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, + 10, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 13, + 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, + // clang-format on +}; + +size_t CircleTessellator::ComputeQuadrantDivisions(Scalar pixel_radius) { + if (pixel_radius <= 0.0) { + return 1; + } + int radius_index = ceil(pixel_radius); + if (radius_index < kPrecomputedDivisionCount) { + return kPrecomputedDivisions[radius_index]; + } + + // For a circle with N divisions per quadrant, the maximum deviation of + // the polgyon approximation from the true circle will be at the center + // of the base of each triangular pie slice. We can compute that distance + // by finding the midpoint of the line of the first slice and compare + // its distance from the center of the circle to the radius. We will aim + // to have the length of that bisector to be within |kCircleTolerance| + // from the radius in pixels. + // + // Each vertex will appear at an angle of: + // theta(i) = (kPi / 2) * (i / N) // for i in [0..N] + // with each point falling at: + // point(i) = r * (cos(theta), sin(theta)) + // If we consider the unit circle to simplify the calculations below then + // we need to scale the tolerance from its absolute quantity into a unit + // circle fraction: + // k = tolerance / radius + // Using this scaled tolerance below to avoid multiplying by the radius + // throughout all of the math, we have: + // first point = (1, 0) // theta(0) == 0 + // theta = kPi / 2 / N // theta(1) + // second point = (cos(theta), sin(theta)) = (c, s) + // midpoint = (first + second) * 0.5 = ((1 + c)/2, s/2) + // |midpoint| = sqrt((1 + c)*(1 + c)/4 + s*s/4) + // = sqrt((1 + c + c + c*c + s*s) / 4) + // = sqrt((1 + 2c + 1) / 4) + // = sqrt((2 + 2c) / 4) + // = sqrt((1 + c) / 2) + // = cos(theta / 2) // using half-angle cosine formula + // error = 1 - |midpoint| = 1 - cos(theta / 2) + // cos(theta/2) = 1 - error + // theta/2 = acos(1 - error) + // kPi / 2 / N / 2 = acos(1 - error) + // kPi / 4 / acos(1 - error) = N + // Since we need error <= k, we want divisions >= N, so we use: + // N = ceil(kPi / 4 / acos(1 - k)) + // + // Math is confirmed in https://math.stackexchange.com/a/4132095 + // (keeping in mind that we are computing quarter circle divisions here) + // which also points out a performance optimization that is accurate + // to within an over-estimation of 1 division would be: + // N = ceil(kPi / 4 / sqrt(2 * k)) + // Since we have precomputed the divisions for radii up to 1024, we can + // afford to be more accurate using the acos formula here for larger radii. + double k = kCircleTolerance / pixel_radius; + return ceil(kPiOver4 / std::acos(1 - k)); +} + +const std::vector& CircleTessellator::GetTrigsForDivisions( + std::shared_ptr& tessellator, + size_t divisions) { + std::vector& trigs = (divisions < Tessellator::kCachedTrigCount) + ? tessellator->precomputed_trigs_[divisions] + : temp_trigs_; + + if (trigs.empty()) { + // Either not cached yet, or we are usig the temp vector... + trigs.reserve(divisions + 1); + + double angle_scale = kPiOver2 / divisions; + + trigs.emplace_back(1.0, 0.0); + for (size_t i = 1; i < divisions; i++) { + trigs.emplace_back(Radians(i * angle_scale)); + } + trigs.emplace_back(0.0, 1.0); + + FML_DCHECK(trigs.size() == divisions + 1); + } + + return trigs; +} + +void CircleTessellator::GenerateCircleTriangleStrip( + const TessellatedPointProc& proc, + const Point& center, + Scalar radius) const { + for (auto& trig : trigs_) { + auto offset = trig * radius; + proc({center.x - offset.x, center.y + offset.y}); + proc({center.x - offset.x, center.y - offset.y}); + } + // The second half of the circle should be iterated in reverse, but + // we can instead iterate forward and swap the x/y values of the + // offset as the angles should be symmetric and thus should generate + // symmetrically reversed offset vectors. + for (auto& trig : trigs_) { + auto offset = trig * radius; + proc({center.x + offset.y, center.y + offset.x}); + proc({center.x + offset.y, center.y - offset.x}); + } +} + +void CircleTessellator::GenerateRoundCapLineTriangleStrip( + const TessellatedPointProc& proc, + const Point& p0, + const Point& p1, + Scalar radius) const { + auto along = p1 - p0; + auto length = along.GetLength(); + if (length < kEhCloseEnough) { + return GenerateCircleTriangleStrip(proc, p0, radius); + } + along *= radius / length; + auto across = Point(-along.y, along.x); + + for (auto& trig : trigs_) { + auto relative_across = across * trig.cos; + auto relative_along = along * trig.sin; + proc({p0 + relative_across - relative_along}); + proc({p1 + relative_across + relative_along}); + } + // The second half of the round caps should be iterated in reverse, but + // we can instead iterate forward and swap the sin/cos values as they + // should be symmetric. + for (auto& trig : trigs_) { + auto relative_across = across * trig.sin; + auto relative_along = along * trig.cos; + proc({p0 - relative_across - relative_along}); + proc({p1 - relative_across + relative_along}); + } +} + +} // namespace impeller diff --git a/impeller/tessellator/circle_tessellator.h b/impeller/tessellator/circle_tessellator.h new file mode 100644 index 0000000000000..74624eb78a8c1 --- /dev/null +++ b/impeller/tessellator/circle_tessellator.h @@ -0,0 +1,132 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#pragma once + +#include +#include + +#include "flutter/impeller/geometry/matrix.h" +#include "flutter/impeller/geometry/point.h" +#include "flutter/impeller/geometry/scalar.h" +#include "flutter/impeller/geometry/trig.h" +#include "flutter/impeller/tessellator/tessellator.h" + +namespace impeller { + +using TessellatedPointProc = std::function; + +/// @brief A utility class to compute the number of divisions for a circle +/// given a transform-adjusted pixel radius and methods for generating +/// a tessellated set of triangles for a quarter or full circle. +/// +/// The constructor will compute the device pixel radius size for +/// the specified geometry-space |radius| when viewed under +/// a specified geometry-to-device |transform|. +/// +/// The object should be constructed with the expected transform and +/// radius of the circle, but can then be used to generate a triangular +/// tessellation with the computed number of divisions for any +/// radius after that. Since the coordinate space in which the +/// circle being tessellated is not necessarily device pixel space, +/// the radius supplied during tessellation might not match the +/// pixel radius computed during construction, but the two values +/// should be related by the transform in place when the tessellated +/// triangles are rendered for maximum tessellation fidelity. +class CircleTessellator { + public: + /// @brief The pixel tolerance used by the algorighm to determine how + /// many divisions to create for a circle. + /// + /// No point on the polygon of vertices should deviate from the + /// true circle by more than this tolerance. + static constexpr Scalar kCircleTolerance = 0.1; + + /// @brief Constructs a CircleTessellator that produces enough segments + /// to reasonably approximate a circle with a specified |radius| + /// when viewed under the specified |transform|. + CircleTessellator(std::shared_ptr& tessellator, + const Matrix& transform, + Scalar radius) + : CircleTessellator(tessellator, transform.GetMaxBasisLength() * radius) { + } + + ~CircleTessellator() = default; + + /// @brief Return the number of divisions computed by the algorithm for + /// a single quarter circle. + size_t GetQuadrantDivisionCount() const { return trigs_.size() - 1; } + + /// @brief Return the number of vertices that will be generated to + /// tessellate a full circle with a triangle strip. + /// + /// This value can be used to pre-allocate space in a vector + /// to hold the vertices that will be produced by the + /// |GenerateCircleTriangleStrip| and + /// |GenerateRoundCapLineTriangleStrip| methods. + size_t GetCircleVertexCount() const { return trigs_.size() * 4; } + + /// @brief Generate the vertices for a triangle strip that covers the + /// circle at a given |radius| from a given |center|, delivering + /// the computed coordinates to the supplied |proc|. + /// + /// This procedure will generate no more than the number of + /// vertices returned by |GetCircleVertexCount| in an order + /// appropriate for rendering as a triangle strip. + void GenerateCircleTriangleStrip(const TessellatedPointProc& proc, + const Point& center, + Scalar radius) const; + + /// @brief Generate the vertices for a triangle strip that covers the + /// line from |p0| to |p1| with round caps of the specified + /// |radius|, delivering the computed coordinates to the supplied + /// |proc|. + /// + /// This procedure will generate no more than the number of + /// vertices returned by |GetCircleVertexCount| in an order + /// appropriate for rendering as a triangle strip. + void GenerateRoundCapLineTriangleStrip(const TessellatedPointProc& proc, + const Point& p0, + const Point& p1, + Scalar radius) const; + + private: + const std::vector& trigs_; + std::vector temp_trigs_; + + /// @brief Constructs a CircleTessellator that produces enough segments + /// to reasonably approximate a circle with a specified radius + /// in pixels. + explicit CircleTessellator(std::shared_ptr& tessellator, + Scalar pixel_radius) + : trigs_(GetTrigsForDivisions(tessellator, + ComputeQuadrantDivisions(pixel_radius))) {} + + CircleTessellator(const CircleTessellator&) = delete; + + CircleTessellator& operator=(const CircleTessellator&) = delete; + + /// @brief Compute the number of vertices to divide each quadrant of + /// the circle into based on the expected pixel space radius. + /// + /// @return the number of vertices. + static size_t ComputeQuadrantDivisions(Scalar pixel_radius); + + /// @brief Compute the sine and cosine for each angle in the number of + /// divisions [0, divisions] of a quarter circle and return the + /// values in a vector of trig objects. + /// + /// Note that since the 0th division is included, the vector will + /// contain (divisions + 1) values. + /// + /// @return The vector of (divisions + 1) trig values. + const std::vector& GetTrigsForDivisions( + std::shared_ptr& tessellator, + size_t divisions); + + static constexpr int kPrecomputedDivisionCount = 1024; + static int kPrecomputedDivisions[kPrecomputedDivisionCount]; +}; + +} // namespace impeller diff --git a/impeller/tessellator/circle_tessellator_unittests.cc b/impeller/tessellator/circle_tessellator_unittests.cc new file mode 100644 index 0000000000000..a84735f35b21d --- /dev/null +++ b/impeller/tessellator/circle_tessellator_unittests.cc @@ -0,0 +1,97 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "fml/logging.h" +#include "gtest/gtest.h" + +#include "flutter/impeller/geometry/geometry_asserts.h" +#include "flutter/impeller/tessellator/circle_tessellator.h" + +namespace impeller { +namespace testing { + +TEST(CircleTessellator, DivisionVertexCounts) { + auto tessellator = std::make_shared(); + + auto test = [&tessellator](const Matrix& transform, Scalar radius) { + CircleTessellator circle_tessellator(tessellator, transform, radius); + size_t quadrant_divisions = circle_tessellator.GetQuadrantDivisionCount(); + + EXPECT_EQ(circle_tessellator.GetCircleVertexCount(), + (quadrant_divisions + 1) * 4) + << "transform = " << transform << ", radius = " << radius; + + // Confirm the approximation error is within the currently accepted + // |kCircleTolerance| value advertised by |CircleTessellator|. + // (With an additional 1% tolerance for floating point rounding.) + double angle = kPiOver2 / quadrant_divisions; + Point first = {radius, 0}; + Point next = {static_cast(cos(angle) * radius), + static_cast(sin(angle) * radius)}; + Point midpoint = (first + next) * 0.5; + EXPECT_GE(midpoint.GetLength(), + radius - CircleTessellator::kCircleTolerance * 1.01) + << ", transform = " << transform << ", radius = " << radius + << ", divisions = " << quadrant_divisions; + }; + + test({}, 0.0); + test({}, 0.9); + test({}, 1.0); + test({}, 1.9); + test(Matrix::MakeScale(Vector2(2.0, 2.0)), 0.95); + test({}, 2.0); + test(Matrix::MakeScale(Vector2(2.0, 2.0)), 1.0); + test({}, 11.9); + test({}, 12.0); + test({}, 35.9); + for (int i = 36; i < 10000; i += 4) { + test({}, i); + } +} + +TEST(CircleTessellator, CircleTessellationVertices) { + auto tessellator = std::make_shared(); + + auto test = [&tessellator](Scalar pixel_radius, Point center, Scalar radius) { + CircleTessellator circle_tessellator(tessellator, {}, pixel_radius); + + auto vertex_count = circle_tessellator.GetCircleVertexCount(); + auto vertices = std::vector(); + circle_tessellator.GenerateCircleTriangleStrip( + [&vertices](const Point& p) { // + vertices.push_back(p); + }, + center, radius); + ASSERT_EQ(vertices.size(), vertex_count); + ASSERT_EQ(vertex_count % 4, 0u); + + auto quadrant_count = vertex_count / 4; + for (size_t i = 0; i < quadrant_count; i++) { + double angle = kPiOver2 * i / (quadrant_count - 1); + double rsin = sin(angle) * radius; + double rcos = cos(angle) * radius; + EXPECT_POINT_NEAR(vertices[i * 2], + Point(center.x - rcos, center.y + rsin)) + << "vertex " << i << ", angle = " << angle * 180.0 / kPi << std::endl; + EXPECT_POINT_NEAR(vertices[i * 2 + 1], + Point(center.x - rcos, center.y - rsin)) + << "vertex " << i << ", angle = " << angle * 180.0 / kPi << std::endl; + EXPECT_POINT_NEAR(vertices[vertex_count - i * 2 - 1], + Point(center.x + rcos, center.y - rsin)) + << "vertex " << i << ", angle = " << angle * 180.0 / kPi << std::endl; + EXPECT_POINT_NEAR(vertices[vertex_count - i * 2 - 2], + Point(center.x + rcos, center.y + rsin)) + << "vertex " << i << ", angle = " << angle * 180.0 / kPi << std::endl; + } + }; + + test(2.0, {}, 2.0); + test(2.0, {10, 10}, 2.0); + test(1000.0, {}, 2.0); + test(2.0, {}, 1000.0); +} + +} // namespace testing +} // namespace impeller diff --git a/impeller/tessellator/tessellator.h b/impeller/tessellator/tessellator.h index 282b47b4829ed..3f5b5d7ebb522 100644 --- a/impeller/tessellator/tessellator.h +++ b/impeller/tessellator/tessellator.h @@ -11,6 +11,7 @@ #include "flutter/fml/macros.h" #include "impeller/geometry/path.h" #include "impeller/geometry/point.h" +#include "impeller/geometry/trig.h" struct TESStesselator; @@ -89,6 +90,11 @@ class Tessellator { std::unique_ptr> point_buffer_; CTessellator c_tessellator_; + // Cached data for CircleTessellator + static constexpr size_t kCachedTrigCount = 300; + std::vector precomputed_trigs_[kCachedTrigCount]; + friend class CircleTessellator; + Tessellator(const Tessellator&) = delete; Tessellator& operator=(const Tessellator&) = delete; From d1b5d09a7319881dfcd5ee78cb7c41958ae7d3ea Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 30 Nov 2023 16:33:20 -0500 Subject: [PATCH 18/26] Roll Skia from 2d236de89898 to db3399a541f3 (3 revisions) (#48543) https://skia.googlesource.com/skia.git/+log/2d236de89898..db3399a541f3 2023-11-30 michaelludwig@google.com PredrawFlags and automaskfilter skipping (for text) 2023-11-30 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skottie-base from ba1e7f5c1e82 to e6b1b3f50cf0 2023-11-30 johnstiles@google.com Remove tail argument from SkRasterPipeline stages. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,jcgregorio@google.com,matanl@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index df3f7ebe41348..4aa488c3c64a7 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '2d236de8989841e56c0d4569b0be54239bb4b0d1', + 'skia_revision': 'db3399a541f3a9af1044d14d739914723d3a496f', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f2b9da2ed3cc2..a7481f374f712 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ec1def150c4d8318feb663eacc03909e +Signature: 9f0340fc6b4fc7122b87b6a6b966b3a7 ==================================================================================================== LIBRARY: etc1 From 56fa63cb9f5c3f48fe5baa2b6d9b89e701b42777 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= <737941+loic-sharma@users.noreply.github.com> Date: Thu, 30 Nov 2023 13:49:14 -0800 Subject: [PATCH 19/26] [Windows] Begin decoupling text input plugin from the view (#47833) Currently the text input plugin is strongly tied to a single view. This change makes the text input plugin tied to the engine in preparation for multi-view world. Part of https://github.com/flutter/flutter/issues/115611 [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style --- ci/licenses_golden/licenses_flutter | 2 - .../windows/cursor_handler_unittests.cc | 20 +- .../windows/flutter_windows_engine.cc | 2 +- shell/platform/windows/flutter_windows_view.h | 17 +- .../windows/platform_handler_unittests.cc | 46 ++--- shell/platform/windows/text_input_plugin.cc | 35 +++- shell/platform/windows/text_input_plugin.h | 32 +++- .../windows/text_input_plugin_delegate.h | 25 --- .../windows/text_input_plugin_unittest.cc | 179 ++++++++++++++---- .../windows/window_binding_handler_delegate.h | 11 +- 10 files changed, 248 insertions(+), 121 deletions(-) delete mode 100644 shell/platform/windows/text_input_plugin_delegate.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 5e94ca5d1e55c..049e1c372e03c 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -7166,7 +7166,6 @@ ORIGIN: ../../../flutter/shell/platform/windows/text_input_manager.cc + ../../.. ORIGIN: ../../../flutter/shell/platform/windows/text_input_manager.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/windows/text_input_plugin.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/windows/text_input_plugin.h + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/shell/platform/windows/text_input_plugin_delegate.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/windows/window_binding_handler.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/windows/window_binding_handler_delegate.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/shell/platform/windows/window_proc_delegate_manager.cc + ../../../flutter/LICENSE @@ -9990,7 +9989,6 @@ FILE: ../../../flutter/shell/platform/windows/text_input_manager.cc FILE: ../../../flutter/shell/platform/windows/text_input_manager.h FILE: ../../../flutter/shell/platform/windows/text_input_plugin.cc FILE: ../../../flutter/shell/platform/windows/text_input_plugin.h -FILE: ../../../flutter/shell/platform/windows/text_input_plugin_delegate.h FILE: ../../../flutter/shell/platform/windows/window_binding_handler.h FILE: ../../../flutter/shell/platform/windows/window_binding_handler_delegate.h FILE: ../../../flutter/shell/platform/windows/window_proc_delegate_manager.cc diff --git a/shell/platform/windows/cursor_handler_unittests.cc b/shell/platform/windows/cursor_handler_unittests.cc index d3f4ed5928af0..fac458beefcb8 100644 --- a/shell/platform/windows/cursor_handler_unittests.cc +++ b/shell/platform/windows/cursor_handler_unittests.cc @@ -63,13 +63,13 @@ class CursorHandlerTest : public WindowsTest { FlutterWindowsView* view() { return view_.get(); } MockWindowBindingHandler* window() { return window_; } - void use_headless_engine() { + void UseHeadlessEngine() { FlutterWindowsEngineBuilder builder{GetContext()}; engine_ = builder.Build(); } - void use_engine_with_view() { + void UseEngineWithView() { FlutterWindowsEngineBuilder builder{GetContext()}; auto window = std::make_unique(); @@ -93,7 +93,7 @@ class CursorHandlerTest : public WindowsTest { }; TEST_F(CursorHandlerTest, ActivateSystemCursor) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; CursorHandler cursor_handler(&messenger, engine()); @@ -119,7 +119,7 @@ TEST_F(CursorHandlerTest, ActivateSystemCursor) { } TEST_F(CursorHandlerTest, ActivateSystemCursorRequiresView) { - use_headless_engine(); + UseHeadlessEngine(); TestBinaryMessenger messenger; CursorHandler cursor_handler(&messenger, engine()); @@ -146,7 +146,7 @@ TEST_F(CursorHandlerTest, ActivateSystemCursorRequiresView) { } TEST_F(CursorHandlerTest, CreateCustomCursor) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; CursorHandler cursor_handler(&messenger, engine()); @@ -177,7 +177,7 @@ TEST_F(CursorHandlerTest, CreateCustomCursor) { } TEST_F(CursorHandlerTest, SetCustomCursor) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; CursorHandler cursor_handler(&messenger, engine()); @@ -217,7 +217,7 @@ TEST_F(CursorHandlerTest, SetCustomCursor) { } TEST_F(CursorHandlerTest, SetCustomCursorRequiresView) { - use_headless_engine(); + UseHeadlessEngine(); TestBinaryMessenger messenger; CursorHandler cursor_handler(&messenger, engine()); @@ -258,7 +258,7 @@ TEST_F(CursorHandlerTest, SetCustomCursorRequiresView) { } TEST_F(CursorHandlerTest, SetNonexistentCustomCursor) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; CursorHandler cursor_handler(&messenger, engine()); @@ -287,7 +287,7 @@ TEST_F(CursorHandlerTest, SetNonexistentCustomCursor) { } TEST_F(CursorHandlerTest, DeleteCustomCursor) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; CursorHandler cursor_handler(&messenger, engine()); @@ -325,7 +325,7 @@ TEST_F(CursorHandlerTest, DeleteCustomCursor) { } TEST_F(CursorHandlerTest, DeleteNonexistentCustomCursor) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; CursorHandler cursor_handler(&messenger, engine()); diff --git a/shell/platform/windows/flutter_windows_engine.cc b/shell/platform/windows/flutter_windows_engine.cc index 348ea7b773ecd..fa43c05749017 100644 --- a/shell/platform/windows/flutter_windows_engine.cc +++ b/shell/platform/windows/flutter_windows_engine.cc @@ -666,7 +666,7 @@ FlutterWindowsEngine::CreateKeyboardKeyHandler( std::unique_ptr FlutterWindowsEngine::CreateTextInputPlugin( BinaryMessenger* messenger) { - return std::make_unique(messenger, view_); + return std::make_unique(messenger, this); } bool FlutterWindowsEngine::RegisterExternalTexture(int64_t texture_id) { diff --git a/shell/platform/windows/flutter_windows_view.h b/shell/platform/windows/flutter_windows_view.h index a8871c9f5a10a..3f11677902576 100644 --- a/shell/platform/windows/flutter_windows_view.h +++ b/shell/platform/windows/flutter_windows_view.h @@ -20,7 +20,6 @@ #include "flutter/shell/platform/windows/angle_surface_manager.h" #include "flutter/shell/platform/windows/flutter_windows_engine.h" #include "flutter/shell/platform/windows/public/flutter_windows.h" -#include "flutter/shell/platform/windows/text_input_plugin_delegate.h" #include "flutter/shell/platform/windows/window_binding_handler.h" #include "flutter/shell/platform/windows/window_binding_handler_delegate.h" #include "flutter/shell/platform/windows/window_state.h" @@ -30,10 +29,9 @@ namespace flutter { // ID for the window frame buffer. inline constexpr uint32_t kWindowFrameBufferID = 0; -// An OS-windowing neutral abstration for flutter -// view that works with win32 hwnds and Windows::UI::Composition visuals. -class FlutterWindowsView : public WindowBindingHandlerDelegate, - public TextInputPluginDelegate { +// An OS-windowing neutral abstration for a Flutter view that works +// with win32 HWNDs. +class FlutterWindowsView : public WindowBindingHandlerDelegate { public: // Creates a FlutterWindowsView with the given implementor of // WindowBindingHandler. @@ -186,11 +184,12 @@ class FlutterWindowsView : public WindowBindingHandlerDelegate, // |WindowBindingHandlerDelegate| virtual gfx::NativeViewAccessible GetNativeViewAccessible() override; - // |TextInputPluginDelegate| - void OnCursorRectUpdated(const Rect& rect) override; + // Notifies the delegate of the updated the cursor rect in Flutter root view + // coordinates. + virtual void OnCursorRectUpdated(const Rect& rect); - // |TextInputPluginDelegate| - void OnResetImeComposing() override; + // Notifies the delegate that the system IME composing state should be reset. + virtual void OnResetImeComposing(); // Called when a WM_ONCOMPOSITIONCHANGED message is received. void OnDwmCompositionChanged(); diff --git a/shell/platform/windows/platform_handler_unittests.cc b/shell/platform/windows/platform_handler_unittests.cc index d900cc48a30fa..35cb70368c1ec 100644 --- a/shell/platform/windows/platform_handler_unittests.cc +++ b/shell/platform/windows/platform_handler_unittests.cc @@ -142,13 +142,13 @@ class PlatformHandlerTest : public WindowsTest { protected: FlutterWindowsEngine* engine() { return engine_.get(); } - void use_headless_engine() { + void UseHeadlessEngine() { FlutterWindowsEngineBuilder builder{GetContext()}; engine_ = builder.Build(); } - void use_engine_with_view() { + void UseEngineWithView() { FlutterWindowsEngineBuilder builder{GetContext()}; auto window = std::make_unique>(); @@ -166,7 +166,7 @@ class PlatformHandlerTest : public WindowsTest { }; TEST_F(PlatformHandlerTest, GetClipboardData) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine(), []() { @@ -190,7 +190,7 @@ TEST_F(PlatformHandlerTest, GetClipboardData) { } TEST_F(PlatformHandlerTest, GetClipboardDataRejectsUnknownContentType) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine()); @@ -203,7 +203,7 @@ TEST_F(PlatformHandlerTest, GetClipboardDataRejectsUnknownContentType) { } TEST_F(PlatformHandlerTest, GetClipboardDataRequiresView) { - use_headless_engine(); + UseHeadlessEngine(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine()); @@ -217,7 +217,7 @@ TEST_F(PlatformHandlerTest, GetClipboardDataRequiresView) { } TEST_F(PlatformHandlerTest, GetClipboardDataReportsOpenFailure) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine(), []() { @@ -237,7 +237,7 @@ TEST_F(PlatformHandlerTest, GetClipboardDataReportsOpenFailure) { } TEST_F(PlatformHandlerTest, GetClipboardDataReportsGetDataFailure) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine(), []() { @@ -261,7 +261,7 @@ TEST_F(PlatformHandlerTest, GetClipboardDataReportsGetDataFailure) { } TEST_F(PlatformHandlerTest, ClipboardHasStrings) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine(), []() { @@ -282,7 +282,7 @@ TEST_F(PlatformHandlerTest, ClipboardHasStrings) { } TEST_F(PlatformHandlerTest, ClipboardHasStringsReturnsFalse) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine(), []() { @@ -303,7 +303,7 @@ TEST_F(PlatformHandlerTest, ClipboardHasStringsReturnsFalse) { } TEST_F(PlatformHandlerTest, ClipboardHasStringsRejectsUnknownContentType) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine()); @@ -315,7 +315,7 @@ TEST_F(PlatformHandlerTest, ClipboardHasStringsRejectsUnknownContentType) { } TEST_F(PlatformHandlerTest, ClipboardHasStringsRequiresView) { - use_headless_engine(); + UseHeadlessEngine(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine()); @@ -330,7 +330,7 @@ TEST_F(PlatformHandlerTest, ClipboardHasStringsRequiresView) { // Regression test for https://github.com/flutter/flutter/issues/95817. TEST_F(PlatformHandlerTest, ClipboardHasStringsIgnoresPermissionErrors) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine(), []() { @@ -350,7 +350,7 @@ TEST_F(PlatformHandlerTest, ClipboardHasStringsIgnoresPermissionErrors) { } TEST_F(PlatformHandlerTest, ClipboardHasStringsReportsErrors) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine(), []() { @@ -370,7 +370,7 @@ TEST_F(PlatformHandlerTest, ClipboardHasStringsReportsErrors) { } TEST_F(PlatformHandlerTest, ClipboardSetData) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine(), []() { @@ -397,7 +397,7 @@ TEST_F(PlatformHandlerTest, ClipboardSetData) { // Regression test for: https://github.com/flutter/flutter/issues/121976 TEST_F(PlatformHandlerTest, ClipboardSetDataTextMustBeString) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine()); @@ -409,7 +409,7 @@ TEST_F(PlatformHandlerTest, ClipboardSetDataTextMustBeString) { } TEST_F(PlatformHandlerTest, ClipboardSetDataUnknownType) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine()); @@ -421,7 +421,7 @@ TEST_F(PlatformHandlerTest, ClipboardSetDataUnknownType) { } TEST_F(PlatformHandlerTest, ClipboardSetDataRequiresView) { - use_headless_engine(); + UseHeadlessEngine(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine()); @@ -435,7 +435,7 @@ TEST_F(PlatformHandlerTest, ClipboardSetDataRequiresView) { } TEST_F(PlatformHandlerTest, ClipboardSetDataReportsOpenFailure) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine(), []() { @@ -455,7 +455,7 @@ TEST_F(PlatformHandlerTest, ClipboardSetDataReportsOpenFailure) { } TEST_F(PlatformHandlerTest, ClipboardSetDataReportsSetDataFailure) { - use_engine_with_view(); + UseEngineWithView(); TestBinaryMessenger messenger; PlatformHandler platform_handler(&messenger, engine(), []() { @@ -478,7 +478,7 @@ TEST_F(PlatformHandlerTest, ClipboardSetDataReportsSetDataFailure) { } TEST_F(PlatformHandlerTest, PlaySystemSound) { - use_headless_engine(); + UseHeadlessEngine(); TestBinaryMessenger messenger; MockPlatformHandler platform_handler(&messenger, engine()); @@ -496,7 +496,7 @@ TEST_F(PlatformHandlerTest, PlaySystemSound) { } TEST_F(PlatformHandlerTest, SystemExitApplicationRequired) { - use_headless_engine(); + UseHeadlessEngine(); UINT exit_code = 0; TestBinaryMessenger messenger([](const std::string& channel, @@ -518,7 +518,7 @@ TEST_F(PlatformHandlerTest, SystemExitApplicationRequired) { } TEST_F(PlatformHandlerTest, SystemExitApplicationCancelableCancel) { - use_headless_engine(); + UseHeadlessEngine(); bool called_cancel = false; TestBinaryMessenger messenger( @@ -539,7 +539,7 @@ TEST_F(PlatformHandlerTest, SystemExitApplicationCancelableCancel) { } TEST_F(PlatformHandlerTest, SystemExitApplicationCancelableExit) { - use_headless_engine(); + UseHeadlessEngine(); bool called_cancel = false; UINT exit_code = 0; diff --git a/shell/platform/windows/text_input_plugin.cc b/shell/platform/windows/text_input_plugin.cc index 08c0007a4d083..9cf1229b5b8f5 100644 --- a/shell/platform/windows/text_input_plugin.cc +++ b/shell/platform/windows/text_input_plugin.cc @@ -3,15 +3,16 @@ // found in the LICENSE file. #include "flutter/shell/platform/windows/text_input_plugin.h" -#include "flutter/fml/string_conversion.h" -#include "flutter/shell/platform/common/text_editing_delta.h" -#include "flutter/shell/platform/windows/text_input_plugin_delegate.h" #include #include +#include "flutter/fml/string_conversion.h" #include "flutter/shell/platform/common/json_method_codec.h" +#include "flutter/shell/platform/common/text_editing_delta.h" +#include "flutter/shell/platform/windows/flutter_windows_engine.h" +#include "flutter/shell/platform/windows/flutter_windows_view.h" static constexpr char kSetEditingStateMethod[] = "TextInput.setEditingState"; static constexpr char kClearClientMethod[] = "TextInput.clearClient"; @@ -104,12 +105,12 @@ void TextInputPlugin::KeyboardHook(int key, } TextInputPlugin::TextInputPlugin(flutter::BinaryMessenger* messenger, - TextInputPluginDelegate* delegate) + FlutterWindowsEngine* engine) : channel_(std::make_unique>( messenger, kChannelName, &flutter::JsonMethodCodec::GetInstance())), - delegate_(delegate), + engine_(engine), active_model_(nullptr) { channel_->SetMethodCallHandler( [this]( @@ -217,12 +218,18 @@ void TextInputPlugin::HandleMethodCall( if (method.compare(kShowMethod) == 0 || method.compare(kHideMethod) == 0) { // These methods are no-ops. } else if (method.compare(kClearClientMethod) == 0) { + FlutterWindowsView* view = engine_->view(); + if (view == nullptr) { + result->Error(kInternalConsistencyError, + "Text input is not available in Windows headless mode"); + return; + } if (active_model_ != nullptr && active_model_->composing()) { active_model_->CommitComposing(); active_model_->EndComposing(); SendStateUpdate(*active_model_); } - delegate_->OnResetImeComposing(); + view->OnResetImeComposing(); active_model_ = nullptr; } else if (method.compare(kSetClientMethod) == 0) { if (!method_call.arguments() || method_call.arguments()->IsNull()) { @@ -321,6 +328,12 @@ void TextInputPlugin::HandleMethodCall( TextRange(composing_base, composing_extent), cursor_offset); } } else if (method.compare(kSetMarkedTextRect) == 0) { + FlutterWindowsView* view = engine_->view(); + if (view == nullptr) { + result->Error(kInternalConsistencyError, + "Text input is not available in Windows headless mode"); + return; + } if (!method_call.arguments() || method_call.arguments()->IsNull()) { result->Error(kBadArgumentError, "Method invoked without args"); return; @@ -342,8 +355,14 @@ void TextInputPlugin::HandleMethodCall( {width->value.GetDouble(), height->value.GetDouble()}}; Rect transformed_rect = GetCursorRect(); - delegate_->OnCursorRectUpdated(transformed_rect); + view->OnCursorRectUpdated(transformed_rect); } else if (method.compare(kSetEditableSizeAndTransform) == 0) { + FlutterWindowsView* view = engine_->view(); + if (view == nullptr) { + result->Error(kInternalConsistencyError, + "Text input is not available in Windows headless mode"); + return; + } if (!method_call.arguments() || method_call.arguments()->IsNull()) { result->Error(kBadArgumentError, "Method invoked without args"); return; @@ -367,7 +386,7 @@ void TextInputPlugin::HandleMethodCall( ++i; } Rect transformed_rect = GetCursorRect(); - delegate_->OnCursorRectUpdated(transformed_rect); + view->OnCursorRectUpdated(transformed_rect); } else { result->NotImplemented(); return; diff --git a/shell/platform/windows/text_input_plugin.h b/shell/platform/windows/text_input_plugin.h index a5ee04b08baeb..a452e293d6808 100644 --- a/shell/platform/windows/text_input_plugin.h +++ b/shell/platform/windows/text_input_plugin.h @@ -20,18 +20,19 @@ namespace flutter { -class TextInputPluginDelegate; +class FlutterWindowsEngine; // Implements a text input plugin. // // Specifically handles window events within windows. class TextInputPlugin { public: - explicit TextInputPlugin(flutter::BinaryMessenger* messenger, - TextInputPluginDelegate* delegate); + TextInputPlugin(flutter::BinaryMessenger* messenger, + FlutterWindowsEngine* engine); virtual ~TextInputPlugin(); + // Called when the Flutter engine receives a raw keyboard message. virtual void KeyboardHook(int key, int scancode, int action, @@ -39,14 +40,33 @@ class TextInputPlugin { bool extended, bool was_down); + // Called when the Flutter engine receives a keyboard character. virtual void TextHook(const std::u16string& text); + // Called on an IME compose begin event. + // + // Triggered when the user begins editing composing text using a multi-step + // input method such as in CJK text input. virtual void ComposeBeginHook(); + // Called on an IME compose commit event. + // + // Triggered when the user triggers a commit of the current composing text + // while using a multi-step input method such as in CJK text input. Composing + // continues with the next keypress. virtual void ComposeCommitHook(); + // Called on an IME compose end event. + // + // Triggered when the composing ends, for example when the user presses + // ESC or when the user triggers a commit of the composing text while using a + // multi-step input method such as in CJK text input. virtual void ComposeEndHook(); + // Called on an IME composing region change event. + // + // Triggered when the user edits the composing text while using a multi-step + // input method such as in CJK text input. virtual void ComposeChangeHook(const std::u16string& text, int cursor_pos); private: @@ -72,8 +92,8 @@ class TextInputPlugin { // The MethodChannel used for communication with the Flutter engine. std::unique_ptr> channel_; - // The associated |TextInputPluginDelegate|. - TextInputPluginDelegate* delegate_; + // The associated |FlutterWindowsEngine|. + FlutterWindowsEngine* engine_; // The active client id. int client_id_; @@ -85,7 +105,7 @@ class TextInputPlugin { // as TextEditingDeltas or as one TextEditingValue. // For more information on the delta model, see: // https://master-api.flutter.dev/flutter/services/TextInputConfiguration/enableDeltaModel.html - bool enable_delta_model; + bool enable_delta_model = false; // Keyboard type of the client. See available options: // https://api.flutter.dev/flutter/services/TextInputType-class.html diff --git a/shell/platform/windows/text_input_plugin_delegate.h b/shell/platform/windows/text_input_plugin_delegate.h deleted file mode 100644 index 0d41ff4bdc3a0..0000000000000 --- a/shell/platform/windows/text_input_plugin_delegate.h +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef FLUTTER_SHELL_PLATFORM_WINDOWS_TEXT_INPUT_PLUGIN_DELEGATE_H_ -#define FLUTTER_SHELL_PLATFORM_WINDOWS_TEXT_INPUT_PLUGIN_DELEGATE_H_ - -#include "flutter/shell/platform/common/geometry.h" -#include "flutter/shell/platform/embedder/embedder.h" - -namespace flutter { - -class TextInputPluginDelegate { - public: - // Notifies the delegate of the updated the cursor rect in Flutter root view - // coordinates. - virtual void OnCursorRectUpdated(const Rect& rect) = 0; - - // Notifies the delegate that the system IME composing state should be reset. - virtual void OnResetImeComposing() = 0; -}; - -} // namespace flutter - -#endif // FLUTTER_SHELL_PLATFORM_WINDOWS_TEXT_INPUT_PLUGIN_DELEGATE_H_ diff --git a/shell/platform/windows/text_input_plugin_unittest.cc b/shell/platform/windows/text_input_plugin_unittest.cc index a99e0149aa286..73d4cf1469f68 100644 --- a/shell/platform/windows/text_input_plugin_unittest.cc +++ b/shell/platform/windows/text_input_plugin_unittest.cc @@ -10,8 +10,11 @@ #include "flutter/fml/macros.h" #include "flutter/shell/platform/common/json_message_codec.h" #include "flutter/shell/platform/common/json_method_codec.h" +#include "flutter/shell/platform/windows/flutter_windows_view.h" +#include "flutter/shell/platform/windows/testing/flutter_windows_engine_builder.h" +#include "flutter/shell/platform/windows/testing/mock_window_binding_handler.h" #include "flutter/shell/platform/windows/testing/test_binary_messenger.h" -#include "flutter/shell/platform/windows/text_input_plugin_delegate.h" +#include "flutter/shell/platform/windows/testing/windows_test.h" #include "gmock/gmock.h" #include "gtest/gtest.h" @@ -19,6 +22,8 @@ namespace flutter { namespace testing { namespace { +using ::testing::Return; + static constexpr char kScanCodeKey[] = "scanCode"; static constexpr int kHandledScanCode = 20; static constexpr int kUnhandledScanCode = 21; @@ -97,21 +102,63 @@ static std::unique_ptr EncodedEditingState( return arguments; } -class MockTextInputPluginDelegate : public TextInputPluginDelegate { +class MockFlutterWindowsView : public FlutterWindowsView { public: - MockTextInputPluginDelegate() {} - virtual ~MockTextInputPluginDelegate() = default; + MockFlutterWindowsView(std::unique_ptr window) + : FlutterWindowsView(std::move(window)) {} + virtual ~MockFlutterWindowsView() = default; MOCK_METHOD(void, OnCursorRectUpdated, (const Rect&), (override)); MOCK_METHOD(void, OnResetImeComposing, (), (override)); private: - FML_DISALLOW_COPY_AND_ASSIGN(MockTextInputPluginDelegate); + FML_DISALLOW_COPY_AND_ASSIGN(MockFlutterWindowsView); }; } // namespace -TEST(TextInputPluginTest, TextMethodsWorksWithEmptyModel) { +class TextInputPluginTest : public WindowsTest { + public: + TextInputPluginTest() = default; + virtual ~TextInputPluginTest() = default; + + protected: + FlutterWindowsEngine* engine() { return engine_.get(); } + MockFlutterWindowsView* view() { return view_.get(); } + MockWindowBindingHandler* window() { return window_; } + + void UseHeadlessEngine() { + FlutterWindowsEngineBuilder builder{GetContext()}; + + engine_ = builder.Build(); + } + + void UseEngineWithView() { + FlutterWindowsEngineBuilder builder{GetContext()}; + + auto window = std::make_unique(); + + window_ = window.get(); + EXPECT_CALL(*window_, SetView).Times(1); + EXPECT_CALL(*window, GetRenderTarget).WillRepeatedly(Return(nullptr)); + + engine_ = builder.Build(); + view_ = std::make_unique(std::move(window)); + + engine_->SetView(view_.get()); + } + + private: + std::unique_ptr engine_; + std::unique_ptr view_; + MockWindowBindingHandler* window_; + + FML_DISALLOW_COPY_AND_ASSIGN(TextInputPluginTest); +}; + +TEST_F(TextInputPluginTest, TextMethodsWorksWithEmptyModel) { + UseEngineWithView(); + auto handled_message = CreateResponse(true); auto unhandled_message = CreateResponse(false); int received_scancode = 0; @@ -120,10 +167,9 @@ TEST(TextInputPluginTest, TextMethodsWorksWithEmptyModel) { [&received_scancode, &handled_message, &unhandled_message]( const std::string& channel, const uint8_t* message, size_t message_size, BinaryReply reply) {}); - MockTextInputPluginDelegate delegate; int redispatch_scancode = 0; - TextInputPlugin handler(&messenger, &delegate); + TextInputPlugin handler(&messenger, engine()); handler.KeyboardHook(VK_RETURN, 100, WM_KEYDOWN, '\n', false, false); handler.ComposeBeginHook(); @@ -135,26 +181,55 @@ TEST(TextInputPluginTest, TextMethodsWorksWithEmptyModel) { // Passes if it did not crash } -TEST(TextInputPluginTest, ClearClientResetsComposing) { +TEST_F(TextInputPluginTest, ClearClientResetsComposing) { + UseEngineWithView(); + TestBinaryMessenger messenger([](const std::string& channel, const uint8_t* message, size_t message_size, BinaryReply reply) {}); BinaryReply reply_handler = [](const uint8_t* reply, size_t reply_size) {}; - MockTextInputPluginDelegate delegate; - TextInputPlugin handler(&messenger, &delegate); + TextInputPlugin handler(&messenger, engine()); + + EXPECT_CALL(*view(), OnResetImeComposing()); + + auto& codec = JsonMethodCodec::GetInstance(); + auto message = codec.EncodeMethodCall({"TextInput.clearClient", nullptr}); + messenger.SimulateEngineMessage(kChannelName, message->data(), + message->size(), reply_handler); +} + +// Verify that clear client fails if in headless mode. +TEST_F(TextInputPluginTest, ClearClientRequiresView) { + UseHeadlessEngine(); + + TestBinaryMessenger messenger([](const std::string& channel, + const uint8_t* message, size_t message_size, + BinaryReply reply) {}); + + std::string reply; + BinaryReply reply_handler = [&reply](const uint8_t* reply_bytes, + size_t reply_size) { + reply = std::string(reinterpret_cast(reply_bytes), reply_size); + }; - EXPECT_CALL(delegate, OnResetImeComposing()); + TextInputPlugin handler(&messenger, engine()); auto& codec = JsonMethodCodec::GetInstance(); auto message = codec.EncodeMethodCall({"TextInput.clearClient", nullptr}); messenger.SimulateEngineMessage(kChannelName, message->data(), message->size(), reply_handler); + + EXPECT_EQ(reply, + "[\"Internal Consistency Error\",\"Text input is not available in " + "Windows headless mode\",null]"); } // Verify that the embedder sends state update messages to the framework during // IME composing. -TEST(TextInputPluginTest, VerifyComposingSendStateUpdate) { +TEST_F(TextInputPluginTest, VerifyComposingSendStateUpdate) { + UseEngineWithView(); + bool sent_message = false; TestBinaryMessenger messenger( [&sent_message](const std::string& channel, const uint8_t* message, @@ -162,8 +237,7 @@ TEST(TextInputPluginTest, VerifyComposingSendStateUpdate) { BinaryReply reply) { sent_message = true; }); BinaryReply reply_handler = [](const uint8_t* reply, size_t reply_size) {}; - MockTextInputPluginDelegate delegate; - TextInputPlugin handler(&messenger, &delegate); + TextInputPlugin handler(&messenger, engine()); auto& codec = JsonMethodCodec::GetInstance(); @@ -209,7 +283,9 @@ TEST(TextInputPluginTest, VerifyComposingSendStateUpdate) { EXPECT_TRUE(sent_message); } -TEST(TextInputPluginTest, VerifyInputActionNewlineInsertNewLine) { +TEST_F(TextInputPluginTest, VerifyInputActionNewlineInsertNewLine) { + UseEngineWithView(); + // Store messages as std::string for convenience. std::vector messages; @@ -222,8 +298,7 @@ TEST(TextInputPluginTest, VerifyInputActionNewlineInsertNewLine) { }); BinaryReply reply_handler = [](const uint8_t* reply, size_t reply_size) {}; - MockTextInputPluginDelegate delegate; - TextInputPlugin handler(&messenger, &delegate); + TextInputPlugin handler(&messenger, engine()); auto& codec = JsonMethodCodec::GetInstance(); @@ -266,7 +341,9 @@ TEST(TextInputPluginTest, VerifyInputActionNewlineInsertNewLine) { } // Regression test for https://github.com/flutter/flutter/issues/125879. -TEST(TextInputPluginTest, VerifyInputActionSendDoesNotInsertNewLine) { +TEST_F(TextInputPluginTest, VerifyInputActionSendDoesNotInsertNewLine) { + UseEngineWithView(); + std::vector> messages; TestBinaryMessenger messenger( @@ -279,8 +356,7 @@ TEST(TextInputPluginTest, VerifyInputActionSendDoesNotInsertNewLine) { }); BinaryReply reply_handler = [](const uint8_t* reply, size_t reply_size) {}; - MockTextInputPluginDelegate delegate; - TextInputPlugin handler(&messenger, &delegate); + TextInputPlugin handler(&messenger, engine()); auto& codec = JsonMethodCodec::GetInstance(); @@ -312,7 +388,9 @@ TEST(TextInputPluginTest, VerifyInputActionSendDoesNotInsertNewLine) { messages.front().begin())); } -TEST(TextInputPluginTest, TextEditingWorksWithDeltaModel) { +TEST_F(TextInputPluginTest, TextEditingWorksWithDeltaModel) { + UseEngineWithView(); + auto handled_message = CreateResponse(true); auto unhandled_message = CreateResponse(false); int received_scancode = 0; @@ -321,10 +399,9 @@ TEST(TextInputPluginTest, TextEditingWorksWithDeltaModel) { [&received_scancode, &handled_message, &unhandled_message]( const std::string& channel, const uint8_t* message, size_t message_size, BinaryReply reply) {}); - MockTextInputPluginDelegate delegate; int redispatch_scancode = 0; - TextInputPlugin handler(&messenger, &delegate); + TextInputPlugin handler(&messenger, engine()); auto args = std::make_unique(rapidjson::kArrayType); auto& allocator = args->GetAllocator(); @@ -369,7 +446,9 @@ TEST(TextInputPluginTest, TextEditingWorksWithDeltaModel) { } // Regression test for https://github.com/flutter/flutter/issues/123749 -TEST(TextInputPluginTest, CompositionCursorPos) { +TEST_F(TextInputPluginTest, CompositionCursorPos) { + UseEngineWithView(); + int selection_base = -1; TestBinaryMessenger messenger([&](const std::string& channel, const uint8_t* message, size_t size, @@ -389,9 +468,8 @@ TEST(TextInputPluginTest, CompositionCursorPos) { EXPECT_EQ(extent->value.GetInt(), selection_base); } }); - MockTextInputPluginDelegate delegate; - TextInputPlugin plugin(&messenger, &delegate); + TextInputPlugin plugin(&messenger, engine()); auto args = std::make_unique(rapidjson::kArrayType); auto& allocator = args->GetAllocator(); @@ -427,7 +505,9 @@ TEST(TextInputPluginTest, CompositionCursorPos) { EXPECT_EQ(selection_base, 5); } -TEST(TextInputPluginTest, TransformCursorRect) { +TEST_F(TextInputPluginTest, TransformCursorRect) { + UseEngineWithView(); + // A position of `EditableText`. double view_x = 100; double view_y = 200; @@ -450,12 +530,11 @@ TEST(TextInputPluginTest, TransformCursorRect) { BinaryReply reply) {}); BinaryReply reply_handler = [](const uint8_t* reply, size_t reply_size) {}; - MockTextInputPluginDelegate delegate; - TextInputPlugin handler(&messenger, &delegate); + TextInputPlugin handler(&messenger, engine()); auto& codec = JsonMethodCodec::GetInstance(); - EXPECT_CALL(delegate, OnCursorRectUpdated(Rect{{view_x, view_y}, {0, 0}})); + EXPECT_CALL(*view(), OnCursorRectUpdated(Rect{{view_x, view_y}, {0, 0}})); { auto arguments = @@ -476,7 +555,7 @@ TEST(TextInputPluginTest, TransformCursorRect) { message->size(), reply_handler); } - EXPECT_CALL(delegate, + EXPECT_CALL(*view(), OnCursorRectUpdated(Rect{{view_x + ime_x, view_y + ime_y}, {ime_width, ime_height}})); @@ -497,5 +576,41 @@ TEST(TextInputPluginTest, TransformCursorRect) { } } +TEST_F(TextInputPluginTest, SetMarkedTextRectRequiresView) { + UseHeadlessEngine(); + + TestBinaryMessenger messenger([](const std::string& channel, + const uint8_t* message, size_t message_size, + BinaryReply reply) {}); + + std::string reply; + BinaryReply reply_handler = [&reply](const uint8_t* reply_bytes, + size_t reply_size) { + reply = std::string(reinterpret_cast(reply_bytes), reply_size); + }; + + TextInputPlugin handler(&messenger, engine()); + + auto& codec = JsonMethodCodec::GetInstance(); + + auto arguments = + std::make_unique(rapidjson::kObjectType); + auto& allocator = arguments->GetAllocator(); + + arguments->AddMember("x", 0, allocator); + arguments->AddMember("y", 0, allocator); + arguments->AddMember("width", 0, allocator); + arguments->AddMember("height", 0, allocator); + + auto message = codec.EncodeMethodCall( + {"TextInput.setMarkedTextRect", std::move(arguments)}); + messenger.SimulateEngineMessage(kChannelName, message->data(), + message->size(), reply_handler); + + EXPECT_EQ(reply, + "[\"Internal Consistency Error\",\"Text input is not available in " + "Windows headless mode\",null]"); +} + } // namespace testing } // namespace flutter diff --git a/shell/platform/windows/window_binding_handler_delegate.h b/shell/platform/windows/window_binding_handler_delegate.h index a5647662dcb6f..265ca8093b395 100644 --- a/shell/platform/windows/window_binding_handler_delegate.h +++ b/shell/platform/windows/window_binding_handler_delegate.h @@ -98,15 +98,16 @@ class WindowBindingHandlerDelegate { // Notifies the delegate that IME composing region have been committed. // - // Triggered when the user commits the current composing text while using a - // multi-step input method such as in CJK text input. Composing continues with - // the next keypress. + // Triggered when the user triggers a commit of the current composing text + // while using a multi-step input method such as in CJK text input. Composing + // continues with the next keypress. virtual void OnComposeCommit() = 0; // Notifies the delegate that IME composing mode has ended. // - // Triggered when the user commits the composing text while using a multi-step - // input method such as in CJK text input. + // Triggered when the composing ends, for example when the user presses + // ESC or when the user triggers a commit of the composing text while using a + // multi-step input method such as in CJK text input. virtual void OnComposeEnd() = 0; // Notifies the delegate that IME composing region contents have changed. From 3e44a1086ca68e814a73f61a0a05cf6cdb0a2695 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 30 Nov 2023 17:51:56 -0500 Subject: [PATCH 20/26] Roll Skia from db3399a541f3 to 88a1bcb9e43e (1 revision) (#48545) https://skia.googlesource.com/skia.git/+log/db3399a541f3..88a1bcb9e43e 2023-11-30 michaelludwig@google.com [skif] Fix ignore-ctm sigma adjustment for mask->image filters If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,jcgregorio@google.com,matanl@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4aa488c3c64a7..393166a8a113b 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'db3399a541f3a9af1044d14d739914723d3a496f', + 'skia_revision': '88a1bcb9e43e72daae8de836dba71bc0d357445f', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a7481f374f712..a76b07045b47d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9f0340fc6b4fc7122b87b6a6b966b3a7 +Signature: e371fa219cd684d74fd4ae50ab1f5120 ==================================================================================================== LIBRARY: etc1 From e43ab06c2a53dcb545731bfa2e6373a9d9bdbd6f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 30 Nov 2023 18:35:57 -0500 Subject: [PATCH 21/26] Manual roll Dart SDK to 3.3.0-174.2.beta (4 revisions) (#48538) Manual roll requested by zra@google.com https://dart.googlesource.com/sdk.git/+log/b58735e626f6..d24e4354ee54 2023-11-30 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.3.0-174.0.dev 2023-11-28 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.3.0-173.0.dev 2023-11-28 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.3.0-172.0.dev 2023-11-28 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.3.0-171.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter-engine Please CC dart-vm-team@google.com,matanl@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter Engine: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --------- Co-authored-by: Zachary Anderson --- DEPS | 12 ++++++------ ci/licenses_golden/licenses_dart | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/DEPS b/DEPS index 393166a8a113b..14c10977d68f8 100644 --- a/DEPS +++ b/DEPS @@ -59,7 +59,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'b58735e626f6aaea5b26fb67386139a46c530769', + 'dart_revision': 'd306bc3634c01787f2249a6147531fb09c3986f5', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py @@ -69,12 +69,12 @@ vars = { 'dart_browser_launcher_rev': 'f60df1d9b1f7b90e4eaeedccc3952fdd6ffba28a', 'dart_clock_rev': 'f975668839f45bad561d6227f88297bbbcff03fa', 'dart_collection_rev': '2d57a82ad079fe2d127f5a9b188170de2f5cdedc', - 'dart_devtools_rev': 'fec80c6e29b627aa17e8b15f72cb4013a28d14ec', + 'dart_devtools_rev': '27795d615e1878ccf5f55c4b90d611e2628a8618', 'dart_libprotobuf_rev': '24487dd1045c7f3d64a21f38a3f0c06cc4cf2edb', 'dart_perfetto_rev': '13ce0c9e13b0940d2476cd0cff2301708a9a2e2b', 'dart_protobuf_gn_rev': 'ca669f79945418f6229e4fef89b666b2a88cbb10', 'dart_protobuf_rev': 'dcec2eda9db4e6728e900928aa2e46944ba4fa6f', - 'dart_pub_rev': 'fca927ae2662204805e1646c0c0687369001a41a', + 'dart_pub_rev': '1779628b386819675130f14326f1e8812901c48f', 'dart_root_certificates_rev': '692f6d6488af68e0121317a9c2c9eb393eb0ee50', 'dart_tools_rev': '2e36b8d326e95ed256a74ee2ebdcfff5be502c57', 'dart_watcher_rev': '6ac67f18d7f3a0eea728c45ea16993bdfb91ea42', @@ -333,7 +333,7 @@ deps = { Var('chromium_git') + '/external/github.com/WebAssembly/binaryen.git@a51bd6df919a5b79574f0996a760cc20cb05697e', 'src/third_party/dart/third_party/devtools': - {'dep_type': 'cipd', 'packages': [{'package': 'dart/third_party/flutter/devtools', 'version': 'git_revision:fec80c6e29b627aa17e8b15f72cb4013a28d14ec'}]}, + {'dep_type': 'cipd', 'packages': [{'package': 'dart/third_party/flutter/devtools', 'version': 'git_revision:27795d615e1878ccf5f55c4b90d611e2628a8618'}]}, 'src/third_party/dart/third_party/pkg/args': Var('dart_git') + '/args.git@46d5033377d277d70bc6ec68504730b9384b1db1', @@ -369,7 +369,7 @@ deps = { Var('dart_git') + '/csslib.git@17346e528b19c09b2d20589e0ffa0f01a5ad54ad', 'src/third_party/dart/third_party/pkg/dart_style': - Var('dart_git') + '/dart_style.git@2cee560f2025f8bd5dce3fd5f4c4b5cf5335a10b', + Var('dart_git') + '/dart_style.git@8b1f24a8475a0116757172cd9acca4acbf87d973', 'src/third_party/dart/third_party/pkg/dartdoc': Var('dart_git') + '/dartdoc.git@53da3e1dd1802c5899352fce251ea0c385a827b0', @@ -492,7 +492,7 @@ deps = { Var('dart_git') + '/watcher.git' + '@' + Var('dart_watcher_rev'), 'src/third_party/dart/third_party/pkg/web_socket_channel': - Var('dart_git') + '/web_socket_channel.git@82ac73fef05c474095c740a9525b4cfb61611c3d', + Var('dart_git') + '/web_socket_channel.git@5241175e7c66271850d6e75fb9ec90068f9dd3c4', 'src/third_party/dart/third_party/pkg/webdev': Var('dart_git') + '/webdev.git' + '@' + Var('dart_webdev_rev'), diff --git a/ci/licenses_golden/licenses_dart b/ci/licenses_golden/licenses_dart index 96631844675ae..625239431fffa 100644 --- a/ci/licenses_golden/licenses_dart +++ b/ci/licenses_golden/licenses_dart @@ -1,4 +1,4 @@ -Signature: 8fb607c176aeefd945f17a9d1457182f +Signature: 5d517bbcded5e90bcf4d19f0e1330527 ==================================================================================================== LIBRARY: dart From 3acfa76a9b5d2c0786d177b7a2ee24db0ad6be92 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 30 Nov 2023 18:50:29 -0500 Subject: [PATCH 22/26] Roll Skia from 88a1bcb9e43e to 0a90c366ff87 (3 revisions) (#48549) https://skia.googlesource.com/skia.git/+log/88a1bcb9e43e..0a90c366ff87 2023-11-30 fmalita@chromium.org [skottie] Plumb orignal font family name to SkShaper 2023-11-30 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skottie-base from e6b1b3f50cf0 to 4cf7a7a3f3b7 2023-11-30 lovisolo@google.com [bazel] Gold and Perf traces: Include compilation_mode key/value pair. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC brianosman@google.com,jcgregorio@google.com,matanl@google.com,rmistry@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 14c10977d68f8..6688e6905336c 100644 --- a/DEPS +++ b/DEPS @@ -18,7 +18,7 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '88a1bcb9e43e72daae8de836dba71bc0d357445f', + 'skia_revision': '0a90c366ff87fb3dc238d0d29e322393ffbeb37a', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a76b07045b47d..202509f911bc7 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e371fa219cd684d74fd4ae50ab1f5120 +Signature: aff3b9a2e6de4ae1932af7bd3ad0d67c ==================================================================================================== LIBRARY: etc1 From 58502dc2e02f4d0df581e4f08e3dfdaacc182260 Mon Sep 17 00:00:00 2001 From: Camille Simon <43054281+camsim99@users.noreply.github.com> Date: Thu, 30 Nov 2023 16:04:42 -0800 Subject: [PATCH 23/26] [Android] Check for text to paste before trying to retrieve data from URI (#48166) Adds a check to retrieve explicit text from Clipboard items via [`getText`](https://developer.android.com/reference/android/content/ClipData.Item#getText()) before attempting to retrieve data if the Clipboard item (`ClipData.Item`) has an associated URI. Also adds more error handling for edge cases concerning URIs (the URI not having the content scheme or being null). Fixes https://github.com/flutter/flutter/issues/74320. Some content providers will not send URIs containing the `text/*` pattern or have the content scheme (`content://`), but ultimately we should expect Clipboard items to either fall **not** into one of those categories or have an explicit textual value available via `getText`. In case this is not true, though, checks for non-content URIs and null URIs are added, as well :) Tested on a Samsung tablet with pasting from MS Word, MS Excel, and Samsung Notes. [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style --- .../plugin/platform/PlatformPlugin.java | 51 +++- .../plugin/platform/PlatformPluginTest.java | 271 +++++++++++------- 2 files changed, 214 insertions(+), 108 deletions(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index 58618b2b83247..6dbfedd9bb114 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -13,6 +13,7 @@ import android.content.Context; import android.content.Intent; import android.content.res.AssetFileDescriptor; +import android.net.Uri; import android.os.Build; import android.view.HapticFeedbackConstants; import android.view.SoundEffectConstants; @@ -520,21 +521,46 @@ private CharSequence getClipboardData(PlatformChannel.ClipboardContentFormat for if (!clipboard.hasPrimaryClip()) return null; - CharSequence charSequence = null; + CharSequence itemText = null; try { ClipData clip = clipboard.getPrimaryClip(); if (clip == null) return null; if (format == null || format == PlatformChannel.ClipboardContentFormat.PLAIN_TEXT) { ClipData.Item item = clip.getItemAt(0); - AssetFileDescriptor assetFileDescriptor = null; - if (item.getUri() != null) - assetFileDescriptor = - activity - .getContentResolver() - .openTypedAssetFileDescriptor(item.getUri(), "text/*", null); - charSequence = item.coerceToText(activity); - if (assetFileDescriptor != null) assetFileDescriptor.close(); - return charSequence; + // First, try getting clipboard data as text; no further processing + // required if so. + itemText = item.getText(); + if (itemText == null) { + // Clipboard data does not contain text, so check whether or not it + // contains a URI to extract text from. + Uri itemUri = item.getUri(); + + if (itemUri == null) { + Log.w( + TAG, "Clipboard item contained no textual content nor a URI to retrieve it from."); + return null; + } + + // Will only try to extract text from URI if it has the content scheme. + String uriScheme = itemUri.getScheme(); + + if (!uriScheme.equals("content")) { + Log.w( + TAG, + "Clipboard item contains a Uri with scheme '" + uriScheme + "'that is unhandled."); + return null; + } + + AssetFileDescriptor assetFileDescriptor = + activity.getContentResolver().openTypedAssetFileDescriptor(itemUri, "text/*", null); + + // Safely return clipboard data coerced into text; will return either + // itemText or text retrieved from its URI. + itemText = item.coerceToText(activity); + if (assetFileDescriptor != null) assetFileDescriptor.close(); + } + + return itemText; } } catch (SecurityException e) { Log.w( @@ -545,10 +571,11 @@ private CharSequence getClipboardData(PlatformChannel.ClipboardContentFormat for e); return null; } catch (FileNotFoundException e) { + Log.w(TAG, "Clipboard text was unable to be received from content URI."); return null; } catch (IOException e) { - Log.w(TAG, "Failed to close AssetFileDescriptor while accessing clipboard data.", e); - return charSequence; + Log.w(TAG, "Failed to close AssetFileDescriptor while trying to read text from URI.", e); + return itemText; } return null; diff --git a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java index a9ced69401eee..3d5fdbce74806 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -13,10 +13,7 @@ import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyBoolean; -import static org.mockito.Mockito.anyString; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mockStatic; import static org.mockito.Mockito.never; @@ -27,7 +24,6 @@ import android.app.Activity; import android.content.ClipData; -import android.content.ClipDescription; import android.content.ClipboardManager; import android.content.ContentResolver; import android.content.Context; @@ -63,17 +59,26 @@ @RunWith(RobolectricTestRunner.class) public class PlatformPluginTest { private final Context ctx = ApplicationProvider.getApplicationContext(); + private final PlatformChannel mockPlatformChannel = mock(PlatformChannel.class); + + private ClipboardManager clipboardManager; + private ClipboardContentFormat clipboardFormat; + + public void setUpForTextClipboardTests(Activity mockActivity) { + clipboardManager = spy(ctx.getSystemService(ClipboardManager.class)); + when(mockActivity.getSystemService(Context.CLIPBOARD_SERVICE)).thenReturn(clipboardManager); + clipboardFormat = ClipboardContentFormat.PLAIN_TEXT; + } @Config(sdk = Build.VERSION_CODES.KITKAT) @Test public void itIgnoresNewHapticEventsOnOldAndroidPlatforms() { View fakeDecorView = mock(View.class); Window fakeWindow = mock(Window.class); + Activity mockActivity = mock(Activity.class); when(fakeWindow.getDecorView()).thenReturn(fakeDecorView); - Activity fakeActivity = mock(Activity.class); - when(fakeActivity.getWindow()).thenReturn(fakeWindow); - PlatformChannel fakePlatformChannel = mock(PlatformChannel.class); - PlatformPlugin platformPlugin = new PlatformPlugin(fakeActivity, fakePlatformChannel); + when(mockActivity.getWindow()).thenReturn(fakeWindow); + PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel); // HEAVY_IMPACT haptic response is only available on "M" (23) and later. platformPlugin.vibrateHapticFeedback(PlatformChannel.HapticFeedbackType.HEAVY_IMPACT); @@ -82,53 +87,141 @@ public void itIgnoresNewHapticEventsOnOldAndroidPlatforms() { platformPlugin.vibrateHapticFeedback(PlatformChannel.HapticFeedbackType.SELECTION_CLICK); } - @Config(sdk = Build.VERSION_CODES.Q) @Test - public void platformPlugin_getClipboardData() throws IOException { - ClipboardManager clipboardManager = ctx.getSystemService(ClipboardManager.class); + public void platformPlugin_getClipboardDataIsNonNullWhenPlainTextCopied() throws IOException { + View fakeDecorView = mock(View.class); + Window fakeWindow = mock(Window.class); + Activity mockActivity = mock(Activity.class); + when(fakeWindow.getDecorView()).thenReturn(fakeDecorView); + when(mockActivity.getWindow()).thenReturn(fakeWindow); + PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel); + setUpForTextClipboardTests(mockActivity); + // Primary clip contains non-text media. + ClipData clip = ClipData.newPlainText("label", "Text"); + assertNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); + clipboardManager.setPrimaryClip(clip); + assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); + } + + @Test + public void platformPlugin_getClipboardDataIsNonNullWhenIOExceptionThrown() throws IOException { View fakeDecorView = mock(View.class); Window fakeWindow = mock(Window.class); + Activity mockActivity = mock(Activity.class); when(fakeWindow.getDecorView()).thenReturn(fakeDecorView); - Activity fakeActivity = mock(Activity.class); - when(fakeActivity.getWindow()).thenReturn(fakeWindow); - when(fakeActivity.getSystemService(Context.CLIPBOARD_SERVICE)).thenReturn(clipboardManager); - PlatformChannel fakePlatformChannel = mock(PlatformChannel.class); - PlatformPlugin platformPlugin = new PlatformPlugin(fakeActivity, fakePlatformChannel); - - // Successfully get the contents of the primary clip when they contain text. - ClipboardContentFormat clipboardFormat = ClipboardContentFormat.PLAIN_TEXT; + when(mockActivity.getWindow()).thenReturn(fakeWindow); + PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel); + setUpForTextClipboardTests(mockActivity); + ContentResolver contentResolver = mock(ContentResolver.class); + ClipData.Item mockItem = mock(ClipData.Item.class); + Uri mockUri = mock(Uri.class); + AssetFileDescriptor mockAssetFileDescriptor = mock(AssetFileDescriptor.class); + + when(mockActivity.getContentResolver()).thenReturn(contentResolver); + when(mockUri.getScheme()).thenReturn("content"); + when(mockItem.getText()).thenReturn(null); + when(mockItem.getUri()).thenReturn(mockUri); + when(contentResolver.openTypedAssetFileDescriptor(any(Uri.class), any(), any())) + .thenReturn(mockAssetFileDescriptor); + when(mockItem.coerceToText(mockActivity)).thenReturn("something non-null"); + doThrow(new IOException()).when(mockAssetFileDescriptor).close(); + + ClipData clip = new ClipData("label", new String[0], mockItem); + + assertNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); + clipboardManager.setPrimaryClip(clip); + assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); + } + + @Test + public void platformPlugin_getClipboardDataIsNonNullWhenContentUriWithTextProvided() + throws IOException { + View fakeDecorView = mock(View.class); + Window fakeWindow = mock(Window.class); + Activity mockActivity = mock(Activity.class); + when(fakeWindow.getDecorView()).thenReturn(fakeDecorView); + when(mockActivity.getWindow()).thenReturn(fakeWindow); + PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel); + setUpForTextClipboardTests(mockActivity); + ContentResolver contentResolver = mock(ContentResolver.class); + ClipData.Item mockItem = mock(ClipData.Item.class); + Uri mockUri = mock(Uri.class); + + when(mockActivity.getContentResolver()).thenReturn(contentResolver); + when(mockUri.getScheme()).thenReturn("content"); + when(mockItem.getText()).thenReturn(null); + when(mockItem.getUri()).thenReturn(mockUri); + when(contentResolver.openTypedAssetFileDescriptor(any(Uri.class), any(), any())) + .thenReturn(mock(AssetFileDescriptor.class)); + when(mockItem.coerceToText(mockActivity)).thenReturn("something non-null"); + + ClipData clip = new ClipData("label", new String[0], mockItem); + assertNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); - ClipData clip = ClipData.newPlainText("label", "Text"); clipboardManager.setPrimaryClip(clip); assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); + } + + @Test + public void platformPlugin_getClipboardDataIsNullWhenContentUriProvidedContainsNoText() + throws IOException { + View fakeDecorView = mock(View.class); + Window fakeWindow = mock(Window.class); + Activity mockActivity = mock(Activity.class); + when(fakeWindow.getDecorView()).thenReturn(fakeDecorView); + when(mockActivity.getWindow()).thenReturn(fakeWindow); + PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel); + setUpForTextClipboardTests(mockActivity); + ContentResolver contentResolver = ctx.getContentResolver(); + + when(mockActivity.getContentResolver()).thenReturn(contentResolver); - // Return null when the primary clip contains non-text media. - ContentResolver contentResolver = spy(ctx.getContentResolver()); - when(fakeActivity.getContentResolver()).thenReturn(contentResolver); Uri uri = Uri.parse("content://media/external_primary/images/media/"); - clip = ClipData.newUri(contentResolver, "URI", uri); + ClipData clip = ClipData.newUri(contentResolver, "URI", uri); + clipboardManager.setPrimaryClip(clip); assertNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); + } - // Still return text when the AssetFileDescriptor throws an IOException. - when(fakeActivity.getContentResolver()).thenReturn(contentResolver); - ClipDescription clipDescription = - new ClipDescription( - "label", - new String[] { - ClipDescription.MIMETYPE_TEXT_PLAIN, ClipDescription.MIMETYPE_TEXT_URILIST - }); - ClipData.Item clipDataItem = new ClipData.Item("Text", null, uri); - ClipData clipData = new ClipData(clipDescription, clipDataItem); - clipboardManager.setPrimaryClip(clipData); - AssetFileDescriptor fakeAssetFileDescriptor = mock(AssetFileDescriptor.class); - doReturn(fakeAssetFileDescriptor) - .when(contentResolver) - .openTypedAssetFileDescriptor(eq(uri), anyString(), eq(null)); - doThrow(new IOException()).when(fakeAssetFileDescriptor).close(); - assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); - verify(fakeAssetFileDescriptor).close(); + @Test + public void platformPlugin_getClipboardDataIsNullWhenNonContentUriProvided() throws IOException { + View fakeDecorView = mock(View.class); + Window fakeWindow = mock(Window.class); + Activity mockActivity = mock(Activity.class); + when(fakeWindow.getDecorView()).thenReturn(fakeDecorView); + when(mockActivity.getWindow()).thenReturn(fakeWindow); + PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel); + setUpForTextClipboardTests(mockActivity); + ContentResolver contentResolver = ctx.getContentResolver(); + + when(mockActivity.getContentResolver()).thenReturn(contentResolver); + + Uri uri = Uri.parse("file:///"); + ClipData clip = ClipData.newUri(contentResolver, "URI", uri); + + clipboardManager.setPrimaryClip(clip); + assertNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); + } + + @Test + public void platformPlugin_getClipboardDataIsNullWhenItemHasNoTextNorUri() throws IOException { + View fakeDecorView = mock(View.class); + Window fakeWindow = mock(Window.class); + Activity mockActivity = mock(Activity.class); + when(fakeWindow.getDecorView()).thenReturn(fakeDecorView); + when(mockActivity.getWindow()).thenReturn(fakeWindow); + PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel); + setUpForTextClipboardTests(mockActivity); + ClipData.Item mockItem = mock(ClipData.Item.class); + + when(mockItem.getText()).thenReturn(null); + when(mockItem.getUri()).thenReturn(null); + + ClipData clip = new ClipData("label", new String[0], mockItem); + + clipboardManager.setPrimaryClip(clip); + assertNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); } @SuppressWarnings("deprecation") @@ -136,16 +229,13 @@ public void platformPlugin_getClipboardData() throws IOException { @Config(sdk = Build.VERSION_CODES.P) @Test public void platformPlugin_hasStrings() { - ClipboardManager clipboardManager = spy(ctx.getSystemService(ClipboardManager.class)); - View fakeDecorView = mock(View.class); Window fakeWindow = mock(Window.class); + Activity mockActivity = mock(Activity.class); when(fakeWindow.getDecorView()).thenReturn(fakeDecorView); - Activity fakeActivity = mock(Activity.class); - when(fakeActivity.getWindow()).thenReturn(fakeWindow); - when(fakeActivity.getSystemService(Context.CLIPBOARD_SERVICE)).thenReturn(clipboardManager); - PlatformChannel fakePlatformChannel = mock(PlatformChannel.class); - PlatformPlugin platformPlugin = new PlatformPlugin(fakeActivity, fakePlatformChannel); + when(mockActivity.getWindow()).thenReturn(fakeWindow); + PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel); + setUpForTextClipboardTests(mockActivity); // Plain text ClipData clip = ClipData.newPlainText("label", "Text"); @@ -192,11 +282,10 @@ public void platformPlugin_hasStrings() { public void setNavigationBarDividerColor() { View fakeDecorView = mock(View.class); Window fakeWindow = mock(Window.class); + Activity mockActivity = mock(Activity.class); when(fakeWindow.getDecorView()).thenReturn(fakeDecorView); - Activity fakeActivity = mock(Activity.class); - when(fakeActivity.getWindow()).thenReturn(fakeWindow); - PlatformChannel fakePlatformChannel = mock(PlatformChannel.class); - PlatformPlugin platformPlugin = new PlatformPlugin(fakeActivity, fakePlatformChannel); + when(mockActivity.getWindow()).thenReturn(fakeWindow); + PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel); if (Build.VERSION.SDK_INT >= 28) { // Default style test @@ -265,16 +354,16 @@ public void setNavigationBarDividerColor() { @Config(sdk = Build.VERSION_CODES.R) @Test public void setNavigationBarIconBrightness() { + View fakeDecorView = mock(View.class); + Window fakeWindow = mock(Window.class); + Activity mockActivity = mock(Activity.class); + when(fakeWindow.getDecorView()).thenReturn(fakeDecorView); + when(mockActivity.getWindow()).thenReturn(fakeWindow); + PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel); + if (Build.VERSION.SDK_INT >= 30) { - View fakeDecorView = mock(View.class); WindowInsetsController fakeWindowInsetsController = mock(WindowInsetsController.class); - Window fakeWindow = mock(Window.class); - when(fakeWindow.getDecorView()).thenReturn(fakeDecorView); when(fakeWindow.getInsetsController()).thenReturn(fakeWindowInsetsController); - Activity fakeActivity = mock(Activity.class); - when(fakeActivity.getWindow()).thenReturn(fakeWindow); - PlatformChannel fakePlatformChannel = mock(PlatformChannel.class); - PlatformPlugin platformPlugin = new PlatformPlugin(fakeActivity, fakePlatformChannel); SystemChromeStyle style = new SystemChromeStyle( @@ -312,16 +401,16 @@ public void setNavigationBarIconBrightness() { @Config(sdk = Build.VERSION_CODES.R) @Test public void setStatusBarIconBrightness() { + View fakeDecorView = mock(View.class); + Window fakeWindow = mock(Window.class); + Activity mockActivity = mock(Activity.class); + when(fakeWindow.getDecorView()).thenReturn(fakeDecorView); + when(mockActivity.getWindow()).thenReturn(fakeWindow); + PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel); + if (Build.VERSION.SDK_INT >= 30) { - View fakeDecorView = mock(View.class); WindowInsetsController fakeWindowInsetsController = mock(WindowInsetsController.class); - Window fakeWindow = mock(Window.class); - when(fakeWindow.getDecorView()).thenReturn(fakeDecorView); when(fakeWindow.getInsetsController()).thenReturn(fakeWindowInsetsController); - Activity fakeActivity = mock(Activity.class); - when(fakeActivity.getWindow()).thenReturn(fakeWindow); - PlatformChannel fakePlatformChannel = mock(PlatformChannel.class); - PlatformPlugin platformPlugin = new PlatformPlugin(fakeActivity, fakePlatformChannel); SystemChromeStyle style = new SystemChromeStyle( @@ -361,11 +450,10 @@ public void setStatusBarIconBrightness() { public void setSystemUiMode() { View fakeDecorView = mock(View.class); Window fakeWindow = mock(Window.class); + Activity mockActivity = mock(Activity.class); when(fakeWindow.getDecorView()).thenReturn(fakeDecorView); - Activity fakeActivity = mock(Activity.class); - when(fakeActivity.getWindow()).thenReturn(fakeWindow); - PlatformChannel fakePlatformChannel = mock(PlatformChannel.class); - PlatformPlugin platformPlugin = new PlatformPlugin(fakeActivity, fakePlatformChannel); + when(mockActivity.getWindow()).thenReturn(fakeWindow); + PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel); if (Build.VERSION.SDK_INT >= 28) { platformPlugin.mPlatformMessageHandler.showSystemUiMode( @@ -420,8 +508,7 @@ public void setSystemUiModeListener_overlaysAreHidden() { controller.setup(); Activity fakeActivity = controller.get(); - PlatformChannel fakePlatformChannel = mock(PlatformChannel.class); - PlatformPlugin platformPlugin = new PlatformPlugin(fakeActivity, fakePlatformChannel); + PlatformPlugin platformPlugin = new PlatformPlugin(fakeActivity, mockPlatformChannel); // Subscribe to system UI visibility events. platformPlugin.mPlatformMessageHandler.setSystemUiChangeListener(); @@ -434,13 +521,13 @@ public void setSystemUiModeListener_overlaysAreHidden() { // No events should have been sent to the platform channel yet. They are scheduled for // the next frame. - verify(fakePlatformChannel, never()).systemChromeChanged(anyBoolean()); + verify(mockPlatformChannel, never()).systemChromeChanged(anyBoolean()); // Simulate the next frame. ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); // Now the platform channel should receive the event. - verify(fakePlatformChannel).systemChromeChanged(false); + verify(mockPlatformChannel).systemChromeChanged(false); } @SuppressWarnings("deprecation") @@ -450,9 +537,7 @@ public void setSystemUiModeListener_overlaysAreVisible() { ActivityController controller = Robolectric.buildActivity(Activity.class); controller.setup(); Activity fakeActivity = controller.get(); - - PlatformChannel fakePlatformChannel = mock(PlatformChannel.class); - PlatformPlugin platformPlugin = new PlatformPlugin(fakeActivity, fakePlatformChannel); + PlatformPlugin platformPlugin = new PlatformPlugin(fakeActivity, mockPlatformChannel); // Subscribe to system Ui visibility events. platformPlugin.mPlatformMessageHandler.setSystemUiChangeListener(); @@ -462,13 +547,13 @@ public void setSystemUiModeListener_overlaysAreVisible() { // No events should have been sent to the platform channel yet. They are scheduled for // the next frame. - verify(fakePlatformChannel, never()).systemChromeChanged(anyBoolean()); + verify(mockPlatformChannel, never()).systemChromeChanged(anyBoolean()); // Simulate the next frame. ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); // Now the platform channel should receive the event. - verify(fakePlatformChannel).systemChromeChanged(true); + verify(mockPlatformChannel).systemChromeChanged(true); } @SuppressWarnings("deprecation") @@ -478,11 +563,10 @@ public void setSystemUiModeListener_overlaysAreVisible() { public void doNotEnableEdgeToEdgeOnOlderSdk() { View fakeDecorView = mock(View.class); Window fakeWindow = mock(Window.class); + Activity mockActivity = mock(Activity.class); when(fakeWindow.getDecorView()).thenReturn(fakeDecorView); - Activity fakeActivity = mock(Activity.class); - when(fakeActivity.getWindow()).thenReturn(fakeWindow); - PlatformChannel fakePlatformChannel = mock(PlatformChannel.class); - PlatformPlugin platformPlugin = new PlatformPlugin(fakeActivity, fakePlatformChannel); + when(mockActivity.getWindow()).thenReturn(fakeWindow); + PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel); platformPlugin.mPlatformMessageHandler.showSystemUiMode( PlatformChannel.SystemUiMode.EDGE_TO_EDGE); @@ -500,11 +584,10 @@ public void doNotEnableEdgeToEdgeOnOlderSdk() { public void verifyWindowFlagsSetToStyleOverlays() { View fakeDecorView = mock(View.class); Window fakeWindow = mock(Window.class); + Activity mockActivity = mock(Activity.class); when(fakeWindow.getDecorView()).thenReturn(fakeDecorView); - Activity fakeActivity = mock(Activity.class); - when(fakeActivity.getWindow()).thenReturn(fakeWindow); - PlatformChannel fakePlatformChannel = mock(PlatformChannel.class); - PlatformPlugin platformPlugin = new PlatformPlugin(fakeActivity, fakePlatformChannel); + when(mockActivity.getWindow()).thenReturn(fakeWindow); + PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel); SystemChromeStyle style = new SystemChromeStyle( @@ -521,7 +604,6 @@ public void verifyWindowFlagsSetToStyleOverlays() { @Test public void setFrameworkHandlesBackFlutterActivity() { Activity mockActivity = mock(Activity.class); - PlatformChannel mockPlatformChannel = mock(PlatformChannel.class); PlatformPluginDelegate mockPlatformPluginDelegate = mock(PlatformPluginDelegate.class); PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel, mockPlatformPluginDelegate); @@ -534,12 +616,12 @@ public void setFrameworkHandlesBackFlutterActivity() { @Test public void popSystemNavigatorFlutterActivity() { Activity mockActivity = mock(Activity.class); - PlatformChannel mockPlatformChannel = mock(PlatformChannel.class); PlatformPluginDelegate mockPlatformPluginDelegate = mock(PlatformPluginDelegate.class); - when(mockPlatformPluginDelegate.popSystemNavigator()).thenReturn(false); PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel, mockPlatformPluginDelegate); + when(mockPlatformPluginDelegate.popSystemNavigator()).thenReturn(false); + platformPlugin.mPlatformMessageHandler.popSystemNavigator(); verify(mockPlatformPluginDelegate, times(1)).popSystemNavigator(); @@ -549,12 +631,12 @@ public void popSystemNavigatorFlutterActivity() { @Test public void doesNotDoAnythingByDefaultIfPopSystemNavigatorOverridden() { Activity mockActivity = mock(Activity.class); - PlatformChannel mockPlatformChannel = mock(PlatformChannel.class); PlatformPluginDelegate mockPlatformPluginDelegate = mock(PlatformPluginDelegate.class); - when(mockPlatformPluginDelegate.popSystemNavigator()).thenReturn(true); PlatformPlugin platformPlugin = new PlatformPlugin(mockActivity, mockPlatformChannel, mockPlatformPluginDelegate); + when(mockPlatformPluginDelegate.popSystemNavigator()).thenReturn(true); + platformPlugin.mPlatformMessageHandler.popSystemNavigator(); verify(mockPlatformPluginDelegate, times(1)).popSystemNavigator(); @@ -579,7 +661,6 @@ public void handleOnBackPressed() { }; activity.getOnBackPressedDispatcher().addCallback(backCallback); - PlatformChannel mockPlatformChannel = mock(PlatformChannel.class); PlatformPluginDelegate mockPlatformPluginDelegate = mock(PlatformPluginDelegate.class); when(mockPlatformPluginDelegate.popSystemNavigator()).thenReturn(false); PlatformPlugin platformPlugin = @@ -598,7 +679,6 @@ public void handleOnBackPressed() { @Test public void doesNotDoAnythingByDefaultIfFragmentPopSystemNavigatorOverridden() { FragmentActivity activity = spy(Robolectric.setupActivity(FragmentActivity.class)); - PlatformChannel mockPlatformChannel = mock(PlatformChannel.class); PlatformPluginDelegate mockPlatformPluginDelegate = mock(PlatformPluginDelegate.class); when(mockPlatformPluginDelegate.popSystemNavigator()).thenReturn(true); PlatformPlugin platformPlugin = @@ -614,7 +694,6 @@ public void doesNotDoAnythingByDefaultIfFragmentPopSystemNavigatorOverridden() { @Test public void setRequestedOrientationFlutterFragment() { FragmentActivity mockFragmentActivity = mock(FragmentActivity.class); - PlatformChannel mockPlatformChannel = mock(PlatformChannel.class); PlatformPluginDelegate mockPlatformPluginDelegate = mock(PlatformPluginDelegate.class); when(mockPlatformPluginDelegate.popSystemNavigator()).thenReturn(false); PlatformPlugin platformPlugin = From 0895deef696b8887cd3528f2e85832090092a787 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Thu, 30 Nov 2023 16:32:31 -0800 Subject: [PATCH 24/26] Avoid reloading the kernel snapshot when spawning an isolate in the same group (#48478) Found by @mraleph while looking at flutter_tester related things with me. I took some suggestions from him and added a test. This should eventually help speed up running large multi-file test suites. The test is a little bit wonky because we don't have great inspection points (e.g. something to mock or examine from a test). It should break if we change the way we load kernel assets in the test harness, and is verifying that we only ask for the test asset once where we used to ask for it twice. --- runtime/dart_isolate.cc | 92 ++++++++++++++------------ runtime/dart_isolate.h | 5 +- runtime/dart_isolate_unittests.cc | 103 ++++++++++++++++++++++++++++++ runtime/isolate_configuration.cc | 8 ++- runtime/isolate_configuration.h | 18 +++++- 5 files changed, 181 insertions(+), 45 deletions(-) diff --git a/runtime/dart_isolate.cc b/runtime/dart_isolate.cc index 910b0d4580ed8..6bde83da9790c 100644 --- a/runtime/dart_isolate.cc +++ b/runtime/dart_isolate.cc @@ -196,25 +196,15 @@ std::weak_ptr DartIsolate::CreateRootIsolate( const DartIsolate* spawning_isolate) { TRACE_EVENT0("flutter", "DartIsolate::CreateRootIsolate"); - // The child isolate preparer is null but will be set when the isolate is - // being prepared to run. - auto isolate_group_data = - std::make_unique>( - std::shared_ptr(new DartIsolateGroupData( - settings, // settings - std::move(isolate_snapshot), // isolate snapshot - context.advisory_script_uri, // advisory URI - context.advisory_script_entrypoint, // advisory entrypoint - nullptr, // child isolate preparer - isolate_create_callback, // isolate create callback - isolate_shutdown_callback // isolate shutdown callback - ))); + // Only needed if this is the main isolate for the group. + std::unique_ptr> isolate_group_data; auto isolate_data = std::make_unique>( - std::shared_ptr(new DartIsolate(settings, // settings - true, // is_root_isolate - context // context - ))); + std::shared_ptr(new DartIsolate( + /*settings=*/settings, + /*is_root_isolate=*/true, + /*context=*/context, + /*is_spawning_in_group=*/!!spawning_isolate))); DartErrorString error; Dart_Isolate vm_isolate = nullptr; @@ -222,24 +212,40 @@ std::weak_ptr DartIsolate::CreateRootIsolate( IsolateMaker isolate_maker; if (spawning_isolate) { - isolate_maker = [spawning_isolate]( - std::shared_ptr* - isolate_group_data, - std::shared_ptr* isolate_data, - Dart_IsolateFlags* flags, char** error) { - return Dart_CreateIsolateInGroup( - /*group_member=*/spawning_isolate->isolate(), - /*name=*/(*isolate_group_data)->GetAdvisoryScriptEntrypoint().c_str(), - /*shutdown_callback=*/ - reinterpret_cast( - DartIsolate::SpawnIsolateShutdownCallback), - /*cleanup_callback=*/ - reinterpret_cast( - DartIsolateCleanupCallback), - /*child_isolate_data=*/isolate_data, - /*error=*/error); - }; + isolate_maker = + [spawning_isolate]( + std::shared_ptr* isolate_group_data, + std::shared_ptr* isolate_data, + Dart_IsolateFlags* flags, char** error) { + return Dart_CreateIsolateInGroup( + /*group_member=*/spawning_isolate->isolate(), + /*name=*/ + spawning_isolate->GetIsolateGroupData() + .GetAdvisoryScriptEntrypoint() + .c_str(), + /*shutdown_callback=*/ + reinterpret_cast( + DartIsolate::SpawnIsolateShutdownCallback), + /*cleanup_callback=*/ + reinterpret_cast( + DartIsolateCleanupCallback), + /*child_isolate_data=*/isolate_data, + /*error=*/error); + }; } else { + // The child isolate preparer is null but will be set when the isolate is + // being prepared to run. + isolate_group_data = + std::make_unique>( + std::shared_ptr(new DartIsolateGroupData( + settings, // settings + std::move(isolate_snapshot), // isolate snapshot + context.advisory_script_uri, // advisory URI + context.advisory_script_entrypoint, // advisory entrypoint + nullptr, // child isolate preparer + isolate_create_callback, // isolate create callback + isolate_shutdown_callback // isolate shutdown callback + ))); isolate_maker = [](std::shared_ptr* isolate_group_data, std::shared_ptr* isolate_data, @@ -276,7 +282,8 @@ std::weak_ptr DartIsolate::CreateRootIsolate( DartIsolate::DartIsolate(const Settings& settings, bool is_root_isolate, - const UIDartState::Context& context) + const UIDartState::Context& context, + bool is_spawning_in_group) : UIDartState(settings.task_observer_add, settings.task_observer_remove, settings.log_tag, @@ -287,7 +294,8 @@ DartIsolate::DartIsolate(const Settings& settings, context), may_insecurely_connect_to_all_domains_( settings.may_insecurely_connect_to_all_domains), - domain_network_policy_(settings.domain_network_policy) { + domain_network_policy_(settings.domain_network_policy), + is_spawning_in_group_(is_spawning_in_group) { phase_ = Phase::Uninitialized; } @@ -548,13 +556,13 @@ bool DartIsolate::LoadKernel(const std::shared_ptr& mapping, return false; } - if (!mapping || mapping->GetSize() == 0) { - return false; - } - tonic::DartState::Scope scope(this); - if (!child_isolate) { + if (!child_isolate && !is_spawning_in_group_) { + if (!mapping || mapping->GetSize() == 0) { + return false; + } + // Use root library provided by kernel in favor of one provided by snapshot. Dart_SetRootLibrary(Dart_Null()); @@ -923,7 +931,7 @@ Dart_Isolate DartIsolate::DartIsolateGroupCreateCallback( }); if (*error) { - FML_LOG(ERROR) << "CreateDartIsolateGroup failed: " << error; + FML_LOG(ERROR) << "CreateDartIsolateGroup failed: " << *error; } return vm_isolate; diff --git a/runtime/dart_isolate.h b/runtime/dart_isolate.h index 04e413a68bb29..0cc5e90345b5d 100644 --- a/runtime/dart_isolate.h +++ b/runtime/dart_isolate.h @@ -20,6 +20,7 @@ #include "flutter/lib/ui/ui_dart_state.h" #include "flutter/lib/ui/window/platform_configuration.h" #include "flutter/runtime/dart_snapshot.h" +#include "runtime/isolate_configuration.h" #include "third_party/dart/runtime/include/dart_api.h" #include "third_party/tonic/dart_state.h" @@ -412,6 +413,7 @@ class DartIsolate : public UIDartState { fml::RefPtr message_handling_task_runner_; const bool may_insecurely_connect_to_all_domains_; std::string domain_network_policy_; + const bool is_spawning_in_group_; static std::weak_ptr CreateRootIsolate( const Settings& settings, @@ -425,7 +427,8 @@ class DartIsolate : public UIDartState { DartIsolate(const Settings& settings, bool is_root_isolate, - const UIDartState::Context& context); + const UIDartState::Context& context, + bool is_spawning_in_group = false); //---------------------------------------------------------------------------- /// @brief Initializes the given (current) isolate. diff --git a/runtime/dart_isolate_unittests.cc b/runtime/dart_isolate_unittests.cc index 2a299f3150c2f..b8a42860ae7e0 100644 --- a/runtime/dart_isolate_unittests.cc +++ b/runtime/dart_isolate_unittests.cc @@ -592,6 +592,109 @@ TEST_F(DartIsolateTest, DartPluginRegistrantIsCalled) { ASSERT_EQ(messages[0], "_PluginRegistrant.register() was called"); } +TEST_F(DartIsolateTest, SpawningAnIsolateDoesNotReloadKernel) { + ASSERT_FALSE(DartVMRef::IsInstanceRunning()); + auto settings = CreateSettingsForFixture(); + auto vm_ref = DartVMRef::Create(settings); + ASSERT_TRUE(vm_ref); + auto vm_data = vm_ref.GetVMData(); + ASSERT_TRUE(vm_data); + TaskRunners task_runners(GetCurrentTestName(), // + GetCurrentTaskRunner(), // + GetCurrentTaskRunner(), // + GetCurrentTaskRunner(), // + GetCurrentTaskRunner() // + ); + + size_t get_kernel_count = 0u; + if (!DartVM::IsRunningPrecompiledCode()) { + ASSERT_TRUE(settings.application_kernels); + auto mappings = settings.application_kernels(); + ASSERT_EQ(mappings.size(), 1u); + + // This feels a little brittle, but the alternative seems to be making + // DartIsolate have virtual methods so it can be mocked or exposing weird + // test-only API on IsolateConfiguration. + settings.application_kernels = fml::MakeCopyable( + [&get_kernel_count, + mapping = std::move(mappings.front())]() mutable -> Mappings { + get_kernel_count++; + EXPECT_EQ(get_kernel_count, 1u) + << "Unexpectedly got more than one call for the kernel mapping."; + EXPECT_TRUE(mapping); + std::vector> kernel_mappings; + if (mapping) { + kernel_mappings.emplace_back(std::move(mapping)); + } + return kernel_mappings; + }); + } + + std::shared_ptr root_isolate; + { + auto isolate_configuration = + IsolateConfiguration::InferFromSettings(settings); + + UIDartState::Context context(task_runners); + context.advisory_script_uri = "main.dart"; + context.advisory_script_entrypoint = "main"; + auto weak_isolate = DartIsolate::CreateRunningRootIsolate( + /*settings=*/vm_data->GetSettings(), + /*isolate_snapshot=*/vm_data->GetIsolateSnapshot(), + /*platform_configuration=*/nullptr, + /*flags=*/DartIsolate::Flags{}, + /*root_isolate_create_callback=*/nullptr, + /*isolate_create_callback=*/settings.isolate_create_callback, + /*isolate_shutdown_callback=*/settings.isolate_shutdown_callback, + /*dart_entrypoint=*/"main", + /*dart_entrypoint_library=*/std::nullopt, + /*dart_entrypoint_args=*/{}, + /*isolate_configuration=*/std::move(isolate_configuration), + /*context=*/context); + root_isolate = weak_isolate.lock(); + } + ASSERT_TRUE(root_isolate); + ASSERT_EQ(root_isolate->GetPhase(), DartIsolate::Phase::Running); + if (!DartVM::IsRunningPrecompiledCode()) { + ASSERT_EQ(get_kernel_count, 1u); + } + + { + auto isolate_configuration = IsolateConfiguration::InferFromSettings( + /*settings=*/settings, + /*asset_manager=*/nullptr, + /*io_worker=*/nullptr, + /*launch_type=*/IsolateLaunchType::kExistingGroup); + + UIDartState::Context context(task_runners); + context.advisory_script_uri = "main.dart"; + context.advisory_script_entrypoint = "main"; + auto weak_isolate = DartIsolate::CreateRunningRootIsolate( + /*settings=*/vm_data->GetSettings(), + /*isolate_snapshot=*/vm_data->GetIsolateSnapshot(), + /*platform_configuration=*/nullptr, + /*flags=*/DartIsolate::Flags{}, + /*root_isolate_create_callback=*/nullptr, + /*isolate_create_callback=*/settings.isolate_create_callback, + /*isolate_shutdown_callback=*/settings.isolate_shutdown_callback, + /*dart_entrypoint=*/"main", + /*dart_entrypoint_library=*/std::nullopt, + /*dart_entrypoint_args=*/{}, + /*isolate_configuration=*/std::move(isolate_configuration), + /*context=*/context, + /*spawning_isolate=*/root_isolate.get()); + auto spawned_isolate = weak_isolate.lock(); + ASSERT_TRUE(spawned_isolate); + ASSERT_EQ(spawned_isolate->GetPhase(), DartIsolate::Phase::Running); + if (!DartVM::IsRunningPrecompiledCode()) { + ASSERT_EQ(get_kernel_count, 1u); + } + ASSERT_TRUE(spawned_isolate->Shutdown()); + } + + ASSERT_TRUE(root_isolate->Shutdown()); +} + } // namespace testing } // namespace flutter diff --git a/runtime/isolate_configuration.cc b/runtime/isolate_configuration.cc index 54eb6c35ee3c4..ffbc28e035496 100644 --- a/runtime/isolate_configuration.cc +++ b/runtime/isolate_configuration.cc @@ -43,6 +43,7 @@ class AppSnapshotIsolateConfiguration final : public IsolateConfiguration { class KernelIsolateConfiguration : public IsolateConfiguration { public: + // The kernel mapping may be nullptr if reusing the group's loaded kernel. explicit KernelIsolateConfiguration( std::unique_ptr kernel) : kernel_(std::move(kernel)) {} @@ -202,12 +203,17 @@ PrepareKernelMappings(const std::vector& kernel_pieces_paths, std::unique_ptr IsolateConfiguration::InferFromSettings( const Settings& settings, const std::shared_ptr& asset_manager, - const fml::RefPtr& io_worker) { + const fml::RefPtr& io_worker, + IsolateLaunchType launch_type) { // Running in AOT mode. if (DartVM::IsRunningPrecompiledCode()) { return CreateForAppSnapshot(); } + if (launch_type == IsolateLaunchType::kExistingGroup) { + return CreateForKernel(nullptr); + } + if (settings.application_kernels) { return CreateForKernelList(settings.application_kernels()); } diff --git a/runtime/isolate_configuration.h b/runtime/isolate_configuration.h index 46f9c9368c2d3..a4c809ee9fbea 100644 --- a/runtime/isolate_configuration.h +++ b/runtime/isolate_configuration.h @@ -19,6 +19,17 @@ namespace flutter { +/// Describes whether the isolate is part of a group or not. +/// +/// If the isolate is part of a group, it avoids reloading the kernel snapshot. +enum class IsolateLaunchType { + /// The isolate is launched as a solo isolate or to start a new group. + kNewGroup, + /// The isolate is launched as part of a group, and avoids reloading the + /// kernel snapshot. + kExistingGroup, +}; + //------------------------------------------------------------------------------ /// @brief An isolate configuration is a collection of snapshots and asset /// managers that the engine will use to configure the isolate @@ -57,6 +68,10 @@ class IsolateConfiguration { /// @param[in] io_worker An optional IO worker. Specify `nullptr` if a /// worker should not be used or one is not /// available. + /// @param[in] launch_type Whether the isolate is launching to form a new + /// group or as part of an existing group. If it is + /// part of an existing group, the isolate will + /// reuse resources if it can. /// /// @return An isolate configuration if one can be inferred from the /// settings. If not, returns `nullptr`. @@ -64,7 +79,8 @@ class IsolateConfiguration { [[nodiscard]] static std::unique_ptr InferFromSettings( const Settings& settings, const std::shared_ptr& asset_manager = nullptr, - const fml::RefPtr& io_worker = nullptr); + const fml::RefPtr& io_worker = nullptr, + IsolateLaunchType launch_type = IsolateLaunchType::kNewGroup); //---------------------------------------------------------------------------- /// @brief Creates an AOT isolate configuration using snapshot symbols From 63484b316d786c06e0a494ede2e84b276f2c63ba Mon Sep 17 00:00:00 2001 From: Harry Terkelsen <1961493+harryterkelsen@users.noreply.github.com> Date: Thu, 30 Nov 2023 16:37:07 -0800 Subject: [PATCH 25/26] [canvaskit] Add ImageFilter.compose (#48546) Adds ImageFilter.compose support in CanvasKit. Previously this would crash. Fixes https://github.com/flutter/flutter/issues/120123 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide] and the [C++, Objective-C, Java style guides]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I added new tests to check the change I am making or feature I am adding, or the PR is [test-exempt]. See [testing the engine] for instructions on writing and running engine tests. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I signed the [CLA]. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. [Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview [Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene [test-exempt]: https://github.com/flutter/flutter/wiki/Tree-hygiene#tests [Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style [testing the engine]: https://github.com/flutter/flutter/wiki/Testing-the-engine [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/wiki/Chat --- .../src/engine/canvaskit/image_filter.dart | 47 +++++++++++++++++++ .../lib/src/engine/canvaskit/renderer.dart | 15 ++++-- lib/web_ui/test/canvaskit/filter_test.dart | 47 ++++++++++++++++++- lib/web_ui/test/ui/filters_test.dart | 4 +- 4 files changed, 106 insertions(+), 7 deletions(-) diff --git a/lib/web_ui/lib/src/engine/canvaskit/image_filter.dart b/lib/web_ui/lib/src/engine/canvaskit/image_filter.dart index 2032ccdd88670..8ce379fb1b064 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/image_filter.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/image_filter.dart @@ -40,6 +40,9 @@ abstract class CkImageFilter implements CkManagedSkImageFilterConvertible { factory CkImageFilter.matrix( {required Float64List matrix, required ui.FilterQuality filterQuality}) = _CkMatrixImageFilter; + factory CkImageFilter.compose( + {required CkImageFilter outer, + required CkImageFilter inner}) = _CkComposeImageFilter; CkImageFilter._(); @@ -194,3 +197,47 @@ class _CkMatrixImageFilter extends CkImageFilter { @override Matrix4 get transform => _transform; } + +class _CkComposeImageFilter extends CkImageFilter { + _CkComposeImageFilter({required this.outer, required this.inner}) + : super._() { + outer.imageFilter((SkImageFilter outerFilter) { + inner.imageFilter((SkImageFilter innerFilter) { + final SkImageFilter skImageFilter = canvasKit.ImageFilter.MakeCompose( + outerFilter, + innerFilter, + ); + _ref = UniqueRef( + this, skImageFilter, 'ImageFilter.compose'); + }); + }); + } + + final CkImageFilter outer; + final CkImageFilter inner; + + late final UniqueRef _ref; + + @override + void imageFilter(SkImageFilterBorrow borrow) { + borrow(_ref.nativeObject); + } + + @override + bool operator ==(Object other) { + if (runtimeType != other.runtimeType) { + return false; + } + return other is _CkComposeImageFilter && + other.outer == outer && + other.inner == inner; + } + + @override + int get hashCode => Object.hash(outer, inner); + + @override + String toString() { + return 'ImageFilter.compose($outer, $inner)'; + } +} diff --git a/lib/web_ui/lib/src/engine/canvaskit/renderer.dart b/lib/web_ui/lib/src/engine/canvaskit/renderer.dart index a948b5b55f08c..1caf88ffaa80e 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/renderer.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/renderer.dart @@ -192,9 +192,18 @@ class CanvasKitRenderer implements Renderer { }) => CkImageFilter.matrix(matrix: matrix4, filterQuality: filterQuality); @override - ui.ImageFilter composeImageFilters({required ui.ImageFilter outer, required ui.ImageFilter inner}) { - // TODO(ferhat): add implementation - throw UnimplementedError('ImageFilter.compose not implemented for CanvasKit.'); + ui.ImageFilter composeImageFilters( + {required ui.ImageFilter outer, required ui.ImageFilter inner}) { + if (outer is EngineColorFilter) { + final CkColorFilter colorFilter = createCkColorFilter(outer)!; + outer = CkColorFilterImageFilter(colorFilter: colorFilter); + } + if (inner is EngineColorFilter) { + final CkColorFilter colorFilter = createCkColorFilter(inner)!; + inner = CkColorFilterImageFilter(colorFilter: colorFilter); + } + return CkImageFilter.compose( + outer: outer as CkImageFilter, inner: inner as CkImageFilter); } @override diff --git a/lib/web_ui/test/canvaskit/filter_test.dart b/lib/web_ui/test/canvaskit/filter_test.dart index 5ca14f831a03c..750df247d85ec 100644 --- a/lib/web_ui/test/canvaskit/filter_test.dart +++ b/lib/web_ui/test/canvaskit/filter_test.dart @@ -38,12 +38,15 @@ void testMain() { } List createImageFilters() { - return [ + final List filters = [ CkImageFilter.blur(sigmaX: 5, sigmaY: 6, tileMode: ui.TileMode.clamp), CkImageFilter.blur(sigmaX: 6, sigmaY: 5, tileMode: ui.TileMode.clamp), CkImageFilter.blur(sigmaX: 6, sigmaY: 5, tileMode: ui.TileMode.decal), for (final CkColorFilter colorFilter in createColorFilters()) CkImageFilter.color(colorFilter: colorFilter), ]; + filters.add(CkImageFilter.compose(outer: filters[0], inner: filters[1])); + filters.add(CkImageFilter.compose(outer: filters[1], inner: filters[3])); + return filters; } setUpCanvasKitTest(); @@ -156,7 +159,47 @@ void testMain() { builder.addPicture(ui.Offset.zero, redCircle1); // The drawn red circle should actually be green with the colorFilter. - await matchSceneGolden('canvaskit_imageFilter_using_colorFilter.png', builder.build(), region: region); + await matchSceneGolden( + 'canvaskit_imageFilter_using_colorFilter.png', builder.build(), + region: region); + }); + + test('using a compose filter', () async { + final CkImageFilter blurFilter = CkImageFilter.blur( + sigmaX: 5, + sigmaY: 5, + tileMode: ui.TileMode.clamp, + ); + final CkColorFilter colorFilter = createCkColorFilter( + const EngineColorFilter.mode( + ui.Color.fromARGB(255, 0, 255, 0), ui.BlendMode.srcIn))!; + final CkImageFilter colorImageFilter = + CkImageFilter.color(colorFilter: colorFilter); + final CkImageFilter composeFilter = + CkImageFilter.compose(outer: blurFilter, inner: colorImageFilter); + + const ui.Rect region = ui.Rect.fromLTRB(0, 0, 500, 250); + + final LayerSceneBuilder builder = LayerSceneBuilder(); + builder.pushOffset(0, 0); + + builder.pushImageFilter(composeFilter); + + final CkPictureRecorder recorder = CkPictureRecorder(); + final CkCanvas canvas = recorder.beginRecording(region); + + canvas.drawCircle( + const ui.Offset(75, 125), + 50, + CkPaint()..color = const ui.Color.fromARGB(255, 255, 0, 0), + ); + final CkPicture redCircle1 = recorder.endRecording(); + builder.addPicture(ui.Offset.zero, redCircle1); + // The drawn red circle should actually be green and blurred. + + await matchSceneGolden( + 'canvaskit_composeImageFilter.png', builder.build(), + region: region); }); }); diff --git a/lib/web_ui/test/ui/filters_test.dart b/lib/web_ui/test/ui/filters_test.dart index a2151002c8e92..b486447c6186c 100644 --- a/lib/web_ui/test/ui/filters_test.dart +++ b/lib/web_ui/test/ui/filters_test.dart @@ -101,7 +101,7 @@ Future testMain() async { ); await drawTestImageWithPaint(ui.Paint()..imageFilter = filter); await matchGoldenFile('ui_filter_composed_imagefilters.png', region: region); - }, skip: !isSkwasm); // Only Skwasm implements composable filters right now. + }, skip: isHtml); // Only Skwasm and CanvasKit implement composable filters right now. test('compose with colorfilter', () async { final ui.ImageFilter filter = ui.ImageFilter.compose( @@ -116,7 +116,7 @@ Future testMain() async { ); await drawTestImageWithPaint(ui.Paint()..imageFilter = filter); await matchGoldenFile('ui_filter_composed_colorfilter.png', region: region); - }, skip: !isSkwasm); // Only Skwasm implements composable filters right now. + }, skip: isHtml); // Only Skwasm and CanvasKit implements composable filters right now. test('color filter as image filter', () async { const ui.ColorFilter colorFilter = ui.ColorFilter.mode( From c26e6ced11df59666d1a81c25ef836dcf02f8b86 Mon Sep 17 00:00:00 2001 From: Matan Lurey Date: Thu, 30 Nov 2023 17:50:30 -0800 Subject: [PATCH 26/26] Roll a new version of googletest (2021->2023). (#48285) --- DEPS | 2 +- .../secondary/third_party/googletest/BUILD.gn | 67 ++----------------- .../tests/fakes/scenic/fake_flatland_types.h | 28 +++++--- 3 files changed, 27 insertions(+), 70 deletions(-) diff --git a/DEPS b/DEPS index 6688e6905336c..358a2ff9be34a 100644 --- a/DEPS +++ b/DEPS @@ -303,7 +303,7 @@ deps = { Var('chromium_git') + '/external/github.com/google/benchmark' + '@' + '431abd149fd76a072f821913c0340137cc755f36', 'src/third_party/googletest': - Var('chromium_git') + '/external/github.com/google/googletest' + '@' + '054a986a8513149e8374fc669a5fe40117ca6b41', + Var('chromium_git') + '/external/github.com/google/googletest' + '@' + '7f036c5563af7d0329f20e8bb42effb04629f0c0', 'src/third_party/boringssl': Var('dart_git') + '/boringssl_gen.git' + '@' + Var('dart_boringssl_gen_rev'), diff --git a/build/secondary/third_party/googletest/BUILD.gn b/build/secondary/third_party/googletest/BUILD.gn index 72f87cc4749e9..93e54a7fd2a2e 100644 --- a/build/secondary/third_party/googletest/BUILD.gn +++ b/build/secondary/third_party/googletest/BUILD.gn @@ -21,41 +21,12 @@ static_library("gtest") { "googletest/include/gtest/gtest-spi.h", "googletest/include/gtest/gtest.h", ] - sources = [ - "googletest/include/gtest/gtest-death-test.h", - "googletest/include/gtest/gtest-message.h", - "googletest/include/gtest/gtest-param-test.h", - "googletest/include/gtest/gtest-printers.h", - "googletest/include/gtest/gtest-test-part.h", - "googletest/include/gtest/gtest-typed-test.h", - "googletest/include/gtest/gtest_pred_impl.h", - "googletest/include/gtest/gtest_prod.h", - "googletest/include/gtest/internal/custom/gtest-port.h", - "googletest/include/gtest/internal/custom/gtest-printers.h", - "googletest/include/gtest/internal/custom/gtest.h", - "googletest/include/gtest/internal/gtest-death-test-internal.h", - "googletest/include/gtest/internal/gtest-filepath.h", - "googletest/include/gtest/internal/gtest-internal.h", - "googletest/include/gtest/internal/gtest-linked_ptr.h", - "googletest/include/gtest/internal/gtest-param-util-generated.h", - "googletest/include/gtest/internal/gtest-param-util.h", - "googletest/include/gtest/internal/gtest-port-arch.h", - "googletest/include/gtest/internal/gtest-port.h", - "googletest/include/gtest/internal/gtest-string.h", - "googletest/include/gtest/internal/gtest-tuple.h", - "googletest/include/gtest/internal/gtest-type-util.h", - "googletest/src/gtest-all.cc", - "googletest/src/gtest-death-test.cc", - "googletest/src/gtest-filepath.cc", - "googletest/src/gtest-internal-inl.h", - "googletest/src/gtest-matchers.cc", - "googletest/src/gtest-port.cc", - "googletest/src/gtest-printers.cc", - "googletest/src/gtest-test-part.cc", - "googletest/src/gtest-typed-test.cc", - "googletest/src/gtest.cc", - ] - sources -= [ "googletest/src/gtest-all.cc" ] + + # Only add the "*-all.cc" files (and no headers) to improve maintainability + # from upstream refactoring. The "*-all.cc" files include the respective + # source files. + sources = [ "googletest/src/gtest-all.cc" ] + public_configs = [ ":gtest_config" ] configs += [ ":gtest_private_config" ] @@ -217,31 +188,7 @@ config("gmock_config") { static_library("gmock") { testonly = true public = [ "googlemock/include/gmock/gmock.h" ] - sources = [ - "googlemock/include/gmock/gmock-actions.h", - "googlemock/include/gmock/gmock-cardinalities.h", - "googlemock/include/gmock/gmock-generated-actions.h", - "googlemock/include/gmock/gmock-generated-function-mockers.h", - "googlemock/include/gmock/gmock-generated-matchers.h", - "googlemock/include/gmock/gmock-generated-nice-strict.h", - "googlemock/include/gmock/gmock-matchers.h", - "googlemock/include/gmock/gmock-more-actions.h", - "googlemock/include/gmock/gmock-more-matchers.h", - "googlemock/include/gmock/gmock-spec-builders.h", - "googlemock/include/gmock/internal/custom/gmock-generated-actions.h", - "googlemock/include/gmock/internal/custom/gmock-matchers.h", - "googlemock/include/gmock/internal/custom/gmock-port.h", - "googlemock/include/gmock/internal/gmock-generated-internal-utils.h", - "googlemock/include/gmock/internal/gmock-internal-utils.h", - "googlemock/include/gmock/internal/gmock-port.h", - "googlemock/src/gmock-all.cc", - "googlemock/src/gmock-cardinalities.cc", - "googlemock/src/gmock-internal-utils.cc", - "googlemock/src/gmock-matchers.cc", - "googlemock/src/gmock-spec-builders.cc", - "googlemock/src/gmock.cc", - ] - sources -= [ "googlemock/src/gmock-all.cc" ] + sources = [ "googlemock/src/gmock-all.cc" ] public_configs = [ ":gmock_config" ] configs += [ ":gmock_private_config" ] deps = [ ":gtest" ] diff --git a/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland_types.h b/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland_types.h index 531c709f0183e..c03b903c228e1 100644 --- a/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland_types.h +++ b/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland_types.h @@ -25,6 +25,9 @@ #include "flutter/fml/macros.h" +namespace fuchsia { +namespace math { + inline bool operator==(const fuchsia::math::SizeU& a, const fuchsia::math::SizeU& b) { return a.width == b.width && a.height == b.height; @@ -56,6 +59,20 @@ inline bool operator==(const fuchsia::math::RectF& a, return a.x == b.x && a.y == b.y && a.width == b.width && a.height == b.height; } +inline bool operator==(const std::optional& a, + const std::optional& b) { + if (a.has_value() != b.has_value()) { + return false; + } + if (!a.has_value()) { + } + return a.value() == b.value(); +} + +} // namespace math + +namespace ui::composition { + inline bool operator==(const fuchsia::ui::composition::ContentId& a, const fuchsia::ui::composition::ContentId& b) { return a.value == b.value; @@ -125,15 +142,8 @@ inline bool operator==( return true; } -inline bool operator==(const std::optional& a, - const std::optional& b) { - if (a.has_value() != b.has_value()) { - return false; - } - if (!a.has_value()) { - } - return a.value() == b.value(); -} +} // namespace ui::composition +} // namespace fuchsia namespace flutter_runner::testing {