Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add options to webContents.loadFile #14515

Merged
merged 1 commit into from Sep 11, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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 = {}) {
miniak marked this conversation as resolved.
Show resolved Hide resolved
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