| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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_html_writer.h" | 5 #include "chrome/browser/bookmarks/bookmark_html_writer.h" |
| 6 | 6 |
| 7 #include "base/file_path.h" |
| 7 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 8 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
| 9 #include "base/platform_file.h" | 10 #include "base/platform_file.h" |
| 10 #include "base/scoped_ptr.h" | 11 #include "base/scoped_ptr.h" |
| 11 #include "base/string_util.h" | 12 #include "base/string_util.h" |
| 12 #include "base/time.h" | 13 #include "base/time.h" |
| 13 #include "base/values.h" | 14 #include "base/values.h" |
| 14 #include "chrome/browser/bookmarks/bookmark_codec.h" | 15 #include "chrome/browser/bookmarks/bookmark_codec.h" |
| 15 #include "chrome/browser/bookmarks/bookmark_model.h" | 16 #include "chrome/browser/bookmarks/bookmark_model.h" |
| 16 #include "chrome/browser/history/history_types.h" | 17 #include "chrome/browser/history/history_types.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 const char kFolderChildren[] = "<DL><p>"; | 65 const char kFolderChildren[] = "<DL><p>"; |
| 65 // End of the children for a folder. | 66 // End of the children for a folder. |
| 66 const char kFolderChildrenEnd[] = "</DL><p>"; | 67 const char kFolderChildrenEnd[] = "</DL><p>"; |
| 67 | 68 |
| 68 // Number of characters to indent by. | 69 // Number of characters to indent by. |
| 69 const size_t kIndentSize = 4; | 70 const size_t kIndentSize = 4; |
| 70 | 71 |
| 71 // Class responsible for the actual writing. | 72 // Class responsible for the actual writing. |
| 72 class Writer : public Task { | 73 class Writer : public Task { |
| 73 public: | 74 public: |
| 74 Writer(Value* bookmarks, const std::wstring& path) | 75 Writer(Value* bookmarks, const FilePath& path) |
| 75 : bookmarks_(bookmarks), | 76 : bookmarks_(bookmarks), |
| 76 path_(path) { | 77 path_(path) { |
| 77 } | 78 } |
| 78 | 79 |
| 79 virtual void Run() { | 80 virtual void Run() { |
| 80 if (!OpenFile()) | 81 if (!OpenFile()) |
| 81 return; | 82 return; |
| 82 | 83 |
| 83 Value* roots; | 84 Value* roots; |
| 84 if (!Write(kHeader) || | 85 if (!Write(kHeader) || |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 } | 294 } |
| 294 } | 295 } |
| 295 return true; | 296 return true; |
| 296 } | 297 } |
| 297 | 298 |
| 298 // The BookmarkModel as a Value. This value was generated from the | 299 // The BookmarkModel as a Value. This value was generated from the |
| 299 // BookmarkCodec. | 300 // BookmarkCodec. |
| 300 scoped_ptr<Value> bookmarks_; | 301 scoped_ptr<Value> bookmarks_; |
| 301 | 302 |
| 302 // Path we're writing to. | 303 // Path we're writing to. |
| 303 std::wstring path_; | 304 FilePath path_; |
| 304 | 305 |
| 305 // File we're writing to. | 306 // File we're writing to. |
| 306 net::FileStream file_stream_; | 307 net::FileStream file_stream_; |
| 307 | 308 |
| 308 // How much we indent when writing a bookmark/folder. This is modified | 309 // How much we indent when writing a bookmark/folder. This is modified |
| 309 // via IncrementIndent and DecrementIndent. | 310 // via IncrementIndent and DecrementIndent. |
| 310 std::string indent_; | 311 std::string indent_; |
| 311 }; | 312 }; |
| 312 | 313 |
| 313 } // namespace | 314 } // namespace |
| 314 | 315 |
| 315 void WriteBookmarks(MessageLoop* thread, | 316 void WriteBookmarks(MessageLoop* thread, |
| 316 BookmarkModel* model, | 317 BookmarkModel* model, |
| 317 const std::wstring& path) { | 318 const std::wstring& path) { |
| 318 // BookmarkModel isn't thread safe (nor would we want to lock it down | 319 // BookmarkModel isn't thread safe (nor would we want to lock it down |
| 319 // for the duration of the write), as such we make a copy of the | 320 // for the duration of the write), as such we make a copy of the |
| 320 // BookmarkModel using BookmarkCodec then write from that. | 321 // BookmarkModel using BookmarkCodec then write from that. |
| 321 BookmarkCodec codec; | 322 BookmarkCodec codec; |
| 322 scoped_ptr<Writer> writer(new Writer(codec.Encode(model), path)); | 323 scoped_ptr<Writer> writer(new Writer(codec.Encode(model), |
| 324 FilePath::FromWStringHack(path))); |
| 323 if (thread) | 325 if (thread) |
| 324 thread->PostTask(FROM_HERE, writer.release()); | 326 thread->PostTask(FROM_HERE, writer.release()); |
| 325 else | 327 else |
| 326 writer->Run(); | 328 writer->Run(); |
| 327 } | 329 } |
| 328 | 330 |
| 329 } // namespace bookmark_html_writer | 331 } // namespace bookmark_html_writer |
| OLD | NEW |