UNPKG

@dcloudio/uni-debugger

Version:

uni-app debugger

153 lines (138 loc) 3.92 kB
// Copyright 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. /** * @implements {Common.ContentProvider} * @unrestricted */ SDK.CSSStyleSheetHeader = class { /** * @param {!SDK.CSSModel} cssModel * @param {!Protocol.CSS.CSSStyleSheetHeader} payload */ constructor(cssModel, payload) { this._cssModel = cssModel; this.id = payload.styleSheetId; this.frameId = payload.frameId; this.sourceURL = payload.sourceURL; this.hasSourceURL = !!payload.hasSourceURL; this.origin = payload.origin; this.title = payload.title; this.disabled = payload.disabled; this.isInline = payload.isInline; this.startLine = payload.startLine; this.startColumn = payload.startColumn; this.contentLength = payload.length; if (payload.ownerNode) this.ownerNode = new SDK.DeferredDOMNode(cssModel.target(), payload.ownerNode); this.setSourceMapURL(payload.sourceMapURL); } /** * @return {!Common.ContentProvider} */ originalContentProvider() { if (!this._originalContentProvider) { const lazyContent = this._cssModel.originalStyleSheetText.bind(this._cssModel, this); this._originalContentProvider = new Common.StaticContentProvider( this.contentURL(), this.contentType(), /** @type {function():!Promise<?string>} */ (lazyContent)); } return this._originalContentProvider; } /** * @param {string=} sourceMapURL */ setSourceMapURL(sourceMapURL) { this.sourceMapURL = sourceMapURL; } /** * @return {!SDK.CSSModel} */ cssModel() { return this._cssModel; } /** * @return {boolean} */ isAnonymousInlineStyleSheet() { return !this.resourceURL() && !this._cssModel.sourceMapManager().sourceMapForClient(this); } /** * @return {string} */ resourceURL() { return this.isViaInspector() ? this._viaInspectorResourceURL() : this.sourceURL; } /** * @return {string} */ _viaInspectorResourceURL() { const frame = this._cssModel.target().model(SDK.ResourceTreeModel).frameForId(this.frameId); console.assert(frame); const parsedURL = new Common.ParsedURL(frame.url); let fakeURL = 'inspector://' + parsedURL.host + parsedURL.folderPathComponents; if (!fakeURL.endsWith('/')) fakeURL += '/'; fakeURL += 'inspector-stylesheet'; return fakeURL; } /** * @param {number} lineNumberInStyleSheet * @return {number} */ lineNumberInSource(lineNumberInStyleSheet) { return this.startLine + lineNumberInStyleSheet; } /** * @param {number} lineNumberInStyleSheet * @param {number} columnNumberInStyleSheet * @return {number|undefined} */ columnNumberInSource(lineNumberInStyleSheet, columnNumberInStyleSheet) { return (lineNumberInStyleSheet ? 0 : this.startColumn) + columnNumberInStyleSheet; } /** * @override * @return {string} */ contentURL() { return this.resourceURL(); } /** * @override * @return {!Common.ResourceType} */ contentType() { return Common.resourceTypes.Stylesheet; } /** * @override * @return {!Promise<boolean>} */ contentEncoded() { return Promise.resolve(false); } /** * @override * @return {!Promise<?string>} */ requestContent() { return this._cssModel.getStyleSheetText(this.id); } /** * @override * @param {string} query * @param {boolean} caseSensitive * @param {boolean} isRegex * @return {!Promise<!Array<!Common.ContentProvider.SearchMatch>>} */ async searchInContent(query, caseSensitive, isRegex) { const content = await this.requestContent(); return Common.ContentProvider.performSearchInContent(content, query, caseSensitive, isRegex); } /** * @return {boolean} */ isViaInspector() { return this.origin === 'inspector'; } };