// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. part of dart.io; /// Embedder-specific, fine-grained `dart:io` configuration. /// /// This class contains per-Isolate flags that an embedder can set to put /// fine-grained limitations on what process-visible operations Isolates are /// permitted to use (e.g. [exit]). By default, the whole `dart:io` API is /// enabled. When a disallowed operation is attempted, an `UnsupportedError` is /// thrown. @pragma('vm:entry-point') abstract class _EmbedderConfig { /// Whether the isolate may set [Directory.current]. static bool _mayChdir = true; /// Whether the isolate may call [exit]. @pragma("vm:entry-point") static bool _mayExit = true; // Whether the isolate may set [Stdin.echoMode]. @pragma('vm:entry-point') static bool _maySetEchoMode = true; // Whether the isolate may set [Stdin.echoNewlineMode]. @pragma('vm:entry-point') static bool _maySetEchoNewlineMode = true; // Whether the isolate may set [Stdin.lineMode]. @pragma('vm:entry-point') static bool _maySetLineMode = true; /// Whether the isolate may call [sleep]. @pragma('vm:entry-point') static bool _maySleep = true; // TODO(zra): Consider adding: // - an option to disallow modifying SecurityContext.defaultContext // - an option to disallow closing stdout and stderr. }