Merge pull request #8942 from electron/read-binary-data-from-clipboard
Add clipboard.readBuffer(format)
This commit is contained in:
commit
64984ac23b
4 changed files with 37 additions and 13 deletions
|
@ -37,8 +37,7 @@ bool Clipboard::Has(const std::string& format_string, mate::Arguments* args) {
|
|||
return clipboard->IsFormatAvailable(format, GetClipboardType(args));
|
||||
}
|
||||
|
||||
std::string Clipboard::Read(const std::string& format_string,
|
||||
mate::Arguments* args) {
|
||||
std::string Clipboard::Read(const std::string& format_string) {
|
||||
ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
|
||||
ui::Clipboard::FormatType format(ui::Clipboard::GetFormatType(format_string));
|
||||
|
||||
|
@ -47,6 +46,13 @@ std::string Clipboard::Read(const std::string& format_string,
|
|||
return data;
|
||||
}
|
||||
|
||||
v8::Local<v8::Value> Clipboard::ReadBuffer(const std::string& format_string,
|
||||
mate::Arguments* args) {
|
||||
std::string data = Read(format_string);
|
||||
return node::Buffer::Copy(
|
||||
args->isolate(), data.data(), data.length()).ToLocalChecked();
|
||||
}
|
||||
|
||||
void Clipboard::Write(const mate::Dictionary& data, mate::Arguments* args) {
|
||||
ui::ScopedClipboardWriter writer(GetClipboardType(args));
|
||||
base::string16 text, html, bookmark;
|
||||
|
@ -184,6 +190,7 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
|
|||
dict.SetMethod("writeImage", &atom::api::Clipboard::WriteImage);
|
||||
dict.SetMethod("readFindText", &atom::api::Clipboard::ReadFindText);
|
||||
dict.SetMethod("writeFindText", &atom::api::Clipboard::WriteFindText);
|
||||
dict.SetMethod("readBuffer", &atom::api::Clipboard::ReadBuffer);
|
||||
dict.SetMethod("clear", &atom::api::Clipboard::Clear);
|
||||
|
||||
// TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings
|
||||
|
|
|
@ -24,8 +24,7 @@ class Clipboard {
|
|||
static bool Has(const std::string& format_string, mate::Arguments* args);
|
||||
static void Clear(mate::Arguments* args);
|
||||
|
||||
static std::string Read(const std::string& format_string,
|
||||
mate::Arguments* args);
|
||||
static std::string Read(const std::string& format_string);
|
||||
static void Write(const mate::Dictionary& data, mate::Arguments* args);
|
||||
|
||||
static base::string16 ReadText(mate::Arguments* args);
|
||||
|
@ -48,6 +47,9 @@ class Clipboard {
|
|||
static base::string16 ReadFindText();
|
||||
static void WriteFindText(const base::string16& text);
|
||||
|
||||
static v8::Local<v8::Value> ReadBuffer(const std::string& format_string,
|
||||
mate::Arguments* args);
|
||||
|
||||
private:
|
||||
DISALLOW_COPY_AND_ASSIGN(Clipboard);
|
||||
};
|
||||
|
|
|
@ -133,24 +133,29 @@ Clears the clipboard content.
|
|||
|
||||
Returns `String[]` - An array of supported formats for the clipboard `type`.
|
||||
|
||||
### `clipboard.has(data[, type])` _Experimental_
|
||||
### `clipboard.has(format[, type])` _Experimental_
|
||||
|
||||
* `data` String
|
||||
* `format` String
|
||||
* `type` String (optional)
|
||||
|
||||
Returns `Boolean` - Whether the clipboard supports the format of specified `data`.
|
||||
Returns `Boolean` - Whether the clipboard supports the specified `format`.
|
||||
|
||||
```javascript
|
||||
const {clipboard} = require('electron')
|
||||
console.log(clipboard.has('<p>selection</p>'))
|
||||
```
|
||||
|
||||
### `clipboard.read(data[, type])` _Experimental_
|
||||
### `clipboard.read(format)` _Experimental_
|
||||
|
||||
* `data` String
|
||||
* `type` String (optional)
|
||||
* `format` String
|
||||
|
||||
Returns `String` - Reads `data` from the clipboard.
|
||||
Returns `String` - Reads `format` type from the clipboard.
|
||||
|
||||
### `clipboard.readBuffer(format)` _Experimental_
|
||||
|
||||
* `format` String
|
||||
|
||||
Returns `Buffer` - Reads `format` type from the clipboard.
|
||||
|
||||
### `clipboard.write(data[, type])`
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
const assert = require('assert')
|
||||
const path = require('path')
|
||||
const {Buffer} = require('buffer')
|
||||
|
||||
const clipboard = require('electron').clipboard
|
||||
const nativeImage = require('electron').nativeImage
|
||||
const {clipboard, nativeImage} = require('electron')
|
||||
|
||||
describe('clipboard module', function () {
|
||||
var fixtures = path.resolve(__dirname, 'fixtures')
|
||||
|
@ -93,4 +93,14 @@ describe('clipboard module', function () {
|
|||
assert.equal(clipboard.readFindText(), 'find this')
|
||||
})
|
||||
})
|
||||
|
||||
describe('clipboard.readBuffer(format)', function () {
|
||||
it('returns a Buffer of the content for the specified format', function () {
|
||||
if (process.platform !== 'darwin') return
|
||||
|
||||
const buffer = Buffer.from('this is binary', 'utf8')
|
||||
clipboard.writeText(buffer.toString())
|
||||
assert(buffer.equals(clipboard.readBuffer('public.utf8-plain-text')))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue