diff --git a/test/domRectSVG.svg b/test/domRectSVG.svg
new file mode 100644
index 0000000..17be7bf
--- /dev/null
+++ b/test/domRectSVG.svg
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/test/domRectTest.css b/test/domRectTest.css
index 63b9efa..0518a89 100644
--- a/test/domRectTest.css
+++ b/test/domRectTest.css
@@ -1,5 +1,5 @@
-#iframe {
+#iframe, #svg {
position: fixed;
top: -2000%;
}
diff --git a/test/domRectTest.js b/test/domRectTest.js
index f433866..ee7ebed 100644
--- a/test/domRectTest.js
+++ b/test/domRectTest.js
@@ -12,12 +12,13 @@
const container = document.getElementById("tests");
const iframe = document.getElementById("iframe");
+ const svg = document.getElementById("svg");
const noIframe = document.getElementById("noIframe");
const template = document.querySelector(".test");
template.parentElement.removeChild(template);
function getElements(useIframe = true){
- const doc = useIframe? iframe.contentDocument: noIframe;
+ const doc = useIframe? (useIframe === "svg"? svg.contentDocument: iframe.contentDocument): noIframe;
return Array.from(doc.querySelectorAll(".testRect"));
}
@@ -58,9 +59,15 @@
"" +
properties.map(function(property){
return "
" + property + " | " + rects.map(function(rect){
- return "" +
- formatNumber(rect.data[property]) +
- " | ";
+ const value = rect.data[property];
+ if ((typeof value) === "number"){
+ return "" +
+ formatNumber(rect.data[property]) +
+ " | ";
+ }
+ else {
+ return "not available | ";
+ }
}).join("") + "
";
}).join("") +
"";
@@ -79,7 +86,8 @@
function createTest(title, callback, useIframe){
const output = template.cloneNode(true);
- output.querySelector(".title").textContent = title + (useIframe? " (iframe)": "");
+ output.querySelector(".title").textContent = title +
+ (useIframe? " (" + (useIframe === "svg"? "svg": "iframe") + ")": "");
output.querySelector(".refresh").addEventListener("click", function(){
performTest(output, callback, useIframe);
});
@@ -145,6 +153,17 @@
return range.getBoundingClientRect();
}, useIframe);
});
+ createTest("SVGGraphicsElement.getBBox", function(element){
+ return element.getBBox();
+ }, "svg");
+ createTest("SVGTextContentElement.getExtentOfChar", function(element){
+ return element.getExtentOfChar(element.textContent.length - 1);
+ }, "svg");
+ createTest("SVGTextContentElement.get(Start|End)OfChar", function(element){
+ const start = element.getStartPositionOfChar(element.textContent.length - 1);
+ const end = element.getEndPositionOfChar(element.textContent.length - 1);
+ return new DOMRect(start.x, start.y, end.x - start.x, end.y - start.y);
+ }, "svg");
document.querySelectorAll(".content-hidable").forEach(function(parentNode){
parentNode.querySelector(".toggle").addEventListener("click", function(){
diff --git a/test/domRectTest.php b/test/domRectTest.php
index 15898d4..4d30b24 100644
--- a/test/domRectTest.php
+++ b/test/domRectTest.php
@@ -11,12 +11,13 @@
DOMRect test
Expected result
- - all the hashes and numbers should be equal for each test
+ - all the hashes and numbers should be equal for the getClientRects and getBoundingClientRect tests
- if "refresh" is clicked the hash must not change
- upon page reload the hashes change (depending on CanvasBlocker settings - e.g. not in the stealth preset)
Tests
+