Bug 1445801 - Remove unsafe CPOWs in JSON Viewer tests draft
authorOriol Brufau <oriol-bugzilla@hotmail.com>
Thu, 15 Mar 2018 19:02:43 +0100
changeset 768054 3716cd956da84d61f5d2fee53c5691a6dea98799
parent 767919 fcb11e93adf57210167de0b27b15433e9c3f45e4
push id102800
push userbmo:oriol-bugzilla@hotmail.com
push dateThu, 15 Mar 2018 18:03:22 +0000
bugs1445801
milestone61.0a1
Bug 1445801 - Remove unsafe CPOWs in JSON Viewer tests MozReview-Commit-ID: L4B2Zc0dXpn
devtools/client/jsonview/test/browser.ini
devtools/client/jsonview/test/head.js
--- a/devtools/client/jsonview/test/browser.ini
+++ b/devtools/client/jsonview/test/browser.ini
@@ -19,64 +19,41 @@ support-files =
   valid_json.json
   valid_json.json^headers^
   !/devtools/client/commandline/test/head.js
   !/devtools/client/framework/test/head.js
   !/devtools/client/shared/test/frame-script-utils.js
   !/devtools/client/shared/test/shared-head.js
 
 [browser_json_refresh.js]
-uses-unsafe-cpows = true
 [browser_jsonview_bug_1380828.js]
-uses-unsafe-cpows = true
 [browser_jsonview_chunked_json.js]
 support-files =
   chunked_json.sjs
 [browser_jsonview_content_type.js]
-uses-unsafe-cpows = true
 [browser_jsonview_copy_headers.js]
-uses-unsafe-cpows = true
 subsuite = clipboard
 skip-if = (os == 'linux' && bits == 32 && debug) # bug 1328915, disable linux32 debug devtools for timeouts
 [browser_jsonview_copy_json.js]
-uses-unsafe-cpows = true
 subsuite = clipboard
 skip-if = (os == 'linux' && bits == 32 && debug) # bug 1328915, disable linux32 debug devtools for timeouts
 [browser_jsonview_copy_rawdata.js]
-uses-unsafe-cpows = true
 subsuite = clipboard
 skip-if = (os == 'linux' && bits == 32 && debug) # bug 1328915, disable linux32 debug devtools for timeouts
 [browser_jsonview_csp_json.js]
-uses-unsafe-cpows = true
 [browser_jsonview_empty_object.js]
-uses-unsafe-cpows = true
 [browser_jsonview_encoding.js]
-uses-unsafe-cpows = true
 [browser_jsonview_filter.js]
-uses-unsafe-cpows = true
 [browser_jsonview_ignore_charset.js]
-uses-unsafe-cpows = true
 [browser_jsonview_invalid_json.js]
-uses-unsafe-cpows = true
 [browser_jsonview_manifest.js]
-uses-unsafe-cpows = true
 [browser_jsonview_nojs.js]
-uses-unsafe-cpows = true
 [browser_jsonview_nul.js]
-uses-unsafe-cpows = true
 [browser_jsonview_object-type.js]
-uses-unsafe-cpows = true
 [browser_jsonview_row_selection.js]
-uses-unsafe-cpows = true
 [browser_jsonview_save_json.js]
-uses-unsafe-cpows = true
 support-files =
   !/toolkit/content/tests/browser/common/mockTransfer.js
 [browser_jsonview_serviceworker.js]
-uses-unsafe-cpows = true
 [browser_jsonview_slash.js]
-uses-unsafe-cpows = true
 [browser_jsonview_theme.js]
-uses-unsafe-cpows = true
 [browser_jsonview_url_linkification.js]
-uses-unsafe-cpows = true
 [browser_jsonview_valid_json.js]
-uses-unsafe-cpows = true
--- a/devtools/client/jsonview/test/head.js
+++ b/devtools/client/jsonview/test/head.js
@@ -65,33 +65,34 @@ async function addJsonViewTab(url, {
     }, Ci.nsIWebProgress.NOTIFY_LOCATION);
   })]);
 
   // Load devtools/shared/test/frame-script-utils.js
   loadFrameScriptUtils();
   let rootDir = getRootDirectory(gTestPath);
 
   // Catch RequireJS errors (usually timeouts)
-  let error = tabLoaded.then(() => new Promise((resolve, reject) => {
-    // eslint-disable-next-line mozilla/no-cpows-in-tests
-    let {requirejs} = gBrowser.contentWindowAsCPOW.wrappedJSObject;
-    if (requirejs) {
-      requirejs.onError = err => {
-        info(err);
-        ok(false, "RequireJS error");
-        reject(err);
-      };
-    }
+  let error = tabLoaded.then(() => ContentTask.spawn(browser, null, function() {
+    return new Promise((resolve, reject) => {
+      let {requirejs} = content.wrappedJSObject;
+      if (requirejs) {
+        requirejs.onError = err => {
+          info(err);
+          ok(false, "RequireJS error");
+          reject(err);
+        };
+      }
+    });
   }));
 
   let data = {rootDir, appReadyState, docReadyState};
   // eslint-disable-next-line no-shadow
   await Promise.race([error, ContentTask.spawn(browser, data, async function(data) {
     // Check if there is a JSONView object.
-    let {JSONView} = content.window.wrappedJSObject;
+    let {JSONView} = content.wrappedJSObject;
     if (!JSONView) {
       throw new Error("The JSON Viewer did not load.");
     }
 
     // Load frame script with helpers for JSON View tests.
     let frameScriptUrl = data.rootDir + "doc_frame_script.js";
     Services.scriptloader.loadSubScript(frameScriptUrl, {}, "UTF-8");
 
@@ -99,17 +100,17 @@ async function addJsonViewTab(url, {
     let docReadyIndex = docReadyStates.indexOf(data.docReadyState);
     let appReadyStates = ["uninitialized", ...docReadyStates];
     let appReadyIndex = appReadyStates.indexOf(data.appReadyState);
     if (docReadyIndex < 0 || appReadyIndex < 0) {
       throw new Error("Invalid app or doc readyState parameter.");
     }
 
     // Wait until the document readyState suffices.
-    let {document} = content.window;
+    let {document} = content;
     while (docReadyStates.indexOf(document.readyState) < docReadyIndex) {
       info(`DocReadyState is "${document.readyState}". Await "${data.docReadyState}"`);
       await new Promise(resolve => {
         document.addEventListener("readystatechange", resolve, {once: true});
       });
     }
 
     // Wait until the app readyState suffices.