| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ppapi/cpp/private/flash_clipboard.h" | 5 #include "ppapi/cpp/private/flash_clipboard.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "ppapi/c/pp_bool.h" | 9 #include "ppapi/c/pp_bool.h" |
| 10 #include "ppapi/c/pp_errors.h" | 10 #include "ppapi/c/pp_errors.h" |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 const uint32_t* formats_ptr(NULL); | 126 const uint32_t* formats_ptr(NULL); |
| 127 const PP_Var* data_items_ptr(NULL); | 127 const PP_Var* data_items_ptr(NULL); |
| 128 if (data_items.size() > 0) { | 128 if (data_items.size() > 0) { |
| 129 formats_ptr = &formats[0]; | 129 formats_ptr = &formats[0]; |
| 130 data_items_ptr = &data_items_vector[0]; | 130 data_items_ptr = &data_items_vector[0]; |
| 131 } | 131 } |
| 132 | 132 |
| 133 rv = (get_interface<PPB_Flash_Clipboard_5_1>()->WriteData( | 133 rv = (get_interface<PPB_Flash_Clipboard_5_1>()->WriteData( |
| 134 instance.pp_instance(), | 134 instance.pp_instance(), |
| 135 clipboard_type, | 135 clipboard_type, |
| 136 data_items.size(), | 136 static_cast<uint32_t>(data_items.size()), |
| 137 formats_ptr, | 137 formats_ptr, |
| 138 data_items_ptr) == PP_OK); | 138 data_items_ptr) == PP_OK); |
| 139 } else if (has_interface<PPB_Flash_Clipboard_5_0>()) { | 139 } else if (has_interface<PPB_Flash_Clipboard_5_0>()) { |
| 140 // Convert vector of pp::Var into a vector of PP_Var. | 140 // Convert vector of pp::Var into a vector of PP_Var. |
| 141 std::vector<PP_Var> data_items_vector; | 141 std::vector<PP_Var> data_items_vector; |
| 142 for (uint32_t i = 0; i < data_items.size(); ++i) | 142 for (uint32_t i = 0; i < data_items.size(); ++i) |
| 143 data_items_vector.push_back(data_items[i].pp_var()); | 143 data_items_vector.push_back(data_items[i].pp_var()); |
| 144 | 144 |
| 145 // Ensure that we don't dereference the memory in empty vectors. We still | 145 // Ensure that we don't dereference the memory in empty vectors. We still |
| 146 // want to call WriteData because it has the effect of clearing the | 146 // want to call WriteData because it has the effect of clearing the |
| 147 // clipboard. | 147 // clipboard. |
| 148 const uint32_t* formats_ptr(NULL); | 148 const uint32_t* formats_ptr(NULL); |
| 149 const PP_Var* data_items_ptr(NULL); | 149 const PP_Var* data_items_ptr(NULL); |
| 150 if (data_items.size() > 0) { | 150 if (data_items.size() > 0) { |
| 151 formats_ptr = &formats[0]; | 151 formats_ptr = &formats[0]; |
| 152 data_items_ptr = &data_items_vector[0]; | 152 data_items_ptr = &data_items_vector[0]; |
| 153 } | 153 } |
| 154 | 154 |
| 155 rv = (get_interface<PPB_Flash_Clipboard_5_0>()->WriteData( | 155 rv = (get_interface<PPB_Flash_Clipboard_5_0>()->WriteData( |
| 156 instance.pp_instance(), | 156 instance.pp_instance(), |
| 157 clipboard_type, | 157 clipboard_type, |
| 158 data_items.size(), | 158 static_cast<uint32_t>(data_items.size()), |
| 159 formats_ptr, | 159 formats_ptr, |
| 160 data_items_ptr) == PP_OK); | 160 data_items_ptr) == PP_OK); |
| 161 } else if (has_interface<PPB_Flash_Clipboard_4_0>()) { | 161 } else if (has_interface<PPB_Flash_Clipboard_4_0>()) { |
| 162 // Convert vector of pp::Var into a vector of PP_Var. | 162 // Convert vector of pp::Var into a vector of PP_Var. |
| 163 std::vector<PP_Var> data_items_vector; | 163 std::vector<PP_Var> data_items_vector; |
| 164 std::vector<PP_Flash_Clipboard_Format> old_formats; | 164 std::vector<PP_Flash_Clipboard_Format> old_formats; |
| 165 for (uint32_t i = 0; i < data_items.size(); ++i) { | 165 for (uint32_t i = 0; i < data_items.size(); ++i) { |
| 166 data_items_vector.push_back(data_items[i].pp_var()); | 166 data_items_vector.push_back(data_items[i].pp_var()); |
| 167 old_formats.push_back(static_cast<PP_Flash_Clipboard_Format>(formats[i])); | 167 old_formats.push_back(static_cast<PP_Flash_Clipboard_Format>(formats[i])); |
| 168 } | 168 } |
| 169 | 169 |
| 170 // Ensure that we don't dereference the memory in empty vectors. We still | 170 // Ensure that we don't dereference the memory in empty vectors. We still |
| 171 // want to call WriteData because it has the effect of clearing the | 171 // want to call WriteData because it has the effect of clearing the |
| 172 // clipboard. | 172 // clipboard. |
| 173 const PP_Flash_Clipboard_Format* formats_ptr(NULL); | 173 const PP_Flash_Clipboard_Format* formats_ptr(NULL); |
| 174 const PP_Var* data_items_ptr(NULL); | 174 const PP_Var* data_items_ptr(NULL); |
| 175 if (data_items.size() > 0) { | 175 if (data_items.size() > 0) { |
| 176 formats_ptr = &old_formats[0]; | 176 formats_ptr = &old_formats[0]; |
| 177 data_items_ptr = &data_items_vector[0]; | 177 data_items_ptr = &data_items_vector[0]; |
| 178 } | 178 } |
| 179 | 179 |
| 180 rv = (get_interface<PPB_Flash_Clipboard_4_0>()->WriteData( | 180 rv = (get_interface<PPB_Flash_Clipboard_4_0>()->WriteData( |
| 181 instance.pp_instance(), | 181 instance.pp_instance(), |
| 182 clipboard_type, | 182 clipboard_type, |
| 183 data_items.size(), | 183 static_cast<uint32_t>(data_items.size()), |
| 184 formats_ptr, | 184 formats_ptr, |
| 185 data_items_ptr) == PP_OK); | 185 data_items_ptr) == PP_OK); |
| 186 } | 186 } |
| 187 | 187 |
| 188 return rv; | 188 return rv; |
| 189 } | 189 } |
| 190 | 190 |
| 191 // static | 191 // static |
| 192 bool Clipboard::GetSequenceNumber(const InstanceHandle& instance, | 192 bool Clipboard::GetSequenceNumber(const InstanceHandle& instance, |
| 193 PP_Flash_Clipboard_Type clipboard_type, | 193 PP_Flash_Clipboard_Type clipboard_type, |
| 194 uint64_t* sequence_number) { | 194 uint64_t* sequence_number) { |
| 195 if (has_interface<PPB_Flash_Clipboard_5_1>()) { | 195 if (has_interface<PPB_Flash_Clipboard_5_1>()) { |
| 196 return PP_ToBool( | 196 return PP_ToBool( |
| 197 get_interface<PPB_Flash_Clipboard_5_1>()->GetSequenceNumber( | 197 get_interface<PPB_Flash_Clipboard_5_1>()->GetSequenceNumber( |
| 198 instance.pp_instance(), clipboard_type, sequence_number)); | 198 instance.pp_instance(), clipboard_type, sequence_number)); |
| 199 } | 199 } |
| 200 return false; | 200 return false; |
| 201 } | 201 } |
| 202 | 202 |
| 203 } // namespace flash | 203 } // namespace flash |
| 204 } // namespace pp | 204 } // namespace pp |
| OLD | NEW |