Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(467)

Side by Side Diff: webkit/plugins/ppapi/ppb_flash_clipboard_impl.cc

Issue 8365017: Convert the flash clipboard API to thunk system. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
OLDNEW
« ppapi/thunk/ppb_flash_clipboard_thunk.cc ('K') | « webkit/plugins/ppapi/ppb_flash_clipboard_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698