Browse Source

Add test for opeing HTML file

Ryohei Ikegami 8 years ago
parent
commit
051e133ce3

+ 16 - 7
spec/api-browser-window-spec.js

@@ -1071,19 +1071,28 @@ describe('BrowserWindow module', function () {
     })
 
     describe('nativeWindowOpen option', () => {
-      it('allows synchronous access to window opened by window.open()', (done) => {
-        ipcMain.once('answer', function (event, content) {
-          assert.equal(content, 'Hello')
-          done()
-        })
+      beforeEach(() => {
         w.destroy()
         w = new BrowserWindow({
-          show: false,
+          show: true,
           webPreferences: {
             nativeWindowOpen: true
           }
         })
-        w.loadURL('file://' + path.join(fixtures, 'api', 'native-window-open.html'))
+      })
+      it('opens window of about:blank with cross-scripting enabled', (done) => {
+        ipcMain.once('answer', function (event, content) {
+          assert.equal(content, 'Hello')
+          done()
+        })
+        w.loadURL('file://' + path.join(fixtures, 'api', 'native-window-open.html#blank'))
+      })
+      it('opens window of same domain with cross-scripting enabled', (done) => {
+        ipcMain.once('answer', function (event, content) {
+          assert.equal(content, 'Hello')
+          done()
+        })
+        w.loadURL('file://' + path.join(fixtures, 'api', 'native-window-open.html#file'))
       })
     })
   })

+ 1 - 0
spec/fixtures/api/native-window-open-child.html

@@ -0,0 +1 @@
+<h1>Hello</h1>

+ 19 - 4
spec/fixtures/api/native-window-open.html

@@ -2,10 +2,25 @@
 <body>
 <script type="text/javascript" charset="utf-8">
   const {ipcRenderer} = require("electron");
-  const otherWin = window.open();
-  otherWin.document.write("<h1>Hello</h1>");
-  const content = otherWin.document.querySelector("h1").innerText;
-  ipcRenderer.send('answer', content);
+  const tests = {
+    'blank': () => {
+      const popup = window.open();
+      popup.document.write('<h1>Hello</h1>');
+      const content = popup.document.querySelector('h1').innerText;
+      ipcRenderer.send('answer', content);
+    },
+    'file': () => {
+      const popup = window.open('native-window-open-child.html');
+      popup.onload = () => {
+        const content = popup.document.querySelector('h1').innerText;
+        ipcRenderer.send('answer', content);
+      };
+    }
+  }
+  const test = location.hash.slice(1);
+  if (tests.hasOwnProperty(test)) {
+    tests[test]();
+  }
 </script>
 </body>
 </html>