refactor: make name a prop on app (#17701)
Update app.name to be a property on app.
This commit is contained in:
parent
f2d41b7812
commit
8d83518f9a
15 changed files with 57 additions and 25 deletions
|
@ -1344,8 +1344,8 @@ void App::BuildPrototype(v8::Isolate* isolate,
|
||||||
base::BindRepeating(&Browser::GetVersion, browser))
|
base::BindRepeating(&Browser::GetVersion, browser))
|
||||||
.SetMethod("setVersion",
|
.SetMethod("setVersion",
|
||||||
base::BindRepeating(&Browser::SetVersion, browser))
|
base::BindRepeating(&Browser::SetVersion, browser))
|
||||||
.SetMethod("getName", base::BindRepeating(&Browser::GetName, browser))
|
.SetMethod("_getName", base::BindRepeating(&Browser::GetName, browser))
|
||||||
.SetMethod("setName", base::BindRepeating(&Browser::SetName, browser))
|
.SetMethod("_setName", base::BindRepeating(&Browser::SetName, browser))
|
||||||
.SetMethod("isReady", base::BindRepeating(&Browser::is_ready, browser))
|
.SetMethod("isReady", base::BindRepeating(&Browser::is_ready, browser))
|
||||||
.SetMethod("whenReady", base::BindRepeating(&Browser::WhenReady, browser))
|
.SetMethod("whenReady", base::BindRepeating(&Browser::WhenReady, browser))
|
||||||
.SetMethod("addRecentDocument",
|
.SetMethod("addRecentDocument",
|
||||||
|
@ -1375,6 +1375,8 @@ void App::BuildPrototype(v8::Isolate* isolate,
|
||||||
.SetProperty("badgeCount",
|
.SetProperty("badgeCount",
|
||||||
base::BindRepeating(&Browser::GetBadgeCount, browser),
|
base::BindRepeating(&Browser::GetBadgeCount, browser),
|
||||||
base::BindRepeating(&Browser::SetBadgeCount, browser))
|
base::BindRepeating(&Browser::SetBadgeCount, browser))
|
||||||
|
.SetProperty("name", base::BindRepeating(&Browser::GetName, browser),
|
||||||
|
base::BindRepeating(&Browser::SetName, browser))
|
||||||
#if defined(OS_MACOSX)
|
#if defined(OS_MACOSX)
|
||||||
.SetMethod("hide", base::BindRepeating(&Browser::Hide, browser))
|
.SetMethod("hide", base::BindRepeating(&Browser::Hide, browser))
|
||||||
.SetMethod("show", base::BindRepeating(&Browser::Show, browser))
|
.SetMethod("show", base::BindRepeating(&Browser::Show, browser))
|
||||||
|
|
|
@ -98,9 +98,9 @@ function loadApplicationPackage (packagePath: string) {
|
||||||
app.setVersion(packageJson.version)
|
app.setVersion(packageJson.version)
|
||||||
}
|
}
|
||||||
if (packageJson.productName) {
|
if (packageJson.productName) {
|
||||||
app.setName(packageJson.productName)
|
app.name = packageJson.productName
|
||||||
} else if (packageJson.name) {
|
} else if (packageJson.name) {
|
||||||
app.setName(packageJson.name)
|
app.name = packageJson.name
|
||||||
}
|
}
|
||||||
app._setDefaultAppPaths(packagePath)
|
app._setDefaultAppPaths(packagePath)
|
||||||
}
|
}
|
||||||
|
|
|
@ -661,12 +661,16 @@ to the npm modules spec. You should usually also specify a `productName`
|
||||||
field, which is your application's full capitalized name, and which will be
|
field, which is your application's full capitalized name, and which will be
|
||||||
preferred over `name` by Electron.
|
preferred over `name` by Electron.
|
||||||
|
|
||||||
|
**[Deprecated Soon](modernization/property-updates.md)**
|
||||||
|
|
||||||
### `app.setName(name)`
|
### `app.setName(name)`
|
||||||
|
|
||||||
* `name` String
|
* `name` String
|
||||||
|
|
||||||
Overrides the current application's name.
|
Overrides the current application's name.
|
||||||
|
|
||||||
|
**[Deprecated Soon](modernization/property-updates.md)**
|
||||||
|
|
||||||
### `app.getLocale()`
|
### `app.getLocale()`
|
||||||
|
|
||||||
Returns `String` - The current application locale. Possible return values are documented [here](locales.md).
|
Returns `String` - The current application locale. Possible return values are documented [here](locales.md).
|
||||||
|
@ -1366,3 +1370,12 @@ A `Boolean` property that returns `true` if the app is packaged, `false` otherw
|
||||||
[Squirrel-Windows]: https://github.com/Squirrel/Squirrel.Windows
|
[Squirrel-Windows]: https://github.com/Squirrel/Squirrel.Windows
|
||||||
[JumpListBeginListMSDN]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378398(v=vs.85).aspx
|
[JumpListBeginListMSDN]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378398(v=vs.85).aspx
|
||||||
[about-panel-options]: https://developer.apple.com/reference/appkit/nsapplication/1428479-orderfrontstandardaboutpanelwith?language=objc
|
[about-panel-options]: https://developer.apple.com/reference/appkit/nsapplication/1428479-orderfrontstandardaboutpanelwith?language=objc
|
||||||
|
|
||||||
|
### `app.name`
|
||||||
|
|
||||||
|
A `String` property that indicates the current application's name, which is the name in the application's `package.json` file.
|
||||||
|
|
||||||
|
Usually the `name` field of `package.json` is a short lowercased name, according
|
||||||
|
to the npm modules spec. You should usually also specify a `productName`
|
||||||
|
field, which is your application's full capitalized name, and which will be
|
||||||
|
preferred over `name` by Electron.
|
||||||
|
|
|
@ -1318,7 +1318,7 @@ Change to indeterminate mode when progress > 1.
|
||||||
|
|
||||||
On Linux platform, only supports Unity desktop environment, you need to specify
|
On Linux platform, only supports Unity desktop environment, you need to specify
|
||||||
the `*.desktop` file name to `desktopName` field in `package.json`. By default,
|
the `*.desktop` file name to `desktopName` field in `package.json`. By default,
|
||||||
it will assume `app.getName().desktop`.
|
it will assume `{app.name}.desktop`.
|
||||||
|
|
||||||
On Windows, a mode can be passed. Accepted values are `none`, `normal`,
|
On Windows, a mode can be passed. Accepted values are `none`, `normal`,
|
||||||
`indeterminate`, `error`, and `paused`. If you call `setProgressBar` without a
|
`indeterminate`, `error`, and `paused`. If you call `setProgressBar` without a
|
||||||
|
|
|
@ -44,7 +44,7 @@ The `crashReporter` module has the following methods:
|
||||||
* `options` Object
|
* `options` Object
|
||||||
* `companyName` String
|
* `companyName` String
|
||||||
* `submitURL` String - URL that crash reports will be sent to as POST.
|
* `submitURL` String - URL that crash reports will be sent to as POST.
|
||||||
* `productName` String (optional) - Defaults to `app.getName()`.
|
* `productName` String (optional) - Defaults to `app.name`.
|
||||||
* `uploadToServer` Boolean (optional) - Whether crash reports should be sent to the server
|
* `uploadToServer` Boolean (optional) - Whether crash reports should be sent to the server
|
||||||
Default is `true`.
|
Default is `true`.
|
||||||
* `ignoreSystemCrashHandler` Boolean (optional) - Default is `false`.
|
* `ignoreSystemCrashHandler` Boolean (optional) - Default is `false`.
|
||||||
|
|
|
@ -155,7 +155,7 @@ const { app, Menu } = require('electron')
|
||||||
const template = [
|
const template = [
|
||||||
// { role: 'appMenu' }
|
// { role: 'appMenu' }
|
||||||
...(process.platform === 'darwin' ? [{
|
...(process.platform === 'darwin' ? [{
|
||||||
label: app.getName(),
|
label: app.name,
|
||||||
submenu: [
|
submenu: [
|
||||||
{ role: 'about' },
|
{ role: 'about' },
|
||||||
{ type: 'separator' },
|
{ type: 'separator' },
|
||||||
|
|
|
@ -5,7 +5,6 @@ The Electron team is currently undergoing an initiative to convert separate gett
|
||||||
## Candidates
|
## Candidates
|
||||||
|
|
||||||
* `app` module
|
* `app` module
|
||||||
* `name`
|
|
||||||
* `dock`
|
* `dock`
|
||||||
* `badge`
|
* `badge`
|
||||||
* `autoUpdater` module
|
* `autoUpdater` module
|
||||||
|
@ -58,3 +57,4 @@ The Electron team is currently undergoing an initiative to convert separate gett
|
||||||
* `accessibilitySupport`
|
* `accessibilitySupport`
|
||||||
* `applicationMenu`
|
* `applicationMenu`
|
||||||
* `badgeCount`
|
* `badgeCount`
|
||||||
|
* `name`
|
||||||
|
|
|
@ -56,8 +56,8 @@ app.isPackaged = (() => {
|
||||||
|
|
||||||
app._setDefaultAppPaths = (packagePath) => {
|
app._setDefaultAppPaths = (packagePath) => {
|
||||||
// Set the user path according to application's name.
|
// Set the user path according to application's name.
|
||||||
app.setPath('userData', path.join(app.getPath('appData'), app.getName()))
|
app.setPath('userData', path.join(app.getPath('appData'), app.name!))
|
||||||
app.setPath('userCache', path.join(app.getPath('cache'), app.getName()))
|
app.setPath('userCache', path.join(app.getPath('cache'), app.name!))
|
||||||
app.setAppPath(packagePath)
|
app.setAppPath(packagePath)
|
||||||
|
|
||||||
// Add support for --user-data-dir=
|
// Add support for --user-data-dir=
|
||||||
|
@ -89,6 +89,7 @@ for (const name of events) {
|
||||||
// Property Deprecations
|
// Property Deprecations
|
||||||
deprecate.fnToProperty(app, 'accessibilitySupportEnabled', '_isAccessibilitySupportEnabled', '_setAccessibilitySupportEnabled')
|
deprecate.fnToProperty(app, 'accessibilitySupportEnabled', '_isAccessibilitySupportEnabled', '_setAccessibilitySupportEnabled')
|
||||||
deprecate.fnToProperty(app, 'badgeCount', '_getBadgeCount', '_setBadgeCount')
|
deprecate.fnToProperty(app, 'badgeCount', '_getBadgeCount', '_setBadgeCount')
|
||||||
|
deprecate.fnToProperty(app, 'name', '_getName', '_setName')
|
||||||
|
|
||||||
// Wrappers for native classes.
|
// Wrappers for native classes.
|
||||||
const { DownloadItem } = process.electronBinding('download_item')
|
const { DownloadItem } = process.electronBinding('download_item')
|
||||||
|
|
|
@ -9,7 +9,7 @@ const isLinux = process.platform === 'linux'
|
||||||
const roles = {
|
const roles = {
|
||||||
about: {
|
about: {
|
||||||
get label () {
|
get label () {
|
||||||
return isLinux ? 'About' : `About ${app.getName()}`
|
return isLinux ? 'About' : `About ${app.name}`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
close: {
|
close: {
|
||||||
|
@ -49,7 +49,7 @@ const roles = {
|
||||||
},
|
},
|
||||||
hide: {
|
hide: {
|
||||||
get label () {
|
get label () {
|
||||||
return `Hide ${app.getName()}`
|
return `Hide ${app.name}`
|
||||||
},
|
},
|
||||||
accelerator: 'Command+H'
|
accelerator: 'Command+H'
|
||||||
},
|
},
|
||||||
|
@ -77,7 +77,7 @@ const roles = {
|
||||||
quit: {
|
quit: {
|
||||||
get label () {
|
get label () {
|
||||||
switch (process.platform) {
|
switch (process.platform) {
|
||||||
case 'darwin': return `Quit ${app.getName()}`
|
case 'darwin': return `Quit ${app.name}`
|
||||||
case 'win32': return 'Exit'
|
case 'win32': return 'Exit'
|
||||||
default: return 'Quit'
|
default: return 'Quit'
|
||||||
}
|
}
|
||||||
|
@ -172,7 +172,7 @@ const roles = {
|
||||||
// App submenu should be used for Mac only
|
// App submenu should be used for Mac only
|
||||||
appmenu: {
|
appmenu: {
|
||||||
get label () {
|
get label () {
|
||||||
return app.getName()
|
return app.name
|
||||||
},
|
},
|
||||||
submenu: [
|
submenu: [
|
||||||
{ role: 'about' },
|
{ role: 'about' },
|
||||||
|
|
|
@ -14,7 +14,7 @@ const getTempDirectory = function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.crashReporterInit = function (options) {
|
exports.crashReporterInit = function (options) {
|
||||||
const productName = options.productName || app.getName()
|
const productName = options.productName || app.name
|
||||||
const crashesDirectory = path.join(getTempDirectory(), `${productName} Crashes`)
|
const crashesDirectory = path.join(getTempDirectory(), `${productName} Crashes`)
|
||||||
let crashServicePid
|
let crashServicePid
|
||||||
|
|
||||||
|
|
|
@ -134,16 +134,16 @@ if (packageJson.version != null) {
|
||||||
|
|
||||||
// Set application's name.
|
// Set application's name.
|
||||||
if (packageJson.productName != null) {
|
if (packageJson.productName != null) {
|
||||||
app.setName(`${packageJson.productName}`.trim())
|
app.name = `${packageJson.productName}`.trim()
|
||||||
} else if (packageJson.name != null) {
|
} else if (packageJson.name != null) {
|
||||||
app.setName(`${packageJson.name}`.trim())
|
app.name = `${packageJson.name}`.trim()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set application's desktop name.
|
// Set application's desktop name.
|
||||||
if (packageJson.desktopName != null) {
|
if (packageJson.desktopName != null) {
|
||||||
app.setDesktopName(packageJson.desktopName)
|
app.setDesktopName(packageJson.desktopName)
|
||||||
} else {
|
} else {
|
||||||
app.setDesktopName((app.getName()) + '.desktop')
|
app.setDesktopName(`${app.name}.desktop`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set v8 flags
|
// Set v8 flags
|
||||||
|
|
|
@ -84,19 +84,35 @@ describe('app module', () => {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('app.name', () => {
|
||||||
|
it('returns the name field of package.json', () => {
|
||||||
|
expect(app.name).to.equal('Electron Test Main')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('overrides the name', () => {
|
||||||
|
expect(app.name).to.equal('Electron Test Main')
|
||||||
|
app.name = 'test-name'
|
||||||
|
|
||||||
|
expect(app.name).to.equal('test-name')
|
||||||
|
app.name = 'Electron Test Main'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
// TODO(codebytere): remove when propertyification is complete
|
||||||
describe('app.getName()', () => {
|
describe('app.getName()', () => {
|
||||||
it('returns the name field of package.json', () => {
|
it('returns the name field of package.json', () => {
|
||||||
expect(app.getName()).to.equal('Electron Test Main')
|
expect(app.getName()).to.equal('Electron Test Main')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// TODO(codebytere): remove when propertyification is complete
|
||||||
describe('app.setName(name)', () => {
|
describe('app.setName(name)', () => {
|
||||||
it('overrides the name', () => {
|
it('overrides the name', () => {
|
||||||
expect(app.getName()).to.equal('Electron Test Main')
|
expect(app.getName()).to.equal('Electron Test Main')
|
||||||
app.setName('test-name')
|
app.setName('test-name')
|
||||||
|
|
||||||
expect(app.getName()).to.equal('test-name')
|
expect(app.getName()).to.equal('test-name')
|
||||||
app.setName('Electron Test')
|
app.setName('Electron Test Main')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,7 @@ describe('crashReporter module', () => {
|
||||||
|
|
||||||
stopServer = startServer({
|
stopServer = startServer({
|
||||||
callback (port) {
|
callback (port) {
|
||||||
const crashesDir = path.join(app.getPath('temp'), `${process.platform === 'win32' ? 'Zombies' : app.getName()} Crashes`)
|
const crashesDir = path.join(app.getPath('temp'), `${process.platform === 'win32' ? 'Zombies' : app.name} Crashes`)
|
||||||
const version = app.getVersion()
|
const version = app.getVersion()
|
||||||
const crashPath = path.join(fixtures, 'module', 'crash.js')
|
const crashPath = path.join(fixtures, 'module', 'crash.js')
|
||||||
|
|
||||||
|
|
|
@ -246,7 +246,7 @@ describe('MenuItems', () => {
|
||||||
'minimize': 'Minimize',
|
'minimize': 'Minimize',
|
||||||
'paste': 'Paste',
|
'paste': 'Paste',
|
||||||
'pasteandmatchstyle': 'Paste and Match Style',
|
'pasteandmatchstyle': 'Paste and Match Style',
|
||||||
'quit': (process.platform === 'darwin') ? `Quit ${app.getName()}` : (process.platform === 'win32') ? 'Exit' : 'Quit',
|
'quit': (process.platform === 'darwin') ? `Quit ${app.name}` : (process.platform === 'win32') ? 'Exit' : 'Quit',
|
||||||
'redo': 'Redo',
|
'redo': 'Redo',
|
||||||
'reload': 'Reload',
|
'reload': 'Reload',
|
||||||
'resetzoom': 'Actual Size',
|
'resetzoom': 'Actual Size',
|
||||||
|
@ -316,7 +316,7 @@ describe('MenuItems', () => {
|
||||||
it('includes a default submenu layout when submenu is empty', () => {
|
it('includes a default submenu layout when submenu is empty', () => {
|
||||||
const item = new MenuItem({ role: 'appMenu' })
|
const item = new MenuItem({ role: 'appMenu' })
|
||||||
|
|
||||||
expect(item.label).to.equal(app.getName())
|
expect(item.label).to.equal(app.name)
|
||||||
expect(item.submenu.items[0].role).to.equal('about')
|
expect(item.submenu.items[0].role).to.equal('about')
|
||||||
expect(item.submenu.items[1].type).to.equal('separator')
|
expect(item.submenu.items[1].type).to.equal('separator')
|
||||||
expect(item.submenu.items[2].role).to.equal('services')
|
expect(item.submenu.items[2].role).to.equal('services')
|
||||||
|
@ -335,7 +335,7 @@ describe('MenuItems', () => {
|
||||||
role: 'close'
|
role: 'close'
|
||||||
}]
|
}]
|
||||||
})
|
})
|
||||||
expect(item.label).to.equal(app.getName())
|
expect(item.label).to.equal(app.name)
|
||||||
expect(item.submenu.items[0].role).to.equal('close')
|
expect(item.submenu.items[0].role).to.equal('close')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -20,14 +20,14 @@ const skip = process.platform !== 'linux' ||
|
||||||
|
|
||||||
(skip ? describe.skip : describe)('Notification module (dbus)', () => {
|
(skip ? describe.skip : describe)('Notification module (dbus)', () => {
|
||||||
let mock, Notification, getCalls, reset
|
let mock, Notification, getCalls, reset
|
||||||
const realAppName = app.getName()
|
const realAppName = app.name
|
||||||
const realAppVersion = app.getVersion()
|
const realAppVersion = app.getVersion()
|
||||||
const appName = 'api-notification-dbus-spec'
|
const appName = 'api-notification-dbus-spec'
|
||||||
const serviceName = 'org.freedesktop.Notifications'
|
const serviceName = 'org.freedesktop.Notifications'
|
||||||
|
|
||||||
before(async () => {
|
before(async () => {
|
||||||
// init app
|
// init app
|
||||||
app.setName(appName)
|
app.name = appName
|
||||||
app.setDesktopName(`${appName}.desktop`)
|
app.setDesktopName(`${appName}.desktop`)
|
||||||
// init dbus
|
// init dbus
|
||||||
const path = '/org/freedesktop/Notifications'
|
const path = '/org/freedesktop/Notifications'
|
||||||
|
|
Loading…
Reference in a new issue