зеркало из https://github.com/mozilla/gecko-dev.git
Merge mozilla-central to autoland. CLOSED TREE
This commit is contained in:
Коммит
1a956a4090
|
@ -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");
|
||||
|
|
|
@ -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"
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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>
|
|
@ -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]
|
||||
|
|
|
@ -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>
|
|
@ -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.
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 {
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -16,6 +16,9 @@
|
|||
#include "vm/JSScript.h"
|
||||
|
||||
namespace js {
|
||||
|
||||
class ArgumentsObject;
|
||||
|
||||
namespace jit {
|
||||
|
||||
typedef void* CalleeToken;
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
from time import time
|
||||
|
||||
from wptrunner.formatters import WptreportFormatter
|
||||
from wptrunner.formatters.wptreport import WptreportFormatter
|
||||
|
||||
|
||||
class WptreportHandler(object):
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
namespace js {
|
||||
|
||||
class AbstractFramePtr;
|
||||
class ArgumentsObject;
|
||||
class ScriptFrameIter;
|
||||
|
||||
namespace jit {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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_;
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
namespace js {
|
||||
|
||||
class ArrayBufferObjectMaybeShared;
|
||||
class GlobalObject;
|
||||
class StructTypeDescr;
|
||||
class TypedArrayObject;
|
||||
|
|
|
@ -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]
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[worklet-animation-cancel.https.html]
|
||||
expected: TIMEOUT
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[worklet-animation-start-delay.https.html]
|
||||
expected: TIMEOUT
|
|
@ -0,0 +1,2 @@
|
|||
[worklet-animation-with-non-ascii-name.https.html]
|
||||
expected: TIMEOUT
|
|
@ -0,0 +1,2 @@
|
|||
[worklet-animation-with-scroll-timeline-and-display-none.https.html]
|
||||
expected: TIMEOUT
|
|
@ -0,0 +1,2 @@
|
|||
[worklet-animation-with-scroll-timeline-and-overflow-hidden.https.html]
|
||||
expected: TIMEOUT
|
|
@ -0,0 +1,2 @@
|
|||
[worklet-animation-with-scroll-timeline-root-scroller.https.html]
|
||||
expected: TIMEOUT
|
|
@ -0,0 +1,2 @@
|
|||
[worklet-animation-with-scroll-timeline.https.html]
|
||||
expected: TIMEOUT
|
|
@ -1,2 +0,0 @@
|
|||
[setSinkId.html]
|
||||
prefs: [media.setsinkid.enabled:true]
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[c5510-padn-000.xht]
|
||||
expected: FAIL
|
|
@ -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
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[white-space-pre-element-001.xht]
|
||||
expected: FAIL
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
[intrinsic-width-overflow-auto.tentative.html]
|
||||
[.flexbox 1]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox 2]
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[percentage-heights-quirks-node.html]
|
||||
expected: FAIL
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
[grid-minimum-contribution-baseline-shim.html]
|
||||
[.grid 3]
|
||||
expected: FAIL
|
||||
|
||||
[.grid 2]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[webkit-line-clamp-with-line-height.tentative.html]
|
||||
expected: FAIL
|
|
@ -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
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[overflow-wrap-break-word-007.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[shaping-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[shaping-003.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[shaping-008.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[shaping-017.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[shaping-018.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[shaping-021.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[shaping_cchar-000.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[shaping_cchar-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[shaping_cchar-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[shaping_cchar-003.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[shaping_cchar-004.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[shaping_cchar-005.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[shaping_cchar-006.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[shaping_cchar-007.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[shaping_cchar-008.html]
|
||||
expected: FAIL
|
|
@ -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
|
|
@ -0,0 +1,2 @@
|
|||
[pre-wrap-008.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[word-break-break-all-015.html]
|
||||
expected: FAIL
|
|
@ -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
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-feblend-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fecomponenttransfer-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fecomposite-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-feconvolvematrix-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fediffuselighting-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fediffuselighting-003.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fediffuselighting-dynamic.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fedisplacementmap-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fedropshadow-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fedropshadow-003.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-feflood-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-feflood-dynamic.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fegaussianblur-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-femorphology-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-feoffset-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fespecularlighting-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fespecularlighting-003.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fetile-002.html]
|
||||
expected: FAIL
|
|
@ -1,4 +1,3 @@
|
|||
[float-retry-push-image.html]
|
||||
expected:
|
||||
if webrender and (os == "win"): PASS
|
||||
FAIL
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[HTMLLIElement.html]
|
||||
[Custom Elements: CEReactions on HTMLLIElement interface]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[HTMLLabelElement.html]
|
||||
[Custom Elements: CEReactions on HTMLLabelElement interface]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[HTMLMetaElement.html]
|
||||
[Custom Elements: CEReactions on HTMLMetaElement interface]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[HTMLOptGroupElement.html]
|
||||
[Custom Elements: CEReactions on HTMLOptGroupElement interface]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[HTMLParamElement.html]
|
||||
[Custom Elements: CEReactions on HTMLParamElement interface]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[Event-dispatch-listener-order.window.html]
|
||||
[Event-dispatch-listener-order]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[document-level-touchmove-event-listener-passive-by-default.html]
|
||||
expected: ERROR
|
|
@ -0,0 +1,4 @@
|
|||
[legacy-pre-activation-behavior.window.html]
|
||||
[Use NONE phase during legacy-pre-activation behavior]
|
||||
expected: FAIL
|
||||
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче