| // 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. |
| |
| library fuchsia_builtin; |
| |
| import 'dart:async'; |
| import 'dart:io'; |
| import 'dart:_internal' show VMLibraryHooks; |
| |
| // Corelib 'print' implementation. |
| void _print(arg) { |
| _Logger._printString(arg.toString()); |
| try { |
| // If stdout is connected, print to it as well. |
| stdout.writeln(arg); |
| } on FileSystemException catch (_) { |
| // Some Fuchsia applications will not have stdout connected. |
| } |
| } |
| |
| class _Logger { |
| @pragma('vm:external-name', 'Logger_PrintString') |
| external static void _printString(String s); |
| } |
| |
| @pragma('vm:entry-point') |
| late String _rawScript; |
| |
| Uri _scriptUri() { |
| if (_rawScript.startsWith('http:') || |
| _rawScript.startsWith('https:') || |
| _rawScript.startsWith('file:')) { |
| return Uri.parse(_rawScript); |
| } else { |
| return Uri.base.resolveUri(Uri.file(_rawScript)); |
| } |
| } |
| |
| @pragma('vm:external-name', 'ScheduleMicrotask') |
| external void _scheduleMicrotask(void callback()); |
| |
| @pragma('vm:entry-point') |
| _getScheduleMicrotaskClosure() => _scheduleMicrotask; |
| |
| @pragma('vm:entry-point') |
| _setupHooks() { |
| VMLibraryHooks.platformScript = _scriptUri; |
| } |
| |
| @pragma('vm:entry-point') |
| _getPrintClosure() => _print; |