Skip to content

Commit

Permalink
feat: add options to webContents.loadFile
Browse files Browse the repository at this point in the history
  • Loading branch information
miniak committed Sep 9, 2018
1 parent 7252692 commit f4032f3
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 29 deletions.
6 changes: 5 additions & 1 deletion docs/api/browser-window.md
Expand Up @@ -1221,9 +1221,13 @@ win.loadURL('http://localhost:8000/post', {
})
```

#### `win.loadFile(filePath)`
#### `win.loadFile(filePath[, options])`

* `filePath` String
* `options` Object (optional)
* `query` Object (optional) - Passed to `url.format()`.
* `search` String (optional) - Passed to `url.format()`.
* `hash` String (optional) - Passed to `url.format()`.

Same as `webContents.loadFile`, `filePath` should be a path to an HTML
file relative to the root of your application. See the `webContents` docs
Expand Down
6 changes: 5 additions & 1 deletion docs/api/web-contents.md
Expand Up @@ -647,9 +647,13 @@ const options = {extraHeaders: 'pragma: no-cache\n'}
webContents.loadURL('https://github.com', options)
```

#### `contents.loadFile(filePath)`
#### `contents.loadFile(filePath[, options])`

* `filePath` String
* `options` Object (optional)
* `query` Object (optional) - Passed to `url.format()`.
* `search` String (optional) - Passed to `url.format()`.
* `hash` String (optional) - Passed to `url.format()`.

