mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 12:55:46 +00:00
Bug 1223561 - Support putting <table> into fullscreen. r=dbaron
MozReview-Commit-ID: 5ohJW9U65dr --HG-- extra : rebase_source : 3edab41eb85239cc765d7305b1a6083397d4a158
This commit is contained in:
parent
fb324d76b9
commit
b283046733
52
dom/html/test/file_fullscreen-table.html
Normal file
52
dom/html/test/file_fullscreen-table.html
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Test for Bug 1223561</title>
|
||||||
|
<script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
|
||||||
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||||
|
<script type="text/javascript" src="/tests/SimpleTest/WindowSnapshot.js"></script>
|
||||||
|
<script type="text/javascript" src="file_fullscreen-utils.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table style="background-color: green"></table>
|
||||||
|
<script>
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
function ok(condition, msg) {
|
||||||
|
opener.ok(condition, "[table] " + msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
function is(a, b, msg) {
|
||||||
|
opener.is(a, b, "[table] " + msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
function info(msg) {
|
||||||
|
opener.info("[table] " + msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
const gTable = document.querySelector("table");
|
||||||
|
|
||||||
|
function begin() {
|
||||||
|
info("The default background of window should be white");
|
||||||
|
addFullscreenChangeContinuation("enter", enteredFullscreen);
|
||||||
|
assertWindowPureColor(window, "white");
|
||||||
|
gTable.requestFullscreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
function enteredFullscreen() {
|
||||||
|
info("The table with green background should be in fullscreen");
|
||||||
|
assertWindowPureColor(window, "green");
|
||||||
|
gTable.style = "background: transparent";
|
||||||
|
info("When the table becames transparent, the black backdrop should appear");
|
||||||
|
assertWindowPureColor(window, "black");
|
||||||
|
addFullscreenChangeContinuation("exit", exitedFullscreen);
|
||||||
|
document.exitFullscreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
function exitedFullscreen() {
|
||||||
|
opener.nextTest();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -53,28 +53,6 @@ support-files =
|
|||||||
file_bug1260704.png
|
file_bug1260704.png
|
||||||
file_formSubmission_img.jpg
|
file_formSubmission_img.jpg
|
||||||
file_formSubmission_text.txt
|
file_formSubmission_text.txt
|
||||||
file_fullscreen-api.html
|
|
||||||
file_fullscreen-backdrop.html
|
|
||||||
file_fullscreen-denied-inner.html
|
|
||||||
file_fullscreen-denied.html
|
|
||||||
file_fullscreen-esc-exit-inner.html
|
|
||||||
file_fullscreen-esc-exit.html
|
|
||||||
file_fullscreen-hidden.html
|
|
||||||
file_fullscreen-lenient-setters.html
|
|
||||||
file_fullscreen-multiple-inner.html
|
|
||||||
file_fullscreen-multiple.html
|
|
||||||
file_fullscreen-navigation.html
|
|
||||||
file_fullscreen-nested.html
|
|
||||||
file_fullscreen-prefixed.html
|
|
||||||
file_fullscreen-plugins.html
|
|
||||||
file_fullscreen-rollback.html
|
|
||||||
file_fullscreen-scrollbar.html
|
|
||||||
file_fullscreen-selector.html
|
|
||||||
file_fullscreen-svg-element.html
|
|
||||||
file_fullscreen-top-layer.html
|
|
||||||
file_fullscreen-unprefix-disabled-inner.html
|
|
||||||
file_fullscreen-unprefix-disabled.html
|
|
||||||
file_fullscreen-utils.js
|
|
||||||
file_iframe_sandbox_a_if1.html
|
file_iframe_sandbox_a_if1.html
|
||||||
file_iframe_sandbox_a_if10.html
|
file_iframe_sandbox_a_if10.html
|
||||||
file_iframe_sandbox_a_if11.html
|
file_iframe_sandbox_a_if11.html
|
||||||
@ -461,6 +439,30 @@ skip-if = toolkit == 'android'
|
|||||||
[test_fullscreen-api.html]
|
[test_fullscreen-api.html]
|
||||||
tags = fullscreen
|
tags = fullscreen
|
||||||
skip-if = toolkit == 'android'
|
skip-if = toolkit == 'android'
|
||||||
|
support-files =
|
||||||
|
file_fullscreen-api.html
|
||||||
|
file_fullscreen-backdrop.html
|
||||||
|
file_fullscreen-denied-inner.html
|
||||||
|
file_fullscreen-denied.html
|
||||||
|
file_fullscreen-esc-exit-inner.html
|
||||||
|
file_fullscreen-esc-exit.html
|
||||||
|
file_fullscreen-hidden.html
|
||||||
|
file_fullscreen-lenient-setters.html
|
||||||
|
file_fullscreen-multiple-inner.html
|
||||||
|
file_fullscreen-multiple.html
|
||||||
|
file_fullscreen-navigation.html
|
||||||
|
file_fullscreen-nested.html
|
||||||
|
file_fullscreen-prefixed.html
|
||||||
|
file_fullscreen-plugins.html
|
||||||
|
file_fullscreen-rollback.html
|
||||||
|
file_fullscreen-scrollbar.html
|
||||||
|
file_fullscreen-selector.html
|
||||||
|
file_fullscreen-svg-element.html
|
||||||
|
file_fullscreen-table.html
|
||||||
|
file_fullscreen-top-layer.html
|
||||||
|
file_fullscreen-unprefix-disabled-inner.html
|
||||||
|
file_fullscreen-unprefix-disabled.html
|
||||||
|
file_fullscreen-utils.js
|
||||||
[test_fullscreen-api-race.html]
|
[test_fullscreen-api-race.html]
|
||||||
tags = fullscreen
|
tags = fullscreen
|
||||||
skip-if = toolkit == 'android' # just copy the conditions from the test above
|
skip-if = toolkit == 'android' # just copy the conditions from the test above
|
||||||
|
@ -45,6 +45,7 @@ var gTestWindows = [
|
|||||||
"file_fullscreen-prefixed.html",
|
"file_fullscreen-prefixed.html",
|
||||||
"file_fullscreen-unprefix-disabled.html",
|
"file_fullscreen-unprefix-disabled.html",
|
||||||
"file_fullscreen-lenient-setters.html",
|
"file_fullscreen-lenient-setters.html",
|
||||||
|
"file_fullscreen-table.html",
|
||||||
];
|
];
|
||||||
|
|
||||||
var testWindow = null;
|
var testWindow = null;
|
||||||
|
@ -206,10 +206,25 @@ nsPlaceholderFrame::GetParentStyleContext(nsIFrame** aProviderFrame) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nsIFrame* parentFrame = GetParent();
|
||||||
|
// Placeholder of backdrop frame is a child of the corresponding top
|
||||||
|
// layer frame, and its style context inherits from that frame. In
|
||||||
|
// case of table, the top layer frame is the table wrapper frame.
|
||||||
|
// However, it will be skipped in CorrectStyleParentFrame below, so
|
||||||
|
// we need to handle it specially here.
|
||||||
|
if ((GetStateBits() & PLACEHOLDER_FOR_TOPLAYER) &&
|
||||||
|
parentFrame->GetType() == nsGkAtoms::tableWrapperFrame) {
|
||||||
|
MOZ_ASSERT(mOutOfFlowFrame->GetType() == nsGkAtoms::backdropFrame,
|
||||||
|
"Only placeholder of backdrop frame can be put inside "
|
||||||
|
"a table wrapper frame");
|
||||||
|
return parentFrame->StyleContext();
|
||||||
|
}
|
||||||
|
|
||||||
// Lie about our pseudo so we can step out of all anon boxes and
|
// Lie about our pseudo so we can step out of all anon boxes and
|
||||||
// pseudo-elements. The other option would be to reimplement the
|
// pseudo-elements. The other option would be to reimplement the
|
||||||
// {ib} split gunk here.
|
// {ib} split gunk here.
|
||||||
*aProviderFrame = CorrectStyleParentFrame(GetParent(), nsGkAtoms::placeholderFrame);
|
*aProviderFrame = CorrectStyleParentFrame(parentFrame,
|
||||||
|
nsGkAtoms::placeholderFrame);
|
||||||
return *aProviderFrame ? (*aProviderFrame)->StyleContext() : nullptr;
|
return *aProviderFrame ? (*aProviderFrame)->StyleContext() : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
*|*::-moz-table-wrapper {
|
*|*::-moz-table-wrapper {
|
||||||
|
/* The inherited properties here need to be safe to have on both the
|
||||||
|
* table and the table wrapper, generally because code ignores them
|
||||||
|
* for the table. */
|
||||||
display: inherit !important; /* table or inline-table */
|
display: inherit !important; /* table or inline-table */
|
||||||
|
-moz-top-layer: inherit !important;
|
||||||
margin: inherit ! important;
|
margin: inherit ! important;
|
||||||
padding: 0 ! important;
|
padding: 0 ! important;
|
||||||
border: none ! important;
|
border: none ! important;
|
||||||
|
Loading…
Reference in New Issue
Block a user