OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "components/sync_sessions/favicon_cache.h" | 5 #include "components/sync_sessions/favicon_cache.h" |
6 | 6 |
7 #include "base/location.h" | 7 #include "base/location.h" |
| 8 #include "base/macros.h" |
8 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
9 #include "base/single_thread_task_runner.h" | 10 #include "base/single_thread_task_runner.h" |
10 #include "base/thread_task_runner_handle.h" | 11 #include "base/thread_task_runner_handle.h" |
11 #include "components/favicon/core/favicon_service.h" | 12 #include "components/favicon/core/favicon_service.h" |
12 #include "components/history/core/browser/history_service.h" | 13 #include "components/history/core/browser/history_service.h" |
13 #include "components/history/core/browser/history_types.h" | 14 #include "components/history/core/browser/history_types.h" |
14 #include "sync/api/time.h" | 15 #include "sync/api/time.h" |
15 #include "sync/protocol/favicon_image_specifics.pb.h" | 16 #include "sync/protocol/favicon_image_specifics.pb.h" |
16 #include "sync/protocol/favicon_tracking_specifics.pb.h" | 17 #include "sync/protocol/favicon_tracking_specifics.pb.h" |
17 #include "sync/protocol/sync.pb.h" | 18 #include "sync/protocol/sync.pb.h" |
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
501 | 502 |
502 if (iter == page_favicon_map_.end()) | 503 if (iter == page_favicon_map_.end()) |
503 return false; | 504 return false; |
504 | 505 |
505 return GetSyncedFaviconForFaviconURL(iter->second, favicon_png); | 506 return GetSyncedFaviconForFaviconURL(iter->second, favicon_png); |
506 } | 507 } |
507 | 508 |
508 void FaviconCache::OnReceivedSyncFavicon(const GURL& page_url, | 509 void FaviconCache::OnReceivedSyncFavicon(const GURL& page_url, |
509 const GURL& icon_url, | 510 const GURL& icon_url, |
510 const std::string& icon_bytes, | 511 const std::string& icon_bytes, |
511 int64 visit_time_ms) { | 512 int64_t visit_time_ms) { |
512 if (!icon_url.is_valid() || !page_url.is_valid() || icon_url.SchemeIs("data")) | 513 if (!icon_url.is_valid() || !page_url.is_valid() || icon_url.SchemeIs("data")) |
513 return; | 514 return; |
514 DVLOG(1) << "Associating " << page_url.spec() << " with favicon at " | 515 DVLOG(1) << "Associating " << page_url.spec() << " with favicon at " |
515 << icon_url.spec(); | 516 << icon_url.spec(); |
516 page_favicon_map_[page_url] = icon_url; | 517 page_favicon_map_[page_url] = icon_url; |
517 | 518 |
518 // If there is no actual image, it means there either is no synced | 519 // If there is no actual image, it means there either is no synced |
519 // favicon, or it's on its way (race condition). | 520 // favicon, or it's on its way (race condition). |
520 // TODO(zea): potentially trigger a favicon web download here (delayed?). | 521 // TODO(zea): potentially trigger a favicon web download here (delayed?). |
521 if (icon_bytes.size() == 0) | 522 if (icon_bytes.size() == 0) |
522 return; | 523 return; |
523 | 524 |
524 // Post a task to do the actual association because this method may have been | 525 // Post a task to do the actual association because this method may have been |
525 // called while in a transaction. | 526 // called while in a transaction. |
526 base::ThreadTaskRunnerHandle::Get()->PostTask( | 527 base::ThreadTaskRunnerHandle::Get()->PostTask( |
527 FROM_HERE, base::Bind(&FaviconCache::OnReceivedSyncFaviconImpl, | 528 FROM_HERE, base::Bind(&FaviconCache::OnReceivedSyncFaviconImpl, |
528 weak_ptr_factory_.GetWeakPtr(), icon_url, | 529 weak_ptr_factory_.GetWeakPtr(), icon_url, |
529 icon_bytes, visit_time_ms)); | 530 icon_bytes, visit_time_ms)); |
530 } | 531 } |
531 | 532 |
532 void FaviconCache::OnReceivedSyncFaviconImpl( | 533 void FaviconCache::OnReceivedSyncFaviconImpl(const GURL& icon_url, |
533 const GURL& icon_url, | 534 const std::string& icon_bytes, |
534 const std::string& icon_bytes, | 535 int64_t visit_time_ms) { |
535 int64 visit_time_ms) { | |
536 // If this favicon is already synced, do nothing else. | 536 // If this favicon is already synced, do nothing else. |
537 if (synced_favicons_.find(icon_url) != synced_favicons_.end()) | 537 if (synced_favicons_.find(icon_url) != synced_favicons_.end()) |
538 return; | 538 return; |
539 | 539 |
540 // Don't add any more favicons once we hit our in memory limit. | 540 // Don't add any more favicons once we hit our in memory limit. |
541 // TODO(zea): UMA this. | 541 // TODO(zea): UMA this. |
542 if (kMaxFaviconsInMem != 0 && synced_favicons_.size() > kMaxFaviconsInMem) | 542 if (kMaxFaviconsInMem != 0 && synced_favicons_.size() > kMaxFaviconsInMem) |
543 return; | 543 return; |
544 | 544 |
545 SyncedFaviconInfo* favicon_info = GetFaviconInfo(icon_url); | 545 SyncedFaviconInfo* favicon_info = GetFaviconInfo(icon_url); |
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1047 favicon_images_sync_processor_->ProcessSyncChanges(FROM_HERE, | 1047 favicon_images_sync_processor_->ProcessSyncChanges(FROM_HERE, |
1048 image_deletions); | 1048 image_deletions); |
1049 } | 1049 } |
1050 if (favicon_tracking_sync_processor_.get()) { | 1050 if (favicon_tracking_sync_processor_.get()) { |
1051 favicon_tracking_sync_processor_->ProcessSyncChanges(FROM_HERE, | 1051 favicon_tracking_sync_processor_->ProcessSyncChanges(FROM_HERE, |
1052 tracking_deletions); | 1052 tracking_deletions); |
1053 } | 1053 } |
1054 } | 1054 } |
1055 | 1055 |
1056 } // namespace browser_sync | 1056 } // namespace browser_sync |
OLD | NEW |