summaryrefslogtreecommitdiffstats
path: root/layout/svg/svg.css
diff options
context:
space:
mode:
Diffstat (limited to 'layout/svg/svg.css')
-rw-r--r--layout/svg/svg.css104
1 files changed, 104 insertions, 0 deletions
diff --git a/layout/svg/svg.css b/layout/svg/svg.css
new file mode 100644
index 0000000000..af3a55343b
--- /dev/null
+++ b/layout/svg/svg.css
@@ -0,0 +1,104 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * 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/. */
+
+@namespace url(http://www.w3.org/2000/svg);
+@namespace xml url(http://www.w3.org/XML/1998/namespace);
+
+style, script {
+ display: none;
+}
+
+/*
+ * This is only to be overridden by the rule right below.
+ *
+ * NOTE(emilio): NodeCouldBeRendered in SVGUseElement.cpp relies on this.
+ */
+symbol {
+ display: none !important;
+}
+
+/*
+ * From https://svgwg.org/svg2-draft/struct.html#SymbolNotes:
+ *
+ * > The generated instance of a 'symbol' that is the direct referenced element
+ * > of a 'use' element must always have a computed value of inline for the
+ * > display property. In other words, it must be rendered whenever the host
+ * > 'use' element is rendered.
+ *
+ * NOTE(emilio): other browsers instead just replace the `<symbol>` element by
+ * an `<svg>` element while cloning, but they don't implement the SVG2
+ * selector-matching rules that would make that observable via selectors.
+ */
+symbol:-moz-use-shadow-tree-root {
+ display: inline !important;
+}
+
+svg:not(:root), symbol, image, marker, pattern, foreignObject {
+ overflow: hidden;
+}
+
+@media all and (-moz-is-glyph) {
+ :root {
+ fill: context-fill;
+ fill-opacity: context-fill-opacity;
+ stroke: context-stroke;
+ stroke-opacity: context-stroke-opacity;
+ stroke-width: context-value;
+ stroke-dasharray: context-value;
+ stroke-dashoffset: context-value;
+ }
+}
+
+foreignObject {
+ appearance: none ! important;
+ margin: 0 ! important;
+ padding: 0 ! important;
+ border-width: 0 ! important;
+ white-space: normal;
+}
+
+@media all and (-moz-is-resource-document) {
+ foreignObject *|* {
+ appearance: none !important;
+ }
+}
+
+*|*::-moz-svg-foreign-content {
+ display: block !important;
+ /* We need to be an absolute and fixed container */
+ transform: translate(0) !important;
+ text-indent: 0;
+}
+
+/* Set |transform-origin:0 0;| for all SVG elements except outer-<svg>,
+ noting that 'svg' as a child of 'foreignObject' counts as outer-<svg>.
+*/
+*:not(svg),
+*:not(foreignObject) > svg {
+ transform-origin:0 0;
+}
+
+*|*::-moz-svg-text {
+ unicode-bidi: inherit;
+ vector-effect: inherit;
+}
+
+*[xml|space=preserve] {
+ white-space: -moz-pre-space;
+}
+
+*|*::-moz-svg-marker-anon-child {
+ clip-path: inherit;
+ filter: inherit;
+ mask: inherit;
+ opacity: inherit;
+}
+
+/* Make SVG shapes unselectable to avoid triggering AccessibleCaret on tap.
+ <mesh> will be supported in bug 1238882. */
+circle, ellipse, line, mesh, path, polygon, polyline, rect {
+ user-select: none;
+}