| // 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 html; |
| |
| class Console { |
| const Console._safe(); |
| static const Console _safeConsole = const Console._safe(); |
| |
| bool get _isConsoleDefined => JS('bool', 'typeof console != "undefined"'); |
| |
| MemoryInfo? get memory => |
| _isConsoleDefined ? JS('MemoryInfo', 'window.console.memory') : null; |
| |
| // Even though many of the following JS methods can take in multiple |
| // arguments, we historically and currently limit the number of variable |
| // arguments to 1. Depending on the need, these methods may be updated to |
| // allow for more. |
| |
| // We rename assert to assertCondition here. |
| void assertCondition([bool? condition, Object? arg]) => _isConsoleDefined |
| ? JS('void', 'window.console.assert(#, #)', condition, arg) |
| : null; |
| |
| // clear no longer takes in an argument, but we keep this as optional to |
| // maintain backwards compatibility. |
| void clear([Object? arg]) => |
| _isConsoleDefined ? JS('void', 'window.console.clear(#)', arg) : null; |
| |
| // count takes in a String instead, but we keep this as an Object for |
| // backwards compatibility. |
| void count([Object? arg]) => |
| _isConsoleDefined ? JS('void', 'window.console.count(#)', arg) : null; |
| |
| void countReset([String? arg]) => _isConsoleDefined |
| ? JS('void', 'window.console.countReset(#)', arg) |
| : null; |
| |
| void debug(Object? arg) => |
| _isConsoleDefined ? JS('void', 'window.console.debug(#)', arg) : null; |
| |
| void dir([Object? item, Object? options]) => _isConsoleDefined |
| ? JS('void', 'window.console.dir(#, #)', item, options) |
| : null; |
| |
| void dirxml(Object? arg) => |
| _isConsoleDefined ? JS('void', 'window.console.dirxml(#)', arg) : null; |
| |
| void error(Object? arg) => |
| _isConsoleDefined ? JS('void', 'window.console.error(#)', arg) : null; |
| |
| void group(Object? arg) => |
| _isConsoleDefined ? JS('void', 'window.console.group(#)', arg) : null; |
| |
| void groupCollapsed(Object? arg) => _isConsoleDefined |
| ? JS('void', 'window.console.groupCollapsed(#)', arg) |
| : null; |
| |
| void groupEnd() => |
| _isConsoleDefined ? JS('void', 'window.console.groupEnd()') : null; |
| |
| void info(Object? arg) => |
| _isConsoleDefined ? JS('void', 'window.console.info(#)', arg) : null; |
| |
| void log(Object? arg) => |
| _isConsoleDefined ? JS('void', 'window.console.log(#)', arg) : null; |
| |
| void table([Object? tabularData, List<String>? properties]) => |
| _isConsoleDefined |
| ? JS('void', 'window.console.table(#, #)', tabularData, properties) |
| : null; |
| |
| void time([String? label]) => |
| _isConsoleDefined ? JS('void', 'window.console.time(#)', label) : null; |
| |
| void timeEnd([String? label]) => |
| _isConsoleDefined ? JS('void', 'window.console.timeEnd(#)', label) : null; |
| |
| void timeLog([String? label, Object? arg]) => _isConsoleDefined |
| ? JS('void', 'window.console.timeLog(#, #)', label, arg) |
| : null; |
| |
| void trace(Object? arg) => |
| _isConsoleDefined ? JS('void', 'window.console.trace(#)', arg) : null; |
| |
| void warn(Object? arg) => |
| _isConsoleDefined ? JS('void', 'window.console.warn(#)', arg) : null; |
| |
| // The following are non-standard methods. |
| void profile([String? title]) => |
| _isConsoleDefined ? JS('void', 'window.console.profile(#)', title) : null; |
| |
| void profileEnd([String? title]) => _isConsoleDefined |
| ? JS('void', 'window.console.profileEnd(#)', title) |
| : null; |
| |
| void timeStamp([Object? arg]) => |
| _isConsoleDefined ? JS('void', 'window.console.timeStamp(#)', arg) : null; |
| |
| // The following is deprecated and should be removed once we drop support for |
| // older Safari browsers. |
| void markTimeline(Object? arg) => _isConsoleDefined |
| ? JS('void', 'window.console.markTimeline(#)', arg) |
| : null; |
| } |