Merge inbound to central, a=merge

MozReview-Commit-ID: 1mWKzfX4kl
This commit is contained in:
Wes Kocher 2017-08-23 18:07:24 -07:00
Родитель bc3395b5c6 8949506a9c
Коммит fb8abb94c7
327 изменённых файлов: 91717 добавлений и 83616 удалений

Просмотреть файл

@ -8,8 +8,7 @@
#define mozilla_a11y_Platform_h
#include <stdint.h>
class nsString;
#include "nsStringFwd.h"
namespace mozilla {
namespace a11y {

Просмотреть файл

@ -57,7 +57,7 @@
#include "nsIScrollableFrame.h"
#include "nsFocusManager.h"
#include "nsXPIDLString.h"
#include "nsString.h"
#include "nsUnicharUtils.h"
#include "nsReadableUtils.h"
#include "prdtoa.h"

Просмотреть файл

@ -7,8 +7,9 @@
#ifndef _MacUtils_H_
#define _MacUtils_H_
#include "nsStringFwd.h"
@class NSString;
class nsString;
namespace mozilla {
namespace a11y {

Просмотреть файл

@ -1,5 +1,5 @@
This is the PDF.js project output, https://github.com/mozilla/pdf.js
Current extension version is: 1.9.441
Current extension version is: 1.9.456
Taken from upstream commit: 8c8d8fa2
Taken from upstream commit: cb10c03d

Просмотреть файл

@ -88,7 +88,7 @@ return /******/ (function(modules) { // webpackBootstrap
/******/ __w_pdfjs_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 14);
/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 15);
/******/ })
/************************************************************************/
/******/ ([
@ -101,13 +101,12 @@ return /******/ (function(modules) { // webpackBootstrap
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.unreachable = exports.warn = exports.utf8StringToString = exports.stringToUTF8String = exports.stringToPDFString = exports.stringToBytes = exports.string32 = exports.shadow = exports.setVerbosityLevel = exports.ReadableStream = exports.removeNullCharacters = exports.readUint32 = exports.readUint16 = exports.readInt8 = exports.log2 = exports.loadJpegStream = exports.isEvalSupported = exports.isLittleEndian = exports.createValidAbsoluteUrl = exports.isSameOrigin = exports.isNodeJS = exports.isSpace = exports.isString = exports.isNum = exports.isInt = exports.isEmptyObj = exports.isBool = exports.isArrayBuffer = exports.isArray = exports.info = exports.globalScope = exports.getVerbosityLevel = exports.getLookupTableFactory = exports.deprecated = exports.createObjectURL = exports.createPromiseCapability = exports.createBlob = exports.bytesToString = exports.assert = exports.arraysToBytes = exports.arrayByteLength = exports.FormatError = exports.XRefParseException = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.StatTimer = exports.PasswordResponses = exports.PasswordException = exports.PageViewport = exports.NotImplementedException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = exports.MessageHandler = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VERBOSITY_LEVELS = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = undefined;
exports.unreachable = exports.warn = exports.utf8StringToString = exports.stringToUTF8String = exports.stringToPDFString = exports.stringToBytes = exports.string32 = exports.shadow = exports.setVerbosityLevel = exports.ReadableStream = exports.removeNullCharacters = exports.readUint32 = exports.readUint16 = exports.readInt8 = exports.log2 = exports.loadJpegStream = exports.isEvalSupported = exports.isLittleEndian = exports.createValidAbsoluteUrl = exports.isSameOrigin = exports.isNodeJS = exports.isSpace = exports.isString = exports.isNum = exports.isInt = exports.isEmptyObj = exports.isBool = exports.isArrayBuffer = exports.isArray = exports.info = exports.getVerbosityLevel = exports.getLookupTableFactory = exports.deprecated = exports.createObjectURL = exports.createPromiseCapability = exports.createBlob = exports.bytesToString = exports.assert = exports.arraysToBytes = exports.arrayByteLength = exports.FormatError = exports.XRefParseException = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.StatTimer = exports.PasswordResponses = exports.PasswordException = exports.PageViewport = exports.NotImplementedException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = exports.MessageHandler = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VERBOSITY_LEVELS = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = undefined;
__w_pdfjs_require__(15);
__w_pdfjs_require__(16);
var _streams_polyfill = __w_pdfjs_require__(16);
var _streams_polyfill = __w_pdfjs_require__(17);
var globalScope = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : undefined;
var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
const NativeImageDecoding = {
NONE: 'none',
@ -1426,7 +1425,6 @@ exports.createObjectURL = createObjectURL;
exports.deprecated = deprecated;
exports.getLookupTableFactory = getLookupTableFactory;
exports.getVerbosityLevel = getVerbosityLevel;
exports.globalScope = globalScope;
exports.info = info;
exports.isArray = isArray;
exports.isArrayBuffer = isArrayBuffer;
@ -1472,6 +1470,12 @@ exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_R
var _util = __w_pdfjs_require__(0);
var _global_scope = __w_pdfjs_require__(2);
var _global_scope2 = _interopRequireDefault(_global_scope);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var DEFAULT_LINK_REL = 'noopener noreferrer nofollow';
class DOMCanvasFactory {
create(width, height) {
@ -1621,7 +1625,7 @@ function getFilenameFromUrl(url) {
return url.substring(url.lastIndexOf('/', end) + 1, end);
}
function getDefaultSetting(id) {
var globalSettings = _util.globalScope.PDFJS;
var globalSettings = _global_scope2.default.PDFJS;
switch (id) {
case 'pdfBug':
return globalSettings ? globalSettings.pdfBug : false;
@ -1716,6 +1720,15 @@ exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
"use strict";
module.exports = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : {};
/***/ }),
/* 3 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@ -2360,7 +2373,7 @@ var AnnotationLayer = function AnnotationLayerClosure() {
exports.AnnotationLayer = AnnotationLayer;
/***/ }),
/* 3 */
/* 4 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
@ -2375,13 +2388,19 @@ var _util = __w_pdfjs_require__(0);
var _dom_utils = __w_pdfjs_require__(1);
var _font_loader = __w_pdfjs_require__(11);
var _font_loader = __w_pdfjs_require__(12);
var _canvas = __w_pdfjs_require__(10);
var _canvas = __w_pdfjs_require__(11);
var _metadata = __w_pdfjs_require__(6);
var _global_scope = __w_pdfjs_require__(2);
var _transport_stream = __w_pdfjs_require__(13);
var _global_scope2 = _interopRequireDefault(_global_scope);
var _metadata = __w_pdfjs_require__(7);
var _transport_stream = __w_pdfjs_require__(14);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var DEFAULT_RANGE_CHUNK_SIZE = 65536;
var isWorkerDisabled = false;
@ -3391,10 +3410,10 @@ var WorkerTransport = function WorkerTransportClosure() {
break;
}
var fontRegistry = null;
if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _util.globalScope.FontInspector && _util.globalScope['FontInspector'].enabled) {
if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _global_scope2.default.FontInspector && _global_scope2.default['FontInspector'].enabled) {
fontRegistry = {
registerFont(font, url) {
_util.globalScope['FontInspector'].fontAdded(font, url);
_global_scope2.default['FontInspector'].fontAdded(font, url);
}
};
}
@ -3731,8 +3750,8 @@ var InternalRenderTask = function InternalRenderTaskClosure() {
if (this.cancelled) {
return;
}
if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _util.globalScope.StepperManager && _util.globalScope.StepperManager.enabled) {
this.stepper = _util.globalScope.StepperManager.create(this.pageNumber - 1);
if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _global_scope2.default.StepperManager && _global_scope2.default.StepperManager.enabled) {
this.stepper = _global_scope2.default.StepperManager.create(this.pageNumber - 1);
this.stepper.init(this.operatorList);
this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
}
@ -3826,8 +3845,8 @@ var _UnsupportedManager = function UnsupportedManagerClosure() {
}();
var version, build;
{
exports.version = version = '1.9.441';
exports.build = build = '8c8d8fa2';
exports.version = version = '1.9.456';
exports.build = build = 'cb10c03d';
}
exports.getDocument = getDocument;
exports.LoopbackPort = LoopbackPort;
@ -3841,7 +3860,7 @@ exports.version = version;
exports.build = build;
/***/ }),
/* 4 */
/* 5 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
@ -3861,7 +3880,7 @@ var SVGGraphics = function () {
exports.SVGGraphics = SVGGraphics;
/***/ }),
/* 5 */
/* 6 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
@ -4399,7 +4418,7 @@ var renderTextLayer = function renderTextLayerClosure() {
exports.renderTextLayer = renderTextLayer;
/***/ }),
/* 6 */
/* 7 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
@ -4479,7 +4498,7 @@ Metadata.prototype = {
exports.Metadata = Metadata;
/***/ }),
/* 7 */
/* 8 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
@ -4846,7 +4865,7 @@ var WebGLUtils = function WebGLUtilsClosure() {
exports.WebGLUtils = WebGLUtils;
/***/ }),
/* 8 */
/* 9 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
@ -4857,28 +4876,34 @@ Object.defineProperty(exports, "__esModule", {
});
exports.PDFJS = exports.isWorker = exports.globalScope = undefined;
var _api = __w_pdfjs_require__(3);
var _api = __w_pdfjs_require__(4);
var _dom_utils = __w_pdfjs_require__(1);
var _util = __w_pdfjs_require__(0);
var _annotation_layer = __w_pdfjs_require__(2);
var _annotation_layer = __w_pdfjs_require__(3);
var _metadata = __w_pdfjs_require__(6);
var _global_scope = __w_pdfjs_require__(2);
var _text_layer = __w_pdfjs_require__(5);
var _global_scope2 = _interopRequireDefault(_global_scope);
var _svg = __w_pdfjs_require__(4);
var _metadata = __w_pdfjs_require__(7);
var _text_layer = __w_pdfjs_require__(6);
var _svg = __w_pdfjs_require__(5);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var isWorker = typeof window === 'undefined';
if (!_util.globalScope.PDFJS) {
_util.globalScope.PDFJS = {};
if (!_global_scope2.default.PDFJS) {
_global_scope2.default.PDFJS = {};
}
var PDFJS = _util.globalScope.PDFJS;
var PDFJS = _global_scope2.default.PDFJS;
{
PDFJS.version = '1.9.441';
PDFJS.build = '8c8d8fa2';
PDFJS.version = '1.9.456';
PDFJS.build = 'cb10c03d';
}
PDFJS.pdfBug = false;
if (PDFJS.verbosity !== undefined) {
@ -4955,12 +4980,12 @@ PDFJS.renderTextLayer = _text_layer.renderTextLayer;
PDFJS.Metadata = _metadata.Metadata;
PDFJS.SVGGraphics = _svg.SVGGraphics;
PDFJS.UnsupportedManager = _api._UnsupportedManager;
exports.globalScope = _util.globalScope;
exports.globalScope = _global_scope2.default;
exports.isWorker = isWorker;
exports.PDFJS = PDFJS;
/***/ }),
/* 9 */
/* 10 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
@ -7976,7 +8001,7 @@ exports.PDFJS = PDFJS;
}]));
/***/ }),
/* 10 */
/* 11 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
@ -7989,9 +8014,9 @@ exports.CanvasGraphics = undefined;
var _util = __w_pdfjs_require__(0);
var _pattern_helper = __w_pdfjs_require__(12);
var _pattern_helper = __w_pdfjs_require__(13);
var _webgl = __w_pdfjs_require__(7);
var _webgl = __w_pdfjs_require__(8);
var MIN_FONT_SIZE = 16;
var MAX_FONT_SIZE = 100;
@ -9705,7 +9730,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
exports.CanvasGraphics = CanvasGraphics;
/***/ }),
/* 11 */
/* 12 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
@ -9830,7 +9855,7 @@ exports.FontFaceObject = FontFaceObject;
exports.FontLoader = FontLoader;
/***/ }),
/* 12 */
/* 13 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
@ -9843,7 +9868,7 @@ exports.TilingPattern = exports.getShadingPatternFromIR = undefined;
var _util = __w_pdfjs_require__(0);
var _webgl = __w_pdfjs_require__(7);
var _webgl = __w_pdfjs_require__(8);
var ShadingIRs = {};
ShadingIRs.RadialAxial = {
@ -10202,7 +10227,7 @@ exports.getShadingPatternFromIR = getShadingPatternFromIR;
exports.TilingPattern = TilingPattern;
/***/ }),
/* 13 */
/* 14 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
@ -10438,21 +10463,21 @@ var PDFDataTransportStream = function PDFDataTransportStreamClosure() {
exports.PDFDataTransportStream = PDFDataTransportStream;
/***/ }),
/* 14 */
/* 15 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var pdfjsVersion = '1.9.441';
var pdfjsBuild = '8c8d8fa2';
var pdfjsVersion = '1.9.456';
var pdfjsBuild = 'cb10c03d';
var pdfjsSharedUtil = __w_pdfjs_require__(0);
var pdfjsDisplayGlobal = __w_pdfjs_require__(8);
var pdfjsDisplayAPI = __w_pdfjs_require__(3);
var pdfjsDisplayTextLayer = __w_pdfjs_require__(5);
var pdfjsDisplayAnnotationLayer = __w_pdfjs_require__(2);
var pdfjsDisplayGlobal = __w_pdfjs_require__(9);
var pdfjsDisplayAPI = __w_pdfjs_require__(4);
var pdfjsDisplayTextLayer = __w_pdfjs_require__(6);
var pdfjsDisplayAnnotationLayer = __w_pdfjs_require__(3);
var pdfjsDisplayDOMUtils = __w_pdfjs_require__(1);
var pdfjsDisplaySVG = __w_pdfjs_require__(4);
var pdfjsDisplaySVG = __w_pdfjs_require__(5);
;
exports.PDFJS = pdfjsDisplayGlobal.PDFJS;
exports.build = pdfjsDisplayAPI.build;
@ -10485,7 +10510,7 @@ exports.addLinkAttributes = pdfjsDisplayDOMUtils.addLinkAttributes;
exports.StatTimer = pdfjsSharedUtil.StatTimer;
/***/ }),
/* 15 */
/* 16 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
@ -10494,7 +10519,7 @@ exports.StatTimer = pdfjsSharedUtil.StatTimer;
;
/***/ }),
/* 16 */
/* 17 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
@ -10514,7 +10539,7 @@ if (typeof ReadableStream !== 'undefined') {
if (isReadableStreamSupported) {
exports.ReadableStream = ReadableStream;
} else {
exports.ReadableStream = __w_pdfjs_require__(9).ReadableStream;
exports.ReadableStream = __w_pdfjs_require__(10).ReadableStream;
}
/***/ })

