| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "webkit/plugins/ppapi/ppb_flash_clipboard_impl.h" | 5 #include "webkit/plugins/ppapi/ppb_flash_clipboard_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 return WebKit::WebClipboard::FormatPlainText; | 53 return WebKit::WebClipboard::FormatPlainText; |
| 54 case PP_FLASH_CLIPBOARD_FORMAT_HTML: | 54 case PP_FLASH_CLIPBOARD_FORMAT_HTML: |
| 55 return WebKit::WebClipboard::FormatHTML; | 55 return WebKit::WebClipboard::FormatHTML; |
| 56 case PP_FLASH_CLIPBOARD_FORMAT_INVALID: | 56 case PP_FLASH_CLIPBOARD_FORMAT_INVALID: |
| 57 default: | 57 default: |
| 58 NOTREACHED(); | 58 NOTREACHED(); |
| 59 return WebKit::WebClipboard::FormatPlainText; // Gotta return something. | 59 return WebKit::WebClipboard::FormatPlainText; // Gotta return something. |
| 60 } | 60 } |
| 61 } | 61 } |
| 62 | 62 |
| 63 PP_Bool IsFormatAvailable(PP_Instance instance_id, | 63 } // namespace |
| 64 PP_Flash_Clipboard_Type clipboard_type, | |
| 65 PP_Flash_Clipboard_Format format) { | |
| 66 // If you don't give us an instance, we don't give you anything. | |
| 67 PluginInstance* instance = HostGlobals::Get()->GetInstance(instance_id); | |
| 68 if (!instance) | |
| 69 return PP_FALSE; | |
| 70 | 64 |
| 65 PPB_Flash_Clipboard_Impl::PPB_Flash_Clipboard_Impl(PluginInstance* instance) |
| 66 : instance_(instance) { |
| 67 } |
| 68 |
| 69 PPB_Flash_Clipboard_Impl::~PPB_Flash_Clipboard_Impl() { |
| 70 } |
| 71 |
| 72 ::ppapi::thunk::PPB_Flash_Clipboard_FunctionAPI* |
| 73 PPB_Flash_Clipboard_Impl::AsPPB_Flash_Clipboard_FunctionAPI() { |
| 74 return this; |
| 75 } |
| 76 |
| 77 PP_Bool PPB_Flash_Clipboard_Impl::IsFormatAvailable( |
| 78 PP_Instance instance, |
| 79 PP_Flash_Clipboard_Type clipboard_type, |
| 80 PP_Flash_Clipboard_Format format) { |
| 71 WebKit::WebClipboard* web_clipboard = | 81 WebKit::WebClipboard* web_clipboard = |
| 72 WebKit::webKitPlatformSupport()->clipboard(); | 82 WebKit::webKitPlatformSupport()->clipboard(); |
| 73 if (!web_clipboard) { | 83 if (!web_clipboard) { |
| 74 NOTREACHED(); | 84 NOTREACHED(); |
| 75 return PP_FALSE; | 85 return PP_FALSE; |
| 76 } | 86 } |
| 77 | |
| 78 return BoolToPPBool( | 87 return BoolToPPBool( |
| 79 web_clipboard->isFormatAvailable(ConvertClipboardFormat(format), | 88 web_clipboard->isFormatAvailable(ConvertClipboardFormat(format), |
| 80 ConvertClipboardType(clipboard_type))); | 89 ConvertClipboardType(clipboard_type))); |
| 81 } | 90 } |
| 82 | 91 |
| 83 PP_Var ReadPlainText(PP_Instance instance_id, | 92 PP_Var PPB_Flash_Clipboard_Impl::ReadPlainText( |
| 84 PP_Flash_Clipboard_Type clipboard_type) { | 93 PP_Instance instance, |
| 85 PluginInstance* instance = HostGlobals::Get()->GetInstance(instance_id); | 94 PP_Flash_Clipboard_Type clipboard_type) { |
| 86 if (!instance) | |
| 87 return PP_MakeNull(); | |
| 88 | |
| 89 WebKit::WebClipboard* web_clipboard = | 95 WebKit::WebClipboard* web_clipboard = |
| 90 WebKit::webKitPlatformSupport()->clipboard(); | 96 WebKit::webKitPlatformSupport()->clipboard(); |
| 91 if (!web_clipboard) { | 97 if (!web_clipboard) { |
| 92 NOTREACHED(); | 98 NOTREACHED(); |
| 93 return PP_MakeNull(); | 99 return PP_MakeNull(); |
| 94 } | 100 } |
| 95 | |
| 96 WebKit::WebCString s = | 101 WebKit::WebCString s = |
| 97 web_clipboard->readPlainText(ConvertClipboardType(clipboard_type)).utf8(); | 102 web_clipboard->readPlainText(ConvertClipboardType(clipboard_type)).utf8(); |
| 98 return StringVar::StringToPPVar(instance->module()->pp_module(), s); | 103 return StringVar::StringToPPVar(instance_->module()->pp_module(), s); |
| 99 } | 104 } |
| 100 | 105 |
| 101 int32_t WritePlainText(PP_Instance instance_id, | 106 int32_t PPB_Flash_Clipboard_Impl::WritePlainText( |
| 102 PP_Flash_Clipboard_Type clipboard_type, | 107 PP_Instance instance, |
| 103 PP_Var text) { | 108 PP_Flash_Clipboard_Type clipboard_type, |
| 109 const PP_Var& text) { |
| 104 StringVar* text_string = StringVar::FromPPVar(text); | 110 StringVar* text_string = StringVar::FromPPVar(text); |
| 105 if (!text_string) | 111 if (!text_string) |
| 106 return PP_ERROR_BADARGUMENT; | 112 return PP_ERROR_BADARGUMENT; |
| 107 | 113 |
| 108 if (text_string->value().length() > kMaxClipboardWriteSize) | 114 if (text_string->value().length() > kMaxClipboardWriteSize) |
| 109 return PP_ERROR_NOSPACE; | 115 return PP_ERROR_NOSPACE; |
| 110 | 116 |
| 111 if (clipboard_type != PP_FLASH_CLIPBOARD_TYPE_STANDARD) { | 117 if (clipboard_type != PP_FLASH_CLIPBOARD_TYPE_STANDARD) { |
| 112 NOTIMPLEMENTED(); | 118 NOTIMPLEMENTED(); |
| 113 return PP_ERROR_FAILED; | 119 return PP_ERROR_FAILED; |
| 114 } | 120 } |
| 115 | 121 |
| 116 WebKit::WebClipboard* web_clipboard = | 122 WebKit::WebClipboard* web_clipboard = |
| 117 WebKit::webKitPlatformSupport()->clipboard(); | 123 WebKit::webKitPlatformSupport()->clipboard(); |
| 118 if (!web_clipboard) { | 124 if (!web_clipboard) { |
| 119 NOTREACHED(); | 125 NOTREACHED(); |
| 120 return PP_ERROR_FAILED; | 126 return PP_ERROR_FAILED; |
| 121 } | 127 } |
| 122 | 128 |
| 123 web_clipboard->writePlainText( | 129 web_clipboard->writePlainText( |
| 124 WebKit::WebCString(text_string->value()).utf16()); | 130 WebKit::WebCString(text_string->value()).utf16()); |
| 125 return PP_OK; | 131 return PP_OK; |
| 126 } | 132 } |
| 127 | 133 |
| 128 const PPB_Flash_Clipboard ppb_flash_clipboard = { | |
| 129 &IsFormatAvailable, | |
| 130 &ReadPlainText, | |
| 131 &WritePlainText, | |
| 132 }; | |
| 133 | |
| 134 } // namespace | |
| 135 | |
| 136 // static | |
| 137 const PPB_Flash_Clipboard* | |
| 138 PPB_Flash_Clipboard_Impl::GetInterface() { | |
| 139 return &ppb_flash_clipboard; | |
| 140 } | |
| 141 | |
| 142 } // namespace ppapi | 134 } // namespace ppapi |
| 143 } // namespace webkit | 135 } // namespace webkit |
| OLD | NEW |