Bug 1274992 - Part 1: talos: allow talos-powers to focus the content. r=jmaher
authorAvi Halachmi <avihpit@yahoo.com>
Mon, 23 May 2016 21:31:37 +0300
changeset 337855 b6502d8d8a5a6d6b6bdbb19fe5c62f8c24ca3168
parent 337854 80c71070fc08c90b9131ec676d7d021506d381d2
child 337856 5567b666d2c31044fdc566f73a1472c281a19dc7
push id6249
push userjlund@mozilla.com
push dateMon, 01 Aug 2016 13:59:36 +0000
treeherdermozilla-beta@bad9d4f5bf7e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjmaher
bugs1274992
milestone49.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1274992 - Part 1: talos: allow talos-powers to focus the content. r=jmaher
testing/talos/talos/talos-powers/chrome/talos-powers-content.js
testing/talos/talos/talos-powers/content/TalosPowersContent.js
testing/talos/talos/talos-powers/install.rdf
testing/talos/talos/talos-powers/talos-powers-signed.xpi
--- a/testing/talos/talos/talos-powers/chrome/talos-powers-content.js
+++ b/testing/talos/talos/talos-powers/chrome/talos-powers-content.js
@@ -45,8 +45,21 @@ addMessageListener("TalosContentProfiler
 });
 
 addEventListener("TalosPowersContentForceCCAndGC", (e) => {
   Cu.forceGC();
   Cu.forceCC();
   Cu.forceShrinkingGC();
   sendSyncMessage("TalosPowersContent:ForceCCAndGC");
 });
+
+addEventListener("TalosPowersContentFocus", (e) => {
+  if (content.location.protocol != "file:" &&
+      content.location.hostname != "localhost" &&
+      content.location.hostname != "127.0.0.1") {
+    throw new Error("TalosPowersContentFocus may only be used with local content");
+  }
+  content.focus();
+  let contentEvent = Cu.cloneInto({
+    bubbles: true,
+  }, content);
+  content.dispatchEvent(new content.CustomEvent("TalosPowersContentFocused", contentEvent));
+}, true, true);
--- a/testing/talos/talos/talos-powers/content/TalosPowersContent.js
+++ b/testing/talos/talos/talos-powers/content/TalosPowersContent.js
@@ -11,10 +11,23 @@ var TalosPowersContent;
      * parent process.
      */
     forceCCAndGC() {
       var event = new CustomEvent("TalosPowersContentForceCCAndGC", {
         bubbles: true,
       });
       document.dispatchEvent(event);
     },
+
+    focus(callback) {
+      if (callback) {
+        addEventListener("TalosPowersContentFocused", function focused() {
+          removeEventListener("TalosPowersContentFocused", focused);
+          callback();
+        });
+      };
+      document.dispatchEvent(new CustomEvent("TalosPowersContentFocus", {
+        bubbles: true,
+      }));
+    },
+
   };
 })();
--- a/testing/talos/talos/talos-powers/install.rdf
+++ b/testing/talos/talos/talos-powers/install.rdf
@@ -1,15 +1,15 @@
 <?xml version="1.0"?>
 
 <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:em="http://www.mozilla.org/2004/em-rdf#">
   <Description about="urn:mozilla:install-manifest">
     <em:id>talos-powers@mozilla.org</em:id>
-    <em:version>1.0.7</em:version>
+    <em:version>1.0.8</em:version>
     <em:targetApplication>
       <Description>
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
         <em:minVersion>44.0</em:minVersion>
         <em:maxVersion>*</em:maxVersion>
       </Description>
     </em:targetApplication>
     <!-- Front End MetaData -->
index 8eb9e39d655666fbdc1346462bf0e7a120b9c874..2963458372fe80850c654fd6d30f0d191673ffc0
GIT binary patch
literal 14934
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