зеркало из https://github.com/mozilla/gecko-dev.git
Merge mozilla-inbound to Mozilla-Central
This commit is contained in:
Коммит
0e4e01758c
|
@ -16,9 +16,6 @@ CPP_SOURCES += [
|
|||
'ApplicationAccessibleWrap.cpp',
|
||||
'AtkSocketAccessible.cpp',
|
||||
'DocAccessibleWrap.cpp',
|
||||
'Platform.cpp',
|
||||
'RootAccessibleWrap.cpp',
|
||||
'UtilInterface.cpp',
|
||||
'nsMaiHyperlink.cpp',
|
||||
'nsMaiInterfaceAction.cpp',
|
||||
'nsMaiInterfaceComponent.cpp',
|
||||
|
@ -31,6 +28,9 @@ CPP_SOURCES += [
|
|||
'nsMaiInterfaceTable.cpp',
|
||||
'nsMaiInterfaceText.cpp',
|
||||
'nsMaiInterfaceValue.cpp',
|
||||
'Platform.cpp',
|
||||
'RootAccessibleWrap.cpp',
|
||||
'UtilInterface.cpp',
|
||||
]
|
||||
|
||||
LIBRARY_NAME = 'accessibility_toolkit_s'
|
||||
|
|
|
@ -10,8 +10,8 @@ MODULE = 'accessibility'
|
|||
|
||||
EXPORTS += [
|
||||
'AccEvent.h',
|
||||
'nsAccessNode.h',
|
||||
'nsAccessibilityService.h',
|
||||
'nsAccessNode.h',
|
||||
]
|
||||
|
||||
EXPORTS.mozilla.a11y += [
|
||||
|
|
|
@ -13,9 +13,9 @@ EXPORTS.mozilla.a11y += [
|
|||
]
|
||||
|
||||
CPP_SOURCES += [
|
||||
'ARIAGridAccessible.cpp',
|
||||
'Accessible.cpp',
|
||||
'ApplicationAccessible.cpp',
|
||||
'ARIAGridAccessible.cpp',
|
||||
'BaseAccessibles.cpp',
|
||||
'DocAccessible.cpp',
|
||||
'FormControlAccessible.cpp',
|
||||
|
|
|
@ -21,13 +21,13 @@ CMMSRCS += [
|
|||
'AccessibleWrap.mm',
|
||||
'DocAccessibleWrap.mm',
|
||||
'MacUtils.mm',
|
||||
'Platform.mm',
|
||||
'RootAccessibleWrap.mm',
|
||||
'mozAccessible.mm',
|
||||
'mozActionElements.mm',
|
||||
'mozDocAccessible.mm',
|
||||
'mozHTMLAccessible.mm',
|
||||
'mozTextAccessible.mm',
|
||||
'Platform.mm',
|
||||
'RootAccessibleWrap.mm',
|
||||
]
|
||||
|
||||
LIBXUL_LIBRARY = True
|
||||
|
|
|
@ -20,18 +20,18 @@ CPP_SOURCES += [
|
|||
'AccessibleWrap.cpp',
|
||||
'ApplicationAccessibleWrap.cpp',
|
||||
'ARIAGridAccessibleWrap.cpp',
|
||||
'Compatibility.cpp',
|
||||
'DocAccessibleWrap.cpp',
|
||||
'EnumVariant.cpp',
|
||||
'HTMLTableAccessibleWrap.cpp',
|
||||
'HTMLWin32ObjectAccessible.cpp',
|
||||
'HyperTextAccessibleWrap.cpp',
|
||||
'ImageAccessibleWrap.cpp',
|
||||
'IUnknownImpl.cpp',
|
||||
'nsWinUtils.cpp',
|
||||
'Compatibility.cpp',
|
||||
'EnumVariant.cpp',
|
||||
'Platform.cpp',
|
||||
'ServiceProvider.cpp',
|
||||
'RootAccessibleWrap.cpp',
|
||||
'ServiceProvider.cpp',
|
||||
'TextLeafAccessibleWrap.cpp',
|
||||
]
|
||||
|
||||
|
|
|
@ -516,8 +516,8 @@ sdnAccessible::get_language(BSTR __RPC_FAR* aLanguage)
|
|||
return CO_E_OBJNOTCONNECTED;
|
||||
|
||||
nsAutoString language;
|
||||
if (mNode->IsElement())
|
||||
nsCoreUtils::GetLanguageFor(mNode->AsElement(), nullptr, language);
|
||||
if (mNode->IsContent())
|
||||
nsCoreUtils::GetLanguageFor(mNode->AsContent(), nullptr, language);
|
||||
if (language.IsEmpty()) { // Nothing found, so use document's language
|
||||
mNode->OwnerDoc()->GetHeaderData(nsGkAtoms::headerContentLanguage,
|
||||
language);
|
||||
|
|
|
@ -13,6 +13,7 @@ EXTRA_COMPONENTS += [
|
|||
JS_MODULES_PATH = 'modules/sessionstore'
|
||||
|
||||
EXTRA_JS_MODULES = [
|
||||
'_SessionFile.jsm',
|
||||
'DocShellCapabilities.jsm',
|
||||
'DocumentUtils.jsm',
|
||||
'Messenger.jsm',
|
||||
|
@ -27,7 +28,6 @@ EXTRA_JS_MODULES = [
|
|||
'TabStateCache.jsm',
|
||||
'TextAndScrollData.jsm',
|
||||
'XPathGenerator.jsm',
|
||||
'_SessionFile.jsm',
|
||||
]
|
||||
|
||||
EXTRA_PP_JS_MODULES += [
|
||||
|
|
|
@ -41,6 +41,9 @@ Cu.import('resource://gre/modules/NetUtil.jsm');
|
|||
XPCOMUtils.defineLazyModuleGetter(this, 'PrivateBrowsingUtils',
|
||||
'resource://gre/modules/PrivateBrowsingUtils.jsm');
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, 'ShumwayTelemetry',
|
||||
'resource://shumway/ShumwayTelemetry.jsm');
|
||||
|
||||
let appInfo = Cc['@mozilla.org/xre/app-info;1'].getService(Ci.nsIXULAppInfo);
|
||||
let Svc = {};
|
||||
XPCOMUtils.defineLazyServiceGetter(Svc, 'mime',
|
||||
|
@ -196,6 +199,12 @@ function ChromeActions(url, window, document) {
|
|||
this.externalComInitialized = false;
|
||||
this.allowScriptAccess = false;
|
||||
this.crossdomainRequestsCache = Object.create(null);
|
||||
this.telemetry = {
|
||||
startTime: Date.now(),
|
||||
features: [],
|
||||
errors: [],
|
||||
pageIndex: 0
|
||||
};
|
||||
}
|
||||
|
||||
ChromeActions.prototype = {
|
||||
|
@ -235,29 +244,36 @@ ChromeActions.prototype = {
|
|||
}
|
||||
|
||||
// allows downloading from the same origin
|
||||
var urlPrefix = /^(https?):\/\/([A-Za-z0-9\-_\.\[\]]+)/i.exec(url);
|
||||
var basePrefix = /^(https?):\/\/([A-Za-z0-9\-_\.\[\]]+)/i.exec(this.url);
|
||||
if (basePrefix && urlPrefix && basePrefix[0] === urlPrefix[0]) {
|
||||
var parsedUrl, parsedBaseUrl;
|
||||
try {
|
||||
parsedUrl = NetUtil.newURI(url);
|
||||
} catch (ex) { /* skipping invalid urls */ }
|
||||
try {
|
||||
parsedBaseUrl = NetUtil.newURI(this.url);
|
||||
} catch (ex) { /* skipping invalid urls */ }
|
||||
|
||||
if (parsedUrl && parsedBaseUrl &&
|
||||
parsedUrl.prePath === parsedBaseUrl.prePath) {
|
||||
return callback({success: true});
|
||||
}
|
||||
|
||||
// additionally using internal whitelist
|
||||
var whitelist = getStringPref('shumway.whitelist', '');
|
||||
if (whitelist && urlPrefix) {
|
||||
if (whitelist && parsedUrl) {
|
||||
var whitelisted = whitelist.split(',').some(function (i) {
|
||||
return domainMatches(urlPrefix[2], i);
|
||||
return domainMatches(parsedUrl.host, i);
|
||||
});
|
||||
if (whitelisted) {
|
||||
return callback({success: true});
|
||||
}
|
||||
}
|
||||
|
||||
if (!checkPolicyFile || !urlPrefix || !basePrefix) {
|
||||
if (!checkPolicyFile || !parsedUrl || !parsedBaseUrl) {
|
||||
return callback({success: false});
|
||||
}
|
||||
|
||||
// we can request crossdomain.xml
|
||||
fetchPolicyFile(urlPrefix[0] + '/crossdomain.xml', this.crossdomainRequestsCache,
|
||||
fetchPolicyFile(parsedUrl.prePath + '/crossdomain.xml', this.crossdomainRequestsCache,
|
||||
function (policy, error) {
|
||||
|
||||
if (!policy || policy.siteControl === 'none') {
|
||||
|
@ -266,8 +282,8 @@ ChromeActions.prototype = {
|
|||
// TODO assuming master-only, there are also 'by-content-type', 'all', etc.
|
||||
|
||||
var allowed = policy.allowAccessFrom.some(function (i) {
|
||||
return domainMatches(basePrefix[2], i.domain) &&
|
||||
(!i.secure || basePrefix[1].toLowerCase() === 'https');
|
||||
return domainMatches(parsedBaseUrl.host, i.domain) &&
|
||||
(!i.secure || parsedBaseUrl.scheme.toLowerCase() === 'https');
|
||||
});
|
||||
return callback({success: allowed});
|
||||
}.bind(this));
|
||||
|
@ -334,12 +350,14 @@ ChromeActions.prototype = {
|
|||
}
|
||||
});
|
||||
},
|
||||
fallback: function() {
|
||||
fallback: function(automatic) {
|
||||
var obj = this.window.frameElement;
|
||||
var doc = obj.ownerDocument;
|
||||
var e = doc.createEvent("CustomEvent");
|
||||
e.initCustomEvent("MozPlayPlugin", true, true, null);
|
||||
obj.dispatchEvent(e);
|
||||
|
||||
ShumwayTelemetry.onFallback(!automatic);
|
||||
},
|
||||
setClipboard: function (data) {
|
||||
if (typeof data !== 'string' ||
|
||||
|
@ -365,6 +383,45 @@ ChromeActions.prototype = {
|
|||
ActivationQueue.activateNext();
|
||||
}
|
||||
},
|
||||
reportTelemetry: function (data) {
|
||||
var topic = data.topic;
|
||||
switch (topic) {
|
||||
case 'firstFrame':
|
||||
var time = Date.now() - this.telemetry.startTime;
|
||||
ShumwayTelemetry.onFirstFrame(time);
|
||||
break;
|
||||
case 'parseInfo':
|
||||
ShumwayTelemetry.onParseInfo({
|
||||
parseTime: +data.parseTime,
|
||||
size: +data.bytesTotal,
|
||||
swfVersion: data.swfVersion|0,
|
||||
frameRate: +data.frameRate,
|
||||
width: data.width|0,
|
||||
height: data.height|0,
|
||||
bannerType: data.bannerType|0,
|
||||
isAvm2: !!data.isAvm2
|
||||
});
|
||||
break;
|
||||
case 'feature':
|
||||
var featureType = data.feature|0;
|
||||
var MIN_FEATURE_TYPE = 0, MAX_FEATURE_TYPE = 999;
|
||||
if (featureType >= MIN_FEATURE_TYPE && featureType <= MAX_FEATURE_TYPE &&
|
||||
!this.telemetry.features[featureType]) {
|
||||
this.telemetry.features[featureType] = true; // record only one feature per SWF
|
||||
ShumwayTelemetry.onFeature(featureType);
|
||||
}
|
||||
break;
|
||||
case 'error':
|
||||
var errorType = data.error|0;
|
||||
var MIN_ERROR_TYPE = 0, MAX_ERROR_TYPE = 2;
|
||||
if (errorType >= MIN_ERROR_TYPE && errorType <= MAX_ERROR_TYPE &&
|
||||
!this.telemetry.errors[errorType]) {
|
||||
this.telemetry.errors[errorType] = true; // record only one report per SWF
|
||||
ShumwayTelemetry.onError(errorType);
|
||||
}
|
||||
break;
|
||||
}
|
||||
},
|
||||
externalCom: function (data) {
|
||||
if (!this.allowScriptAccess)
|
||||
return;
|
||||
|
@ -452,6 +509,14 @@ var ActivationQueue = {
|
|||
this.activateNext();
|
||||
}
|
||||
},
|
||||
findLastOnPage: function ActivationQueue_findLastOnPage(baseUrl) {
|
||||
for (var i = this.nonActive.length - 1; i >= 0; i--) {
|
||||
if (this.nonActive[i].baseUrl === baseUrl) {
|
||||
return this.nonActive[i];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
},
|
||||
activateNext: function ActivationQueue_activateNext() {
|
||||
function weightInstance(actions) {
|
||||
// set of heuristics for find the most important instance to load
|
||||
|
@ -814,10 +879,21 @@ ShumwayStreamConverterBase.prototype = {
|
|||
domWindow.document,
|
||||
converter.getUrlHint(originalURI));
|
||||
if (!isShumwayEnabledFor(actions)) {
|
||||
actions.fallback();
|
||||
actions.fallback(true);
|
||||
return;
|
||||
}
|
||||
|
||||
// Report telemetry on amount of swfs on the page
|
||||
if (actions.isOverlay) {
|
||||
// Looking for last actions with same baseUrl
|
||||
var prevPageActions = ActivationQueue.findLastOnPage(actions.baseUrl);
|
||||
var pageIndex = !prevPageActions ? 1 : (prevPageActions.telemetry.pageIndex + 1);
|
||||
actions.telemetry.pageIndex = pageIndex;
|
||||
ShumwayTelemetry.onPageIndex(pageIndex);
|
||||
} else {
|
||||
ShumwayTelemetry.onPageIndex(0);
|
||||
}
|
||||
|
||||
actions.activationCallback = function(domWindow, isSimpleMode) {
|
||||
delete this.activationCallback;
|
||||
activateShumwayScripts(domWindow, isSimpleMode);
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
|
||||
/* Copyright 2013 Mozilla Foundation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
/* jshint esnext:true */
|
||||
|
||||
'use strict';
|
||||
|
||||
this.EXPORTED_SYMBOLS = ['ShumwayTelemetry'];
|
||||
|
||||
const Cu = Components.utils;
|
||||
Cu.import('resource://gre/modules/Services.jsm');
|
||||
|
||||
const BANNER_SIZES = [
|
||||
"88x31", "120x60", "120x90", "120x240", "120x600", "125x125", "160x600",
|
||||
"180x150", "234x60", "240x400", "250x250", "300x100", "300x250", "300x600",
|
||||
"300x1050", "336x280", "468x60", "550x480", "720x100", "728x90", "970x90",
|
||||
"970x250"];
|
||||
|
||||
function getBannerType(width, height) {
|
||||
return BANNER_SIZES.indexOf(width + 'x' + height) + 1;
|
||||
}
|
||||
|
||||
this.ShumwayTelemetry = {
|
||||
onFirstFrame: function (timeToDisplay) {
|
||||
var histogram = Services.telemetry.getHistogramById("SHUMWAY_TIME_TO_VIEW_MS");
|
||||
histogram.add(timeToDisplay);
|
||||
},
|
||||
onParseInfo: function (parseInfo) {
|
||||
var histogram = Services.telemetry.getHistogramById("SHUMWAY_PARSING_MS");
|
||||
histogram.add(parseInfo.parseTime);
|
||||
var histogram = Services.telemetry.getHistogramById("SHUMWAY_SWF_SIZE_KB");
|
||||
histogram.add(parseInfo.size / 1024);
|
||||
var histogram = Services.telemetry.getHistogramById("SHUMWAY_SWF_VERSION");
|
||||
histogram.add(parseInfo.swfVersion);
|
||||
var histogram = Services.telemetry.getHistogramById("SHUMWAY_SWF_FRAME_RATE");
|
||||
histogram.add(parseInfo.frameRate);
|
||||
var histogram = Services.telemetry.getHistogramById("SHUMWAY_SWF_AREA");
|
||||
histogram.add(parseInfo.width * parseInfo.height);
|
||||
var histogram = Services.telemetry.getHistogramById("SHUMWAY_SWF_BANNER");
|
||||
histogram.add(getBannerType(parseInfo.width, parseInfo.height));
|
||||
var histogram = Services.telemetry.getHistogramById("SHUMWAY_SWF_AVM2");
|
||||
histogram.add(parseInfo.isAvm2);
|
||||
},
|
||||
onError: function (errorType) {
|
||||
var histogram = Services.telemetry.getHistogramById("SHUMWAY_ERROR");
|
||||
histogram.add(errorType);
|
||||
},
|
||||
onPageIndex: function (pageIndex) {
|
||||
var histogram = Services.telemetry.getHistogramById("SHUMWAY_SWF_INDEX_ON_PAGE");
|
||||
histogram.add(pageIndex);
|
||||
},
|
||||
onFeature: function (featureType) {
|
||||
var histogram = Services.telemetry.getHistogramById("SHUMWAY_FEATURE_USED");
|
||||
histogram.add(featureType);
|
||||
},
|
||||
onFallback: function (userAction) {
|
||||
var histogram = Services.telemetry.getHistogramById("SHUMWAY_FALLBACK");
|
||||
histogram.add(userAction);
|
||||
}
|
||||
};
|
Двоичный файл не отображается.
|
@ -223,6 +223,9 @@ var Promise = function PromiseClosure() {
|
|||
subject.subpromisesReason = reason;
|
||||
var subpromises = subject.subpromises;
|
||||
if (!subpromises) {
|
||||
if (!true) {
|
||||
console.warn(reason);
|
||||
}
|
||||
return;
|
||||
}
|
||||
for (var i = 0; i < subpromises.length; i++) {
|
||||
|
@ -435,6 +438,18 @@ QuadTree.prototype._subdivide = function () {
|
|||
this.nodes[2] = new QuadTree(this.x, midY, halfWidth, halfHeight, level);
|
||||
this.nodes[3] = new QuadTree(midX, midY, halfWidth, halfHeight, level);
|
||||
};
|
||||
var EXTERNAL_INTERFACE_FEATURE = 1;
|
||||
var CLIPBOARD_FEATURE = 2;
|
||||
var SHAREDOBJECT_FEATURE = 3;
|
||||
var VIDEO_FEATURE = 4;
|
||||
var SOUND_FEATURE = 5;
|
||||
var NETCONNECTION_FEATURE = 6;
|
||||
if (!this.performance) {
|
||||
this.performance = {};
|
||||
}
|
||||
if (!this.performance.now) {
|
||||
this.performance.now = Date.now;
|
||||
}
|
||||
var create = Object.create;
|
||||
var defineProperty = Object.defineProperty;
|
||||
var keys = Object.keys;
|
||||
|
@ -909,9 +924,10 @@ function defineFont(tag, dictionary) {
|
|||
indices
|
||||
]);
|
||||
}
|
||||
var ascent = Math.ceil(tag.ascent / 20) || 1024;
|
||||
var descent = -Math.ceil(tag.descent / 20) || 0;
|
||||
var leading = Math.floor(tag.leading / 20) || 0;
|
||||
var resolution = tag.resolution || 1;
|
||||
var ascent = Math.ceil(tag.ascent / resolution) || 1024;
|
||||
var descent = -Math.ceil(tag.descent / resolution) | 0;
|
||||
var leading = tag.leading / resolution | 0;
|
||||
tables['OS/2'] = '\0\x01\0\0' + toString16(tag.bold ? 700 : 400) + '\0\x05' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0\0\0\0\0\0\0\0\0' + '\0\0\0\0' + '\0\0\0\0' + '\0\0\0\0' + '\0\0\0\0' + 'ALF ' + toString16((tag.italic ? 1 : 0) | (tag.bold ? 32 : 0)) + toString16(codes[0]) + toString16(codes[codes.length - 1]) + toString16(ascent) + toString16(descent) + toString16(leading) + toString16(ascent) + toString16(-descent) + '\0\0\0\0' + '\0\0\0\0';
|
||||
;
|
||||
var startCount = '';
|
||||
|
@ -942,7 +958,6 @@ function defineFont(tag, dictionary) {
|
|||
;
|
||||
var glyf = '\0\x01\0\0\0\0\0\0\0\0\0\0\0\x001\0';
|
||||
var loca = '\0\0';
|
||||
var resolution = tag.resolution || 1;
|
||||
var offset = 16;
|
||||
var maxPoints = 0;
|
||||
var xMins = [];
|
||||
|
@ -1067,10 +1082,9 @@ function defineFont(tag, dictionary) {
|
|||
}
|
||||
loca += toString16(offset / 2);
|
||||
tables['glyf'] = glyf;
|
||||
tables['head'] = '\0\x01\0\0\0\x01\0\0\0\0\0\0_\x0f<\xf5\0\v\x04\0\0\0\0\0' + toString32(+new Date()) + '\0\0\0\0' + toString32(+new Date()) + toString16(min.apply(null, xMins)) + toString16(min.apply(null, yMins)) + toString16(max.apply(null, xMaxs)) + toString16(max.apply(null, yMaxs)) + toString16((tag.italic ? 2 : 0) | (tag.bold ? 1 : 0)) + '\0\b' + '\0\x02' + '\0\0' + '\0\0';
|
||||
tables['head'] = '\0\x01\0\0\0\x01\0\0\0\0\0\0_\x0f<\xf5\0\v\x04\0\0\0\0\0' + toString32(Date.now()) + '\0\0\0\0' + toString32(Date.now()) + toString16(min.apply(null, xMins)) + toString16(min.apply(null, yMins)) + toString16(max.apply(null, xMaxs)) + toString16(max.apply(null, yMaxs)) + toString16((tag.italic ? 2 : 0) | (tag.bold ? 1 : 0)) + '\0\b' + '\0\x02' + '\0\0' + '\0\0';
|
||||
;
|
||||
var advance = tag.advance;
|
||||
var resolution = tag.resolution || 1;
|
||||
tables['hhea'] = '\0\x01\0\0' + toString16(ascent) + toString16(descent) + toString16(leading) + toString16(advance ? max.apply(null, advance) : 1024) + '\0\0' + '\0\0' + '\x03\xb8' + '\0\x01' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + toString16(glyphCount + 1);
|
||||
;
|
||||
var hmtx = '\0\0\0\0';
|
||||
|
@ -1147,7 +1161,7 @@ function defineFont(tag, dictionary) {
|
|||
var unitPerEm = 1024;
|
||||
var metrics = {
|
||||
ascent: ascent / unitPerEm,
|
||||
descent: descent / unitPerEm,
|
||||
descent: -descent / unitPerEm,
|
||||
leading: leading / unitPerEm
|
||||
};
|
||||
return {
|
||||
|
@ -1157,6 +1171,8 @@ function defineFont(tag, dictionary) {
|
|||
uniqueName: psName + uniqueId,
|
||||
codes: codes,
|
||||
metrics: metrics,
|
||||
bold: tag.bold === 1,
|
||||
italic: tag.italic === 1,
|
||||
data: otf
|
||||
};
|
||||
}
|
||||
|
@ -1234,8 +1250,8 @@ function defineLabel(tag, dictionary) {
|
|||
m.b,
|
||||
m.c,
|
||||
m.d,
|
||||
m.tx,
|
||||
m.ty
|
||||
m.tx / 20,
|
||||
m.ty / 20
|
||||
].join(',') + ')',
|
||||
'c.scale(0.05, 0.05)'
|
||||
];
|
||||
|
@ -1727,9 +1743,8 @@ var SHAPE_CURVE_TO = 3;
|
|||
var SHAPE_WIDE_MOVE_TO = 4;
|
||||
var SHAPE_WIDE_LINE_TO = 5;
|
||||
var SHAPE_CUBIC_CURVE_TO = 6;
|
||||
var SHAPE_ROUND_CORNER = 7;
|
||||
var SHAPE_CIRCLE = 8;
|
||||
var SHAPE_ELLIPSE = 9;
|
||||
var SHAPE_CIRCLE = 7;
|
||||
var SHAPE_ELLIPSE = 8;
|
||||
function ShapePath(fillStyle, lineStyle, commandsCount, dataLength, isMorph) {
|
||||
this.fillStyle = fillStyle;
|
||||
this.lineStyle = lineStyle;
|
||||
|
@ -1778,10 +1793,6 @@ ShapePath.prototype = {
|
|||
this.commands.push(SHAPE_CIRCLE);
|
||||
this.data.push(x, y, radius);
|
||||
},
|
||||
drawRoundCorner: function (cornerX, cornerY, curveEndX, curveEndY, radiusX, radiusY) {
|
||||
this.commands.push(SHAPE_ROUND_CORNER);
|
||||
this.data.push(cornerX, cornerY, curveEndX, curveEndY, radiusX, radiusY);
|
||||
},
|
||||
ellipse: function (x, y, radiusX, radiusY) {
|
||||
this.commands.push(SHAPE_ELLIPSE);
|
||||
this.data.push(x, y, radiusX, radiusY);
|
||||
|
@ -1823,9 +1834,6 @@ ShapePath.prototype = {
|
|||
case SHAPE_CUBIC_CURVE_TO:
|
||||
ctx.bezierCurveTo(data[k++] / 20, data[k++] / 20, data[k++] / 20, data[k++] / 20, data[k++] / 20, data[k++] / 20);
|
||||
break;
|
||||
case SHAPE_ROUND_CORNER:
|
||||
ctx.arcTo(data[k++] / 20, data[k++] / 20, data[k++] / 20, data[k++] / 20, data[k++] / 20, data[k++] / 20);
|
||||
break;
|
||||
case SHAPE_CIRCLE:
|
||||
if (formOpen) {
|
||||
ctx.lineTo(formOpenX, formOpenY);
|
||||
|
@ -1888,6 +1896,7 @@ ShapePath.prototype = {
|
|||
var fillStyle = this.fillStyle;
|
||||
if (fillStyle) {
|
||||
colorTransform.setFillStyle(ctx, fillStyle.style);
|
||||
ctx.imageSmoothingEnabled = ctx.mozImageSmoothingEnabled = fillStyle.smooth;
|
||||
var m = fillStyle.transform;
|
||||
ctx.save();
|
||||
colorTransform.setAlpha(ctx);
|
||||
|
@ -2017,33 +2026,6 @@ ShapePath.prototype = {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case SHAPE_ROUND_CORNER:
|
||||
cpX = data[dataIndex++];
|
||||
cpY = data[dataIndex++];
|
||||
toX = data[dataIndex++];
|
||||
toY = data[dataIndex++];
|
||||
rX = data[dataIndex++];
|
||||
rY = data[dataIndex++];
|
||||
if (toY > y === fromY > y || fromX < x && toX < x) {
|
||||
break;
|
||||
}
|
||||
if (fromX >= x && toX >= x) {
|
||||
inside = !inside;
|
||||
break;
|
||||
}
|
||||
if (toX > fromX === toY > fromY) {
|
||||
cp2X = fromX;
|
||||
cp2Y = toY;
|
||||
} else {
|
||||
cp2X = toX;
|
||||
cp2Y = fromY;
|
||||
}
|
||||
localX = x - cp2X;
|
||||
localY = y - cp2Y;
|
||||
if (localX * localX / (rX * rX) + localY * localY / (rY * rY) <= 1 !== localX <= 0) {
|
||||
inside = !inside;
|
||||
}
|
||||
break;
|
||||
case SHAPE_CIRCLE:
|
||||
toX = data[dataIndex++];
|
||||
toY = data[dataIndex++];
|
||||
|
@ -2206,36 +2188,6 @@ ShapePath.prototype = {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case SHAPE_ROUND_CORNER:
|
||||
cpX = data[dataIndex++];
|
||||
cpY = data[dataIndex++];
|
||||
toX = data[dataIndex++];
|
||||
toY = data[dataIndex++];
|
||||
rX = data[dataIndex++];
|
||||
rY = data[dataIndex++];
|
||||
if (maxX < fromX && maxX < toX || minX > fromX && minX > toX || maxY < fromY && maxY < toY || minY > fromY && minY > toY) {
|
||||
break;
|
||||
}
|
||||
if (toX > fromX === toY > fromY) {
|
||||
cp2X = fromX;
|
||||
cp2Y = toY;
|
||||
} else {
|
||||
cp2X = toX;
|
||||
cp2Y = fromY;
|
||||
}
|
||||
localX = Math.abs(x - cp2X);
|
||||
localY = Math.abs(y - cp2Y);
|
||||
localX -= halfWidth;
|
||||
localY -= halfWidth;
|
||||
if (localX * localX / (rX * rX) + localY * localY / (rY * rY) > 1) {
|
||||
break;
|
||||
}
|
||||
localX += width;
|
||||
localY += width;
|
||||
if (localX * localX / (rX * rX) + localY * localY / (rY * rY) > 1) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case SHAPE_CIRCLE:
|
||||
cpX = data[dataIndex++];
|
||||
cpY = data[dataIndex++];
|
||||
|
@ -2297,7 +2249,7 @@ ShapePath.prototype = {
|
|||
var data = this.data;
|
||||
var length = commands.length;
|
||||
var bounds;
|
||||
if (commands[0] === SHAPE_MOVE_TO || commands[0] > SHAPE_ROUND_CORNER) {
|
||||
if (commands[0] === SHAPE_MOVE_TO || commands[0] > SHAPE_CUBIC_CURVE_TO) {
|
||||
bounds = {
|
||||
xMin: data[0],
|
||||
yMin: data[1]
|
||||
|
@ -2368,9 +2320,6 @@ ShapePath.prototype = {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case SHAPE_ROUND_CORNER:
|
||||
dataIndex += 6;
|
||||
break;
|
||||
case SHAPE_CIRCLE:
|
||||
toX = data[dataIndex++];
|
||||
toY = data[dataIndex++];
|
||||
|
@ -2648,7 +2597,7 @@ function finishShapePaths(paths, dictionary) {
|
|||
}
|
||||
}
|
||||
var inWorker = typeof window === 'undefined';
|
||||
var factoryCtx = !inWorker ? document.createElement('canvas').getContext('kanvas-2d') : null;
|
||||
var factoryCtx = !inWorker ? document.createElement('canvas').getContext('2d') : null;
|
||||
function buildLinearGradientFactory(colorStops) {
|
||||
var defaultGradient = factoryCtx.createLinearGradient(-1, 0, 1, 0);
|
||||
for (var i = 0; i < colorStops.length; i++) {
|
||||
|
@ -3494,8 +3443,23 @@ var LoaderDefinition = function () {
|
|||
},
|
||||
oncomplete: function (result) {
|
||||
commitData(result);
|
||||
var stats;
|
||||
if (typeof result.swfVersion === 'number') {
|
||||
var bbox = result.bbox;
|
||||
stats = {
|
||||
topic: 'parseInfo',
|
||||
parseTime: result.parseTime,
|
||||
bytesTotal: result.bytesTotal,
|
||||
swfVersion: result.swfVersion,
|
||||
frameRate: result.frameRate,
|
||||
width: (bbox.xMax - bbox.xMin) / 20,
|
||||
height: (bbox.yMax - bbox.yMin) / 20,
|
||||
isAvm2: !(!result.fileAttributes.doAbc)
|
||||
};
|
||||
}
|
||||
commitData({
|
||||
command: 'complete'
|
||||
command: 'complete',
|
||||
stats: stats
|
||||
});
|
||||
}
|
||||
};
|
||||
|
@ -3610,6 +3574,10 @@ var LoaderDefinition = function () {
|
|||
Promise.when(frameConstructed, this._lastPromise).then(function () {
|
||||
this.contentLoaderInfo._dispatchEvent('complete');
|
||||
}.bind(this));
|
||||
var stats = data.stats;
|
||||
if (stats) {
|
||||
TelemetryService.reportTelemetry(stats);
|
||||
}
|
||||
this._worker && this._worker.terminate();
|
||||
break;
|
||||
case 'empty':
|
||||
|
@ -4007,6 +3975,8 @@ var LoaderDefinition = function () {
|
|||
props.name = symbol.name;
|
||||
props.uniqueName = symbol.uniqueName;
|
||||
props.charset = symbol.charset;
|
||||
props.bold = symbol.bold;
|
||||
props.italic = symbol.italic;
|
||||
props.metrics = symbol.metrics;
|
||||
this._registerFont(className, props);
|
||||
break;
|
||||
|
@ -4179,6 +4149,9 @@ var LoaderDefinition = function () {
|
|||
this._setup();
|
||||
},
|
||||
_load: function (request, checkPolicyFile, applicationDomain, securityDomain, deblockingFilter) {
|
||||
if (!isWorker && flash.net.URLRequest.class.isInstanceOf(request)) {
|
||||
this._contentLoaderInfo._url = request._url;
|
||||
}
|
||||
if (!isWorker && WORKERS_ENABLED) {
|
||||
var loader = this;
|
||||
var worker = loader._worker = new Worker(SHUMWAY_ROOT + LOADER_PATH);
|
||||
|
@ -4266,7 +4239,7 @@ var LoaderDefinition = function () {
|
|||
def._load(bytes.a);
|
||||
},
|
||||
_unload: function _unload(halt, gc) {
|
||||
notImplemented('Loader._unload');
|
||||
somewhatImplemented('Loader._unload, do we even need to do anything here?');
|
||||
},
|
||||
_close: function _close() {
|
||||
somewhatImplemented('Loader._close');
|
||||
|
@ -4926,177 +4899,13 @@ var tagHandler = function (global) {
|
|||
cxform($bytes, $stream, $31, swfVersion, tagCode);
|
||||
}
|
||||
if (hasFilters) {
|
||||
$29.filterCount = readUi8($bytes, $stream);
|
||||
var $32 = $29.filters = {};
|
||||
var type = $32.type = readUi8($bytes, $stream);
|
||||
switch (type) {
|
||||
case 0:
|
||||
if (type === 4 || type === 7) {
|
||||
count = readUi8($bytes, $stream);
|
||||
} else {
|
||||
count = 1;
|
||||
}
|
||||
var $33 = $32.colors = [];
|
||||
var $34 = count;
|
||||
while ($34--) {
|
||||
var $35 = {};
|
||||
rgba($bytes, $stream, $35, swfVersion, tagCode);
|
||||
$33.push($35);
|
||||
}
|
||||
if (type === 3) {
|
||||
var $36 = $32.higlightColor = {};
|
||||
rgba($bytes, $stream, $36, swfVersion, tagCode);
|
||||
}
|
||||
if (type === 4 || type === 7) {
|
||||
var $37 = $32.ratios = [];
|
||||
var $38 = count;
|
||||
while ($38--) {
|
||||
$37.push(readUi8($bytes, $stream));
|
||||
}
|
||||
}
|
||||
$32.blurX = readFixed($bytes, $stream);
|
||||
$32.blurY = readFixed($bytes, $stream);
|
||||
if (type !== 2) {
|
||||
$32.angle = readFixed($bytes, $stream);
|
||||
$32.distance = readFixed($bytes, $stream);
|
||||
}
|
||||
$32.strength = readFixed8($bytes, $stream);
|
||||
$32.innerShadow = readUb($bytes, $stream, 1);
|
||||
$32.knockout = readUb($bytes, $stream, 1);
|
||||
$32.compositeSource = readUb($bytes, $stream, 1);
|
||||
if (type === 3) {
|
||||
$32.onTop = readUb($bytes, $stream, 1);
|
||||
} else {
|
||||
var reserved = readUb($bytes, $stream, 1);
|
||||
}
|
||||
if (type === 4 || type === 7) {
|
||||
$32.passes = readUb($bytes, $stream, 4);
|
||||
} else {
|
||||
var reserved = readUb($bytes, $stream, 4);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
$32.blurX = readFixed($bytes, $stream);
|
||||
$32.blurY = readFixed($bytes, $stream);
|
||||
$32.passes = readUb($bytes, $stream, 5);
|
||||
var reserved = readUb($bytes, $stream, 3);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
if (type === 4 || type === 7) {
|
||||
count = readUi8($bytes, $stream);
|
||||
} else {
|
||||
count = 1;
|
||||
}
|
||||
var $39 = $32.colors = [];
|
||||
var $40 = count;
|
||||
while ($40--) {
|
||||
var $41 = {};
|
||||
rgba($bytes, $stream, $41, swfVersion, tagCode);
|
||||
$39.push($41);
|
||||
}
|
||||
if (type === 3) {
|
||||
var $42 = $32.higlightColor = {};
|
||||
rgba($bytes, $stream, $42, swfVersion, tagCode);
|
||||
}
|
||||
if (type === 4 || type === 7) {
|
||||
var $43 = $32.ratios = [];
|
||||
var $44 = count;
|
||||
while ($44--) {
|
||||
$43.push(readUi8($bytes, $stream));
|
||||
}
|
||||
}
|
||||
$32.blurX = readFixed($bytes, $stream);
|
||||
$32.blurY = readFixed($bytes, $stream);
|
||||
if (type !== 2) {
|
||||
$32.angle = readFixed($bytes, $stream);
|
||||
$32.distance = readFixed($bytes, $stream);
|
||||
}
|
||||
$32.strength = readFixed8($bytes, $stream);
|
||||
$32.innerShadow = readUb($bytes, $stream, 1);
|
||||
$32.knockout = readUb($bytes, $stream, 1);
|
||||
$32.compositeSource = readUb($bytes, $stream, 1);
|
||||
if (type === 3) {
|
||||
$32.onTop = readUb($bytes, $stream, 1);
|
||||
} else {
|
||||
var reserved = readUb($bytes, $stream, 1);
|
||||
}
|
||||
if (type === 4 || type === 7) {
|
||||
$32.passes = readUb($bytes, $stream, 4);
|
||||
} else {
|
||||
var reserved = readUb($bytes, $stream, 4);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
var columns = $32.columns = readUi8($bytes, $stream);
|
||||
var rows = $32.rows = readUi8($bytes, $stream);
|
||||
$32.divisor = readFloat($bytes, $stream);
|
||||
$32.bias = readFloat($bytes, $stream);
|
||||
var $45 = $32.weights = [];
|
||||
var $46 = columns * rows;
|
||||
while ($46--) {
|
||||
$45.push(readFloat($bytes, $stream));
|
||||
}
|
||||
var $47 = $32.defaultColor = {};
|
||||
rgba($bytes, $stream, $47, swfVersion, tagCode);
|
||||
var reserved = readUb($bytes, $stream, 6);
|
||||
$32.clamp = readUb($bytes, $stream, 1);
|
||||
$32.preserveAlpha = readUb($bytes, $stream, 1);
|
||||
break;
|
||||
case 6:
|
||||
var $48 = $32.matrix = [];
|
||||
var $49 = 20;
|
||||
while ($49--) {
|
||||
$48.push(readFloat($bytes, $stream));
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (type === 4 || type === 7) {
|
||||
count = readUi8($bytes, $stream);
|
||||
} else {
|
||||
count = 1;
|
||||
}
|
||||
var $50 = $32.colors = [];
|
||||
var $51 = count;
|
||||
while ($51--) {
|
||||
var $52 = {};
|
||||
rgba($bytes, $stream, $52, swfVersion, tagCode);
|
||||
$50.push($52);
|
||||
}
|
||||
if (type === 3) {
|
||||
var $53 = $32.higlightColor = {};
|
||||
rgba($bytes, $stream, $53, swfVersion, tagCode);
|
||||
}
|
||||
if (type === 4 || type === 7) {
|
||||
var $54 = $32.ratios = [];
|
||||
var $55 = count;
|
||||
while ($55--) {
|
||||
$54.push(readUi8($bytes, $stream));
|
||||
}
|
||||
}
|
||||
$32.blurX = readFixed($bytes, $stream);
|
||||
$32.blurY = readFixed($bytes, $stream);
|
||||
if (type !== 2) {
|
||||
$32.angle = readFixed($bytes, $stream);
|
||||
$32.distance = readFixed($bytes, $stream);
|
||||
}
|
||||
$32.strength = readFixed8($bytes, $stream);
|
||||
$32.innerShadow = readUb($bytes, $stream, 1);
|
||||
$32.knockout = readUb($bytes, $stream, 1);
|
||||
$32.compositeSource = readUb($bytes, $stream, 1);
|
||||
if (type === 3) {
|
||||
$32.onTop = readUb($bytes, $stream, 1);
|
||||
} else {
|
||||
var reserved = readUb($bytes, $stream, 1);
|
||||
}
|
||||
if (type === 4 || type === 7) {
|
||||
$32.passes = readUb($bytes, $stream, 4);
|
||||
} else {
|
||||
var reserved = readUb($bytes, $stream, 4);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
var count = readUi8($bytes, $stream);
|
||||
var $2 = $.filters = [];
|
||||
var $3 = count;
|
||||
while ($3--) {
|
||||
var $4 = {};
|
||||
anyFilter($bytes, $stream, $4, swfVersion, tagCode);
|
||||
$2.push($4);
|
||||
}
|
||||
}
|
||||
if (blend) {
|
||||
|
@ -6438,7 +6247,8 @@ CompressedPipe.prototype = {
|
|||
};
|
||||
function BodyParser(swfVersion, length, options) {
|
||||
this.swf = {
|
||||
swfVersion: swfVersion
|
||||
swfVersion: swfVersion,
|
||||
parseTime: 0
|
||||
};
|
||||
this.buffer = new HeadTailBuffer(32768);
|
||||
this.initialize = true;
|
||||
|
@ -6489,7 +6299,9 @@ BodyParser.prototype = {
|
|||
swf.bytesLoaded = progressInfo.bytesLoaded;
|
||||
swf.bytesTotal = progressInfo.bytesTotal;
|
||||
}
|
||||
var readStartTime = performance.now();
|
||||
readTags(swf, stream, swfVersion, options.onprogress);
|
||||
swf.parseTime += performance.now() - readStartTime;
|
||||
var read = stream.pos;
|
||||
buffer.removeHead(read);
|
||||
this.totalRead += read;
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -1 +1 @@
|
|||
0.7.352
|
||||
0.7.501
|
||||
|
|
|
@ -159,6 +159,12 @@ window.addEventListener("message", function handlerMessage(e) {
|
|||
}
|
||||
}, true);
|
||||
|
||||
var TelemetryService = {
|
||||
reportTelemetry: function (data) {
|
||||
FirefoxCom.request('reportTelemetry', data, null);
|
||||
}
|
||||
};
|
||||
|
||||
var FileLoadingService = {
|
||||
get baseUrl() { return movieUrl; },
|
||||
nextSessionId: 1, // 0 - is reserved
|
||||
|
@ -247,6 +253,8 @@ function frame(e) {
|
|||
// marking that movie is started
|
||||
document.body.classList.add("started");
|
||||
|
||||
TelemetryService.reportTelemetry({topic: "firstFrame"});
|
||||
|
||||
// skipping frame 0
|
||||
initializeFrameControl = false;
|
||||
return;
|
||||
|
|
|
@ -29,9 +29,9 @@ EXTRA_PP_COMPONENTS += [
|
|||
'AboutRedirector.js',
|
||||
'BrowserCLH.js',
|
||||
'BrowserStartup.js',
|
||||
'components.manifest',
|
||||
'DirectoryProvider.js',
|
||||
'HelperAppDialog.js',
|
||||
'SessionStore.js',
|
||||
'Sidebar.js',
|
||||
'components.manifest',
|
||||
]
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
EXTRA_JS_MODULES += [
|
||||
'colorUtils.jsm',
|
||||
'ContentUtil.jsm',
|
||||
'CrossSlide.jsm',
|
||||
'View.jsm',
|
||||
'colorUtils.jsm',
|
||||
]
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@ IsImmersiveProcessRunning(const wchar_t *processName)
|
|||
PROCESSENTRY32W entry;
|
||||
entry.dwSize = sizeof(PROCESSENTRY32W);
|
||||
|
||||
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
|
||||
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
|
||||
|
||||
if (Process32First(snapshot, &entry)) {
|
||||
while (!exists && Process32Next(snapshot, &entry)) {
|
||||
|
|
|
@ -630,7 +630,8 @@ private:
|
|||
static HRESULT
|
||||
PrepareActivationManager(CComPtr<IApplicationActivationManager> &activateMgr)
|
||||
{
|
||||
HRESULT hr = activateMgr.CoCreateInstance(CLSID_ApplicationActivationManager, NULL, CLSCTX_LOCAL_SERVER);
|
||||
HRESULT hr = activateMgr.CoCreateInstance(CLSID_ApplicationActivationManager,
|
||||
nullptr, CLSCTX_LOCAL_SERVER);
|
||||
if (FAILED(hr)) {
|
||||
Log(L"CoCreateInstance failed, launching on desktop.");
|
||||
return E_FAIL;
|
||||
|
@ -654,7 +655,7 @@ DelayedExecuteThread(LPVOID param)
|
|||
bool &bRequestMet(*(bool*)param);
|
||||
AutoSetRequestMet asrm(&bRequestMet);
|
||||
|
||||
CoInitialize(NULL);
|
||||
CoInitialize(nullptr);
|
||||
|
||||
CComPtr<IApplicationActivationManager> activateMgr;
|
||||
if (FAILED(PrepareActivationManager(activateMgr))) {
|
||||
|
@ -698,7 +699,8 @@ IFACEMETHODIMP CExecuteCommandVerb::Execute()
|
|||
}
|
||||
|
||||
if (mIsRestartMetroRequest) {
|
||||
HANDLE thread = CreateThread(NULL, 0, DelayedExecuteThread, &mRequestMet, 0, NULL);
|
||||
HANDLE thread = CreateThread(nullptr, 0, DelayedExecuteThread,
|
||||
&mRequestMet, 0, nullptr);
|
||||
CloseHandle(thread);
|
||||
return S_OK;
|
||||
}
|
||||
|
|
|
@ -10,14 +10,14 @@ EXTRA_JS_MODULES += [
|
|||
'BrowserNewTabPreloader.jsm',
|
||||
'ContentClick.jsm',
|
||||
'NetworkPrioritizer.jsm',
|
||||
'offlineAppCache.jsm',
|
||||
'openLocationLastURL.jsm',
|
||||
'SharedFrame.jsm',
|
||||
'SignInToWebsite.jsm',
|
||||
'SitePermissions.jsm',
|
||||
'Social.jsm',
|
||||
'TabCrashReporter.jsm',
|
||||
'UITour.jsm',
|
||||
'offlineAppCache.jsm',
|
||||
'openLocationLastURL.jsm',
|
||||
'webappsUI.jsm',
|
||||
'webrtcUI.jsm',
|
||||
]
|
||||
|
|
|
@ -40,7 +40,7 @@ typedef struct ASFinderInfo
|
|||
static void append_file(FILE* output, const char* input_name)
|
||||
{
|
||||
FILE* input = fopen(input_name, "rb");
|
||||
EXIT_IF_FALSE(input != NULL);
|
||||
EXIT_IF_FALSE(input != nullptr);
|
||||
|
||||
while (1) {
|
||||
char buffer[4096];
|
||||
|
@ -87,7 +87,7 @@ int main(int argc, char** argv)
|
|||
}
|
||||
|
||||
FILE* output = fopen(argv[2], "wb");
|
||||
if (output == NULL) {
|
||||
if (output == nullptr) {
|
||||
printf("%s: can't open file `%s'\n", argv[0], argv[2]);
|
||||
exit(5);
|
||||
}
|
||||
|
@ -177,7 +177,7 @@ int main(int argc, char** argv)
|
|||
memset(&cat_info, 0, sizeof(cat_info));
|
||||
EXIT_IF_FALSE(FSGetCatalogInfo(&fsref,
|
||||
kFSCatInfoGettableInfo,
|
||||
&cat_info, NULL, NULL, NULL) == 0);
|
||||
&cat_info, nullptr, nullptr, nullptr) == 0);
|
||||
|
||||
ASFinderInfo finder_info;
|
||||
memcpy(&finder_info.ioFlFndrInfo, &cat_info.finderInfo,
|
||||
|
|
|
@ -826,8 +826,8 @@ CREATE_PRECOMPLETE_CMD = $(PYTHON) $(abspath $(topsrcdir)/config/createprecomple
|
|||
# MDDEPDIR is the subdirectory where dependency files are stored
|
||||
MDDEPDIR := .deps
|
||||
|
||||
EXPAND_LIBS_EXEC = $(PYTHON) $(topsrcdir)/config/expandlibs_exec.py $(if $@,--depend $(MDDEPDIR)/$(dir $@)/$(@F).pp --target $@)
|
||||
EXPAND_LIBS_GEN = $(PYTHON) $(topsrcdir)/config/expandlibs_gen.py $(if $@,--depend $(MDDEPDIR)/$(dir $@)/$(@F).pp)
|
||||
EXPAND_LIBS_EXEC = $(PYTHON) $(topsrcdir)/config/expandlibs_exec.py $(if $@,--depend $(MDDEPDIR)/$@.pp --target $@)
|
||||
EXPAND_LIBS_GEN = $(PYTHON) $(topsrcdir)/config/expandlibs_gen.py $(if $@,--depend $(MDDEPDIR)/$@.pp)
|
||||
EXPAND_AR = $(EXPAND_LIBS_EXEC) --extract -- $(AR)
|
||||
EXPAND_CC = $(EXPAND_LIBS_EXEC) --uselist -- $(CC)
|
||||
EXPAND_CCC = $(EXPAND_LIBS_EXEC) --uselist -- $(CCC)
|
||||
|
|
|
@ -209,11 +209,22 @@ endif
|
|||
endif
|
||||
endif
|
||||
|
||||
binaries libs:: $(TARGETS) $(BINARIES_PP)
|
||||
# Aggregate all dependency files relevant to a binaries build except in
|
||||
# the mozilla top-level directory.
|
||||
ifneq (_.,$(recurse_targets)_$(DEPTH))
|
||||
@$(if $(or $(recurse_targets),$^),$(call py_action,link_deps,-o binaries --group-all $(if $(want_abspaths),--abspaths )--topsrcdir $(topsrcdir) --topobjdir $(DEPTH) --dist $(DIST) $(BINARIES_PP) $(wildcard $(addsuffix .pp,$(addprefix $(MDDEPDIR)/,$(notdir $(sort $(filter-out $(BINARIES_PP),$^) $(OBJ_TARGETS)))))) $(recurse_targets)))
|
||||
ALL_DEP_FILES := \
|
||||
$(BINARIES_PP) \
|
||||
$(addsuffix .pp,$(addprefix $(MDDEPDIR)/,$(sort \
|
||||
$(TARGETS) \
|
||||
$(filter-out $(SOBJS) $(ASOBJS) $(EXCLUDED_OBJS),$(OBJ_TARGETS)) \
|
||||
))) \
|
||||
$(recurse_targets) \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
binaries libs:: $(TARGETS) $(BINARIES_PP)
|
||||
ifneq (_.,$(recurse_targets)_$(DEPTH))
|
||||
@$(if $(or $(recurse_targets),$^),$(call py_action,link_deps,-o binaries --group-all $(if $(want_abspaths),--abspaths )--topsrcdir $(topsrcdir) --topobjdir $(DEPTH) --dist $(DIST) $(ALL_DEP_FILES)))
|
||||
endif
|
||||
|
||||
endif # ifdef MOZ_PSEUDO_DERECURSE
|
||||
|
|
|
@ -299,6 +299,7 @@ endif
|
|||
|
||||
# Don't build SIMPLE_PROGRAMS during the MOZ_PROFILE_GENERATE pass
|
||||
ifdef MOZ_PROFILE_GENERATE
|
||||
EXCLUDED_OBJS := $(SIMPLE_PROGRAMS:$(BIN_SUFFIX)=.$(OBJ_SUFFIX))
|
||||
SIMPLE_PROGRAMS :=
|
||||
endif
|
||||
|
||||
|
@ -816,7 +817,7 @@ endif
|
|||
$(HOST_PROGRAM): $(HOST_PROGOBJS) $(HOST_LIBS_DEPS) $(HOST_EXTRA_DEPS) $(GLOBAL_DEPS)
|
||||
$(REPORT_BUILD)
|
||||
ifeq (_WINNT,$(GNU_CC)_$(HOST_OS_ARCH))
|
||||
$(EXPAND_LIBS_EXEC) --uselist -- $(HOST_LD) -NOLOGO -OUT:$@ -PDB:$(HOST_PDBFILE) $(HOST_OBJS) $(WIN32_EXE_LDFLAGS) $(HOST_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
|
||||
$(EXPAND_LIBS_EXEC) -- $(HOST_LD) -NOLOGO -OUT:$@ -PDB:$(HOST_PDBFILE) $(HOST_OBJS) $(WIN32_EXE_LDFLAGS) $(HOST_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
|
||||
ifdef MSMANIFEST_TOOL
|
||||
@if test -f $@.manifest; then \
|
||||
if test -f "$(srcdir)/$@.manifest"; then \
|
||||
|
@ -833,9 +834,9 @@ ifdef MSMANIFEST_TOOL
|
|||
endif # MSVC with manifest tool
|
||||
else
|
||||
ifeq ($(HOST_CPP_PROG_LINK),1)
|
||||
$(EXPAND_LIBS_EXEC) --uselist -- $(HOST_CXX) -o $@ $(HOST_CXXFLAGS) $(HOST_LDFLAGS) $(HOST_PROGOBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
|
||||
$(EXPAND_LIBS_EXEC) -- $(HOST_CXX) -o $@ $(HOST_CXXFLAGS) $(HOST_LDFLAGS) $(HOST_PROGOBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
|
||||
else
|
||||
$(EXPAND_LIBS_EXEC) --uselist -- $(HOST_CC) -o $@ $(HOST_CFLAGS) $(HOST_LDFLAGS) $(HOST_PROGOBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
|
||||
$(EXPAND_LIBS_EXEC) -- $(HOST_CC) -o $@ $(HOST_CFLAGS) $(HOST_LDFLAGS) $(HOST_PROGOBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
|
||||
endif # HOST_CPP_PROG_LINK
|
||||
endif
|
||||
|
||||
|
@ -872,12 +873,12 @@ endif
|
|||
$(HOST_SIMPLE_PROGRAMS): host_%$(HOST_BIN_SUFFIX): host_%.$(OBJ_SUFFIX) $(HOST_LIBS_DEPS) $(HOST_EXTRA_DEPS) $(GLOBAL_DEPS)
|
||||
$(REPORT_BUILD)
|
||||
ifeq (WINNT_,$(HOST_OS_ARCH)_$(GNU_CC))
|
||||
$(EXPAND_LIBS_EXEC) --uselist -- $(HOST_LD) -NOLOGO -OUT:$@ -PDB:$(HOST_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
|
||||
$(EXPAND_LIBS_EXEC) -- $(HOST_LD) -NOLOGO -OUT:$@ -PDB:$(HOST_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
|
||||
else
|
||||
ifneq (,$(HOST_CPPSRCS)$(USE_HOST_CXX))
|
||||
$(EXPAND_LIBS_EXEC) --uselist -- $(HOST_CXX) $(HOST_OUTOPTION)$@ $(HOST_CXXFLAGS) $(INCLUDES) $< $(HOST_LIBS) $(HOST_EXTRA_LIBS)
|
||||
$(EXPAND_LIBS_EXEC) -- $(HOST_CXX) $(HOST_OUTOPTION)$@ $(HOST_CXXFLAGS) $(INCLUDES) $< $(HOST_LIBS) $(HOST_EXTRA_LIBS)
|
||||
else
|
||||
$(EXPAND_LIBS_EXEC) --uselist -- $(HOST_CC) $(HOST_OUTOPTION)$@ $(HOST_CFLAGS) $(INCLUDES) $< $(HOST_LIBS) $(HOST_EXTRA_LIBS)
|
||||
$(EXPAND_LIBS_EXEC) -- $(HOST_CC) $(HOST_OUTOPTION)$@ $(HOST_CFLAGS) $(INCLUDES) $< $(HOST_LIBS) $(HOST_EXTRA_LIBS)
|
||||
endif
|
||||
endif
|
||||
|
||||
|
@ -1466,8 +1467,8 @@ endif
|
|||
# dependency directory in the object directory, where we really need
|
||||
# it.
|
||||
|
||||
ifneq (,$(filter-out all chrome default export realchrome tools clean clobber clobber_all distclean realclean,$(MAKECMDGOALS)))
|
||||
MDDEPEND_FILES := $(strip $(wildcard $(foreach file,$(sort $(OBJS) $(PROGOBJS) $(HOST_OBJS) $(HOST_PROGOBJS) $(TARGETS)),$(MDDEPDIR)/$(notdir $(file)).pp) $(addprefix $(MDDEPDIR)/,$(EXTRA_MDDEPEND_FILES))))
|
||||
ifneq (,$(filter-out all chrome default export realchrome clean clobber clobber_all distclean realclean,$(MAKECMDGOALS)))
|
||||
MDDEPEND_FILES := $(strip $(wildcard $(addprefix $(MDDEPDIR)/,$(EXTRA_MDDEPEND_FILES) $(addsuffix .pp,$(notdir $(sort $(OBJS) $(PROGOBJS) $(HOST_OBJS) $(HOST_PROGOBJS))) $(TARGETS)))))
|
||||
|
||||
ifneq (,$(MDDEPEND_FILES))
|
||||
$(call include_deps,$(MDDEPEND_FILES))
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
XPIDL_SOURCES += [
|
||||
'nsIContentPolicy.idl',
|
||||
'nsIContentSecurityPolicy.idl',
|
||||
'nsIDocumentEncoder.idl',
|
||||
'nsIDOMDataChannel.idl',
|
||||
'nsIDOMFile.idl',
|
||||
'nsIDOMFileList.idl',
|
||||
|
@ -14,7 +15,6 @@ XPIDL_SOURCES += [
|
|||
'nsIDOMFormData.idl',
|
||||
'nsIDOMParser.idl',
|
||||
'nsIDOMSerializer.idl',
|
||||
'nsIDocumentEncoder.idl',
|
||||
'nsIDroppedLinkHandler.idl',
|
||||
'nsIFrameLoader.idl',
|
||||
'nsIImageLoadingContent.idl',
|
||||
|
@ -43,9 +43,9 @@ EXPORTS += [
|
|||
'nsContentTypeParser.h',
|
||||
'nsContentUtils.h',
|
||||
'nsCopySupport.h',
|
||||
'nsDOMFile.h',
|
||||
'nsDeprecatedOperationList.h',
|
||||
'nsDocElementCreatedNotificationRunner.h',
|
||||
'nsDOMFile.h',
|
||||
'nsHostObjectProtocolHandler.h',
|
||||
'nsIAttribute.h',
|
||||
'nsIContent.h',
|
||||
|
|
|
@ -54,11 +54,11 @@ if CONFIG['INTEL_ARCHITECTURE']:
|
|||
EXPORTS.mozilla.dom += [
|
||||
'Attr.h',
|
||||
'Comment.h',
|
||||
'DocumentFragment.h',
|
||||
'DocumentType.h',
|
||||
'DOMImplementation.h',
|
||||
'DOMParser.h',
|
||||
'DOMRect.h',
|
||||
'DocumentFragment.h',
|
||||
'DocumentType.h',
|
||||
'EventSource.h',
|
||||
'Link.h',
|
||||
'NodeIterator.h',
|
||||
|
@ -68,31 +68,26 @@ EXPORTS.mozilla.dom += [
|
|||
|
||||
CPP_SOURCES += [
|
||||
'Attr.cpp',
|
||||
'ChildIterator.cpp',
|
||||
'Comment.cpp',
|
||||
'DOMImplementation.cpp',
|
||||
'DOMRect.cpp',
|
||||
'DirectionalityUtils.cpp',
|
||||
'DocumentFragment.cpp',
|
||||
'DocumentType.cpp',
|
||||
'DOMImplementation.cpp',
|
||||
'DOMParser.cpp',
|
||||
'DOMRect.cpp',
|
||||
'Element.cpp',
|
||||
'EventSource.cpp',
|
||||
'FileIOObject.cpp',
|
||||
'FragmentOrElement.cpp',
|
||||
'Link.cpp',
|
||||
'NodeIterator.cpp',
|
||||
'Text.cpp',
|
||||
'ThirdPartyUtil.cpp',
|
||||
'TreeWalker.cpp',
|
||||
'WebSocket.cpp',
|
||||
'nsAtomListUtils.cpp',
|
||||
'nsAttrAndChildArray.cpp',
|
||||
'nsAttrValue.cpp',
|
||||
'nsAttrValueOrString.cpp',
|
||||
'nsCCUncollectableMarker.cpp',
|
||||
'nsCSPService.cpp',
|
||||
'nsChannelPolicy.cpp',
|
||||
'ChildIterator.cpp',
|
||||
'nsContentAreaDragDrop.cpp',
|
||||
'nsContentIterator.cpp',
|
||||
'nsContentList.cpp',
|
||||
|
@ -101,6 +96,10 @@ CPP_SOURCES += [
|
|||
'nsContentUtils.cpp',
|
||||
'nsCopySupport.cpp',
|
||||
'nsCrossSiteListenerProxy.cpp',
|
||||
'nsCSPService.cpp',
|
||||
'nsDataDocumentContentPolicy.cpp',
|
||||
'nsDocument.cpp',
|
||||
'nsDocumentEncoder.cpp',
|
||||
'nsDOMAttributeMap.cpp',
|
||||
'nsDOMBlobBuilder.cpp',
|
||||
'nsDOMCaretPosition.cpp',
|
||||
|
@ -111,20 +110,17 @@ CPP_SOURCES += [
|
|||
'nsDOMSerializer.cpp',
|
||||
'nsDOMSettableTokenList.cpp',
|
||||
'nsDOMTokenList.cpp',
|
||||
'nsDataDocumentContentPolicy.cpp',
|
||||
'nsDocument.cpp',
|
||||
'nsDocumentEncoder.cpp',
|
||||
'nsFormData.cpp',
|
||||
'nsFrameLoader.cpp',
|
||||
'nsFrameMessageManager.cpp',
|
||||
'nsGenConImageContent.cpp',
|
||||
'nsGenericDOMDataNode.cpp',
|
||||
'nsGkAtoms.cpp',
|
||||
'nsHTMLContentSerializer.cpp',
|
||||
'nsHostObjectProtocolHandler.cpp',
|
||||
'nsHostObjectURI.cpp',
|
||||
'nsINode.cpp',
|
||||
'nsHTMLContentSerializer.cpp',
|
||||
'nsImageLoadingContent.cpp',
|
||||
'nsINode.cpp',
|
||||
'nsInProcessTabChildGlobal.cpp',
|
||||
'nsLineBreaker.cpp',
|
||||
'nsMappedAttributeElement.cpp',
|
||||
|
@ -144,8 +140,8 @@ CPP_SOURCES += [
|
|||
'nsScriptLoader.cpp',
|
||||
'nsStubDocumentObserver.cpp',
|
||||
'nsStubMutationObserver.cpp',
|
||||
'nsStyleLinkElement.cpp',
|
||||
'nsStyledElement.cpp',
|
||||
'nsStyleLinkElement.cpp',
|
||||
'nsSyncLoadService.cpp',
|
||||
'nsTextFragment.cpp',
|
||||
'nsTextNode.cpp',
|
||||
|
@ -156,6 +152,10 @@ CPP_SOURCES += [
|
|||
'nsXMLContentSerializer.cpp',
|
||||
'nsXMLHttpRequest.cpp',
|
||||
'nsXMLNameSpaceMap.cpp',
|
||||
'Text.cpp',
|
||||
'ThirdPartyUtil.cpp',
|
||||
'TreeWalker.cpp',
|
||||
'WebSocket.cpp',
|
||||
]
|
||||
|
||||
EXTRA_COMPONENTS += [
|
||||
|
|
|
@ -78,8 +78,8 @@ private:
|
|||
|
||||
// Creates and returns an encoder instance of the type specified in aType.
|
||||
// aType may change to "image/png" if no instance of the original type could
|
||||
// be created and we had to fall back to a PNG encoder. A return value of
|
||||
// NULL should be interpreted as NS_IMAGELIB_ERROR_NO_ENCODER and aType is
|
||||
// be created and we had to fall back to a PNG encoder. A null return value
|
||||
// should be interpreted as NS_IMAGELIB_ERROR_NO_ENCODER and aType is
|
||||
// undefined in this case.
|
||||
static already_AddRefed<imgIEncoder> GetImageEncoder(nsAString& aType);
|
||||
|
||||
|
|
|
@ -27,21 +27,21 @@ CPP_SOURCES += [
|
|||
|
||||
if CONFIG['MOZ_WEBGL']:
|
||||
CPP_SOURCES += [
|
||||
'WebGLActiveInfo.cpp',
|
||||
'WebGLBuffer.cpp',
|
||||
'WebGL1Context.cpp',
|
||||
'WebGL2Context.cpp',
|
||||
'WebGLActiveInfo.cpp',
|
||||
'WebGLBuffer.cpp',
|
||||
'WebGLContext.cpp',
|
||||
'WebGLContextAsyncQueries.cpp',
|
||||
'WebGLContextBuffers.cpp',
|
||||
'WebGLContextLossTimer.cpp',
|
||||
'WebGLContextGL.cpp',
|
||||
'WebGLContextUtils.cpp',
|
||||
'WebGLContextReporter.cpp',
|
||||
'WebGLContextState.cpp',
|
||||
'WebGLContextValidate.cpp',
|
||||
'WebGLContextExtensions.cpp',
|
||||
'WebGLContextFramebufferOperations.cpp',
|
||||
'WebGLContextGL.cpp',
|
||||
'WebGLContextLossTimer.cpp',
|
||||
'WebGLContextReporter.cpp',
|
||||
'WebGLContextState.cpp',
|
||||
'WebGLContextUtils.cpp',
|
||||
'WebGLContextValidate.cpp',
|
||||
'WebGLContextVertexArray.cpp',
|
||||
'WebGLContextVertices.cpp',
|
||||
'WebGLElementArrayCache.cpp',
|
||||
|
|
|
@ -25,8 +25,6 @@ if CONFIG['MOZ_WEBSPEECH']:
|
|||
CPP_SOURCES += [
|
||||
'DOMWheelEvent.cpp',
|
||||
'EventTarget.cpp',
|
||||
'TextComposition.cpp',
|
||||
'Touch.cpp',
|
||||
'nsAsyncDOMEvent.cpp',
|
||||
'nsContentEventHandler.cpp',
|
||||
'nsDOMAnimationEvent.cpp',
|
||||
|
@ -62,6 +60,8 @@ CPP_SOURCES += [
|
|||
'nsIMEStateManager.cpp',
|
||||
'nsPaintRequest.cpp',
|
||||
'nsPrivateTextRange.cpp',
|
||||
'TextComposition.cpp',
|
||||
'Touch.cpp',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_WEBSPEECH']:
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#include "DecoderTraits.h"
|
||||
#include "nsIAudioChannelAgent.h"
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "mozilla/dom/TextTrackList.h"
|
||||
#include "mozilla/dom/TextTrackManager.h"
|
||||
|
||||
// Define to output information on decoding and painting framerate
|
||||
/* #define DEBUG_FRAME_RATE 1 */
|
||||
|
@ -50,6 +50,7 @@ namespace dom {
|
|||
|
||||
class MediaError;
|
||||
class MediaSource;
|
||||
class TextTrackList;
|
||||
|
||||
class HTMLMediaElement : public nsGenericHTMLElement,
|
||||
public nsIObserver,
|
||||
|
@ -526,12 +527,14 @@ public:
|
|||
const nsAString& aLanguage);
|
||||
|
||||
void AddTextTrack(TextTrack* aTextTrack) {
|
||||
mTextTracks->AddTextTrack(aTextTrack);
|
||||
if (mTextTrackManager) {
|
||||
mTextTrackManager->AddTextTrack(aTextTrack);
|
||||
}
|
||||
}
|
||||
|
||||
void RemoveTextTrack(TextTrack* aTextTrack) {
|
||||
if (mTextTracks) {
|
||||
mTextTracks->RemoveTextTrack(*aTextTrack);
|
||||
if (mTextTrackManager) {
|
||||
mTextTrackManager->RemoveTextTrack(aTextTrack);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1148,8 +1151,7 @@ protected:
|
|||
// An agent used to join audio channel service.
|
||||
nsCOMPtr<nsIAudioChannelAgent> mAudioChannelAgent;
|
||||
|
||||
// List of our attached text track objects.
|
||||
nsRefPtr<TextTrackList> mTextTracks;
|
||||
nsRefPtr<TextTrackManager> mTextTrackManager;
|
||||
};
|
||||
|
||||
} // namespace dom
|
||||
|
|
|
@ -425,7 +425,7 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(HTMLMediaElement, nsGenericHTM
|
|||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mOutputStreams[i].mStream);
|
||||
}
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPlayed);
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mTextTracks);
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mTextTrackManager)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(HTMLMediaElement, nsGenericHTMLElement)
|
||||
|
@ -445,7 +445,7 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(HTMLMediaElement, nsGenericHTMLE
|
|||
NS_IMPL_CYCLE_COLLECTION_UNLINK(mOutputStreams[i].mStream);
|
||||
}
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK(mPlayed);
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK(mTextTracks);
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK(mTextTrackManager)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(HTMLMediaElement)
|
||||
|
@ -1999,7 +1999,7 @@ HTMLMediaElement::HTMLMediaElement(already_AddRefed<nsINodeInfo> aNodeInfo)
|
|||
RegisterFreezableElement();
|
||||
NotifyOwnerDocumentActivityChanged();
|
||||
|
||||
mTextTracks = new TextTrackList(OwnerDoc()->GetParentObject());
|
||||
mTextTrackManager = new TextTrackManager(this);
|
||||
}
|
||||
|
||||
HTMLMediaElement::~HTMLMediaElement()
|
||||
|
@ -2979,7 +2979,9 @@ void HTMLMediaElement::SeekCompleted()
|
|||
DispatchAsyncEvent(NS_LITERAL_STRING("seeked"));
|
||||
// We changed whether we're seeking so we need to AddRemoveSelfReference
|
||||
AddRemoveSelfReference();
|
||||
mTextTracks->DidSeek();
|
||||
if (mTextTrackManager) {
|
||||
mTextTrackManager->DidSeek();
|
||||
}
|
||||
}
|
||||
|
||||
void HTMLMediaElement::NotifySuspendedByCache(bool aIsSuspended)
|
||||
|
@ -3668,11 +3670,11 @@ void HTMLMediaElement::FireTimeUpdate(bool aPeriodic)
|
|||
}
|
||||
|
||||
// Update visible text tracks.
|
||||
// Here mTextTracks can be null if the cycle collector has unlinked
|
||||
// Here mTextTrackManager can be null if the cycle collector has unlinked
|
||||
// us before our parent. In that case UnbindFromTree will call us
|
||||
// when our parent is unlinked.
|
||||
if (mTextTracks) {
|
||||
mTextTracks->Update(time);
|
||||
if (mTextTrackManager) {
|
||||
mTextTrackManager->Update(time);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3905,7 +3907,7 @@ NS_IMETHODIMP HTMLMediaElement::CanPlayChanged(int32_t canPlay)
|
|||
TextTrackList*
|
||||
HTMLMediaElement::TextTracks() const
|
||||
{
|
||||
return mTextTracks;
|
||||
return mTextTrackManager ? mTextTrackManager->TextTracks() : nullptr;
|
||||
}
|
||||
|
||||
already_AddRefed<TextTrack>
|
||||
|
@ -3913,7 +3915,9 @@ HTMLMediaElement::AddTextTrack(TextTrackKind aKind,
|
|||
const nsAString& aLabel,
|
||||
const nsAString& aLanguage)
|
||||
{
|
||||
return mTextTracks->AddTextTrack(this, aKind, aLabel, aLanguage);
|
||||
return mTextTrackManager ? mTextTrackManager->AddTextTrack(aKind, aLabel,
|
||||
aLanguage)
|
||||
: nullptr;
|
||||
}
|
||||
|
||||
} // namespace dom
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim:set tw=80 expandtab softtabstop=2 ts=2 sw=2: */
|
||||
|
||||
/* 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/. */
|
||||
|
||||
#include "mozilla/dom/TextTrackManager.h"
|
||||
#include "mozilla/dom/HTMLMediaElement.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace dom {
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_1(TextTrackManager, mTextTracks)
|
||||
NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(TextTrackManager, AddRef)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(TextTrackManager, Release)
|
||||
|
||||
TextTrackManager::TextTrackManager(HTMLMediaElement *aMediaElement)
|
||||
: mMediaElement(aMediaElement)
|
||||
{
|
||||
MOZ_COUNT_CTOR(TextTrackManager);
|
||||
mTextTracks = new TextTrackList(mMediaElement->OwnerDoc()->GetParentObject());
|
||||
}
|
||||
|
||||
TextTrackManager::~TextTrackManager()
|
||||
{
|
||||
MOZ_COUNT_DTOR(TextTrackManager);
|
||||
}
|
||||
|
||||
TextTrackList*
|
||||
TextTrackManager::TextTracks() const
|
||||
{
|
||||
return mTextTracks;
|
||||
}
|
||||
|
||||
already_AddRefed<TextTrack>
|
||||
TextTrackManager::AddTextTrack(TextTrackKind aKind, const nsAString& aLabel,
|
||||
const nsAString& aLanguage)
|
||||
{
|
||||
return mTextTracks->AddTextTrack(mMediaElement, aKind, aLabel, aLanguage);
|
||||
}
|
||||
|
||||
void
|
||||
TextTrackManager::AddTextTrack(TextTrack* aTextTrack)
|
||||
{
|
||||
mTextTracks->AddTextTrack(aTextTrack);
|
||||
}
|
||||
|
||||
void
|
||||
TextTrackManager::RemoveTextTrack(TextTrack* aTextTrack)
|
||||
{
|
||||
mTextTracks->RemoveTextTrack(aTextTrack);
|
||||
}
|
||||
|
||||
void
|
||||
TextTrackManager::DidSeek()
|
||||
{
|
||||
mTextTracks->DidSeek();
|
||||
}
|
||||
|
||||
void
|
||||
TextTrackManager::Update(double aTime)
|
||||
{
|
||||
mTextTracks->Update(aTime);
|
||||
}
|
||||
|
||||
} // namespace dom
|
||||
} // namespace mozilla
|
|
@ -0,0 +1,53 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim:set tw=80 expandtab softtabstop=2 ts=2 sw=2: */
|
||||
|
||||
/* 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/. */
|
||||
|
||||
#ifndef mozilla_dom_TextTrackManager_h
|
||||
#define mozilla_dom_TextTrackManager_h
|
||||
|
||||
#include "mozilla/dom/TextTrack.h"
|
||||
#include "mozilla/dom/TextTrackList.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace dom {
|
||||
|
||||
class HTMLMediaElement;
|
||||
|
||||
class TextTrackManager
|
||||
{
|
||||
public:
|
||||
NS_DECL_CYCLE_COLLECTION_NATIVE_CLASS(TextTrackManager)
|
||||
NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(TextTrackManager);
|
||||
|
||||
TextTrackManager(HTMLMediaElement *aMediaElement);
|
||||
~TextTrackManager();
|
||||
|
||||
TextTrackList* TextTracks() const;
|
||||
already_AddRefed<TextTrack> AddTextTrack(TextTrackKind aKind,
|
||||
const nsAString& aLabel,
|
||||
const nsAString& aLanguage);
|
||||
void AddTextTrack(TextTrack* aTextTrack);
|
||||
void RemoveTextTrack(TextTrack* aTextTrack);
|
||||
void DidSeek();
|
||||
|
||||
// Update the display of cues on the video as per the current play back time
|
||||
// of aTime.
|
||||
void Update(double aTime);
|
||||
|
||||
private:
|
||||
// The HTMLMediaElement that this TextTrackManager manages the TextTracks of.
|
||||
// This is a weak reference as the life time of TextTrackManager is dependent
|
||||
// on the HTMLMediaElement, so it should not be trying to hold the
|
||||
// HTMLMediaElement alive.
|
||||
HTMLMediaElement* mMediaElement;
|
||||
// List of the TextTrackManager's owning HTMLMediaElement's TextTracks.
|
||||
nsRefPtr<TextTrackList> mTextTracks;
|
||||
};
|
||||
|
||||
} // namespace dom
|
||||
} // namespace mozilla
|
||||
|
||||
#endif // mozilla_dom_TextTrackManager_h
|
|
@ -15,8 +15,8 @@ EXPORTS += [
|
|||
EXPORTS.mozilla.dom += [
|
||||
'HTMLAnchorElement.h',
|
||||
'HTMLAreaElement.h',
|
||||
'HTMLBRElement.h',
|
||||
'HTMLBodyElement.h',
|
||||
'HTMLBRElement.h',
|
||||
'HTMLButtonElement.h',
|
||||
'HTMLDataElement.h',
|
||||
'HTMLDataListElement.h',
|
||||
|
@ -27,14 +27,14 @@ EXPORTS.mozilla.dom += [
|
|||
'HTMLFormElement.h',
|
||||
'HTMLFrameElement.h',
|
||||
'HTMLFrameSetElement.h',
|
||||
'HTMLHRElement.h',
|
||||
'HTMLHeadingElement.h',
|
||||
'HTMLHRElement.h',
|
||||
'HTMLIFrameElement.h',
|
||||
'HTMLImageElement.h',
|
||||
'HTMLInputElement.h',
|
||||
'HTMLLIElement.h',
|
||||
'HTMLLabelElement.h',
|
||||
'HTMLLegendElement.h',
|
||||
'HTMLLIElement.h',
|
||||
'HTMLLinkElement.h',
|
||||
'HTMLMapElement.h',
|
||||
'HTMLMenuElement.h',
|
||||
|
@ -71,6 +71,7 @@ EXPORTS.mozilla.dom += [
|
|||
'HTMLTrackElement.h',
|
||||
'HTMLUnknownElement.h',
|
||||
'MediaError.h',
|
||||
'TextTrackManager.h',
|
||||
'TimeRanges.h',
|
||||
'UndoManager.h',
|
||||
'ValidityState.h',
|
||||
|
@ -80,8 +81,8 @@ CPP_SOURCES += [
|
|||
'HTMLAnchorElement.cpp',
|
||||
'HTMLAreaElement.cpp',
|
||||
'HTMLAudioElement.cpp',
|
||||
'HTMLBRElement.cpp',
|
||||
'HTMLBodyElement.cpp',
|
||||
'HTMLBRElement.cpp',
|
||||
'HTMLButtonElement.cpp',
|
||||
'HTMLCanvasElement.cpp',
|
||||
'HTMLDataElement.cpp',
|
||||
|
@ -94,14 +95,14 @@ CPP_SOURCES += [
|
|||
'HTMLFormElement.cpp',
|
||||
'HTMLFrameElement.cpp',
|
||||
'HTMLFrameSetElement.cpp',
|
||||
'HTMLHRElement.cpp',
|
||||
'HTMLHeadingElement.cpp',
|
||||
'HTMLHRElement.cpp',
|
||||
'HTMLIFrameElement.cpp',
|
||||
'HTMLImageElement.cpp',
|
||||
'HTMLInputElement.cpp',
|
||||
'HTMLLIElement.cpp',
|
||||
'HTMLLabelElement.cpp',
|
||||
'HTMLLegendElement.cpp',
|
||||
'HTMLLIElement.cpp',
|
||||
'HTMLLinkElement.cpp',
|
||||
'HTMLMapElement.cpp',
|
||||
'HTMLMediaElement.cpp',
|
||||
|
@ -141,9 +142,6 @@ CPP_SOURCES += [
|
|||
'HTMLUnknownElement.cpp',
|
||||
'HTMLVideoElement.cpp',
|
||||
'MediaError.cpp',
|
||||
'TimeRanges.cpp',
|
||||
'UndoManager.cpp',
|
||||
'ValidityState.cpp',
|
||||
'nsDOMStringMap.cpp',
|
||||
'nsFormSubmission.cpp',
|
||||
'nsGenericHTMLElement.cpp',
|
||||
|
@ -152,6 +150,10 @@ CPP_SOURCES += [
|
|||
'nsIConstraintValidation.cpp',
|
||||
'nsRadioVisitor.cpp',
|
||||
'nsTextEditorState.cpp',
|
||||
'TextTrackManager.cpp',
|
||||
'TimeRanges.cpp',
|
||||
'UndoManager.cpp',
|
||||
'ValidityState.cpp',
|
||||
]
|
||||
|
||||
FAIL_ON_WARNINGS = True
|
||||
|
|
|
@ -19,10 +19,10 @@ CPP_SOURCES += [
|
|||
'HTMLAllCollection.cpp',
|
||||
'ImageDocument.cpp',
|
||||
'MediaDocument.cpp',
|
||||
'PluginDocument.cpp',
|
||||
'VideoDocument.cpp',
|
||||
'nsHTMLContentSink.cpp',
|
||||
'nsHTMLDocument.cpp',
|
||||
'PluginDocument.cpp',
|
||||
'VideoDocument.cpp',
|
||||
]
|
||||
|
||||
LIBRARY_NAME = 'gkconhtmldoc_s'
|
||||
|
|
|
@ -433,15 +433,16 @@ AudioStream* AudioStream::AllocateStream()
|
|||
|
||||
int AudioStream::MaxNumberOfChannels()
|
||||
{
|
||||
uint32_t maxNumberOfChannels, rv;
|
||||
#if defined(MOZ_CUBEB)
|
||||
uint32_t maxNumberOfChannels;
|
||||
|
||||
rv = cubeb_get_max_channel_count(GetCubebContext(), &maxNumberOfChannels);
|
||||
|
||||
if (rv != CUBEB_OK) {
|
||||
return 0;
|
||||
if (cubeb_get_max_channel_count(GetCubebContext(),
|
||||
&maxNumberOfChannels) == CUBEB_OK) {
|
||||
return static_cast<int>(maxNumberOfChannels);
|
||||
}
|
||||
#endif
|
||||
|
||||
return static_cast<int>(maxNumberOfChannels);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int AudioStream::PreferredSampleRate()
|
||||
|
@ -453,9 +454,13 @@ int AudioStream::PreferredSampleRate()
|
|||
// backend used.
|
||||
const int fallbackSampleRate = 44100;
|
||||
if (mPreferredSampleRate == 0) {
|
||||
if (cubeb_get_preferred_sample_rate(GetCubebContext(), &mPreferredSampleRate) != CUBEB_OK) {
|
||||
mPreferredSampleRate = fallbackSampleRate;
|
||||
#if defined(MOZ_CUBEB)
|
||||
if (cubeb_get_preferred_sample_rate(GetCubebContext(),
|
||||
&mPreferredSampleRate) == CUBEB_OK) {
|
||||
return mPreferredSampleRate;
|
||||
}
|
||||
#endif
|
||||
mPreferredSampleRate = fallbackSampleRate;
|
||||
}
|
||||
|
||||
return mPreferredSampleRate;
|
||||
|
|
|
@ -520,7 +520,8 @@ DecoderTraits::CreateDecoder(const nsACString& aType, MediaDecoderOwner* aOwner)
|
|||
}
|
||||
#endif
|
||||
#ifdef MOZ_MEDIA_PLUGINS
|
||||
if (MediaDecoder::IsMediaPluginsEnabled() && GetMediaPluginHost()->FindDecoder(aType, NULL)) {
|
||||
if (MediaDecoder::IsMediaPluginsEnabled() &&
|
||||
GetMediaPluginHost()->FindDecoder(aType, nullptr)) {
|
||||
decoder = new MediaPluginDecoder(aType);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -166,14 +166,14 @@ public:
|
|||
Plane mPlanes[3];
|
||||
};
|
||||
|
||||
// Constructs a VideoData object. If aImage is NULL, creates a new Image
|
||||
// holding a copy of the YCbCr data passed in aBuffer. If aImage is not NULL,
|
||||
// it's stored as the underlying video image and aBuffer is assumed to point
|
||||
// to memory within aImage so no copy is made. aTimecode is a codec specific
|
||||
// number representing the timestamp of the frame of video data. Returns
|
||||
// nsnull if an error occurs. This may indicate that memory couldn't be
|
||||
// allocated to create the VideoData object, or it may indicate some problem
|
||||
// with the input data (e.g. negative stride).
|
||||
// Constructs a VideoData object. If aImage is nullptr, creates a new Image
|
||||
// holding a copy of the YCbCr data passed in aBuffer. If aImage is not
|
||||
// nullptr, it's stored as the underlying video image and aBuffer is assumed
|
||||
// to point to memory within aImage so no copy is made. aTimecode is a codec
|
||||
// specific number representing the timestamp of the frame of video data.
|
||||
// Returns nsnull if an error occurs. This may indicate that memory couldn't
|
||||
// be allocated to create the VideoData object, or it may indicate some
|
||||
// problem with the input data (e.g. negative stride).
|
||||
static VideoData* Create(VideoInfo& aInfo,
|
||||
ImageContainer* aContainer,
|
||||
Image* aImage,
|
||||
|
|
|
@ -960,9 +960,9 @@ MediaStreamGraphImpl::PrepareUpdatesToMainThreadState(bool aFinalUpdate)
|
|||
{
|
||||
mMonitor.AssertCurrentThreadOwns();
|
||||
|
||||
// We don't want to update the main thread about timing update when we are not
|
||||
// running in realtime.
|
||||
if (ShouldUpdateMainThread()) {
|
||||
// We don't want to frequently update the main thread about timing update
|
||||
// when we are not running in realtime.
|
||||
if (aFinalUpdate || ShouldUpdateMainThread()) {
|
||||
mStreamUpdates.SetCapacity(mStreamUpdates.Length() + mStreams.Length());
|
||||
for (uint32_t i = 0; i < mStreams.Length(); ++i) {
|
||||
MediaStream* stream = mStreams[i];
|
||||
|
|
|
@ -77,10 +77,10 @@ TextTrackList::GetTrackById(const nsAString& aId)
|
|||
}
|
||||
|
||||
void
|
||||
TextTrackList::RemoveTextTrack(TextTrack& aTrack)
|
||||
TextTrackList::RemoveTextTrack(TextTrack* aTrack)
|
||||
{
|
||||
if (mTextTracks.RemoveElement(&aTrack)) {
|
||||
CreateAndDispatchTrackEventRunner(&aTrack, NS_LITERAL_STRING("removetrack"));
|
||||
if (mTextTracks.RemoveElement(aTrack)) {
|
||||
CreateAndDispatchTrackEventRunner(aTrack, NS_LITERAL_STRING("removetrack"));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ public:
|
|||
mTextTracks.AppendElement(aTextTrack);
|
||||
}
|
||||
|
||||
void RemoveTextTrack(TextTrack& aTrack);
|
||||
void RemoveTextTrack(TextTrack* aTrack);
|
||||
void DidSeek();
|
||||
|
||||
nsresult DispatchTrackEvent(TrackEvent* aEvent);
|
||||
|
|
|
@ -35,48 +35,6 @@ struct nsIntSize;
|
|||
// mozilla::Monitor non-reentrant.
|
||||
namespace mozilla {
|
||||
|
||||
/**
|
||||
* ReentrantMonitorAutoExit
|
||||
* Exit the ReentrantMonitor when it enters scope, and enters it when it leaves
|
||||
* scope.
|
||||
*
|
||||
* MUCH PREFERRED to bare calls to ReentrantMonitor.Exit and Enter.
|
||||
*/
|
||||
class MOZ_STACK_CLASS ReentrantMonitorAutoExit
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Constructor
|
||||
* The constructor releases the given lock. The destructor
|
||||
* acquires the lock. The lock must be held before constructing
|
||||
* this object!
|
||||
*
|
||||
* @param aReentrantMonitor A valid mozilla::ReentrantMonitor*. It
|
||||
* must be already locked.
|
||||
**/
|
||||
ReentrantMonitorAutoExit(ReentrantMonitor& aReentrantMonitor) :
|
||||
mReentrantMonitor(&aReentrantMonitor)
|
||||
{
|
||||
NS_ASSERTION(mReentrantMonitor, "null monitor");
|
||||
mReentrantMonitor->AssertCurrentThreadIn();
|
||||
mReentrantMonitor->Exit();
|
||||
}
|
||||
|
||||
~ReentrantMonitorAutoExit(void)
|
||||
{
|
||||
mReentrantMonitor->Enter();
|
||||
}
|
||||
|
||||
private:
|
||||
ReentrantMonitorAutoExit();
|
||||
ReentrantMonitorAutoExit(const ReentrantMonitorAutoExit&);
|
||||
ReentrantMonitorAutoExit& operator =(const ReentrantMonitorAutoExit&);
|
||||
static void* operator new(size_t) CPP_THROW_NEW;
|
||||
static void operator delete(void*);
|
||||
|
||||
ReentrantMonitor* mReentrantMonitor;
|
||||
};
|
||||
|
||||
/**
|
||||
* ReentrantMonitorConditionallyEnter
|
||||
*
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#include <initguid.h>
|
||||
#include <wmsdkidl.h>
|
||||
|
||||
#define DELETE_RESET(p) { delete (p) ; (p) = NULL ;}
|
||||
#define DELETE_RESET(p) { delete (p) ; (p) = nullptr ;}
|
||||
|
||||
DEFINE_GUID(CLSID_MozAudioSinkFilter, 0x1872d8c8, 0xea8d, 0x4c34, 0xae, 0x96, 0x69, 0xde,
|
||||
0xf1, 0x33, 0x7b, 0x33);
|
||||
|
|
|
@ -83,7 +83,7 @@ DirectShowReader::ReadMetadata(MediaInfo* aInfo,
|
|||
// Create the filter graph, reference it by the GraphBuilder interface,
|
||||
// to make graph building more convenient.
|
||||
hr = CoCreateInstance(CLSID_FilterGraph,
|
||||
NULL,
|
||||
nullptr,
|
||||
CLSCTX_INPROC_SERVER,
|
||||
IID_IGraphBuilder,
|
||||
reinterpret_cast<void**>(static_cast<IGraphBuilder**>(byRef(mGraph))));
|
||||
|
@ -217,7 +217,7 @@ DirectShowReader::Finish(HRESULT aStatus)
|
|||
RefPtr<IMediaEventSink> eventSink;
|
||||
HRESULT hr = mGraph->QueryInterface(static_cast<IMediaEventSink**>(byRef(eventSink)));
|
||||
if (SUCCEEDED(hr) && eventSink) {
|
||||
eventSink->Notify(EC_COMPLETE, aStatus, NULL);
|
||||
eventSink->Notify(EC_COMPLETE, aStatus, 0);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -163,7 +163,7 @@ GetGraphNotifyString(long evCode)
|
|||
CASE(VFW_S_VIDEO_NOT_RENDERED); // Partial success; the video was not rendered.
|
||||
CASE(E_ABORT); // Operation aborted.
|
||||
CASE(E_OUTOFMEMORY); // Insufficient memory.
|
||||
CASE(E_POINTER); // NULL pointer argument.
|
||||
CASE(E_POINTER); // Null pointer argument.
|
||||
CASE(VFW_E_CANNOT_CONNECT); // No combination of intermediate filters could be found to make the connection.
|
||||
CASE(VFW_E_CANNOT_RENDER); // No combination of filters could be found to render the stream.
|
||||
CASE(VFW_E_NO_ACCEPTABLE_TYPES); // There is no common media type between these pins.
|
||||
|
@ -187,7 +187,7 @@ CreateAndAddFilter(IGraphBuilder* aGraph,
|
|||
|
||||
nsRefPtr<IBaseFilter> filter;
|
||||
hr = CoCreateInstance(aFilterClsId,
|
||||
NULL,
|
||||
nullptr,
|
||||
CLSCTX_INPROC_SERVER,
|
||||
IID_IBaseFilter,
|
||||
getter_AddRefs(filter));
|
||||
|
@ -215,7 +215,7 @@ AddMP3DMOWrapperFilter(IGraphBuilder* aGraph,
|
|||
// Create the wrapper filter.
|
||||
nsRefPtr<IBaseFilter> filter;
|
||||
hr = CoCreateInstance(CLSID_DMOWrapperFilter,
|
||||
NULL,
|
||||
nullptr,
|
||||
CLSCTX_INPROC_SERVER,
|
||||
IID_IBaseFilter,
|
||||
getter_AddRefs(filter));
|
||||
|
@ -281,7 +281,7 @@ GetUnconnectedPin(IBaseFilter* aFilter, PIN_DIRECTION aPinDir)
|
|||
|
||||
// Test each pin to see if it matches the direction we're looking for.
|
||||
RefPtr<IPin> pin;
|
||||
while (S_OK == enumPins->Next(1, byRef(pin), NULL)) {
|
||||
while (S_OK == enumPins->Next(1, byRef(pin), nullptr)) {
|
||||
bool matches = FALSE;
|
||||
if (SUCCEEDED(MatchUnconnectedPin(pin, aPinDir, &matches)) &&
|
||||
matches) {
|
||||
|
|
|
@ -22,7 +22,7 @@ public:
|
|||
: mLock(aLock)
|
||||
{
|
||||
CriticalSectionAutoEnter lock(*mLock);
|
||||
mEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
|
||||
mEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);
|
||||
}
|
||||
|
||||
~Signal() {
|
||||
|
|
|
@ -385,7 +385,7 @@ OutputPin::RequestAllocator(IMemAllocator* aPreferred,
|
|||
CLSCTX_INPROC_SERVER,
|
||||
IID_IMemAllocator,
|
||||
getter_AddRefs(allocator));
|
||||
if(FAILED(hr) || (allocator == NULL)) {
|
||||
if(FAILED(hr) || (allocator == nullptr)) {
|
||||
NS_WARNING("Can't create our own DirectShow allocator.");
|
||||
return hr;
|
||||
}
|
||||
|
@ -451,7 +451,7 @@ OutputPin::WaitForNext(DWORD aTimeout,
|
|||
NS_ASSERTION(aTimeout == 0 || aTimeout == INFINITE,
|
||||
"Oops, we don't handle this!");
|
||||
|
||||
*aOutSample = NULL;
|
||||
*aOutSample = nullptr;
|
||||
*aOutDwUser = 0;
|
||||
|
||||
LONGLONG offset = 0;
|
||||
|
@ -657,7 +657,7 @@ SourceFilter::GetPin(int n)
|
|||
NS_ASSERTION(mOutputPin != 0, "GetPin with no pin!");
|
||||
return static_cast<BasePin*>(mOutputPin);
|
||||
} else {
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,12 +27,12 @@ CPP_SOURCES += [
|
|||
# If WebRTC isn't being built, we need to compile the DirectShow base classes so that
|
||||
# they're available at link time.
|
||||
if not CONFIG['MOZ_WEBRTC']:
|
||||
CPP_SOURCES += [
|
||||
TOPSRCDIR + '/media/webrtc/trunk/webrtc/modules/video_capture/windows/BaseFilter.cpp',
|
||||
TOPSRCDIR + '/media/webrtc/trunk/webrtc/modules/video_capture/windows/BaseInputPin.cpp',
|
||||
TOPSRCDIR + '/media/webrtc/trunk/webrtc/modules/video_capture/windows/BasePin.cpp',
|
||||
TOPSRCDIR + '/media/webrtc/trunk/webrtc/modules/video_capture/windows/MediaType.cpp',
|
||||
]
|
||||
CPP_SOURCES += [ '%s/%s' % (TOPSRCDIR, p) for p in [
|
||||
'media/webrtc/trunk/webrtc/modules/video_capture/windows/BaseFilter.cpp',
|
||||
'media/webrtc/trunk/webrtc/modules/video_capture/windows/BaseInputPin.cpp',
|
||||
'media/webrtc/trunk/webrtc/modules/video_capture/windows/BasePin.cpp',
|
||||
'media/webrtc/trunk/webrtc/modules/video_capture/windows/MediaType.cpp',
|
||||
]]
|
||||
|
||||
FAIL_ON_WARNINGS = True
|
||||
|
||||
|
|
|
@ -143,7 +143,7 @@ bool GStreamerFormatHelper::CanHandleMediaType(const nsACString& aMIMEType,
|
|||
}
|
||||
|
||||
const char *type;
|
||||
NS_CStringGetData(aMIMEType, &type, NULL);
|
||||
NS_CStringGetData(aMIMEType, &type, nullptr);
|
||||
|
||||
GstCaps *caps;
|
||||
if (aCodecs && !aCodecs->IsEmpty()) {
|
||||
|
|
|
@ -44,7 +44,7 @@ load_gstreamer()
|
|||
return true;
|
||||
}
|
||||
|
||||
void *gstreamerLib = NULL;
|
||||
void *gstreamerLib = nullptr;
|
||||
guint major = 0;
|
||||
guint minor = 0;
|
||||
guint micro, nano;
|
||||
|
|
|
@ -49,7 +49,7 @@ gst_moz_video_buffer_copy(GstMozVideoBuffer* self)
|
|||
{
|
||||
GstMozVideoBuffer* copy;
|
||||
|
||||
g_return_val_if_fail(GST_IS_MOZ_VIDEO_BUFFER(self), NULL);
|
||||
g_return_val_if_fail(GST_IS_MOZ_VIDEO_BUFFER(self), nullptr);
|
||||
|
||||
copy = gst_moz_video_buffer_new();
|
||||
|
||||
|
@ -95,7 +95,7 @@ gst_moz_video_buffer_set_data(GstMozVideoBuffer* self, GstMozVideoBufferData* da
|
|||
GstMozVideoBufferData*
|
||||
gst_moz_video_buffer_get_data(const GstMozVideoBuffer* self)
|
||||
{
|
||||
g_return_val_if_fail(GST_IS_MOZ_VIDEO_BUFFER(self), NULL);
|
||||
g_return_val_if_fail(GST_IS_MOZ_VIDEO_BUFFER(self), nullptr);
|
||||
|
||||
return self->data;
|
||||
}
|
||||
|
|
|
@ -199,7 +199,7 @@ void GStreamerReader::PlayBinSourceSetupCb(GstElement* aPlayBin,
|
|||
GstElement *source;
|
||||
GStreamerReader* reader = reinterpret_cast<GStreamerReader*>(aUserData);
|
||||
|
||||
g_object_get(aPlayBin, "source", &source, NULL);
|
||||
g_object_get(aPlayBin, "source", &source, nullptr);
|
||||
reader->PlayBinSourceSetup(GST_APP_SRC(source));
|
||||
}
|
||||
|
||||
|
|
|
@ -16,9 +16,9 @@ EXPORTS += [
|
|||
CPP_SOURCES += [
|
||||
'GStreamerDecoder.cpp',
|
||||
'GStreamerFormatHelper.cpp',
|
||||
'GStreamerReader.cpp',
|
||||
'GStreamerMozVideoBuffer.cpp',
|
||||
'GStreamerLoader.cpp',
|
||||
'GStreamerMozVideoBuffer.cpp',
|
||||
'GStreamerReader.cpp',
|
||||
]
|
||||
|
||||
LIBRARY_NAME = 'gkcongstreamer_s'
|
||||
|
|
|
@ -66,12 +66,11 @@ EXPORTS += [
|
|||
'AudioStream.h',
|
||||
'BufferDecoder.h',
|
||||
'BufferMediaResource.h',
|
||||
'DOMMediaStream.h',
|
||||
'DecoderTraits.h',
|
||||
'DOMMediaStream.h',
|
||||
'EncodedBufferCache.h',
|
||||
'FileBlockCache.h',
|
||||
'Latency.h',
|
||||
'MP3FrameParser.h',
|
||||
'MediaCache.h',
|
||||
'MediaDecoder.h',
|
||||
'MediaDecoderOwner.h',
|
||||
|
@ -82,6 +81,7 @@ EXPORTS += [
|
|||
'MediaResource.h',
|
||||
'MediaSegment.h',
|
||||
'MediaStreamGraph.h',
|
||||
'MP3FrameParser.h',
|
||||
'RtspMediaResource.h',
|
||||
'SharedBuffer.h',
|
||||
'StreamBuffer.h',
|
||||
|
@ -116,12 +116,11 @@ CPP_SOURCES += [
|
|||
'AudioStream.cpp',
|
||||
'AudioStreamTrack.cpp',
|
||||
'BufferDecoder.cpp',
|
||||
'DOMMediaStream.cpp',
|
||||
'DecoderTraits.cpp',
|
||||
'DOMMediaStream.cpp',
|
||||
'EncodedBufferCache.cpp',
|
||||
'FileBlockCache.cpp',
|
||||
'Latency.cpp',
|
||||
'MP3FrameParser.cpp',
|
||||
'MediaCache.cpp',
|
||||
'MediaDecoder.cpp',
|
||||
'MediaDecoderReader.cpp',
|
||||
|
@ -130,6 +129,7 @@ CPP_SOURCES += [
|
|||
'MediaResource.cpp',
|
||||
'MediaStreamGraph.cpp',
|
||||
'MediaStreamTrack.cpp',
|
||||
'MP3FrameParser.cpp',
|
||||
'RtspMediaResource.cpp',
|
||||
'StreamBuffer.cpp',
|
||||
'TextTrack.cpp',
|
||||
|
|
|
@ -309,7 +309,7 @@ bool TheoraState::Init() {
|
|||
}
|
||||
|
||||
mCtx = th_decode_alloc(&mInfo, mSetup);
|
||||
if (mCtx == NULL) {
|
||||
if (mCtx == nullptr) {
|
||||
return mActive = false;
|
||||
}
|
||||
|
||||
|
@ -838,7 +838,7 @@ OpusState::OpusState(ogg_page* aBosPage) :
|
|||
mChannelMapping(0),
|
||||
mStreams(0),
|
||||
mCoupledStreams(0),
|
||||
mDecoder(NULL),
|
||||
mDecoder(nullptr),
|
||||
mSkip(0),
|
||||
mPrevPacketGranulepos(0),
|
||||
mPrevPageGranulepos(0)
|
||||
|
@ -852,7 +852,7 @@ OpusState::~OpusState() {
|
|||
|
||||
if (mDecoder) {
|
||||
opus_multistream_decoder_destroy(mDecoder);
|
||||
mDecoder = NULL;
|
||||
mDecoder = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -893,7 +893,7 @@ bool OpusState::Init(void)
|
|||
|
||||
int error;
|
||||
|
||||
NS_ASSERTION(mDecoder == NULL, "leaking OpusDecoder");
|
||||
NS_ASSERTION(mDecoder == nullptr, "leaking OpusDecoder");
|
||||
|
||||
mDecoder = opus_multistream_decoder_create(mRate,
|
||||
mChannels,
|
||||
|
|
|
@ -313,7 +313,7 @@ nsresult OggReader::ReadMetadata(MediaInfo* aInfo,
|
|||
mInfo.mAudio.mChannels = mVorbisState->mInfo.channels > 2 ? 2 : mVorbisState->mInfo.channels;
|
||||
// Copy Vorbis info data for time computations on other threads.
|
||||
memcpy(&mVorbisInfo, &mVorbisState->mInfo, sizeof(mVorbisInfo));
|
||||
mVorbisInfo.codec_setup = NULL;
|
||||
mVorbisInfo.codec_setup = nullptr;
|
||||
mVorbisSerial = mVorbisState->mSerial;
|
||||
*aTags = mVorbisState->GetTags();
|
||||
} else {
|
||||
|
|
|
@ -35,7 +35,7 @@ sp<OMXCodecProxy> OMXCodecProxy::Create(
|
|||
|
||||
const char *mime;
|
||||
if (!meta->findCString(kKeyMIMEType, &mime)) {
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!strncasecmp(mime, "video/", 6)) {
|
||||
|
@ -57,7 +57,7 @@ OMXCodecProxy::OMXCodecProxy(
|
|||
mSrcMeta(meta),
|
||||
mIsEncoder(createEncoder),
|
||||
mSource(source),
|
||||
mComponentName(NULL),
|
||||
mComponentName(nullptr),
|
||||
mFlags(flags),
|
||||
mNativeWindow(nativeWindow),
|
||||
mState(MediaResourceManagerClient::CLIENT_STATE_WAIT_FOR_RESOURCE)
|
||||
|
@ -71,7 +71,7 @@ OMXCodecProxy::~OMXCodecProxy()
|
|||
if (mOMXCodec.get()) {
|
||||
wp<MediaSource> tmp = mOMXCodec;
|
||||
mOMXCodec.clear();
|
||||
while (tmp.promote() != NULL) {
|
||||
while (tmp.promote() != nullptr) {
|
||||
// this value come from stagefrigh's AwesomePlayer.
|
||||
usleep(1000);
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ OMXCodecProxy::~OMXCodecProxy()
|
|||
|
||||
mSource.clear();
|
||||
free(mComponentName);
|
||||
mComponentName = NULL;
|
||||
mComponentName = nullptr;
|
||||
}
|
||||
|
||||
MediaResourceManagerClient::State OMXCodecProxy::getState()
|
||||
|
@ -102,9 +102,9 @@ void OMXCodecProxy::setEventListener(const wp<OMXCodecProxy::EventListener>& lis
|
|||
|
||||
void OMXCodecProxy::notifyStatusChangedLocked()
|
||||
{
|
||||
if (mEventListener != NULL) {
|
||||
if (mEventListener != nullptr) {
|
||||
sp<EventListener> listener = mEventListener.promote();
|
||||
if (listener != NULL) {
|
||||
if (listener != nullptr) {
|
||||
listener->statusChanged();
|
||||
}
|
||||
}
|
||||
|
@ -122,7 +122,7 @@ void OMXCodecProxy::requestResource()
|
|||
|
||||
mManagerService = mClient->getMediaResourceManagerService();
|
||||
if (!mManagerService.get()) {
|
||||
mClient = NULL;
|
||||
mClient = nullptr;
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -159,7 +159,7 @@ void OMXCodecProxy::statusChanged(int event)
|
|||
if (!strncasecmp(mime, "video/", 6)) {
|
||||
sp<MediaSource> codec;
|
||||
mOMXCodec = OMXCodec::Create(mOMX, mSrcMeta, mIsEncoder, mSource, mComponentName, mFlags, mNativeWindow);
|
||||
if (mOMXCodec == NULL) {
|
||||
if (mOMXCodec == nullptr) {
|
||||
mState = MediaResourceManagerClient::CLIENT_STATE_SHUTDOWN;
|
||||
notifyStatusChangedLocked();
|
||||
return;
|
||||
|
@ -204,7 +204,7 @@ status_t OMXCodecProxy::start(MetaData *params)
|
|||
if (mState != MediaResourceManagerClient::CLIENT_STATE_RESOURCE_ASSIGNED) {
|
||||
return NO_INIT;
|
||||
}
|
||||
CHECK(mOMXCodec.get() != NULL);
|
||||
CHECK(mOMXCodec.get() != nullptr);
|
||||
return mOMXCodec->start();
|
||||
}
|
||||
|
||||
|
@ -215,7 +215,7 @@ status_t OMXCodecProxy::stop()
|
|||
if (mState != MediaResourceManagerClient::CLIENT_STATE_RESOURCE_ASSIGNED) {
|
||||
return NO_INIT;
|
||||
}
|
||||
CHECK(mOMXCodec.get() != NULL);
|
||||
CHECK(mOMXCodec.get() != nullptr);
|
||||
return mOMXCodec->stop();
|
||||
}
|
||||
|
||||
|
@ -227,7 +227,7 @@ sp<MetaData> OMXCodecProxy::getFormat()
|
|||
sp<MetaData> meta = new MetaData;
|
||||
return meta;
|
||||
}
|
||||
CHECK(mOMXCodec.get() != NULL);
|
||||
CHECK(mOMXCodec.get() != nullptr);
|
||||
return mOMXCodec->getFormat();
|
||||
}
|
||||
|
||||
|
@ -238,7 +238,7 @@ status_t OMXCodecProxy::read(MediaBuffer **buffer, const ReadOptions *options)
|
|||
if (mState != MediaResourceManagerClient::CLIENT_STATE_RESOURCE_ASSIGNED) {
|
||||
return NO_INIT;
|
||||
}
|
||||
CHECK(mOMXCodec.get() != NULL);
|
||||
CHECK(mOMXCodec.get() != nullptr);
|
||||
return mOMXCodec->read(buffer, options);
|
||||
}
|
||||
|
||||
|
@ -249,7 +249,7 @@ status_t OMXCodecProxy::pause()
|
|||
if (mState != MediaResourceManagerClient::CLIENT_STATE_RESOURCE_ASSIGNED) {
|
||||
return NO_INIT;
|
||||
}
|
||||
CHECK(mOMXCodec.get() != NULL);
|
||||
CHECK(mOMXCodec.get() != nullptr);
|
||||
return mOMXCodec->pause();
|
||||
}
|
||||
|
||||
|
|
|
@ -32,9 +32,9 @@ public:
|
|||
const sp<IOMX> &omx,
|
||||
const sp<MetaData> &meta, bool createEncoder,
|
||||
const sp<MediaSource> &source,
|
||||
const char *matchComponentName = NULL,
|
||||
const char *matchComponentName = nullptr,
|
||||
uint32_t flags = 0,
|
||||
const sp<ANativeWindow> &nativeWindow = NULL);
|
||||
const sp<ANativeWindow> &nativeWindow = nullptr);
|
||||
|
||||
MediaResourceManagerClient::State getState();
|
||||
|
||||
|
@ -47,13 +47,13 @@ public:
|
|||
virtual void statusChanged(int event);
|
||||
|
||||
// MediaSource
|
||||
virtual status_t start(MetaData *params = NULL);
|
||||
virtual status_t start(MetaData *params = nullptr);
|
||||
virtual status_t stop();
|
||||
|
||||
virtual sp<MetaData> getFormat();
|
||||
|
||||
virtual status_t read(
|
||||
MediaBuffer **buffer, const ReadOptions *options = NULL);
|
||||
MediaBuffer **buffer, const ReadOptions *options = nullptr);
|
||||
|
||||
virtual status_t pause();
|
||||
|
||||
|
|
|
@ -14,8 +14,8 @@ EXPORTS += [
|
|||
CPP_SOURCES += [
|
||||
'MediaOmxDecoder.cpp',
|
||||
'MediaOmxReader.cpp',
|
||||
'OmxDecoder.cpp',
|
||||
'OMXCodecProxy.cpp',
|
||||
'OmxDecoder.cpp',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_RTSP']:
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
using namespace MPAPI;
|
||||
|
||||
Decoder::Decoder() :
|
||||
mResource(NULL), mPrivate(NULL)
|
||||
mResource(nullptr), mPrivate(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -199,7 +199,7 @@ MediaPluginHost::MediaPluginHost() {
|
|||
ALOG("Loading OMX Plugin: %s", name ? name : "nullptr");
|
||||
if (name) {
|
||||
char *path = PR_GetLibraryFilePathname("libxul.so", (PRFuncPtr) GetOmxLibraryName);
|
||||
PRLibrary *lib = NULL;
|
||||
PRLibrary *lib = nullptr;
|
||||
if (path) {
|
||||
nsAutoCString libpath(path);
|
||||
PR_Free(path);
|
||||
|
|
|
@ -22,12 +22,12 @@ MediaPluginReader::MediaPluginReader(AbstractMediaDecoder *aDecoder,
|
|||
const nsACString& aContentType) :
|
||||
MediaDecoderReader(aDecoder),
|
||||
mType(aContentType),
|
||||
mPlugin(NULL),
|
||||
mPlugin(nullptr),
|
||||
mHasAudio(false),
|
||||
mHasVideo(false),
|
||||
mVideoSeekTimeUs(-1),
|
||||
mAudioSeekTimeUs(-1),
|
||||
mLastVideoFrame(NULL)
|
||||
mLastVideoFrame(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -105,11 +105,11 @@ nsresult MediaPluginReader::ResetDecode()
|
|||
{
|
||||
if (mLastVideoFrame) {
|
||||
delete mLastVideoFrame;
|
||||
mLastVideoFrame = NULL;
|
||||
mLastVideoFrame = nullptr;
|
||||
}
|
||||
if (mPlugin) {
|
||||
GetMediaPluginHost()->DestroyDecoder(mPlugin);
|
||||
mPlugin = NULL;
|
||||
mPlugin = nullptr;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
@ -126,7 +126,7 @@ bool MediaPluginReader::DecodeVideoFrame(bool &aKeyframeSkip,
|
|||
// Throw away the currently buffered frame if we are seeking.
|
||||
if (mLastVideoFrame && mVideoSeekTimeUs != -1) {
|
||||
delete mLastVideoFrame;
|
||||
mLastVideoFrame = NULL;
|
||||
mLastVideoFrame = nullptr;
|
||||
}
|
||||
|
||||
ImageBufferCallback bufferCallback(mDecoder->GetImageContainer());
|
||||
|
@ -146,7 +146,7 @@ bool MediaPluginReader::DecodeVideoFrame(bool &aKeyframeSkip,
|
|||
? durationUs
|
||||
: mLastVideoFrame->mTime;
|
||||
mVideoQueue.Push(mLastVideoFrame);
|
||||
mLastVideoFrame = NULL;
|
||||
mLastVideoFrame = nullptr;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -266,7 +266,7 @@ bool MediaPluginReader::DecodeVideoFrame(bool &aKeyframeSkip,
|
|||
// in which case it wouldn't be displayed anyway.
|
||||
if (mLastVideoFrame->mEndTime < aTimeThreshold) {
|
||||
delete mLastVideoFrame;
|
||||
mLastVideoFrame = NULL;
|
||||
mLastVideoFrame = nullptr;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -225,7 +225,7 @@ ServeResourceEvent::Run() {
|
|||
NS_NAMED_LITERAL_CSTRING(byteRange, "Range: bytes=");
|
||||
const char* s = strstr(line.get(), byteRange.get());
|
||||
if (s) {
|
||||
start = strtoll(s+byteRange.Length(), NULL, 10);
|
||||
start = strtoll(s+byteRange.Length(), nullptr, 10);
|
||||
|
||||
// Clamp 'start' to be between 0 and the resource length.
|
||||
start = std::max(0ll, std::min(resource->GetLength(), start));
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
MODULE = 'content'
|
||||
|
||||
EXPORTS += [
|
||||
'MPAPI.h',
|
||||
'MediaPluginDecoder.h',
|
||||
'MediaPluginHost.h',
|
||||
'MediaPluginReader.h',
|
||||
'MediaResourceServer.h',
|
||||
'MPAPI.h',
|
||||
]
|
||||
|
||||
CPP_SOURCES += [
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<script>
|
||||
// 1024 > 89478.5 * 48000 - (1 << 32)
|
||||
var context = new window.OfflineAudioContext(1, 1024, 48000);
|
||||
context.oncomplete = function(e) {
|
||||
document.documentElement.removeAttribute("class");
|
||||
};
|
||||
var buffer = context.createBuffer(1, 2048, context.sampleRate);
|
||||
var source = context.createBufferSource();
|
||||
source.buffer = buffer;
|
||||
source.start(89478.5); // 89478.5 is a little greater than 2^32 / 48000.
|
||||
context.startRendering();
|
||||
</script>
|
|
@ -0,0 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<script>
|
||||
var context = new window.OfflineAudioContext(1, 2048, 48000);
|
||||
// 1024 > 89478.5 * 48000 - (1 << 32)
|
||||
var buffer = context.createBuffer(1, 1024, context.sampleRate);
|
||||
var source = context.createBufferSource();
|
||||
source.buffer = buffer;
|
||||
source.onended = function(e) {
|
||||
document.documentElement.removeAttribute("class");
|
||||
};
|
||||
source.start(0);
|
||||
source.stop(89478.5); // 89478.5 is a little greater than 2^32 / 48000.
|
||||
context.startRendering();
|
||||
</script>
|
|
@ -57,6 +57,9 @@ load 907986-3.html
|
|||
load 907986-4.html
|
||||
load 910171-1.html
|
||||
load 920987.html
|
||||
load 925619-1.html
|
||||
load 925619-2.html
|
||||
load offline-buffer-source-ended-1.html
|
||||
skip-if(B2G) load oscillator-ended-1.html # intermittent B2G timeouts, bug 920338
|
||||
skip-if(B2G) load oscillator-ended-2.html # intermittent B2G timeouts, bug 920338
|
||||
test-pref(media.mediasource.enabled,true) load 926665.html
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<script>
|
||||
// Currently this test fails unless an extra block is processed after the
|
||||
// BufferSource finishes. 12033 ≡ 1 (mod 128), but the test should pass even
|
||||
// when only 12001 samples are processed.
|
||||
var context = new window.OfflineAudioContext(1, 12033, 12000);
|
||||
|
||||
var source = context.createBufferSource();
|
||||
source.buffer = context.createBuffer(1, 12000, context.sampleRate);
|
||||
source.onended = function(e) {
|
||||
document.documentElement.removeAttribute("class");
|
||||
}
|
||||
source.connect(context.destination);
|
||||
source.start(0);
|
||||
|
||||
context.startRendering();
|
||||
</script>
|
|
@ -246,8 +246,10 @@ public:
|
|||
TrackTicks* aCurrentPosition,
|
||||
TrackTicks aMaxPos)
|
||||
{
|
||||
uint32_t numFrames = std::min(WEBAUDIO_BLOCK_SIZE - *aOffsetWithinBlock,
|
||||
uint32_t(aMaxPos - *aCurrentPosition));
|
||||
MOZ_ASSERT(*aCurrentPosition < aMaxPos);
|
||||
uint32_t numFrames =
|
||||
std::min<TrackTicks>(WEBAUDIO_BLOCK_SIZE - *aOffsetWithinBlock,
|
||||
aMaxPos - *aCurrentPosition);
|
||||
if (numFrames == WEBAUDIO_BLOCK_SIZE) {
|
||||
aOutput->SetNull(numFrames);
|
||||
} else {
|
||||
|
@ -277,9 +279,11 @@ public:
|
|||
uint32_t aBufferOffset,
|
||||
uint32_t aBufferMax)
|
||||
{
|
||||
uint32_t numFrames = std::min(std::min(WEBAUDIO_BLOCK_SIZE - *aOffsetWithinBlock,
|
||||
aBufferMax - aBufferOffset),
|
||||
uint32_t(mStop - *aCurrentPosition));
|
||||
MOZ_ASSERT(*aCurrentPosition < mStop);
|
||||
uint32_t numFrames =
|
||||
std::min<TrackTicks>(std::min(WEBAUDIO_BLOCK_SIZE - *aOffsetWithinBlock,
|
||||
aBufferMax - aBufferOffset),
|
||||
mStop - *aCurrentPosition);
|
||||
if (numFrames == WEBAUDIO_BLOCK_SIZE && !ShouldResample(aStream->SampleRate())) {
|
||||
BorrowFromInputBuffer(aOutput, aChannels, aBufferOffset);
|
||||
*aOffsetWithinBlock += numFrames;
|
||||
|
@ -656,9 +660,9 @@ AudioBufferSourceNode::SendLoopParametersToStream()
|
|||
float rate = mBuffer->SampleRate();
|
||||
double length = (double(mBuffer->Length()) / mBuffer->SampleRate());
|
||||
double actualLoopStart, actualLoopEnd;
|
||||
if (((mLoopStart != 0.0) || (mLoopEnd != 0.0)) &&
|
||||
mLoopStart >= 0.0 && mLoopEnd > 0.0 &&
|
||||
if (mLoopStart >= 0.0 && mLoopEnd > 0.0 &&
|
||||
mLoopStart < mLoopEnd) {
|
||||
MOZ_ASSERT(mLoopStart != 0.0 || mLoopEnd != 0.0);
|
||||
actualLoopStart = (mLoopStart > length) ? 0.0 : mLoopStart;
|
||||
actualLoopEnd = std::min(mLoopEnd, length);
|
||||
} else {
|
||||
|
|
|
@ -198,7 +198,7 @@ void HRTFDatabaseLoader::shutdown()
|
|||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
if (s_loaderMap) {
|
||||
// Set s_loaderMap to NULL so that the hashtable is not modified on
|
||||
// Set s_loaderMap to nullptr so that the hashtable is not modified on
|
||||
// reference release during enumeration.
|
||||
nsTHashtable<LoaderByRateEntry>* loaderMap = s_loaderMap;
|
||||
s_loaderMap = nullptr;
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
#include "MediaResource.h"
|
||||
#include "WebMReader.h"
|
||||
#include "WebMBufferedParser.h"
|
||||
#include "VideoUtils.h"
|
||||
#include "mozilla/dom/TimeRanges.h"
|
||||
#include "VorbisUtils.h"
|
||||
|
||||
|
@ -200,7 +199,7 @@ WebMReader::~WebMReader()
|
|||
|
||||
nsresult WebMReader::Init(MediaDecoderReader* aCloneDonor)
|
||||
{
|
||||
if (vpx_codec_dec_init(&mVP8, vpx_codec_vp8_dx(), NULL, 0)) {
|
||||
if (vpx_codec_dec_init(&mVP8, vpx_codec_vp8_dx(), nullptr, 0)) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
|
@ -853,7 +852,7 @@ bool WebMReader::DecodeVideoFrame(bool &aKeyframeSkip,
|
|||
aKeyframeSkip = false;
|
||||
}
|
||||
|
||||
if (vpx_codec_decode(&mVP8, data, length, NULL, 0)) {
|
||||
if (vpx_codec_decode(&mVP8, data, length, nullptr, 0)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -865,7 +864,7 @@ bool WebMReader::DecodeVideoFrame(bool &aKeyframeSkip,
|
|||
continue;
|
||||
}
|
||||
|
||||
vpx_codec_iter_t iter = NULL;
|
||||
vpx_codec_iter_t iter = nullptr;
|
||||
vpx_image_t *img;
|
||||
|
||||
while ((img = vpx_codec_get_frame(&mVP8, &iter))) {
|
||||
|
|
|
@ -221,13 +221,13 @@ protected:
|
|||
AUDIO = 1
|
||||
};
|
||||
|
||||
// Read a packet from the nestegg file. Returns NULL if all packets for
|
||||
// Read a packet from the nestegg file. Returns nullptr if all packets for
|
||||
// the particular track have been read. Pass VIDEO or AUDIO to indicate the
|
||||
// type of the packet we want to read.
|
||||
#ifdef MOZ_DASH
|
||||
nsReturnRef<NesteggPacketHolder> NextPacketInternal(TrackType aTrackType);
|
||||
|
||||
// Read a packet from the nestegg file. Returns NULL if all packets for
|
||||
// Read a packet from the nestegg file. Returns nullptr if all packets for
|
||||
// the particular track have been read. Pass VIDEO or AUDIO to indicate the
|
||||
// type of the packet we want to read. If the reader reaches a switch access
|
||||
// point, this function will get a packet from |mNextReader|.
|
||||
|
|
|
@ -145,7 +145,7 @@ MediaEngineDefaultVideoSource::Stop(SourceMediaStream *aSource, TrackID aID)
|
|||
}
|
||||
|
||||
mTimer->Cancel();
|
||||
mTimer = NULL;
|
||||
mTimer = nullptr;
|
||||
|
||||
aSource->EndTrack(aID);
|
||||
aSource->Finish();
|
||||
|
@ -243,7 +243,7 @@ MediaEngineDefaultVideoSource::NotifyPull(MediaStreamGraph* aGraph,
|
|||
TrackTicks delta = target - aLastEndTime;
|
||||
|
||||
if (delta > 0) {
|
||||
// NULL images are allowed
|
||||
// nullptr images are allowed
|
||||
if (image) {
|
||||
segment.AppendFrame(image.forget(), delta,
|
||||
gfxIntSize(mOpts.mWidth, mOpts.mHeight));
|
||||
|
@ -398,7 +398,7 @@ MediaEngineDefaultAudioSource::Stop(SourceMediaStream *aSource, TrackID aID)
|
|||
}
|
||||
|
||||
mTimer->Cancel();
|
||||
mTimer = NULL;
|
||||
mTimer = nullptr;
|
||||
|
||||
aSource->EndTrack(aID);
|
||||
aSource->Finish();
|
||||
|
|
|
@ -49,7 +49,7 @@ MediaEngineTabVideoSource::StopRunnable::Run()
|
|||
|
||||
if (mVideoSource->mTimer) {
|
||||
mVideoSource->mTimer->Cancel();
|
||||
mVideoSource->mTimer = NULL;
|
||||
mVideoSource->mTimer = nullptr;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -152,7 +152,7 @@ NotifyPull(MediaStreamGraph*, SourceMediaStream* aSource, mozilla::TrackID aID,
|
|||
TrackTicks target = TimeToTicksRoundUp(USECS_PER_S, aDesiredTime);
|
||||
TrackTicks delta = target - aLastEndTime;
|
||||
if (delta > 0) {
|
||||
// NULL images are allowed
|
||||
// nullptr images are allowed
|
||||
if (image) {
|
||||
gfxIntSize size = image->GetSize();
|
||||
segment.AppendFrame(image.forget(), delta, size);
|
||||
|
|
|
@ -238,8 +238,8 @@ MediaEngineWebRTC::EnumerateVideoDevices(nsTArray<nsRefPtr<MediaEngineVideoSourc
|
|||
void
|
||||
MediaEngineWebRTC::EnumerateAudioDevices(nsTArray<nsRefPtr<MediaEngineAudioSource> >* aASources)
|
||||
{
|
||||
webrtc::VoEBase* ptrVoEBase = NULL;
|
||||
webrtc::VoEHardware* ptrVoEHw = NULL;
|
||||
webrtc::VoEBase* ptrVoEBase = nullptr;
|
||||
webrtc::VoEHardware* ptrVoEHw = nullptr;
|
||||
// We spawn threads to handle gUM runnables, so we must protect the member vars
|
||||
MutexAutoLock lock(mMutex);
|
||||
|
||||
|
@ -250,7 +250,7 @@ MediaEngineWebRTC::EnumerateAudioDevices(nsTArray<nsRefPtr<MediaEngineAudioSourc
|
|||
JavaVM *jvm = mozilla::AndroidBridge::Bridge()->GetVM();
|
||||
|
||||
JNIEnv *env;
|
||||
jvm->AttachCurrentThread(&env, NULL);
|
||||
jvm->AttachCurrentThread(&env, nullptr);
|
||||
|
||||
if (webrtc::VoiceEngine::SetAndroidObjects(jvm, (void*)context) != 0) {
|
||||
LOG(("VoiceEngine:SetAndroidObjects Failed"));
|
||||
|
@ -357,8 +357,8 @@ MediaEngineWebRTC::Shutdown()
|
|||
webrtc::VoiceEngine::Delete(mVoiceEngine);
|
||||
}
|
||||
|
||||
mVideoEngine = NULL;
|
||||
mVoiceEngine = NULL;
|
||||
mVideoEngine = nullptr;
|
||||
mVoiceEngine = nullptr;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -129,7 +129,7 @@ public:
|
|||
, mHeight(0)
|
||||
, mInitDone(false)
|
||||
, mInSnapshotMode(false)
|
||||
, mSnapshotPath(NULL) {
|
||||
, mSnapshotPath(nullptr) {
|
||||
MOZ_ASSERT(aVideoEnginePtr);
|
||||
mState = kReleased;
|
||||
Init();
|
||||
|
|
|
@ -140,7 +140,7 @@ MediaEngineWebRTCVideoSource::NotifyPull(MediaStreamGraph* aGraph,
|
|||
// Don't append if we've already provided a frame that supposedly goes past the current aDesiredTime
|
||||
// Doing so means a negative delta and thus messes up handling of the graph
|
||||
if (delta > 0) {
|
||||
// NULL images are allowed
|
||||
// nullptr images are allowed
|
||||
if (image) {
|
||||
segment.AppendFrame(image.forget(), delta, gfxIntSize(mWidth, mHeight));
|
||||
} else {
|
||||
|
@ -500,7 +500,7 @@ MediaEngineWebRTCVideoSource::Snapshot(uint32_t aDuration, nsIDOMFile** aFile)
|
|||
NS_ConvertUTF16toUTF8 path(*mSnapshotPath);
|
||||
if (vieFile->GetCaptureDeviceSnapshot(mCaptureIndex, path.get()) < 0) {
|
||||
delete mSnapshotPath;
|
||||
mSnapshotPath = NULL;
|
||||
mSnapshotPath = nullptr;
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
|
@ -512,7 +512,7 @@ MediaEngineWebRTCVideoSource::Snapshot(uint32_t aDuration, nsIDOMFile** aFile)
|
|||
nsresult rv = NS_NewLocalFile(*mSnapshotPath, false, getter_AddRefs(file));
|
||||
|
||||
delete mSnapshotPath;
|
||||
mSnapshotPath = NULL;
|
||||
mSnapshotPath = nullptr;
|
||||
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
|
@ -540,12 +540,12 @@ MediaEngineWebRTCVideoSource::Init()
|
|||
(void) mMinFps;
|
||||
|
||||
LOG((__FUNCTION__));
|
||||
if (mVideoEngine == NULL) {
|
||||
if (mVideoEngine == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
mViEBase = webrtc::ViEBase::GetInterface(mVideoEngine);
|
||||
if (mViEBase == NULL) {
|
||||
if (mViEBase == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -553,7 +553,7 @@ MediaEngineWebRTCVideoSource::Init()
|
|||
mViECapture = webrtc::ViECapture::GetInterface(mVideoEngine);
|
||||
mViERender = webrtc::ViERender::GetInterface(mVideoEngine);
|
||||
|
||||
if (mViECapture == NULL || mViERender == NULL) {
|
||||
if (mViECapture == nullptr || mViERender == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -18,8 +18,8 @@ if CONFIG['MOZ_WEBRTC']:
|
|||
CPP_SOURCES += [
|
||||
'MediaEngineTabVideoSource.cpp',
|
||||
'MediaEngineWebRTC.cpp',
|
||||
'MediaEngineWebRTCVideo.cpp',
|
||||
'MediaEngineWebRTCAudio.cpp',
|
||||
'MediaEngineWebRTCVideo.cpp',
|
||||
]
|
||||
XPIDL_SOURCES += [
|
||||
'nsITabSource.idl'
|
||||
|
|
|
@ -477,7 +477,7 @@ SpeechRecognition::NotifyFinalResult(SpeechEvent* aEvent)
|
|||
srEvent->InitSpeechRecognitionEvent(NS_LITERAL_STRING("result"),
|
||||
true, false, 0, ilist,
|
||||
NS_LITERAL_STRING("NOT_IMPLEMENTED"),
|
||||
NULL);
|
||||
nullptr);
|
||||
domEvent->SetTrusted(true);
|
||||
|
||||
bool defaultActionEnabled;
|
||||
|
|
|
@ -27,6 +27,9 @@ EXPORTS.mozilla.dom += [
|
|||
|
||||
CPP_SOURCES += [
|
||||
'EnableWebSpeechRecognitionCheck.cpp',
|
||||
'endpointer.cc',
|
||||
'energy_endpointer.cc',
|
||||
'energy_endpointer_params.cc',
|
||||
'SpeechGrammar.cpp',
|
||||
'SpeechGrammarList.cpp',
|
||||
'SpeechRecognition.cpp',
|
||||
|
@ -34,9 +37,6 @@ CPP_SOURCES += [
|
|||
'SpeechRecognitionResult.cpp',
|
||||
'SpeechRecognitionResultList.cpp',
|
||||
'SpeechStreamListener.cpp',
|
||||
'endpointer.cc',
|
||||
'energy_endpointer.cc',
|
||||
'energy_endpointer_params.cc',
|
||||
'test/FakeSpeechRecognitionService.cpp',
|
||||
]
|
||||
|
||||
|
|
|
@ -18,24 +18,24 @@ if CONFIG['MOZ_WEBSPEECH']:
|
|||
|
||||
EXPORTS.mozilla.dom += [
|
||||
'EnableSpeechSynthesisCheck.h',
|
||||
'SpeechSynthesis.h',
|
||||
'SpeechSynthesisUtterance.h',
|
||||
'SpeechSynthesisVoice.h',
|
||||
'ipc/SpeechSynthesisChild.h',
|
||||
'ipc/SpeechSynthesisParent.h',
|
||||
'nsSpeechTask.h',
|
||||
'nsSynthVoiceRegistry.h',
|
||||
'SpeechSynthesis.h',
|
||||
'SpeechSynthesisUtterance.h',
|
||||
'SpeechSynthesisVoice.h',
|
||||
]
|
||||
|
||||
CPP_SOURCES += [
|
||||
'EnableSpeechSynthesisCheck.cpp',
|
||||
'SpeechSynthesis.cpp',
|
||||
'ipc/SpeechSynthesisChild.cpp',
|
||||
'ipc/SpeechSynthesisParent.cpp',
|
||||
'SpeechSynthesisUtterance.cpp',
|
||||
'SpeechSynthesisVoice.cpp',
|
||||
'nsSpeechTask.cpp',
|
||||
'nsSynthVoiceRegistry.cpp',
|
||||
'SpeechSynthesis.cpp',
|
||||
'SpeechSynthesisUtterance.cpp',
|
||||
'SpeechSynthesisVoice.cpp',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_SYNTH_PICO']:
|
||||
|
|
|
@ -167,7 +167,7 @@ nsSpeechTask::SendAudio(const JS::Value& aData, const JS::Value& aLandmarks,
|
|||
JS::Rooted<JSObject*> darray(aCx, &aData.toObject());
|
||||
JSAutoCompartment ac(aCx, darray);
|
||||
|
||||
JS::Rooted<JSObject*> tsrc(aCx, NULL);
|
||||
JS::Rooted<JSObject*> tsrc(aCx, nullptr);
|
||||
|
||||
// Allow either Int16Array or plain JS Array
|
||||
if (JS_IsInt16Array(darray)) {
|
||||
|
|
|
@ -24,18 +24,18 @@ NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsPicoService,
|
|||
NS_DEFINE_NAMED_CID(PICOSERVICE_CID);
|
||||
|
||||
static const mozilla::Module::CIDEntry kCIDs[] = {
|
||||
{ &kPICOSERVICE_CID, true, NULL, nsPicoServiceConstructor },
|
||||
{ NULL }
|
||||
{ &kPICOSERVICE_CID, true, nullptr, nsPicoServiceConstructor },
|
||||
{ nullptr }
|
||||
};
|
||||
|
||||
static const mozilla::Module::ContractIDEntry kContracts[] = {
|
||||
{ PICOSERVICE_CONTRACTID, &kPICOSERVICE_CID },
|
||||
{ NULL }
|
||||
{ nullptr }
|
||||
};
|
||||
|
||||
static const mozilla::Module::CategoryEntry kCategories[] = {
|
||||
{ "profile-after-change", "Pico Speech Synth", PICOSERVICE_CONTRACTID },
|
||||
{ NULL }
|
||||
{ nullptr }
|
||||
};
|
||||
|
||||
static void
|
||||
|
@ -49,8 +49,8 @@ static const mozilla::Module kModule = {
|
|||
kCIDs,
|
||||
kContracts,
|
||||
kCategories,
|
||||
NULL,
|
||||
NULL,
|
||||
nullptr,
|
||||
nullptr,
|
||||
UnloadPicoModule
|
||||
};
|
||||
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
MODULE = 'synthpico'
|
||||
|
||||
CPP_SOURCES += [
|
||||
'PicoModule.cpp',
|
||||
'nsPicoService.cpp'
|
||||
'nsPicoService.cpp',
|
||||
'PicoModule.cpp'
|
||||
]
|
||||
|
||||
LIBRARY_NAME = 'synthpico'
|
||||
|
|
|
@ -106,7 +106,7 @@ D3D9DXVA2Manager::Init()
|
|||
D3DCREATE_MULTITHREADED |
|
||||
D3DCREATE_MIXED_VERTEXPROCESSING,
|
||||
¶ms,
|
||||
NULL,
|
||||
nullptr,
|
||||
getter_AddRefs(device));
|
||||
NS_ENSURE_TRUE(SUCCEEDED(hr), hr);
|
||||
|
||||
|
|
|
@ -212,7 +212,7 @@ WMFByteStream::QueryInterface(REFIID aIId, void **aInterface)
|
|||
return DoGetInterface(static_cast<IMFAttributes*>(this), aInterface);
|
||||
}
|
||||
|
||||
*aInterface = NULL;
|
||||
*aInterface = nullptr;
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
|
@ -258,7 +258,7 @@ ReadRequest::QueryInterface(REFIID aIId, void **aInterface)
|
|||
return DoGetInterface(static_cast<IUnknown*>(this), aInterface);
|
||||
}
|
||||
|
||||
*aInterface = NULL;
|
||||
*aInterface = nullptr;
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
|
|
|
@ -239,7 +239,7 @@ ConfigureSourceReaderStream(IMFSourceReader *aReader,
|
|||
|
||||
// Set the uncompressed format. This can fail if the decoder can't produce
|
||||
// that type.
|
||||
return aReader->SetCurrentMediaType(aStreamIndex, NULL, type);
|
||||
return aReader->SetCurrentMediaType(aStreamIndex, nullptr, type);
|
||||
}
|
||||
|
||||
// Returns the duration of the resource, in microseconds.
|
||||
|
@ -333,7 +333,7 @@ GetPictureRegion(IMFMediaType* aMediaType, nsIntRect& aOutPictureRegion)
|
|||
hr = aMediaType->GetBlob(MF_MT_PAN_SCAN_APERTURE,
|
||||
(UINT8*)&videoArea,
|
||||
sizeof(MFVideoArea),
|
||||
NULL);
|
||||
nullptr);
|
||||
}
|
||||
|
||||
// If we're not in pan-and-scan mode, or the pan-and-scan region is not set,
|
||||
|
@ -342,7 +342,7 @@ GetPictureRegion(IMFMediaType* aMediaType, nsIntRect& aOutPictureRegion)
|
|||
hr = aMediaType->GetBlob(MF_MT_MINIMUM_DISPLAY_APERTURE,
|
||||
(UINT8*)&videoArea,
|
||||
sizeof(MFVideoArea),
|
||||
NULL);
|
||||
nullptr);
|
||||
}
|
||||
|
||||
if (hr == MF_E_ATTRIBUTENOTFOUND) {
|
||||
|
@ -351,7 +351,7 @@ GetPictureRegion(IMFMediaType* aMediaType, nsIntRect& aOutPictureRegion)
|
|||
hr = aMediaType->GetBlob(MF_MT_GEOMETRIC_APERTURE,
|
||||
(UINT8*)&videoArea,
|
||||
sizeof(MFVideoArea),
|
||||
NULL);
|
||||
nullptr);
|
||||
}
|
||||
|
||||
if (SUCCEEDED(hr)) {
|
||||
|
@ -796,7 +796,7 @@ WMFReader::CreateBasicVideoFrame(IMFSample* aSample,
|
|||
hr = twoDBuffer->Lock2D(&data, &stride);
|
||||
NS_ENSURE_TRUE(SUCCEEDED(hr), hr);
|
||||
} else {
|
||||
hr = buffer->Lock(&data, NULL, NULL);
|
||||
hr = buffer->Lock(&data, nullptr, nullptr);
|
||||
NS_ENSURE_TRUE(SUCCEEDED(hr), hr);
|
||||
stride = mVideoStride;
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ WMFSourceReaderCallback::QueryInterface(REFIID aIId, void **aInterface)
|
|||
return DoGetInterface(static_cast<WMFSourceReaderCallback*>(this), aInterface);
|
||||
}
|
||||
|
||||
*aInterface = NULL;
|
||||
*aInterface = nullptr;
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
|
@ -58,7 +58,7 @@ WMFSourceReaderCallback::NotifyReadComplete(HRESULT aReadStatus,
|
|||
LONGLONG aTimestamp,
|
||||
IMFSample *aSample)
|
||||
{
|
||||
// Note: aSample can be NULL on success if more data is required!
|
||||
// Note: aSample can be nullptr on success if more data is required!
|
||||
ReentrantMonitorAutoEnter mon(mMonitor);
|
||||
|
||||
if (mSample) {
|
||||
|
|
|
@ -236,7 +236,7 @@ DisableBlockedDecoders(IMFPluginControl* aPluginControl,
|
|||
HRESULT hr = S_OK;
|
||||
|
||||
UINT32 numMFTs = 0;
|
||||
IMFActivate **ppActivate = NULL;
|
||||
IMFActivate **ppActivate = nullptr;
|
||||
hr = wmf::MFTEnumEx(aCategory,
|
||||
MFT_ENUM_FLAG_ALL,
|
||||
nullptr, // Input type, nullptr -> match all.
|
||||
|
@ -295,11 +295,11 @@ struct WMFModule {
|
|||
};
|
||||
|
||||
static WMFModule sDLLs[] = {
|
||||
{ L"mfplat.dll", NULL },
|
||||
{ L"mfreadwrite.dll", NULL },
|
||||
{ L"propsys.dll", NULL },
|
||||
{ L"mf.dll", NULL },
|
||||
{ L"dxva2.dll", NULL }
|
||||
{ L"mfplat.dll", nullptr },
|
||||
{ L"mfreadwrite.dll", nullptr },
|
||||
{ L"propsys.dll", nullptr },
|
||||
{ L"mf.dll", nullptr },
|
||||
{ L"dxva2.dll", nullptr }
|
||||
};
|
||||
|
||||
HRESULT
|
||||
|
@ -349,7 +349,7 @@ UnloadDLLs()
|
|||
for (uint32_t i = 0; i < length; i++) {
|
||||
if (sDLLs[i].handle) {
|
||||
FreeLibrary(sDLLs[i].handle);
|
||||
sDLLs[i].handle = NULL;
|
||||
sDLLs[i].handle = nullptr;
|
||||
}
|
||||
sDLLsLoaded = false;
|
||||
}
|
||||
|
|
|
@ -14,8 +14,8 @@ EXPORTS += [
|
|||
'nsISMILType.h',
|
||||
'nsSMILAnimationController.h',
|
||||
'nsSMILAnimationFunction.h',
|
||||
'nsSMILCSSProperty.h',
|
||||
'nsSMILCompositorTable.h',
|
||||
'nsSMILCSSProperty.h',
|
||||
'nsSMILInstanceTime.h',
|
||||
'nsSMILInterval.h',
|
||||
'nsSMILKeySpline.h',
|
||||
|
@ -26,25 +26,21 @@ EXPORTS += [
|
|||
'nsSMILSetAnimationFunction.h',
|
||||
'nsSMILTargetIdentifier.h',
|
||||
'nsSMILTimeContainer.h',
|
||||
'nsSMILTimedElement.h',
|
||||
'nsSMILTimeValue.h',
|
||||
'nsSMILTimeValueSpec.h',
|
||||
'nsSMILTimeValueSpecParams.h',
|
||||
'nsSMILTimedElement.h',
|
||||
'nsSMILTypes.h',
|
||||
'nsSMILValue.h',
|
||||
]
|
||||
|
||||
CPP_SOURCES += [
|
||||
'SMILBoolType.cpp',
|
||||
'SMILEnumType.cpp',
|
||||
'SMILIntegerType.cpp',
|
||||
'SMILStringType.cpp',
|
||||
'nsDOMTimeEvent.cpp',
|
||||
'nsSMILAnimationController.cpp',
|
||||
'nsSMILAnimationFunction.cpp',
|
||||
'nsSMILCompositor.cpp',
|
||||
'nsSMILCSSProperty.cpp',
|
||||
'nsSMILCSSValueType.cpp',
|
||||
'nsSMILCompositor.cpp',
|
||||
'nsSMILFloatType.cpp',
|
||||
'nsSMILInstanceTime.cpp',
|
||||
'nsSMILInterval.cpp',
|
||||
|
@ -55,10 +51,14 @@ CPP_SOURCES += [
|
|||
'nsSMILRepeatCount.cpp',
|
||||
'nsSMILSetAnimationFunction.cpp',
|
||||
'nsSMILTimeContainer.cpp',
|
||||
'nsSMILTimedElement.cpp',
|
||||
'nsSMILTimeValue.cpp',
|
||||
'nsSMILTimeValueSpec.cpp',
|
||||
'nsSMILTimedElement.cpp',
|
||||
'nsSMILValue.cpp',
|
||||
'SMILBoolType.cpp',
|
||||
'SMILEnumType.cpp',
|
||||
'SMILIntegerType.cpp',
|
||||
'SMILStringType.cpp',
|
||||
]
|
||||
|
||||
FAIL_ON_WARNINGS = True
|
||||
|
|
|
@ -276,7 +276,7 @@ SVGFETurbulenceElement::Noise2(int aColorChannel, double aVec[2],
|
|||
ry0 = t - (int) t;
|
||||
ry1 = ry0 - 1.0f;
|
||||
// If stitching, adjust lattice points accordingly.
|
||||
if (aStitchInfo != NULL) {
|
||||
if (aStitchInfo != nullptr) {
|
||||
if (bx0 >= aStitchInfo->mWrapX)
|
||||
bx0 -= aStitchInfo->mWidth;
|
||||
if (bx1 >= aStitchInfo->mWrapX)
|
||||
|
@ -322,7 +322,7 @@ SVGFETurbulenceElement::Turbulence(int aColorChannel, double* aPoint,
|
|||
double aTileWidth, double aTileHeight)
|
||||
{
|
||||
StitchInfo stitch;
|
||||
StitchInfo *stitchInfo = NULL; // Not stitching when NULL.
|
||||
StitchInfo *stitchInfo = nullptr; // Not stitching when nullptr.
|
||||
// Adjust the base frequencies if necessary for stitching.
|
||||
if (aDoStitching) {
|
||||
// When stitching tiled turbulence, the frequencies must be adjusted
|
||||
|
@ -363,7 +363,7 @@ SVGFETurbulenceElement::Turbulence(int aColorChannel, double* aPoint,
|
|||
vec[0] *= 2;
|
||||
vec[1] *= 2;
|
||||
ratio *= 2;
|
||||
if (stitchInfo != NULL) {
|
||||
if (stitchInfo != nullptr) {
|
||||
// Update stitch values. Subtracting sPerlinN before the multiplication
|
||||
// and adding it afterward simplifies to subtracting it once.
|
||||
stitch.mWidth *= 2;
|
||||
|
|
|
@ -7,21 +7,19 @@
|
|||
MODULE = 'content'
|
||||
|
||||
EXPORTS += [
|
||||
'SVGAttrValueWrapper.h',
|
||||
'SVGPreserveAspectRatio.h',
|
||||
'SVGStringList.h',
|
||||
'nsSVGClass.h',
|
||||
'nsSVGElement.h',
|
||||
'nsSVGFeatures.h',
|
||||
'SVGAttrValueWrapper.h',
|
||||
'SVGPreserveAspectRatio.h',
|
||||
'SVGStringList.h',
|
||||
]
|
||||
|
||||
EXPORTS.mozilla.dom += [
|
||||
'nsSVGAnimatedTransformList.h',
|
||||
'SVGAElement.h',
|
||||
'SVGAltGlyphElement.h',
|
||||
'SVGAngle.h',
|
||||
'SVGAnimateElement.h',
|
||||
'SVGAnimateMotionElement.h',
|
||||
'SVGAnimateTransformElement.h',
|
||||
'SVGAnimatedAngle.h',
|
||||
'SVGAnimatedBoolean.h',
|
||||
'SVGAnimatedEnumeration.h',
|
||||
|
@ -31,6 +29,9 @@ EXPORTS.mozilla.dom += [
|
|||
'SVGAnimatedRect.h',
|
||||
'SVGAnimatedString.h',
|
||||
'SVGAnimatedTransformList.h',
|
||||
'SVGAnimateElement.h',
|
||||
'SVGAnimateMotionElement.h',
|
||||
'SVGAnimateTransformElement.h',
|
||||
'SVGAnimationElement.h',
|
||||
'SVGCircleElement.h',
|
||||
'SVGClipPathElement.h',
|
||||
|
@ -63,28 +64,27 @@ EXPORTS.mozilla.dom += [
|
|||
'SVGGElement.h',
|
||||
'SVGGradientElement.h',
|
||||
'SVGGraphicsElement.h',
|
||||
'SVGIRect.h',
|
||||
'SVGImageElement.h',
|
||||
'SVGIRect.h',
|
||||
'SVGLineElement.h',
|
||||
'SVGMPathElement.h',
|
||||
'SVGMarkerElement.h',
|
||||
'SVGMaskElement.h',
|
||||
'SVGMatrix.h',
|
||||
'SVGMetadataElement.h',
|
||||
'SVGMPathElement.h',
|
||||
'SVGPathElement.h',
|
||||
'SVGPatternElement.h',
|
||||
'SVGPolygonElement.h',
|
||||
'SVGPolylineElement.h',
|
||||
'SVGRect.h',
|
||||
'SVGRectElement.h',
|
||||
'SVGSVGElement.h',
|
||||
'SVGScriptElement.h',
|
||||
'SVGSetElement.h',
|
||||
'SVGStopElement.h',
|
||||
'SVGStyleElement.h',
|
||||
'SVGSVGElement.h',
|
||||
'SVGSwitchElement.h',
|
||||
'SVGSymbolElement.h',
|
||||
'SVGTSpanElement.h',
|
||||
'SVGTests.h',
|
||||
'SVGTextContentElement.h',
|
||||
'SVGTextElement.h',
|
||||
|
@ -93,10 +93,10 @@ EXPORTS.mozilla.dom += [
|
|||
'SVGTitleElement.h',
|
||||
'SVGTransform.h',
|
||||
'SVGTransformableElement.h',
|
||||
'SVGTSpanElement.h',
|
||||
'SVGUseElement.h',
|
||||
'SVGViewElement.h',
|
||||
'SVGZoomEvent.h',
|
||||
'nsSVGAnimatedTransformList.h',
|
||||
]
|
||||
|
||||
CPP_SOURCES += [
|
||||
|
@ -112,12 +112,30 @@ CPP_SOURCES += [
|
|||
'DOMSVGPointList.cpp',
|
||||
'DOMSVGStringList.cpp',
|
||||
'DOMSVGTransformList.cpp',
|
||||
'nsISVGPoint.cpp',
|
||||
'nsSVGAngle.cpp',
|
||||
'nsSVGAnimatedTransformList.cpp',
|
||||
'nsSVGBoolean.cpp',
|
||||
'nsSVGClass.cpp',
|
||||
'nsSVGDataParser.cpp',
|
||||
'nsSVGElement.cpp',
|
||||
'nsSVGEnum.cpp',
|
||||
'nsSVGFeatures.cpp',
|
||||
'nsSVGFilters.cpp',
|
||||
'nsSVGInteger.cpp',
|
||||
'nsSVGIntegerPair.cpp',
|
||||
'nsSVGLength2.cpp',
|
||||
'nsSVGNumber2.cpp',
|
||||
'nsSVGNumberPair.cpp',
|
||||
'nsSVGPathDataParser.cpp',
|
||||
'nsSVGPathGeometryElement.cpp',
|
||||
'nsSVGPolyElement.cpp',
|
||||
'nsSVGString.cpp',
|
||||
'nsSVGTransform.cpp',
|
||||
'nsSVGViewBox.cpp',
|
||||
'SVGAElement.cpp',
|
||||
'SVGAltGlyphElement.cpp',
|
||||
'SVGAngle.cpp',
|
||||
'SVGAnimateElement.cpp',
|
||||
'SVGAnimateMotionElement.cpp',
|
||||
'SVGAnimateTransformElement.cpp',
|
||||
'SVGAnimatedAngle.cpp',
|
||||
'SVGAnimatedBoolean.cpp',
|
||||
'SVGAnimatedEnumeration.cpp',
|
||||
|
@ -132,6 +150,9 @@ CPP_SOURCES += [
|
|||
'SVGAnimatedRect.cpp',
|
||||
'SVGAnimatedString.cpp',
|
||||
'SVGAnimatedTransformList.cpp',
|
||||
'SVGAnimateElement.cpp',
|
||||
'SVGAnimateMotionElement.cpp',
|
||||
'SVGAnimateTransformElement.cpp',
|
||||
'SVGAnimationElement.cpp',
|
||||
'SVGAttrValueWrapper.cpp',
|
||||
'SVGCircleElement.cpp',
|
||||
|
@ -173,7 +194,6 @@ CPP_SOURCES += [
|
|||
'SVGLengthList.cpp',
|
||||
'SVGLengthListSMILType.cpp',
|
||||
'SVGLineElement.cpp',
|
||||
'SVGMPathElement.cpp',
|
||||
'SVGMarkerElement.cpp',
|
||||
'SVGMaskElement.cpp',
|
||||
'SVGMatrix.cpp',
|
||||
|
@ -182,6 +202,7 @@ CPP_SOURCES += [
|
|||
'SVGMotionSMILAttr.cpp',
|
||||
'SVGMotionSMILPathUtils.cpp',
|
||||
'SVGMotionSMILType.cpp',
|
||||
'SVGMPathElement.cpp',
|
||||
'SVGNumberList.cpp',
|
||||
'SVGNumberListSMILType.cpp',
|
||||
'SVGNumberPairSMILType.cpp',
|
||||
|
@ -198,15 +219,14 @@ CPP_SOURCES += [
|
|||
'SVGPreserveAspectRatio.cpp',
|
||||
'SVGRect.cpp',
|
||||
'SVGRectElement.cpp',
|
||||
'SVGSVGElement.cpp',
|
||||
'SVGScriptElement.cpp',
|
||||
'SVGSetElement.cpp',
|
||||
'SVGStopElement.cpp',
|
||||
'SVGStringList.cpp',
|
||||
'SVGStyleElement.cpp',
|
||||
'SVGSVGElement.cpp',
|
||||
'SVGSwitchElement.cpp',
|
||||
'SVGSymbolElement.cpp',
|
||||
'SVGTSpanElement.cpp',
|
||||
'SVGTests.cpp',
|
||||
'SVGTextContentElement.cpp',
|
||||
'SVGTextElement.cpp',
|
||||
|
@ -214,35 +234,15 @@ CPP_SOURCES += [
|
|||
'SVGTextPositioningElement.cpp',
|
||||
'SVGTitleElement.cpp',
|
||||
'SVGTransform.cpp',
|
||||
'SVGTransformableElement.cpp',
|
||||
'SVGTransformList.cpp',
|
||||
'SVGTransformListParser.cpp',
|
||||
'SVGTransformListSMILType.cpp',
|
||||
'SVGTransformableElement.cpp',
|
||||
'SVGTSpanElement.cpp',
|
||||
'SVGUseElement.cpp',
|
||||
'SVGViewBoxSMILType.cpp',
|
||||
'SVGViewElement.cpp',
|
||||
'SVGZoomEvent.cpp',
|
||||
'nsISVGPoint.cpp',
|
||||
'nsSVGAngle.cpp',
|
||||
'nsSVGAnimatedTransformList.cpp',
|
||||
'nsSVGBoolean.cpp',
|
||||
'nsSVGClass.cpp',
|
||||
'nsSVGDataParser.cpp',
|
||||
'nsSVGElement.cpp',
|
||||
'nsSVGEnum.cpp',
|
||||
'nsSVGFeatures.cpp',
|
||||
'nsSVGFilters.cpp',
|
||||
'nsSVGInteger.cpp',
|
||||
'nsSVGIntegerPair.cpp',
|
||||
'nsSVGLength2.cpp',
|
||||
'nsSVGNumber2.cpp',
|
||||
'nsSVGNumberPair.cpp',
|
||||
'nsSVGPathDataParser.cpp',
|
||||
'nsSVGPathGeometryElement.cpp',
|
||||
'nsSVGPolyElement.cpp',
|
||||
'nsSVGString.cpp',
|
||||
'nsSVGTransform.cpp',
|
||||
'nsSVGViewBox.cpp',
|
||||
]
|
||||
|
||||
FAIL_ON_WARNINGS = True
|
||||
|
|
|
@ -8,16 +8,16 @@ MODULE = 'content'
|
|||
|
||||
EXPORTS.mozilla.dom += [
|
||||
'CDATASection.h',
|
||||
'nsXMLElement.h',
|
||||
'ProcessingInstruction.h',
|
||||
'XMLStylesheetProcessingInstruction.h',
|
||||
'nsXMLElement.h',
|
||||
]
|
||||
|
||||
CPP_SOURCES += [
|
||||
'CDATASection.cpp',
|
||||
'nsXMLElement.cpp',
|
||||
'ProcessingInstruction.cpp',
|
||||
'XMLStylesheetProcessingInstruction.cpp',
|
||||
'nsXMLElement.cpp',
|
||||
]
|
||||
|
||||
LIBRARY_NAME = 'gkconxmlcon_s'
|
||||
|
|
|
@ -11,10 +11,10 @@ EXPORTS.mozilla.dom += [
|
|||
]
|
||||
|
||||
CPP_SOURCES += [
|
||||
'XMLDocument.cpp',
|
||||
'nsXMLContentSink.cpp',
|
||||
'nsXMLFragmentContentSink.cpp',
|
||||
'nsXMLPrettyPrinter.cpp',
|
||||
'XMLDocument.cpp',
|
||||
]
|
||||
|
||||
LIBRARY_NAME = 'gkconxmldoc_s'
|
||||
|
|
|
@ -11,7 +11,6 @@ EXPORTS.mozilla.dom += [
|
|||
]
|
||||
|
||||
CPP_SOURCES += [
|
||||
'XPathEvaluator.cpp',
|
||||
'nsXPathExpression.cpp',
|
||||
'nsXPathNSResolver.cpp',
|
||||
'nsXPathResult.cpp',
|
||||
|
@ -28,8 +27,8 @@ CPP_SOURCES += [
|
|||
'txLiteralExpr.cpp',
|
||||
'txLocationStep.cpp',
|
||||
'txMozillaXPathTreeWalker.cpp',
|
||||
'txNameTest.cpp',
|
||||
'txNamedAttributeStep.cpp',
|
||||
'txNameTest.cpp',
|
||||
'txNodeSet.cpp',
|
||||
'txNodeSetAdaptor.cpp',
|
||||
'txNodeSetContext.cpp',
|
||||
|
@ -37,8 +36,8 @@ CPP_SOURCES += [
|
|||
'txNumberExpr.cpp',
|
||||
'txNumberResult.cpp',
|
||||
'txPathExpr.cpp',
|
||||
'txPredicateList.cpp',
|
||||
'txPredicatedNodeTest.cpp',
|
||||
'txPredicateList.cpp',
|
||||
'txRelationalExpr.cpp',
|
||||
'txResultRecycler.cpp',
|
||||
'txRootExpr.cpp',
|
||||
|
@ -47,8 +46,9 @@ CPP_SOURCES += [
|
|||
'txUnionExpr.cpp',
|
||||
'txUnionNodeTest.cpp',
|
||||
'txVariableRefExpr.cpp',
|
||||
'txXPCOMExtensionFunction.cpp',
|
||||
'txXPathOptimizer.cpp',
|
||||
'txXPCOMExtensionFunction.cpp',
|
||||
'XPathEvaluator.cpp',
|
||||
]
|
||||
|
||||
LIBRARY_NAME = 'txxpath_s'
|
||||
|
|
|
@ -10,8 +10,8 @@ CPP_SOURCES += [
|
|||
'txBufferingHandler.cpp',
|
||||
'txCurrentFunctionCall.cpp',
|
||||
'txDocumentFunctionCall.cpp',
|
||||
'txEXSLTFunctions.cpp',
|
||||
'txExecutionState.cpp',
|
||||
'txEXSLTFunctions.cpp',
|
||||
'txFormatNumberFunctionCall.cpp',
|
||||
'txGenerateIdFunctionCall.cpp',
|
||||
'txInstructions.cpp',
|
||||
|
|
|
@ -11,9 +11,9 @@ if CONFIG['MOZ_XUL']:
|
|||
MSVC_ENABLE_PGO = True
|
||||
|
||||
CPP_SOURCES += [
|
||||
'nsXULContextMenuBuilder.cpp',
|
||||
'nsXULElement.cpp',
|
||||
'nsXULPopupListener.cpp',
|
||||
'nsXULContextMenuBuilder.cpp',
|
||||
]
|
||||
LIBRARY_NAME = 'gkconxulcon_s'
|
||||
|
||||
|
|
|
@ -14,9 +14,9 @@ if CONFIG['MOZ_XUL']:
|
|||
CPP_SOURCES += [
|
||||
'nsXULCommandDispatcher.cpp',
|
||||
'nsXULContentSink.cpp',
|
||||
'XULDocument.cpp',
|
||||
'nsXULPrototypeCache.cpp',
|
||||
'nsXULPrototypeDocument.cpp',
|
||||
'XULDocument.cpp',
|
||||
]
|
||||
|
||||
LIBRARY_NAME = 'gkconxuldoc_s'
|
||||
|
|
|
@ -36,10 +36,10 @@ XPIDL_SOURCES += [
|
|||
MODULE = 'docshell'
|
||||
|
||||
EXPORTS += [
|
||||
'SerializedLoadContext.h',
|
||||
'nsDocShellLoadTypes.h',
|
||||
'nsILinkHandler.h',
|
||||
'nsIWebShellServices.h',
|
||||
'SerializedLoadContext.h',
|
||||
]
|
||||
|
||||
EXPORTS.mozilla += [
|
||||
|
@ -49,9 +49,7 @@ EXPORTS.mozilla += [
|
|||
|
||||
CPP_SOURCES += [
|
||||
'LoadContext.cpp',
|
||||
'SerializedLoadContext.cpp',
|
||||
'nsAboutRedirector.cpp',
|
||||
'nsDSURIContentListener.cpp',
|
||||
'nsDefaultURIFixup.cpp',
|
||||
'nsDocShell.cpp',
|
||||
'nsDocShellEditorData.cpp',
|
||||
|
@ -59,7 +57,9 @@ CPP_SOURCES += [
|
|||
'nsDocShellLoadInfo.cpp',
|
||||
'nsDocShellTransferableHooks.cpp',
|
||||
'nsDownloadHistory.cpp',
|
||||
'nsDSURIContentListener.cpp',
|
||||
'nsWebNavigationInfo.cpp',
|
||||
'SerializedLoadContext.cpp',
|
||||
]
|
||||
|
||||
FAIL_ON_WARNINGS = True
|
||||
|
|
|
@ -8,10 +8,10 @@ XPIDL_SOURCES += [
|
|||
'nsIBFCacheEntry.idl',
|
||||
'nsISHContainer.idl',
|
||||
'nsISHEntry.idl',
|
||||
'nsISHTransaction.idl',
|
||||
'nsISHistory.idl',
|
||||
'nsISHistoryInternal.idl',
|
||||
'nsISHistoryListener.idl',
|
||||
'nsISHTransaction.idl',
|
||||
]
|
||||
|
||||
MODULE = 'shistory'
|
||||
|
|
|
@ -13,8 +13,8 @@ EXPORTS += [
|
|||
CPP_SOURCES += [
|
||||
'nsSHEntry.cpp',
|
||||
'nsSHEntryShared.cpp',
|
||||
'nsSHTransaction.cpp',
|
||||
'nsSHistory.cpp',
|
||||
'nsSHTransaction.cpp',
|
||||
]
|
||||
|
||||
LIBRARY_NAME = 'shistory_s'
|
||||
|
|
|
@ -40,9 +40,9 @@ EXPORTS += [
|
|||
'nsIScriptTimeoutHandler.h',
|
||||
'nsJSEnvironment.h',
|
||||
'nsJSUtils.h',
|
||||
'nsPerformance.h',
|
||||
'nsPIDOMWindow.h',
|
||||
'nsPIWindowRoot.h',
|
||||
'nsPerformance.h',
|
||||
'nsStructuredCloneContainer.h',
|
||||
'nsWindowMemoryReporter.h',
|
||||
'nsWrapperCache.h',
|
||||
|
@ -71,10 +71,10 @@ CPP_SOURCES += [
|
|||
'DOMError.cpp',
|
||||
'DOMException.cpp',
|
||||
'DOMRequest.cpp',
|
||||
'Navigator.cpp',
|
||||
'MessageChannel.cpp',
|
||||
'MessagePort.cpp',
|
||||
'MessagePortList.cpp',
|
||||
'Navigator.cpp',
|
||||
'nsContentPermissionHelper.cpp',
|
||||
'nsDOMClassInfo.cpp',
|
||||
'nsDOMNavigationTiming.cpp',
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче