Merge mozilla-central to autoland. CLOSED TREE

This commit is contained in:
Cosmin Sabou 2019-04-02 01:03:10 +03:00
commit 1a956a4090
2535 changed files with 17943 additions and 4509 deletions

View File

@ -43,6 +43,8 @@ add_task(async function() {
const worker2Thread = workers[1].actor;
const mainThreadSource = findSource(dbg, "doc-windowless-workers.html");
await waitForSource(dbg, "simple-worker.js");
const workerSource = findSource(dbg, "simple-worker.js");
info("Test pausing in the main thread");

View File

@ -192,10 +192,7 @@ async function waitForSources(dbg, ...sources) {
function waitForSource(dbg, url) {
return waitForState(
dbg,
state => {
const sources = dbg.selectors.getSources(state);
return Object.values(sources).find(s => (s.url || "").includes(url));
},
state => findSource(dbg, url, { silent: true }),
"source exists"
);
}

View File

@ -2501,6 +2501,18 @@ nsDOMWindowUtils::ZoomToFocusedInput() {
flags |= layers::ONLY_ZOOM_TO_DEFAULT_SCALE;
}
// The content may be inside a scrollable subframe inside a non-scrollable
// root content document. In this scenario, we want to ensure that the
// main-thread side knows to scroll the content into view before we get
// the bounding content rect and ask APZ to adjust the visual viewport.
shell->ScrollContentIntoView(
content,
nsIPresShell::ScrollAxis(nsIPresShell::SCROLL_MINIMUM,
nsIPresShell::SCROLL_IF_NOT_VISIBLE),
nsIPresShell::ScrollAxis(nsIPresShell::SCROLL_MINIMUM,
nsIPresShell::SCROLL_IF_NOT_VISIBLE),
nsIPresShell::SCROLL_OVERFLOW_HIDDEN);
CSSRect bounds =
nsLayoutUtils::GetBoundingContentRect(content, rootScrollFrame);
if (bounds.IsEmpty()) {

View File

@ -461,7 +461,7 @@ function testElements(parent, tags, shouldBeFocusable)
while ((descendant = descendant.firstChild))
element = descendant;
if (element.nodeName == "IFRAME" && element.hasAttribute("src"))
if (element.nodeName == "IFRAME")
var foo = element.contentDocument;
element.focus();

View File

@ -0,0 +1,28 @@
<!DOCTYPE>
<html>
<head>
<title>Checking zoomToFocusedInput scrolls that focused input element is visible position</title>
<script type="application/javascript" src="apz_test_utils.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/paint_listener.js"></script>
</head>
<body>
<div style="height: 8000px;">ABC</div>
<input id="input1">
<script type="application/javascript">
function test() {
let SimpleTest = window.opener.SimpleTest;
SimpleTest.is(0, window.scrollY, "scroll position starts at zero");
input1.focus();
SimpleTest.isnot(0, window.scrollY, "scroll position isn't top");
window.scrollTo(0, 0);
SimpleTest.is(0, window.scrollY, "scroll position is top");
SpecialPowers.getDOMWindowUtils(window).zoomToFocusedInput();
SimpleTest.isnot(0, window.scrollY, "scroll position isn't top");
}
waitUntilApzStable().then(test).then(subtestDone);
</script>
</body>
</html>

View File

@ -58,3 +58,4 @@
skip-if = (toolkit == 'android') # wheel events not supported on mobile
[test_group_hittest.html]
skip-if = (toolkit == 'android') # mouse events not supported on mobile
[test_group_zoomToFocusedInput.html]

View File

@ -0,0 +1,27 @@
<!DOCTYPE>
<html>
<head>
<meta charset="utf-8">
<title>Various zoomToFocusedInput tests</title>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="apz_test_utils.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
<script type="application/javascript">
var subtests = [
{"file": "helper_zoomToFocusedInput_scroll.html"},
];
if (isApzEnabled()) {
SimpleTest.waitForExplicitFinish();
window.onload = function() {
runSubtestsSeriallyInFreshWindows(subtests)
.then(SimpleTest.finish, SimpleTest.finish);
};
}
</script>
</head>
<body>
</body>
</html>

View File

@ -263,15 +263,23 @@ inline void AssertGCThingIsNotNurseryAllocable(js::gc::Cell* cell) {}
#endif
/**
* The Heap<T> class is a heap-stored reference to a JS GC thing. All members of
* heap classes that refer to GC things should use Heap<T> (or possibly
* TenuredHeap<T>, described below).
* The Heap<T> class is a heap-stored reference to a JS GC thing for use outside
* the JS engine. All members of heap classes that refer to GC things should use
* Heap<T> (or possibly TenuredHeap<T>, described below).
*
* Heap<T> is an abstraction that hides some of the complexity required to
* maintain GC invariants for the contained reference. It uses operator
* overloading to provide a normal pointer interface, but notifies the GC every
* time the value it contains is updated. This is necessary for generational GC,
* which keeps track of all pointers into the nursery.
* overloading to provide a normal pointer interface, but adds barriers to
* notify the GC of changes.
*
* Heap<T> implements the following barriers:
*
* - Pre-write barrier (necessary for incremental GC).
* - Post-write barrier (necessary for generational GC).
* - Read barrier (necessary for cycle collector integration).
*
* Heap<T> may be moved or destroyed outside of GC finalization and hence may be
* used in dynamic storage such as a Vector.
*
* Heap<T> instances must be traced when their containing object is traced to
* keep the pointed-to GC thing alive.

View File

@ -25,6 +25,8 @@ namespace js {
* All values except ropes are hashable as-is.
*/
class HashableValue {
// This is used for map and set keys. We use OrderedHashTableRef to update all
// nursery keys on minor GC, so a post barrier is not required here.
PreBarrieredValue value;
public:

View File

@ -19,28 +19,111 @@
/*
* [SMDOC] GC Barriers
*
* A write barrier is a mechanism used by incremental or generation GCs to
* Several kinds of barrier are necessary to allow the GC to function correctly.
* These are triggered by reading or writing to GC pointers in the heap and
* serve to tell the collector about changes to the graph of reachable GC
* things.
*
* Since it would be awkward to change every write to memory into a function
* call, this file contains a bunch of C++ classes and templates that use
* operator overloading to take care of barriers automatically. In most cases,
* all that's necessary is to replace:
*
* Type* field;
*
* with:
*
* HeapPtr<Type> field;
*
* All heap-based GC pointers and tagged pointers must use one of these classes,
* except in a couple of exceptional cases.
*
* These classes are designed to be used by the internals of the JS engine.
* Barriers designed to be used externally are provided in js/RootingAPI.h.
*
* Overview
* ========
*
* This file implements the following concrete classes:
*
* HeapPtr General wrapper for heap-based pointers that provides pre- and
* post-write barriers. Most clients should use this.
*
* GCPtr An optimisation of HeapPtr for objects which are only destroyed
* by GC finalization (this rules out use in Vector, for example).
*
* PreBarriered Provides a pre-barrier but not a post-barrier. Necessary when
* generational GC updates are handled manually, e.g. for hash
* table keys that don't use MovableCellHasher.
*
* HeapSlot Provides pre and post-barriers, optimised for use in JSObject
* slots and elements.
*
* ReadBarriered Provides read and post-write barriers, for use with weak
* pointers.
*
* The following classes are implemented in js/RootingAPI.h (in the JS
* namespace):
*
* Heap General wrapper for external clients. Like HeapPtr but also
* handles cycle collector concerns. Most external clients should
* use this.
*
* TenuredHeap Like Heap but doesn't allow nursery pointers. Allows storing
* flags in unused lower bits of the pointer.
*
* Which class to use?
* -------------------
*
* Answer the following questions to decide which barrier class is right for
* your use case:
*
* Is your code part of the JS engine?
* Yes, it's internal =>
* Is your pointer weak or strong?
* Strong =>
* Do you want automatic handling of nursery pointers?
* Yes, of course =>
* Can your object be destroyed outside of a GC?
* Yes => Use HeapPtr<T>
* No => Use GCPtr<T> (optimization)
* No, I'll do this myself => Use PreBarriered<T>
* Weak => Use ReadBarriered<T>
* No, it's external =>
* Can your pointer refer to nursery objects?
* Yes => Use JS::Heap<T>
* Never => Use JS::TenuredHeap<T> (optimization)
*
* Write barriers
* ==============
*
* A write barrier is a mechanism used by incremental or generational GCs to
* ensure that every value that needs to be marked is marked. In general, the
* write barrier should be invoked whenever a write can cause the set of things
* traced through by the GC to change. This includes:
*
* - writes to object properties
* - writes to array slots
* - writes to fields like JSObject::shape_ that we trace through
* - writes to fields in private data
* - writes to non-markable fields like JSObject::private that point to
* markable data
*
* The last category is the trickiest. Even though the private pointer does not
* point to a GC thing, changing the private pointer may change the set of
* objects that are traced by the GC. Therefore it needs a write barrier.
*
* Every barriered write should have the following form:
*
* <pre-barrier>
* obj->field = value; // do the actual write
* <post-barrier>
*
* The pre-barrier is used for incremental GC and the post-barrier is for
* generational GC.
*
* PRE-BARRIER
* Pre-write barrier
* -----------------
*
* To understand the pre-barrier, let's consider how incremental GC works. The
* GC itself is divided into "slices". Between each slice, JS code is allowed to
@ -97,18 +180,8 @@
* value0. E.g., see JSObject::writeBarrierPre, which is used if obj->field is
* a JSObject*. It takes value0 as a parameter.
*
* READ-BARRIER
*
* Incremental GC requires that weak pointers have read barriers. The problem
* happens when, during an incremental GC, some code reads a weak pointer and
* writes it somewhere on the heap that has been marked black in a previous
* slice. Since the weak pointer will not otherwise be marked and will be swept
* and finalized in the last slice, this will leave the pointer just written
* dangling after the GC. To solve this, we immediately mark black all weak
* pointers that get read between slices so that it is safe to store them in an
* already marked part of the heap, e.g. in Rooted.
*
* POST-BARRIER
* Post-write barrier
* ------------------
*
* For generational GC, we want to be able to quickly collect the nursery in a
* minor collection. Part of the way this is achieved is to only mark the
@ -130,15 +203,33 @@
* come to do a minor collection we can examine the contents of the store buffer
* and mark any edge targets that are in the nursery.
*
* IMPLEMENTATION DETAILS
* Read barriers
* =============
*
* Since it would be awkward to change every write to memory into a function
* call, this file contains a bunch of C++ classes and templates that use
* operator overloading to take care of barriers automatically. In many cases,
* all that's necessary to make some field be barriered is to replace
* Type* field;
* with
* GCPtr<Type> field;
* Weak pointer read barrier
* -------------------------
*
* Weak pointers must have a read barrier to prevent the referent from being
* collected if it is read after the start of an incremental GC.
*
* The problem happens when, during an incremental GC, some code reads a weak
* pointer and writes it somewhere on the heap that has been marked black in a
* previous slice. Since the weak pointer will not otherwise be marked and will
* be swept and finalized in the last slice, this will leave the pointer just
* written dangling after the GC. To solve this, we immediately mark black all
* weak pointers that get read between slices so that it is safe to store them
* in an already marked part of the heap, e.g. in Rooted.
*
* Cycle collector read barrier
* ----------------------------
*
* Heap pointers external to the engine may be marked gray. The JS API has an
* invariant that no gray pointers may be passed, and this maintained by a read
* barrier that calls ExposeGCThingToActiveJS on such pointers. This is
* implemented by JS::Heap<T> in js/RootingAPI.h.
*
* Implementation Details
* ======================
*
* One additional note: not all object writes need to be pre-barriered. Writes
* to newly allocated objects do not need a pre-barrier. In these cases, we use
@ -146,7 +237,7 @@
* the init naming idiom in many places to signify that a field is being
* assigned for the first time.
*
* This file implements four classes, illustrated here:
* This file implements the following hierarchy of classes:
*
* BarrieredBase base class of all barriers
* | |
@ -183,10 +274,9 @@
* -> InternalBarrierMethods<Value>::postBarrier
* -> StoreBuffer::put
*
* These classes are designed to be used by the internals of the JS engine.
* Barriers designed to be used externally are provided in js/RootingAPI.h.
* These external barriers call into the same post-barrier implementations at
* InternalBarrierMethods<T>::post via an indirect call to Heap(.+)Barrier.
* Barriers for use outside of the JS engine call into the same barrier
* implementations at InternalBarrierMethods<T>::post via an indirect call to
* Heap(.+)WriteBarriers.
*
* These clases are designed to be used to wrap GC thing pointers or values that
* act like them (i.e. JS::Value and jsid). It is possible to use them for
@ -195,37 +285,10 @@
*/
class JSFlatString;
class JSLinearString;
namespace js {
class AccessorShape;
class ArrayObject;
class ArgumentsObject;
class ArrayBufferObjectMaybeShared;
class ArrayBufferObject;
class ArrayBufferViewObject;
class SharedArrayBufferObject;
class BaseShape;
class DebugEnvironmentProxy;
class GlobalObject;
class LazyScript;
class ModuleObject;
class ModuleEnvironmentObject;
class ModuleNamespaceObject;
class NativeObject;
class PlainObject;
class PropertyName;
class SavedFrame;
class EnvironmentObject;
class ScriptSourceObject;
class Shape;
class UnownedBaseShape;
class ObjectGroup;
namespace jit {
class JitCode;
} // namespace jit
#ifdef DEBUG
@ -399,7 +462,10 @@ class WriteBarrieredBase
* PreBarriered only automatically handles pre-barriers. Post-barriers must be
* manually implemented when using this class. GCPtr and HeapPtr should be used
* in all cases that do not require explicit low-level control of moving
* behavior, e.g. for HashMap keys.
* behavior.
*
* This class is useful for example for HashMap keys where automatically
* updating a moved nursery pointer would break the hash table.
*/
template <class T>
class PreBarriered : public WriteBarrieredBase<T> {
@ -911,9 +977,12 @@ struct DefaultHasher<js::ReadBarriered<T>> : js::ReadBarrieredHasher<T> {};
namespace js {
class ArrayObject;
class ArrayBufferObject;
class DebugEnvironmentProxy;
class GlobalObject;
class ObjectGroup;
class PropertyName;
class Scope;
class ScriptSourceObject;
class Shape;
@ -921,63 +990,49 @@ class BaseShape;
class UnownedBaseShape;
class WasmInstanceObject;
class WasmTableObject;
namespace jit {
class JitCode;
} // namespace jit
typedef PreBarriered<JSObject*> PreBarrieredObject;
typedef PreBarriered<JSScript*> PreBarrieredScript;
typedef PreBarriered<jit::JitCode*> PreBarrieredJitCode;
typedef PreBarriered<JSString*> PreBarrieredString;
typedef PreBarriered<JSAtom*> PreBarrieredAtom;
using PreBarrieredObject = PreBarriered<JSObject*>;
using PreBarrieredValue = PreBarriered<Value>;
typedef GCPtr<NativeObject*> GCPtrNativeObject;
typedef GCPtr<ArrayObject*> GCPtrArrayObject;
typedef GCPtr<ArrayBufferObjectMaybeShared*> GCPtrArrayBufferObjectMaybeShared;
typedef GCPtr<ArrayBufferObject*> GCPtrArrayBufferObject;
typedef GCPtr<BaseShape*> GCPtrBaseShape;
typedef GCPtr<JSAtom*> GCPtrAtom;
typedef GCPtr<JSFlatString*> GCPtrFlatString;
typedef GCPtr<JSFunction*> GCPtrFunction;
typedef GCPtr<JSLinearString*> GCPtrLinearString;
typedef GCPtr<JSObject*> GCPtrObject;
typedef GCPtr<JSScript*> GCPtrScript;
typedef GCPtr<JSString*> GCPtrString;
typedef GCPtr<ModuleObject*> GCPtrModuleObject;
typedef GCPtr<ModuleEnvironmentObject*> GCPtrModuleEnvironmentObject;
typedef GCPtr<ModuleNamespaceObject*> GCPtrModuleNamespaceObject;
typedef GCPtr<PlainObject*> GCPtrPlainObject;
typedef GCPtr<PropertyName*> GCPtrPropertyName;
typedef GCPtr<Shape*> GCPtrShape;
typedef GCPtr<UnownedBaseShape*> GCPtrUnownedBaseShape;
typedef GCPtr<jit::JitCode*> GCPtrJitCode;
typedef GCPtr<ObjectGroup*> GCPtrObjectGroup;
typedef GCPtr<Scope*> GCPtrScope;
using GCPtrNativeObject = GCPtr<NativeObject*>;
using GCPtrArrayObject = GCPtr<ArrayObject*>;
using GCPtrBaseShape = GCPtr<BaseShape*>;
using GCPtrAtom = GCPtr<JSAtom*>;
using GCPtrFlatString = GCPtr<JSFlatString*>;
using GCPtrFunction = GCPtr<JSFunction*>;
using GCPtrObject = GCPtr<JSObject*>;
using GCPtrScript = GCPtr<JSScript*>;
using GCPtrString = GCPtr<JSString*>;
using GCPtrShape = GCPtr<Shape*>;
using GCPtrUnownedBaseShape = GCPtr<UnownedBaseShape*>;
using GCPtrObjectGroup = GCPtr<ObjectGroup*>;
using GCPtrScope = GCPtr<Scope*>;
using GCPtrValue = GCPtr<Value>;
using GCPtrId = GCPtr<jsid>;
typedef PreBarriered<Value> PreBarrieredValue;
typedef GCPtr<Value> GCPtrValue;
using ImmutablePropertyNamePtr = ImmutableTenuredPtr<PropertyName*>;
using ImmutableSymbolPtr = ImmutableTenuredPtr<JS::Symbol*>;
typedef PreBarriered<jsid> PreBarrieredId;
typedef GCPtr<jsid> GCPtrId;
using ReadBarrieredDebugEnvironmentProxy =
ReadBarriered<DebugEnvironmentProxy*>;
using ReadBarrieredGlobalObject = ReadBarriered<GlobalObject*>;
using ReadBarrieredObject = ReadBarriered<JSObject*>;
using ReadBarrieredScript = ReadBarriered<JSScript*>;
using ReadBarrieredScriptSourceObject = ReadBarriered<ScriptSourceObject*>;
using ReadBarrieredShape = ReadBarriered<Shape*>;
using ReadBarrieredJitCode = ReadBarriered<jit::JitCode*>;
using ReadBarrieredObjectGroup = ReadBarriered<ObjectGroup*>;
using ReadBarrieredSymbol = ReadBarriered<JS::Symbol*>;
using ReadBarrieredWasmInstanceObject = ReadBarriered<WasmInstanceObject*>;
using ReadBarrieredWasmTableObject = ReadBarriered<WasmTableObject*>;
typedef ImmutableTenuredPtr<PropertyName*> ImmutablePropertyNamePtr;
typedef ImmutableTenuredPtr<JS::Symbol*> ImmutableSymbolPtr;
typedef ReadBarriered<DebugEnvironmentProxy*>
ReadBarrieredDebugEnvironmentProxy;
typedef ReadBarriered<GlobalObject*> ReadBarrieredGlobalObject;
typedef ReadBarriered<JSObject*> ReadBarrieredObject;
typedef ReadBarriered<JSFunction*> ReadBarrieredFunction;
typedef ReadBarriered<JSScript*> ReadBarrieredScript;
typedef ReadBarriered<ScriptSourceObject*> ReadBarrieredScriptSourceObject;
typedef ReadBarriered<Shape*> ReadBarrieredShape;
typedef ReadBarriered<jit::JitCode*> ReadBarrieredJitCode;
typedef ReadBarriered<ObjectGroup*> ReadBarrieredObjectGroup;
typedef ReadBarriered<JS::Symbol*> ReadBarrieredSymbol;
typedef ReadBarriered<WasmInstanceObject*> ReadBarrieredWasmInstanceObject;
typedef ReadBarriered<WasmTableObject*> ReadBarrieredWasmTableObject;
typedef ReadBarriered<Value> ReadBarrieredValue;
using HeapPtrJitCode = HeapPtr<jit::JitCode*>;
using HeapPtrRegExpShared = HeapPtr<RegExpShared*>;
using HeapPtrValue = HeapPtr<Value>;
namespace detail {

View File

@ -150,7 +150,7 @@ class IonIC;
struct IonScript {
private:
// Code pointer containing the actual method.
PreBarrieredJitCode method_;
HeapPtrJitCode method_;
// Entrypoint for OSR, or nullptr.
jsbytecode* osrPc_;
@ -257,6 +257,8 @@ struct IonScript {
return (SnapshotOffset*)&bottomBuffer()[bailoutTable_];
}
PreBarrieredValue* constants() {
// Nursery constants are manually barriered in CodeGenerator::link() so a
// post barrier is not required..
return (PreBarrieredValue*)&bottomBuffer()[constantTable_];
}
const SafepointIndex* safepointIndices() const {

View File

@ -16,6 +16,9 @@
#include "vm/JSScript.h"
namespace js {
class ArgumentsObject;
namespace jit {
typedef void* CalleeToken;

View File

@ -9,7 +9,7 @@
from time import time
from wptrunner.formatters import WptreportFormatter
from wptrunner.formatters.wptreport import WptreportFormatter
class WptreportHandler(object):

View File

@ -15,6 +15,7 @@
namespace js {
class AbstractFramePtr;
class ArgumentsObject;
class ScriptFrameIter;
namespace jit {

View File

@ -1951,7 +1951,10 @@ class Breakpoint {
BreakpointSite* const site;
private:
/* |handler| is marked unconditionally during minor GC. */
/*
* |handler| is marked unconditionally during minor GC so a post barrier is
* not required.
*/
js::PreBarrieredObject handler;
/**
@ -1969,7 +1972,7 @@ class Breakpoint {
Breakpoint* nextInDebugger();
Breakpoint* nextInSite();
const PreBarrieredObject& getHandler() const { return handler; }
JSObject* getHandler() const { return handler; }
PreBarrieredObject& getHandlerRef() { return handler; }
inline WasmBreakpoint* asWasm();

View File

@ -153,9 +153,9 @@ class RegExpObject : public NativeObject {
sharedRef().init(&shared);
}
PreBarriered<RegExpShared*>& sharedRef() {
HeapPtrRegExpShared& sharedRef() {
auto& ref = NativeObject::privateRef(PRIVATE_SLOT);
return reinterpret_cast<PreBarriered<RegExpShared*>&>(ref);
return reinterpret_cast<HeapPtrRegExpShared&>(ref);
}
static void trace(JSTracer* trc, JSObject* obj);

View File

@ -912,7 +912,7 @@ class Shape : public gc::TenuredCell {
protected:
GCPtrBaseShape base_;
PreBarrieredId propid_;
GCPtrId propid_;
// Flags that are not modified after the Shape is created. Off-thread Ion
// compilation can access the immutableFlags word, so we don't want any
@ -1287,12 +1287,12 @@ class Shape : public gc::TenuredCell {
mutableFlags = (mutableFlags & ~LINEAR_SEARCHES_MASK) | (count + 1);
}
const PreBarrieredId& propid() const {
const GCPtrId& propid() const {
MOZ_ASSERT(!isEmptyShape());
MOZ_ASSERT(!JSID_IS_VOID(propid_));
return propid_;
}
PreBarrieredId& propidRef() {
GCPtrId& propidRef() {
MOZ_ASSERT(!JSID_IS_VOID(propid_));
return propid_;
}

View File

@ -25,6 +25,7 @@
namespace js {
class ArrayBufferObjectMaybeShared;
class GlobalObject;
class StructTypeDescr;
class TypedArrayObject;

View File

@ -0,0 +1,2 @@
leak-threshold: [default:102400]
lsan-allowed: [Alloc, Create, MakeUnique, PLDHashTable::Add, Realloc, SetPropertyAsInterface, WeakPtr, already_AddRefed, mozilla::SupportsWeakPtr, mozilla::WeakPtr, mozilla::dom::BrowsingContext::Create, mozilla::dom::ContentParent::CreateBrowser, mozilla::dom::TabParent::GetLoadContext, mozilla::extensions::ChannelWrapper::ChannelWrapper, mozilla::net::CacheFile::OnFileOpened, mozilla::net::CacheFileHandles::NewHandle, mozilla::net::nsHttpTransaction::ParseHead, mozilla::net::nsStandardURL::TemplatedMutator, nsLocalFile::Clone, nsNodeSupportsWeakRefTearoff::GetWeakReference, nsSegmentedBuffer::AppendNewSegment]

View File

@ -1,5 +0,0 @@
[2d.shadow.enable.blur.html]
[Shadows are drawn if shadowBlur is set]
expected:
if not debug and not webrender and not e10s and (os == "android") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL

View File

@ -8,6 +8,9 @@
[IDBTransaction interface: operation commit()]
expected: FAIL
[IDBCursor interface: attribute request]
expected: FAIL
[idlharness.any.html]
[idlharness]
@ -22,6 +25,9 @@
[IDBTransaction interface: operation commit()]
expected: FAIL
[IDBCursor interface: attribute request]
expected: FAIL
[idlharness.any.worker.html]
[idlharness]
@ -36,6 +42,9 @@
[IDBTransaction interface: operation commit()]
expected: FAIL
[IDBCursor interface: attribute request]
expected: FAIL
[idlharness.https.any.serviceworker.html]
expected: TIMEOUT
@ -50,3 +59,6 @@
[IDBTransaction interface: operation commit()]
expected: FAIL
[IDBCursor interface: attribute request]
expected: FAIL

View File

@ -1,2 +1,7 @@
[reftest.html]
expected: FAIL
expected:
if debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and not webrender and not e10s and (os == "android") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL
if debug and webrender and e10s and (os == "win") and (version == "10.0.17134") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and webrender and e10s and (os == "win") and (version == "10.0.17134") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL

View File

@ -1,4 +1,5 @@
[playback-rate.https.html]
expected: ERROR
[Zero current time is not affected by playbackRate set while the animation is in play-pending state.]
expected: FAIL

View File

@ -0,0 +1,2 @@
[worklet-animation-cancel.https.html]
expected: TIMEOUT

View File

@ -0,0 +1,25 @@
[worklet-animation-creation.https.html]
[WorkletAnimation creation with timeline and options should work]
expected: FAIL
[If an effect has no target, object construction should fail]
expected: FAIL
[WorkletAnimation creation with timeline should work]
expected: FAIL
[If the effects are from different documents, object construction should fail]
expected: FAIL
[WorkletAnimation creation without timeline should use default documentation timeline]
expected: FAIL
[Constructing worklet animation for unregisested animator should throw]
expected: FAIL
[If there are no effects specified, object construction should fail]
expected: FAIL
[ScrollTimeline is a valid timeline for a WorkletAnimation]
expected: FAIL

View File

@ -0,0 +1,4 @@
[worklet-animation-duration.https.html]
[WorkletAnimation should continue to be in effect forever, even if its duration is passed]
expected: FAIL

View File

@ -0,0 +1,2 @@
[worklet-animation-start-delay.https.html]
expected: TIMEOUT

View File

@ -0,0 +1,2 @@
[worklet-animation-with-non-ascii-name.https.html]
expected: TIMEOUT

View File

@ -0,0 +1,2 @@
[worklet-animation-with-scroll-timeline-and-display-none.https.html]
expected: TIMEOUT

View File

@ -0,0 +1,2 @@
[worklet-animation-with-scroll-timeline-and-overflow-hidden.https.html]
expected: TIMEOUT

View File

@ -0,0 +1,2 @@
[worklet-animation-with-scroll-timeline-root-scroller.https.html]
expected: TIMEOUT

View File

@ -0,0 +1,2 @@
[worklet-animation-with-scroll-timeline.https.html]
expected: TIMEOUT

View File

@ -1,2 +0,0 @@
[setSinkId.html]
prefs: [media.setsinkid.enabled:true]

View File

@ -2,3 +2,39 @@
[ClipboardEvent interface: new ClipboardEvent("x") must inherit property "clipboardData" with the proper type]
expected: FAIL
[ClipboardItem interface: operation createDelayed([object Object\],[object Object\], ClipboardItemOptions)]
expected: FAIL
[ClipboardItem interface: existence and properties of interface prototype object]
expected: FAIL
[ClipboardItem interface: operation getType(DOMString)]
expected: FAIL
[ClipboardItem interface: existence and properties of interface prototype object's "constructor" property]
expected: FAIL
[ClipboardItem interface: attribute lastModified]
expected: FAIL
[ClipboardItem interface: existence and properties of interface object]
expected: FAIL
[ClipboardItem interface: attribute delayed]
expected: FAIL
[ClipboardItem interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
[ClipboardItem interface object length]
expected: FAIL
[ClipboardItem interface: attribute types]
expected: FAIL
[ClipboardItem interface: attribute presentationStyle]
expected: FAIL
[ClipboardItem interface object name]
expected: FAIL

View File

@ -20,3 +20,9 @@
[navigator.clipboard.write(image/png Blob) succeeds]
expected: FAIL
[navigator.clipboard.write([text/plain Blob\]) succeeds]
expected: FAIL
[navigator.clipboard.write([image/png Blob\]) succeeds]
expected: FAIL

View File

@ -1,4 +1,8 @@
[reporting-api-sends-reports-on-violation.https.sub.html]
expected: TIMEOUT
[Violation report status OK.]
expected: FAIL
[Report is observable to ReportingObserver]
expected: TIMEOUT

View File

@ -1,2 +1,3 @@
[background-root-018.xht]
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): FAIL

View File

@ -1,2 +0,0 @@
[c5510-padn-000.xht]
expected: FAIL

View File

@ -1,2 +1,18 @@
[white-space-003.xht]
expected: FAIL
expected:
if debug and not webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): PASS
if debug and not webrender and not e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): PASS
if not debug and not webrender and e10s and (os == "win") and (version == "10.0.17134") and (processor == "x86_64") and (bits == 64): PASS
if debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): PASS
if debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): PASS
if debug and webrender and e10s and (os == "win") and (version == "10.0.17134") and (processor == "x86_64") and (bits == 64): PASS
if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
if not debug and not webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): PASS
if debug and not webrender and e10s and (os == "win") and (version == "10.0.17134") 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
if not debug and webrender and e10s and (os == "win") and (version == "10.0.17134") and (processor == "x86_64") and (bits == 64): PASS
if not debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): PASS
if debug and not webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): PASS
if not debug and not webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): PASS
if not debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): PASS
FAIL

View File

@ -1,2 +0,0 @@
[white-space-pre-element-001.xht]
expected: FAIL

View File

@ -1,2 +1,18 @@
[white-space-processing-040.xht]
expected: FAIL
expected:
if debug and not webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): PASS
if debug and not webrender and not e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): PASS
if not debug and not webrender and e10s and (os == "win") and (version == "10.0.17134") and (processor == "x86_64") and (bits == 64): PASS
if debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): PASS
if debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): PASS
if debug and webrender and e10s and (os == "win") and (version == "10.0.17134") and (processor == "x86_64") and (bits == 64): PASS
if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
if not debug and not webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): PASS
if debug and not webrender and e10s and (os == "win") and (version == "10.0.17134") 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
if not debug and webrender and e10s and (os == "win") and (version == "10.0.17134") and (processor == "x86_64") and (bits == 64): PASS
if not debug and webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): PASS
if debug and not webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): PASS
if not debug and not webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): PASS
if not debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): PASS
FAIL

View File

@ -0,0 +1,7 @@
[intrinsic-width-overflow-auto.tentative.html]
[.flexbox 1]
expected: FAIL
[.flexbox 2]
expected: FAIL

View File

@ -1,2 +0,0 @@
[percentage-heights-quirks-node.html]
expected: FAIL

View File

@ -0,0 +1,27 @@
[grid-minimum-contribution-baseline-shim-vertical-lr.html]
[.grid 3]
expected: FAIL
[.grid 2]
expected: FAIL
[.grid 1]
expected:
if debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL
[.grid 5]
expected:
if debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL
[.grid 4]
expected:
if debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL
[.grid 6]
expected:
if debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL

View File

@ -0,0 +1,25 @@
[grid-minimum-contribution-baseline-shim-vertical-rl.html]
[.grid 1]
expected: FAIL
[.grid 3]
expected: FAIL
[.grid 2]
expected: FAIL
[.grid 5]
expected:
if debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL
[.grid 4]
expected:
if debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL
[.grid 6]
expected:
if debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL
if not debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL

View File

@ -0,0 +1,7 @@
[grid-minimum-contribution-baseline-shim.html]
[.grid 3]
expected: FAIL
[.grid 2]
expected: FAIL

View File

@ -0,0 +1,2 @@
[webkit-line-clamp-with-line-height.tentative.html]
expected: FAIL

View File

@ -0,0 +1,3 @@
[z-index-blend-will-change-overlapping-layers.html]
expected:
if not debug and not webrender and not e10s and (os == "android") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL

View File

@ -398,3 +398,54 @@
[syntax:'<length>+', initialValue:'' is invalid]
expected: FAIL
[syntax:'<transform-list>+', initialValue:'scale(2)' is invalid]
expected: FAIL
[syntax:'\\1F914 hmm', initialValue:'🤔hmm' is valid]
expected: FAIL
[syntax:'<length>#+', initialValue:'10px' is invalid]
expected: FAIL
[syntax:' <length>+ | <color>#', initialValue:'red, blue' is valid]
expected: FAIL
[syntax:'|banana', initialValue:'banana' is invalid]
expected: FAIL
[syntax:'hmm\\1F914', initialValue:'hmm🤔' is valid]
expected: FAIL
[syntax:'\\1F914\\1F914', initialValue:'🤔🤔' is valid]
expected: FAIL
[syntax:'||', initialValue:'banana' is invalid]
expected: FAIL
[syntax:'\t<color>\n| foo', initialValue:'foo' is valid]
expected: FAIL
[syntax:'\\1F914', initialValue:'🤔' is valid]
expected: FAIL
[syntax:'<length>+#', initialValue:'10px' is invalid]
expected: FAIL
[syntax:'\\1F914hmm', initialValue:'🤔hmm' is valid]
expected: FAIL
[syntax:'<transform-list>#', initialValue:'scale(2)' is invalid]
expected: FAIL
[syntax:'banan\\61', initialValue:'banana' is valid]
expected: FAIL
[syntax:'|', initialValue:'banana' is invalid]
expected: FAIL
[syntax:'<length>##', initialValue:'10px' is invalid]
expected: FAIL
[syntax:' |', initialValue:'banana' is invalid]
expected: FAIL

View File

@ -227,3 +227,18 @@
[<length> values are computed correctly when font-size is inherited [calc(14em + 10px)\]]
expected: FAIL
[<length> values are computed correctly [25.4mm\]]
expected: FAIL
[<length> values are computed correctly [6pc\]]
expected: FAIL
[<length> values are computed correctly [1in\]]
expected: FAIL
[<length> values are computed correctly [72pt\]]
expected: FAIL
[<length> values are computed correctly [2.54cm\]]
expected: FAIL

View File

@ -32,3 +32,57 @@
[Initial value for <length> correctly computed [calc(10px + 15px)\]]
expected: FAIL
[Initial non-inherited value can be substituted [calc(13% + 37%), --x\]]
expected: FAIL
[Initial non-inherited value can be substituted [\t1turn, --x\]]
expected: FAIL
[Initial non-inherited value can be substituted [calc(20 + 20 + 10), --x\]]
expected: FAIL
[Initial non-inherited value can be substituted [\tcalc(13% + 37px), --x\]]
expected: FAIL
[Initial non-inherited value can be substituted [scale(calc(2 + 2)) translateX(calc(3px + 1px)), --x\]]
expected: FAIL
[Initial non-inherited value can be substituted [2000ms, --x\]]
expected: FAIL
[Initial non-inherited value can be substituted [ pink , --x\]]
expected: FAIL
[Initial non-inherited value can be substituted [calc(13 + 37), --x\]]
expected: FAIL
[Initial non-inherited value can be substituted [calc(10px + 15px), --x\]]
expected: FAIL
[Initial non-inherited value can be substituted [scale(calc(2 + 2)), --x\]]
expected: FAIL
[Initial non-inherited value can be substituted [\tfoo\t, --x\]]
expected: FAIL
[Initial non-inherited value can be substituted [\ttest, --x\]]
expected: FAIL
[Initial value for <length> correctly computed [2.54cm\]]
expected: FAIL
[Initial value for <length> correctly computed [72pt\]]
expected: FAIL
[Initial value for <percentage> correctly computed [calc(10% + 20%)\]]
expected: FAIL
[Initial value for <length> correctly computed [25.4mm\]]
expected: FAIL
[Initial value for <length> correctly computed [6pc\]]
expected: FAIL
[Initial value for <length> correctly computed [1in\]]
expected: FAIL

View File

@ -78,3 +78,12 @@ prefs: [dom.animations-api.getAnimations.enabled:true]
[CSSPseudoElement interface: beforeElements.item(0) must inherit property "element" with the proper type]
expected: FAIL
[CSSPseudoElement interface: existence and properties of interface object]
expected: FAIL
[CSSPseudoElement interface: existence and properties of interface prototype object]
expected: FAIL
[Element interface: operation pseudo(CSSOMString)]
expected: FAIL

View File

@ -2,15 +2,3 @@
[Empty tables do not take table-columns into account]
expected: FAIL
[Table-columns are taken into account after missing cells are generated (non-empty line)]
expected:
if (os == "android"): FAIL
[Table-columns are taken into account after missing cells are generated (partially empty line)]
expected:
if (os == "android"): FAIL
[Table-columns are taken into account after missing cells are generated (empty line)]
expected:
if (os == "android"): FAIL

View File

@ -0,0 +1,2 @@
[overflow-wrap-break-word-007.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[shaping-002.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[shaping-003.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[shaping-008.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[shaping-017.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[shaping-018.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[shaping-021.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[shaping_cchar-000.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[shaping_cchar-001.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[shaping_cchar-002.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[shaping_cchar-003.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[shaping_cchar-004.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[shaping_cchar-005.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[shaping_cchar-006.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[shaping_cchar-007.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[shaping_cchar-008.html]
expected: FAIL

View File

@ -0,0 +1,3 @@
[shaping_lig-000.html]
expected:
if not debug and not webrender and not e10s and (os == "android") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL

View File

@ -0,0 +1,2 @@
[pre-wrap-008.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[word-break-break-all-015.html]
expected: FAIL

View File

@ -1,4 +1,5 @@
[text-orientation-script-001k.html]
max-asserts: 2
[Default orientation for vo=U]
expected: FAIL
@ -7,6 +8,6 @@
[Orientation=Rotated]
expected:
if (os == "win"): PASS
if os == "win": PASS
FAIL

View File

@ -0,0 +1,2 @@
[tainting-feblend-002.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-fecomponenttransfer-002.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-fecomposite-002.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-feconvolvematrix-002.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-fediffuselighting-002.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-fediffuselighting-003.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-fediffuselighting-dynamic.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-fedisplacementmap-002.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-fedropshadow-002.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-fedropshadow-003.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-feflood-002.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-feflood-dynamic.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-fegaussianblur-002.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-femorphology-002.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-feoffset-002.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-fespecularlighting-002.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-fespecularlighting-003.html]
expected: FAIL

View File

@ -0,0 +1,2 @@
[tainting-fetile-002.html]
expected: FAIL

View File

@ -1,4 +1,3 @@
[float-retry-push-image.html]
expected:
if webrender and (os == "win"): PASS
FAIL

View File

@ -0,0 +1,4 @@
[HTMLLIElement.html]
[Custom Elements: CEReactions on HTMLLIElement interface]
expected: FAIL

View File

@ -0,0 +1,4 @@
[HTMLLabelElement.html]
[Custom Elements: CEReactions on HTMLLabelElement interface]
expected: FAIL

View File

@ -0,0 +1,4 @@
[HTMLMetaElement.html]
[Custom Elements: CEReactions on HTMLMetaElement interface]
expected: FAIL

View File

@ -0,0 +1,4 @@
[HTMLOptGroupElement.html]
[Custom Elements: CEReactions on HTMLOptGroupElement interface]
expected: FAIL

View File

@ -0,0 +1,4 @@
[HTMLParamElement.html]
[Custom Elements: CEReactions on HTMLParamElement interface]
expected: FAIL

View File

@ -0,0 +1,4 @@
[Event-dispatch-listener-order.window.html]
[Event-dispatch-listener-order]
expected: FAIL

View File

@ -0,0 +1,2 @@
[document-level-touchmove-event-listener-passive-by-default.html]
expected: ERROR

View File

@ -0,0 +1,4 @@
[legacy-pre-activation-behavior.window.html]
[Use NONE phase during legacy-pre-activation behavior]
expected: FAIL

Some files were not shown because too many files have changed in this diff Show More