Merge mozilla-inbound to mozilla-central. a=merge

This commit is contained in:
Sebastian Hengst 2019-01-23 18:51:14 +02:00
Родитель b1b30aa5dc 3e87663a7f
Коммит a612973f64
377 изменённых файлов: 7697 добавлений и 2244 удалений

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

@ -4,9 +4,10 @@
"use strict";
const { PureComponent } = require("devtools/client/shared/vendor/react");
const { createRef, PureComponent } = require("devtools/client/shared/vendor/react");
const dom = require("devtools/client/shared/vendor/react-dom-factories");
const PropTypes = require("devtools/client/shared/vendor/react-prop-types");
const { editableItem } = require("devtools/client/shared/inplace-editor");
const { getStr } = require("../utils/l10n");
const Types = require("../types");
@ -15,7 +16,9 @@ class Declaration extends PureComponent {
static get propTypes() {
return {
declaration: PropTypes.shape(Types.declaration).isRequired,
isUserAgentStyle: PropTypes.bool.isRequired,
onToggleDeclaration: PropTypes.func.isRequired,
showDeclarationNameEditor: PropTypes.func.isRequired,
};
}
@ -27,10 +30,28 @@ class Declaration extends PureComponent {
isComputedListExpanded: false,
};
this.nameSpanRef = createRef();
this.onComputedExpanderClick = this.onComputedExpanderClick.bind(this);
this.onToggleDeclarationClick = this.onToggleDeclarationClick.bind(this);
}
componentDidMount() {
if (this.props.isUserAgentStyle) {
// Declaration is not editable.
return;
}
const { declaration } = this.props;
editableItem({
element: this.nameSpanRef.current,
}, element => {
this.props.showDeclarationNameEditor(element, declaration.ruleId,
declaration.id);
});
}
onComputedExpanderClick(event) {
event.stopPropagation();
@ -144,7 +165,14 @@ class Declaration extends PureComponent {
tabIndex: -1,
}),
dom.span({ className: "ruleview-namecontainer" },
dom.span({ className: "ruleview-propertyname theme-fg-color3" }, name),
dom.span(
{
className: "ruleview-propertyname theme-fg-color3",
ref: this.nameSpanRef,
tabIndex: 0,
},
name
),
": "
),
dom.span({

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

@ -16,14 +16,18 @@ class Declarations extends PureComponent {
static get propTypes() {
return {
declarations: PropTypes.arrayOf(PropTypes.shape(Types.declaration)).isRequired,
isUserAgentStyle: PropTypes.bool.isRequired,
onToggleDeclaration: PropTypes.func.isRequired,
showDeclarationNameEditor: PropTypes.func.isRequired,
};
}
render() {
const {
declarations,
isUserAgentStyle,
onToggleDeclaration,
showDeclarationNameEditor,
} = this.props;
if (!declarations.length) {
@ -36,7 +40,9 @@ class Declarations extends PureComponent {
return Declaration({
key: declaration.id,
declaration,
isUserAgentStyle,
onToggleDeclaration,
showDeclarationNameEditor,
});
})
)

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

@ -21,6 +21,7 @@ class Rule extends PureComponent {
onToggleDeclaration: PropTypes.func.isRequired,
onToggleSelectorHighlighter: PropTypes.func.isRequired,
rule: PropTypes.shape(Types.rule).isRequired,
showDeclarationNameEditor: PropTypes.func.isRequired,
showSelectorEditor: PropTypes.func.isRequired,
};
}
@ -30,6 +31,7 @@ class Rule extends PureComponent {
onToggleDeclaration,
onToggleSelectorHighlighter,
rule,
showDeclarationNameEditor,
showSelectorEditor,
} = this.props;
const {
@ -70,7 +72,9 @@ class Rule extends PureComponent {
),
Declarations({
declarations,
isUserAgentStyle,
onToggleDeclaration,
showDeclarationNameEditor,
}),
dom.div({ className: "ruleview-ruleclose" }, "}")
)

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

@ -17,6 +17,7 @@ class Rules extends PureComponent {
onToggleDeclaration: PropTypes.func.isRequired,
onToggleSelectorHighlighter: PropTypes.func.isRequired,
rules: PropTypes.arrayOf(PropTypes.shape(Types.rule)).isRequired,
showDeclarationNameEditor: PropTypes.func.isRequired,
showSelectorEditor: PropTypes.func.isRequired,
};
}
@ -26,6 +27,7 @@ class Rules extends PureComponent {
onToggleDeclaration,
onToggleSelectorHighlighter,
rules,
showDeclarationNameEditor,
showSelectorEditor,
} = this.props;
@ -35,6 +37,7 @@ class Rules extends PureComponent {
onToggleDeclaration,
onToggleSelectorHighlighter,
rule,
showDeclarationNameEditor,
showSelectorEditor,
});
});

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

@ -35,6 +35,7 @@ class RulesApp extends PureComponent {
onTogglePseudoClass: PropTypes.func.isRequired,
onToggleSelectorHighlighter: PropTypes.func.isRequired,
rules: PropTypes.arrayOf(PropTypes.shape(Types.rule)).isRequired,
showDeclarationNameEditor: PropTypes.func.isRequired,
showSelectorEditor: PropTypes.func.isRequired,
};
}
@ -43,6 +44,7 @@ class RulesApp extends PureComponent {
return {
onToggleDeclaration: this.props.onToggleDeclaration,
onToggleSelectorHighlighter: this.props.onToggleSelectorHighlighter,
showDeclarationNameEditor: this.props.showDeclarationNameEditor,
showSelectorEditor: this.props.showSelectorEditor,
};
}

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

