summaryrefslogtreecommitdiffstats
path: root/mobile/android/geckoview/src/androidTest/assets/www/selectionAction_frame_xorigin.html
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/geckoview/src/androidTest/assets/www/selectionAction_frame_xorigin.html')
-rw-r--r--mobile/android/geckoview/src/androidTest/assets/www/selectionAction_frame_xorigin.html47
1 files changed, 47 insertions, 0 deletions
diff --git a/mobile/android/geckoview/src/androidTest/assets/www/selectionAction_frame_xorigin.html b/mobile/android/geckoview/src/androidTest/assets/www/selectionAction_frame_xorigin.html
new file mode 100644
index 0000000000..87a4d6039e
--- /dev/null
+++ b/mobile/android/geckoview/src/androidTest/assets/www/selectionAction_frame_xorigin.html
@@ -0,0 +1,47 @@
+<html>
+ <head>
+ <meta charset="utf-8" />
+ <script>
+ window.addEventListener("message", e => {
+ switch (e.data.type) {
+ case "focus":
+ window.focus();
+ break;
+
+ case "select": {
+ <!-- On fission, there's no way to wait for parent position change. -->
+ <!-- So we use requestAnimationFrame as a workaround. -->
+ window.requestAnimationFrame(() => {
+ window.requestAnimationFrame(() => {
+ const text = document.body.firstChild;
+ document
+ .getSelection()
+ .setBaseAndExtent(text, 0, text, e.data.length);
+ });
+ });
+ break;
+ }
+
+ case "selectedOffset": {
+ const sel = document.getSelection();
+ const text = document.body.firstChild;
+ if (sel.anchorNode !== text || sel.focusNode !== text) {
+ window.parent.postMessage([-1, -1], "*");
+ } else {
+ window.parent.postMessage(
+ [sel.anchorOffset, sel.focusOffset],
+ "*"
+ );
+ }
+ break;
+ }
+
+ case "content":
+ window.parent.postMessage(document.body.textContent, "*");
+ break;
+ }
+ });
+ </script>
+ </head>
+ <body onload="document.body.textContent = 'elit'"></body>
+</html>