From a1668fc953f87edd6a1961d6275b6532ade912a3 Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Thu, 4 Jan 2018 20:59:21 -0500 Subject: [PATCH 1/2] Remove old clipboard workaround on Linux --- script/lib/generate-startup-snapshot.js | 1 - spec/spec-helper.coffee | 2 +- spec/text-editor-component-spec.js | 2 +- spec/text-editor-spec.js | 2 +- src/clipboard.js | 2 +- src/main-process/atom-application.coffee | 3 +-- src/safe-clipboard.coffee | 6 ------ src/text-editor-component.js | 2 +- 8 files changed, 6 insertions(+), 14 deletions(-) delete mode 100644 src/safe-clipboard.coffee diff --git a/script/lib/generate-startup-snapshot.js b/script/lib/generate-startup-snapshot.js index 85e147c20..4c074a2b5 100644 --- a/script/lib/generate-startup-snapshot.js +++ b/script/lib/generate-startup-snapshot.js @@ -34,7 +34,6 @@ module.exports = function (packagedAppPath) { relativePath.endsWith(path.join('node_modules', 'minimatch', 'minimatch.js')) || relativePath === path.join('..', 'exports', 'atom.js') || relativePath === path.join('..', 'src', 'electron-shims.js') || - relativePath === path.join('..', 'src', 'safe-clipboard.js') || relativePath === path.join('..', 'node_modules', 'atom-keymap', 'lib', 'command-event.js') || relativePath === path.join('..', 'node_modules', 'babel-core', 'index.js') || relativePath === path.join('..', 'node_modules', 'cached-run-in-this-context', 'lib', 'main.js') || diff --git a/spec/spec-helper.coffee b/spec/spec-helper.coffee index 5600a2b8d..b5ce2914b 100644 --- a/spec/spec-helper.coffee +++ b/spec/spec-helper.coffee @@ -12,7 +12,7 @@ FindParentDir = require 'find-parent-dir' TextEditor = require '../src/text-editor' TextEditorElement = require '../src/text-editor-element' TextMateLanguageMode = require '../src/text-mate-language-mode' -clipboard = require '../src/safe-clipboard' +{clipboard} = require 'electron' jasmineStyle = document.createElement('style') jasmineStyle.textContent = atom.themes.loadStylesheet(atom.themes.resolveStylesheet('../static/jasmine')) diff --git a/spec/text-editor-component-spec.js b/spec/text-editor-component-spec.js index deca42eea..0b888f47c 100644 --- a/spec/text-editor-component-spec.js +++ b/spec/text-editor-component-spec.js @@ -11,7 +11,7 @@ const fs = require('fs') const path = require('path') const Grim = require('grim') const electron = require('electron') -const clipboard = require('../src/safe-clipboard') +const clipboard = electron.clipboard const SAMPLE_TEXT = fs.readFileSync(path.join(__dirname, 'fixtures', 'sample.js'), 'utf8') diff --git a/spec/text-editor-spec.js b/spec/text-editor-spec.js index ef2ced5e6..78daf5105 100644 --- a/spec/text-editor-spec.js +++ b/spec/text-editor-spec.js @@ -4,7 +4,7 @@ const fs = require('fs') const path = require('path') const temp = require('temp').track() const dedent = require('dedent') -const clipboard = require('../src/safe-clipboard') +const {clipboard} = require('electron') const TextEditor = require('../src/text-editor') const TextBuffer = require('text-buffer') const TextMateLanguageMode = require('../src/text-mate-language-mode') diff --git a/src/clipboard.js b/src/clipboard.js index 34f6b1f83..451293a28 100644 --- a/src/clipboard.js +++ b/src/clipboard.js @@ -1,7 +1,7 @@ /** @babel */ import crypto from 'crypto' -import clipboard from './safe-clipboard' +import {clipboard} from 'electron' // Extended: Represents the clipboard used for copying and pasting in Atom. // diff --git a/src/main-process/atom-application.coffee b/src/main-process/atom-application.coffee index e0d2d691f..328da7fc5 100644 --- a/src/main-process/atom-application.coffee +++ b/src/main-process/atom-application.coffee @@ -6,7 +6,7 @@ StorageFolder = require '../storage-folder' Config = require '../config' FileRecoveryService = require './file-recovery-service' ipcHelpers = require '../ipc-helpers' -{BrowserWindow, Menu, app, dialog, ipcMain, shell, screen} = require 'electron' +{BrowserWindow, Menu, app, clipboard, dialog, ipcMain, shell, screen} = require 'electron' {CompositeDisposable, Disposable} = require 'event-kit' crypto = require 'crypto' fs = require 'fs-plus' @@ -399,7 +399,6 @@ class AtomApplication @disposable.add ipcHelpers.respondTo 'set-temporary-window-state', (win, state) -> win.temporaryState = state - clipboard = require '../safe-clipboard' @disposable.add ipcHelpers.on ipcMain, 'write-text-to-selection-clipboard', (event, selectedText) -> clipboard.writeText(selectedText, 'selection') diff --git a/src/safe-clipboard.coffee b/src/safe-clipboard.coffee deleted file mode 100644 index 1f91803e2..000000000 --- a/src/safe-clipboard.coffee +++ /dev/null @@ -1,6 +0,0 @@ -# Using clipboard in renderer process is not safe on Linux. -module.exports = - if process.platform is 'linux' and process.type is 'renderer' - require('electron').remote.clipboard - else - require('electron').clipboard diff --git a/src/text-editor-component.js b/src/text-editor-component.js index 5f0a10664..aa5246864 100644 --- a/src/text-editor-component.js +++ b/src/text-editor-component.js @@ -5,8 +5,8 @@ const {Point, Range} = require('text-buffer') const LineTopIndex = require('line-top-index') const TextEditor = require('./text-editor') const {isPairedCharacter} = require('./text-utils') -const clipboard = require('./safe-clipboard') const electron = require('electron') +const clipboard = electron.clipboard const $ = etch.dom let TextEditorElement From d59b779c0adf4e257d9068e8e62acc3ea7719b80 Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Thu, 4 Jan 2018 21:01:20 -0500 Subject: [PATCH 2/2] :art: --- src/clipboard.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/clipboard.js b/src/clipboard.js index 451293a28..eafc04d6f 100644 --- a/src/clipboard.js +++ b/src/clipboard.js @@ -1,7 +1,5 @@ -/** @babel */ - -import crypto from 'crypto' -import {clipboard} from 'electron' +const crypto = require('crypto') +const {clipboard} = require('electron') // Extended: Represents the clipboard used for copying and pasting in Atom. // @@ -9,12 +7,13 @@ import {clipboard} from 'electron' // // ## Examples // -// ```coffee +// ```js // atom.clipboard.write('hello') // -// console.log(atom.clipboard.read()) # 'hello' +// console.log(atom.clipboard.read()) // 'hello' // ``` -export default class Clipboard { +module.exports = +class Clipboard { constructor () { this.reset() } @@ -60,7 +59,7 @@ export default class Clipboard { // * `text` The {String} clipboard text. // * `metadata` The metadata stored by an earlier call to {::write}. readWithMetadata () { - let text = this.read() + const text = this.read() if (this.signatureForMetadata === this.md5(text)) { return {text, metadata: this.metadata} } else {