@ -10,6 +10,7 @@ const UserProperties = require("devtools/client/inspector/rules/models/user-prop
const { ELEMENT_STYLE } = require("devtools/shared/specs/styles");
loader.lazyRequireGetter(this, "promiseWarn", "devtools/client/inspector/shared/utils", true);
loader.lazyRequireGetter(this, "parseDeclarations", "devtools/shared/css/parsing-utils", true);
loader.lazyRequireGetter(this, "isCssVariable", "devtools/shared/fronts/css-properties", true);
/**
@ -332,6 +333,42 @@ ElementStyle.prototype = {
}
},
/**
* Given the id of the rule and the new declaration name, modifies the existing
* declaration name to the new given value.
*
* @param {String} ruleID
* The Rule id of the given CSS declaration.
* @param {String} declarationId
* The TextProperty id for the CSS declaration.
* @param {String} name
* The new declaration name.
*/
modifyDeclarationName: async function(ruleID, declarationId, name) {
const rule = this.getRule(ruleID);
if (!rule) {
return;
}
const declaration = rule.getDeclaration(declarationId);
if (!declaration || declaration.name === name) {
return;
}
// Adding multiple rules inside of name field overwrites the current
// property with the first, then adds any more onto the property list.
const declarations = parseDeclarations(this.cssProperties.isKnown, name);
if (!declarations.length) {
return;
}
await declaration.setName(declarations[0].name);
if (!declaration.enabled) {
await declaration.setEnabled(true);
}
},
/**
* Modifies the existing rule's selector to the new given value.
*

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

@ -387,16 +387,17 @@ Rule.prototype = {
* The property to rename.
* @param {String} name
* The new property name (such as "background" or "border-top").
* @return {Promise}
*/
setPropertyName: function(property, name) {
if (name === property.name) {
return;
return Promise.resolve();
}
const oldName = property.name;
property.name = name;
const index = this.textProps.indexOf(property);
this.applyProperties((modifications) => {
return this.applyProperties(modifications => {
modifications.renameProperty(index, oldName, name);
});
},
@ -421,7 +422,7 @@ Rule.prototype = {
property.priority = priority;
const index = this.textProps.indexOf(property);
return this.applyProperties((modifications) => {
return this.applyProperties(modifications => {
modifications.setProperty(index, property.name, value, priority);
});
},

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

@ -162,15 +162,14 @@ TextProperty.prototype = {
}
},
setName: function(name) {
const store = this.rule.elementStyle.store;
if (name !== this.name) {
setName: async function(name) {
if (name !== this.name && this.editor) {
const store = this.rule.elementStyle.store;
store.userProperties.setProperty(this.rule.domRule, name,
this.editor.committed.value);
}
this.rule.setPropertyName(this, name);
await this.rule.setPropertyName(this, name);
this.updateEditor();
},

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

@ -31,6 +31,7 @@ const INSPECTOR_L10N =
new LocalizationHelper("devtools/client/locales/inspector.properties");
loader.lazyRequireGetter(this, "ClassList", "devtools/client/inspector/rules/models/class-list");
loader.lazyRequireGetter(this, "AutocompletePopup", "devtools/client/shared/autocomplete-popup");
loader.lazyRequireGetter(this, "InplaceEditor", "devtools/client/shared/inplace-editor", true);
const PREF_UA_STYLES = "devtools.inspector.showUserAgentStyles";
@ -55,6 +56,7 @@ class RulesView {
this.onToggleDeclaration = this.onToggleDeclaration.bind(this);
this.onTogglePseudoClass = this.onTogglePseudoClass.bind(this);
this.onToggleSelectorHighlighter = this.onToggleSelectorHighlighter.bind(this);
this.showDeclarationNameEditor = this.showDeclarationNameEditor.bind(this);
this.showSelectorEditor = this.showSelectorEditor.bind(this);
this.updateClassList = this.updateClassList.bind(this);
this.updateRules = this.updateRules.bind(this);
@ -80,6 +82,7 @@ class RulesView {
onToggleDeclaration: this.onToggleDeclaration,
onTogglePseudoClass: this.onTogglePseudoClass,
onToggleSelectorHighlighter: this.onToggleSelectorHighlighter,
showDeclarationNameEditor: this.showDeclarationNameEditor,
showSelectorEditor: this.showSelectorEditor,
});
@ -99,6 +102,11 @@ class RulesView {
this.selection.off("detached-front", this.onSelection);
this.selection.off("new-node-front", this.onSelection);
if (this._autocompletePopup) {
this._autocompletePopup.destroy();
this._autocompletePopup = null;
}
if (this._classList) {
this._classList.off("current-node-class-changed", this.refreshClassList);
this._classList.destroy();
@ -127,6 +135,22 @@ class RulesView {
this.toolbox = null;
}
/**
* Get an instance of the AutocompletePopup.
*
* @return {AutocompletePopup}
*/
get autocompletePopup() {
if (!this._autocompletePopup) {
this._autocompletePopup = new AutocompletePopup(this.doc, {
autoSelect: true,
theme: "auto",
});
}
return this._autocompletePopup;
}
/**
* Get an instance of the ClassList model used to manage the list of CSS classes
* applied to the element.
@ -327,6 +351,37 @@ class RulesView {
}
}
/**
* Handler for showing the inplace editor when an editable property name is clicked in
* the rules view.
*
* @param {DOMNode} element
* The declaration name span element to be edited.
* @param {String} ruleId
* The id of the Rule object to be edited.
* @param {String} declarationId
* The id of the TextProperty object to be edited.
*/
showDeclarationNameEditor(element, ruleId, declarationId) {
new InplaceEditor({
advanceChars: ":",
contentType: InplaceEditor.CONTENT_TYPES.CSS_PROPERTY,
cssProperties: this.cssProperties,
done: (name, commit) => {
if (!commit) {
return;
}
this.elementStyle.modifyDeclarationName(ruleId, declarationId, name);
this.telemetry.recordEvent("edit_rule", "ruleview", null, {
"session_id": this.toolbox.sessionId,
});
},
element,
popup: this.autocompletePopup,
});
}
/**
* Shows the inplace editor for the a selector.
*

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

@ -1,3 +1,3 @@
#define ANGLE_COMMIT_HASH "790e8e6b4179"
#define ANGLE_COMMIT_HASH "eff6bfdb1db9"
#define ANGLE_COMMIT_HASH_SIZE 12
#define ANGLE_COMMIT_DATE "2018-10-09 17:41:46 -0700"
#define ANGLE_COMMIT_DATE "2019-01-22 11:11:06 -0800"

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

@ -124,8 +124,8 @@ void PixelTransfer11::setBufferToTextureCopyParams(const gl::Box &destArea, cons
{
StructZero(parametersOut);
float texelCenterX = 0.5f / static_cast<float>(destSize.width - 1);
float texelCenterY = 0.5f / static_cast<float>(destSize.height - 1);
float texelCenterX = 0.5f / static_cast<float>(destSize.width);
float texelCenterY = 0.5f / static_cast<float>(destSize.height);
unsigned int bytesPerPixel = gl::GetSizedInternalFormatInfo(internalFormat).pixelBytes;
unsigned int alignmentBytes = static_cast<unsigned int>(unpack.alignment);

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

@ -1,3 +1,15 @@
commit eff6bfdb1db99505122a37f2911bdd3b845e19b8
Author: Jeff Gilbert <jgilbert@mozilla.com>
Date: Thu Jan 3 23:38:44 2019 -0800
In PixelTransfer11, center offset should be 1/size, not 1/(size-1).
Bug: angleproject:3039
Change-Id: Ie97bfb5aa3cfe7cd2c4b1d22b5b4a8d82a5e5170
Reviewed-on: https://chromium-review.googlesource.com/c/1407251
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
commit 790e8e6b417905eca335d06c16ec54c977188110
Author: Olli Etuaho <oetuaho@nvidia.com>
Date: Thu Sep 20 13:20:50 2018 +0300

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

@ -31,6 +31,7 @@ DEFINES['_CRT_RAND_S'] = True
DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True
#DEFINES['_DEBUG'] = True
DEFINES['_HAS_EXCEPTIONS'] = '0'
#DEFINES['_HAS_ITERATOR_DEBUGGING'] = '0'
DEFINES['_SCL_SECURE_NO_DEPRECATE'] = True
DEFINES['_SECURE_ATL'] = True
DEFINES['_UNICODE'] = True
@ -67,13 +68,21 @@ LOCAL_INCLUDES += [
# '/wd4117',
# '/wd4121',
# '/wd4127',
# '/wd4200',
# '/wd4201',
# '/wd4204',
# '/wd4221',
# '/wd4244',
# '/wd4245',
# '/wd4251',
# '/wd4267',
# '/wd4275',
# '/wd4305',
# '/wd4312',
# '/wd4324',
# '/wd4351',
# '/wd4355',
# '/wd4389',
# '/wd4456',
# '/wd4457',
# '/wd4458',
@ -86,7 +95,12 @@ LOCAL_INCLUDES += [
# '/wd4589',
# '/wd4610',
# '/wd4611',
# '/wd4661',
# '/wd4701',
# '/wd4702',
# '/wd4703',
# '/wd4706',
# '/wd4715',
# '/wd4838',
# '/wd4995',
# '/wd4996',
@ -137,6 +151,7 @@ if CONFIG['OS_ARCH'] not in ('Darwin', 'WINNT'):
#LDFLAGS += [
# '/DEBUG',
# '/pdbaltpath:%_PDB%',
# '/WX',
#]

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

@ -31,6 +31,7 @@ DEFINES['_CRT_RAND_S'] = True
DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True
#DEFINES['_DEBUG'] = True
DEFINES['_HAS_EXCEPTIONS'] = '0'
#DEFINES['_HAS_ITERATOR_DEBUGGING'] = '0'
DEFINES['_SCL_SECURE_NO_DEPRECATE'] = True
DEFINES['_SECURE_ATL'] = True
DEFINES['_UNICODE'] = True
@ -67,13 +68,21 @@ LOCAL_INCLUDES += [
# '/wd4117',
# '/wd4121',
# '/wd4127',
# '/wd4200',
# '/wd4201',
# '/wd4204',
# '/wd4221',
# '/wd4244',
# '/wd4245',
# '/wd4251',
# '/wd4267',
# '/wd4275',
# '/wd4305',
# '/wd4312',
# '/wd4324',
# '/wd4351',
# '/wd4355',
# '/wd4389',
# '/wd4456',
# '/wd4457',
# '/wd4458',
@ -86,7 +95,12 @@ LOCAL_INCLUDES += [
# '/wd4589',
# '/wd4610',
# '/wd4611',
# '/wd4661',
# '/wd4701',
# '/wd4702',
# '/wd4703',
# '/wd4706',
# '/wd4715',
# '/wd4838',
# '/wd4995',
# '/wd4996',
@ -123,6 +137,7 @@ OS_LIBS += [
#LDFLAGS += [
# '/DEBUG',
# '/pdbaltpath:%_PDB%',
# '/WX',
#]

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

@ -30,6 +30,7 @@ DEFINES['_CRT_RAND_S'] = True
DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True
#DEFINES['_DEBUG'] = True
DEFINES['_HAS_EXCEPTIONS'] = '0'
#DEFINES['_HAS_ITERATOR_DEBUGGING'] = '0'
DEFINES['_SCL_SECURE_NO_DEPRECATE'] = True
DEFINES['_SECURE_ATL'] = True
DEFINES['_UNICODE'] = True
@ -66,13 +67,21 @@ LOCAL_INCLUDES += [
# '/wd4117',
# '/wd4121',
# '/wd4127',
# '/wd4200',
# '/wd4201',
# '/wd4204',
# '/wd4221',
# '/wd4244',
# '/wd4245',
# '/wd4251',
# '/wd4267',
# '/wd4275',
# '/wd4305',
# '/wd4312',
# '/wd4324',
# '/wd4351',
# '/wd4355',
# '/wd4389',
# '/wd4456',
# '/wd4457',
# '/wd4458',
@ -85,7 +94,12 @@ LOCAL_INCLUDES += [
# '/wd4589',
# '/wd4610',
# '/wd4611',
# '/wd4661',
# '/wd4701',
# '/wd4702',
# '/wd4703',
# '/wd4706',
# '/wd4715',
# '/wd4838',
# '/wd4995',
# '/wd4996',
@ -116,6 +130,7 @@ DIRS += [
#LDFLAGS += [
# '/DEBUG',
# '/pdbaltpath:%_PDB%',
# '/WX',
#]

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

@ -36,6 +36,7 @@ DEFINES['_CRT_RAND_S'] = True
DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True
#DEFINES['_DEBUG'] = True
DEFINES['_HAS_EXCEPTIONS'] = '0'
#DEFINES['_HAS_ITERATOR_DEBUGGING'] = '0'
DEFINES['_SCL_SECURE_NO_DEPRECATE'] = True
DEFINES['_SECURE_ATL'] = True
DEFINES['_UNICODE'] = True
@ -72,13 +73,21 @@ LOCAL_INCLUDES += [
# '/wd4117',
# '/wd4121',
# '/wd4127',
# '/wd4200',
# '/wd4201',
# '/wd4204',
# '/wd4221',
# '/wd4244',
# '/wd4245',
# '/wd4251',
# '/wd4267',
# '/wd4275',
# '/wd4305',
# '/wd4312',
# '/wd4324',
# '/wd4351',
# '/wd4355',
# '/wd4389',
# '/wd4456',
# '/wd4457',
# '/wd4458',
@ -92,7 +101,12 @@ LOCAL_INCLUDES += [
# '/wd4589',
# '/wd4610',
# '/wd4611',
# '/wd4661',
# '/wd4701',
# '/wd4702',
# '/wd4703',
# '/wd4706',
# '/wd4715',
# '/wd4838',
# '/wd4995',
# '/wd4996',
@ -278,6 +292,7 @@ OS_LIBS += [
#LDFLAGS += [
# '/DEBUG',
# '/pdbaltpath:%_PDB%',
# '/WX',
#]

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

@ -33,6 +33,7 @@ DEFINES['_CRT_RAND_S'] = True
DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True
#DEFINES['_DEBUG'] = True
DEFINES['_HAS_EXCEPTIONS'] = '0'
#DEFINES['_HAS_ITERATOR_DEBUGGING'] = '0'
DEFINES['_SCL_SECURE_NO_DEPRECATE'] = True
DEFINES['_SECURE_ATL'] = True
DEFINES['_UNICODE'] = True
@ -68,13 +69,21 @@ LOCAL_INCLUDES += [
# '/wd4117',
# '/wd4121',
# '/wd4127',
# '/wd4200',
# '/wd4201',
# '/wd4204',
# '/wd4221',
# '/wd4244',
# '/wd4245',
# '/wd4251',
# '/wd4267',
# '/wd4275',
# '/wd4305',
# '/wd4312',
# '/wd4324',
# '/wd4351',
# '/wd4355',
# '/wd4389',
# '/wd4456',
# '/wd4457',
# '/wd4458',
@ -87,7 +96,12 @@ LOCAL_INCLUDES += [
# '/wd4589',
# '/wd4610',
# '/wd4611',
# '/wd4661',
# '/wd4701',
# '/wd4702',
# '/wd4703',
# '/wd4706',
# '/wd4715',
# '/wd4838',
# '/wd4995',
# '/wd4996',
@ -149,6 +163,7 @@ OS_LIBS += [
# '/INCREMENTAL',
# '/MACHINE:X64',
# '/NXCOMPAT',
# '/pdbaltpath:%_PDB%',
# '/SUBSYSTEM:CONSOLE,5.02',
# '/WX',
#]

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

@ -37,6 +37,7 @@ DEFINES['_CRT_RAND_S'] = True
DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True
#DEFINES['_DEBUG'] = True
DEFINES['_HAS_EXCEPTIONS'] = '0'
#DEFINES['_HAS_ITERATOR_DEBUGGING'] = '0'
DEFINES['_SCL_SECURE_NO_DEPRECATE'] = True
DEFINES['_SECURE_ATL'] = True
DEFINES['_UNICODE'] = True
@ -73,13 +74,21 @@ LOCAL_INCLUDES += [
# '/wd4117',
# '/wd4121',
# '/wd4127',
# '/wd4200',
# '/wd4201',
# '/wd4204',
# '/wd4221',
# '/wd4244',
# '/wd4245',
# '/wd4251',
# '/wd4267',
# '/wd4275',
# '/wd4305',
# '/wd4312',
# '/wd4324',
# '/wd4351',
# '/wd4355',
# '/wd4389',
# '/wd4456',
# '/wd4457',
# '/wd4458',
@ -93,7 +102,12 @@ LOCAL_INCLUDES += [
# '/wd4589',
# '/wd4610',
# '/wd4611',
# '/wd4661',
# '/wd4701',
# '/wd4702',
# '/wd4703',
# '/wd4706',
# '/wd4715',
# '/wd4838',
# '/wd4995',
# '/wd4996',
@ -167,6 +181,7 @@ OS_LIBS += [
# '/INCREMENTAL',
# '/MACHINE:X64',
# '/NXCOMPAT',
# '/pdbaltpath:%_PDB%',
# '/SUBSYSTEM:CONSOLE,5.02',
# '/WX',
#]

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

@ -30,6 +30,7 @@ DEFINES['_CRT_RAND_S'] = True
DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True
#DEFINES['_DEBUG'] = True
DEFINES['_HAS_EXCEPTIONS'] = '0'
#DEFINES['_HAS_ITERATOR_DEBUGGING'] = '0'
DEFINES['_SCL_SECURE_NO_DEPRECATE'] = True
DEFINES['_SECURE_ATL'] = True
DEFINES['_UNICODE'] = True
@ -66,13 +67,21 @@ LOCAL_INCLUDES += [
# '/wd4117',
# '/wd4121',
# '/wd4127',
# '/wd4200',
# '/wd4201',
# '/wd4204',
# '/wd4221',
# '/wd4244',
# '/wd4245',
# '/wd4251',
# '/wd4267',
# '/wd4275',
# '/wd4305',
# '/wd4312',
# '/wd4324',
# '/wd4351',
# '/wd4355',
# '/wd4389',
# '/wd4456',
# '/wd4457',
# '/wd4458',
@ -85,7 +94,12 @@ LOCAL_INCLUDES += [
# '/wd4589',
# '/wd4610',
# '/wd4611',
# '/wd4661',
# '/wd4701',
# '/wd4702',
# '/wd4703',
# '/wd4706',
# '/wd4715',
# '/wd4838',
# '/wd4995',
# '/wd4996',
@ -123,6 +137,7 @@ DIRS += [
#LDFLAGS += [
# '/DEBUG',
# '/pdbaltpath:%_PDB%',
# '/WX',
#]

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

@ -33,6 +33,7 @@ DEFINES['_CRT_RAND_S'] = True
DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True
#DEFINES['_DEBUG'] = True
DEFINES['_HAS_EXCEPTIONS'] = '0'
#DEFINES['_HAS_ITERATOR_DEBUGGING'] = '0'
DEFINES['_SCL_SECURE_NO_DEPRECATE'] = True
DEFINES['_SECURE_ATL'] = True
DEFINES['_UNICODE'] = True
@ -69,13 +70,21 @@ LOCAL_INCLUDES += [
# '/wd4117',
# '/wd4121',
# '/wd4127',
# '/wd4200',
# '/wd4201',
# '/wd4204',
# '/wd4221',
# '/wd4244',
# '/wd4245',
# '/wd4251',
# '/wd4267',
# '/wd4275',
# '/wd4305',
# '/wd4312',
# '/wd4324',
# '/wd4351',
# '/wd4355',
# '/wd4389',
# '/wd4456',
# '/wd4457',
# '/wd4458',
@ -88,7 +97,12 @@ LOCAL_INCLUDES += [
# '/wd4589',
# '/wd4610',
# '/wd4611',
# '/wd4661',
# '/wd4701',
# '/wd4702',
# '/wd4703',
# '/wd4706',
# '/wd4715',
# '/wd4718',
# '/wd4838',
# '/wd4995',
@ -232,6 +246,7 @@ DIRS += [
#LDFLAGS += [
# '/DEBUG',
# '/pdbaltpath:%_PDB%',
# '/WX',
#]

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

@ -234,6 +234,7 @@ IGNORED_INCLUDES = {
'libANGLE/renderer/vulkan/android/DisplayVkAndroid.h',
'libANGLE/renderer/vulkan/win32/DisplayVkWin32.h',
'libANGLE/renderer/vulkan/xcb/DisplayVkXcb.h',
'kernel/image.h',
}
IGNORED_INCLUDE_PREFIXES = {
@ -302,6 +303,7 @@ REGISTERED_DEFINES = {
'_CRT_SECURE_NO_DEPRECATE': True,
'_DEBUG': False,
'_HAS_EXCEPTIONS': True,
'_HAS_ITERATOR_DEBUGGING': False,
'_SCL_SECURE_NO_DEPRECATE': True,
'_SECURE_ATL': True,
'_UNICODE': True,
@ -480,7 +482,7 @@ def export_target(root):
(b, e) = x.rsplit('.', 1)
if e in ['h', 'y', 'l', 'inc', 'inl']:
continue
elif e in ['cpp', 'cc']:
elif e in ['cpp', 'cc', 'c']:
if b.endswith('_win'):
config = "CONFIG['OS_ARCH'] == 'WINNT'"
elif b.endswith('_linux'):

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

@ -933,7 +933,7 @@ JS_FRIEND_API uint32_t JS_GetDataViewByteLength(JSObject* obj) {
JS_FRIEND_API JSObject* JS_NewDataView(JSContext* cx, HandleObject buffer,
uint32_t byteOffset,
int32_t byteLength) {
JSProtoKey key = JSCLASS_CACHED_PROTO_KEY(&DataViewObject::class_);
JSProtoKey key = JSProto_DataView;
RootedObject constructor(cx, GlobalObject::getOrCreateConstructor(cx, key));
if (!constructor) {
return nullptr;

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

@ -2173,7 +2173,7 @@ static bool FinishObjectClassInit(JSContext* cx, JS::HandleObject ctor,
*/
Rooted<TaggedProto> tagged(cx, TaggedProto(proto));
if (global->shouldSplicePrototype()) {
if (!JSObject::splicePrototype(cx, global, global->getClass(), tagged)) {
if (!JSObject::splicePrototype(cx, global, tagged)) {
return false;
}
}

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

@ -7284,50 +7284,43 @@ GCRuntime::IncrementalResult GCRuntime::budgetIncrementalGC(
return IncrementalResult::Ok;
}
namespace {
static void ScheduleZones(GCRuntime* gc) {
JSRuntime* rt = gc->rt;
class AutoScheduleZonesForGC {
JSRuntime* rt_;
for (ZonesIter zone(rt, WithAtoms); !zone.done(); zone.next()) {
if (!zone->canCollect()) {
continue;
}
public:
explicit AutoScheduleZonesForGC(GCRuntime* gc) : rt_(gc->rt) {
for (ZonesIter zone(rt_, WithAtoms); !zone.done(); zone.next()) {
if (!zone->canCollect()) {
continue;
}
if (gc->gcMode() == JSGC_MODE_GLOBAL) {
zone->scheduleGC();
}
if (gc->gcMode() == JSGC_MODE_GLOBAL) {
zone->scheduleGC();
}
// To avoid resets, continue to collect any zones that were being
// collected in a previous slice.
if (gc->isIncrementalGCInProgress() && zone->wasGCStarted()) {
zone->scheduleGC();
}
// To avoid resets, continue to collect any zones that were being
// collected in a previous slice.
if (gc->isIncrementalGCInProgress() && zone->wasGCStarted()) {
zone->scheduleGC();
}
// This is a heuristic to reduce the total number of collections.
bool inHighFrequencyMode = gc->schedulingState.inHighFrequencyGCMode();
if (zone->zoneSize.gcBytes() >=
zone->threshold.eagerAllocTrigger(inHighFrequencyMode)) {
zone->scheduleGC();
}
// This is a heuristic to reduce the total number of collections.
bool inHighFrequencyMode = gc->schedulingState.inHighFrequencyGCMode();
if (zone->zoneSize.gcBytes() >=
zone->threshold.eagerAllocTrigger(inHighFrequencyMode)) {
zone->scheduleGC();
}
// This ensures we collect zones that have reached the malloc limit.
if (zone->shouldTriggerGCForTooMuchMalloc()) {
zone->scheduleGC();
}
// This ensures we collect zones that have reached the malloc limit.
if (zone->shouldTriggerGCForTooMuchMalloc()) {
zone->scheduleGC();
}
}
}
~AutoScheduleZonesForGC() {
for (ZonesIter zone(rt_, WithAtoms); !zone.done(); zone.next()) {
zone->unscheduleGC();
}
static void UnScheduleZones(GCRuntime* gc) {
for (ZonesIter zone(gc->rt, WithAtoms); !zone.done(); zone.next()) {
zone->unscheduleGC();
}
};
} /* anonymous namespace */
}
class js::gc::AutoCallGCCallbacks {
GCRuntime& gc_;
@ -7387,6 +7380,7 @@ MOZ_NEVER_INLINE GCRuntime::IncrementalResult GCRuntime::gcCycle(
// Note that GC callbacks are allowed to re-enter GC.
AutoCallGCCallbacks callCallbacks(*this);
ScheduleZones(this);
gcstats::AutoGCSlice agc(stats(), scanZonesBeforeGC(), invocationKind, budget,
reason);
@ -7595,7 +7589,6 @@ void GCRuntime::collect(bool nonincrementalByAPI, SliceBudget budget,
AutoTraceLog logGC(TraceLoggerForCurrentThread(), TraceLogger_GC);
AutoStopVerifyingBarriers av(rt, IsShutdownGC(reason));
AutoEnqueuePendingParseTasksAfterGC aept(*this);
AutoScheduleZonesForGC asz(this);
bool repeat;
do {
@ -7655,6 +7648,8 @@ void GCRuntime::collect(bool nonincrementalByAPI, SliceBudget budget,
}
#endif
stats().writeLogMessage("GC ending in state %s", StateName(incrementalState));
UnScheduleZones(this);
}
js::AutoEnqueuePendingParseTasksAfterGC::

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

@ -3294,8 +3294,7 @@ static bool TryAttachFunCallStub(JSContext* cx, ICCall_Fallback* stub,
static bool GetTemplateObjectForNative(JSContext* cx, HandleFunction target,
const CallArgs& args,
MutableHandleObject res,
bool* skipAttach) {
MutableHandleObject res) {
Native native = target->native();
// Check for natives to which template objects can be attached. This is
@ -3314,16 +3313,6 @@ static bool GetTemplateObjectForNative(JSContext* cx, HandleFunction target,
}
if (count <= ArrayObject::EagerAllocationMaxLength) {
ObjectGroup* group =
ObjectGroup::callingAllocationSiteGroup(cx, JSProto_Array);
if (!group) {
return false;
}
if (group->maybePreliminaryObjectsDontCheckGeneration()) {
*skipAttach = true;
return true;
}
// With this and other array templates, analyze the group so that
// we don't end up with a template whose structure might change later.
res.set(NewFullyAllocatedArrayForCallingAllocationSite(cx, count,
@ -3351,10 +3340,6 @@ static bool GetTemplateObjectForNative(JSContext* cx, HandleFunction target,
if (args.thisv().isObject()) {
RootedObject obj(cx, &args.thisv().toObject());
if (!obj->isSingleton()) {
if (obj->group()->maybePreliminaryObjectsDontCheckGeneration()) {
*skipAttach = true;
return true;
}
res.set(NewFullyAllocatedArrayTryReuseGroup(cx, obj, 0, TenuredObject));
return !!res;
}
@ -3694,16 +3679,10 @@ static bool TryAttachCallStub(JSContext* cx, ICCall_Fallback* stub,
RootedObject templateObject(cx);
if (MOZ_LIKELY(!isSpread && !isSuper && !isCrossRealm)) {
bool skipAttach = false;
CallArgs args = CallArgsFromVp(argc, vp);
if (!GetTemplateObjectForNative(cx, fun, args, &templateObject,
&skipAttach)) {
if (!GetTemplateObjectForNative(cx, fun, args, &templateObject)) {
return false;
}
if (skipAttach) {
*handled = true;
return true;
}
MOZ_ASSERT_IF(templateObject,
!templateObject->group()
->maybePreliminaryObjectsDontCheckGeneration());
@ -6072,8 +6051,7 @@ static bool DoNewArray(JSContext* cx, BaselineFrame* frame,
return false;
}
if (!obj->isSingleton() &&
!obj->group()->maybePreliminaryObjectsDontCheckGeneration()) {
if (!obj->isSingleton()) {
JSObject* templateObject =
NewArrayOperation(cx, script, pc, length, TenuredObject);
if (!templateObject) {

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

@ -4981,12 +4981,6 @@ bool CallIRGenerator::tryAttachArrayPush() {
RootedArrayObject thisarray(cx_, &thisobj->as<ArrayObject>());
// And the object group for the array is not collecting preliminary objects.
AutoSweepObjectGroup sweep(thisobj->group());
if (thisobj->group()->maybePreliminaryObjects(sweep)) {
return false;
}
// Check for other indexed properties or class hooks.
if (!CanAttachAddElement(thisarray, /* isInit = */ false)) {
return false;

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

@ -1841,10 +1841,6 @@ IonBuilder::InliningResult IonBuilder::inlineStringSplitString(
if (!group) {
return InliningStatus_NotInlined;
}
AutoSweepObjectGroup sweep(group);
if (group->maybePreliminaryObjects(sweep)) {
return InliningStatus_NotInlined;
}
TypeSet::ObjectKey* retKey = TypeSet::ObjectKey::get(group);
if (retKey->unknownProperties()) {

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

@ -119,7 +119,7 @@ JS_FRIEND_API bool JS_SplicePrototype(JSContext* cx, HandleObject obj,
}
Rooted<TaggedProto> tagged(cx, TaggedProto(proto));
return JSObject::splicePrototype(cx, obj, obj->getClass(), tagged);
return JSObject::splicePrototype(cx, obj, tagged);
}
JS_FRIEND_API JSObject* JS_NewObjectWithUniqueType(JSContext* cx,

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

@ -276,6 +276,11 @@ class GlobalObject : public NativeObject {
JS::OnNewGlobalHookOption hookOption,
const JS::RealmOptions& options);
/*
* For bootstrapping, whether to splice a prototype for the global object.
*/
bool shouldSplicePrototype();
/*
* Create a constructor function with the specified name and length using
* ctor, a method which creates objects with the given class.

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

@ -5233,13 +5233,9 @@ JSObject* js::NewArrayOperation(JSContext* cx, HandleScript script,
if (!group) {
return nullptr;
}
AutoSweepObjectGroup sweep(group);
if (group->maybePreliminaryObjects(sweep)) {
group->maybePreliminaryObjects(sweep)->maybeAnalyze(cx, group);
}
if (group->shouldPreTenure(sweep) ||
group->maybePreliminaryObjects(sweep)) {
AutoSweepObjectGroup sweep(group);
if (group->shouldPreTenure(sweep)) {
newKind = TenuredObject;
}
}

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

@ -1001,8 +1001,8 @@ bool js::NewObjectScriptedCall(JSContext* cx, MutableHandleObject pobj) {
RootedScript script(cx, cx->currentScript(&pc));
gc::AllocKind allocKind = NewObjectGCKind(&PlainObject::class_);
NewObjectKind newKind = GenericObject;
if (script && ObjectGroup::useSingletonForAllocationSite(
script, pc, &PlainObject::class_)) {
if (script &&
ObjectGroup::useSingletonForAllocationSite(script, pc, JSProto_Object)) {
newKind = SingletonObject;
}
RootedObject obj(
@ -1066,7 +1066,7 @@ static inline JSObject* CreateThisForFunctionWithGroup(JSContext* cx,
if (newKind == SingletonObject) {
Rooted<TaggedProto> proto(
cx, TaggedProto(templateObject->staticPrototype()));
if (!JSObject::splicePrototype(cx, res, &PlainObject::class_, proto)) {
if (!JSObject::splicePrototype(cx, res, proto)) {
return nullptr;
}
} else {
@ -2113,7 +2113,7 @@ static NativeObject* DefineConstructorAndPrototype(
/* Bootstrap Function.prototype (see also JS_InitStandardClasses). */
Rooted<TaggedProto> tagged(cx, TaggedProto(proto));
if (ctor->getClass() == clasp &&
!JSObject::splicePrototype(cx, ctor, clasp, tagged)) {
!JSObject::splicePrototype(cx, ctor, tagged)) {
goto bad;
}
}
@ -2256,9 +2256,8 @@ static bool ReshapeForProtoMutation(JSContext* cx, HandleObject obj) {
return true;
}
static bool SetClassAndProto(JSContext* cx, HandleObject obj,
const Class* clasp,
Handle<js::TaggedProto> proto) {
static bool SetProto(JSContext* cx, HandleObject obj,
Handle<js::TaggedProto> proto) {
// Regenerate object shape (and possibly prototype shape) to invalidate JIT
// code that is affected by a prototype mutation.
if (!ReshapeForProtoMutation(cx, obj)) {
@ -2277,7 +2276,7 @@ static bool SetClassAndProto(JSContext* cx, HandleObject obj,
* Just splice the prototype, but mark the properties as unknown for
* consistent behavior.
*/
if (!JSObject::splicePrototype(cx, obj, clasp, proto)) {
if (!JSObject::splicePrototype(cx, obj, proto)) {
return false;
}
MarkObjectGroupUnknownProperties(cx, obj->group());
@ -2299,7 +2298,7 @@ static bool SetClassAndProto(JSContext* cx, HandleObject obj,
}
newGroup->setInterpretedFunction(oldGroup->maybeInterpretedFunction());
} else {
newGroup = ObjectGroup::defaultNewGroup(cx, clasp, proto);
newGroup = ObjectGroup::defaultNewGroup(cx, obj->getClass(), proto);
if (!newGroup) {
return false;
}
@ -2945,7 +2944,7 @@ bool js::SetPrototype(JSContext* cx, HandleObject obj, HandleObject proto,
}
Rooted<TaggedProto> taggedProto(cx, TaggedProto(proto));
if (!SetClassAndProto(cx, obj, obj->getClass(), taggedProto)) {
if (!SetProto(cx, obj, taggedProto)) {
return false;
}

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

@ -392,15 +392,8 @@ class JSObject : public js::gc::Cell {
/* Set a new prototype for an object with a singleton type. */
static bool splicePrototype(JSContext* cx, js::HandleObject obj,
const js::Class* clasp,
js::Handle<js::TaggedProto> proto);
/*
* For bootstrapping, whether to splice a prototype for Function.prototype
* or the global object.
*/
bool shouldSplicePrototype();
/*
* Environment chains.
*

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

@ -19,6 +19,7 @@
#include "js/CharacterEncoding.h"
#include "js/UniquePtr.h"
#include "vm/ArrayObject.h"
#include "vm/GlobalObject.h"
#include "vm/JSObject.h"
#include "vm/RegExpObject.h"
#include "vm/Shape.h"
@ -241,31 +242,18 @@ void ObjectGroup::setAddendum(AddendumKind kind, void* addendum,
return SingletonObject;
}
/* static */ bool ObjectGroup::useSingletonForAllocationSite(
JSScript* script, jsbytecode* pc, const Class* clasp) {
return useSingletonForAllocationSite(script, pc,
JSCLASS_CACHED_PROTO_KEY(clasp));
}
/////////////////////////////////////////////////////////////////////
// JSObject
/////////////////////////////////////////////////////////////////////
bool JSObject::shouldSplicePrototype() {
/*
* During bootstrapping, if inference is enabled we need to make sure not
* to splice a new prototype in for Function.prototype or the global
* object if their __proto__ had previously been set to null, as this
* will change the prototype for all other objects with the same type.
*/
if (staticPrototype() != nullptr) {
return false;
}
return isSingleton();
bool GlobalObject::shouldSplicePrototype() {
// During bootstrapping, we need to make sure not to splice a new prototype in
// for the global object if its __proto__ had previously been set to non-null,
// as this will change the prototype for all other objects with the same type.
return staticPrototype() == nullptr;
}
/* static */ bool JSObject::splicePrototype(JSContext* cx, HandleObject obj,
const Class* clasp,
Handle<TaggedProto> proto) {
MOZ_ASSERT(cx->compartment() == obj->compartment());
@ -279,6 +267,10 @@ bool JSObject::shouldSplicePrototype() {
// Windows may not appear on prototype chains.
MOZ_ASSERT_IF(proto.isObject(), !IsWindow(proto.toObject()));
#ifdef DEBUG
const Class* oldClass = obj->getClass();
#endif
if (proto.isObject()) {
RootedObject protoObj(cx, proto.toObject());
if (!JSObject::setDelegate(cx, protoObj)) {
@ -300,7 +292,8 @@ bool JSObject::shouldSplicePrototype() {
}
}
group->setClasp(clasp);
MOZ_ASSERT(group->clasp() == oldClass,
"splicing a prototype doesn't change a group's class");
group->setProto(proto);
return true;
}
@ -726,17 +719,6 @@ inline const Class* GetClassForProtoKey(JSProtoKey key) {
case JSProto_Array:
return &ArrayObject::class_;
case JSProto_Number:
return &NumberObject::class_;
case JSProto_Boolean:
return &BooleanObject::class_;
case JSProto_String:
return &StringObject::class_;
case JSProto_Symbol:
return &SymbolObject::class_;
case JSProto_RegExp:
return &RegExpObject::class_;
case JSProto_Int8Array:
case JSProto_Uint8Array:
case JSProto_Int16Array:
@ -748,16 +730,8 @@ inline const Class* GetClassForProtoKey(JSProtoKey key) {
case JSProto_Uint8ClampedArray:
return &TypedArrayObject::classes[key - JSProto_Int8Array];
case JSProto_ArrayBuffer:
return &ArrayBufferObject::class_;
case JSProto_SharedArrayBuffer:
return &SharedArrayBufferObject::class_;
case JSProto_DataView:
return &DataViewObject::class_;
default:
// We only expect to see plain objects, arrays, and typed arrays here.
MOZ_CRASH("Bad proto key");
}
}
@ -1764,15 +1738,13 @@ ObjectGroup* ObjectGroupRealm::getStringSplitStringGroup(JSContext* cx) {
// The following code is a specialized version of the code
// for ObjectGroup::allocationSiteGroup().
const Class* clasp = GetClassForProtoKey(JSProto_Array);
JSObject* proto = GlobalObject::getOrCreateArrayPrototype(cx, cx->global());
if (!proto) {
return nullptr;
}
Rooted<TaggedProto> tagged(cx, TaggedProto(proto));
group = makeGroup(cx, cx->realm(), clasp, tagged, /* initialFlags = */ 0);
group = makeGroup(cx, cx->realm(), &ArrayObject::class_, tagged);
if (!group) {
return nullptr;
}

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

@ -521,8 +521,6 @@ class ObjectGroup : public gc::TenuredCell {
// Whether to make a singleton object at an allocation site.
static bool useSingletonForAllocationSite(JSScript* script, jsbytecode* pc,
JSProtoKey key);
static bool useSingletonForAllocationSite(JSScript* script, jsbytecode* pc,
const Class* clasp);
// Static accessors for ObjectGroupRealm NewTable.

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

@ -363,6 +363,14 @@ class TypedArrayObjectTemplate : public TypedArrayObject {
}
}
static TypedArrayObject* newBuiltinClassInstance(JSContext* cx,
gc::AllocKind allocKind,
NewObjectKind newKind) {
JSObject* obj =
NewBuiltinClassInstance(cx, instanceClass(), allocKind, newKind);
return obj ? &obj->as<TypedArrayObject>() : nullptr;
}
static TypedArrayObject* makeProtoInstance(JSContext* cx, HandleObject proto,
gc::AllocKind allocKind) {
MOZ_ASSERT(proto);
@ -375,35 +383,24 @@ class TypedArrayObjectTemplate : public TypedArrayObject {
static TypedArrayObject* makeTypedInstance(JSContext* cx,
CreateSingleton createSingleton,
gc::AllocKind allocKind) {
const Class* clasp = instanceClass();
if (createSingleton == CreateSingleton::Yes) {
JSObject* obj =
NewBuiltinClassInstance(cx, clasp, allocKind, SingletonObject);
if (!obj) {
return nullptr;
}
return &obj->as<TypedArrayObject>();
return newBuiltinClassInstance(cx, allocKind, SingletonObject);
}
jsbytecode* pc;
RootedScript script(cx, cx->currentScript(&pc));
NewObjectKind newKind = GenericObject;
if (script &&
ObjectGroup::useSingletonForAllocationSite(script, pc, clasp)) {
newKind = SingletonObject;
}
RootedObject obj(cx,
NewBuiltinClassInstance(cx, clasp, allocKind, newKind));
Rooted<TypedArrayObject*> obj(
cx, newBuiltinClassInstance(cx, allocKind, GenericObject));
if (!obj) {
return nullptr;
}
if (script && !ObjectGroup::setAllocationSiteObjectGroup(
cx, script, pc, obj, newKind == SingletonObject)) {
cx, script, pc, obj, /* singleton = */ false)) {
return nullptr;
}
return &obj->as<TypedArrayObject>();
return obj;
}
static TypedArrayObject* makeInstance(
@ -421,8 +418,7 @@ class TypedArrayObjectTemplate : public TypedArrayObject {
// it isn't, we can do some more TI optimizations.
RootedObject checkProto(cx);
if (proto) {
checkProto = GlobalObject::getOrCreatePrototype(
cx, JSCLASS_CACHED_PROTO_KEY(instanceClass()));
checkProto = GlobalObject::getOrCreatePrototype(cx, protoKey());
if (!checkProto) {
return nullptr;
}
@ -447,25 +443,19 @@ class TypedArrayObjectTemplate : public TypedArrayObject {
size_t nbytes;
MOZ_ALWAYS_TRUE(CalculateAllocSize<NativeType>(len, &nbytes));
MOZ_ASSERT(nbytes < TypedArrayObject::SINGLETON_BYTE_LENGTH);
NewObjectKind newKind = TenuredObject;
bool fitsInline = nbytes <= INLINE_BUFFER_LIMIT;
const Class* clasp = instanceClass();
gc::AllocKind allocKind = !fitsInline ? gc::GetGCObjectKind(clasp)
gc::AllocKind allocKind = !fitsInline ? gc::GetGCObjectKind(instanceClass())
: AllocKindForLazyBuffer(nbytes);
AutoSetNewObjectMetadata metadata(cx);
jsbytecode* pc;
RootedScript script(cx, cx->currentScript(&pc));
if (script &&
ObjectGroup::useSingletonForAllocationSite(script, pc, clasp)) {
newKind = SingletonObject;
}
JSObject* tmp = NewBuiltinClassInstance(cx, clasp, allocKind, newKind);
if (!tmp) {
Rooted<TypedArrayObject*> tarray(
cx, newBuiltinClassInstance(cx, allocKind, TenuredObject));
if (!tarray) {
return nullptr;
}
Rooted<TypedArrayObject*> tarray(cx, &tmp->as<TypedArrayObject>());
initTypedArraySlots(tarray, len);
// Template objects do not need memory for its elements, since there
@ -474,7 +464,7 @@ class TypedArrayObjectTemplate : public TypedArrayObject {
tarray->initPrivate(nullptr);
if (script && !ObjectGroup::setAllocationSiteObjectGroup(
cx, script, pc, tarray, newKind == SingletonObject)) {
cx, script, pc, tarray, /* singleton = */ false)) {
return nullptr;
}
@ -787,8 +777,7 @@ class TypedArrayObjectTemplate : public TypedArrayObject {
// this compartment.
RootedObject protoRoot(cx, proto);
if (!protoRoot) {
protoRoot = GlobalObject::getOrCreatePrototype(
cx, JSCLASS_CACHED_PROTO_KEY(instanceClass()));
protoRoot = GlobalObject::getOrCreatePrototype(cx, protoKey());
if (!protoRoot) {
return nullptr;
}

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

@ -1462,9 +1462,7 @@ bool js::TryConvertToUnboxedLayout(JSContext* cx, AutoEnterAnalysis& enter,
size_t layoutSize = 0;
if (objectCount <= 1) {
// If only one of the objects has been created, it is more likely
// to have new properties added later. This heuristic is not used
// for array objects, where we might want an unboxed representation
// even if there is only one large array.
// to have new properties added later.
return true;
}

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

@ -10115,6 +10115,12 @@ void nsIPresShell::SetVisualViewportSize(nscoord aWidth, nscoord aHeight) {
if (auto* window = nsGlobalWindowInner::Cast(mDocument->GetInnerWindow())) {
window->VisualViewport()->PostResizeEvent();
}
if (nsIScrollableFrame* rootScrollFrame =
GetRootScrollFrameAsScrollable()) {
ScrollAnchorContainer* container = rootScrollFrame->GetAnchor();
container->UserScrolled();
}
}
}
@ -10130,6 +10136,12 @@ bool nsIPresShell::SetVisualViewportOffset(
window->VisualViewport()->PostScrollEvent(prevOffset,
aPrevLayoutScrollPos);
}
if (nsIScrollableFrame* rootScrollFrame =
GetRootScrollFrameAsScrollable()) {
ScrollAnchorContainer* container = rootScrollFrame->GetAnchor();
container->UserScrolled();
}
}
return didChange;
}

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

@ -9,6 +9,7 @@
#include "GeckoProfiler.h"
#include "mozilla/dom/Text.h"
#include "mozilla/StaticPrefs.h"
#include "mozilla/ToString.h"
#include "nsGfxScrollFrame.h"
#include "nsLayoutUtils.h"
@ -163,9 +164,9 @@ void ScrollAnchorContainer::SelectAnchor() {
}
AUTO_PROFILER_LABEL("ScrollAnchorContainer::SelectAnchor", LAYOUT);
ANCHOR_LOG("Selecting anchor for %p with scroll-port [%d %d x %d %d].\n",
this, mScrollFrame->mScrollPort.x, mScrollFrame->mScrollPort.y,
mScrollFrame->mScrollPort.width, mScrollFrame->mScrollPort.height);
ANCHOR_LOG(
"Selecting anchor for %p with scroll-port=%s.\n", this,
mozilla::ToString(mScrollFrame->GetVisualOptimalViewingRect()).c_str());
const nsStyleDisplay* disp = Frame()->StyleDisplay();
@ -436,7 +437,8 @@ ScrollAnchorContainer::ExamineAnchorCandidate(nsIFrame* aFrame) const {
//
// [1] https://github.com/w3c/csswg-drafts/issues/3483
nsRect visibleRect;
if (!visibleRect.IntersectRect(rect, mScrollFrame->mScrollPort)) {
if (!visibleRect.IntersectRect(rect,
mScrollFrame->GetVisualOptimalViewingRect())) {
return ExamineResult::Exclude;
}

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

@ -3983,6 +3983,17 @@ nsPoint ScrollFrameHelper::GetVisualViewportOffset() const {
return GetScrollPosition();
}
nsRect ScrollFrameHelper::GetVisualOptimalViewingRect() const {
nsIPresShell* presShell = mOuter->PresShell();
if (mIsRoot && presShell->IsVisualViewportSizeSet() &&
presShell->IsVisualViewportOffsetSet()) {
return nsRect(presShell->GetVisualViewportOffset(),
presShell->GetVisualViewportSize());
}
return mScrollPort;
}
static void AdjustForWholeDelta(int32_t aDelta, nscoord* aCoord) {
if (aDelta < 0) {
*aCoord = nscoord_MIN;

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

@ -220,6 +220,15 @@ class ScrollFrameHelper : public nsIReflowCallback {
nsRect GetScrollRange(nscoord aWidth, nscoord aHeight) const;
nsSize GetVisualViewportSize() const;
nsPoint GetVisualViewportOffset() const;
/**
* Return the 'optimal viewing region' [1] as a rect suitable for use by
* scroll anchoring.
*
* [1] https://drafts.csswg.org/css-scroll-snap-1/#optimal-viewing-region
*/
nsRect GetVisualOptimalViewingRect() const;
/**
* For LTR frames, this is the same as GetVisualViewportOffset().
* For RTL frames, we take the offset from the top right corner of the frame

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

@ -13,6 +13,7 @@
#include "mozilla/Preferences.h"
#include "nsIChannel.h"
#include "nsIURI.h"
#include "nsProxyRelease.h"
namespace mozilla {
namespace net {
@ -84,7 +85,14 @@ TrackingDummyChannel::TrackingDummyChannel(nsIURI* aURI, nsIURI* aTopWindowURI,
SetLoadInfo(aLoadInfo);
}
TrackingDummyChannel::~TrackingDummyChannel() = default;
TrackingDummyChannel::~TrackingDummyChannel() {
NS_ReleaseOnMainThreadSystemGroup("TrackingDummyChannel::mLoadInfo",
mLoadInfo.forget());
NS_ReleaseOnMainThreadSystemGroup("TrackingDummyChannel::mURI",
mURI.forget());
NS_ReleaseOnMainThreadSystemGroup("TrackingDummyChannel::mTopWindowURI",
mTopWindowURI.forget());
}
bool TrackingDummyChannel::IsTrackingResource() const {
return mIsTrackingResource;

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

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

@ -37,6 +37,7 @@ class StructuredOutputParser(OutputParser):
tbpl_compact = kwargs.pop("log_compact", False)
super(StructuredOutputParser, self).__init__(**kwargs)
self.allow_crashes = kwargs.pop("allow_crashes", False)
mozlog = self._get_mozlog_module()
self.formatter = mozlog.formatters.TbplFormatter(compact=tbpl_compact)
@ -46,6 +47,7 @@ class StructuredOutputParser(OutputParser):
self.worst_log_level = INFO
self.tbpl_status = TBPL_SUCCESS
self.harness_retry_re = TinderBoxPrintRe['harness_error']['retry_regex']
self.prev_was_unstructured = False
def _get_mozlog_module(self):
try:
@ -78,13 +80,19 @@ class StructuredOutputParser(OutputParser):
if data is None:
if self.strict:
self.critical(("Test harness output was not a valid structured log message: "
"\n%s") % line)
if not self.prev_was_unstructured:
self.critical(("Test harness output was not a valid structured log message: "
"\n%s") % line)
else:
self.critical(line)
self.update_levels(TBPL_FAILURE, log.CRITICAL)
self.prev_was_unstructured = True
else:
self._handle_unstructured_output(line)
return
self.prev_was_unstructured = False
self.handler(data)
action = data["action"]
@ -172,13 +180,24 @@ class StructuredOutputParser(OutputParser):
# These are warning/orange statuses.
failure_conditions = [
sum(summary.unexpected_statuses.values()) > 0,
summary.action_counts.get('crash', 0) > summary.expected_statuses.get('CRASH', 0),
summary.action_counts.get('valgrind_error', 0) > 0
(sum(summary.unexpected_statuses.values()), 0, "statuses", False),
(summary.action_counts.get('crash', 0),
summary.expected_statuses.get('CRASH', 0), "crashes", self.allow_crashes),
(summary.action_counts.get('valgrind_error', 0), 0,
"valgrind errors", False)
]
for condition in failure_conditions:
if condition:
self.update_levels(*fail_pair)
for value, limit, type_name, allow in failure_conditions:
if value > limit:
msg = "%d unexpected %s" % (value, type_name)
if limit != 0:
msg += " expected at most %d" % (limit)
if not allow:
self.update_levels(*fail_pair)
msg = "Got " + msg
self.error(msg)
else:
msg = "Ignored " + msg
self.warning(msg)
# These are error/red statuses. A message is output here every time something
# wouldn't otherwise be highlighted in the UI.

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

@ -342,7 +342,8 @@ class WebPlatformTest(TestingMixin, MercurialScript, CodeCoverageMixin, AndroidM
parser = StructuredOutputParser(config=self.config,
log_obj=self.log_obj,
log_compact=True,
error_list=BaseErrorList + HarnessErrorList)
error_list=BaseErrorList + HarnessErrorList,
allow_crashes=True)
env = {'MINIDUMP_SAVE_PATH': dirs['abs_blob_upload_dir']}
env['RUST_BACKTRACE'] = 'full'

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

@ -1,3 +1,9 @@
[2d.text.draw.fontface.notinpage.html]
disabled:
if verify: fails in verify mode
if debug: true
[@font-face fonts should work even if they are not used in the page]
expected:
if os == "android": PASS
FAIL

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

@ -1,2 +0,0 @@
[multi-global-origin-serialization.sub.html]
expected: TIMEOUT

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

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

@ -0,0 +1,6 @@
[idbfactory_open4.htm]
disabled: true
[IDBFactory.open() - new database has default version]
expected:
if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL

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

@ -0,0 +1,2 @@
[transaction-lifecycle.htm]
disabled: Bug 1519865

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

@ -0,0 +1,2 @@
[transaction-lifetime.htm]
disabled: Bug 1519865

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

@ -1,3 +1,8 @@
[storage-smoke-test.tentative.https.html]
expected:
TIMEOUT
if (os == "linux") and debug and not webrender: TIMEOUT
if (os == "linux") and debug and webrender: TIMEOUT
if (os == "linux") and not debug: TIMEOUT
if os == "win": TIMEOUT
if os == "android": TIMEOUT
if os == "mac": TIMEOUT

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

@ -6,3 +6,6 @@
[filesystem-urls-do-not-match-self]
expected: NOTRUN
[Expecting logs: ["violated-directive=script-src-elem"\]]
expected: NOTRUN

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

@ -1 +0,0 @@
[list-style-021.xht]

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

@ -0,0 +1,13 @@
[computed-style-animation-parsing.html]
[Test an animation name that is the same as a possible animation fill-mode.]
expected: FAIL
[Test an animation name that is the same as a possible running state.]
expected: FAIL
[Test a non-conflicting animation name.]
expected: FAIL
[Test an animation name that is the same as a possible animation direction.]
expected: FAIL

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

@ -0,0 +1,2 @@
[contain-layout-baseline-005.html]
expected: FAIL

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

@ -0,0 +1,5 @@
[documentElement-clientWidth-on-minimum-scale-size.tentative.html]
[documentElement clientWidth should be equal to device-width even if overflow:hidden region is visible]
expected:
if (os == "android"): FAIL

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

@ -7,4 +7,3 @@
if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
if debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL
if os == "android": FAIL

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

@ -0,0 +1 @@
leak-threshold: [tab:409600]

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

@ -10,3 +10,4 @@
[Test that inset-block shorthand sets longhands and serializes correctly.]
expected: FAIL
bug: https://bugzilla.mozilla.org/show_bug.cgi?id=137688

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

@ -8,3 +8,8 @@
[FFE0 FULLWIDTH CENT SIGN may appear at line start if ja and loose]
expected: FAIL
[2035 REVERSED PRIME may appear at line start if ja and loose]
expected:
if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL

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

@ -1,4 +1,7 @@
[available-size-006.html]
expected: FAIL
expected:
if not debug and not webrender and not e10s and (os == "android") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): PASS
FAIL
disabled:
if os == "android": https://github.com/web-platform-tests/wpt/issues/14933

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

@ -1,4 +1,7 @@
[available-size-007.html]
expected: FAIL
expected:
if not debug and not webrender and not e10s and (os == "android") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): PASS
FAIL
disabled:
if os == "android": https://github.com/web-platform-tests/wpt/issues/14933

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

@ -1,4 +1,7 @@
[available-size-008.html]
expected: FAIL
expected:
if not debug and not webrender and not e10s and (os == "android") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): PASS
FAIL
disabled:
if os == "android": https://github.com/web-platform-tests/wpt/issues/14933

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

@ -1,4 +1,7 @@
[available-size-015.html]
expected: FAIL
expected:
if not debug and not webrender and not e10s and (os == "android") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): PASS
FAIL
disabled:
if os == "android": https://github.com/web-platform-tests/wpt/issues/14933

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

@ -1,4 +1,7 @@
[available-size-019.html]
expected: FAIL
expected:
if not debug and not webrender and not e10s and (os == "android") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): PASS
FAIL
disabled:
if os == "android": https://github.com/web-platform-tests/wpt/issues/14933

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

@ -1,4 +1,6 @@
[text-orientation-script-001.html]
disabled:
if os == "mac": true
[Default orientation for vo=R]
expected:
if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS

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

@ -2,3 +2,7 @@
[BODY element scroll-behavior should not propagate to viewport]
expected: FAIL
[Smooth scrolling while doing history navigation.]
expected:
if os == "android": FAIL

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

@ -0,0 +1,58 @@
[CSSStyleSheet-constructable.html]
[Constructed stylesheet can be used and modified in multiple TreeScopes]
expected: FAIL
[CSSStyleSheet.replaceSync throws exception when there is import rule inside]
expected: FAIL
[Constructed style sheets can be applied on document]
expected: FAIL
[Adding non-constructed stylesheet to AdoptedStyleSheets is not allowed when the owner document of the stylesheet and the AdoptedStyleSheets are in different document trees]
expected: FAIL
[CSSStyleSheet.replaceSync replaces stylesheet text synchronously]
expected: FAIL
[Adding non-constructed stylesheet to AdoptedStyleSheets is not allowed when the owner document of the stylesheet is in the same document tree as the AdoptedStyleSheets]
expected: FAIL
[Stylesheets constructed on the main Document cannot be used in iframes]
expected: FAIL
[CSSStyleSheet.replace allows import rule inside]
expected: FAIL
[Constructed style sheets can be applied on shadow root]
expected: FAIL
[Changes to constructed stylesheets through CSSOM is reflected]
expected: FAIL
[Stylesheet constructed on iframe cannot be used in the main Document]
expected: FAIL
[CSSStyleSheet.replace produces Promise<CSSStyleSheet>]
expected: FAIL
[document.adoptedStyleSheets should initially have length 0.]
expected: FAIL
[Inserting an @import rule through insertRule on a constructed stylesheet throws an exception]
expected: FAIL
[CSSStyleSheet.replace returns rejected promise on failed imports]
expected: FAIL
[new CSSStyleSheet produces empty CSSStyleSheet]
expected: FAIL
[Adopting a shadow host will move adoptedStyleSheets but it is not applied]
expected: FAIL
[Cloning a shadow host will not clone shadow root, and also adoptedStyleSheets]
expected: FAIL
[Importing a shadow host will not copy shadow root, and also adoptedStyleSheets]
expected: FAIL

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

@ -2,3 +2,6 @@
[Origin-clean check in cross-origin CSSOM Stylesheets (redirect from cross-origin to same-origin)]
expected: FAIL
[Origin-clean check in loading error CSSOM Stylesheets]
expected: FAIL

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

@ -3,5 +3,10 @@
expected: FAIL
[Programmatic focus after click should not match :focus-visible]
expected: FAIL
expected:
if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
if debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
if not debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
FAIL

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

@ -1,4 +1,7 @@
[flexbox-justify-content-horiz-001b.xhtml]
expected: FAIL
expected:
if not debug and not webrender and not e10s and (os == "android") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): PASS
FAIL
disabled:
if os == "android": https://github.com/web-platform-tests/wpt/pull/14965

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

@ -1,3 +1,3 @@
[box-sizing-replaced-003.xht]
disabled:
if (os == "mac"): https://bugzilla.mozilla.org/show_bug.cgi?id=1383454
if os == "mac": https://bugzilla.mozilla.org/show_bug.cgi?id=1383454

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

@ -725,6 +725,9 @@
[[["delete",""\]\] "<div style=white-space:pre>foo&nbsp; [\]bar</div>" compare innerHTML]
expected: FAIL
[delete - HTML editing conformance tests]
expected: FAIL
[delete.html?6001-last]
[[["delete",""\]\] "<ol><li>fo[o</ol><ol><li>b\]ar</ol>" compare innerHTML]

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

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

@ -0,0 +1,38 @@
[euckr-encode-form-csksc56011987.html?15001-16000]
[euckr-encode-form-csksc56011987.html?6001-7000]
[euckr-encode-form-csksc56011987.html?5001-6000]
[csksc56011987 encoding (form)]
expected: FAIL
[euckr-encode-form-csksc56011987.html?2001-3000]
[euckr-encode-form-csksc56011987.html?12001-13000]
[euckr-encode-form-csksc56011987.html?14001-15000]
[euckr-encode-form-csksc56011987.html?11001-12000]
[euckr-encode-form-csksc56011987.html?8001-9000]
[euckr-encode-form-csksc56011987.html?1-1000]
[euckr-encode-form-csksc56011987.html?10001-11000]
[euckr-encode-form-csksc56011987.html?3001-4000]
[euckr-encode-form-csksc56011987.html?7001-8000]
[euckr-encode-form-csksc56011987.html?13001-14000]
[euckr-encode-form-csksc56011987.html?9001-10000]
[euckr-encode-form-csksc56011987.html?1001-2000]
[euckr-encode-form-csksc56011987.html?4001-5000]
[euckr-encode-form-csksc56011987.html?16001-17000]
[euckr-encode-form-csksc56011987.html?17001-last]

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

@ -0,0 +1,38 @@
[euckr-encode-form-korean.html?13001-14000]
[euckr-encode-form-korean.html?17001-last]
[euckr-encode-form-korean.html?15001-16000]
[euckr-encode-form-korean.html?1001-2000]
[euckr-encode-form-korean.html?12001-13000]
[euckr-encode-form-korean.html?1-1000]
[euckr-encode-form-korean.html?11001-12000]
[euckr-encode-form-korean.html?5001-6000]
[euckr-encode-form-korean.html?2001-3000]
[euckr-encode-form-korean.html?7001-8000]
[euckr-encode-form-korean.html?9001-10000]
[euckr-encode-form-korean.html?16001-17000]
[euckr-encode-form-korean.html?10001-11000]
[euckr-encode-form-korean.html?3001-4000]
[euckr-encode-form-korean.html?4001-5000]
[korean encoding (form)]
expected: FAIL
[euckr-encode-form-korean.html?8001-9000]
[euckr-encode-form-korean.html?14001-15000]
[euckr-encode-form-korean.html?6001-7000]

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

@ -1,2 +0,0 @@
[eventsource-constructor-document-domain.htm]
expected: TIMEOUT

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

@ -1,4 +1,6 @@
[layout-animations-disabled-tentative.html]
disabled:
if os == "linux" and webrender: true
[Verify that animations which are not affected by the policy run as expected.]
expected: TIMEOUT

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

@ -1,5 +1,11 @@
[layout-animations-disabled-violation-report-js-tentative.html]
expected: TIMEOUT
expected:
if (os == "linux") and not debug and not webrender: TIMEOUT
if (os == "linux") and not debug and webrender: TIMEOUT
if (os == "linux") and debug: TIMEOUT
if os == "win": TIMEOUT
if os == "android": TIMEOUT
if os == "mac": TIMEOUT
[layout-animations-disabled-violation-report-js-tentative]
expected: FAIL

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

@ -0,0 +1 @@
leak-threshold: [default:51200]

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

@ -1,2 +1,3 @@
prefs: [javascript.options.streams:true]
lsan-allowed: [mozilla::dom::FetchStream::Create, mozilla::dom::WorkerPrivate::WorkerPrivate, nsSegmentedBuffer::AppendNewSegment]
lsan-allowed: [NS_NewInputStreamReadyEvent, mozilla::dom::FetchStream::Create, mozilla::dom::WorkerPrivate::WorkerPrivate, nsSegmentedBuffer::AppendNewSegment]
leak-threshold: [default:51200]

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

@ -0,0 +1,2 @@
lsan-allowed: [Alloc, Create, EntrySlotOrCreate, FetchDriverObserver, Malloc, NewPage, Realloc, alloc_system::platform::_$LT$impl$u20$core..alloc..GlobalAlloc$u20$for$u20$alloc_system..System$GT$::alloc, alloc_system::platform::_$LT$impl$u20$core..alloc..GlobalAlloc$u20$for$u20$alloc_system..System$GT$::realloc, mozilla::SchedulerGroup::CreateEventTargetFor, mozilla::ThrottledEventQueue::Create, mozilla::dom::ChromeUtils::GenerateQI, mozilla::dom::InternalRequest::GetRequestConstructorCopy, mozilla::dom::Performance::CreateForMainThread, mozilla::dom::PerformanceMainThread::CreateNavigationTimingEntry, mozilla::dom::PerformanceStorageWorker::Create, mozilla::dom::PromiseWorkerProxy::Create, mozilla::dom::WorkerCSPEventListener::Create, mozilla::dom::WorkerFetchResolver::Create, mozilla::net::nsStandardURL::TemplatedMutator]
leak-threshold: [tab:307200]

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

@ -11,3 +11,12 @@
["no-cors" Headers object cannot have content-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
expected: FAIL
["no-cors" Headers object cannot have content-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
expected: FAIL
["no-cors" Headers object cannot have accept-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
expected: FAIL
["no-cors" Headers object cannot have accept set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
expected: FAIL

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

@ -0,0 +1,2 @@
lsan-allowed: [Alloc, DoCORSChecks, EntrySlotOrCreate, MakeUnique, Malloc, NewChannelFromURIWithProxyFlagsInternal, NewEmptyScopeData, Realloc, __rdl_alloc, __rdl_realloc, js_new, js_pod_calloc, js_pod_malloc, js_pod_realloc, mozilla::dom::ChromeUtils::GenerateQI, mozilla::dom::FetchDriver::Fetch, mozilla::dom::FetchRequest, mozilla::dom::InternalRequest::GetRequestConstructorCopy, mozilla::dom::Performance::CreateForMainThread, mozilla::net::HttpBaseChannel::HttpBaseChannel, mozilla::net::HttpChannelChild::HttpChannelChild, mozilla::net::nsHttpHandler::NewProxiedChannel2, mozilla::net::nsStandardURL::TemplatedMutator]
leak-threshold: [tab:768000]

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

@ -0,0 +1 @@
leak-threshold: [default:307200]

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

@ -1,6 +1,7 @@
[script-resource-with-json-parser-breaker.tentative.sub.html]
disabled:
if os == "android": https://bugzilla.mozilla.org/show_bug.cgi?id=1499003
expected: ERROR
[CORB-blocks 'application/pdf' that starts with the following JSON parser breaker: {} &&]
expected: FAIL

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

@ -1,6 +1,2 @@
[prompt-and-unload-script-closeable.html]
disabled:
if os == "android": https://bugzilla.mozilla.org/show_bug.cgi?id=1499003
expected:
if os == "android": CRASH
ERROR
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1519417

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

@ -1,2 +0,0 @@
[location-prototype-setting-same-origin-domain.sub.html]
expected: TIMEOUT

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

@ -0,0 +1 @@
lsan-allowed: [Alloc, alloc_system::platform::_$LT$impl$u20$core..alloc..GlobalAlloc$u20$for$u20$alloc_system..System$GT$::alloc, alloc_system::platform::_$LT$impl$u20$core..alloc..GlobalAlloc$u20$for$u20$alloc_system..System$GT$::realloc, mozilla::dom::ChromeUtils::GenerateQI]

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

@ -1,2 +0,0 @@
[document_domain_feature_policy.tentative.sub.html]
expected: TIMEOUT

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

@ -1,5 +1,4 @@
[sandboxed-document_domain.html]
expected: TIMEOUT
[Sandboxed document.domain 1]
expected: FAIL

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

@ -1,15 +1,13 @@
[no_window_open_when_term_nesting_level_nonzero.window.html]
expected:
if not debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT
ERROR
expected: ERROR
[no popups from synchronously reachable window]
expected: FAIL
expected:
if not debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT
FAIL
[no popups with frame navigation]
expected: FAIL
[no popups from another synchronously reachable window]
expected:
if not debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT
FAIL
expected: FAIL

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

@ -1,2 +0,0 @@
[windowproxy-prototype-setting-same-origin-domain.sub.html]
expected: TIMEOUT

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

@ -1,3 +1,3 @@
[opener-setter.html]
disabled:
if os == 'linux' and bits == 32 and debug: https://bugzilla.mozilla.org/show_bug.cgi?id=1483696
if (os == "linux") and (bits == 32) and debug: https://bugzilla.mozilla.org/show_bug.cgi?id=1483696

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

@ -1,5 +1,4 @@
[window-domain-success.sub.html]
expected: TIMEOUT
[postMessaging to a same-origin-domain (but not same-origin) iframe allows them to see each others' modifications]
expected: FAIL

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

@ -1,5 +1,4 @@
[window-similar-but-cross-origin-success.sub.html]
expected: TIMEOUT
[postMessaging to a not same-origin-domain, but similar origin, iframe allows them to see each others' modifications]
expected: FAIL

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

@ -2,3 +2,19 @@
[fieldset default style]
expected: FAIL
[border-left-color]
expected:
if (os == "win") or (os == "mac"): FAIL
[border-top-color]
expected:
if (os == "win") or (os == "mac"): FAIL
[border-bottom-color]
expected:
if (os == "win") or (os == "mac"): FAIL
[border-right-color]
expected:
if (os == "win") or (os == "mac"): FAIL

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

@ -1 +1 @@
leak-threshold: [default:51200]
leak-threshold: [default:51200, gpu:51200]

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