diff --git a/atom/common/api/atom_api_clipboard.cc b/atom/common/api/atom_api_clipboard.cc index e6119864cb61..0b804eb8a404 100644 --- a/atom/common/api/atom_api_clipboard.cc +++ b/atom/common/api/atom_api_clipboard.cc @@ -37,10 +37,12 @@ struct Converter { namespace { -bool Has(const std::string& format_string, ui::ClipboardType type) { +std::vector AvailableFormats(ui::ClipboardType type) { + std::vector format_types; + bool ignore; ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread(); - ui::Clipboard::FormatType format(ui::Clipboard::GetFormatType(format_string)); - return clipboard->IsFormatAvailable(format, type); + clipboard->ReadAvailableTypes(type, &format_types, &ignore); + return format_types; } std::string Read(const std::string& format_string, @@ -64,6 +66,24 @@ void WriteText(const base::string16& text, ui::ClipboardType type) { writer.WriteText(text); } +base::string16 ReadHtml(ui::ClipboardType type) { + base::string16 data; + base::string16 html; + std::string url; + uint32 start; + uint32 end; + ui::Clipboard::GetForCurrentThread()->ReadHTML(type, &html, &url, + &start, &end); + data = html.substr(start, end - start); + return data; +} + +void WriteHtml(const base::string16& html, + ui::ClipboardType type) { + ui::ScopedClipboardWriter writer(type); + writer.WriteHTML(html, std::string()); +} + gfx::Image ReadImage(ui::ClipboardType type) { SkBitmap bitmap = ui::Clipboard::GetForCurrentThread()->ReadImage(type); return gfx::Image::CreateFrom1xBitmap(bitmap); @@ -81,10 +101,12 @@ void Clear(ui::ClipboardType type) { void Initialize(v8::Local exports, v8::Local unused, v8::Local context, void* priv) { mate::Dictionary dict(context->GetIsolate(), exports); - dict.SetMethod("_has", &Has); + dict.SetMethod("_availableFormats", &AvailableFormats); dict.SetMethod("_read", &Read); dict.SetMethod("_readText", &ReadText); dict.SetMethod("_writeText", &WriteText); + dict.SetMethod("_readHtml", &ReadHtml); + dict.SetMethod("_writeHtml", &WriteHtml); dict.SetMethod("_readImage", &ReadImage); dict.SetMethod("_writeImage", &WriteImage); dict.SetMethod("_clear", &Clear); diff --git a/atom/common/api/lib/clipboard.coffee b/atom/common/api/lib/clipboard.coffee index 582feba4b1ef..70e2e86fc982 100644 --- a/atom/common/api/lib/clipboard.coffee +++ b/atom/common/api/lib/clipboard.coffee @@ -1,9 +1,11 @@ binding = process.atomBinding 'clipboard' module.exports = - has: (format, type='standard') -> binding._has format, type + availableFormats: (type='standard') -> binding._availableFormats type read: (format, type='standard') -> binding._read format, type readText: (type='standard') -> binding._readText type writeText: (text, type='standard') -> binding._writeText text, type + readHtml: (type='standard') -> binding._readHtml type + writeHtml: (markup, type='standard') -> binding._writeHtml markup, type readImage: (type='standard') -> binding._readImage type writeImage: (image, type='standard') -> binding._writeImage image, type clear: (type='standard') -> binding._clear type diff --git a/docs/api/clipboard.md b/docs/api/clipboard.md index c0f830491c1b..92264075a706 100644 --- a/docs/api/clipboard.md +++ b/docs/api/clipboard.md @@ -30,6 +30,19 @@ Returns the content in clipboard as plain text. Writes the `text` into clipboard as plain text. +## clipboard.readHtml([type]) + +* `type` String + +Returns the content in clipboard as markup. + +## clipboard.writeHtml(markup[, type]) + +* `markup` String +* `type` String + +Writes the `markup` into clipboard. + ## clipboard.readImage([type]) * `type` String @@ -49,14 +62,9 @@ Writes the `image` into clipboard. Clears everything in clipboard. -## clipboard.has(format[, type]) +## clipboard.availableFormats([type]) -* `format` String -* `type` String - -Returns whether clipboard has data in specified `format`. - -**Note:** This API is experimental and could be removed in future. +Returns an array of supported `format` for the clipboard `type`. ## clipboard.read(format[, type]) diff --git a/spec/api-clipboard-spec.coffee b/spec/api-clipboard-spec.coffee index feadd15b0a6f..429fcbc2d0ad 100644 --- a/spec/api-clipboard-spec.coffee +++ b/spec/api-clipboard-spec.coffee @@ -18,3 +18,15 @@ describe 'clipboard module', -> text = '千江有水千江月,万里无云万里天' clipboard.writeText text assert.equal clipboard.readText(), text + + describe 'clipboard.readHtml()', -> + it 'returns markup correctly', -> + text = 'Hi' + markup = + if process.platform is 'darwin' + 'Hi' + else + 'Hi' + clipboard.writeHtml text + assert.equal clipboard.readHtml(), markup