UNPKG

monaca-lib

Version:

Monaca cloud API bindings for JavaScript

121 lines (112 loc) 3.52 kB
// Copyright 2014 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. WebInspector.BlackboxSupport = {} /** * @param {string} url * @return {string} */ WebInspector.BlackboxSupport._urlToRegExpString = function(url) { var parsedURL = new WebInspector.ParsedURL(url); if (parsedURL.isAboutBlank() || parsedURL.isDataURL() || !url) return ""; if (!parsedURL.isValid) return "^" + url.escapeForRegExp() + "$"; var name = parsedURL.lastPathComponent; if (name) name = "/" + name; else if (parsedURL.folderPathComponents) name = parsedURL.folderPathComponents + "/"; if (!name) name = parsedURL.host; if (!name) return ""; var scheme = parsedURL.scheme; var prefix = ""; if (scheme && scheme !== "http" && scheme !== "https") { prefix = "^" + scheme + "://"; if (scheme === "chrome-extension") prefix += parsedURL.host + "\\b"; prefix += ".*"; } return prefix + name.escapeForRegExp() + (url.endsWith(name) ? "$" : "\\b"); } /** * @param {string} url * @return {boolean} */ WebInspector.BlackboxSupport.canBlackboxURL = function(url) { return !!WebInspector.BlackboxSupport._urlToRegExpString(url); } /** * @param {string} url */ WebInspector.BlackboxSupport.blackboxURL = function(url) { var regexPatterns = WebInspector.settings.skipStackFramesPattern.getAsArray(); var regexValue = WebInspector.BlackboxSupport._urlToRegExpString(url); if (!regexValue) return; var found = false; for (var i = 0; i < regexPatterns.length; ++i) { var item = regexPatterns[i]; if (item.pattern === regexValue) { item.disabled = false; found = true; break; } } if (!found) regexPatterns.push({ pattern: regexValue }); WebInspector.settings.skipStackFramesPattern.setAsArray(regexPatterns); } /** * @param {string} url * @param {boolean} isContentScript */ WebInspector.BlackboxSupport.unblackbox = function(url, isContentScript) { if (isContentScript) WebInspector.settings.skipContentScripts.set(false); var regexPatterns = WebInspector.settings.skipStackFramesPattern.getAsArray(); var regexValue = WebInspector.BlackboxSupport._urlToRegExpString(url); if (!regexValue) return; regexPatterns = regexPatterns.filter(function(item) { return item.pattern !== regexValue; }); for (var i = 0; i < regexPatterns.length; ++i) { var item = regexPatterns[i]; if (item.disabled) continue; try { var regex = new RegExp(item.pattern); if (regex.test(url)) item.disabled = true; } catch (e) { } } WebInspector.settings.skipStackFramesPattern.setAsArray(regexPatterns); } /** * @param {string} url * @return {boolean} */ WebInspector.BlackboxSupport.isBlackboxedURL = function(url) { var regex = WebInspector.settings.skipStackFramesPattern.asRegExp(); return (url && regex) ? regex.test(url) : false; } /** * @param {string} url * @param {boolean} isContentScript * @return {boolean} */ WebInspector.BlackboxSupport.isBlackboxed = function(url, isContentScript) { if (isContentScript && WebInspector.settings.skipContentScripts.get()) return true; return WebInspector.BlackboxSupport.isBlackboxedURL(url); }