зеркало из https://github.com/mozilla/gecko-dev.git
Merge mozilla-inbound to mozilla-central. a=merge
This commit is contained in:
Коммит
a612973f64
|
@ -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 [\]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]
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче