| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "chrome/browser/bookmarks/bookmark_drag_data.h" | 5 #include "chrome/browser/bookmarks/bookmark_drag_data.h" |
| 6 | 6 |
| 7 #include "app/clipboard/scoped_clipboard_writer.h" | 7 #include "app/clipboard/scoped_clipboard_writer.h" |
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
| 9 #include "base/pickle.h" | 9 #include "base/pickle.h" |
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
| 11 #include "chrome/browser/bookmarks/bookmark_model.h" | 11 #include "chrome/browser/bookmarks/bookmark_model.h" |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 element.is_url = true; | 183 element.is_url = true; |
| 184 elements.push_back(element); | 184 elements.push_back(element); |
| 185 } | 185 } |
| 186 } | 186 } |
| 187 | 187 |
| 188 return is_valid(); | 188 return is_valid(); |
| 189 } | 189 } |
| 190 #endif | 190 #endif |
| 191 | 191 |
| 192 void BookmarkDragData::WriteToPickle(Profile* profile, Pickle* pickle) const { | 192 void BookmarkDragData::WriteToPickle(Profile* profile, Pickle* pickle) const { |
| 193 #if defined(WCHAR_T_IS_UTF16) | 193 FilePath path = profile ? profile->GetPath() : FilePath(); |
| 194 pickle->WriteWString( | 194 FilePath::WriteStringTypeToPickle(pickle, path.value()); |
| 195 profile ? profile->GetPath().ToWStringHack() : std::wstring()); | |
| 196 #elif defined(WCHAR_T_IS_UTF32) | |
| 197 pickle->WriteString( | |
| 198 profile ? profile->GetPath().value() : std::string()); | |
| 199 #else | |
| 200 NOTIMPLEMENTED() << "Impossible encoding situation!"; | |
| 201 #endif | |
| 202 | |
| 203 pickle->WriteSize(elements.size()); | 195 pickle->WriteSize(elements.size()); |
| 204 | 196 |
| 205 for (size_t i = 0; i < elements.size(); ++i) | 197 for (size_t i = 0; i < elements.size(); ++i) |
| 206 elements[i].WriteToPickle(pickle); | 198 elements[i].WriteToPickle(pickle); |
| 207 } | 199 } |
| 208 | 200 |
| 209 bool BookmarkDragData::ReadFromPickle(Pickle* pickle) { | 201 bool BookmarkDragData::ReadFromPickle(Pickle* pickle) { |
| 210 void* data_iterator = NULL; | 202 void* data_iterator = NULL; |
| 211 size_t element_count; | 203 size_t element_count; |
| 212 #if defined(WCHAR_T_IS_UTF16) | 204 if (FilePath::ReadStringTypeFromPickle(pickle, &data_iterator, |
| 213 if (pickle->ReadWString(&data_iterator, &profile_path_) && | 205 &profile_path_) && |
| 214 #elif defined(WCHAR_T_IS_UTF32) | |
| 215 if (pickle->ReadString(&data_iterator, &profile_path_) && | |
| 216 #else | |
| 217 NOTIMPLEMENTED() << "Impossible encoding situation!"; | |
| 218 if (false && | |
| 219 #endif | |
| 220 pickle->ReadSize(&data_iterator, &element_count)) { | 206 pickle->ReadSize(&data_iterator, &element_count)) { |
| 221 std::vector<Element> tmp_elements; | 207 std::vector<Element> tmp_elements; |
| 222 tmp_elements.resize(element_count); | 208 tmp_elements.resize(element_count); |
| 223 for (size_t i = 0; i < element_count; ++i) { | 209 for (size_t i = 0; i < element_count; ++i) { |
| 224 if (!tmp_elements[i].ReadFromPickle(pickle, &data_iterator)) { | 210 if (!tmp_elements[i].ReadFromPickle(pickle, &data_iterator)) { |
| 225 return false; | 211 return false; |
| 226 } | 212 } |
| 227 } | 213 } |
| 228 elements.swap(tmp_elements); | 214 elements.swap(tmp_elements); |
| 229 } | 215 } |
| (...skipping 27 matching lines...) Expand all Loading... |
| 257 | 243 |
| 258 bool BookmarkDragData::IsFromProfile(Profile* profile) const { | 244 bool BookmarkDragData::IsFromProfile(Profile* profile) const { |
| 259 // An empty path means the data is not associated with any profile. | 245 // An empty path means the data is not associated with any profile. |
| 260 return (!profile_path_.empty() && | 246 return (!profile_path_.empty() && |
| 261 #if defined(WCHAR_T_IS_UTF16) | 247 #if defined(WCHAR_T_IS_UTF16) |
| 262 profile->GetPath().ToWStringHack() == profile_path_); | 248 profile->GetPath().ToWStringHack() == profile_path_); |
| 263 #elif defined(WCHAR_T_IS_UTF32) | 249 #elif defined(WCHAR_T_IS_UTF32) |
| 264 profile->GetPath().value() == profile_path_); | 250 profile->GetPath().value() == profile_path_); |
| 265 #endif | 251 #endif |
| 266 } | 252 } |
| OLD | NEW |