зеркало из https://github.com/mozilla/gecko-dev.git
Merge mozilla-central to inbound. a=merge CLOSED TREE
This commit is contained in:
Коммит
4702133ded
|
@ -28,13 +28,22 @@ class FontPropertyValue extends PureComponent {
|
|||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
// Whether the user is dragging the slider thumb or pressing on the numeric stepper.
|
||||
interactive: false
|
||||
};
|
||||
this.onChange = this.onChange.bind(this);
|
||||
this.onMouseDown = this.onMouseDown.bind(this);
|
||||
this.onMouseUp = this.onMouseUp.bind(this);
|
||||
this.onUnitChange = this.onUnitChange.bind(this);
|
||||
}
|
||||
|
||||
onChange(e) {
|
||||
this.props.onChange(this.props.name, e.target.value, this.props.unit);
|
||||
const value = e.target.value;
|
||||
this.setState((prevState) => {
|
||||
return { ...prevState, value };
|
||||
});
|
||||
}
|
||||
|
||||
onUnitChange(e) {
|
||||
|
@ -43,6 +52,18 @@ class FontPropertyValue extends PureComponent {
|
|||
this.props.onChange(this.props.name, this.props.value, e.target.value);
|
||||
}
|
||||
|
||||
onMouseDown(e) {
|
||||
this.setState((prevState, props) => {
|
||||
return { ...prevState, interactive: true, value: props.value };
|
||||
});
|
||||
}
|
||||
|
||||
onMouseUp(e) {
|
||||
this.setState((prevState, props) => {
|
||||
return { ...prevState, interactive: false, value: props.value };
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
// Guard against bad axis data.
|
||||
if (this.props.min === this.props.max) {
|
||||
|
@ -53,8 +74,14 @@ class FontPropertyValue extends PureComponent {
|
|||
min: this.props.min,
|
||||
max: this.props.max,
|
||||
onChange: this.onChange,
|
||||
onMouseDown: this.onMouseDown,
|
||||
onMouseUp: this.onMouseUp,
|
||||
step: this.props.step || 1,
|
||||
value: this.props.value || this.props.defaultValue,
|
||||
// While interacting with the slider or numeric stepper, prevent updating value from
|
||||
// outside props which may be debounced and could cause jitter when rendering.
|
||||
value: this.state.interactive
|
||||
? this.state.value
|
||||
: this.props.value || this.props.defaultValue,
|
||||
};
|
||||
|
||||
const range = dom.input(
|
||||
|
|
|
@ -78,7 +78,7 @@ class FontInspector {
|
|||
this.onNewNode = this.onNewNode.bind(this);
|
||||
this.onPreviewFonts = this.onPreviewFonts.bind(this);
|
||||
this.onPropertyChange = this.onPropertyChange.bind(this);
|
||||
this.onRuleUpdated = this.onRuleUpdated.bind(this);
|
||||
this.onRulePropertyUpdated = debounce(this.onRulePropertyUpdated, 100, this);
|
||||
this.onToggleFontHighlight = this.onToggleFontHighlight.bind(this);
|
||||
this.onThemeChanged = this.onThemeChanged.bind(this);
|
||||
this.update = this.update.bind(this);
|
||||
|
@ -142,7 +142,7 @@ class FontInspector {
|
|||
destroy() {
|
||||
this.inspector.selection.off("new-node-front", this.onNewNode);
|
||||
this.inspector.sidebar.off("fontinspector-selected", this.onNewNode);
|
||||
this.ruleView.off("property-value-updated", this.onRuleUpdated);
|
||||
this.ruleView.off("property-value-updated", this.onRulePropertyUpdated);
|
||||
gDevTools.off("theme-switched", this.onThemeChanged);
|
||||
|
||||
this.document = null;
|
||||
|
@ -480,7 +480,7 @@ class FontInspector {
|
|||
textProperty.setValue(value);
|
||||
}
|
||||
|
||||
this.ruleView.on("property-value-updated", this.onRuleUpdated);
|
||||
this.ruleView.on("property-value-updated", this.onRulePropertyUpdated);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -539,6 +539,7 @@ class FontInspector {
|
|||
* Selection 'new-node' event handler.
|
||||
*/
|
||||
onNewNode() {
|
||||
this.ruleView.off("property-value-updated", this.onRulePropertyUpdated);
|
||||
if (this.isPanelVisible()) {
|
||||
this.update();
|
||||
this.refreshFontEditor();
|
||||
|
@ -578,9 +579,17 @@ class FontInspector {
|
|||
|
||||
/**
|
||||
* Handler for "property-value-updated" event emitted from the rule view whenever a
|
||||
* property value changes.
|
||||
* property value changes. Ignore changes to properties unrelated to the font editor.
|
||||
*
|
||||
* @param {Object} eventData
|
||||
* Object with the property name and value.
|
||||
* Example: { name: "font-size", value: "1em" }
|
||||
*/
|
||||
async onRuleUpdated() {
|
||||
async onRulePropertyUpdated(eventData) {
|
||||
if (!FONT_PROPERTIES.includes(eventData.property)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.isPanelVisible()) {
|
||||
await this.refreshFontEditor();
|
||||
}
|
||||
|
@ -714,6 +723,8 @@ class FontInspector {
|
|||
|
||||
this.store.dispatch(updateFontEditor(fontsUsed, families, properties));
|
||||
this.inspector.emit("fonteditor-updated");
|
||||
// Listen to manual changes in the Rule view that could update the Font Editor state
|
||||
this.ruleView.on("property-value-updated", this.onRulePropertyUpdated);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -820,7 +831,7 @@ class FontInspector {
|
|||
}
|
||||
|
||||
// Prevent reacting to changes we caused.
|
||||
this.ruleView.off("property-value-updated", this.onRuleUpdated);
|
||||
this.ruleView.off("property-value-updated", this.onRulePropertyUpdated);
|
||||
// Live preview font property changes on the page.
|
||||
textProperty.rule.previewPropertyValue(textProperty, value, "");
|
||||
// Sync Rule view with changes reflected on the page (debounced).
|
||||
|
|
|
@ -74,6 +74,10 @@ MarkupContainer.prototype = {
|
|||
|
||||
// Marking the node as shown or hidden
|
||||
this.updateIsDisplayed();
|
||||
|
||||
if (node.isShadowRoot) {
|
||||
this.markup.telemetry.scalarSet("devtools.shadowdom.shadow_root_displayed", true);
|
||||
}
|
||||
},
|
||||
|
||||
buildMarkup: function() {
|
||||
|
@ -332,6 +336,10 @@ MarkupContainer.prototype = {
|
|||
if (this.showExpander) {
|
||||
this.tagLine.setAttribute("aria-expanded", this.expanded);
|
||||
}
|
||||
|
||||
if (this.node.isShadowRoot) {
|
||||
this.markup.telemetry.scalarSet("devtools.shadowdom.shadow_root_expanded", true);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
|
@ -39,9 +39,9 @@ SlottedNodeContainer.prototype = extend(MarkupContainer.prototype, {
|
|||
return;
|
||||
}
|
||||
|
||||
this.markup.inspector.selection.setNodeFront(this.node, {
|
||||
reason: "reveal-from-slot"
|
||||
});
|
||||
const reason = "reveal-from-slot";
|
||||
this.markup.inspector.selection.setNodeFront(this.node, { reason });
|
||||
this.markup.telemetry.scalarSet("devtools.shadowdom.reveal_link_clicked", true);
|
||||
},
|
||||
|
||||
isDraggable: function() {
|
||||
|
|
|
@ -423,7 +423,7 @@ TextPropertyEditor.prototype = {
|
|||
this.valueSpan.innerHTML = "";
|
||||
this.valueSpan.appendChild(frag);
|
||||
|
||||
this.ruleView.emit("property-value-updated", this.valueSpan);
|
||||
this.ruleView.emit("property-value-updated", { property: name, value: val });
|
||||
|
||||
// Highlight the currently used font in font-family properties.
|
||||
// If we cannot find a match, highlight the first generic family instead.
|
||||
|
|
|
@ -157,24 +157,8 @@ html|button, html|select {
|
|||
background-image: linear-gradient(to bottom, hsla(209,18%,18%,0.9), hsl(210,11%,16%));
|
||||
}
|
||||
|
||||
.devtools-autocomplete-listbox .autocomplete-selected,
|
||||
.devtools-autocomplete-listbox .autocomplete-item:hover {
|
||||
background-color: rgba(128,128,128,0.3);
|
||||
}
|
||||
|
||||
.theme-dark .devtools-autocomplete-listbox .autocomplete-selected,
|
||||
.theme-dark .devtools-autocomplete-listbox .autocomplete-item:hover {
|
||||
background-color: rgba(0,0,0,0.5);
|
||||
}
|
||||
|
||||
.devtools-autocomplete-listbox .autocomplete-selected > .autocomplete-value,
|
||||
.devtools-autocomplete-listbox:focus .autocomplete-selected > .initial-value {
|
||||
color: #222;
|
||||
}
|
||||
|
||||
.theme-dark .devtools-autocomplete-listbox .autocomplete-selected > .autocomplete-value,
|
||||
.theme-dark .devtools-autocomplete-listbox:focus .autocomplete-selected > .initial-value {
|
||||
color: hsl(208,100%,60%);
|
||||
background: var(--theme-selection-background-hover);
|
||||
}
|
||||
|
||||
.devtools-autocomplete-listbox .autocomplete-item > span {
|
||||
|
@ -185,8 +169,18 @@ html|button, html|select {
|
|||
color: #ccc;
|
||||
}
|
||||
|
||||
.theme-dark .devtools-autocomplete-listbox .autocomplete-selected > span {
|
||||
color: #eee;
|
||||
.devtools-autocomplete-listbox .autocomplete-selected,
|
||||
.devtools-autocomplete-listbox .autocomplete-selected:hover {
|
||||
background-color: var(--theme-selection-background);
|
||||
color: var(--theme-selection-color);
|
||||
}
|
||||
|
||||
.devtools-autocomplete-listbox .autocomplete-selected > span {
|
||||
color: var(--theme-selection-color);
|
||||
}
|
||||
|
||||
.devtools-autocomplete-listbox .autocomplete-selected > .initial-value {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Autocomplete list clone used for accessibility. */
|
||||
|
|
|
@ -1809,6 +1809,35 @@ waitForAllPaints(() => {
|
|||
await ensureElementRemoval(div);
|
||||
});
|
||||
|
||||
add_task(async function no_restyling_animations_in_out_of_view_iframe() {
|
||||
const div = addDiv(null, { style: 'overflow-y: scroll; height: 100px;' });
|
||||
|
||||
const iframe = document.createElement('iframe');
|
||||
iframe.setAttribute(
|
||||
'srcdoc',
|
||||
'<div style="height: 100px;"></div><div id="target"></div>');
|
||||
div.appendChild(iframe);
|
||||
|
||||
await new Promise(resolve => {
|
||||
iframe.addEventListener('load', () => {
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
|
||||
const target = iframe.contentDocument.getElementById("target");
|
||||
target.style= 'width: 100px; height: 100px;';
|
||||
|
||||
const animation = target.animate({ backgroundColor: [ 'blue', 'green' ] },
|
||||
100 * MS_PER_SEC);
|
||||
await waitForAnimationReadyToRestyle(animation);
|
||||
|
||||
const markers = await observeStylingInTargetWindow(iframe.contentWindow, 5);
|
||||
is(markers.length, 0,
|
||||
'Animation in out-of-view iframe should be throttled');
|
||||
|
||||
await ensureElementRemoval(div);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[DEFAULT]
|
||||
subsuite = webgl1-core
|
||||
subsuite = webgl
|
||||
support-files =
|
||||
file_bug1233613.html
|
||||
file_texImage2D.html
|
||||
|
|
|
@ -20,6 +20,7 @@ BASE_TEST_LIST_PATHSTR = 'checkout/00_test_list.txt'
|
|||
GENERATED_PATHSTR = 'generated'
|
||||
WEBGL2_TEST_MANGLE = '2_'
|
||||
PATH_SEP_MANGLING = '__'
|
||||
WEBGL2_SKIP_IF_CONDITION = "(os == 'android' || os == 'linux')"
|
||||
|
||||
SUPPORT_DIRS = [
|
||||
'checkout',
|
||||
|
@ -32,36 +33,11 @@ EXTRA_SUPPORT_FILES = [
|
|||
]
|
||||
|
||||
ACCEPTABLE_ERRATA_KEYS = set([
|
||||
'fail-if',
|
||||
'skip-if',
|
||||
'fail-if',
|
||||
'skip-if',
|
||||
'subsuite',
|
||||
])
|
||||
|
||||
def ChooseSubsuite(name):
|
||||
# name: generated/test_2_conformance2__vertex_arrays__vertex-array-object.html
|
||||
|
||||
split = name.split('__')
|
||||
|
||||
version = '1'
|
||||
if '/test_2_' in split[0]:
|
||||
version = '2'
|
||||
|
||||
category = 'core'
|
||||
|
||||
split[0] = split[0].split('/')[1]
|
||||
if 'deqp' in split[0]:
|
||||
if version == '1':
|
||||
# There's few enough that we'll just merge them with webgl1-ext.
|
||||
category = 'ext'
|
||||
else:
|
||||
category = 'deqp'
|
||||
elif 'conformance' in split[0]:
|
||||
if split[1] in ('glsl', 'glsl3', 'ogles'):
|
||||
category = 'ext'
|
||||
elif split[1] == 'textures' and split[2] != 'misc':
|
||||
category = 'ext'
|
||||
|
||||
return 'webgl{}-{}'.format(version, category)
|
||||
|
||||
########################################################################
|
||||
# GetTestList
|
||||
|
||||
|
@ -404,15 +380,31 @@ def WriteManifest(wrapperPathStrList, supportPathStrList):
|
|||
sectionName = '[' + wrapperManifestPathStr + ']'
|
||||
manifestTestLineList.append(sectionName)
|
||||
|
||||
def always_skip():
|
||||
# Skip deqp tests for now because they take too long.
|
||||
if '/test_deqp__' in wrapperPathStr:
|
||||
return True
|
||||
if '/test_2_deqp__' in wrapperPathStr:
|
||||
return True
|
||||
return False
|
||||
|
||||
errataLines = []
|
||||
|
||||
subsuite = ChooseSubsuite(wrapperPathStr)
|
||||
errataLines.append('subsuite = ' + subsuite)
|
||||
|
||||
if wrapperPathStr in errataMap:
|
||||
assert subsuite
|
||||
errataLines += errataMap[wrapperPathStr]
|
||||
errataLines = errataMap[wrapperPathStr]
|
||||
del errataMap[wrapperPathStr]
|
||||
elif always_skip():
|
||||
errataLines.append('skip-if = 1')
|
||||
|
||||
if IsWrapperWebGL2(wrapperPathStr):
|
||||
needsSkip = True
|
||||
for i in range(len(errataLines)):
|
||||
if errataLines[i].startswith('skip-if'):
|
||||
errataLines[i] += ' || ' + WEBGL2_SKIP_IF_CONDITION
|
||||
needsSkip = False
|
||||
continue
|
||||
|
||||
if needsSkip:
|
||||
errataLines.append('skip-if = ' + WEBGL2_SKIP_IF_CONDITION)
|
||||
|
||||
manifestTestLineList += errataLines
|
||||
continue
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -22,6 +22,8 @@
|
|||
# * Windows 10: 10.0
|
||||
|
||||
[DEFAULT]
|
||||
subsuite = webgl
|
||||
skip-if = os == 'linux'
|
||||
|
||||
[generated/test_..__always-fail.html]
|
||||
fail-if = 1
|
||||
|
@ -626,24 +628,6 @@ skip-if = (os == 'linux')
|
|||
skip-if = (os == 'linux')
|
||||
[generated/test_conformance__rendering__clipping-wide-points.html]
|
||||
fail-if = (os == 'linux')
|
||||
[generated/test_2_conformance2__context__context-attributes-depth-stencil-antialias-obeyed.html]
|
||||
fail-if = (os == 'linux')
|
||||
[generated/test_2_conformance2__rendering__blitframebuffer-multisampled-readbuffer.html]
|
||||
fail-if = (os == 'linux')
|
||||
[generated/test_2_conformance2__rendering__clipping-wide-points.html]
|
||||
fail-if = (os == 'linux')
|
||||
[generated/test_2_conformance2__rendering__draw-buffers.html]
|
||||
fail-if = (os == 'linux')
|
||||
[generated/test_2_conformance2__state__gl-get-calls.html]
|
||||
fail-if = (os == 'linux')
|
||||
[generated/test_2_conformance2__state__gl-object-get-calls.html]
|
||||
fail-if = (os == 'linux')
|
||||
[generated/test_2_conformance__state__gl-get-calls.html]
|
||||
fail-if = (os == 'linux')
|
||||
[generated/test_2_conformance__glsl__bugs__sampler-array-using-loop-index.html]
|
||||
fail-if = (os == 'linux')
|
||||
[generated/test_2_conformance2__glsl3__texture-offset-out-of-range.html]
|
||||
fail-if = (os == 'linux')
|
||||
|
||||
########################################################################
|
||||
########################################################################
|
||||
|
|
|
@ -10968,7 +10968,6 @@ IsFrameScrolledOutOfView(const nsIFrame* aTarget,
|
|||
{
|
||||
nsIScrollableFrame* scrollableFrame =
|
||||
nsLayoutUtils::GetNearestScrollableFrame(const_cast<nsIFrame*>(aParent),
|
||||
nsLayoutUtils::SCROLLABLE_SAME_DOC |
|
||||
nsLayoutUtils::SCROLLABLE_FIXEDPOS_FINDS_ROOT |
|
||||
nsLayoutUtils::SCROLLABLE_INCLUDE_HIDDEN);
|
||||
if (!scrollableFrame) {
|
||||
|
|
|
@ -343,15 +343,21 @@ mochitest-valgrind:
|
|||
mochitest-flavor: plain
|
||||
chunked: true
|
||||
|
||||
mochitest-webgl1-core:
|
||||
description: "Mochitest webgl1-core run"
|
||||
suite: mochitest/mochitest-webgl1-core
|
||||
treeherder-symbol: M(gl1c)
|
||||
mochitest-webgl:
|
||||
description: "Mochitest webgl run"
|
||||
suite: mochitest/mochitest-gl
|
||||
treeherder-symbol: M(gl)
|
||||
run-on-projects:
|
||||
by-test-platform:
|
||||
windows10-64-ccov/.*: [] # Do not run on Windows ccov, see bug 1419475.
|
||||
default: built-projects
|
||||
virtualization: virtual-with-gpu
|
||||
chunks:
|
||||
by-test-platform:
|
||||
android-em-7.0-x86/opt: 1
|
||||
android-em.*: 10
|
||||
windows.*: 8
|
||||
default: 3
|
||||
e10s:
|
||||
by-test-platform:
|
||||
linux32/debug: both
|
||||
|
@ -360,123 +366,20 @@ mochitest-webgl1-core:
|
|||
max-run-time:
|
||||
by-test-platform:
|
||||
windows.*: 5400
|
||||
android-em.*: 7200
|
||||
default: 3600
|
||||
instance-size:
|
||||
by-test-platform:
|
||||
android-em.*: xlarge
|
||||
default: default
|
||||
# Bug 1296733: llvmpipe with mesa 9.2.1 lacks thread safety
|
||||
allow-software-gl-layers: false
|
||||
mozharness:
|
||||
mochitest-flavor: plain
|
||||
tier:
|
||||
by-test-platform:
|
||||
linux64-qr/.*: 1
|
||||
default: default
|
||||
|
||||
mochitest-webgl1-ext:
|
||||
description: "Mochitest webgl1-ext run"
|
||||
suite: mochitest/mochitest-webgl1-ext
|
||||
treeherder-symbol: M(gl1e)
|
||||
run-on-projects:
|
||||
by-test-platform:
|
||||
windows10-64-ccov/.*: [] # Do not run on Windows ccov, see bug 1419475.
|
||||
default: built-projects
|
||||
virtualization: virtual-with-gpu
|
||||
e10s:
|
||||
by-test-platform:
|
||||
linux32/debug: both
|
||||
default: true
|
||||
loopback-video: true
|
||||
max-run-time:
|
||||
by-test-platform:
|
||||
windows.*: 5400
|
||||
default: 3600
|
||||
# Bug 1296733: llvmpipe with mesa 9.2.1 lacks thread safety
|
||||
allow-software-gl-layers: false
|
||||
mozharness:
|
||||
mochitest-flavor: plain
|
||||
tier:
|
||||
by-test-platform:
|
||||
linux64-qr/.*: 1
|
||||
default: default
|
||||
|
||||
mochitest-webgl2-core:
|
||||
description: "Mochitest webgl2-core run"
|
||||
suite: mochitest/mochitest-webgl2-core
|
||||
treeherder-symbol: M(gl2c)
|
||||
run-on-projects:
|
||||
by-test-platform:
|
||||
windows10-64-ccov/.*: [] # Do not run on Windows ccov, see bug 1419475.
|
||||
default: built-projects
|
||||
virtualization: virtual-with-gpu
|
||||
e10s:
|
||||
by-test-platform:
|
||||
linux32/debug: both
|
||||
default: true
|
||||
loopback-video: true
|
||||
max-run-time:
|
||||
by-test-platform:
|
||||
windows.*: 5400
|
||||
default: 3600
|
||||
# Bug 1296733: llvmpipe with mesa 9.2.1 lacks thread safety
|
||||
allow-software-gl-layers: false
|
||||
mozharness:
|
||||
mochitest-flavor: plain
|
||||
tier:
|
||||
by-test-platform:
|
||||
linux64-qr/.*: 1
|
||||
default: default
|
||||
|
||||
mochitest-webgl2-ext:
|
||||
description: "Mochitest webgl2-ext run"
|
||||
suite: mochitest/mochitest-webgl2-ext
|
||||
treeherder-symbol: M(gl2e)
|
||||
run-on-projects:
|
||||
by-test-platform:
|
||||
windows10-64-ccov/.*: [] # Do not run on Windows ccov, see bug 1419475.
|
||||
default: built-projects
|
||||
virtualization: virtual-with-gpu
|
||||
chunks: 4
|
||||
e10s:
|
||||
by-test-platform:
|
||||
linux32/debug: both
|
||||
default: true
|
||||
loopback-video: true
|
||||
max-run-time:
|
||||
by-test-platform:
|
||||
windows.*: 5400
|
||||
default: 3600
|
||||
# Bug 1296733: llvmpipe with mesa 9.2.1 lacks thread safety
|
||||
allow-software-gl-layers: false
|
||||
mozharness:
|
||||
mochitest-flavor: plain
|
||||
chunked: true
|
||||
tier:
|
||||
by-test-platform:
|
||||
linux64-qr/.*: 1
|
||||
default: default
|
||||
|
||||
mochitest-webgl2-deqp:
|
||||
description: "Mochitest webgl2-deqp run"
|
||||
suite: mochitest/mochitest-webgl2-deqp
|
||||
treeherder-symbol: M(gl2d)
|
||||
run-on-projects:
|
||||
by-test-platform:
|
||||
windows10-64-ccov/.*: [] # Do not run on Windows ccov, see bug 1419475.
|
||||
default: [] # Don't run this for now.
|
||||
virtualization: virtual-with-gpu
|
||||
chunks: 4
|
||||
e10s:
|
||||
by-test-platform:
|
||||
linux32/debug: both
|
||||
default: true
|
||||
loopback-video: true
|
||||
max-run-time:
|
||||
by-test-platform:
|
||||
windows.*: 5400
|
||||
default: 3600
|
||||
# Bug 1296733: llvmpipe with mesa 9.2.1 lacks thread safety
|
||||
allow-software-gl-layers: false
|
||||
mozharness:
|
||||
mochitest-flavor: plain
|
||||
chunked: true
|
||||
chunked:
|
||||
by-test-platform:
|
||||
android-em.*: false
|
||||
default: true
|
||||
tier:
|
||||
by-test-platform:
|
||||
linux64-qr/.*: 1
|
||||
|
|
|
@ -33,8 +33,7 @@ common-tests:
|
|||
- mochitest-devtools-chrome
|
||||
- mochitest-gpu
|
||||
- mochitest-media
|
||||
- mochitest-webgl1-core
|
||||
- mochitest-webgl1-ext
|
||||
- mochitest-webgl
|
||||
- reftest
|
||||
- reftest-no-accel
|
||||
- telemetry-tests-client
|
||||
|
@ -110,7 +109,7 @@ linux-qr-tests:
|
|||
- mochitest-a11y
|
||||
- mochitest-gpu
|
||||
- mochitest-media
|
||||
- mochitest-webgl1-core
|
||||
- mochitest-webgl
|
||||
- reftest
|
||||
- xpcshell
|
||||
|
||||
|
@ -141,7 +140,7 @@ windows-qr-tests:
|
|||
- mochitest
|
||||
- mochitest-gpu
|
||||
- mochitest-media
|
||||
- mochitest-webgl1-core
|
||||
- mochitest-webgl
|
||||
- reftest
|
||||
|
||||
jsdcov-code-coverage-tests:
|
||||
|
@ -171,10 +170,7 @@ windows-tests:
|
|||
- mochitest-devtools-chrome
|
||||
- mochitest-gpu
|
||||
- mochitest-media
|
||||
- mochitest-webgl1-core
|
||||
- mochitest-webgl1-ext
|
||||
- mochitest-webgl2-core
|
||||
- mochitest-webgl2-ext
|
||||
- mochitest-webgl
|
||||
- reftest
|
||||
- reftest-no-accel
|
||||
- test-coverage
|
||||
|
@ -243,10 +239,7 @@ macosx64-tests:
|
|||
- mochitest-devtools-chrome
|
||||
- mochitest-gpu
|
||||
- mochitest-media
|
||||
- mochitest-webgl1-core
|
||||
- mochitest-webgl1-ext
|
||||
- mochitest-webgl2-core
|
||||
- mochitest-webgl2-ext
|
||||
- mochitest-webgl
|
||||
- reftest
|
||||
- test-verify
|
||||
- test-verify-gpu
|
||||
|
@ -314,7 +307,7 @@ linux32-tests:
|
|||
- mochitest-clipboard
|
||||
- mochitest-gpu
|
||||
- mochitest-media
|
||||
- mochitest-webgl1-core
|
||||
- mochitest-webgl
|
||||
- reftest
|
||||
- reftest-no-accel
|
||||
- web-platform-tests
|
||||
|
@ -344,10 +337,6 @@ android-common-tests:
|
|||
- mochitest-clipboard
|
||||
- mochitest-gpu
|
||||
- mochitest-media
|
||||
# - mochitest-webgl1-core
|
||||
# - mochitest-webgl1-ext
|
||||
# - mochitest-webgl2-core
|
||||
# - mochitest-webgl2-ext
|
||||
- reftest
|
||||
- test-verify
|
||||
- xpcshell
|
||||
|
@ -374,7 +363,7 @@ android-x86-kvm-tests:
|
|||
- mochitest-clipboard
|
||||
- mochitest-gpu
|
||||
- mochitest-media
|
||||
# - mochitest-webgl1-core
|
||||
# - mochitest-webgl
|
||||
- reftest
|
||||
- test-verify
|
||||
|
||||
|
|
|
@ -33,11 +33,7 @@ tasks = {k: v for k, v in [
|
|||
unittest_task('mochitest-browser-chrome', 'linux/opt'),
|
||||
unittest_task('mochitest-browser-chrome-e10s', 'linux64/opt'),
|
||||
unittest_task('mochitest-chrome', 'linux/debug', 'debug'),
|
||||
unittest_task('mochitest-webgl1-core', 'linux/debug', 'debug'),
|
||||
unittest_task('mochitest-webgl1-ext', 'linux/debug', 'debug'),
|
||||
unittest_task('mochitest-webgl2-core', 'linux/debug', 'debug'),
|
||||
unittest_task('mochitest-webgl2-ext', 'linux/debug', 'debug'),
|
||||
unittest_task('mochitest-webgl2-deqp', 'linux/debug', 'debug'),
|
||||
unittest_task('mochitest-webgl', 'linux/debug', 'debug'),
|
||||
unittest_task('extra1', 'linux', 'debug/opt'),
|
||||
unittest_task('extra2', 'win32/opt'),
|
||||
unittest_task('crashtest-e10s', 'linux/other'),
|
||||
|
@ -182,22 +178,16 @@ class TestTryOptionSyntax(unittest.TestCase):
|
|||
self.assertEqual(sorted(tos.unittests), sorted([{'test': t} for t in unittest_tasks]))
|
||||
|
||||
def test_u_single(self):
|
||||
"-u mochitest-webgl1-core sets unittests=[mochitest-webgl1-core]"
|
||||
parameters = {'try_options': parse_message('try: -u mochitest-webgl1-core')}
|
||||
"-u mochitest-webgl sets unittests=[mochitest-webgl]"
|
||||
parameters = {'try_options': parse_message('try: -u mochitest-webgl')}
|
||||
tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
|
||||
self.assertEqual(sorted(tos.unittests), sorted([{'test': 'mochitest-webgl1-core'}]))
|
||||
self.assertEqual(sorted(tos.unittests), sorted([{'test': 'mochitest-webgl'}]))
|
||||
|
||||
def test_u_alias(self):
|
||||
"-u mochitest-gl sets unittests=[mochitest-webgl*]"
|
||||
"-u mochitest-gl sets unittests=[mochitest-webgl]"
|
||||
parameters = {'try_options': parse_message('try: -u mochitest-gl')}
|
||||
tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
|
||||
self.assertEqual(sorted(tos.unittests), sorted([{'test': t} for t in [
|
||||
'mochitest-webgl1-core',
|
||||
'mochitest-webgl1-ext',
|
||||
'mochitest-webgl2-core',
|
||||
'mochitest-webgl2-ext',
|
||||
'mochitest-webgl2-deqp',
|
||||
]]))
|
||||
self.assertEqual(sorted(tos.unittests), sorted([{'test': 'mochitest-webgl'}]))
|
||||
|
||||
def test_u_multi_alias(self):
|
||||
"-u e10s sets unittests=[all e10s unittests]"
|
||||
|
@ -208,11 +198,11 @@ class TestTryOptionSyntax(unittest.TestCase):
|
|||
]))
|
||||
|
||||
def test_u_commas(self):
|
||||
"-u mochitest-webgl1-core,gtest sets unittests=both"
|
||||
parameters = {'try_options': parse_message('try: -u mochitest-webgl1-core,gtest')}
|
||||
"-u mochitest-webgl,gtest sets unittests=both"
|
||||
parameters = {'try_options': parse_message('try: -u mochitest-webgl,gtest')}
|
||||
tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
|
||||
self.assertEqual(sorted(tos.unittests), sorted([
|
||||
{'test': 'mochitest-webgl1-core'},
|
||||
{'test': 'mochitest-webgl'},
|
||||
{'test': 'gtest'},
|
||||
]))
|
||||
|
||||
|
|
|
@ -22,17 +22,6 @@ here = os.path.abspath(os.path.dirname(__file__))
|
|||
MOCHITEST_CHUNK_BY_DIR = 4
|
||||
MOCHITEST_TOTAL_CHUNKS = 5
|
||||
|
||||
|
||||
def WebglSuite(name):
|
||||
return {
|
||||
'aliases': (name,),
|
||||
'mach_command': 'mochitest',
|
||||
'kwargs': {'flavor': 'plain', 'subsuite': name, 'test_paths': None},
|
||||
'task_regex': ['mochitest-' + name + '(?:-e10s)?(?:-1)?$',
|
||||
'test-verify(?:-gpu)?(?:-e10s)?(?:-1)?$'],
|
||||
}
|
||||
|
||||
|
||||
TEST_SUITES = {
|
||||
'cppunittest': {
|
||||
'aliases': ('cpp',),
|
||||
|
@ -132,11 +121,13 @@ TEST_SUITES = {
|
|||
'kwargs': {'flavor': 'browser-chrome', 'subsuite': 'screenshots', 'test_paths': None},
|
||||
'task_regex': ['browser-screenshots(?:-e10s)?(?:-1)?$'],
|
||||
},
|
||||
'mochitest-webgl1-core': WebglSuite('webgl1-core'),
|
||||
'mochitest-webgl1-ext': WebglSuite('webgl1-ext'),
|
||||
'mochitest-webgl2-core': WebglSuite('webgl2-core'),
|
||||
'mochitest-webgl2-ext': WebglSuite('webgl2-ext'),
|
||||
'mochitest-webgl2-deqp': WebglSuite('webgl2-deqp'),
|
||||
'mochitest-webgl': {
|
||||
'aliases': ('webgl',),
|
||||
'mach_command': 'mochitest',
|
||||
'kwargs': {'flavor': 'plain', 'subsuite': 'webgl', 'test_paths': None},
|
||||
'task_regex': ['mochitest-webgl(?:-e10s)?(?:-1)?$',
|
||||
'test-verify(?:-gpu)?(?:-e10s)?(?:-1)?$'],
|
||||
},
|
||||
'python': {
|
||||
'mach_command': 'python-test',
|
||||
'kwargs': {'tests': None},
|
||||
|
@ -214,11 +205,7 @@ _test_subsuites = {
|
|||
('mochitest', 'gpu'): 'mochitest-gpu',
|
||||
('mochitest', 'media'): 'mochitest-media',
|
||||
('mochitest', 'robocop'): 'robocop',
|
||||
('mochitest', 'webgl1-core'): 'mochitest-webgl1-core',
|
||||
('mochitest', 'webgl1-ext'): 'mochitest-webgl1-ext',
|
||||
('mochitest', 'webgl2-core'): 'mochitest-webgl2-core',
|
||||
('mochitest', 'webgl2-ext'): 'mochitest-webgl2-ext',
|
||||
('mochitest', 'webgl2-deqp'): 'mochitest-webgl2-deqp',
|
||||
('mochitest', 'webgl'): 'mochitest-webgl',
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -5,27 +5,6 @@
|
|||
|
||||
import os
|
||||
|
||||
|
||||
def WebglSuite(name):
|
||||
return {
|
||||
"run_filename": "runtestsremote.py",
|
||||
"testsdir": "mochitest",
|
||||
"options": [
|
||||
"--app=%(app)s",
|
||||
"--remote-webserver=%(remote_webserver)s",
|
||||
"--xre-path=%(xre_path)s",
|
||||
"--utility-path=%(utility_path)s",
|
||||
"--certificate-path=%(certs_path)s",
|
||||
"--symbols-path=%(symbols_path)s",
|
||||
"--quiet",
|
||||
"--log-raw=%(raw_log_file)s",
|
||||
"--log-errorsummary=%(error_summary_file)s",
|
||||
"--screenshot-on-fail",
|
||||
"--subsuite=" + name,
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
config = {
|
||||
"default_actions": [
|
||||
'clobber',
|
||||
|
@ -65,11 +44,23 @@ config = {
|
|||
"--screenshot-on-fail",
|
||||
],
|
||||
},
|
||||
"mochitest-webgl1-core": WebglSuite("webgl1-core"),
|
||||
"mochitest-webgl2-core": WebglSuite("webgl2-core"),
|
||||
"mochitest-webgl1-ext": WebglSuite("webgl1-ext"),
|
||||
"mochitest-webgl2-ext": WebglSuite("webgl2-ext"),
|
||||
"mochitest-webgl2-deqp": WebglSuite("webgl2-deqp"),
|
||||
"mochitest-gl": {
|
||||
"run_filename": "runtestsremote.py",
|
||||
"testsdir": "mochitest",
|
||||
"options": [
|
||||
"--app=%(app)s",
|
||||
"--remote-webserver=%(remote_webserver)s",
|
||||
"--xre-path=%(xre_path)s",
|
||||
"--utility-path=%(utility_path)s",
|
||||
"--certificate-path=%(certs_path)s",
|
||||
"--symbols-path=%(symbols_path)s",
|
||||
"--quiet",
|
||||
"--log-raw=%(raw_log_file)s",
|
||||
"--log-errorsummary=%(error_summary_file)s",
|
||||
"--screenshot-on-fail",
|
||||
"--subsuite=webgl",
|
||||
],
|
||||
},
|
||||
"mochitest-chrome": {
|
||||
"run_filename": "runtestsremote.py",
|
||||
"testsdir": "mochitest",
|
||||
|
|
|
@ -1,31 +1,5 @@
|
|||
import os
|
||||
|
||||
|
||||
def WebglSuite(name):
|
||||
return {
|
||||
"run_filename": "runtestsremote.py",
|
||||
"testsdir": "mochitest",
|
||||
"options": [
|
||||
"--app=%(app)s",
|
||||
"--remote-webserver=%(remote_webserver)s",
|
||||
"--xre-path=%(xre_path)s",
|
||||
"--utility-path=%(utility_path)s",
|
||||
"--http-port=%(http_port)s",
|
||||
"--ssl-port=%(ssl_port)s",
|
||||
"--certificate-path=%(certs_path)s",
|
||||
"--symbols-path=%(symbols_path)s",
|
||||
"--quiet",
|
||||
"--log-raw=%(raw_log_file)s",
|
||||
"--log-raw-level=%(log_raw_level)s",
|
||||
"--log-errorsummary=%(error_summary_file)s",
|
||||
"--log-tbpl-level=%(log_tbpl_level)s",
|
||||
"--screenshot-on-fail",
|
||||
"--subsuite=" + name,
|
||||
"--deviceSerial=%(device_serial)s",
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
config = {
|
||||
"robocop_package_name": "org.mozilla.roboexample.test",
|
||||
"marionette_address": "%(device_ip)s:2828",
|
||||
|
@ -83,11 +57,28 @@ config = {
|
|||
"--deviceSerial=%(device_serial)s",
|
||||
],
|
||||
},
|
||||
"mochitest-webgl1-core": WebglSuite("webgl1-core"),
|
||||
"mochitest-webgl2-core": WebglSuite("webgl2-core"),
|
||||
"mochitest-webgl1-ext": WebglSuite("webgl1-ext"),
|
||||
"mochitest-webgl2-ext": WebglSuite("webgl2-ext"),
|
||||
"mochitest-webgl2-deqp": WebglSuite("webgl2-deqp"),
|
||||
"mochitest-gl": {
|
||||
"run_filename": "runtestsremote.py",
|
||||
"testsdir": "mochitest",
|
||||
"options": [
|
||||
"--app=%(app)s",
|
||||
"--remote-webserver=%(remote_webserver)s",
|
||||
"--xre-path=%(xre_path)s",
|
||||
"--utility-path=%(utility_path)s",
|
||||
"--http-port=%(http_port)s",
|
||||
"--ssl-port=%(ssl_port)s",
|
||||
"--certificate-path=%(certs_path)s",
|
||||
"--symbols-path=%(symbols_path)s",
|
||||
"--quiet",
|
||||
"--log-raw=%(raw_log_file)s",
|
||||
"--log-raw-level=%(log_raw_level)s",
|
||||
"--log-errorsummary=%(error_summary_file)s",
|
||||
"--log-tbpl-level=%(log_tbpl_level)s",
|
||||
"--screenshot-on-fail",
|
||||
"--subsuite=webgl",
|
||||
"--deviceSerial=%(device_serial)s",
|
||||
],
|
||||
},
|
||||
"mochitest-chrome": {
|
||||
"run_filename": "runtestsremote.py",
|
||||
"testsdir": "mochitest",
|
||||
|
|
|
@ -182,11 +182,7 @@ config = {
|
|||
"browser-chrome-coverage": ["--flavor=browser", "--chunk-by-runtime", "--timeout=1200"],
|
||||
"browser-chrome-screenshots": ["--flavor=browser", "--subsuite=screenshots"],
|
||||
"browser-chrome-instrumentation": ["--flavor=browser"],
|
||||
"mochitest-webgl1-core": ["--subsuite=webgl1-core"],
|
||||
"mochitest-webgl1-ext": ["--subsuite=webgl1-ext"],
|
||||
"mochitest-webgl2-core": ["--subsuite=webgl2-core"],
|
||||
"mochitest-webgl2-ext": ["--subsuite=webgl2-ext"],
|
||||
"mochitest-webgl2-deqp": ["--subsuite=webgl2-deqp"],
|
||||
"mochitest-gl": ["--subsuite=webgl"],
|
||||
"mochitest-devtools-chrome": ["--flavor=browser", "--subsuite=devtools"],
|
||||
"mochitest-devtools-chrome-chunked": ["--flavor=browser", "--subsuite=devtools", "--chunk-by-runtime"],
|
||||
"mochitest-devtools-chrome-coverage": ["--flavor=browser", "--subsuite=devtools", "--chunk-by-runtime", "--timeout=1200"],
|
||||
|
|
|
@ -146,11 +146,7 @@ config = {
|
|||
"browser-chrome-addons": ["--flavor=browser", "--chunk-by-runtime", "--tag=addons"],
|
||||
"browser-chrome-screenshots": ["--flavor=browser", "--subsuite=screenshots"],
|
||||
"browser-chrome-instrumentation": ["--flavor=browser"],
|
||||
"mochitest-webgl1-core": ["--subsuite=webgl1-core"],
|
||||
"mochitest-webgl1-ext": ["--subsuite=webgl1-ext"],
|
||||
"mochitest-webgl2-core": ["--subsuite=webgl2-core"],
|
||||
"mochitest-webgl2-ext": ["--subsuite=webgl2-ext"],
|
||||
"mochitest-webgl2-deqp": ["--subsuite=webgl2-deqp"],
|
||||
"mochitest-gl": ["--subsuite=webgl"],
|
||||
"mochitest-devtools-chrome": ["--flavor=browser", "--subsuite=devtools"],
|
||||
"mochitest-devtools-chrome-chunked": ["--flavor=browser", "--subsuite=devtools", "--chunk-by-runtime"],
|
||||
"a11y": ["--flavor=a11y"],
|
||||
|
|
|
@ -169,11 +169,7 @@ config = {
|
|||
"browser-chrome-addons": ["--flavor=browser", "--chunk-by-runtime", "--tag=addons"],
|
||||
"browser-chrome-screenshots": ["--flavor=browser", "--subsuite=screenshots"],
|
||||
"browser-chrome-instrumentation": ["--flavor=browser"],
|
||||
"mochitest-webgl1-core": ["--subsuite=webgl1-core"],
|
||||
"mochitest-webgl1-ext": ["--subsuite=webgl1-ext"],
|
||||
"mochitest-webgl2-core": ["--subsuite=webgl2-core"],
|
||||
"mochitest-webgl2-ext": ["--subsuite=webgl2-ext"],
|
||||
"mochitest-webgl2-deqp": ["--subsuite=webgl2-deqp"],
|
||||
"mochitest-gl": ["--subsuite=webgl"],
|
||||
"mochitest-devtools-chrome": ["--flavor=browser", "--subsuite=devtools"],
|
||||
"mochitest-devtools-chrome-chunked": ["--flavor=browser", "--subsuite=devtools", "--chunk-by-runtime"],
|
||||
"mochitest-metro-chrome": ["--flavor=browser", "--metro-immersive"],
|
||||
|
|
|
@ -157,11 +157,7 @@ config = {
|
|||
"browser-chrome-addons": ["--flavor=browser", "--chunk-by-runtime", "--tag=addons"],
|
||||
"browser-chrome-screenshots": ["--flavor=browser", "--subsuite=screenshots"],
|
||||
"browser-chrome-instrumentation": ["--flavor=browser"],
|
||||
"mochitest-webgl1-core": ["--subsuite=webgl1-core"],
|
||||
"mochitest-webgl1-ext": ["--subsuite=webgl1-ext"],
|
||||
"mochitest-webgl2-core": ["--subsuite=webgl2-core"],
|
||||
"mochitest-webgl2-ext": ["--subsuite=webgl2-ext"],
|
||||
"mochitest-webgl2-deqp": ["--subsuite=webgl2-deqp"],
|
||||
"mochitest-gl": ["--subsuite=webgl"],
|
||||
"mochitest-devtools-chrome": ["--flavor=browser", "--subsuite=devtools"],
|
||||
"mochitest-devtools-chrome-chunked": ["--flavor=browser", "--subsuite=devtools", "--chunk-by-runtime"],
|
||||
"mochitest-metro-chrome": ["--flavor=browser", "--metro-immersive"],
|
||||
|
|
|
@ -28,11 +28,7 @@ _mochitest_summary = {
|
|||
TinderBoxPrintRe = {
|
||||
"mochitest_summary": _mochitest_summary,
|
||||
"mochitest-chrome_summary": _mochitest_summary,
|
||||
"mochitest-webgl1-core_summary": _mochitest_summary,
|
||||
"mochitest-webgl1-ext_summary": _mochitest_summary,
|
||||
"mochitest-webgl2-core_summary": _mochitest_summary,
|
||||
"mochitest-webgl2-ext_summary": _mochitest_summary,
|
||||
"mochitest-webgl2-deqp_summary": _mochitest_summary,
|
||||
"mochitest-gl_summary": _mochitest_summary,
|
||||
"mochitest-media_summary": _mochitest_summary,
|
||||
"mochitest-plain-clipboard_summary": _mochitest_summary,
|
||||
"mochitest-plain-gpu_summary": _mochitest_summary,
|
||||
|
|
|
@ -112,11 +112,7 @@ class SingleTestMixin(object):
|
|||
('browser-chrome', 'gpu'): 'browser-chrome-gpu',
|
||||
('chrome', 'gpu'): 'chrome-gpu',
|
||||
('plain', 'gpu'): 'plain-gpu',
|
||||
('plain', 'webgl1-core'): 'mochitest-webgl1-core',
|
||||
('plain', 'webgl1-ext'): 'mochitest-webgl1-ext',
|
||||
('plain', 'webgl2-core'): 'mochitest-webgl2-core',
|
||||
('plain', 'webgl2-ext'): 'mochitest-webgl2-ext',
|
||||
('plain', 'webgl2-deqp'): 'mochitest-webgl2-deqp',
|
||||
('plain', 'webgl'): 'mochitest-gl',
|
||||
}
|
||||
if entry in subsuite_mapping:
|
||||
suite = subsuite_mapping[entry]
|
||||
|
|
|
@ -315,11 +315,7 @@ You can set this by specifying --test-url URL
|
|||
'mochitest-media': 'mochitest',
|
||||
'mochitest-plain-clipboard': 'mochitest',
|
||||
'mochitest-plain-gpu': 'mochitest',
|
||||
'mochitest-webgl1-core': 'mochitest',
|
||||
'mochitest-webgl1-ext': 'mochitest',
|
||||
'mochitest-webgl2-core': 'mochitest',
|
||||
'mochitest-webgl2-ext': 'mochitest',
|
||||
'mochitest-webgl2-deqp': 'mochitest',
|
||||
'mochitest-gl': 'mochitest',
|
||||
'geckoview': 'mochitest',
|
||||
'geckoview-junit': 'mochitest',
|
||||
'jsreftest': 'reftest',
|
||||
|
|
|
@ -948,6 +948,50 @@ devtools.inspector:
|
|||
record_in_processes:
|
||||
- 'main'
|
||||
|
||||
devtools.shadowdom:
|
||||
shadow_root_displayed:
|
||||
bug_numbers:
|
||||
- 1470128
|
||||
description: >
|
||||
Whether the markup view displayed any #shadow-root element in the UI.
|
||||
expires: "66"
|
||||
kind: boolean
|
||||
notification_emails:
|
||||
- dev-developer-tools@lists.mozilla.org
|
||||
- jdescottes@mozilla.com
|
||||
release_channel_collection: opt-out
|
||||
record_in_processes:
|
||||
- 'main'
|
||||
|
||||
shadow_root_expanded:
|
||||
bug_numbers:
|
||||
- 1470128
|
||||
description: >
|
||||
Whether the user expanded any #shadow-root element.
|
||||
expires: "66"
|
||||
kind: boolean
|
||||
notification_emails:
|
||||
- dev-developer-tools@lists.mozilla.org
|
||||
- jdescottes@mozilla.com
|
||||
release_channel_collection: opt-out
|
||||
record_in_processes:
|
||||
- 'main'
|
||||
|
||||
reveal_link_clicked:
|
||||
bug_numbers:
|
||||
- 1470128
|
||||
description: >
|
||||
Whether the user clicked on any "reveal" link. "reveal" links are displayed in
|
||||
shadow dom trees in the markup view.
|
||||
expires: "66"
|
||||
kind: boolean
|
||||
notification_emails:
|
||||
- dev-developer-tools@lists.mozilla.org
|
||||
- jdescottes@mozilla.com
|
||||
release_channel_collection: opt-out
|
||||
record_in_processes:
|
||||
- 'main'
|
||||
|
||||
devtools:
|
||||
current_theme:
|
||||
bug_numbers:
|
||||
|
|
Загрузка…
Ссылка в новой задаче