summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/test/context-menu/framescript.js
diff options
context:
space:
mode:
Diffstat (limited to 'addon-sdk/source/test/context-menu/framescript.js')
-rw-r--r--addon-sdk/source/test/context-menu/framescript.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/addon-sdk/source/test/context-menu/framescript.js b/addon-sdk/source/test/context-menu/framescript.js
new file mode 100644
index 000000000..c3e038a5a
--- /dev/null
+++ b/addon-sdk/source/test/context-menu/framescript.js
@@ -0,0 +1,44 @@
+/* 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/. */
+"use strict";
+
+const Ci = Components.interfaces;
+
+addMessageListener("sdk/test/context-menu/open", message => {
+ const {data, name} = message;
+ const target = data.target && content.document.querySelector(data.target);
+ if (target) {
+ target.scrollIntoView();
+ }
+ const rect = target ? target.getBoundingClientRect() :
+ {left:0, top:0, width:0, height:0};
+
+
+ content.
+ QueryInterface(Ci.nsIInterfaceRequestor).
+ getInterface(Ci.nsIDOMWindowUtils).
+ sendMouseEvent("contextmenu",
+ rect.left + (rect.width / 2),
+ rect.top + (rect.height / 2),
+ 2, 1, 0);
+});
+
+addMessageListener("sdk/test/context-menu/select", message => {
+ const {data, name} = message;
+ const {document} = content;
+ if (data) {
+ if (typeof(data) === "string") {
+ const target = document.querySelector(data);
+ document.getSelection().selectAllChildren(target);
+ } else {
+ const target = document.querySelector(data.target);
+ target.focus();
+ target.setSelectionRange(data.start, data.end);
+ }
+ } else {
+ document.getSelection().collapse(document.documentElement, 0);
+ }
+
+ sendAsyncMessage("sdk/test/context-menu/selected");
+});