Loads the given file in the window, `filePath` should be a path to
an HTML file relative to the root of your application. For instance
Expand Down
4 changes: 2 additions & 2 deletions lib/browser/api/browser-window.js
Expand Up @@ -182,8 +182,8 @@ Object.assign(BrowserWindow.prototype, {
getURL (...args) {
return this.webContents.getURL()
},
loadFile (filePath) {
return this.webContents.loadFile(filePath)
loadFile (...args) {
return this.webContents.loadFile(...args)
},
reload (...args) {
return this.webContents.reload(...args)
Expand Down
9 changes: 7 additions & 2 deletions lib/browser/api/web-contents.js
Expand Up @@ -243,14 +243,19 @@ WebContents.prototype.getZoomLevel = function (callback) {
})
}

WebContents.prototype.loadFile = function (filePath) {
WebContents.prototype.loadFile = function (filePath, options = {}) {
if (typeof filePath !== 'string') {
throw new Error('Must pass filePath as a string')
}
const {query, search, hash} = options

return this.loadURL(url.format({
protocol: 'file',
slashes: true,
pathname: path.resolve(app.getAppPath(), filePath)
pathname: path.resolve(app.getAppPath(), filePath),
query,
search,
hash
}))
}

Expand Down
20 changes: 8 additions & 12 deletions spec/api-browser-window-spec.js
Expand Up @@ -1441,10 +1441,8 @@ describe('BrowserWindow module', () => {
}
})
ipcRenderer.send('set-web-preferences-on-next-new-window', w.webContents.id, 'preload', preload)
let htmlPath = path.join(fixtures, 'api', 'sandbox.html?window-open-external')
const pageUrl = 'file://' + htmlPath
let popupWindow
w.loadURL(pageUrl)
w.loadFile(path.join(fixtures, 'api', 'sandbox.html'), {search: 'window-open-external'})
w.webContents.once('new-window', (e, url, frameName, disposition, options) => {
assert.equal(url, 'http://www.google.com/#q=electron')
assert.equal(options.width, 505)
Expand Down Expand Up @@ -1518,8 +1516,6 @@ describe('BrowserWindow module', () => {
})
ipcRenderer.send('set-web-preferences-on-next-new-window', w.webContents.id, 'preload', preload)

let htmlPath = path.join(fixtures, 'api', 'sandbox.html?verify-ipc-sender')
const pageUrl = 'file://' + htmlPath
let childWc
w.webContents.once('new-window', (e, url, frameName, disposition, options) => {
childWc = options.webContents
Expand All @@ -1538,15 +1534,15 @@ describe('BrowserWindow module', () => {
'parent-answer',
'child-answer'
], done)
w.loadURL(pageUrl)
w.loadFile(path.join(fixtures, 'api', 'sandbox.html'), {search: 'verify-ipc-sender'})
})

describe('event handling', () => {
it('works for window events', (done) => {
waitForEvents(w, [
'page-title-updated'
], done)
w.loadURL('file://' + path.join(fixtures, 'api', 'sandbox.html?window-events'))
w.loadFile(path.join(fixtures, 'api', 'sandbox.html'), {search: 'window-events'})
})

it('works for stop events', (done) => {
Expand All @@ -1555,7 +1551,7 @@ describe('BrowserWindow module', () => {
'did-fail-load',
'did-stop-loading'
], done)
w.loadURL('file://' + path.join(fixtures, 'api', 'sandbox.html?webcontents-stop'))
w.loadFile(path.join(fixtures, 'api', 'sandbox.html'), {search: 'webcontents-stop'})
})

it('works for web contents events', (done) => {
Expand All @@ -1569,7 +1565,7 @@ describe('BrowserWindow module', () => {
'did-frame-finish-load',
'dom-ready'
], done)
w.loadURL('file://' + path.join(fixtures, 'api', 'sandbox.html?webcontents-events'))
w.loadFile(path.join(fixtures, 'api', 'sandbox.html'), {search: 'webcontents-events'})
})
})

Expand Down Expand Up @@ -1640,7 +1636,7 @@ describe('BrowserWindow module', () => {
sandbox: true
}
})
w.loadURL('file://' + path.join(fixtures, 'api', 'sandbox.html?allocate-memory'))
w.loadFile(path.join(fixtures, 'api', 'sandbox.html'), {search: 'allocate-memory'})
ipcMain.once('answer', function (event, {bytesBeforeOpen, bytesAfterOpen, bytesAfterClose}) {
const memoryIncreaseByOpen = bytesAfterOpen - bytesBeforeOpen
const memoryDecreaseByClose = bytesAfterOpen - bytesAfterClose
Expand All @@ -1663,7 +1659,7 @@ describe('BrowserWindow module', () => {
sandbox: true
}
})
w.loadURL('file://' + path.join(fixtures, 'api', 'sandbox.html?reload-remote'))
w.loadFile(path.join(fixtures, 'api', 'sandbox.html'), {search: 'reload-remote'})

ipcMain.on('get-remote-module-path', (event) => {
event.returnValue = path.join(fixtures, 'module', 'hello.js')
Expand Down Expand Up @@ -1698,7 +1694,7 @@ describe('BrowserWindow module', () => {
})
ipcRenderer.send('set-web-preferences-on-next-new-window', w.webContents.id, 'preload', preload)

w.loadURL('file://' + path.join(fixtures, 'api', 'sandbox.html?reload-remote-child'))
w.loadFile(path.join(fixtures, 'api', 'sandbox.html'), {search: 'reload-remote-child'})

ipcMain.on('get-remote-module-path', (event) => {
event.returnValue = path.join(fixtures, 'module', 'hello-child.js')
Expand Down
7 changes: 1 addition & 6 deletions spec/api-crash-reporter-spec.js
Expand Up @@ -64,12 +64,7 @@ describe('crashReporter module', () => {

stopServer = startServer({
callback (port) {
const crashUrl = url.format({
protocol: 'file',
pathname: path.join(fixtures, 'api', 'crash.html'),
search: '?port=' + port
})
w.loadURL(crashUrl)
w.loadFile(path.join(fixtures, 'api', 'crash.html'), {query: {port}})
},
processType: 'renderer',
done: done
Expand Down
1 change: 1 addition & 0 deletions spec/api-net-spec.js
Expand Up @@ -1445,6 +1445,7 @@ describe('net module', () => {
ipcRenderer.send('eval', `
const {net} = require('electron')
const http = require('http')
const url = require('url')
const netRequest = net.request('${server.url}${netRequestUrl}')
netRequest.on('response', function (netResponse) {
const serverUrl = url.parse('${server.url}')
Expand Down
7 changes: 2 additions & 5 deletions spec/static/main.js
Expand Up @@ -8,7 +8,6 @@ const {Coverage} = require('electabul')

const fs = require('fs')
const path = require('path')
const url = require('url')
const util = require('util')
const v8 = require('v8')

Expand Down Expand Up @@ -139,14 +138,12 @@ app.on('ready', function () {
backgroundThrottling: false
}
})
window.loadURL(url.format({
pathname: path.join(__dirname, '/index.html'),
protocol: 'file',
window.loadFile('static/index.html', {
query: {
grep: argv.grep,
invert: argv.invert ? 'true' : ''
}
}))
})
window.on('unresponsive', function () {
var chosen = dialog.showMessageBox(window, {
type: 'warning',
Expand Down

0 comments on commit f4032f3

Please sign in to comment.