UNPKG

@dcloudio/uni-debugger

Version:

uni-app debugger

129 lines (113 loc) 2.59 kB
// Copyright (c) 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * @interface */ class LighthousePort { /** * @param {!string} eventName, 'message', 'close' * @param {function(string|undefined)} cb */ on(eventName, cb) { } /** * @param {string} message */ send(message) { } close() { } } /** * @implements {LighthousePort} * @implements {Service} * @unrestricted */ var Audits2Service = class { // eslint-disable-line /** * @override * @param {function(string)} */ setNotify(notify) { this._notify = notify; } /** * @return {!Promise<!ReportRenderer.RunnerResult>} */ start(params) { if (Runtime.queryParam('isUnderTest')) this._disableLoggingForTest(); self.listenForStatus(message => { this.statusUpdate(message[1]); }); return Promise.resolve() .then(_ => self.runLighthouseInWorker(this, params.url, {flags: params.flags}, params.categoryIDs)) .then(/** @type {!ReportRenderer.RunnerResult} */ result => { // Keep all artifacts on the result, no trimming return result; }) .catch(err => ({ fatal: true, message: err.message, stack: err.stack, })); } /** * @return {!Promise} */ stop() { this.close(); return Promise.resolve(); } /** * @param {!Object=} params * @return {!Promise} */ dispatchProtocolMessage(params) { this._onMessage(params['message']); return Promise.resolve(); } /** * @override * @return {!Promise} */ dispose() { return Promise.resolve(); } /** * @param {string} message */ statusUpdate(message) { this._notify('statusUpdate', {message: message}); } /** * @param {string} message */ send(message) { this._notify('sendProtocolMessage', {message: message}); } close() { } /** * @param {string} eventName * @param {function(string|undefined)} cb */ on(eventName, cb) { if (eventName === 'message') this._onMessage = cb; if (eventName === 'close') this._onClose = cb; } _disableLoggingForTest() { console.log = () => undefined; // eslint-disable-line no-console } }; // Make lighthouse and traceviewer happy. global = self; global.isVinn = true; global.document = {}; global.document.documentElement = {}; global.document.documentElement.style = { WebkitAppearance: 'WebkitAppearance' };