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

Side by Side Diff: ppapi/proxy/flash_clipboard_format_registry.cc

Issue 11225021: Move flash clipboard to the new proxy and add custom format support (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 1 month 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
(Empty)
1 #include "ppapi/proxy/flash_clipboard_format_registry.h"
2
3 #include <cctype>
4
5 namespace ppapi {
6 namespace proxy {
7
8 namespace {
9 // These values are chosen arbitrarily. Flash will never exceed these but if
10 // the interface becomes public, we can reconsider these.
11 const size_t kMaxNumFormats = 10;
12 const size_t kMaxFormatNameLength = 50;
13
14 // All formats in PP_Flash_Clipboard_Format should be added here.
15 const PP_Flash_Clipboard_Format kPredefinedFormats[] = {
yzshen1 2012/10/29 16:55:46 Is it better to define something like PP_FLASH_CLI
raymes 2012/10/29 18:44:58 As discussed, this could have problems if more val
16 PP_FLASH_CLIPBOARD_FORMAT_INVALID,
17 PP_FLASH_CLIPBOARD_FORMAT_PLAINTEXT,
18 PP_FLASH_CLIPBOARD_FORMAT_HTML,
19 PP_FLASH_CLIPBOARD_FORMAT_RTF
20 };
21
22 // The first custom format ID will be the ID after that max value in
23 // PP_Flash_Clipboard_Format.
24 const size_t kFirstCustomFormat =
25 sizeof(kPredefinedFormats) / sizeof(kPredefinedFormats[0]);
26
27 // Checks the validity of the given format name.
28 bool IsValidFormatName(const std::string& format_name) {
29 if (format_name.length() == 0 || format_name.length() > kMaxFormatNameLength)
30 return false;
31 return true;
32 }
33
34 } // namespace
35
36 FlashClipboardFormatRegistry::FlashClipboardFormatRegistry() {
37 custom_formats_.resize(kFirstCustomFormat);
38 }
39
40 FlashClipboardFormatRegistry::~FlashClipboardFormatRegistry() {
41 }
42
43 uint32_t FlashClipboardFormatRegistry::RegisterFormat(
44 const std::string& format_name) {
45 if (!IsValidFormatName(format_name) ||
46 custom_formats_.size() > kMaxNumFormats) {
47 return PP_FLASH_CLIPBOARD_FORMAT_INVALID;
48 }
49 custom_formats_.push_back(format_name);
50 return custom_formats_.size() - 1;
51 }
52
53 void FlashClipboardFormatRegistry::SetRegisteredFormat(
54 const std::string& format_name,
55 uint32_t format) {
56 if (format >= custom_formats_.size())
57 custom_formats_.resize(format + 1);
58 custom_formats_[format] = format_name;
59 }
60
61 bool FlashClipboardFormatRegistry::IsFormatRegistered(uint32_t format) {
62 return format >= kFirstCustomFormat && format < custom_formats_.size();
63 }
64
65 std::string FlashClipboardFormatRegistry::GetFormatName(uint32_t format) {
66 if (format >= kFirstCustomFormat && format < custom_formats_.size())
67 return custom_formats_[format];
68 return std::string();
69 }
70
71 uint32_t FlashClipboardFormatRegistry::GetFormatID(
72 const std::string& format_name) {
73 for (size_t i = kFirstCustomFormat; i < custom_formats_.size(); ++i) {
74 if (custom_formats_[i] == format_name)
75 return i;
76 }
77 return PP_FLASH_CLIPBOARD_FORMAT_INVALID;
78 }
79
80 // static
81 bool FlashClipboardFormatRegistry::IsValidClipboardType(
82 PP_Flash_Clipboard_Type type) {
83 return type == PP_FLASH_CLIPBOARD_TYPE_STANDARD ||
84 type == PP_FLASH_CLIPBOARD_TYPE_SELECTION;
85 }
86
87 // static
88 bool FlashClipboardFormatRegistry::IsValidPredefinedFormat(uint32_t format) {
89 if (format == PP_FLASH_CLIPBOARD_FORMAT_INVALID)
90 return false;
91 return format < kFirstCustomFormat;
92 }
93
94 } // proxy
95 } // ppapi
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698