зеркало из https://github.com/mozilla/gecko-dev.git
Merge mozilla-inbound to mozilla-central. a=merge
This commit is contained in:
Коммит
f6510e6ac9
|
@ -56,7 +56,10 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsDOMMutationRecord)
|
|||
NS_INTERFACE_MAP_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(nsDOMMutationRecord)
|
||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(nsDOMMutationRecord)
|
||||
// Break down the linked list so that cycle collector can delete the
|
||||
// objects sooner.
|
||||
NS_IMPL_CYCLE_COLLECTING_RELEASE_WITH_LAST_RELEASE(nsDOMMutationRecord,
|
||||
mNext = nullptr)
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(nsDOMMutationRecord, mTarget,
|
||||
mPreviousSibling, mNextSibling,
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
#include "DOMSVGStringList.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIContentInlines.h"
|
||||
#include "nsSVGFeatures.h"
|
||||
#include "mozilla/dom/SVGSwitchElement.h"
|
||||
#include "nsCharSeparatedTokenizer.h"
|
||||
#include "nsStyleUtil.h"
|
||||
|
@ -42,9 +41,17 @@ already_AddRefed<DOMSVGStringList> SVGTests::SystemLanguage() {
|
|||
AsSVGElement(), true, LANGUAGE);
|
||||
}
|
||||
|
||||
bool SVGTests::HasExtension(const nsAString& aExtension) {
|
||||
return nsSVGFeatures::HasExtension(aExtension,
|
||||
AsSVGElement()->IsInChromeDocument());
|
||||
bool SVGTests::HasExtension(const nsAString& aExtension) const {
|
||||
#define SVG_SUPPORTED_EXTENSION(str) \
|
||||
if (aExtension.EqualsLiteral(str)) return true;
|
||||
SVG_SUPPORTED_EXTENSION("http://www.w3.org/1999/xhtml")
|
||||
nsNameSpaceManager* nameSpaceManager = nsNameSpaceManager::GetInstance();
|
||||
if (AsSVGElement()->IsInChromeDocument() || !nameSpaceManager->mMathMLDisabled) {
|
||||
SVG_SUPPORTED_EXTENSION("http://www.w3.org/1998/Math/MathML")
|
||||
}
|
||||
#undef SVG_SUPPORTED_EXTENSION
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SVGTests::IsConditionalProcessingAttribute(
|
||||
|
@ -109,8 +116,7 @@ bool SVGTests::PassesConditionalProcessingTests(
|
|||
return false;
|
||||
}
|
||||
for (uint32_t i = 0; i < mStringListAttributes[EXTENSIONS].Length(); i++) {
|
||||
if (!nsSVGFeatures::HasExtension(mStringListAttributes[EXTENSIONS][i],
|
||||
AsSVGElement()->IsInChromeDocument())) {
|
||||
if (!HasExtension(mStringListAttributes[EXTENSIONS][i])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -96,7 +96,7 @@ class SVGTests : public nsISupports {
|
|||
already_AddRefed<DOMSVGStringList> RequiredFeatures();
|
||||
already_AddRefed<DOMSVGStringList> RequiredExtensions();
|
||||
already_AddRefed<DOMSVGStringList> SystemLanguage();
|
||||
bool HasExtension(const nsAString& aExtension);
|
||||
bool HasExtension(const nsAString& aExtension) const;
|
||||
|
||||
virtual SVGElement* AsSVGElement() = 0;
|
||||
|
||||
|
|
|
@ -11,7 +11,6 @@ MOCHITEST_MANIFESTS += ['test/mochitest.ini']
|
|||
|
||||
EXPORTS += [
|
||||
'nsSVGClass.h',
|
||||
'nsSVGFeatures.h',
|
||||
]
|
||||
|
||||
EXPORTS.mozilla += [
|
||||
|
@ -131,7 +130,6 @@ UNIFIED_SOURCES += [
|
|||
'nsSVGBoolean.cpp',
|
||||
'nsSVGClass.cpp',
|
||||
'nsSVGEnum.cpp',
|
||||
'nsSVGFeatures.cpp',
|
||||
'nsSVGInteger.cpp',
|
||||
'nsSVGIntegerPair.cpp',
|
||||
'nsSVGLength2.cpp',
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/**
|
||||
* This file contains code to help implement the Conditional Processing
|
||||
* section of the SVG specification (i.e. the <switch> element and the
|
||||
* requiredFeatures, requiredExtensions and systemLanguage attributes).
|
||||
*
|
||||
* http://www.w3.org/TR/SVG11/struct.html#ConditionalProcessing
|
||||
*/
|
||||
|
||||
#include "nsSVGFeatures.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsNameSpaceManager.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
|
||||
using namespace mozilla;
|
||||
|
||||
/*static*/ bool nsSVGFeatures::HasExtension(const nsAString& aExtension,
|
||||
const bool aIsInChrome) {
|
||||
#define SVG_SUPPORTED_EXTENSION(str) \
|
||||
if (aExtension.EqualsLiteral(str)) return true;
|
||||
SVG_SUPPORTED_EXTENSION("http://www.w3.org/1999/xhtml")
|
||||
nsNameSpaceManager* nameSpaceManager = nsNameSpaceManager::GetInstance();
|
||||
if (aIsInChrome || !nameSpaceManager->mMathMLDisabled) {
|
||||
SVG_SUPPORTED_EXTENSION("http://www.w3.org/1998/Math/MathML")
|
||||
}
|
||||
#undef SVG_SUPPORTED_EXTENSION
|
||||
|
||||
return false;
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef __NS_SVGFEATURES_H__
|
||||
#define __NS_SVGFEATURES_H__
|
||||
|
||||
#include "nsString.h"
|
||||
|
||||
class nsSVGFeatures {
|
||||
public:
|
||||
/**
|
||||
* Check whether we support the given extension string.
|
||||
*
|
||||
* @param aExtension the URI of an extension. Known extensions are
|
||||
* "http://www.w3.org/1999/xhtml" and "http://www.w3.org/1998/Math/MathML"
|
||||
*/
|
||||
static bool HasExtension(const nsAString& aExtension, const bool aIsInChrome);
|
||||
};
|
||||
|
||||
#endif // __NS_SVGFEATURES_H__
|
|
@ -1,3 +1,5 @@
|
|||
// |jit-test| skip-if: !getBuildConfiguration()['x86'] && !getBuildConfiguration()['x64']
|
||||
// Skip on non x86/x64 until Bug 1511615 is fixed for arm7/arm64.
|
||||
load(libdir + 'asserts.js');
|
||||
|
||||
function test() {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// |jit-test| skip-if: !wasmThreadsSupported()
|
||||
// |jit-test| skip-if: !wasmThreadsSupported() || getBuildConfiguration()['arm64']
|
||||
// skip arm64 due to bug 1513231
|
||||
|
||||
const oob = /index out of bounds/;
|
||||
const unaligned = /unaligned memory access/;
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// |jit-test| skip-if: getBuildConfiguration()['arm64']
|
||||
// skip arm64 due to bug 1513231
|
||||
// Test bounds checking at the end of memory with a constant base pointer.
|
||||
// This is intended to verify a bounds check elimination optimization in
|
||||
// the baseline compiler.
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// |jit-test| skip-if: getBuildConfiguration()['arm64']
|
||||
// skip arm64 due to bug 1513231
|
||||
mem='\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'+
|
||||
'\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'+
|
||||
'\x00'.repeat(65488) +
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// |jit-test| skip-if: getBuildConfiguration()['arm64']
|
||||
// skip arm64 due to bug 1513231
|
||||
const RuntimeError = WebAssembly.RuntimeError;
|
||||
|
||||
function loadModuleSrc(type, ext, offset, align, drop = false) {
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// |jit-test| skip-if: !getBuildConfiguration()['x86'] && !getBuildConfiguration()['x64'] && !getBuildConfiguration()['arm64']
|
||||
// skip arm7 due to bug 1513231
|
||||
|
||||
// float_memory.wast:5
|
||||
let $1 = instance("\x00\x61\x73\x6d\x01\x00\x00\x00\x01\x8c\x80\x80\x80\x00\x03\x60\x00\x01\x7d\x60\x00\x01\x7f\x60\x00\x00\x03\x86\x80\x80\x80\x00\x05\x00\x01\x02\x02\x02\x05\x84\x80\x80\x80\x00\x01\x01\x01\x01\x07\xb7\x80\x80\x80\x00\x05\x08\x66\x33\x32\x2e\x6c\x6f\x61\x64\x00\x00\x08\x69\x33\x32\x2e\x6c\x6f\x61\x64\x00\x01\x09\x66\x33\x32\x2e\x73\x74\x6f\x72\x65\x00\x02\x09\x69\x33\x32\x2e\x73\x74\x6f\x72\x65\x00\x03\x05\x72\x65\x73\x65\x74\x00\x04\x0a\xca\x80\x80\x80\x00\x05\x87\x80\x80\x80\x00\x00\x41\x00\x2a\x02\x00\x0b\x87\x80\x80\x80\x00\x00\x41\x00\x28\x02\x00\x0b\x8c\x80\x80\x80\x00\x00\x41\x00\x43\x00\x00\xa0\x7f\x38\x02\x00\x0b\x8d\x80\x80\x80\x00\x00\x41\x00\x41\x80\x80\x80\xfd\x07\x36\x02\x00\x0b\x89\x80\x80\x80\x00\x00\x41\x00\x41\x00\x36\x02\x00\x0b\x0b\x8a\x80\x80\x80\x00\x01\x00\x41\x00\x0b\x04\x00\x00\xa0\x7f");
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// |jit-test| skip-if: !getBuildConfiguration()['x86'] && !getBuildConfiguration()['x64'] && !getBuildConfiguration()['arm64']
|
||||
// skip arm7 due to bug 1513231
|
||||
|
||||
// memory_redundancy.wast:5
|
||||
let $1 = instance("\x00\x61\x73\x6d\x01\x00\x00\x00\x01\x8c\x80\x80\x80\x00\x03\x60\x00\x00\x60\x00\x01\x7f\x60\x00\x01\x7d\x03\x85\x80\x80\x80\x00\x04\x00\x01\x01\x02\x05\x84\x80\x80\x80\x00\x01\x01\x01\x01\x07\xd0\x80\x80\x80\x00\x04\x0f\x7a\x65\x72\x6f\x5f\x65\x76\x65\x72\x79\x74\x68\x69\x6e\x67\x00\x00\x12\x74\x65\x73\x74\x5f\x73\x74\x6f\x72\x65\x5f\x74\x6f\x5f\x6c\x6f\x61\x64\x00\x01\x13\x74\x65\x73\x74\x5f\x72\x65\x64\x75\x6e\x64\x61\x6e\x74\x5f\x6c\x6f\x61\x64\x00\x02\x0f\x74\x65\x73\x74\x5f\x64\x65\x61\x64\x5f\x73\x74\x6f\x72\x65\x00\x03\x0a\x8c\x81\x80\x80\x00\x04\x9e\x80\x80\x80\x00\x00\x41\x00\x41\x00\x36\x02\x00\x41\x04\x41\x00\x36\x02\x00\x41\x08\x41\x00\x36\x02\x00\x41\x0c\x41\x00\x36\x02\x00\x0b\x98\x80\x80\x80\x00\x00\x41\x08\x41\x00\x36\x02\x00\x41\x05\x43\x00\x00\x00\x80\x38\x02\x00\x41\x08\x28\x02\x00\x0b\xa2\x80\x80\x80\x00\x01\x02\x7f\x41\x08\x28\x02\x00\x21\x00\x41\x05\x41\x80\x80\x80\x80\x78\x36\x02\x00\x41\x08\x28\x02\x00\x21\x01\x20\x00\x20\x01\x6a\x0b\x9f\x80\x80\x80\x00\x01\x01\x7d\x41\x08\x41\xa3\xc6\x8c\x99\x02\x36\x02\x00\x41\x0b\x2a\x02\x00\x21\x00\x41\x08\x41\x00\x36\x02\x00\x20\x00\x0b");
|
||||
|
|
|
@ -512,6 +512,11 @@ def check_output(out, err, rc, timed_out, test, options):
|
|||
if rc == 1 and ("Hit MOZ_CRASH" in err or "Assertion failure:" in err):
|
||||
return True
|
||||
|
||||
# When running jittests on Android, SEGV results in a return code
|
||||
# of 128+11=139.
|
||||
if rc == 139:
|
||||
return True
|
||||
|
||||
if rc != test.expect_status:
|
||||
# Tests which expect a timeout check for exit code 6.
|
||||
# Sometimes 0 is returned on Windows for unknown reasons.
|
||||
|
|
|
@ -1828,6 +1828,15 @@ bool BuildTextRunsScanner::ContinueTextRunAcrossFrames(nsTextFrame* aFrame1,
|
|||
}
|
||||
|
||||
ComputedStyle* sc1 = aFrame1->Style();
|
||||
ComputedStyle* sc2 = aFrame2->Style();
|
||||
|
||||
// Any difference in writing-mode/directionality inhibits shaping across
|
||||
// the boundary.
|
||||
WritingMode wm(sc1);
|
||||
if (wm != WritingMode(sc2)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const nsStyleText* textStyle1 = sc1->StyleText();
|
||||
// If the first frame ends in a preformatted newline, then we end the textrun
|
||||
// here. This avoids creating giant textruns for an entire plain text file.
|
||||
|
@ -1835,8 +1844,78 @@ bool BuildTextRunsScanner::ContinueTextRunAcrossFrames(nsTextFrame* aFrame1,
|
|||
// even if it has newlines in it, so typically we won't see trailing newlines
|
||||
// until after reflow has broken up the frame into one (or more) frames per
|
||||
// line. That's OK though.
|
||||
if (textStyle1->NewlineIsSignificant(aFrame1) && HasTerminalNewline(aFrame1))
|
||||
if (textStyle1->NewlineIsSignificant(aFrame1) &&
|
||||
HasTerminalNewline(aFrame1)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (aFrame1->GetParent()->GetContent() !=
|
||||
aFrame2->GetParent()->GetContent()) {
|
||||
// Does aFrame, or any ancestor between it and aAncestor, have a property
|
||||
// that should inhibit cross-element-boundary shaping on aSide?
|
||||
auto PreventCrossBoundaryShaping = [](const nsIFrame* aFrame,
|
||||
const nsIFrame* aAncestor,
|
||||
Side aSide) {
|
||||
while (aFrame != aAncestor) {
|
||||
ComputedStyle* ctx = aFrame->Style();
|
||||
// According to https://drafts.csswg.org/css-text/#boundary-shaping:
|
||||
//
|
||||
// Text shaping must be broken at inline box boundaries when any of the
|
||||
// following are true for any box whose boundary separates the two
|
||||
// typographic character units:
|
||||
//
|
||||
// 1. Any of margin/border/padding separating the two typographic
|
||||
// character units in the inline axis is non-zero.
|
||||
const nsStyleCoord& margin = ctx->StyleMargin()->mMargin.Get(aSide);
|
||||
if (!margin.ConvertsToLength() || margin.ToLength() != 0) {
|
||||
return true;
|
||||
}
|
||||
const nsStyleCoord& padding = ctx->StylePadding()->mPadding.Get(aSide);
|
||||
if (!padding.ConvertsToLength() || padding.ToLength() != 0) {
|
||||
return true;
|
||||
}
|
||||
if (ctx->StyleBorder()->GetComputedBorderWidth(aSide) != 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 2. vertical-align is not baseline.
|
||||
const nsStyleCoord& coord = ctx->StyleDisplay()->mVerticalAlign;
|
||||
if (coord.GetUnit() != eStyleUnit_Enumerated ||
|
||||
coord.GetIntValue() != NS_STYLE_VERTICAL_ALIGN_BASELINE) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 3. The boundary is a bidi isolation boundary.
|
||||
const uint8_t unicodeBidi = ctx->StyleTextReset()->mUnicodeBidi;
|
||||
if (unicodeBidi == NS_STYLE_UNICODE_BIDI_ISOLATE ||
|
||||
unicodeBidi == NS_STYLE_UNICODE_BIDI_ISOLATE_OVERRIDE) {
|
||||
return true;
|
||||
}
|
||||
|
||||
aFrame = aFrame->GetParent();
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
const nsIFrame* ancestor =
|
||||
nsLayoutUtils::FindNearestCommonAncestorFrame(aFrame1, aFrame2);
|
||||
MOZ_ASSERT(ancestor);
|
||||
|
||||
// Map inline-end and inline-start to physical sides for checking presence
|
||||
// of non-zero margin/border/padding.
|
||||
Side side1 = wm.PhysicalSide(eLogicalSideIEnd);
|
||||
Side side2 = wm.PhysicalSide(eLogicalSideIStart);
|
||||
// If the frames have an embedding level that is opposite to the writing
|
||||
// mode, we need to swap which sides we're checking.
|
||||
if (IS_LEVEL_RTL(aFrame1->GetEmbeddingLevel()) == wm.IsBidiLTR()) {
|
||||
Swap(side1, side2);
|
||||
}
|
||||
|
||||
if (PreventCrossBoundaryShaping(aFrame1, ancestor, side1) ||
|
||||
PreventCrossBoundaryShaping(aFrame2, ancestor, side2)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (aFrame1->GetContent() == aFrame2->GetContent() &&
|
||||
aFrame1->GetNextInFlow() != aFrame2) {
|
||||
|
@ -1849,7 +1928,10 @@ bool BuildTextRunsScanner::ContinueTextRunAcrossFrames(nsTextFrame* aFrame1,
|
|||
return false;
|
||||
}
|
||||
|
||||
ComputedStyle* sc2 = aFrame2->Style();
|
||||
if (sc1 == sc2) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const nsStyleText* textStyle2 = sc2->StyleText();
|
||||
if (sc1 == sc2) return true;
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
div {
|
||||
display: inline-block;
|
||||
border: 1px solid black;
|
||||
font-kerning: none; /* disable kerning, because in the reference file
|
||||
it might occur across <span> boundaries */
|
||||
}
|
||||
span {
|
||||
white-space: nowrap;
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
div {
|
||||
display: inline-block;
|
||||
border: 1px solid black;
|
||||
font-kerning: none; /* disable kerning, because in the reference file
|
||||
it might occur across <span> boundaries */
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
|
|
@ -857,6 +857,7 @@ class ADBDevice(ADBCommand):
|
|||
"""Get the exitcode from the last line of the file_obj for shell
|
||||
commands.
|
||||
"""
|
||||
re_returncode = re.compile(r'adb_returncode=([0-9]+)')
|
||||
file_obj.seek(0, os.SEEK_END)
|
||||
|
||||
line = ''
|
||||
|
@ -874,13 +875,28 @@ class ADBDevice(ADBCommand):
|
|||
break
|
||||
offset += 1
|
||||
|
||||
match = re.match(r'rc=([0-9]+)', line)
|
||||
match = re_returncode.match(line)
|
||||
if match:
|
||||
exitcode = int(match.group(1))
|
||||
# Set the position in the file to the position of the
|
||||
# adb_returncode and truncate it from the output.
|
||||
file_obj.seek(-1, os.SEEK_CUR)
|
||||
file_obj.truncate()
|
||||
else:
|
||||
exitcode = None
|
||||
# We may have a situation where the adb_returncode= is not
|
||||
# at the end of the output. This happens at least in the
|
||||
# failure jit-tests on arm. To work around this
|
||||
# possibility, we can search the entire output for the
|
||||
# appropriate match.
|
||||
file_obj.seek(0, os.SEEK_SET)
|
||||
for line in file_obj:
|
||||
match = re_returncode.search(line)
|
||||
if match:
|
||||
exitcode = int(match.group(1))
|
||||
break
|
||||
# Reset the position in the file to the end.
|
||||
file_obj.seek(0, os.SEEK_END)
|
||||
|
||||
return exitcode
|
||||
|
||||
|
@ -1308,7 +1324,7 @@ class ADBDevice(ADBCommand):
|
|||
envstr = '&& '.join(map(lambda x: 'export %s=%s' %
|
||||
(x[0], x[1]), env.iteritems()))
|
||||
cmd = envstr + "&& " + cmd
|
||||
cmd += "; echo rc=$?"
|
||||
cmd += "; echo adb_returncode=$?"
|
||||
|
||||
args = [self._adb_path]
|
||||
if self._adb_host:
|
||||
|
|
|
@ -7,10 +7,14 @@ from __future__ import absolute_import
|
|||
|
||||
import json
|
||||
import os
|
||||
import posixpath
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import time
|
||||
|
||||
import mozcrash
|
||||
import mozinfo
|
||||
|
||||
from mozdevice import ADBDevice
|
||||
|
@ -131,7 +135,8 @@ class Raptor(object):
|
|||
}
|
||||
runner_cls = runners[app]
|
||||
self.runner = runner_cls(
|
||||
binary, profile=self.profile, process_args=process_args)
|
||||
binary, profile=self.profile, process_args=process_args,
|
||||
symbols_path=self.config['symbols_path'])
|
||||
|
||||
self.log.info("raptor config: %s" % str(self.config))
|
||||
|
||||
|
@ -386,14 +391,9 @@ class Raptor(object):
|
|||
break
|
||||
finally:
|
||||
if self.config['app'] == "geckoview":
|
||||
# TODO: if on geckoview is there some cleanup here i.e. check for crashes?
|
||||
if self.config['power_test']:
|
||||
finish_geckoview_power_test(self)
|
||||
else:
|
||||
try:
|
||||
self.runner.check_for_crashes()
|
||||
except NotImplementedError: # not implemented for Chrome
|
||||
pass
|
||||
self.check_for_crashes()
|
||||
|
||||
if self.playback is not None:
|
||||
self.playback.stop()
|
||||
|
@ -455,6 +455,31 @@ class Raptor(object):
|
|||
def get_page_timeout_list(self):
|
||||
return self.results_handler.page_timeout_list
|
||||
|
||||
def check_for_crashes(self):
|
||||
if self.config['app'] == "geckoview":
|
||||
logcat = self.device.get_logcat()
|
||||
if logcat:
|
||||
if mozcrash.check_for_java_exception(logcat, "raptor"):
|
||||
return
|
||||
try:
|
||||
dump_dir = tempfile.mkdtemp()
|
||||
remote_dir = posixpath.join(self.device_profile, 'minidumps')
|
||||
if not self.device.is_dir(remote_dir):
|
||||
self.log.error("No crash directory (%s) found on remote device" % remote_dir)
|
||||
return
|
||||
self.device.pull(remote_dir, dump_dir)
|
||||
mozcrash.log_crashes(self.log, dump_dir, self.config['symbols_path'])
|
||||
finally:
|
||||
try:
|
||||
shutil.rmtree(dump_dir)
|
||||
except Exception:
|
||||
self.log.warning("unable to remove directory: %s" % dump_dir)
|
||||
else:
|
||||
try:
|
||||
self.runner.check_for_crashes()
|
||||
except NotImplementedError: # not implemented for Chrome
|
||||
pass
|
||||
|
||||
def clean_up(self):
|
||||
self.control_server.stop()
|
||||
if self.config['app'] != "geckoview":
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[boundary-shaping-004.html]
|
||||
expected:
|
||||
if webrender and (os == "win"): FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[boundary-shaping-005.html]
|
||||
expected:
|
||||
if webrender and (os == "win"): FAIL
|
|
@ -0,0 +1,4 @@
|
|||
[boundary-shaping-010.html]
|
||||
expected:
|
||||
if (os == "mac"): FAIL
|
||||
if (os == "android"): FAIL
|
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Text shaping must not be broken across inline box boundaries when there is no change in formatting</title>
|
||||
<link rel=match href="reference/boundary-shaping-001.ref.html">
|
||||
<link rel=help href="https://drafts.csswg.org/css-text/#boundary-shaping">
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: test;
|
||||
src: url(resources/LinLibertine_Re-4.7.5.woff);
|
||||
}
|
||||
body {
|
||||
font: 36px test; /* use a font that includes ligatures for "fi" etc */
|
||||
}
|
||||
.a {
|
||||
/* initial values for these properties should not interrupt shaping */
|
||||
vertical-align: initial;
|
||||
padding: initial;
|
||||
margin: initial;
|
||||
border: initial;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
of<span class=a>f</span>ice
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Text shaping must be broken across inline box boundaries when 'vertical-align' is not 'baseline'</title>
|
||||
<link rel=match href="reference/boundary-shaping-002.ref.html">
|
||||
<link rel=help href="https://drafts.csswg.org/css-text/#boundary-shaping">
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: test;
|
||||
src: url(resources/LinLibertine_Re-4.7.5.woff);
|
||||
}
|
||||
body {
|
||||
font: 36px test; /* use a font that includes ligatures for "fi" etc */
|
||||
}
|
||||
.a {
|
||||
vertical-align: 0; /* distinct from 'baseline', should break shaping */
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
of<span class=a>f</span>ice
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Text shaping must be broken across inline box boundaries when padding is non-zero</title>
|
||||
<link rel=match href="reference/boundary-shaping-003.ref.html">
|
||||
<link rel=help href="https://drafts.csswg.org/css-text/#boundary-shaping">
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: test;
|
||||
src: url(resources/LinLibertine_Re-4.7.5.woff);
|
||||
}
|
||||
body {
|
||||
font: 36px test; /* use a font that includes ligatures for "fi" etc */
|
||||
}
|
||||
.a {
|
||||
padding-left: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
of<span class=a>f</span>ice
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Text shaping must be broken across inline box boundaries when margin is non-zero</title>
|
||||
<link rel=match href="reference/boundary-shaping-004.ref.html">
|
||||
<link rel=help href="https://drafts.csswg.org/css-text/#boundary-shaping">
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: test;
|
||||
src: url(resources/LinLibertine_Re-4.7.5.woff);
|
||||
}
|
||||
body {
|
||||
font: 36px test; /* use a font that includes ligatures for "fi" etc */
|
||||
}
|
||||
.a {
|
||||
margin-right: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
of<span class=a>f</span>ice
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Text shaping must be broken across inline box boundaries when border is non-zero</title>
|
||||
<link rel=match href="reference/boundary-shaping-005.ref.html">
|
||||
<link rel=help href="https://drafts.csswg.org/css-text/#boundary-shaping">
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: test;
|
||||
src: url(resources/LinLibertine_Re-4.7.5.woff);
|
||||
}
|
||||
body {
|
||||
font: 36px test; /* use a font that includes ligatures for "fi" etc */
|
||||
}
|
||||
.a {
|
||||
border-right: 10px solid transparent;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
of<span class=a>f</span>ice
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Text shaping must be broken across inline box boundaries when 'vertical-align' is not 'baseline'</title>
|
||||
<link rel=match href="reference/boundary-shaping-006.ref.html">
|
||||
<link rel=help href="https://drafts.csswg.org/css-text/#boundary-shaping">
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: test;
|
||||
src: url(resources/LinLibertine_Re-4.7.5.woff);
|
||||
}
|
||||
body {
|
||||
font: 36px test; /* use a font that includes ligatures for "fi" etc */
|
||||
}
|
||||
.a {
|
||||
vertical-align: super;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
of<span><span><span class=a><span><span>f</span></span></span></span></span>ice
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,27 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Text shaping must be broken across inline box boundaries when padding or margin is non-zero</title>
|
||||
<link rel=match href="reference/boundary-shaping-007.ref.html">
|
||||
<link rel=help href="https://drafts.csswg.org/css-text/#boundary-shaping">
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: test;
|
||||
src: url(resources/LinLibertine_Re-4.7.5.woff);
|
||||
}
|
||||
body {
|
||||
font: 36px test; /* use a font that includes ligatures for "fi" etc */
|
||||
}
|
||||
.a {
|
||||
padding-left: 10px;
|
||||
}
|
||||
.b {
|
||||
margin-right: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
of<span><span class=a><span><span class=b><span>f</span></span></span></span></span>ice
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Text shaping must be broken across inline box boundaries at a bidi isolation boundary</title>
|
||||
<link rel=match href="reference/boundary-shaping-008.ref.html">
|
||||
<link rel=help href="https://drafts.csswg.org/css-text/#boundary-shaping">
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: test;
|
||||
src: url(resources/LinLibertine_Re-4.7.5.woff);
|
||||
}
|
||||
body {
|
||||
font: 36px test; /* use a font that includes ligatures for "fi" etc */
|
||||
}
|
||||
.a {
|
||||
unicode-bidi: isolate; /* bidi isolation boundaries should break shaping */
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
of<span class=a>f</span>ice
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,57 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Text shaping must be broken across inline box boundaries when padding or margin is non-zero</title>
|
||||
<link rel=match href="reference/boundary-shaping-009.ref.html">
|
||||
<link rel=help href="https://drafts.csswg.org/css-text/#boundary-shaping">
|
||||
<style>
|
||||
body {
|
||||
font: 36px sans-serif;
|
||||
}
|
||||
div {
|
||||
text-align: center;
|
||||
}
|
||||
.a {
|
||||
padding-right: 10px;
|
||||
}
|
||||
.b {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.c {
|
||||
color: red;
|
||||
padding-left: 10px;
|
||||
}
|
||||
.d {
|
||||
color: red;
|
||||
margin-right: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div dir=ltr>
|
||||
السلام<span class=a>عليكم</span>
|
||||
</div>
|
||||
<div dir=ltr>
|
||||
<span class=b>السلام</span>عليكم
|
||||
</div>
|
||||
<div dir=rtl>
|
||||
السلام<span class=a>عليكم</span>
|
||||
</div>
|
||||
<div dir=rtl>
|
||||
<span class=b>السلام</span>عليكم
|
||||
</div>
|
||||
<div dir=ltr>
|
||||
السلام<span class=c>عليكم</span>
|
||||
</div>
|
||||
<div dir=ltr>
|
||||
<span class=d>السلام</span>عليكم
|
||||
</div>
|
||||
<div dir=rtl>
|
||||
السلام<span class=c>عليكم</span>
|
||||
</div>
|
||||
<div dir=rtl>
|
||||
<span class=d>السلام</span>عليكم
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Text shaping must not be broken across inline box boundaries when there is no change in formatting</title>
|
||||
<link rel=match href="reference/boundary-shaping-010.ref.html">
|
||||
<link rel=help href="https://drafts.csswg.org/css-text/#boundary-shaping">
|
||||
<style>
|
||||
body {
|
||||
font: 36px sans-serif;
|
||||
}
|
||||
div {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div dir=rtl>
|
||||
ال<span>سل</span>ام
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: test;
|
||||
src: url(../resources/LinLibertine_Re-4.7.5.woff);
|
||||
}
|
||||
body {
|
||||
font: 36px test; /* use a font that includes ligatures for "fi" etc */
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
office
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: test;
|
||||
src: url(../resources/LinLibertine_Re-4.7.5.woff);
|
||||
}
|
||||
body {
|
||||
font: 36px test; /* use a font that includes ligatures for "fi" etc */
|
||||
}
|
||||
.a {
|
||||
display: inline-block;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
of<span class=a>f</span>ice
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,22 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: test;
|
||||
src: url(../resources/LinLibertine_Re-4.7.5.woff);
|
||||
}
|
||||
body {
|
||||
font: 36px test; /* use a font that includes ligatures for "fi" etc */
|
||||
}
|
||||
.a {
|
||||
display: inline-block;
|
||||
width: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
of<span class=a> </span>fice
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,22 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: test;
|
||||
src: url(../resources/LinLibertine_Re-4.7.5.woff);
|
||||
}
|
||||
body {
|
||||
font: 36px test; /* use a font that includes ligatures for "fi" etc */
|
||||
}
|
||||
.a {
|
||||
display: inline-block;
|
||||
width: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
off<span class=a> </span>ice
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,22 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: test;
|
||||
src: url(../resources/LinLibertine_Re-4.7.5.woff);
|
||||
}
|
||||
body {
|
||||
font: 36px test; /* use a font that includes ligatures for "fi" etc */
|
||||
}
|
||||
.a {
|
||||
display: inline-block;
|
||||
width: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
off<span class=a> </span>ice
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,22 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: test;
|
||||
src: url(../resources/LinLibertine_Re-4.7.5.woff);
|
||||
}
|
||||
body {
|
||||
font: 36px test; /* use a font that includes ligatures for "fi" etc */
|
||||
}
|
||||
.a {
|
||||
vertical-align: super;
|
||||
display: inline-block;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
of<span class=a>f</span>ice
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: test;
|
||||
src: url(../resources/LinLibertine_Re-4.7.5.woff);
|
||||
}
|
||||
body {
|
||||
font: 36px test; /* use a font that includes ligatures for "fi" etc */
|
||||
}
|
||||
.a {
|
||||
padding-left: 10px;
|
||||
margin-right: 10px;
|
||||
display: inline-block;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
of<span class=a>f</span>ice
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: test;
|
||||
src: url(../resources/LinLibertine_Re-4.7.5.woff);
|
||||
}
|
||||
body {
|
||||
font: 36px test; /* use a font that includes ligatures for "fi" etc */
|
||||
}
|
||||
.a {
|
||||
display: inline-block;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
of<span class=a>f</span>ice
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,56 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<style>
|
||||
body {
|
||||
font: 36px sans-serif;
|
||||
}
|
||||
div {
|
||||
text-align: center;
|
||||
}
|
||||
.a {
|
||||
display: inline-block;
|
||||
width: 10px;
|
||||
}
|
||||
.c1 {
|
||||
padding-left: 10px;
|
||||
}
|
||||
.c {
|
||||
color: red;
|
||||
}
|
||||
.d1 {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.d {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div dir=ltr>
|
||||
السلام<span class=a> </span>عليكم
|
||||
</div>
|
||||
<div dir=ltr>
|
||||
السلام<span class=a> </span>عليكم
|
||||
</div>
|
||||
<div dir=rtl>
|
||||
السلام<span class=a> </span>عليكم
|
||||
</div>
|
||||
<div dir=rtl>
|
||||
السلام<span class=a> </span>عليكم
|
||||
</div>
|
||||
<div dir=ltr>
|
||||
<span class=c1>السلام<span class=c>عليكم</span></span>
|
||||
</div>
|
||||
<div dir=ltr>
|
||||
<span class=d1><span class=d>السلام</span>عليكم</span>
|
||||
</div>
|
||||
<div dir=rtl>
|
||||
<span class=c1>السلام<span class=c>عليكم</span></span>
|
||||
</div>
|
||||
<div dir=rtl>
|
||||
<span class=d1><span class=d>السلام</span>عليكم</span>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<style>
|
||||
body {
|
||||
font: 36px sans-serif;
|
||||
}
|
||||
div {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div dir=rtl>
|
||||
السلام
|
||||
</body>
|
||||
</html>
|
Двоичные данные
testing/web-platform/tests/css/css-text/boundary-shaping/resources/LinLibertine_Re-4.7.5.woff
Normal file
Двоичные данные
testing/web-platform/tests/css/css-text/boundary-shaping/resources/LinLibertine_Re-4.7.5.woff
Normal file
Двоичный файл не отображается.
Загрузка…
Ссылка в новой задаче