Просмотреть файл

@ -101,13 +101,12 @@ return /******/ (function(modules) { // webpackBootstrap
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.unreachable = exports.warn = exports.utf8StringToString = exports.stringToUTF8String = exports.stringToPDFString = exports.stringToBytes = exports.string32 = exports.shadow = exports.setVerbosityLevel = exports.ReadableStream = exports.removeNullCharacters = exports.readUint32 = exports.readUint16 = exports.readInt8 = exports.log2 = exports.loadJpegStream = exports.isEvalSupported = exports.isLittleEndian = exports.createValidAbsoluteUrl = exports.isSameOrigin = exports.isNodeJS = exports.isSpace = exports.isString = exports.isNum = exports.isInt = exports.isEmptyObj = exports.isBool = exports.isArrayBuffer = exports.isArray = exports.info = exports.globalScope = exports.getVerbosityLevel = exports.getLookupTableFactory = exports.deprecated = exports.createObjectURL = exports.createPromiseCapability = exports.createBlob = exports.bytesToString = exports.assert = exports.arraysToBytes = exports.arrayByteLength = exports.FormatError = exports.XRefParseException = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.StatTimer = exports.PasswordResponses = exports.PasswordException = exports.PageViewport = exports.NotImplementedException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = exports.MessageHandler = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VERBOSITY_LEVELS = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = undefined;
exports.unreachable = exports.warn = exports.utf8StringToString = exports.stringToUTF8String = exports.stringToPDFString = exports.stringToBytes = exports.string32 = exports.shadow = exports.setVerbosityLevel = exports.ReadableStream = exports.removeNullCharacters = exports.readUint32 = exports.readUint16 = exports.readInt8 = exports.log2 = exports.loadJpegStream = exports.isEvalSupported = exports.isLittleEndian = exports.createValidAbsoluteUrl = exports.isSameOrigin = exports.isNodeJS = exports.isSpace = exports.isString = exports.isNum = exports.isInt = exports.isEmptyObj = exports.isBool = exports.isArrayBuffer = exports.isArray = exports.info = exports.getVerbosityLevel = exports.getLookupTableFactory = exports.deprecated = exports.createObjectURL = exports.createPromiseCapability = exports.createBlob = exports.bytesToString = exports.assert = exports.arraysToBytes = exports.arrayByteLength = exports.FormatError = exports.XRefParseException = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.StatTimer = exports.PasswordResponses = exports.PasswordException = exports.PageViewport = exports.NotImplementedException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = exports.MessageHandler = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VERBOSITY_LEVELS = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = undefined;
__w_pdfjs_require__(36);
var _streams_polyfill = __w_pdfjs_require__(37);
var globalScope = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : undefined;
var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
const NativeImageDecoding = {
NONE: 'none',
@ -1426,7 +1425,6 @@ exports.createObjectURL = createObjectURL;
exports.deprecated = deprecated;
exports.getLookupTableFactory = getLookupTableFactory;
exports.getVerbosityLevel = getVerbosityLevel;
exports.globalScope = globalScope;
exports.info = info;
exports.isArray = isArray;
exports.isArrayBuffer = isArrayBuffer;
@ -4706,11 +4704,12 @@ var Parser = function ParserClosure() {
b += a;
}
adler32 = b % 65521 << 16 | a % 65521;
if (this.imageCache.adler32 === adler32) {
let cacheEntry = this.imageCache[adler32];
if (cacheEntry !== undefined) {
this.buf2 = _primitives.Cmd.get('EI');
this.shift();
this.imageCache[adler32].reset();
return this.imageCache[adler32];
cacheEntry.reset();
return cacheEntry;
}
}
if (cipherTransform) {
@ -33151,7 +33150,7 @@ var Jbig2Image = function Jbig2ImageClosure() {
}
return prev & 0x7FFFFFFF;
}
var SegmentTypes = ['SymbolDictionary', null, null, null, 'IntermediateTextRegion', null, 'ImmediateTextRegion', 'ImmediateLosslessTextRegion', null, null, null, null, null, null, null, null, 'patternDictionary', null, null, null, 'IntermediateHalftoneRegion', null, 'ImmediateHalftoneRegion', 'ImmediateLosslessHalftoneRegion', null, null, null, null, null, null, null, null, null, null, null, null, 'IntermediateGenericRegion', null, 'ImmediateGenericRegion', 'ImmediateLosslessGenericRegion', 'IntermediateGenericRefinementRegion', null, 'ImmediateGenericRefinementRegion', 'ImmediateLosslessGenericRefinementRegion', null, null, null, null, 'PageInformation', 'EndOfPage', 'EndOfStripe', 'EndOfFile', 'Profiles', 'Tables', null, null, null, null, null, null, null, null, 'Extension'];
var SegmentTypes = ['SymbolDictionary', null, null, null, 'IntermediateTextRegion', null, 'ImmediateTextRegion', 'ImmediateLosslessTextRegion', null, null, null, null, null, null, null, null, 'PatternDictionary', null, null, null, 'IntermediateHalftoneRegion', null, 'ImmediateHalftoneRegion', 'ImmediateLosslessHalftoneRegion', null, null, null, null, null, null, null, null, null, null, null, null, 'IntermediateGenericRegion', null, 'ImmediateGenericRegion', 'ImmediateLosslessGenericRegion', 'IntermediateGenericRefinementRegion', null, 'ImmediateGenericRefinementRegion', 'ImmediateLosslessGenericRefinementRegion', null, null, null, null, 'PageInformation', 'EndOfPage', 'EndOfStripe', 'EndOfFile', 'Profiles', 'Tables', null, null, null, null, null, null, null, null, 'Extension'];
var CodingTemplates = [[{
x: -1,
y: -2
@ -33714,6 +33713,134 @@ var Jbig2Image = function Jbig2ImageClosure() {
}
return bitmap;
}
function decodePatternDictionary(mmr, patternWidth, patternHeight, maxPatternIndex, template, decodingContext) {
let at = [];
at.push({
x: -patternWidth,
y: 0
});
if (template === 0) {
at.push({
x: -3,
y: -1
});
at.push({
x: 2,
y: -2
});
at.push({
x: -2,
y: -2
});
}
let collectiveWidth = (maxPatternIndex + 1) * patternWidth;
let collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight, template, false, null, at, decodingContext);
let patterns = [],
i = 0,
patternBitmap,
xMin,
xMax,
y;
while (i <= maxPatternIndex) {
patternBitmap = [];
xMin = patternWidth * i;
xMax = xMin + patternWidth;
for (y = 0; y < patternHeight; y++) {
patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));
}
patterns.push(patternBitmap);
i++;
}
return patterns;
}
function decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight, defaultPixelValue, enableSkip, combinationOperator, gridWidth, gridHeight, gridOffsetX, gridOffsetY, gridVectorX, gridVectorY, decodingContext) {
let skip = null;
if (enableSkip) {
throw new Jbig2Error('skip is not supported');
}
if (combinationOperator !== 0) {
throw new Jbig2Error('operator ' + combinationOperator + ' is not supported in halftone region');
}
let regionBitmap = [];
let i, j, row;
for (i = 0; i < regionHeight; i++) {
row = new Uint8Array(regionWidth);
if (defaultPixelValue) {
for (j = 0; j < regionWidth; j++) {
row[j] = defaultPixelValue;
}
}
regionBitmap.push(row);
}
let numberOfPatterns = patterns.length;
let pattern0 = patterns[0];
let patternWidth = pattern0[0].length,
patternHeight = pattern0.length;
let bitsPerValue = (0, _util.log2)(numberOfPatterns);
let at = [];
at.push({
x: template <= 1 ? 3 : 2,
y: -1
});
if (template === 0) {
at.push({
x: -3,
y: -1
});
at.push({
x: 2,
y: -2
});
at.push({
x: -2,
y: -2
});
}
let grayScaleBitPlanes = [];
for (i = bitsPerValue - 1; i >= 0; i--) {
grayScaleBitPlanes[i] = decodeBitmap(mmr, gridWidth, gridHeight, template, false, skip, at, decodingContext);
}
let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;
for (mg = 0; mg < gridHeight; mg++) {
for (ng = 0; ng < gridWidth; ng++) {
bit = 0;
patternIndex = 0;
for (j = bitsPerValue - 1; j >= 0; j--) {
bit = grayScaleBitPlanes[j][mg][ng] ^ bit;
patternIndex |= bit << j;
}
patternBitmap = patterns[patternIndex];
x = gridOffsetX + mg * gridVectorY + ng * gridVectorX >> 8;
y = gridOffsetY + mg * gridVectorX - ng * gridVectorY >> 8;
if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 && y + patternHeight <= regionHeight) {
for (i = 0; i < patternHeight; i++) {
regionRow = regionBitmap[y + i];
patternRow = patternBitmap[i];
for (j = 0; j < patternWidth; j++) {
regionRow[x + j] |= patternRow[j];
}
}
} else {
let regionX, regionY;
for (i = 0; i < patternHeight; i++) {
regionY = y + i;
if (regionY < 0 || regionY >= regionHeight) {
continue;
}
regionRow = regionBitmap[regionY];
patternRow = patternBitmap[i];
for (j = 0; j < patternWidth; j++) {
regionX = x + j;
if (regionX >= 0 && regionX < regionWidth) {
regionRow[regionX] |= patternRow[j];
}
}
}
}
}
}
return regionBitmap;
}
function readSegmentHeader(data, start) {
var segmentHeader = {};
segmentHeader.number = (0, _util.readUint32)(data, start);
@ -33929,6 +34056,42 @@ var Jbig2Image = function Jbig2ImageClosure() {
}
args = [textRegion, header.referredTo, data, position, end];
break;
case 16:
let patternDictionary = {};
let patternDictionaryFlags = data[position++];
patternDictionary.mmr = !!(patternDictionaryFlags & 1);
patternDictionary.template = patternDictionaryFlags >> 1 & 3;
patternDictionary.patternWidth = data[position++];
patternDictionary.patternHeight = data[position++];
patternDictionary.maxPatternIndex = (0, _util.readUint32)(data, position);
position += 4;
args = [patternDictionary, header.number, data, position, end];
break;
case 22:
case 23:
let halftoneRegion = {};
halftoneRegion.info = readRegionSegmentInformation(data, position);
position += RegionSegmentInformationFieldLength;
let halftoneRegionFlags = data[position++];
halftoneRegion.mmr = !!(halftoneRegionFlags & 1);
halftoneRegion.template = halftoneRegionFlags >> 1 & 3;
halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);
halftoneRegion.combinationOperator = halftoneRegionFlags >> 4 & 7;
halftoneRegion.defaultPixelValue = halftoneRegionFlags >> 7 & 1;
halftoneRegion.gridWidth = (0, _util.readUint32)(data, position);
position += 4;
halftoneRegion.gridHeight = (0, _util.readUint32)(data, position);
position += 4;
halftoneRegion.gridOffsetX = (0, _util.readUint32)(data, position) & 0xFFFFFFFF;
position += 4;
halftoneRegion.gridOffsetY = (0, _util.readUint32)(data, position) & 0xFFFFFFFF;
position += 4;
halftoneRegion.gridVectorX = (0, _util.readUint16)(data, position);
position += 2;
halftoneRegion.gridVectorY = (0, _util.readUint16)(data, position);
position += 2;
args = [halftoneRegion, header.referredTo, data, position, end];
break;
case 38:
case 39:
var genericRegion = {};
@ -34120,6 +34283,24 @@ var Jbig2Image = function Jbig2ImageClosure() {
},
onImmediateLosslessTextRegion: function SimpleSegmentVisitor_onImmediateLosslessTextRegion() {
this.onImmediateTextRegion.apply(this, arguments);
},
onPatternDictionary(dictionary, currentSegment, data, start, end) {
let patterns = this.patterns;
if (!patterns) {
this.patterns = patterns = {};
}
let decodingContext = new DecodingContext(data, start, end);
patterns[currentSegment] = decodePatternDictionary(dictionary.mmr, dictionary.patternWidth, dictionary.patternHeight, dictionary.maxPatternIndex, dictionary.template, decodingContext);
},
onImmediateHalftoneRegion(region, referredSegments, data, start, end) {
let patterns = this.patterns[referredSegments[0]];
let regionInfo = region.info;
let decodingContext = new DecodingContext(data, start, end);
let bitmap = decodeHalftoneRegion(region.mmr, patterns, region.template, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.enableSkip, region.combinationOperator, region.gridWidth, region.gridHeight, region.gridOffsetX, region.gridOffsetY, region.gridVectorX, region.gridVectorY, decodingContext);
this.drawBitmap(regionInfo, bitmap);
},
onImmediateLosslessHalftoneRegion() {
this.onImmediateHalftoneRegion.apply(this, arguments);
}
};
function Jbig2Image() {}
@ -39856,8 +40037,8 @@ exports.Type1Parser = Type1Parser;
"use strict";
var pdfjsVersion = '1.9.441';
var pdfjsBuild = '8c8d8fa2';
var pdfjsVersion = '1.9.456';
var pdfjsBuild = 'cb10c03d';
var pdfjsCoreWorker = __w_pdfjs_require__(17);
exports.WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler;

Просмотреть файл

@ -13,3 +13,4 @@ SharedLibrary('crashinjectdll')
DEFFILE = SRCDIR + '/crashinjectdll.def'
USE_STATIC_LIBS = True
NO_PGO = True

Просмотреть файл

@ -11,7 +11,6 @@
#include "nsIServiceManager.h"
#include "nsIURL.h"
#include "nsCOMPtr.h"
#include "nsXPIDLString.h"
#include "nsReadableUtils.h"
#include "nsCRT.h"
#include "nsString.h"

Просмотреть файл

@ -9,7 +9,6 @@
#include "nsIObjectInputStream.h"
#include "nsJSPrincipals.h"
#include "plstr.h"
#include "nsXPIDLString.h"
#include "nsCOMPtr.h"
#include "nsIServiceManager.h"
#include "nsMemory.h"

Просмотреть файл

@ -23,7 +23,7 @@
#include "SystemPrincipal.h"
#include "NullPrincipal.h"
#include "DomainPolicy.h"
#include "nsXPIDLString.h"
#include "nsString.h"
#include "nsCRT.h"
#include "nsCRTGlue.h"
#include "nsDocShell.h"

Просмотреть файл

@ -16,12 +16,12 @@
#include "nsCOMPtr.h"
#include "nsIObserver.h"
#include "nsServiceManagerUtils.h"
#include "nsStringFwd.h"
#include "plstr.h"
#include "js/TypeDecls.h"
#include <stdint.h>
class nsCString;
class nsIIOService;
class nsIStringBundle;
class SystemPrincipal;

Просмотреть файл

@ -234,6 +234,7 @@ menu {
menu > menuitem::after {
content: "\25BA";
float: right;
padding-left: 5px;
}
menu > menupopup {
@ -386,10 +387,6 @@ body {
width: 100%;
}
.subsettings:hover {
cursor: pointer;
}
.search-container {
position: absolute;
top: 0;
@ -407,6 +404,13 @@ body {
margin-right: 20px;
}
/* Utils */
.absolute-center {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
menupopup {
position: fixed;
z-index: 10000;
@ -433,7 +437,6 @@ menuitem {
menuitem:hover {
background: #3780fb;
color: white;
cursor: pointer;
}
menuitem[disabled=true] {
@ -494,7 +497,6 @@ menuseparator {
/******************************************************************************/
.objectLink:hover {
cursor: pointer;
text-decoration: underline;
}
@ -590,7 +592,6 @@ menuseparator {
.objectRightBrace,
.arrayLeftBracket,
.arrayRightBracket {
cursor: pointer;
font-weight: bold;
}
@ -730,25 +731,6 @@ menuseparator {
.split-box.dragging > .uncontrolled {
pointer-events: none;
}
.search-container {
position: absolute;
top: 30px;
left: 0;
width: calc(100% - 1px);
height: calc(100% - 31px);
display: flex;
z-index: 200;
background-color: var(--theme-body-background);
}
.searchinput-container {
display: flex;
border-bottom: 1px solid var(--theme-splitter-color);
}
.theme-dark .result-list li .subtitle {
color: var(--theme-comment-alt);
}
.arrow,
.folder,
.domain,
@ -838,7 +820,6 @@ html .arrow.expanded svg {
.managed-tree .tree .node {
padding: 2px 3px 2px 3px;
position: relative;
cursor: pointer;
}
.managed-tree .tree .node.focused {
@ -872,7 +853,6 @@ html[dir="rtl"] .managed-tree .tree .node > div {
}
.close-btn .close {
cursor: pointer;
width: 14px;
height: 14px;
transition: all 0.25s ease-in-out;
@ -1011,7 +991,6 @@ html[dir="rtl"] .managed-tree .tree .node > div {
}
.search-field .search-nav-buttons .nav-btn:hover {
cursor: pointer;
background: var(--theme-toolbar-background-hover);
}
@ -1024,6 +1003,9 @@ html[dir="rtl"] .managed-tree .tree .node > div {
}
.project-text-search {
flex-grow: 1;
display: flex;
flex-direction: column;
overflow-y: hidden;
}
.project-text-search .result {
@ -1031,14 +1013,19 @@ html[dir="rtl"] .managed-tree .tree .node > div {
cursor: default;
margin-bottom: 1px;
padding: 4px 0 4px 30px;
font-size: 10px;
}
.project-text-search .matches-summary {
margin-left: 2px;
margin-left: 5px;
}
.project-text-search .result {
font-family: Menlo, monospace;
}
.project-text-search .result.focused {
background-color: #eeeeee;
background-color: var(--theme-codemirror-gutter-background);
}
.project-text-search .result .query-match {
@ -1062,8 +1049,9 @@ html[dir="rtl"] .managed-tree .tree .node > div {
font-weight: bold;
line-height: 20px;
cursor: default;
margin: 2px 20px 2px 0;
margin: 2px 0;
padding: 3px 0 3px 5px;
font-size: 12px;
}
.project-text-search .file-result .arrow {
@ -1071,7 +1059,7 @@ html[dir="rtl"] .managed-tree .tree .node > div {
}
.project-text-search .file-result.focused {
background-color: #eeeeee;
background-color: var(--theme-codemirror-gutter-background);
}
.project-text-search .line-match {
@ -1084,33 +1072,22 @@ html[dir="rtl"] .managed-tree .tree .node > div {
align-self: stretch;
flex-grow: 1;
}
.project-text-search .managed-tree {
overflow-y: auto;
}
.autocomplete {
flex: 1;
position: relative;
width: 100%;
height: 100%;
}
.autocomplete .no-result-msg {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
color: var(--theme-graphs-full-red);
color: var(--theme-body-color-inactive);
font-size: 24px;
padding: 4px;
word-break: break-all;
}
.autocomplete .no-result-msg .sad-face {
width: 24px;
margin: 0 4px;
line-height: 0;
flex-shrink: 0;
}
.autocomplete .no-result-msg .sad-face svg {
fill: var(--theme-graphs-full-red);
}
.result-list {
list-style: none;
margin: 0px;
@ -1144,7 +1121,6 @@ html[dir="rtl"] .managed-tree .tree .node > div {
.result-list li:hover {
background: var(--theme-tab-toolbar-background);
cursor: pointer;
}
.result-list li.selected {
@ -1193,6 +1169,53 @@ html[dir="rtl"] .managed-tree .tree .node > div {
.theme-dark .result-list {
background-color: var(--theme-body-background);
}
.search-container {
position: absolute;
top: 30px;
left: 0;
width: calc(100% - 1px);
height: calc(100% - 31px);
display: flex;
flex-direction: column;
z-index: 200;
background-color: var(--theme-body-background);
overflow-y: auto;
}
.searchinput-container {
display: flex;
border-bottom: 1px solid var(--theme-splitter-color);
}
.theme-dark .result-list li .subtitle {
color: var(--theme-comment-alt);
}
.toggle-search {
background-color: var(--theme-toolbar-background);
border-bottom: 1px solid var(--theme-splitter-color);
color: var(--theme-comment-alt);
display: flex;
flex-shrink: 0;
justify-content: flex-start;
line-height: 40px;
padding: 0 13px;
width: calc(100% - 1px);
}
.toggle-search .title {
font-weight: 500;
font-size: 120%;
}
.toggle-search .text {
margin-left: 1em;
}
.toggle-search .active {
color: var(--theme-selection-background);
cursor: default;
}
.sources-panel {
flex: 1;
display: flex;
@ -1234,7 +1257,6 @@ html[dir="rtl"] .managed-tree .tree .node > div {
font-weight: lighter;
white-space: nowrap;
padding-inline-end: 10px;
cursor: pointer;
}
.sources-list {
@ -1252,7 +1274,7 @@ html[dir="rtl"] .managed-tree .tree .node > div {
}
.theme-dark .sources-list .tree .node:not(.focused) svg {
fill: var(--theme-comment);
fill: var(--theme-content-color3);
}
.theme-dark .source-list .tree .node.focused {
@ -1309,20 +1331,22 @@ html[dir="rtl"] .managed-tree .tree .node > div {
.source-footer .tab:hover {
background-color: var(--theme-toolbar-background-alt);
border-color: var(--theme-splitter-color);
cursor: pointer;
}
.source-footer .tab.active {
color: var(--theme-body-color);
background-color: var(--theme-body-background);
background-color: var(--theme-toolbar-background);
border-color: var(--theme-splitter-color);
border-top-color: transparent;
}
.source-footer .tab.active path,
.source-footer .tab:hover path {
fill: var(--theme-body-color);
}
.outline {
overflow-y: auto;
}
.outline-list {
list-style-type: none;
padding-left: 0px;
@ -1331,16 +1355,16 @@ html[dir="rtl"] .managed-tree .tree .node > div {
.outline-list__element {
color: blue;
padding-bottom: 0.2rem;
padding-left: 1rem;
padding-right: 0.5rem;
cursor: pointer;
padding-top: 0.2rem;
}
.outline-list__element:hover {
background: var(--theme-toolbar-background-hover);
}
.function-signature {
line-height: 20px;
align-self: center;
}
@ -1397,7 +1421,6 @@ html[dir="rtl"] .managed-tree .tree .node > div {
.toggle-button-end {
transform: translate(0, 2px);
transition: transform 0.25s ease-in-out;
cursor: pointer;
padding: 5px 2px;
}
@ -1440,7 +1463,7 @@ html .toggle-button-end.vertical svg {
transform: rotate(180deg);
}
.source-footer {
background: var(--theme-toolbar-background);
background: var(--theme-body-background);
border-top: 1px solid var(--theme-splitter-color);
position: absolute;
display: flex;
@ -1466,7 +1489,6 @@ html .toggle-button-end.vertical svg {
}
.source-footer > .commands > .action {
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
@ -1580,10 +1602,6 @@ html .toggle-button-end.vertical svg {
width: 16px;
}
.search-bottom-bar .search-modifiers button svg:hover {
cursor: pointer;
}
.search-bottom-bar .search-modifiers button:hover {
background: var(--theme-toolbar-background-hover);
}
@ -1606,27 +1624,14 @@ html .toggle-button-end.vertical svg {
max-width: 68%;
}
.search-bottom-bar .search-type-toggles .search-toggle-title {
color: var(--theme-body-color-inactive);
font-size: 11px;
font-weight: normal;
margin: 0;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.search-bottom-bar .search-type-toggles .search-type-btn {
.search-bottom-bar .search-type-name {
padding: 1px 0 0 0;
margin: 0 0 0 6px;
border: none;
background: transparent;
color: var(--theme-comment-alt);
}
.search-bottom-bar .search-type-toggles .search-type-btn:hover {
cursor: pointer;
}
.search-bottom-bar .search-type-toggles .search-type-btn:active {
outline: none;
}
@ -1707,6 +1712,10 @@ html .toggle-button-end.vertical svg {
color: var(--string-color);
}
.objectBox-string a, .objectBox-string a:visited {
color: currentColor;
}
.objectBox-function,
.objectBox-stackTrace,
.objectBox-profile {
@ -1835,12 +1844,21 @@ html .toggle-button-end.vertical svg {
.open-inspector svg:hover {
fill: rgb(65, 175, 230);
}
/******************************************************************************/
/* "more…" ellipsis */
.more-ellipsis {
color: var(--theme-comment);
}
/* 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/. */
.tree {
overflow: auto;
}
.tree.inline {
display: inline-block;
}
@ -1889,18 +1907,20 @@ html[dir="rtl"] .arrow svg,
transform: rotate(0deg);
}
.object-label {
.object-label, .object-label * {
color: var(--theme-highlight-blue);
}
.object-value .unavailable {
color: var(--theme-comment);
}
.bracket-arrow {
position: absolute;
.tree .node .unavailable {
color: var(--theme-content-color3);
}
.bracket-arrow:hover {
cursor: pointer;
.lessen {
opacity: 0.6;
}
.bracket-arrow {
position: absolute;
}
.bracket-arrow::before,
@ -1981,10 +2001,6 @@ html[dir="rtl"] .arrow svg,
text-decoration: underline;
}
.popover .preview .header .link:hover {
cursor: pointer;
}
.selection,
.debug-expression.selection {
background-color: var(--theme-highlight-yellow);
@ -2000,10 +2016,6 @@ html[dir="rtl"] .arrow svg,
color: #e7ebee;
}
.selection:hover {
cursor: pointer;
}
.popover .preview .function-signature {
padding-top: 10px;
}
@ -2013,7 +2025,7 @@ html[dir="rtl"] .arrow svg,
}
.theme-dark .popover .preview .arrow svg {
fill: var(--theme-comment);
fill: var(--theme-content-color3);
}
.tooltip {
@ -2032,7 +2044,6 @@ html[dir="rtl"] .arrow svg,
min-height: inherit;
max-height: 200px;
overflow: auto;
cursor: pointer;
}
.theme-dark .tooltip .preview {
@ -2057,10 +2068,10 @@ html[dir="rtl"] .arrow svg,
line-height: 30px;
background: var(--theme-toolbar-background);
color: var(--theme-comment-alt);
padding: 0 4px;
}
.add-to-expression-bar .prompt {
padding-left: 3px;
width: 1em;
}
@ -2070,12 +2081,10 @@ html[dir="rtl"] .arrow svg,
.add-to-expression-bar .expression-to-save-button {
font-size: 14px;
color: var(--theme-comment);
cursor: pointer;
color: var(--theme-content-color3);
}
.call-site {
background: #f0f9ff;
cursor: pointer;
position: relative;
}
@ -2088,7 +2097,6 @@ html[dir="rtl"] .arrow svg,
}
.call-site-bp {
cursor: pointer;
position: relative;
}
@ -2141,7 +2149,7 @@ html[dir="rtl"] .arrow svg,
}
.theme-light {
--theme-conditional-breakpoint-color: #ccd1d5;
--theme-conditional-breakpoint-color: var(--theme-body-color);
}
.paused .in-scope .CodeMirror-line,
@ -2161,7 +2169,7 @@ html[dir="rtl"] .arrow svg,
.editor-wrapper {
position: absolute;
height: calc(100% - 31px);
width: 100%;
width: calc(100% - 1.5px);
top: 30px;
left: 0px;
--editor-footer-height: 27px;
@ -2218,10 +2226,6 @@ html[dir="rtl"] .editor-mount {
border: 1px solid #00b6ff;
}
.inline-bp:hover {
cursor: pointer;
}
.editor.new-breakpoint.folding-enabled svg {
right: -16px;
}
@ -2440,7 +2444,6 @@ html .breakpoints-list .breakpoint.paused {
}
.breakpoints-list .breakpoint:hover {
cursor: pointer;
background-color: var(--search-overlays-semitransparent);
}
@ -2499,7 +2502,6 @@ html .breakpoints-list .breakpoint.paused {
width: 100%;
margin: 0px;
border: 1px;
cursor: pointer;
background-color: var(--theme-body-background);
font-size: 12px;
padding: 0px 20px;
@ -2570,7 +2572,6 @@ html .breakpoints-list .breakpoint.paused {
}
.expression-input {
cursor: pointer;
max-width: 50%;
}
@ -2642,7 +2643,6 @@ html .breakpoints-list .breakpoint.paused {
}
.frames ul li {
cursor: pointer;
padding: 7px 10px 7px 21px;
overflow: hidden;
display: flex;
@ -2674,8 +2674,8 @@ html .breakpoints-list .breakpoint.paused {
margin: 0;
}
:root.theme-light .frames .location,
:root.theme-firebug .frames .location {
.theme-light .frames .location,
.theme-firebug .frames .location {
color: var(--theme-comment);
}
@ -2722,7 +2722,6 @@ html .breakpoints-list .breakpoint.paused {
}
.show-more {
cursor: pointer;
text-align: center;
padding: 8px 0px;
margin: 7px 10px 7px 7px;
@ -2750,7 +2749,6 @@ html .breakpoints-list .breakpoint.paused {
}
.event-listeners .listener {
cursor: pointer;
padding: 7px 10px 7px 21px;
clear: both;
overflow: hidden;
@ -2797,7 +2795,6 @@ html .breakpoints-list .breakpoint.paused {
.accordion ._header {
background-color: var(--theme-toolbar-background);
border-bottom: 1px solid var(--theme-splitter-color);
cursor: pointer;
font-size: 12px;
padding: 5px;
transition: all 0.25s ease;
@ -2881,7 +2878,6 @@ html[dir="rtl"] .command-bar {
appearance: none;
background: transparent;
border: none;
cursor: pointer;
display: inline-block;
text-align: center;
padding: 8px 5px;
@ -2889,7 +2885,7 @@ html[dir="rtl"] .command-bar {
fill: currentColor;
}
.command-bar > button:hover {
.command-bar > button:not(.disabled):hover {
background: var(--theme-toolbar-background-hover);
}
@ -3001,7 +2997,7 @@ html .command-bar > button:disabled {
}
.theme-dark .secondary-panes .accordion .arrow svg {
fill: var(--theme-comment);
fill: var(--theme-content-color3);
}
.welcomebox {
width: calc(100% - 1px);
@ -3047,8 +3043,7 @@ html .welcomebox .toggle-button-end.collapsed {
.source-header .new-tab-btn {
padding: 0px 4px;
margin-top: 4px;
cursor: pointer;
fill: var(--theme-comment);
fill: var(--theme-content-color3);
transition: 0.1s ease;
align-self: center;
}
@ -3080,7 +3075,6 @@ html .welcomebox .toggle-button-end.collapsed {
.source-tab:hover {
background-color: var(--theme-toolbar-background-alt);
border-color: var(--theme-splitter-color);
cursor: pointer;
}
.source-tab.active {
@ -3158,6 +3152,7 @@ html .welcomebox .toggle-button-end.collapsed {
top: 23px;
width: var(--width);
z-index: 1000;
overflow: scroll;
}
html[dir="rtl"] .dropdown {
@ -3171,8 +3166,7 @@ html[dir="rtl"] .dropdown {
}
.dropdown-button {
cursor: pointer;
color: var(--theme-comment);
color: var(--theme-content-color3);
background: none;
border: none;
padding: 0;
@ -3191,7 +3185,6 @@ html[dir="rtl"] .dropdown {
.dropdown li:hover {
background-color: var(--search-overlays-semitransparent);
cursor: pointer;
}
.dropdown ul {
@ -3211,6 +3204,45 @@ html[dir="rtl"] .dropdown {
left: 0;
top: 0;
}
.modal-wrapper {
position: fixed;
display: flex;
justify-content: center;
width: 100%;
height: 100%;
top: 0;
left: 0;
transition: z-index 200ms;
z-index: 9;
}
.modal {
top: 0;
z-index: 10;
width: 500px;
height: 230px;
background-color: var(--theme-codemirror-gutter-background);
transform: translateY(-250px);
transition: transform 150ms cubic-bezier(0.07, 0.95, 0, 1);
box-shadow: 2px 4px 6px var(--popup-shadow-color);
}
.modal.entering,
.modal.exited {
transform: translateY(-250px);
}
.modal.entered,
.modal.exiting {
transform: translateY(30px);
}
@media (max-width: 520px) {
.modal {
width: 80%;
left: 10%;
}
}
.symbol-modal-wrapper {
position: fixed;
width: 100%;
@ -3225,35 +3257,20 @@ html[dir="rtl"] .dropdown {
width: 500px;
height: 230px;
background-color: var(--theme-codemirror-gutter-background);
box-shadow: 2px 4px 6px var(--popup-shadow-color);
top: 30px;
}
.theme-dark .symbol-modal {
box-shadow: 2px 4px 6px var(--popup-shadow-color);
}
.symbol-modal .input-wrapper {
display: -webkit-box;
display: -ms-flexbox;
.symbol-modal .input-wrapper,
.modal .input-wrapper {
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
}
.symbol-modal .close-btn {
.modal .close-btn {
padding: 6px;
}
.symbol-modal .result-list {
.modal .result-list {
height: calc(100% - 28px);
overflow-y: auto;
}
@media (max-width: 520px) {
.symbol-modal {
width: 80%;
left: 10%;
}
}

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -64,12 +64,19 @@ skip-if = debug # bug 1374187
[browser_dbg_keyboard-shortcuts.js]
skip-if = os == "linux" # bug 1351952
[browser_dbg-pause-exceptions.js]
skip-if = true # Bug 1393121
[browser_dbg-navigation.js]
[browser_dbg-pretty-print.js]
[browser_dbg-pretty-print-paused.js]
[browser_dbg-scopes-mutations.js]
[browser_dbg-searching.js]
skip-if = true
[browser_dbg-search-file.js]
skip-if = os == "win" # Bug 1393121
[browser_dbg-search-sources.js]
skip-if = os == "win" # Bug 1393121
[browser_dbg-search-symbols.js]
skip-if = os == "win" # Bug 1393121
[browser_dbg-search-project.js]
skip-if = os == "win" # Bug 1393121
[browser_dbg-sourcemaps.js]
[browser_dbg-sourcemaps-reloading.js]
[browser_dbg-sourcemaps2.js]

Просмотреть файл

@ -29,5 +29,5 @@ add_task(function*() {
yield waitForDispatch(dbg, "LOAD_SOURCE_TEXT");
is(dbg.win.cm.getValue(), "debugger");
const source = getSelectedSource(getState()).toJS();
assertPausedLocation(dbg, source, 1);
assertPausedLocation(dbg);
});

Просмотреть файл

@ -3,7 +3,7 @@
// Tests the breakpoints are hit in various situations.
add_task(function* () {
add_task(function*() {
const dbg = yield initDebugger("doc-scripts.html");
const { selectors: { getSelectedSource }, getState } = dbg;
@ -12,7 +12,7 @@ add_task(function* () {
yield addBreakpoint(dbg, "scripts.html", 18);
reload(dbg);
yield waitForPaused(dbg);
assertPausedLocation(dbg, "scripts.html", 18);
assertPausedLocation(dbg);
yield resume(dbg);
const paused = waitForPaused(dbg);
@ -28,5 +28,5 @@ add_task(function* () {
yield addBreakpoint(dbg, source, 5);
invokeInTab("evaledFunc");
yield waitForPaused(dbg);
assertPausedLocation(dbg, source, 5);
assertPausedLocation(dbg);
});

Просмотреть файл

@ -34,9 +34,11 @@ add_task(function*() {
yield addBreakpoint(dbg, 5);
yield addBreakpoint(dbg, 2);
const syncedBps = waitForDispatch(dbg, "SYNC_BREAKPOINT", 2);
yield reload(dbg, "simple1");
yield waitForSelectedSource(dbg);
yield waitForDispatch(dbg, "SYNC_BREAKPOINT", 2);
yield syncedBps;
assertEditorBreakpoint(dbg, 4);
assertEditorBreakpoint(dbg, 5);
});

Просмотреть файл

@ -24,31 +24,31 @@ function clickStepOut(dbg) {
* 4. stepOver to the end of a function
* 5. stepUp at the end of a function
*/
add_task(function* () {
add_task(function*() {
const dbg = yield initDebugger("doc-debugger-statements.html");
yield reload(dbg);
yield waitForPaused(dbg);
assertPausedLocation(dbg, "debugger-statements.html", 8);
assertPausedLocation(dbg);
// resume
clickElement(dbg, "resume");
yield waitForPaused(dbg);
assertPausedLocation(dbg, "debugger-statements.html", 12);
assertPausedLocation(dbg);
// step over
yield clickStepOver(dbg);
assertPausedLocation(dbg, "debugger-statements.html", 13);
assertPausedLocation(dbg);
// step into
yield clickStepIn(dbg);
assertPausedLocation(dbg, "debugger-statements.html", 18);
assertPausedLocation(dbg);
// step over
yield clickStepOver(dbg);
assertPausedLocation(dbg, "debugger-statements.html", 20);
assertPausedLocation(dbg);
// step out
yield clickStepOut(dbg);
assertPausedLocation(dbg, "debugger-statements.html", 20);
assertPausedLocation(dbg);
});

Просмотреть файл

@ -29,17 +29,17 @@ add_task(function*() {
// Call the function that we set a breakpoint in.
invokeInTab("main");
yield waitForPaused(dbg);
assertPausedLocation(dbg, simple1, 4);
assertPausedLocation(dbg);
// Step through to another file and make sure it's paused in the
// right place.
yield stepIn(dbg);
assertPausedLocation(dbg, simple2, 2);
assertPausedLocation(dbg);
// Step back out to the initial file.
yield stepOut(dbg);
yield stepOut(dbg);
assertPausedLocation(dbg, simple1, 5);
assertPausedLocation(dbg);
yield resume(dbg);
// Make sure that we can set a breakpoint on a line out of the
@ -49,6 +49,6 @@ add_task(function*() {
invokeInTab("testModel");
yield waitForPaused(dbg);
assertPausedLocation(dbg, longSrc, 66);
assertPausedLocation(dbg);
ok(isElementVisible(dbg, "breakpoint"), "Breakpoint is visible");
});

Просмотреть файл

@ -55,7 +55,8 @@ add_task(function*() {
yield editExpression(dbg, "oo");
is(getLabel(dbg, 1), "foo()");
is(getValue(dbg, 1), "");
// There is no "value" element for functions.
is(findElement(dbg, "expressionValue", 1), null);
yield addExpression(dbg, "location");
is(getLabel(dbg, 2), "location");

Просмотреть файл

@ -6,21 +6,21 @@
* 1. pause in the main thread
* 2. pause in the iframe
*/
add_task(function* () {
add_task(function*() {
const dbg = yield initDebugger("doc-iframes.html");
// test pausing in the main thread
yield reload(dbg);
yield waitForPaused(dbg);
assertPausedLocation(dbg, "iframes.html", 8);
assertPausedLocation(dbg);
// test pausing in the iframe
yield resume(dbg);
yield waitForPaused(dbg);
assertPausedLocation(dbg, "debugger-statements.html", 8);
assertPausedLocation(dbg);
// test pausing in the iframe
yield resume(dbg);
yield waitForPaused(dbg);
assertPausedLocation(dbg, "debugger-statements.html", 12);
assertPausedLocation(dbg);
});

Просмотреть файл

@ -10,7 +10,7 @@ function countSources(dbg) {
* Test navigating
* navigating while paused will reset the pause state and sources
*/
add_task(function* () {
add_task(function*() {
const dbg = yield initDebugger("doc-script-switching.html");
const { selectors: { getSelectedSource, getPause }, getState } = dbg;
@ -21,7 +21,7 @@ add_task(function* () {
yield addBreakpoint(dbg, "simple1.js", 4);
invokeInTab("main");
yield waitForPaused(dbg);
assertPausedLocation(dbg, "simple1.js", 4);
assertPausedLocation(dbg);
is(countSources(dbg), 4, "4 sources are loaded.");
yield navigate(dbg, "about:blank");
@ -29,7 +29,8 @@ add_task(function* () {
is(countSources(dbg), 0, "0 sources are loaded.");
ok(!getPause(getState()), "No pause state exists");
yield navigate(dbg,
yield navigate(
dbg,
"doc-scripts.html",
"simple1.js",
"simple2.js",
@ -42,6 +43,8 @@ add_task(function* () {
// Test that the current select source persists across reloads
yield selectSource(dbg, "long.js");
yield reload(dbg, "long.js");
ok(getSelectedSource(getState()).get("url").includes("long.js"),
"Selected source is long.js");
ok(
getSelectedSource(getState()).get("url").includes("long.js"),
"Selected source is long.js"
);
});

Просмотреть файл

@ -16,7 +16,7 @@ function caughtException() {
3. pause on a caught error
4. skip a caught error
*/
add_task(function* () {
add_task(function*() {
const dbg = yield initDebugger("doc-exceptions.html");
// test skipping an uncaught exception
@ -27,19 +27,19 @@ add_task(function* () {
yield togglePauseOnExceptions(dbg, true, false);
uncaughtException();
yield waitForPaused(dbg);
assertPausedLocation(dbg, "exceptions.js", 2);
assertPausedLocation(dbg);
yield resume(dbg);
// Test pausing on a caught Error
caughtException();
yield waitForPaused(dbg);
assertPausedLocation(dbg, "exceptions.js", 15);
assertPausedLocation(dbg);
yield resume(dbg);
// Test skipping a caught error
yield togglePauseOnExceptions(dbg, true, true);
caughtException();
yield waitForPaused(dbg);
assertPausedLocation(dbg, "exceptions.js", 17);
assertPausedLocation(dbg);
yield resume(dbg);
});

Просмотреть файл

@ -3,7 +3,7 @@
// Tests pretty-printing a source that is currently paused.
add_task(function* () {
add_task(function*() {
const dbg = yield initDebugger("doc-minified.html");
yield selectSource(dbg, "math.min.js");
@ -11,12 +11,13 @@ add_task(function* () {
invokeInTab("arithmetic");
yield waitForPaused(dbg);
assertPausedLocation(dbg, "math.min.js", 2);
assertPausedLocation(dbg);
clickElement(dbg, "prettyPrintButton");
yield waitForDispatch(dbg, "TOGGLE_PRETTY_PRINT");
yield waitForDispatch(dbg, "SELECT_SOURCE");
assertPausedLocation(dbg, "math.min.js:formatted", 18);
// this doesnt work yet
// assertPausedLocation(dbg);
yield resume(dbg);
});

Просмотреть файл

@ -6,20 +6,24 @@
add_task(function*() {
const dbg = yield initDebugger("doc-minified.html");
yield selectSource(dbg, "math.min.js");
yield selectSource(dbg, "math.min.js", 2);
clickElement(dbg, "prettyPrintButton");
yield waitForDispatch(dbg, "TOGGLE_PRETTY_PRINT");
yield waitForSource(dbg, "math.min.js:formatted");
const ppSrc = findSource(dbg, "math.min.js:formatted");
ok(ppSrc, "Pretty-printed source exists");
// this is not implemented yet
// assertHighlightLocation(dbg, "math.min.js:formatted", 18);
yield addBreakpoint(dbg, ppSrc, 18);
invokeInTab("arithmetic");
yield waitForPaused(dbg);
assertPausedLocation(dbg, ppSrc, 18);
assertPausedLocation(dbg);
yield stepOver(dbg);
assertPausedLocation(dbg, ppSrc, 27);
assertPausedLocation(dbg);
yield resume(dbg);
// The pretty-print button should go away in the pretty-printed

Просмотреть файл

@ -11,7 +11,7 @@ function getScopeNodeValue(dbg, index) {
function expandNode(dbg, index) {
let onLoadProperties = onLoadObjectProperties(dbg);
clickElement(dbg, "scopeNode", index);
findElement(dbg, "scopeNode", index).click();
return onLoadProperties;
}
@ -23,14 +23,14 @@ function onLoadObjectProperties(dbg) {
return waitForDispatch(dbg, "LOAD_OBJECT_PROPERTIES");
}
add_task(async function() {
const dbg = await initDebugger("doc-script-mutate.html");
add_task(function*() {
const dbg = yield initDebugger("doc-script-mutate.html");
toggleScopes(dbg);
let onPaused = waitForPaused(dbg);
invokeInTab("mutate");
await onPaused;
yield onPaused;
is(
getScopeNodeLabel(dbg, 2),
@ -43,16 +43,16 @@ add_task(async function() {
'The third element in the scope panel is "phonebook"'
);
// Expand `phonebook`
await expandNode(dbg, 3);
info("Expand `phonebook`");
yield expandNode(dbg, 3);
is(
getScopeNodeLabel(dbg, 4),
"S",
'The fourth element in the scope panel is "S"'
);
// Expand `S`
await expandNode(dbg, 4);
info("Expand `S`");
yield expandNode(dbg, 4);
is(
getScopeNodeLabel(dbg, 5),
"sarah",
@ -64,8 +64,8 @@ add_task(async function() {
'The sixth element in the scope panel is "serena"'
);
// Expand `sarah`
await expandNode(dbg, 5);
info("Expand `sarah`");
yield expandNode(dbg, 5);
is(
getScopeNodeLabel(dbg, 6),
"lastName",
@ -79,8 +79,8 @@ add_task(async function() {
info("Resuming");
onPaused = waitForPaused(dbg);
await resume(dbg);
await onPaused;
yield resume(dbg);
yield onPaused;
is(
getScopeNodeLabel(dbg, 2),

Просмотреть файл

@ -0,0 +1,61 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
// Tests the search bar correctly responds to queries, enter, shift enter
function waitForSearchState(dbg) {
return waitForState(dbg, () => getCM(dbg).state.search);
}
function getFocusedEl(dbg) {
let doc = dbg.win.document;
return doc.activeElement;
}
add_task(function*() {
const dbg = yield initDebugger("doc-scripts.html");
const {
selectors: { getBreakpoints, getBreakpoint, getActiveSearch },
getState
} = dbg;
const source = findSource(dbg, "simple1.js");
yield selectSource(dbg, source.url);
const cm = getCM(dbg);
pressKey(dbg, "fileSearch");
is(dbg.selectors.getActiveSearchState(dbg.getState()), "file");
// test closing and re-opening
pressKey(dbg, "Escape");
is(dbg.selectors.getActiveSearchState(dbg.getState()), null);
pressKey(dbg, "fileSearch");
const el = getFocusedEl(dbg);
type(dbg, "con");
yield waitForSearchState(dbg);
const state = cm.state.search;
pressKey(dbg, "Enter");
is(state.posFrom.line, 3);
pressKey(dbg, "Enter");
is(state.posFrom.line, 4);
pressKey(dbg, "ShiftEnter");
is(state.posFrom.line, 3);
pressKey(dbg, "fileSearch");
type(dbg, "fun");
pressKey(dbg, "Enter");
is(state.posFrom.line, 4);
// selecting another source keeps search open
yield selectSource(dbg, "simple2");
pressKey(dbg, "Enter");
is(state.posFrom.line, 0);
});

Просмотреть файл

@ -0,0 +1,71 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
function openProjectSearch(dbg) {
synthesizeKeyShortcut("CmdOrCtrl+Shift+F");
return waitForState(
dbg,
state => dbg.selectors.getActiveSearchState(state) === "project"
);
}
function closeProjectSearch(dbg) {
pressKey(dbg, "Escape");
return waitForState(dbg, state => !dbg.selectors.getActiveSearchState(state));
}
function getResult(dbg) {
return findElementWithSelector(dbg, ".managed-tree .result");
}
async function selectResult(dbg) {
const item = getResult(dbg);
const select = waitForDispatch(dbg, "SELECT_SOURCE");
item.click();
return select;
}
function getResultsCount(dbg) {
const matches = dbg.selectors
.getTextSearchResults(dbg.getState())
.valueSeq()
.map(file => file.matches)
.toJS();
return [...matches].length;
}
// Testing project search
add_task(function*() {
Services.prefs.setBoolPref(
"devtools.debugger.project-text-search-enabled",
true
);
const dbg = yield initDebugger("doc-script-switching.html", "switching-01");
yield selectSource(dbg, "switching-01");
// test opening and closing
yield openProjectSearch(dbg);
yield closeProjectSearch(dbg);
yield openProjectSearch(dbg);
type(dbg, "first");
pressKey(dbg, "Enter");
yield waitForState(dbg, () => getResultsCount(dbg) === 1);
yield selectResult(dbg);
is(dbg.selectors.getActiveSearchState(dbg.getState()), null);
const selectedSource = dbg.selectors.getSelectedSource(dbg.getState());
ok(selectedSource.get("url").includes("switching-01"));
});
registerCleanupFunction(() => {
Services.prefs.clearUserPref(
"devtools.debugger.project-text-search-enabled",
false
);
});

Просмотреть файл

@ -2,9 +2,15 @@
* http://creativecommons.org/publicdomain/zero/1.0/ */
// Testing source search
add_task(function* () {
add_task(function*() {
const dbg = yield initDebugger("doc-script-switching.html");
// test opening and closing
pressKey(dbg, "sourceSearch");
is(dbg.selectors.getActiveSearchState(dbg.getState()), "source");
pressKey(dbg, "Escape");
is(dbg.selectors.getActiveSearchState(dbg.getState()), null);
pressKey(dbg, "sourceSearch");
yield waitForElement(dbg, "input");
findElementWithSelector(dbg, "input").focus();

Просмотреть файл

@ -0,0 +1,30 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
async function openFunctionSearch(dbg) {
synthesizeKeyShortcut("CmdOrCtrl+Shift+O");
return new Promise(r => setTimeout(r, 200));
}
function resultCount(dbg) {
return findAllElements(dbg, "resultItems").length;
}
// Testing function search
add_task(function*() {
const dbg = yield initDebugger("doc-script-switching.html", "switching-01");
yield selectSource(dbg, "switching-01");
// test opening and closing
yield openFunctionSearch(dbg);
is(dbg.selectors.getActiveSearchState(dbg.getState()), "symbol");
pressKey(dbg, "Escape");
is(dbg.selectors.getActiveSearchState(dbg.getState()), null);
yield openFunctionSearch(dbg);
is(resultCount(dbg), 1);
type(dbg, "x");
is(resultCount(dbg), 0);
});

Просмотреть файл

@ -18,7 +18,7 @@ add_task(function*() {
yield addBreakpoint(dbg, "bogus-map.js", 4);
invokeInTab("runCode");
yield waitForPaused(dbg);
assertPausedLocation(dbg, "bogus-map.js", 4);
assertPausedLocation(dbg);
// Make sure that only the single generated source exists. The
// sourcemap failed to download.

Просмотреть файл

@ -75,14 +75,14 @@ add_task(function*() {
invokeInTab("keepMeAlive");
yield waitForPaused(dbg);
assertPausedLocation(dbg, entrySrc, 15);
assertPausedLocation(dbg);
yield stepIn(dbg);
assertPausedLocation(dbg, "times2.js", 2);
assertPausedLocation(dbg);
yield stepOver(dbg);
assertPausedLocation(dbg, "times2.js", 3);
assertPausedLocation(dbg);
yield stepOut(dbg);
yield stepOut(dbg);
assertPausedLocation(dbg, "entry.js", 16);
assertPausedLocation(dbg);
});

Просмотреть файл

@ -31,5 +31,5 @@ add_task(function*() {
invokeInTab("logMessage");
yield waitForPaused(dbg);
assertPausedLocation(dbg, "main.js", 4);
assertPausedLocation(dbg);
});

Просмотреть файл

@ -30,17 +30,17 @@ add_task(function*() {
yield reload(dbg);
yield waitForPaused(dbg);
assertPausedLocation(dbg, "debugger-statements.html", 8);
assertPausedLocation(dbg);
yield pressResume(dbg);
assertPausedLocation(dbg, "debugger-statements.html", 12);
assertPausedLocation(dbg);
yield pressStepIn(dbg);
assertPausedLocation(dbg, "debugger-statements.html", 13);
assertPausedLocation(dbg);
yield pressStepOut(dbg);
assertPausedLocation(dbg, "debugger-statements.html", 14);
assertPausedLocation(dbg);
yield pressStepOver(dbg);
assertPausedLocation(dbg, "debugger-statements.html", 9);
assertPausedLocation(dbg);
});

Просмотреть файл

@ -6,7 +6,7 @@
<meta charset="utf-8"/>
<title>Debugger test page</title>
</head>
<body>
<script src="simple1.js"></script>
<script src="simple2.js"></script>

Просмотреть файл

@ -147,6 +147,10 @@ function waitForThreadEvents(dbg, eventName) {
*/
function waitForState(dbg, predicate) {
return new Promise(resolve => {
if (predicate(dbg.store.getState())) {
return resolve();
}
const unsubscribe = dbg.store.subscribe(() => {
if (predicate(dbg.store.getState())) {
unsubscribe();
@ -187,14 +191,35 @@ function waitForSources(dbg, ...sources) {
);
}
/**
* Waits for a source to be loaded.
*
* @memberof mochitest/waits
* @param {Object} dbg
* @param {String} source
* @return {Promise}
* @static
*/
function waitForSource(dbg, url) {
return waitForState(dbg, state => {
const sources = dbg.selectors.getSources(state);
return sources.find(s => (s.get("url") || "").includes(url));
});
}
function waitForElement(dbg, selector) {
return waitUntil(() => findElementWithSelector(dbg, selector));
}
function waitForSelectedSource(dbg) {
function waitForSelectedSource(dbg, sourceId) {
return waitForState(dbg, state => {
const source = dbg.selectors.getSelectedSource(state);
return source && source.has("loading") && !source.get("loading");
const isLoaded = source && source.has("loading") && !source.get("loading");
if (sourceId) {
return isLoaded && sourceId == source.get("id");
}
return isLoaded;
});
}
@ -207,22 +232,17 @@ function waitForSelectedSource(dbg) {
* @param {Number} line
* @static
*/
function assertPausedLocation(dbg, source, line) {
function assertPausedLocation(dbg) {
const { selectors: { getSelectedSource, getPause }, getState } = dbg;
source = findSource(dbg, source);
// Check the selected source
is(getSelectedSource(getState()).get("id"), source.id);
ok(isTopFrameSelected(dbg, getState()), "top frame's source is selected");
// Check the pause location
const pause = getPause(getState());
const location = pause && pause.frame && pause.frame.location;
is(location.sourceId, source.id);
is(location.line, line);
const pauseLine = pause && pause.frame && pause.frame.location.line;
// Check the debug line
const lineInfo = getCM(dbg).lineInfo(line - 1);
const lineInfo = getCM(dbg).lineInfo(pauseLine - 1);
ok(
lineInfo.wrapClass.includes("debug-line"),
"Line is highlighted as paused"
@ -286,24 +306,37 @@ function isPaused(dbg) {
* @param {Object} dbg
* @static
*/
function waitForPaused(dbg) {
return Task.spawn(function*() {
// We want to make sure that we get both a real paused event and
// that the state is fully populated. The client may do some more
// work (call other client methods) before populating the state.
yield waitForThreadEvents(dbg, "paused"), yield waitForState(dbg, state => {
const pause = dbg.selectors.getPause(state);
// Make sure we have the paused state.
if (!pause) {
return false;
}
// Make sure the source text is completely loaded for the
// source we are paused in.
const sourceId = pause && pause.frame && pause.frame.location.sourceId;
const source = dbg.selectors.getSource(dbg.getState(), sourceId);
return source && source.has("loading") && !source.get("loading");
});
});
async function waitForPaused(dbg) {
// We want to make sure that we get both a real paused event and
// that the state is fully populated. The client may do some more
// work (call other client methods) before populating the state.
await waitForThreadEvents(dbg, "paused");
await waitForState(dbg, state => isTopFrameSelected(dbg, state));
}
function isTopFrameSelected(dbg, state) {
const pause = dbg.selectors.getPause(state);
// Make sure we have the paused state.
if (!pause) {
return false;
}
// Make sure the source text is completely loaded for the
// source we are paused in.
const sourceId = pause.frame && pause.frame.location.sourceId;
const source = dbg.selectors.getSelectedSource(state);
if (!source) {
return false;
}
const isLoaded = source.has("loading") && !source.get("loading");
if (!isLoaded) {
return false;
}
return source.get("id") == sourceId;
}
function createDebuggerContext(toolbox) {
@ -464,7 +497,7 @@ function resume(dbg) {
}
function deleteExpression(dbg, input) {
info("Resuming");
info(`Delete expression "${input}"`);
return dbg.actions.deleteExpression({ input });
}
@ -587,6 +620,10 @@ const shiftOrAlt = isMac
? { accelKey: true, shiftKey: true }
: { accelKey: true, altKey: true };
const cmdShift = isMac
? { accelKey: true, shiftKey: true, metaKey: true }
: { accelKey: true, altKey: true, ctrlKey: true };
// On Mac, going to beginning/end only works with meta+left/right. On
// Windows, it only works with home/end. On Linux, apparently, either
// ctrl+left/right or home/end work.
@ -602,7 +639,9 @@ const keyMappings = {
inspector: { code: "c", modifiers: shiftOrAlt },
sourceSearch: { code: "p", modifiers: cmdOrCtrl },
fileSearch: { code: "f", modifiers: cmdOrCtrl },
functionSearch: { code: "o", modifiers: cmdShift },
Enter: { code: "VK_RETURN" },
ShiftEnter: { code: "VK_RETURN", modifiers: shiftOrAlt },
Up: { code: "VK_UP" },
Down: { code: "VK_DOWN" },
Right: { code: "VK_RIGHT" },
@ -611,6 +650,7 @@ const keyMappings = {
Start: startKey,
Tab: { code: "VK_TAB" },
Escape: { code: "VK_ESCAPE" },
Delete: { code: "VK_DELETE" },
pauseKey: { code: "VK_F8" },
resumeKey: { code: "VK_F8" },
stepOverKey: { code: "VK_F10" },
@ -631,16 +671,14 @@ const keyMappings = {
* @static
*/
function pressKey(dbg, keyName) {
let keyEvent = keyMappings[keyName];
const keyEvent = keyMappings[keyName];
const { code, modifiers } = keyEvent;
return EventUtils.synthesizeKey(code, modifiers || {}, dbg.win);
}
function type(dbg, string) {
string.split("").forEach(char => {
EventUtils.synthesizeKey(char, {}, dbg.win);
});
string.split("").forEach(char => EventUtils.synthesizeKey(char, {}, dbg.win));
}
function isVisibleWithin(outerEl, innerEl) {
@ -655,14 +693,15 @@ const selectors = {
expressionNode: i =>
`.expressions-list .expression-container:nth-child(${i}) .object-label`,
expressionValue: i =>
`.expressions-list .expression-container:nth-child(${i}) .object-value`,
`.expressions-list .expression-container:nth-child(${i}) .object-delimiter + *`,
expressionClose: i =>
`.expressions-list .expression-container:nth-child(${i}) .close`,
expressionNodes: ".expressions-list .tree-node",
scopesHeader: ".scopes-pane ._header",
breakpointItem: i => `.breakpoints-list .breakpoint:nth-child(${i})`,
scopeNode: i => `.scopes-list .tree-node:nth-child(${i}) .object-label`,
scopeValue: i => `.scopes-list .tree-node:nth-child(${i}) .object-value`,
scopeValue: i =>
`.scopes-list .tree-node:nth-child(${i}) .object-delimiter + *`,
frame: i => `.frames ul li:nth-child(${i})`,
frames: ".frames ul li",
gutter: i => `.CodeMirror-code *:nth-child(${i}) .CodeMirror-linenumber`,
@ -682,7 +721,8 @@ const selectors = {
editorFooter: ".editor-pane .source-footer",
sourceNode: i => `.sources-list .tree-node:nth-child(${i})`,
sourceNodes: ".sources-list .tree-node",
sourceArrow: i => `.sources-list .tree-node:nth-child(${i}) .arrow`
sourceArrow: i => `.sources-list .tree-node:nth-child(${i}) .arrow`,
resultItems: `.result-list .result-item`
};
function getSelector(elementName, ...args) {

Просмотреть файл

@ -154,6 +154,7 @@ skip-if = e10s || true # bug 1113935
[browser_dbg_blackboxing-03.js]
[browser_dbg_blackboxing-04.js]
[browser_dbg_blackboxing-05.js]
skip-if = true # Bug 1385304
[browser_dbg_blackboxing-06.js]
[browser_dbg_blackboxing-07.js]
[browser_dbg_breadcrumbs-access.js]

Просмотреть файл

@ -140,18 +140,14 @@ sources.search.alt.key=CmdOrCtrl+O
# full project text search for searching all the files the debugger has seen.
projectTextSearch.key=CmdOrCtrl+Shift+F
# LOCALIZATION NOTE (projectTextSearch.placeholder): A placeholder shown
# when searching across all of the files in a project.
projectTextSearch.placeholder=Find in files…
# LOCALIZATION NOTE (sources.noSourcesAvailable): Text shown when the debugger
# does not have any sources.
sources.noSourcesAvailable=This page has no sources
# LOCALIZATION NOTE (sourcesPane.showSourcesTooltip): The tooltip shown when
# the user will navigate to the source tree view.
sourcesPane.showSourcesTooltip=Show sources
# LOCALIZATION NOTE (sourcesPane.showOutlineTooltip): The tooltip shown when
# the user will navigate to the source outline view.
sourcesPane.showOutlineTooltip=Show outline
# LOCALIZATION NOTE (sourceSearch.search.key2): Key shortcut to open the search
# for searching within a the currently opened files in the editor
sourceSearch.search.key2=CmdOrCtrl+F
@ -225,6 +221,42 @@ breakpointMenuItem.enableAll=Enable all breakpoints
breakpointMenuItem.disableAll=Disable all breakpoints
breakpointMenuItem.deleteAll=Remove all breakpoints
# LOCALIZATION NOTE (breakpointMenuItem.deleteSelf.accesskey): Access key to remove the
# currently selected breakpoint from the context menu
breakpointMenuItem.deleteSelf.accesskey=r
# LOCALIZATION NOTE (breakpointMenuItem.enableSelf.accesskey): Access key to enable the
# currently selected breakpoint from the context menu
breakpointMenuItem.enableSelf.accesskey=e
# LOCALIZATION NOTE (breakpointMenuItem.disableSelf.accesskey): Access key to disable the
# currently selected breakpoint from the context menu
breakpointMenuItem.disableSelf.accesskey=d
# LOCALIZATION NOTE (breakpointMenuItem.deleteAll.accesskey): Access key to remove all
# the breakpoints from the context menu
breakpointMenuItem.deleteAll.accesskey=a
# LOCALIZATION NOTE (breakpointMenuItem.enableAll.accesskey): Access key to enable all
# the breakpoints from the context menu
breakpointMenuItem.enableAll.accesskey=b
# LOCALIZATION NOTE (breakpointMenuItem.disableAll.accesskey): Access key to disable all
# the breakpoints from the context menu
breakpointMenuItem.disableAll.accesskey=c
# LOCALIZATION NOTE (breakpointMenuItem.deleteOthers.accesskey): Access key to remove
# other breakpoints from the context menu
breakpointMenuItem.deleteOthers.accesskey=p
# LOCALIZATION NOTE (breakpointMenuItem.enableOthers.accesskey): Access key to enable
# other breakpoints from the context menu
breakpointMenuItem.enableOthers.accesskey=q
# LOCALIZATION NOTE (breakpointMenuItem.disableOthers.accesskey): Access key to disable
# other breakpoints from the context menu
breakpointMenuItem.disableOthers.accesskey=s
# LOCALIZATION NOTE (breakpoints.header): Breakpoints right sidebar pane header.
breakpoints.header=Breakpoints
@ -470,7 +502,7 @@ sourceSearch.search=Search Sources…
# LOCALIZATION NOTE (sourceSearch.noResults): The center pane Source Search
# message when the query did not match any of the sources.
sourceSearch.noResults=No files matching %S found
sourceSearch.noResults2=No results found
# LOCALIZATION NOTE (ignoreExceptions): The pause on exceptions button tooltip
# when the debugger will not pause on exceptions.
@ -596,6 +628,10 @@ symbolSearch.search.variablesPlaceholder=Search variables…
# searching for a function or variable
symbolSearch.search.key2=CmdOrCtrl+Shift+O
# LOCALIZATION NOTE(symbolSearch.searchModifier.modifiersLabel): A label
# preceding the group of modifiers
symbolSearch.searchModifier.modifiersLabel=Modifiers:
# LOCALIZATION NOTE(symbolSearch.searchModifier.regex): A search option
# when searching text in a file
symbolSearch.searchModifier.regex=Regex

Просмотреть файл

@ -39,3 +39,5 @@ pref("devtools.debugger.expressions", "[]");
pref("devtools.debugger.file-search-case-sensitive", false);
pref("devtools.debugger.file-search-whole-word", false);
pref("devtools.debugger.file-search-regex-match", false);
pref("devtools.debugger.project-text-search-enabled", true);

17084
devtools/client/shared/vendor/lodash.js поставляемый Normal file

Разница между файлами не показана из-за своего большого размера Загрузить разницу

1
devtools/client/shared/vendor/moz.build поставляемый
Просмотреть файл

@ -13,6 +13,7 @@ modules += [
'immutable.js',
'jsol.js',
'jszip.js',
'lodash.js',
'react-addons-shallow-compare.js',
]

Просмотреть файл

@ -9711,6 +9711,8 @@ public:
// Make sure to keep null things null as needed
if (aTypeHint) {
mTypeHint = aTypeHint;
} else {
mTypeHint.SetIsVoid(true);
}
}
@ -9722,7 +9724,9 @@ public:
mReferrer,
mReferrerPolicy,
mTriggeringPrincipal, mPrincipalToInherit,
mFlags, EmptyString(), mTypeHint.get(),
mFlags, EmptyString(),
mTypeHint.IsVoid() ? nullptr
: mTypeHint.get(),
NullString(), mPostData, mHeadersData,
mLoadType, mSHEntry, mFirstParty,
mSrcdoc, mSourceDocShell, mBaseURI,
@ -9730,8 +9734,7 @@ public:
}
private:
// Use IDL strings so .get() returns null by default
nsXPIDLCString mTypeHint;
nsCString mTypeHint;
nsString mSrcdoc;
RefPtr<nsDocShell> mDocShell;

Просмотреть файл

@ -15,7 +15,7 @@
#include "mozilla/ReflowInput.h"
#include "nsIServiceManager.h"
#include "nsComponentManagerUtils.h"
#include "nsXPIDLString.h"
#include "nsString.h"
#include "nsIAtom.h"
#include "nsReadableUtils.h"
#include "nsUnicharUtils.h"

Просмотреть файл

@ -10,10 +10,9 @@
#include "nsIWebNavigationInfo.h"
#include "nsCOMPtr.h"
#include "nsICategoryManager.h"
#include "nsStringFwd.h"
#include "mozilla/Attributes.h"
class nsCString;
#define NS_WEBNAVIGATION_INFO_CID \
{ 0xf30bc0a2, 0x958b, 0x4287,{0xbf, 0x62, 0xce, 0x38, 0xba, 0x0c, 0x81, 0x1e}}

Просмотреть файл

@ -10,10 +10,9 @@
#include <initializer_list>
#include "mozilla/Maybe.h"
#include "nsStringFwd.h"
#include "nsTArray.h"
class nsAString;
namespace mozilla {
// Represents the reason why we can't run the CSS property on the compositor.

Просмотреть файл

@ -225,13 +225,6 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(CustomElementRegistry)
NS_INTERFACE_MAP_ENTRY(nsISupports)
NS_INTERFACE_MAP_END
/* static */ bool
CustomElementRegistry::IsCustomElementEnabled(JSContext* aCx, JSObject* aObject)
{
return nsContentUtils::IsCustomElementsEnabled() ||
nsContentUtils::IsWebComponentsEnabled();
}
CustomElementRegistry::CustomElementRegistry(nsPIDOMWindowInner* aWindow)
: mWindow(aWindow)
, mIsCustomDefinitionRunning(false)

Просмотреть файл

@ -16,6 +16,7 @@
#include "mozilla/dom/FunctionBinding.h"
#include "nsCycleCollectionParticipant.h"
#include "nsWrapperCache.h"
#include "nsContentUtils.h"
class nsDocument;
@ -313,7 +314,11 @@ public:
public:
static bool IsCustomElementEnabled(JSContext* aCx = nullptr,
JSObject* aObject = nullptr);
JSObject* aObject = nullptr)
{
return nsContentUtils::IsCustomElementsEnabled() ||
nsContentUtils::IsWebComponentsEnabled();
}
explicit CustomElementRegistry(nsPIDOMWindowInner* aWindow);

Просмотреть файл

@ -26,7 +26,6 @@
#include "mozilla/dom/BindingDeclarations.h"
class nsIStackFrame;
class nsString;
nsresult
NS_GetNameAndMessageForDOMNSResult(nsresult aNSResult, nsACString& aName,

Просмотреть файл

@ -8,9 +8,9 @@
#define DirectionalityUtils_h___
#include "nscore.h"
#include "nsStringFwd.h"
class nsIContent;
class nsAString;
class nsAttrValue;
class nsTextNode;

Просмотреть файл

@ -11,9 +11,9 @@
#include "mozilla/dom/BorrowedAttrInfo.h"
#include "mozilla/dom/FragmentOrElement.h"
#include "nsIDOMDocumentFragment.h"
#include "nsStringFwd.h"
class nsIAtom;
class nsAString;
class nsIDocument;
class nsIContent;

Просмотреть файл

@ -21,6 +21,7 @@
#include "nsCaseTreatment.h"
#include "nsMargin.h"
#include "nsCOMPtr.h"
#include "nsStringFwd.h"
#include "SVGAttrValueWrapper.h"
#include "nsTArrayForwardDeclare.h"
#include "nsIAtom.h"
@ -31,7 +32,6 @@
// Undefine LoadImage to prevent naming conflict with Windows.
#undef LoadImage
class nsAString;
class nsIDocument;
class nsStyledElement;
struct MiscContainer;

Просмотреть файл

@ -9,14 +9,12 @@
#include <stdint.h>
#include "nsCOMPtr.h"
#include "nsStringFwd.h"
class nsContentList;
class nsIAtom;
class nsIContent;
class nsINode;
// Can't use nsStringFwd.h because that's internal-API-only.
class nsString;
class nsAString;
namespace mozilla {
namespace dom {

Просмотреть файл

@ -20,12 +20,12 @@
#include "nsIScriptSecurityManager.h"
#include "nsIURI.h"
#include "nsServiceManagerUtils.h"
#include "nsStringFwd.h"
//XXXtw sadly, this makes consumers of nsContentPolicyUtils depend on widget
#include "nsIDocument.h"
#include "nsPIDOMWindow.h"
class nsACString;
class nsIPrincipal;
#define NS_CONTENTPOLICY_CONTRACTID "@mozilla.org/layout/content-policy;1"

Просмотреть файл

@ -8,6 +8,7 @@
#include "nsError.h"
#include "nsIDocument.h"
#include "nsStringFwd.h"
#include "mozilla/EventForwards.h"
class nsINode;
@ -16,8 +17,6 @@ class nsIDocument;
class nsIImageLoadingContent;
class nsIContent;
class nsITransferable;
class nsACString;
class nsAString;
class nsIPresShell;
class nsILoadContext;

Просмотреть файл

@ -12810,10 +12810,10 @@ nsGlobalWindow::OpenInternal(const nsAString& aUrl, const nsAString& aName,
const bool checkForPopup = !nsContentUtils::LegacyIsCallerChromeOrNativeCode() &&
!aDialog && !WindowExists(aName, forceNoOpener, !aCalledNoScript);
// Note: it's very important that this be an nsXPIDLCString, since we want
// .get() on it to return nullptr until we write stuff to it. The window
// watcher expects a null URL string if there is no URL to load.
nsXPIDLCString url;
// Note: the Void handling here is very important, because the window watcher
// expects a null URL string (not an empty string) if there is no URL to load.
nsCString url;
url.SetIsVoid(true);
nsresult rv = NS_OK;
// It's important to do this security check before determining whether this
@ -12828,7 +12828,7 @@ nsGlobalWindow::OpenInternal(const nsAString& aUrl, const nsAString& aName,
//
// If we're not navigating, we assume that whoever *does* navigate the
// window will do a security check of their own.
if (url.get() && !aDialog && aNavigate)
if (!url.IsVoid() && !aDialog && aNavigate)
rv = SecurityCheckURL(url.get());
}
@ -12892,7 +12892,8 @@ nsGlobalWindow::OpenInternal(const nsAString& aUrl, const nsAString& aName,
if (!aCalledNoScript) {
// We asserted at the top of this function that aNavigate is true for
// !aCalledNoScript.
rv = pwwatch->OpenWindow2(AsOuter(), url.get(), name_ptr,
rv = pwwatch->OpenWindow2(AsOuter(), url.IsVoid() ? nullptr : url.get(),
name_ptr,
options_ptr, /* aCalledFromScript = */ true,
aDialog, aNavigate, argv,
isPopupSpamWindow,
@ -12914,7 +12915,8 @@ nsGlobalWindow::OpenInternal(const nsAString& aUrl, const nsAString& aName,
nojsapi.emplace();
}
rv = pwwatch->OpenWindow2(AsOuter(), url.get(), name_ptr,
rv = pwwatch->OpenWindow2(AsOuter(), url.IsVoid() ? nullptr : url.get(),
name_ptr,
options_ptr, /* aCalledFromScript = */ false,
aDialog, aNavigate, aExtraArgument,
isPopupSpamWindow,

Просмотреть файл

@ -18,7 +18,6 @@
#include "nsNameSpaceManager.h"
#include "nsString.h"
#include "nsUnicharUtils.h"
#include "nsXPIDLString.h"
#include "nsIServiceManager.h"
#include "nsIDocumentEncoder.h"
#include "nsGkAtoms.h"

Просмотреть файл

@ -10,9 +10,9 @@
#include "mozilla/dom/BorrowedAttrInfo.h"
#include "nsCaseTreatment.h" // for enum, cannot be forward-declared
#include "nsINode.h"
#include "nsStringFwd.h"
// Forward declarations
class nsAString;
class nsIAtom;
class nsIURI;
class nsRuleWalker;

Просмотреть файл

@ -8,10 +8,10 @@
#define nsIContentSerializer_h
#include "nsISupports.h"
#include "nsStringFwd.h"
class nsIContent;
class nsIDocument;
class nsAString;
namespace mozilla {
class Encoding;

Просмотреть файл

@ -21,6 +21,7 @@
#include "nsIUUIDGenerator.h"
#include "nsPIDOMWindow.h" // for use in inline functions
#include "nsPropertyTable.h" // for member
#include "nsStringFwd.h"
#include "nsDataHashtable.h" // for member
#include "nsURIHashKey.h" // for member
#include "mozilla/net/ReferrerPolicy.h" // for member
@ -54,7 +55,6 @@ class ElementCreationOptionsOrString;
class gfxUserFontSet;
class imgIRequest;
class nsAString;
class nsBindingManager;
class nsIDocShell;
class nsDocShell;

Просмотреть файл

@ -9,6 +9,7 @@
#include "mozilla/dom/DispatcherTrait.h"
#include "nsISupports.h"
#include "nsStringFwd.h"
#include "nsTArray.h"
#include "js/TypeDecls.h"
@ -16,8 +17,6 @@
{ 0x11afa8be, 0xd997, 0x4e07, \
{ 0xa6, 0xa3, 0x6f, 0x87, 0x2e, 0xc3, 0xee, 0x7f } }
class nsACString;
class nsCString;
class nsCycleCollectionTraversalCallback;
class nsIPrincipal;

Просмотреть файл

@ -12,12 +12,11 @@
#include "nsIAtom.h"
#include "nsIDocument.h"
#include "nsIObserver.h"
#include "nsStringFwd.h"
#include "nsTArray.h"
#include "mozilla/StaticPtr.h"
class nsAString;
/**
* The Name Space Manager tracks the association between a NameSpace
* URI and the int32_t runtime id. Mappings between NameSpaces and

Просмотреть файл

@ -14,9 +14,9 @@
#include "mozilla/Attributes.h" // for final
#include "nsCOMPtr.h" // for member
#include "nsCycleCollectionParticipant.h" // for NS_DECL_CYCLE_*
#include "nsStringFwd.h"
#include "plhash.h" // for typedef PLHashNumber
class nsAString;
class nsBindingManager;
class nsIAtom;
class nsIDocument;

Просмотреть файл

@ -17,7 +17,7 @@
#include "nsIInterfaceInfoManager.h"
#include "nsIInterfaceInfo.h"
#include "xptinfo.h"
#include "nsXPIDLString.h"
#include "nsString.h"
#include "nsReadableUtils.h"
#include "nsHashKeys.h"
#include "nsDOMClassInfo.h"

Просмотреть файл

@ -20,8 +20,6 @@
#include "nsReadableUtils.h"
#include "nsISupportsImpl.h"
class nsString;
// XXX should this normalize the code to keep a \u0000 at the end?
// XXX nsTextFragmentPool?

Просмотреть файл

@ -18,7 +18,6 @@
#include "nsNameSpaceManager.h"
#include "nsString.h"
#include "nsUnicharUtils.h"
#include "nsXPIDLString.h"
#include "nsIServiceManager.h"
#include "nsIDocumentEncoder.h"
#include "nsGkAtoms.h"

Просмотреть файл

@ -7843,10 +7843,12 @@ class CGPerSignatureCall(CGThing):
not getter):
cgThings.append(CGGeneric(fill(
"""
CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(${obj});
Maybe<AutoCEReaction> ceReaction;
if (reactionsStack) {
ceReaction.emplace(reactionsStack);
if (CustomElementRegistry::IsCustomElementEnabled()) {
CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(${obj});
if (reactionsStack) {
ceReaction.emplace(reactionsStack);
}
}
""", obj=objectName)))

Просмотреть файл

@ -1408,6 +1408,16 @@ WebGLContext::GetCompositorBackendType() const
return LayersBackend::LAYERS_NONE;
}
nsIDocument*
WebGLContext::GetOwnerDoc() const
{
MOZ_ASSERT(mCanvasElement);
if (!mCanvasElement) {
return nullptr;
}
return mCanvasElement->OwnerDoc();
}
void
WebGLContext::Commit()
{

Просмотреть файл

@ -514,6 +514,7 @@ public:
void AssertCachedGlobalState();
dom::HTMLCanvasElement* GetCanvas() const { return mCanvasElement; }
nsIDocument* GetOwnerDoc() const;
// WebIDL WebGLRenderingContext API
void Commit();

Просмотреть файл

@ -61,6 +61,19 @@ WebGLQuery::Delete()
LinkedListElement<WebGLQuery>::removeFrom(mContext->mQueries);
}
static void
DispatchAvailableRunnable(WebGLQuery* query)
{
RefPtr<AvailableRunnable> runnable = new AvailableRunnable(query);
nsIDocument* document = query->mContext->GetOwnerDoc();
if (document) {
document->Dispatch(TaskCategory::Other, runnable.forget());
return;
}
NS_DispatchToCurrentThread(runnable.forget());
}
////
static GLenum
@ -126,7 +139,7 @@ WebGLQuery::EndQuery()
////
NS_DispatchToCurrentThread(new AvailableRunnable(this));
DispatchAvailableRunnable(this);
}
void
@ -254,7 +267,7 @@ WebGLQuery::QueryCounter(const char* funcName, GLenum target)
gl->MakeCurrent();
gl->fQueryCounter(mGLName, mTarget);
NS_DispatchToCurrentThread(new AvailableRunnable(this));
DispatchAvailableRunnable(this);
}
////

Просмотреть файл

@ -9,11 +9,10 @@
#include "nsContentUtils.h"
#include "nsISupports.h"
#include "nsStringFwd.h"
#include "nsTArrayForwardDeclare.h"
class nsACString;
class nsIDocument;
class nsString;
#define NS_NSICONSOLEREPORTCOLLECTOR_IID \
{0xdd98a481, 0xd2c4, 0x4203, {0x8d, 0xfa, 0x85, 0xbf, 0xd7, 0xdc, 0xd7, 0x05}}

Просмотреть файл

@ -10,8 +10,7 @@
#include "mozilla/dom/Event.h"
#include "mozilla/dom/AnimationEventBinding.h"
#include "nsIDOMAnimationEvent.h"
class nsAString;
#include "nsStringFwd.h"
namespace mozilla {
namespace dom {

Просмотреть файл

@ -13,10 +13,9 @@
#include "mozilla/EventForwards.h"
#include "mozilla/TouchEvents.h"
#include "nsJSEnvironment.h"
#include "nsStringFwd.h"
#include "nsWrapperCache.h"
class nsAString;
namespace mozilla {
namespace dom {

Просмотреть файл

@ -10,8 +10,7 @@
#include "mozilla/dom/Event.h"
#include "mozilla/dom/TransitionEventBinding.h"
#include "nsIDOMTransitionEvent.h"
class nsAString;
#include "nsStringFwd.h"
namespace mozilla {
namespace dom {

Просмотреть файл

@ -11,7 +11,7 @@
#include "mozilla/dom/HTMLAllCollection.h"
#include "nsCOMPtr.h"
#include "nsGlobalWindow.h"
#include "nsXPIDLString.h"
#include "nsString.h"
#include "nsPrintfCString.h"
#include "nsReadableUtils.h"
#include "nsUnicharUtils.h"

Просмотреть файл

@ -15,9 +15,9 @@
#define nsIFormProcessor_h__
#include "nsISupports.h"
#include "nsStringFwd.h"
#include "nsTArrayForwardDeclare.h"
class nsString;
class nsIDOMHTMLElement;
// {0ae53c0f-8ea2-4916-bedc-717443c3e185}

Просмотреть файл

@ -8,13 +8,13 @@
#define nsIHTMLCollection_h___
#include "nsIDOMHTMLCollection.h"
#include "nsStringFwd.h"
#include "nsTArrayForwardDeclare.h"
#include "nsWrapperCache.h"
#include "js/GCAPI.h"
#include "js/TypeDecls.h"
class nsINode;
class nsString;
namespace mozilla {
namespace dom {

Просмотреть файл

@ -9,8 +9,8 @@
#include "nsISupports.h"
#include "nsCOMPtr.h"
#include "nsStringFwd.h"
class nsIContent;
class nsAString;
class nsISelectionController;
class nsFrameSelection;
class nsTextControlFrame;

Просмотреть файл

@ -184,6 +184,7 @@ support-files =
file_bug1166138_2x.png
file_bug1166138_def.png
script_fakepath.js
sw_formSubmission.js
object_bug287465_o1.html
object_bug287465_o2.html
object_bug556645.html

Просмотреть файл

@ -0,0 +1,36 @@
/**
* We are used by test_formSubmission.html to immediately activate and start
* controlling its page. We operate in 3 modes, conveyed via ?MODE appended to
* our URL.
*
* - "no-fetch": Don't register a fetch listener so that the optimized fetch
* event bypass happens.
* - "reset-fetch": Do register a fetch listener, reset every interception.
* - "proxy-fetch": Do register a fetch listener, resolve every interception
* with fetch(event.request).
*/
const mode = location.search.slice(1);
// Fetch handling.
if (mode !== "no-fetch") {
addEventListener("fetch", function(event) {
if (mode === "reset-fetch") {
// Don't invoke respondWith, resetting the interception.
return;
} else if (mode === "proxy-fetch") {
// Per the spec, there's an automatic waitUntil() on this too.
event.respondWith(fetch(event.request));
return;
}
});
}
// Go straight to activation, bypassing waiting.
addEventListener("install", function(event) {
event.waitUntil(skipWaiting());
});
// Control the test document ASAP.
addEventListener("activate", function(event) {
event.waitUntil(clients.claim());
});

Просмотреть файл

@ -5,7 +5,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=523771
-->
<head>
<title>Test for Bug 523771</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
@ -254,7 +254,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=523771
<input type=email name="n20_8" value="foo@mózillä.órg"></td>
</tr>
</table>
<p>
File input:
<input type=file name="file_1" class="setfile">
@ -290,7 +290,7 @@ t_6_v</textarea>
</textarea>
<textarea name="t8">
t_8_v
t_8_v&#0032;
</textarea>
<textarea name="t9_&#13;_&#10;_&#13;&#10;_ _&quot;">t_9_&#13;_&#10;_&#13;&#10;_ _&quot;_v</textarea>
<textarea name="t10" value="t_10_bogus">t_10_v</textarea>
@ -298,7 +298,7 @@ t_6_v</textarea>
<p>
Select one:
<select name="sel_1"></select>
<select name="sel_1b"><option></option></select>
<select name="sel_1c"><option selected></option></select>
@ -339,7 +339,7 @@ t_6_v</textarea>
<p>
Select multiple:
<select multiple name="msel_1"></select>
<select multiple name="msel_1b"><option></option></select>
<select multiple name="msel_1c"><option selected></option></select>
@ -449,7 +449,7 @@ function onFilesOpened(files) {
emptyFile = { name: "", type: "application/octet-stream" };
// Now, actually run the tests; see below.
onFilesSet();
runAllTestVariants();
};
var expectedSub = [
@ -605,11 +605,11 @@ function checkMPSubmission(sub, expected, test) {
is(sub.length, expected.length,
"Correct number of multipart items in " + test);
if (sub.length != expected.length) {
alert(JSON.stringify(sub));
}
var i;
for (i = 0; i < expected.length; ++i) {
if (!("fileName" in expected[i])) {
@ -662,7 +662,7 @@ function checkURLSubmission(sub, expected) {
}
function checkPlainSubmission(sub, expected) {
is(sub,
expected.map(function(v) {
return v.name + "=" +
@ -678,13 +678,27 @@ function setDisabled(list, state) {
});
}
/*
* The below test function uses callbacks that invoke gen.next() rather than
* creating and resolving Promises. I'm trying to minimize churn since these
* changes want to be uplifted. Some kind soul might want to clean this all up
* at some point.
*/
var gen;
function onFilesSet() {
gen = runTest();
gen.next();
$("target_iframe").onload = function() { gen.next(); };
// Run the suite of tests for this variant, returning a Promise that will be
// resolved when the batch completes. Then and only then runTestVariant may
// be invoked to run a different variation.
function runTestVariant(variantLabel) {
info("starting test variant: " + variantLabel);
return new Promise((resolve) => {
// Instantiate the generator.
gen = runTestVariantUsingWeirdGenDriver(resolve);
// Run the generator to the first yield, at which point it is self-driving.
gen.next();
});
}
function* runTest() {
function* runTestVariantUsingWeirdGenDriver(finishedVariant) {
// Set up the expectedSub array
fileReader1 = new FileReader;
fileReader1.readAsBinaryString(myFile1);
@ -716,11 +730,12 @@ function* runTest() {
var form = $("form");
// multipart/form-data
var iframe = $("target_iframe");
iframe.onload = function() { gen.next(); };
// Make normal submission
form.action = "form_submit_server.sjs";
form.method = "POST";
form.enctype = "multipart/form-data";
form.submit();
yield undefined; // Wait for iframe to load as a result of the submission
var submission = JSON.parse(iframe.contentDocument.documentElement.textContent);
@ -781,7 +796,7 @@ function* runTest() {
xhr.send(new FormData(form));
yield undefined; // Wait for XHR load
checkMPSubmission(JSON.parse(xhr.responseText), expectedSub, "send form using XHR and FormData");
// Send disabled form using XHR and FormData
setDisabled(document.querySelectorAll("input, select, textarea"), true);
xhr.open("POST", "form_submit_server.sjs");
@ -789,7 +804,7 @@ function* runTest() {
yield undefined;
checkMPSubmission(JSON.parse(xhr.responseText), [], "send disabled form using XHR and FormData");
setDisabled(document.querySelectorAll("input, select, textarea"), false);
// Send FormData
function addToFormData(fd) {
fd.append("aName", "aValue");
@ -813,6 +828,71 @@ function* runTest() {
checkMPSubmission(JSON.parse(xhr.responseText),
expectedSub.concat(expectedAugment), "send augmented FormData");
finishedVariant();
}
/**
* Install our service-worker (parameterized by appending "?MODE"), which will
* invoke skipWaiting() and clients.claim() to begin controlling us ASAP. We
* wait on the controllerchange event
*/
async function installAndBeControlledByServiceWorker(mode) {
const scriptURL = "sw_formSubmission.js?" + mode;
const controllerChanged = new Promise((resolve) => {
navigator.serviceWorker.addEventListener(
"controllerchange", () => { resolve(); }, { once: true });
});
info("installing ServiceWorker: " + scriptURL);
const swr = await navigator.serviceWorker.register(scriptURL,
{ scope: "./" });
await controllerChanged;
ok(navigator.serviceWorker.controller.scriptURL.endsWith(scriptURL),
"controlled by the SW we expected");
info("became controlled by ServiceWorker.");
return swr;
}
async function runAllTestVariants() {
// Run the test as it has historically been run, with no ServiceWorkers
// anywhere!
await runTestVariant("no ServiceWorker");
// Uncomment the below if something in the test seems broken and you're not
// sure whether it's a side-effect of the multiple passes or not.
//await runTestVariant("no ServiceWorker second paranoia time");
// Ensure ServiceWorkers are enabled and that testing mode (which disables
// security checks) is on too.
await SpecialPowers.pushPrefEnv({"set": [
["dom.serviceWorkers.enabled", true],
["dom.serviceWorkers.testing.enabled", true]
]});
// Now run the test with a ServiceWorker that covers the scope but has no
// fetch handler, so the optimization case will not actually dispatch a
// "fetch" event, but some stuff will happen that can change things enough
// to break them like in https://bugzilla.mozilla.org/show_bug.cgi?id=1383518.
await installAndBeControlledByServiceWorker("no-fetch");
await runTestVariant("ServiceWorker that does not listen for fetch events");
// Now the ServiceWorker does have a "fetch" event listener, but it will reset
// interception every time. This is similar to the prior case but different
// enough that it could break things in a different exciting way.
await installAndBeControlledByServiceWorker("reset-fetch");
await runTestVariant("ServiceWorker that resets all fetches");
// Now the ServiceWorker resolves the fetch event with `fetch(event.request)`
// which makes little sense but is a thing that can happen.
const swr = await installAndBeControlledByServiceWorker("proxy-fetch");
await runTestVariant("ServiceWorker that proxies all fetches");
// cleanup.
info("unregistering ServiceWorker");
await swr.unregister();
info("ServiceWorker uninstalled");
SimpleTest.finish();
}

Просмотреть файл

@ -11,13 +11,11 @@
#include "mozilla/dom/BindingDeclarations.h"
#include "mozilla/dom/Event.h"
#include "mozilla/dom/Nullable.h"
#include "nsStringFwd.h"
#define IDBVERSIONCHANGEEVENT_IID \
{0x3b65d4c3, 0x73ad, 0x492e, {0xb1, 0x2d, 0x15, 0xf9, 0xda, 0xc2, 0x08, 0x4b}}
class nsAString;
class nsDependentString;
namespace mozilla {
class ErrorResult;

Просмотреть файл

@ -8,9 +8,7 @@
#define mozilla_dom_indexeddb_scripterrorhelper_h__
#include <inttypes.h>
class nsACString;
class nsAString;
#include "nsStringFwd.h"
namespace mozilla {
namespace dom {
@ -41,4 +39,4 @@ public:
} // namespace dom
} // namespace mozilla
#endif // mozilla_dom_indexeddb_scripterrorhelper_h__
#endif // mozilla_dom_indexeddb_scripterrorhelper_h__

Просмотреть файл

@ -10,6 +10,7 @@
#include "mozilla/dom/ipc/IdType.h"
#include "nsISupports.h"
#include "nsStringFwd.h"
#include "nsTArrayForwardDeclare.h"
#include "mozilla/dom/CPOWManagerGetter.h"
#include "mozilla/ipc/Shmem.h"
@ -19,8 +20,6 @@
{ 0x4eed2e73, 0x94ba, 0x48a8, \
{ 0xa2, 0xd1, 0xa5, 0xed, 0x86, 0xd7, 0xbb, 0xe4 } }
class nsString;
namespace IPC {
class Principal;
} // namespace IPC

Просмотреть файл

@ -9,7 +9,7 @@
#include "jswrapper.h"
#include "nsCRT.h"
#include "nsError.h"
#include "nsXPIDLString.h"
#include "nsString.h"
#include "nsReadableUtils.h"
#include "nsJSProtocolHandler.h"
#include "nsStringStream.h"
@ -28,7 +28,6 @@
#include "nsIWindowMediator.h"
#include "nsPIDOMWindow.h"
#include "nsIConsoleService.h"
#include "nsXPIDLString.h"
#include "nsEscape.h"
#include "nsIWebNavigation.h"
#include "nsIDocShell.h"

Просмотреть файл

@ -8,9 +8,7 @@
#define DecoderTraits_h_
#include "nsCOMPtr.h"
class nsAString;
class nsACString;
#include "nsStringFwd.h"
namespace mozilla {

Просмотреть файл

@ -6,7 +6,7 @@
#if !defined(MP4Decoder_h_)
#define MP4Decoder_h_
class nsACString;
#include "nsStringFwd.h"
namespace mozilla {

Просмотреть файл

@ -28,3 +28,4 @@ USE_STATIC_LIBS = True
NO_VISIBILITY_FLAGS = True
# Don't use STL wrappers; this isn't Gecko code
DISABLE_STL_WRAPPING = True
NO_PGO = True

Просмотреть файл

@ -30,3 +30,4 @@ USE_STATIC_LIBS = True
NO_VISIBILITY_FLAGS = True
# Don't use STL wrappers; this isn't Gecko code
DISABLE_STL_WRAPPING = True
NO_PGO = True

Просмотреть файл

@ -9,6 +9,7 @@
#include "mozilla/UniquePtr.h"
#include "mozilla/RefPtr.h"
#include "mozilla/AbstractThread.h"
#include "nsStringFwd.h"
#include "nsTArray.h"
#include "nsCOMPtr.h"
#include "nsClassHashtable.h"
@ -16,7 +17,6 @@
#define CHROMIUM_CDM_API "chromium-cdm8-host4"
class nsIFile;
class nsCString;
class nsISimpleEnumerator;
namespace mozilla {

Просмотреть файл

@ -10,10 +10,9 @@
#include "OMX_Core.h"
#include "OMX_Types.h"
#include "nsStringFwd.h"
#include "OmxPromiseLayer.h"
class nsACString;
namespace mozilla {
class TaskQueue;

Просмотреть файл

@ -341,7 +341,7 @@ MediaEngineWebRTC::EnumerateAudioDevices(dom::MediaSourceEnum aMediaSource,
int error = mAudioInput->GetRecordingDeviceName(i, deviceName, uniqueId);
if (error) {
LOG((" VoEHardware:GetRecordingDeviceName: Failed %d", error));
LOG((" AudioInput::GetRecordingDeviceName: Failed %d", error));
continue;
}

Просмотреть файл

@ -43,12 +43,12 @@
// Audio Engine
#include "webrtc/voice_engine/include/voe_base.h"
#include "webrtc/voice_engine/include/voe_codec.h"
#include "webrtc/voice_engine/include/voe_hardware.h"
#include "webrtc/voice_engine/include/voe_network.h"
#include "webrtc/voice_engine/include/voe_audio_processing.h"
#include "webrtc/voice_engine/include/voe_volume_control.h"
#include "webrtc/voice_engine/include/voe_external_media.h"
#include "webrtc/voice_engine/include/voe_audio_processing.h"
#include "webrtc/modules/audio_device/include/audio_device.h"
#include "webrtc/modules/audio_processing/include/audio_processing.h"
// Video Engine
@ -378,35 +378,36 @@ public:
int GetNumOfRecordingDevices(int& aDevices)
{
ScopedCustomReleasePtr<webrtc::VoEHardware> ptrVoEHw;
ptrVoEHw = webrtc::VoEHardware::GetInterface(mVoiceEngine);
if (!ptrVoEHw) {
ScopedCustomReleasePtr<webrtc::VoEBase> ptrVoEBase;
ptrVoEBase = webrtc::VoEBase::GetInterface(mVoiceEngine);
if (!ptrVoEBase) {
return 1;
}
return ptrVoEHw->GetNumOfRecordingDevices(aDevices);
aDevices = ptrVoEBase->audio_device_module()->RecordingDevices();
return 0;
}
int GetRecordingDeviceName(int aIndex, char (&aStrNameUTF8)[128],
char aStrGuidUTF8[128])
{
ScopedCustomReleasePtr<webrtc::VoEHardware> ptrVoEHw;
ptrVoEHw = webrtc::VoEHardware::GetInterface(mVoiceEngine);
if (!ptrVoEHw) {
ScopedCustomReleasePtr<webrtc::VoEBase> ptrVoEBase;
ptrVoEBase = webrtc::VoEBase::GetInterface(mVoiceEngine);
if (!ptrVoEBase) {
return 1;
}
return ptrVoEHw->GetRecordingDeviceName(aIndex, aStrNameUTF8,
aStrGuidUTF8);
return ptrVoEBase->audio_device_module()->RecordingDeviceName(aIndex,
aStrNameUTF8,
aStrGuidUTF8);
}
int GetRecordingDeviceStatus(bool& aIsAvailable)
{
ScopedCustomReleasePtr<webrtc::VoEHardware> ptrVoEHw;
ptrVoEHw = webrtc::VoEHardware::GetInterface(mVoiceEngine);
if (!ptrVoEHw) {
ScopedCustomReleasePtr<webrtc::VoEBase> ptrVoEBase;
ptrVoEBase = webrtc::VoEBase::GetInterface(mVoiceEngine);
if (!ptrVoEBase) {
return 1;
}
ptrVoEHw->GetRecordingDeviceStatus(aIsAvailable);
return 0;
return ptrVoEBase->audio_device_module()->RecordingIsAvailable(&aIsAvailable);
}
void GetChannelCount(uint32_t& aChannels)
@ -428,12 +429,12 @@ public:
int SetRecordingDevice(int aIndex)
{
ScopedCustomReleasePtr<webrtc::VoEHardware> ptrVoEHw;
ptrVoEHw = webrtc::VoEHardware::GetInterface(mVoiceEngine);
if (!ptrVoEHw) {
ScopedCustomReleasePtr<webrtc::VoEBase> ptrVoEBase;
ptrVoEBase = webrtc::VoEBase::GetInterface(mVoiceEngine);
if (!ptrVoEBase) {
return 1;
}
return ptrVoEHw->SetRecordingDevice(aIndex);
return ptrVoEBase->audio_device_module()->SetRecordingDevice(aIndex);
}
protected:

Просмотреть файл

@ -386,6 +386,11 @@ PerformanceTiming::ResponseStartHighRes()
(!mCacheReadStart.IsNull() && mCacheReadStart < mResponseStart)) {
mResponseStart = mCacheReadStart;
}
if (mResponseStart.IsNull() ||
(!mRequestStart.IsNull() && mResponseStart < mRequestStart)) {
mResponseStart = mRequestStart;
}
return TimeStampToDOMHighResOrFetchStart(mResponseStart);
}

Просмотреть файл

@ -266,8 +266,6 @@ public:
// True while creating the plugin, or calling NPP_SetWindow() on it.
bool mInPluginInitCall;
nsXPIDLCString mFakeURL;
private:
RefPtr<nsNPAPIPlugin> mPlugin;

Просмотреть файл

@ -11,13 +11,13 @@
#include "npapi.h"
#include "npfunctions.h"
#include "nscore.h"
#include "nsStringFwd.h"
#include "nsTArray.h"
#include "nsError.h"
#include "mozilla/EventForwards.h"
#include "nsSize.h"
#include "nsRect.h"
class nsCString;
class nsNPAPIPlugin;
namespace mozilla {

Просмотреть файл

@ -37,6 +37,8 @@ USE_STATIC_LIBS = True
# Don't use STL wrappers; nptest isn't Gecko code
DISABLE_STL_WRAPPING = True
NO_PGO = True
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
RCFILE = 'nptest.rc'
RESFILE = 'nptest.res'

Просмотреть файл

@ -20,9 +20,9 @@ interface nsIPrincipal;
#define PRESENTATION_SERVICE_CONTRACTID \
"@mozilla.org/presentation/presentationservice;1"
#include "nsStringFwd.h"
#include "nsTArray.h"
class nsString;
%}
[ref] native URLArrayRef(const nsTArray<nsString>);

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше