summaryrefslogtreecommitdiffstats
path: root/layout/generic
diff options
context:
space:
mode:
Diffstat (limited to 'layout/generic')
-rw-r--r--layout/generic/ReflowInput.cpp1
-rw-r--r--layout/generic/crashtests/265867-1.html11
-rw-r--r--layout/generic/crashtests/348510-1.html7
-rw-r--r--layout/generic/crashtests/348510-2.html7
-rw-r--r--layout/generic/crashtests/363722-1.html9
-rw-r--r--layout/generic/crashtests/363722-2.html10
-rw-r--r--layout/generic/crashtests/370866-1.xhtml14
-rw-r--r--layout/generic/crashtests/379917-1.xhtml35
-rw-r--r--layout/generic/crashtests/398332-3.html4
-rw-r--r--layout/generic/crashtests/421671.html202
-rw-r--r--layout/generic/crashtests/619021.html5
-rw-r--r--layout/generic/crashtests/724235.html28
-rw-r--r--layout/generic/nsBlockFrame.cpp7
-rw-r--r--layout/generic/nsFrameStateBits.h3
-rw-r--r--layout/generic/nsHTMLParts.h3
15 files changed, 9 insertions, 337 deletions
diff --git a/layout/generic/ReflowInput.cpp b/layout/generic/ReflowInput.cpp
index 78eca8c6c..e55b629e3 100644
--- a/layout/generic/ReflowInput.cpp
+++ b/layout/generic/ReflowInput.cpp
@@ -844,6 +844,7 @@ ReflowInput::InitFrameType(nsIAtom* aFrameType)
case StyleDisplay::Flex:
case StyleDisplay::WebkitBox:
case StyleDisplay::Grid:
+ case StyleDisplay::FlowRoot:
case StyleDisplay::RubyTextContainer:
frameType = NS_CSS_FRAME_TYPE_BLOCK;
break;
diff --git a/layout/generic/crashtests/265867-1.html b/layout/generic/crashtests/265867-1.html
deleted file mode 100644
index e9da8c7f6..000000000
--- a/layout/generic/crashtests/265867-1.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<HTML>
-<HEAD>
-</HEAD>
-<BODY>
-<BODY STYLE="FLOAT:RIGHT;"></BODY>
-<MARQUEE STYLE="MARGIN:99999999999px;"></MARQUEE>
-<B STYLE="FLOAT:RIGHT; PADDING:99999999999px;"></B>
-</BODY>
-</HTML>
-
-
diff --git a/layout/generic/crashtests/348510-1.html b/layout/generic/crashtests/348510-1.html
deleted file mode 100644
index 6e00e71f1..000000000
--- a/layout/generic/crashtests/348510-1.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<marquee>
-<a>
-<object>
-<dd>
-<form>
-</object>
-aaaaaaa
diff --git a/layout/generic/crashtests/348510-2.html b/layout/generic/crashtests/348510-2.html
deleted file mode 100644
index 8f8c998cf..000000000
--- a/layout/generic/crashtests/348510-2.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<listing>
-<marquee>
-<aa>
-<object>
-<fieldset>
-</object>
-a \ No newline at end of file
diff --git a/layout/generic/crashtests/363722-1.html b/layout/generic/crashtests/363722-1.html
deleted file mode 100644
index f83671c5a..000000000
--- a/layout/generic/crashtests/363722-1.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<html>
-<body>
- <marquee style="background: yellow;">
- <marquee style="background: lightgreen;">
- I am a double-marquee.
- </marquee>
- </marquee>
-</body>
-</html>
diff --git a/layout/generic/crashtests/363722-2.html b/layout/generic/crashtests/363722-2.html
deleted file mode 100644
index 1a12a227e..000000000
--- a/layout/generic/crashtests/363722-2.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<body>
- <marquee style="background: yellow;">
- [inside OUTER marquee]
- <marquee style="background: lightgreen;">
- [inside INNER marquee]
- </marquee>
- </marquee>
-</body>
-</html>
diff --git a/layout/generic/crashtests/370866-1.xhtml b/layout/generic/crashtests/370866-1.xhtml
deleted file mode 100644
index dbc673cc4..000000000
--- a/layout/generic/crashtests/370866-1.xhtml
+++ /dev/null
@@ -1,14 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-</head>
-
-<body>
-
-<table style="display: -moz-deck;"><tbody><tr><td>
- <span style="position: relative;"><marquee><marquee><span style="position: absolute;">X</span></marquee></marquee></span>
-</td></tr></tbody></table>
-
-</body>
-
-</html>
diff --git a/layout/generic/crashtests/379917-1.xhtml b/layout/generic/crashtests/379917-1.xhtml
deleted file mode 100644
index a99bd7f4a..000000000
--- a/layout/generic/crashtests/379917-1.xhtml
+++ /dev/null
@@ -1,35 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:math="http://www.w3.org/1998/Math/MathML"
- class="reftest-wait">
-<head>
-<script>
-
-// This testcase uses long timeouts to make sure the marquee has a chance to animate.
-
-function boom()
-{
- var div1 = document.getElementById("div1");
- var marquee = document.getElementById("marquee");
-
- div1.parentNode.removeChild(div1);
- marquee.width = 4;
-
- setTimeout(done, 100);
-}
-
-function done()
-{
- document.documentElement.removeAttribute("class");
-}
-
-</script>
-</head>
-
-<body onload="setTimeout(boom, 100);">
-
-<math:math><div id="div1"/>x&#1506;</math:math>
-<marquee id="marquee">m</marquee>
-<div/>
-
-</body>
-</html>
diff --git a/layout/generic/crashtests/398332-3.html b/layout/generic/crashtests/398332-3.html
deleted file mode 100644
index 991aa6d3d..000000000
--- a/layout/generic/crashtests/398332-3.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<marquee style="position: relative; right: 20%;">"Ë”Öqü®Û;<span style="position: relative; word-spacing: -100px;"><span style="position: absolute;">
-<style>span::before { content:"before textbefore textbefore textbefore textbefore textbefore text"; }</style>
-
-
diff --git a/layout/generic/crashtests/421671.html b/layout/generic/crashtests/421671.html
deleted file mode 100644
index e3919e635..000000000
--- a/layout/generic/crashtests/421671.html
+++ /dev/null
@@ -1,202 +0,0 @@
-<marquee>
-<xmp style="-moz-column-count: 99999999">
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-
-<a>
-<a>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<a>
-<a>
-<a>
-<a>
-
-<a>
-<a>
-
-<a>
-<a> \ No newline at end of file
diff --git a/layout/generic/crashtests/619021.html b/layout/generic/crashtests/619021.html
deleted file mode 100644
index 586c0f2db..000000000
--- a/layout/generic/crashtests/619021.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<foo> <marquee> <marquee> <marquee> <marquee> <marquee> <marquee>
-<foo> <marquee> <foo> <marquee> <foo> <object> <marquee> <foo>
-<marquee> <marquee> <foo> <foo> <marquee> <marquee> <foo> <marquee>
-<marquee> <marquee> <foo> <marquee> <foo> <foo> <marquee> <marquee>
-<marquee> </marquee> <foo> <foo> <pre>
diff --git a/layout/generic/crashtests/724235.html b/layout/generic/crashtests/724235.html
deleted file mode 100644
index 7054a99f5..000000000
--- a/layout/generic/crashtests/724235.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>Testcase for bug 724235</title>
-</head>
-
-<body onload="setTimeout(function(){m=document.getElementsByTagName('marquee')[0]; m.style.fontSize='72px'},0)">
-
-<a href="#">
-
-<center>
-
-<marquee>This is a marquee ... </marquee>
-
-<table>
- <tr>
- <td><a href="#">click me to CRASH!</a></td>
- </tr>
-</table>
-
-<iframe></iframe>
-
-<script>document.body.offsetHeight;</script>
-
-<a href="#"></a>
-
-
-</body></html>
diff --git a/layout/generic/nsBlockFrame.cpp b/layout/generic/nsBlockFrame.cpp
index 57838207d..41437c8f8 100644
--- a/layout/generic/nsBlockFrame.cpp
+++ b/layout/generic/nsBlockFrame.cpp
@@ -305,7 +305,7 @@ NS_NewBlockFormattingContext(nsIPresShell* aPresShell,
nsStyleContext* aStyleContext)
{
nsBlockFrame* blockFrame = NS_NewBlockFrame(aPresShell, aStyleContext);
- blockFrame->AddStateBits(NS_BLOCK_FLOAT_MGR | NS_BLOCK_MARGIN_ROOT);
+ blockFrame->AddStateBits(NS_BLOCK_FORMATTING_CONTEXT_STATE_BITS);
return blockFrame;
}
@@ -6896,10 +6896,11 @@ nsBlockFrame::Init(nsIContent* aContent,
// (http://dev.w3.org/csswg/css-writing-modes/#block-flow)
// If the box has contain: paint (or contain: strict), then it should also
// establish a formatting context.
- if ((GetParent() && StyleVisibility()->mWritingMode !=
+ if (StyleDisplay()->mDisplay == mozilla::StyleDisplay::FlowRoot ||
+ (GetParent() && StyleVisibility()->mWritingMode !=
GetParent()->StyleVisibility()->mWritingMode) ||
StyleDisplay()->IsContainPaint()) {
- AddStateBits(NS_BLOCK_FLOAT_MGR | NS_BLOCK_MARGIN_ROOT);
+ AddStateBits(NS_BLOCK_FORMATTING_CONTEXT_STATE_BITS);
}
if ((GetStateBits() &
diff --git a/layout/generic/nsFrameStateBits.h b/layout/generic/nsFrameStateBits.h
index f8b1e541c..ba43e37d4 100644
--- a/layout/generic/nsFrameStateBits.h
+++ b/layout/generic/nsFrameStateBits.h
@@ -483,6 +483,9 @@ FRAME_STATE_BIT(Block, 22, NS_BLOCK_MARGIN_ROOT)
// used to reserve space for the floated frames.
FRAME_STATE_BIT(Block, 23, NS_BLOCK_FLOAT_MGR)
+// For setting the relevant bits on a block formatting context:
+#define NS_BLOCK_FORMATTING_CONTEXT_STATE_BITS (NS_BLOCK_FLOAT_MGR | NS_BLOCK_MARGIN_ROOT)
+
FRAME_STATE_BIT(Block, 24, NS_BLOCK_HAS_LINE_CURSOR)
FRAME_STATE_BIT(Block, 25, NS_BLOCK_HAS_OVERFLOW_LINES)
diff --git a/layout/generic/nsHTMLParts.h b/layout/generic/nsHTMLParts.h
index 89a7a6edd..b11d49e08 100644
--- a/layout/generic/nsHTMLParts.h
+++ b/layout/generic/nsHTMLParts.h
@@ -27,8 +27,7 @@ class nsTableColFrame;
// These are all the block specific frame bits, they are copied from
// the prev-in-flow to a newly created next-in-flow, except for the
// NS_BLOCK_FLAGS_NON_INHERITED_MASK bits below.
-#define NS_BLOCK_FLAGS_MASK (NS_BLOCK_MARGIN_ROOT | \
- NS_BLOCK_FLOAT_MGR | \
+#define NS_BLOCK_FLAGS_MASK (NS_BLOCK_FORMATTING_CONTEXT_STATE_BITS | \
NS_BLOCK_CLIP_PAGINATED_OVERFLOW | \
NS_BLOCK_HAS_FIRST_LETTER_STYLE | \
NS_BLOCK_FRAME_HAS_OUTSIDE_BULLET | \