Revision fc7c0b7d097b3f584889127fd6ea350a1980cc7a authored by Emilio Cobos Álvarez on 09 April 2018, 07:01:25 UTC, committed by moz-wptsync-bot on 09 April 2018, 07:52:06 UTC
The code was trying to assert that we had frames constructed for all the nodes in the parent chain, but we don't bail out in the !GetContentInsertionFrameFor(aContainer) in the case that it's a children element, because they actually have no insertion frame, though their children do. Move the LazyFC check after the insertion point check. That makes the previous check work on the insertion point of the child, which makes it sound. This also fixes bug 1410020, and with it a Shadow DOM test-case that was failing because we had two sibling assigned to two different <slot>s, and the second one wasn't getting properly flagged, and thus the second sibling never got a frame. The other two test failures in this test are an event dispatch failure, where the position of the target is not what the test expects (we don't account for margin and padding). Filed that as bug 1450027. Also, added a test for which we have wrong layout without these patches, and that crashes with "Called Servo_Element_IsDisplayNone" with the first patch of this bug applied but not this one, due to the bogus check mentioned above. bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1303605 gecko-commit: 12a824f8d55a8fb0396fb2132974f8223c6a9606 gecko-integration-branch: central gecko-reviewers: bz
1 parent a835486
idlharness.https.html
<!DOCTYPE html>
<meta charset="utf-8">
<title>WebAudio IDL tests</title>
<link rel="help" href="https://webaudio.github.io/web-audio-api/"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/WebIDLParser.js"></script>
<script src="/resources/idlharness.js"></script>
<script>
'use strict';
promise_test(async t => {
const [html, dom, uievents, mediacapture, webaudio] = await Promise.all([
// Needed for EventTarget, HTMLMediaElement
'/interfaces/html.idl',
// Needed for Event, EventListener
'/interfaces/dom.idl',
// Needed for MouseEvent
'/interfaces/uievents.idl',
// Needed for MediaStream, MediaStreamTrack
'/interfaces/mediacapture-main.idl',
'/interfaces/web-audio-api.idl'
].map(url => fetch(url).then(response => response.text())));
const idl_array = new IdlArray();
// Dependencies of HTML
idl_array.add_untested_idls('interface LinkStyle {};');
idl_array.add_untested_idls('interface SVGElement {};');
idl_array.add_untested_idls('interface WorkletGlobalScope {};');
idl_array.add_untested_idls(html);
idl_array.add_untested_idls(uievents, { only: [
'MouseEvent',
'MouseEventInit',
'EventModifierInit',
'UIEvent',
'UIEventInit',
]});
idl_array.add_untested_idls(dom);
idl_array.add_untested_idls(mediacapture);
idl_array.add_untested_idls('interface Worklet {};');
idl_array.add_idls(webaudio);
const sample_rate = 44100;
const context = new AudioContext;
const buffer = new AudioBuffer({length: 1, sampleRate: sample_rate});
await context.audioWorklet.addModule(
'the-audio-api/the-audioworklet-interface/processors/dummy-processor.js');
const worklet_node = new AudioWorkletNode(context, 'dummy');
idl_array.add_objects({
BaseAudioContext: [],
AudioContext: [context],
OfflineAudioContext: [new OfflineAudioContext(1, 1, sample_rate)],
OfflineAudioCompletionEvent: [
new OfflineAudioCompletionEvent('', {renderedBuffer: buffer})],
AudioBuffer: [buffer],
AudioNode: [],
AudioParam: [new AudioBufferSourceNode(context).playbackRate],
AudioScheduledSourceNode: [],
AnalyserNode: [new AnalyserNode(context)],
AudioBufferSourceNode: [new AudioBufferSourceNode(context)],
AudioDestinationNode: [context.destination],
AudioListener: [context.listener],
AudioProcessingEvent: [new AudioProcessingEvent('', {
playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer
})],
BiquadFilterNode: [new BiquadFilterNode(context)],
ChannelMergerNode: [new ChannelMergerNode(context)],
ChannelSplitterNode: [new ChannelSplitterNode(context)],
ConstantSourceNode: [new ConstantSourceNode(context)],
ConvolverNode: [new ConvolverNode(context)],
DelayNode: [new DelayNode(context)],
DynamicsCompressorNode: [new DynamicsCompressorNode(context)],
GainNode: [new GainNode(context)],
IIRFilterNode: [
new IIRFilterNode(context, {feedforward: [1], feedback: [1]})],
MediaElementAudioSourceNode: [
new MediaElementAudioSourceNode(context, {mediaElement: new Audio})],
MediaStreamAudioDestinationNode: [
new MediaStreamAudioDestinationNode(context)],
MediaStreamAudioSourceNode: [],
MediaStreamTrackAudioSourceNode: [],
OscillatorNode: [new OscillatorNode(context)],
PannerNode: [new PannerNode(context)],
PeriodicWave: [new PeriodicWave(context)],
ScriptProcessorNode: [context.createScriptProcessor()],
StereoPannerNode: [new StereoPannerNode(context)],
WaveShaperNode: [new WaveShaperNode(context)],
AudioWorklet: [context.audioWorklet],
AudioWorkletGlobalScope: [],
AudioParamMap: [worklet_node.parameters],
AudioWorkletNode: [worklet_node],
AudioWorkletProcessor: [],
});
idl_array.test();
}, 'Test driver');
</script>
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...