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 "chrome/browser/sync/glue/bookmark_change_processor.h" | 5 #include "chrome/browser/sync/glue/bookmark_change_processor.h" |
6 | 6 |
7 #include <stack> | 7 #include <stack> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/location.h" | 10 #include "base/location.h" |
11 #include "base/string16.h" | 11 #include "base/string16.h" |
12 #include "base/string_util.h" | 12 #include "base/string_util.h" |
13 #include "base/utf_string_conversions.h" | 13 #include "base/utf_string_conversions.h" |
14 #include "chrome/browser/bookmarks/bookmark_model.h" | 14 #include "chrome/browser/bookmarks/bookmark_model.h" |
15 #include "chrome/browser/bookmarks/bookmark_utils.h" | 15 #include "chrome/browser/bookmarks/bookmark_utils.h" |
16 #include "chrome/browser/favicon/favicon_service.h" | 16 #include "chrome/browser/favicon/favicon_service.h" |
17 #include "chrome/browser/profiles/profile.h" | 17 #include "chrome/browser/profiles/profile.h" |
18 #include "chrome/browser/sync/internal_api/change_record.h" | 18 #include "chrome/browser/sync/internal_api/change_record.h" |
19 #include "chrome/browser/sync/internal_api/read_node.h" | 19 #include "chrome/browser/sync/internal_api/read_node.h" |
20 #include "chrome/browser/sync/internal_api/write_node.h" | 20 #include "chrome/browser/sync/internal_api/write_node.h" |
21 #include "chrome/browser/sync/internal_api/write_transaction.h" | 21 #include "chrome/browser/sync/internal_api/write_transaction.h" |
22 #include "chrome/browser/sync/profile_sync_service.h" | 22 #include "chrome/browser/sync/profile_sync_service.h" |
23 #include "content/public/browser/browser_thread.h" | 23 #include "content/public/browser/browser_thread.h" |
24 #include "sync/syncable/syncable.h" // TODO(tim): Investigating bug 121587. | |
24 #include "third_party/skia/include/core/SkBitmap.h" | 25 #include "third_party/skia/include/core/SkBitmap.h" |
25 #include "ui/gfx/codec/png_codec.h" | 26 #include "ui/gfx/codec/png_codec.h" |
26 | 27 |
27 using content::BrowserThread; | 28 using content::BrowserThread; |
28 | 29 |
29 namespace browser_sync { | 30 namespace browser_sync { |
30 | 31 |
31 static const char kMobileBookmarksTag[] = "synced_bookmarks"; | 32 static const char kMobileBookmarksTag[] = "synced_bookmarks"; |
32 | 33 |
33 BookmarkChangeProcessor::BookmarkChangeProcessor( | 34 BookmarkChangeProcessor::BookmarkChangeProcessor( |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
207 NOTREACHED() << "Saw update to permanent node!"; | 208 NOTREACHED() << "Saw update to permanent node!"; |
208 return; | 209 return; |
209 } | 210 } |
210 | 211 |
211 // Acquire a scoped write lock via a transaction. | 212 // Acquire a scoped write lock via a transaction. |
212 sync_api::WriteTransaction trans(FROM_HERE, share_handle()); | 213 sync_api::WriteTransaction trans(FROM_HERE, share_handle()); |
213 | 214 |
214 // Lookup the sync node that's associated with |node|. | 215 // Lookup the sync node that's associated with |node|. |
215 sync_api::WriteNode sync_node(&trans); | 216 sync_api::WriteNode sync_node(&trans); |
216 if (!model_associator_->InitSyncNodeFromChromeId(node->id(), &sync_node)) { | 217 if (!model_associator_->InitSyncNodeFromChromeId(node->id(), &sync_node)) { |
217 error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE, | 218 // TODO(tim): Investigating bug 121587. |
218 std::string()); | 219 if (!model_associator_->GetSyncIdFromChromeId(node->id())) { |
Nicolas Zea
2012/04/16 20:48:28
if (... == sync_api::kInvalidId)
| |
220 error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE, | |
221 "Bookmark id not found in model associator on BookmarkNodeChanged"); | |
222 } else if (!sync_node.GetEntry()->good()) { | |
223 error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE, | |
224 "Could not InitByIdLookup on BookmarkNodeChanged, good() failed"); | |
225 } else if (sync_node.GetEntry()->Get(::syncable::IS_DEL)) { | |
226 error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE, | |
227 "Could not InitByIdLookup on BookmarkNodeChanged, is_del true"); | |
228 } else { | |
229 error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE, | |
230 "Could not InitByIdLookup on BookmarkNodeChanged, " | |
231 " DecryptIfNecessary failed"); | |
232 } | |
219 return; | 233 return; |
220 } | 234 } |
221 | 235 |
222 UpdateSyncNodeProperties(node, model, &sync_node); | 236 UpdateSyncNodeProperties(node, model, &sync_node); |
223 | 237 |
224 DCHECK_EQ(sync_node.GetIsFolder(), node->is_folder()); | 238 DCHECK_EQ(sync_node.GetIsFolder(), node->is_folder()); |
225 DCHECK_EQ(model_associator_->GetChromeNodeFromSyncId( | 239 DCHECK_EQ(model_associator_->GetChromeNodeFromSyncId( |
226 sync_node.GetParentId()), | 240 sync_node.GetParentId()), |
227 node->parent()); | 241 node->parent()); |
228 // This node's index should be one more than the predecessor's index. | 242 // This node's index should be one more than the predecessor's index. |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
600 const BookmarkNode* bookmark_node, | 614 const BookmarkNode* bookmark_node, |
601 BookmarkModel* model, | 615 BookmarkModel* model, |
602 sync_api::WriteNode* sync_node) { | 616 sync_api::WriteNode* sync_node) { |
603 std::vector<unsigned char> favicon_bytes; | 617 std::vector<unsigned char> favicon_bytes; |
604 EncodeFavicon(bookmark_node, model, &favicon_bytes); | 618 EncodeFavicon(bookmark_node, model, &favicon_bytes); |
605 if (!favicon_bytes.empty()) | 619 if (!favicon_bytes.empty()) |
606 sync_node->SetFaviconBytes(favicon_bytes); | 620 sync_node->SetFaviconBytes(favicon_bytes); |
607 } | 621 } |
608 | 622 |
609 } // namespace browser_sync | 623 } // namespace browser_sync |
OLD | NEW |