summaryrefslogtreecommitdiff
path: root/testing/marionette/logging.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/marionette/logging.js')
-rw-r--r--testing/marionette/logging.js75
1 files changed, 75 insertions, 0 deletions
diff --git a/testing/marionette/logging.js b/testing/marionette/logging.js
new file mode 100644
index 0000000000..d77adfb0cb
--- /dev/null
+++ b/testing/marionette/logging.js
@@ -0,0 +1,75 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+this.EXPORTED_SYMBOLS = ["logging"];
+
+this.logging = {};
+
+/** Simple logger that is used in Simple Test harness tests. */
+logging.ContentLogger = class {
+ constructor() {
+ this.logs_ = [];
+ }
+
+ /**
+ * Append a log entry.
+ *
+ * @param {string} message
+ * Log entry message.
+ * @param {string=} level
+ * Severity of entry. Defaults to "INFO".
+ */
+ log(message, level = "INFO") {
+ let now = (new Date()).toString();
+ this.logs_.push([level, message, now]);
+ }
+
+ /**
+ * Append array of log entries.
+ *
+ * @param {Array.<Array<string, string, string>>} messages
+ * List of log entries, that are of the form severity, message,
+ * and date.
+ */
+ addAll(messages) {
+ for (let message of messages) {
+ this.logs_.push(message);
+ }
+ }
+
+ /**
+ * Gets current log entries and clears the cache.
+ *
+ * @return {Array.<Array<string, string, string>>}
+ * Log entries of the form severity, message, and date.
+ */
+ get() {
+ let logs = this.logs_;
+ this.logs_ = [];
+ return logs;
+ }
+};
+
+/**
+ * Adapts an instance of ContentLogger for use in a sandbox. Is consumed
+ * by sandbox.augment.
+ */
+logging.Adapter = class {
+ constructor(logger = null) {
+ this.logger = logger;
+ }
+
+ get exports() {
+ return new Map([["log", this.log.bind(this)]]);
+ }
+
+ log(message, level = "INFO") {
+ dump(`MARIONETTE LOG: ${level}: ${message}\n`);
+ if (this.logger) {
+ this.logger.log(message, level);
+ }
+ }
+};