diff --git a/package.json b/package.json index 5eb80f5c6..1ceefbc28 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "url": "https://github.com/atom/atom/issues" }, "license": "MIT", - "electronVersion": "2.0.18", + "electronVersion": "3.1.9", "dependencies": { "@atom/nsfw": "1.0.22", "@atom/source-map-support": "^0.3.4", diff --git a/script/lib/check-chromedriver-version.js b/script/lib/check-chromedriver-version.js index 1659f093c..f5cada045 100644 --- a/script/lib/check-chromedriver-version.js +++ b/script/lib/check-chromedriver-version.js @@ -5,17 +5,17 @@ const CONFIG = require('../config') const semver = require('semver') module.exports = function () { - // Chromedriver should be specified as ~x.y where x and y match Electron major/minor + // Chromedriver should be specified as ^n.x where n matches the Electron major version const chromedriverVer = buildMetadata.dependencies['electron-chromedriver'] const mksnapshotVer = buildMetadata.dependencies['electron-mksnapshot'] - // Always use tilde on electron-chromedriver so that it can pick up the best patch version - if (!chromedriverVer.startsWith('~')) { - throw new Error(`electron-chromedriver version in script/package.json should start with a tilde to match latest patch version.`) + // Always use caret on electron-chromedriver so that it can pick up the best minor/patch versions + if (!chromedriverVer.startsWith('^')) { + throw new Error(`electron-chromedriver version in script/package.json should start with a caret to match latest patch version.`) } - if (!mksnapshotVer.startsWith('~')) { - throw new Error(`electron-mksnapshot version in script/package.json should start with a tilde to match latest patch version.`) + if (!mksnapshotVer.startsWith('^')) { + throw new Error(`electron-mksnapshot version in script/package.json should start with a caret to match latest patch version.`) } const electronVer = CONFIG.appMetadata.electronVersion diff --git a/script/lib/generate-startup-snapshot.js b/script/lib/generate-startup-snapshot.js index c8cf02022..da87b3253 100644 --- a/script/lib/generate-startup-snapshot.js +++ b/script/lib/generate-startup-snapshot.js @@ -104,22 +104,36 @@ module.exports = function (packagedAppPath) { {env: Object.assign({}, process.env, {ELECTRON_RUN_AS_NODE: 1})} ) - const generatedStartupBlobPath = path.join(CONFIG.buildOutputPath, 'snapshot_blob.bin') - console.log(`Generating startup blob at "${generatedStartupBlobPath}"`) - childProcess.execFileSync( - path.join(CONFIG.repositoryRootPath, 'script', 'node_modules', 'electron-mksnapshot', 'bin', 'mksnapshot'), - ['--no-use_ic', snapshotScriptPath, '--startup_blob', generatedStartupBlobPath] + console.log('Generating startup blob with mksnapshot') + childProcess.spawnSync( + process.execPath, [ + path.join(CONFIG.repositoryRootPath, 'script', 'node_modules', 'electron-mksnapshot', 'mksnapshot.js'), + snapshotScriptPath, + '--output_dir', + CONFIG.buildOutputPath + ] ) let startupBlobDestinationPath if (process.platform === 'darwin') { - startupBlobDestinationPath = `${packagedAppPath}/Contents/Frameworks/Electron Framework.framework/Resources/snapshot_blob.bin` + startupBlobDestinationPath = `${packagedAppPath}/Contents/Frameworks/Electron Framework.framework/Resources` } else { - startupBlobDestinationPath = path.join(packagedAppPath, 'snapshot_blob.bin') + startupBlobDestinationPath = packagedAppPath } - console.log(`Moving generated startup blob into "${startupBlobDestinationPath}"`) - fs.unlinkSync(startupBlobDestinationPath) - fs.renameSync(generatedStartupBlobPath, startupBlobDestinationPath) + const snapshotBinaries = ['v8_context_snapshot.bin', 'snapshot_blob.bin'] + for (let snapshotBinary of snapshotBinaries) { + const destinationPath = path.join(startupBlobDestinationPath, snapshotBinary) + console.log(`Moving generated startup blob into "${destinationPath}"`) + try { + fs.unlinkSync(destinationPath) + } catch (err) { + // Doesn't matter if the file doesn't exist already + if (!err.code || err.code !== 'ENOENT') { + throw err + } + } + fs.renameSync(path.join(CONFIG.buildOutputPath, snapshotBinary), destinationPath) + } }) } diff --git a/script/package-lock.json b/script/package-lock.json index cd294d3dc..042db4275 100644 --- a/script/package-lock.json +++ b/script/package-lock.json @@ -1911,9 +1911,9 @@ } }, "electron-chromedriver": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/electron-chromedriver/-/electron-chromedriver-2.0.0.tgz", - "integrity": "sha512-kERk/Wzhc9RzW9jUKXA5kJc4m8BlL6c9p5QH+CrIlst0saeqZL1Up7vzD4ZOnuBDpAVBBYJ4jhkAKIssf8ZlXg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/electron-chromedriver/-/electron-chromedriver-3.0.0.tgz", + "integrity": "sha512-xWivZRiPTtDFJt+qXv7Ax/Dmhxj0iqESOxoLZ2szu3fv6k1vYDUDJUMHfdfVAke9D2gBRIgChuGb5j3YEt6hxQ==", "requires": { "electron-download": "^4.1.0", "extract-zip": "^1.6.5" @@ -2008,12 +2008,13 @@ } }, "electron-mksnapshot": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/electron-mksnapshot/-/electron-mksnapshot-2.0.0.tgz", - "integrity": "sha512-OoZwZJNKgHP+DwhCGVTJEuDSeb478hOzAbHeg7dKGCHDbKKmUWmjGc+pEjxGutpqQ3Mn8hCdLzdx2c/lAJcTLA==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/electron-mksnapshot/-/electron-mksnapshot-3.0.10.tgz", + "integrity": "sha512-Toy6sAC3t9tgvq1kUYsx+4TRNPDj7Bzoo+1gx5FD8Q0YCS+tq+ter62Ot6dBXCKG9SwoaGBz84b++MgO0VobYw==", "requires": { "electron-download": "^4.1.0", - "extract-zip": "^1.6.5" + "extract-zip": "^1.6.5", + "temp": "^0.8.3" } }, "electron-osx-sign": { diff --git a/script/package.json b/script/package.json index 1076c63a9..933573368 100644 --- a/script/package.json +++ b/script/package.json @@ -10,9 +10,9 @@ "coffeelint": "1.15.7", "colors": "1.1.2", "donna": "1.0.16", - "electron-chromedriver": "~2.0", + "electron-chromedriver": "^3.0.0", "electron-link": "0.4.0", - "electron-mksnapshot": "~2.0", + "electron-mksnapshot": "^3.0.10", "electron-packager": "12.2.0", "electron-winstaller": "2.6.4", "eslint": "^5.16.0", diff --git a/spec/theme-manager-spec.js b/spec/theme-manager-spec.js index 2e4f74b50..a146d1486 100644 --- a/spec/theme-manager-spec.js +++ b/spec/theme-manager-spec.js @@ -319,9 +319,9 @@ h2 { it('returns a disposable allowing styles applied by the given path to be removed', function () { const cssPath = require.resolve('./fixtures/css.css') - expect(getComputedStyle(document.body).fontWeight).not.toBe('bold') + expect(getComputedStyle(document.body).fontWeight).not.toBe('700') const disposable = atom.themes.requireStylesheet(cssPath) - expect(getComputedStyle(document.body).fontWeight).toBe('bold') + expect(getComputedStyle(document.body).fontWeight).toBe('700') let styleElementRemovedHandler atom.styles.onDidRemoveStyleElement( diff --git a/src/text-editor-component.js b/src/text-editor-component.js index 7db399713..30af9fd38 100644 --- a/src/text-editor-component.js +++ b/src/text-editor-component.js @@ -4449,7 +4449,7 @@ class NodePool { if (element) { element.className = className || '' - element.styleMap.forEach((value, key) => { + element.attributeStyleMap.forEach((value, key) => { if (!style || style[key] == null) element.style[key] = '' }) if (style) Object.assign(element.style, style)