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()) == |
| 220 sync_api::kInvalidId) { |
| 221 error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE, |
| 222 "Bookmark id not found in model associator on BookmarkNodeChanged"); |
| 223 } else if (!sync_node.GetEntry()->good()) { |
| 224 error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE, |
| 225 "Could not InitByIdLookup on BookmarkNodeChanged, good() failed"); |
| 226 } else if (sync_node.GetEntry()->Get(::syncable::IS_DEL)) { |
| 227 error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE, |
| 228 "Could not InitByIdLookup on BookmarkNodeChanged, is_del true"); |
| 229 } else { |
| 230 error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE, |
| 231 "Could not InitByIdLookup on BookmarkNodeChanged, " |
| 232 " DecryptIfNecessary failed"); |
| 233 } |
219 return; | 234 return; |
220 } | 235 } |
221 | 236 |
222 UpdateSyncNodeProperties(node, model, &sync_node); | 237 UpdateSyncNodeProperties(node, model, &sync_node); |
223 | 238 |
224 DCHECK_EQ(sync_node.GetIsFolder(), node->is_folder()); | 239 DCHECK_EQ(sync_node.GetIsFolder(), node->is_folder()); |
225 DCHECK_EQ(model_associator_->GetChromeNodeFromSyncId( | 240 DCHECK_EQ(model_associator_->GetChromeNodeFromSyncId( |
226 sync_node.GetParentId()), | 241 sync_node.GetParentId()), |
227 node->parent()); | 242 node->parent()); |
228 // This node's index should be one more than the predecessor's index. | 243 // 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, | 615 const BookmarkNode* bookmark_node, |
601 BookmarkModel* model, | 616 BookmarkModel* model, |
602 sync_api::WriteNode* sync_node) { | 617 sync_api::WriteNode* sync_node) { |
603 std::vector<unsigned char> favicon_bytes; | 618 std::vector<unsigned char> favicon_bytes; |
604 EncodeFavicon(bookmark_node, model, &favicon_bytes); | 619 EncodeFavicon(bookmark_node, model, &favicon_bytes); |
605 if (!favicon_bytes.empty()) | 620 if (!favicon_bytes.empty()) |
606 sync_node->SetFaviconBytes(favicon_bytes); | 621 sync_node->SetFaviconBytes(favicon_bytes); |
607 } | 622 } |
608 | 623 |
609 } // namespace browser_sync | 624 } // namespace browser_sync |
OLD | NEW |