mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-01 05:48:26 +00:00
Merge m-i to m-c, a=merge
This commit is contained in:
commit
626a37b7e9
@ -287,8 +287,7 @@ this.ContentControl.prototype = {
|
||||
elem.dispatchEvent(evt);
|
||||
} else {
|
||||
let evt = this.document.createEvent('KeyboardEvent');
|
||||
let keycode = aStepUp ? content.KeyEvent.DOM_VK_DOWN :
|
||||
content.KeyEvent.DOM_VK_UP;
|
||||
let keycode = aStepUp ? evt.DOM_VK_DOWN : evt.DOM_VK_UP;
|
||||
evt.initKeyEvent(
|
||||
"keypress", false, true, null, false, false, false, false, keycode, 0);
|
||||
elem.dispatchEvent(evt);
|
||||
|
@ -21,8 +21,9 @@ skip-if = os == "mac" # Intermittent failures, bug 898317
|
||||
[browser_newtab_bug998387.js]
|
||||
[browser_newtab_disable.js]
|
||||
[browser_newtab_drag_drop.js]
|
||||
skip-if = os == "win" && debug # bug 1097056; test fails in --run-by-dir mode on win8 x64 debug
|
||||
skip-if = os == "win" && debug || (os == 'mac' && os_version == '10.10') # bug 1097056; test fails in --run-by-dir mode on win8 x64 debug; Bug 1122479 - newtab drag-drop tests fail on OS X 10.10
|
||||
[browser_newtab_drag_drop_ext.js]
|
||||
skip-if = (os == 'mac' && os_version == '10.10') # bug 1122479 - newtab drag-drop tests fail on OS X 10.10
|
||||
[browser_newtab_drop_preview.js]
|
||||
[browser_newtab_enhanced.js]
|
||||
[browser_newtab_focus.js]
|
||||
|
@ -6282,6 +6282,9 @@ class CGCallGenerator(CGThing):
|
||||
self.cgRoot.prepend(CGWrapper(result, post=";\n"))
|
||||
if resultOutParam is None:
|
||||
call = CGWrapper(call, pre=resultVar + " = ")
|
||||
elif result is not None:
|
||||
assert resultOutParam is None
|
||||
call = CGWrapper(call, pre=resultVar + " = ")
|
||||
|
||||
call = CGWrapper(call, post=";\n")
|
||||
self.cgRoot.append(call)
|
||||
|
@ -85,7 +85,6 @@ typedef HANDLE (WINAPI *CreateFileWPtr)(LPCWSTR fname, DWORD access,
|
||||
DWORD creation, DWORD flags,
|
||||
HANDLE ftemplate);
|
||||
static CreateFileWPtr sCreateFileWStub = nullptr;
|
||||
static WCHAR* sReplacementConfigFile;
|
||||
|
||||
// Used with fix for flash fullscreen window loosing focus.
|
||||
static bool gDelayFlashFocusReplyUntilEval = false;
|
||||
@ -1933,10 +1932,6 @@ PluginModuleChild::DoNP_Initialize(const PluginSettings& aSettings)
|
||||
# error Please implement me for your platform
|
||||
#endif
|
||||
|
||||
#ifdef XP_WIN
|
||||
CleanupProtectedModeHook();
|
||||
#endif
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -1971,7 +1966,8 @@ CreateFileHookFn(LPCWSTR fname, DWORD access, DWORD share,
|
||||
HANDLE replacement =
|
||||
sCreateFileWStub(tempFile, GENERIC_READ | GENERIC_WRITE, share,
|
||||
security, TRUNCATE_EXISTING,
|
||||
FILE_ATTRIBUTE_TEMPORARY,
|
||||
FILE_ATTRIBUTE_TEMPORARY |
|
||||
FILE_FLAG_DELETE_ON_CLOSE,
|
||||
NULL);
|
||||
if (replacement == INVALID_HANDLE_VALUE) {
|
||||
break;
|
||||
@ -2001,7 +1997,6 @@ CreateFileHookFn(LPCWSTR fname, DWORD access, DWORD share,
|
||||
WriteFile(replacement, static_cast<const void*>(kSettingString),
|
||||
sizeof(kSettingString) - 1, &wbytes, NULL);
|
||||
SetFilePointer(replacement, 0, NULL, FILE_BEGIN);
|
||||
sReplacementConfigFile = _wcsdup(tempFile);
|
||||
return replacement;
|
||||
}
|
||||
return sCreateFileWStub(fname, access, share, security, creation, flags,
|
||||
@ -2017,16 +2012,6 @@ PluginModuleChild::HookProtectedMode()
|
||||
(void**) &sCreateFileWStub);
|
||||
}
|
||||
|
||||
void
|
||||
PluginModuleChild::CleanupProtectedModeHook()
|
||||
{
|
||||
if (sReplacementConfigFile) {
|
||||
DeleteFile(sReplacementConfigFile);
|
||||
free(sReplacementConfigFile);
|
||||
sReplacementConfigFile = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
BOOL WINAPI
|
||||
PMCGetWindowInfoHook(HWND hWnd, PWINDOWINFO pwi)
|
||||
{
|
||||
|
@ -307,7 +307,6 @@ private:
|
||||
|
||||
#if defined(OS_WIN)
|
||||
void HookProtectedMode();
|
||||
void CleanupProtectedModeHook();
|
||||
#endif
|
||||
|
||||
#if defined(MOZ_WIDGET_GTK)
|
||||
|
@ -19,9 +19,13 @@ interface SVGSVGElement : SVGGraphicsElement {
|
||||
readonly attribute SVGAnimatedLength width;
|
||||
readonly attribute SVGAnimatedLength height;
|
||||
// readonly attribute SVGRect viewport;
|
||||
[Constant]
|
||||
readonly attribute float pixelUnitToMillimeterX;
|
||||
[Constant]
|
||||
readonly attribute float pixelUnitToMillimeterY;
|
||||
[Constant]
|
||||
readonly attribute float screenPixelToMillimeterX;
|
||||
[Constant]
|
||||
readonly attribute float screenPixelToMillimeterY;
|
||||
readonly attribute boolean useCurrentView;
|
||||
// readonly attribute SVGViewSpec currentView;
|
||||
|
@ -147,7 +147,8 @@ ClippedImage::ShouldClip()
|
||||
// If the clipping region is the same size as the underlying image we
|
||||
// don't have to do anything.
|
||||
mShouldClip.emplace(!mClip.IsEqualInterior(nsIntRect(0, 0, width, height)));
|
||||
} else if (progressTracker && progressTracker->IsLoading()) {
|
||||
} else if (progressTracker &&
|
||||
!(progressTracker->GetProgress() & FLAG_LOAD_COMPLETE)) {
|
||||
// The image just hasn't finished loading yet. We don't yet know whether
|
||||
// clipping with be needed or not for now. Just return without memoizing
|
||||
// anything.
|
||||
|
@ -36,6 +36,7 @@ Decoder::Decoder(RasterImage* aImage)
|
||||
, mDataError(false)
|
||||
, mDecodeAborted(false)
|
||||
, mImageIsTransient(false)
|
||||
, mImageIsLocked(false)
|
||||
, mFrameCount(0)
|
||||
, mFailCode(NS_OK)
|
||||
, mNeedsNewFrame(false)
|
||||
|
@ -189,6 +189,19 @@ public:
|
||||
mImageIsTransient = aIsTransient;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set whether the image is locked for the lifetime of this decoder. We lock
|
||||
* the image during our initial decode to ensure that we don't evict any
|
||||
* surfaces before we realize that the image is animated.
|
||||
*/
|
||||
void SetImageIsLocked()
|
||||
{
|
||||
MOZ_ASSERT(!mInitialized, "Shouldn't be initialized yet");
|
||||
mImageIsLocked = true;
|
||||
}
|
||||
|
||||
bool ImageIsLocked() const { return mImageIsLocked; }
|
||||
|
||||
size_t BytesDecoded() const { return mBytesDecoded; }
|
||||
|
||||
// The amount of time we've spent inside Write() so far for this decoder.
|
||||
@ -445,6 +458,7 @@ protected:
|
||||
bool mDataError;
|
||||
bool mDecodeAborted;
|
||||
bool mImageIsTransient;
|
||||
bool mImageIsLocked;
|
||||
|
||||
private:
|
||||
uint32_t mFrameCount; // Number of frames, including anything in-progress
|
||||
|
@ -127,18 +127,18 @@ class Downscaler
|
||||
public:
|
||||
explicit Downscaler(const nsIntSize&)
|
||||
{
|
||||
MOZ_RELEASE_ASSERT("Skia is not enabled");
|
||||
MOZ_RELEASE_ASSERT(false, "Skia is not enabled");
|
||||
}
|
||||
|
||||
const nsIntSize& OriginalSize() const { return nsIntSize(); }
|
||||
const nsIntSize& TargetSize() const { return nsIntSize(); }
|
||||
uint8_t* Buffer() { return nullptr; }
|
||||
|
||||
nsresult BeginFrame(const nsIntSize&, uint8_t*, bool)
|
||||
{
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
uint8_t* RowBuffer() { return nullptr; }
|
||||
void CommitRow() { }
|
||||
bool HasInvalidation() const { return false; }
|
||||
nsIntRect TakeInvalidRect() { return nsIntRect(); }
|
||||
|
@ -99,15 +99,6 @@ ProgressTracker::ResetImage()
|
||||
mImage = nullptr;
|
||||
}
|
||||
|
||||
bool
|
||||
ProgressTracker::IsLoading() const
|
||||
{
|
||||
// Checking for whether OnStopRequest has fired allows us to say we're
|
||||
// loading before OnStartRequest gets called, letting the request properly
|
||||
// get removed from the cache in certain cases.
|
||||
return !(mProgress & FLAG_LOAD_COMPLETE);
|
||||
}
|
||||
|
||||
uint32_t
|
||||
ProgressTracker::GetImageStatus() const
|
||||
{
|
||||
|
@ -88,10 +88,6 @@ public:
|
||||
return image.forget();
|
||||
}
|
||||
|
||||
// Returns whether we are in the process of loading; that is, whether we have
|
||||
// not received OnStopRequest from Necko.
|
||||
bool IsLoading() const;
|
||||
|
||||
// Get the current image status (as in imgIRequest).
|
||||
uint32_t GetImageStatus() const;
|
||||
|
||||
|
@ -1365,6 +1365,15 @@ RasterImage::CreateDecoder(const Maybe<nsIntSize>& aSize, uint32_t aFlags)
|
||||
decoder->SetSendPartialInvalidations(!mHasBeenDecoded);
|
||||
decoder->SetImageIsTransient(mTransient);
|
||||
decoder->SetDecodeFlags(DecodeFlags(aFlags));
|
||||
|
||||
if (!mHasBeenDecoded && aSize) {
|
||||
// Lock the image while we're decoding, so that it doesn't get evicted from
|
||||
// the SurfaceCache before we have a chance to realize that it's animated.
|
||||
// The corresponding unlock happens in FinalizeDecoder.
|
||||
LockImage();
|
||||
decoder->SetImageIsLocked();
|
||||
}
|
||||
|
||||
if (aSize) {
|
||||
// We already have the size; tell the decoder so it can preallocate a
|
||||
// frame. By default, we create an ARGB frame with no offset. If decoders
|
||||
@ -1544,11 +1553,6 @@ RasterImage::Decode(DecodeStrategy aStrategy,
|
||||
NotifyProgress(decoder->TakeProgress(),
|
||||
decoder->TakeInvalidRect(),
|
||||
decoder->GetDecodeFlags());
|
||||
|
||||
// Lock the image while we're decoding, so that it doesn't get evicted from
|
||||
// the SurfaceCache before we have a chance to realize that it's animated.
|
||||
// The corresponding unlock happens in FinalizeDecoder.
|
||||
LockImage();
|
||||
}
|
||||
|
||||
if (mHasSourceData) {
|
||||
@ -2045,8 +2049,8 @@ RasterImage::FinalizeDecoder(Decoder* aDecoder)
|
||||
}
|
||||
}
|
||||
|
||||
if (!wasSize) {
|
||||
// Unlock the image, balancing the LockImage call we made in Decode().
|
||||
if (aDecoder->ImageIsLocked()) {
|
||||
// Unlock the image, balancing the LockImage call we made in CreateDecoder.
|
||||
UnlockImage();
|
||||
}
|
||||
|
||||
|
@ -233,7 +233,8 @@ nsresult imgRequest::RemoveProxy(imgRequestProxy *proxy, nsresult aStatus)
|
||||
This way, if a proxy is destroyed without calling cancel on it, it won't leak
|
||||
and won't leave a bad pointer in the observer list.
|
||||
*/
|
||||
if (progressTracker->IsLoading() && NS_FAILED(aStatus)) {
|
||||
if (!(progressTracker->GetProgress() & FLAG_LAST_PART_COMPLETE) &&
|
||||
NS_FAILED(aStatus)) {
|
||||
LOG_MSG(GetImgLog(), "imgRequest::RemoveProxy", "load in progress. canceling");
|
||||
|
||||
this->Cancel(NS_BINDING_ABORTED);
|
||||
@ -309,7 +310,7 @@ void imgRequest::ContinueCancel(nsresult aStatus)
|
||||
|
||||
RemoveFromCache();
|
||||
|
||||
if (mRequest && progressTracker->IsLoading()) {
|
||||
if (mRequest && !(progressTracker->GetProgress() & FLAG_LAST_PART_COMPLETE)) {
|
||||
mRequest->Cancel(aStatus);
|
||||
}
|
||||
}
|
||||
|
@ -535,9 +535,7 @@ BacktrackingAllocator::processInterval(LiveInterval *interval)
|
||||
// be constructed so that any minimal interval is allocatable.
|
||||
MOZ_ASSERT(!minimalInterval(interval));
|
||||
|
||||
if (canAllocate && fixed)
|
||||
return splitAcrossCalls(interval);
|
||||
return chooseIntervalSplit(interval, conflict);
|
||||
return chooseIntervalSplit(interval, canAllocate && fixed, conflict);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1521,11 +1519,62 @@ BacktrackingAllocator::trySplitAcrossHotcode(LiveInterval *interval, bool *succe
|
||||
|
||||
JitSpew(JitSpew_RegAlloc, " split across hot range %s", hotRange->toString());
|
||||
|
||||
SplitPositionVector splitPositions;
|
||||
if (!splitPositions.append(hotRange->from) || !splitPositions.append(hotRange->to))
|
||||
// Tweak the splitting method when compiling asm.js code to look at actual
|
||||
// uses within the hot/cold code. This heuristic is in place as the below
|
||||
// mechanism regresses several asm.js tests. Hopefully this will be fixed
|
||||
// soon and this special case removed. See bug 948838.
|
||||
if (compilingAsmJS()) {
|
||||
SplitPositionVector splitPositions;
|
||||
if (!splitPositions.append(hotRange->from) || !splitPositions.append(hotRange->to))
|
||||
return false;
|
||||
*success = true;
|
||||
return splitAt(interval, splitPositions);
|
||||
}
|
||||
|
||||
LiveInterval *hotInterval = LiveInterval::New(alloc(), interval->vreg(), 0);
|
||||
LiveInterval *preInterval = nullptr, *postInterval = nullptr;
|
||||
|
||||
// Accumulate the ranges of hot and cold code in the interval. Note that
|
||||
// we are only comparing with the single hot range found, so the cold code
|
||||
// may contain separate hot ranges.
|
||||
Vector<LiveInterval::Range, 1, SystemAllocPolicy> hotList, coldList;
|
||||
for (size_t i = 0; i < interval->numRanges(); i++) {
|
||||
LiveInterval::Range hot, coldPre, coldPost;
|
||||
interval->getRange(i)->intersect(hotRange, &coldPre, &hot, &coldPost);
|
||||
|
||||
if (!hot.empty() && !hotInterval->addRange(hot.from, hot.to))
|
||||
return false;
|
||||
|
||||
if (!coldPre.empty()) {
|
||||
if (!preInterval)
|
||||
preInterval = LiveInterval::New(alloc(), interval->vreg(), 0);
|
||||
if (!preInterval->addRange(coldPre.from, coldPre.to))
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!coldPost.empty()) {
|
||||
if (!postInterval)
|
||||
postInterval = LiveInterval::New(alloc(), interval->vreg(), 0);
|
||||
if (!postInterval->addRange(coldPost.from, coldPost.to))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
MOZ_ASSERT(preInterval || postInterval);
|
||||
MOZ_ASSERT(hotInterval->numRanges());
|
||||
|
||||
LiveIntervalVector newIntervals;
|
||||
if (!newIntervals.append(hotInterval))
|
||||
return false;
|
||||
if (preInterval && !newIntervals.append(preInterval))
|
||||
return false;
|
||||
if (postInterval && !newIntervals.append(postInterval))
|
||||
return false;
|
||||
|
||||
distributeUses(interval, newIntervals);
|
||||
|
||||
*success = true;
|
||||
return splitAt(interval, splitPositions);
|
||||
return split(interval, newIntervals) && requeueIntervals(newIntervals);
|
||||
}
|
||||
|
||||
bool
|
||||
@ -1875,7 +1924,7 @@ BacktrackingAllocator::splitAcrossCalls(LiveInterval *interval)
|
||||
}
|
||||
|
||||
bool
|
||||
BacktrackingAllocator::chooseIntervalSplit(LiveInterval *interval, LiveInterval *conflict)
|
||||
BacktrackingAllocator::chooseIntervalSplit(LiveInterval *interval, bool fixed, LiveInterval *conflict)
|
||||
{
|
||||
bool success = false;
|
||||
|
||||
@ -1884,6 +1933,9 @@ BacktrackingAllocator::chooseIntervalSplit(LiveInterval *interval, LiveInterval
|
||||
if (success)
|
||||
return true;
|
||||
|
||||
if (fixed)
|
||||
return splitAcrossCalls(interval);
|
||||
|
||||
if (!trySplitBeforeFirstRegisterUse(interval, conflict, &success))
|
||||
return false;
|
||||
if (success)
|
||||
|
@ -236,7 +236,7 @@ class BacktrackingAllocator
|
||||
size_t computePriority(const VirtualRegisterGroup *group);
|
||||
size_t computeSpillWeight(const VirtualRegisterGroup *group);
|
||||
|
||||
bool chooseIntervalSplit(LiveInterval *interval, LiveInterval *conflict);
|
||||
bool chooseIntervalSplit(LiveInterval *interval, bool fixed, LiveInterval *conflict);
|
||||
|
||||
bool splitAt(LiveInterval *interval,
|
||||
const SplitPositionVector &splitPositions);
|
||||
@ -245,6 +245,10 @@ class BacktrackingAllocator
|
||||
bool trySplitBeforeFirstRegisterUse(LiveInterval *interval, LiveInterval *conflict, bool *success);
|
||||
bool splitAtAllRegisterUses(LiveInterval *interval);
|
||||
bool splitAcrossCalls(LiveInterval *interval);
|
||||
|
||||
bool compilingAsmJS() {
|
||||
return mir->info().compilingAsmJS();
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace jit
|
||||
|
@ -480,19 +480,19 @@ nsFieldSetFrame::Reflow(nsPresContext* aPresContext,
|
||||
// Our child is "height:100%" but we actually want its height to be reduced
|
||||
// by the amount of content-height the legend is eating up, unless our
|
||||
// height is unconstrained (in which case the child's will be too).
|
||||
if (aReflowState.ComputedHeight() != NS_UNCONSTRAINEDSIZE) {
|
||||
kidReflowState.SetComputedHeight(
|
||||
std::max(0, aReflowState.ComputedHeight() - mLegendSpace));
|
||||
if (aReflowState.ComputedBSize() != NS_UNCONSTRAINEDSIZE) {
|
||||
kidReflowState.SetComputedBSize(
|
||||
std::max(0, aReflowState.ComputedBSize() - mLegendSpace));
|
||||
}
|
||||
|
||||
if (aReflowState.ComputedMinHeight() > 0) {
|
||||
kidReflowState.ComputedMinHeight() =
|
||||
std::max(0, aReflowState.ComputedMinHeight() - mLegendSpace);
|
||||
if (aReflowState.ComputedMinBSize() > 0) {
|
||||
kidReflowState.ComputedMinBSize() =
|
||||
std::max(0, aReflowState.ComputedMinBSize() - mLegendSpace);
|
||||
}
|
||||
|
||||
if (aReflowState.ComputedMaxHeight() != NS_UNCONSTRAINEDSIZE) {
|
||||
kidReflowState.ComputedMaxHeight() =
|
||||
std::max(0, aReflowState.ComputedMaxHeight() - mLegendSpace);
|
||||
if (aReflowState.ComputedMaxBSize() != NS_UNCONSTRAINEDSIZE) {
|
||||
kidReflowState.ComputedMaxBSize() =
|
||||
std::max(0, aReflowState.ComputedMaxBSize() - mLegendSpace);
|
||||
}
|
||||
|
||||
nsHTMLReflowMetrics kidDesiredSize(kidReflowState,
|
||||
|
@ -99,6 +99,6 @@ fails-if(OSX==1006) == 672646-alpha-radial-gradient.html 672646-alpha-radial-gra
|
||||
== 749467-1.html 749467-1-ref.html
|
||||
|
||||
# You get a little bit of rounding fuzz on OSX from transforming the paths between user space and device space
|
||||
fuzzy-if(azureQuartz,2,113) fuzzy-if(d2d,12,21) == 784573-1.html 784573-1-ref.html
|
||||
fuzzy-if(azureQuartz,2,128) fuzzy-if(d2d,12,21) == 784573-1.html 784573-1-ref.html
|
||||
|
||||
== 802658-1.html 802658-1-ref.html
|
||||
|
@ -52,9 +52,9 @@ fuzzy-if(!contentSameGfxBackendAsCanvas,1,88500) fuzzy-if(azureSkiaGL,2,89700) f
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,88500) fuzzy-if(azureSkiaGL,2,89700) fuzzy-if(azureQuartz,1,22367) == linear-vertical-1e.html linear-vertical-1-ref.html
|
||||
== linear-vertical-subpixel-1.html linear-vertical-subpixel-1-ref.html
|
||||
== linear-viewport.html linear-viewport-ref.html
|
||||
== linear-zero-length-1a.html linear-zero-length-1-ref.html
|
||||
== linear-zero-length-1b.html linear-zero-length-1-ref.html
|
||||
== linear-zero-length-1c.html linear-zero-length-1-ref.html
|
||||
fails-if(OSX==1010) == linear-zero-length-1a.html linear-zero-length-1-ref.html
|
||||
fails-if(OSX==1010) == linear-zero-length-1b.html linear-zero-length-1-ref.html
|
||||
fails-if(OSX==1010) == linear-zero-length-1c.html linear-zero-length-1-ref.html
|
||||
== nostops.html about:blank
|
||||
== onestop.html about:blank
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,5884) fuzzy-if(cocoaWidget,9,87824) fuzzy-if(azureSkiaGL,2,88024) random-if(d2d) == radial-1a.html radial-1-ref.html
|
||||
|
@ -0,0 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Maximum height on fieldset</title>
|
||||
<style>
|
||||
div {
|
||||
writing-mode: vertical-lr;
|
||||
}
|
||||
fieldset {
|
||||
background:rgba(0,0,0,0.1);
|
||||
border-color:teal;
|
||||
border-width:2px;
|
||||
height:100px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<fieldset>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing
|
||||
elit. Duis odio est, cursus non adipiscing at, fringilla
|
||||
quis eros. Sed volutpat nibh sit amet ante molestie a
|
||||
vehicula nulla gravida. Mauris elementum cursus urna id
|
||||
vestibulum.</p>
|
||||
</fieldset>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Maximum height on fieldset</title>
|
||||
<style>
|
||||
div {
|
||||
writing-mode: vertical-lr;
|
||||
}
|
||||
fieldset {
|
||||
background:rgba(0,0,0,0.1);
|
||||
border-color:teal;
|
||||
border-width:2px;
|
||||
max-height:100px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<fieldset>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing
|
||||
elit. Duis odio est, cursus non adipiscing at, fringilla
|
||||
quis eros. Sed volutpat nibh sit amet ante molestie a
|
||||
vehicula nulla gravida. Mauris elementum cursus urna id
|
||||
vestibulum.</p>
|
||||
</fieldset>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Minimum height on fieldset</title>
|
||||
<style>
|
||||
div {
|
||||
writing-mode: vertical-lr;
|
||||
}
|
||||
fieldset {
|
||||
background:rgba(0,0,0,0.1);
|
||||
border-color:teal;
|
||||
border-width:2px;
|
||||
height:400px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<fieldset>
|
||||
<p>Lorem ipsum.</p>
|
||||
</fieldset>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Minimum height on fieldset</title>
|
||||
<style>
|
||||
div {
|
||||
writing-mode: vertical-lr;
|
||||
}
|
||||
fieldset {
|
||||
background:rgba(0,0,0,0.1);
|
||||
border-color:teal;
|
||||
border-width:2px;
|
||||
min-height:200px;
|
||||
max-height:400px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<fieldset>
|
||||
<p>Lorem ipsum.</p>
|
||||
</fieldset>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -35,3 +35,5 @@ fails == 1102175-1a.html 1102175-1-ref.html
|
||||
== 1111944-1-list-marker.html 1111944-1-list-marker-ref.html
|
||||
HTTP(..) == 1115916-1-vertical-metrics.html 1115916-1-vertical-metrics-ref.html
|
||||
== 1122366-1-margin-collapse.html 1122366-1-margin-collapse-ref.html
|
||||
== 1124636-1-fieldset-max-height.html 1124636-1-fieldset-max-height-ref.html
|
||||
== 1124636-2-fieldset-min-height.html 1124636-2-fieldset-min-height-ref.html
|
||||
|
@ -23,5 +23,5 @@
|
||||
TIMEOUT
|
||||
|
||||
[Test setting same duration multiple times does not fire duplicate durationchange]
|
||||
expected: FAIL
|
||||
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1116007
|
||||
|
||||
|
@ -44,6 +44,8 @@
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
const isOSXYosemite = navigator.userAgent.indexOf("Mac OS X 10.10") != -1;
|
||||
|
||||
var expectedAnchor = null;
|
||||
var expectedSide = "", expectedAnchorEdge = "", expectedPack = "", expectedAlignment = "";
|
||||
var zoomFactor = 1;
|
||||
@ -292,7 +294,8 @@ function checkPanelPosition(panel)
|
||||
adj = hwinpos + parseInt(getComputedStyle(panel, "").marginRight);
|
||||
if (iscentered)
|
||||
adj += Math.round(anchorRect.width) / 2;
|
||||
isWithinHalfPixel(panelRect.right, anchorRect.right * zoomFactor - adj, "anchored on right");
|
||||
if (!isOSXYosemite)
|
||||
isWithinHalfPixel(panelRect.right, anchorRect.right * zoomFactor - adj, "anchored on right");
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,7 @@ support-files =
|
||||
[test_custom_origin.xul]
|
||||
skip-if = asan
|
||||
[test_custom_origin_uninstall_install.xul]
|
||||
skip-if = asan
|
||||
skip-if = asan || (os == 'mac' && os_version == '10.10') # Bug 1123085
|
||||
[test_install_appcache.xul]
|
||||
skip-if = asan
|
||||
[test_hosted.xul]
|
||||
@ -22,9 +22,9 @@ skip-if = asan
|
||||
[test_packaged_launch_no_registry.xul]
|
||||
skip-if = asan
|
||||
[test_hosted_uninstall.xul]
|
||||
skip-if = os == "win" && os_version == "5.1" # see bug 981251
|
||||
skip-if = (os == "win" && os_version == "5.1") || (os == 'mac' && os_version == '10.10') # WinXP: bug 981251; OS X 10.10: bug 1123085
|
||||
[test_packaged_uninstall.xul]
|
||||
skip-if = os == "win" && os_version == "5.1" # see bug 981251
|
||||
skip-if = (os == "win" && os_version == "5.1") || (os == 'mac' && os_version == '10.10') # WinXP: bug 981251; OS X 10.10: bug 1123085
|
||||
[test_hosted_update_from_webapp_runtime.xul]
|
||||
skip-if = asan
|
||||
[test_packaged_update_from_webapp_runtime.xul]
|
||||
|
Loading…
x
Reference in New Issue
Block a user