OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/history/history_backend.h" | 5 #include "chrome/browser/history/history_backend.h" |
6 | 6 |
7 #include <list> | 7 #include <list> |
8 #include <map> | 8 #include <map> |
9 #include <set> | 9 #include <set> |
10 #include <vector> | 10 #include <vector> |
(...skipping 1493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1504 | 1504 |
1505 history::RedirectList redirects; | 1505 history::RedirectList redirects; |
1506 URLID url_id; | 1506 URLID url_id; |
1507 bool success = false; | 1507 bool success = false; |
1508 | 1508 |
1509 // If there are some redirects, try to get a thumbnail from the last | 1509 // If there are some redirects, try to get a thumbnail from the last |
1510 // redirect destination. | 1510 // redirect destination. |
1511 if (GetMostRecentRedirectsFrom(page_url, &redirects) && | 1511 if (GetMostRecentRedirectsFrom(page_url, &redirects) && |
1512 !redirects.empty()) { | 1512 !redirects.empty()) { |
1513 if ((url_id = db_->GetRowForURL(redirects.back(), NULL))) | 1513 if ((url_id = db_->GetRowForURL(redirects.back(), NULL))) |
1514 success = thumbnail_db_->GetPageThumbnail(url_id, &(*data)->data); | 1514 success = thumbnail_db_->GetPageThumbnail(url_id, &(*data)->data()); |
1515 } | 1515 } |
1516 | 1516 |
1517 // If we don't have a thumbnail from redirects, try the URL directly. | 1517 // If we don't have a thumbnail from redirects, try the URL directly. |
1518 if (!success) { | 1518 if (!success) { |
1519 if ((url_id = db_->GetRowForURL(page_url, NULL))) | 1519 if ((url_id = db_->GetRowForURL(page_url, NULL))) |
1520 success = thumbnail_db_->GetPageThumbnail(url_id, &(*data)->data); | 1520 success = thumbnail_db_->GetPageThumbnail(url_id, &(*data)->data()); |
1521 } | 1521 } |
1522 | 1522 |
1523 // In this rare case, we start to mine the older redirect sessions | 1523 // In this rare case, we start to mine the older redirect sessions |
1524 // from the visit table to try to find a thumbnail. | 1524 // from the visit table to try to find a thumbnail. |
1525 if (!success) { | 1525 if (!success) { |
1526 success = GetThumbnailFromOlderRedirect(page_url, &(*data)->data); | 1526 success = GetThumbnailFromOlderRedirect(page_url, &(*data)->data()); |
1527 } | 1527 } |
1528 | 1528 |
1529 if (!success) | 1529 if (!success) |
1530 *data = NULL; // This will tell the callback there was an error. | 1530 *data = NULL; // This will tell the callback there was an error. |
1531 | 1531 |
1532 UMA_HISTOGRAM_TIMES("History.GetPageThumbnail", | 1532 UMA_HISTOGRAM_TIMES("History.GetPageThumbnail", |
1533 TimeTicks::Now() - beginning_time); | 1533 TimeTicks::Now() - beginning_time); |
1534 } | 1534 } |
1535 } | 1535 } |
1536 | 1536 |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1686 FaviconData favicon; | 1686 FaviconData favicon; |
1687 | 1687 |
1688 if (thumbnail_db_.get()) { | 1688 if (thumbnail_db_.get()) { |
1689 const FaviconID favicon_id = | 1689 const FaviconID favicon_id = |
1690 thumbnail_db_->GetFaviconIDForFaviconURL( | 1690 thumbnail_db_->GetFaviconIDForFaviconURL( |
1691 icon_url, icon_types, &favicon.icon_type); | 1691 icon_url, icon_types, &favicon.icon_type); |
1692 if (favicon_id) { | 1692 if (favicon_id) { |
1693 scoped_refptr<RefCountedBytes> data = new RefCountedBytes(); | 1693 scoped_refptr<RefCountedBytes> data = new RefCountedBytes(); |
1694 favicon.known_icon = true; | 1694 favicon.known_icon = true; |
1695 Time last_updated; | 1695 Time last_updated; |
1696 if (thumbnail_db_->GetFavicon(favicon_id, &last_updated, &data->data, | 1696 if (thumbnail_db_->GetFavicon(favicon_id, &last_updated, &data->data(), |
1697 NULL)) { | 1697 NULL)) { |
1698 favicon.expired = (Time::Now() - last_updated) > | 1698 favicon.expired = (Time::Now() - last_updated) > |
1699 TimeDelta::FromDays(kFaviconRefetchDays); | 1699 TimeDelta::FromDays(kFaviconRefetchDays); |
1700 favicon.image_data = data; | 1700 favicon.image_data = data; |
1701 } | 1701 } |
1702 | 1702 |
1703 if (page_url) | 1703 if (page_url) |
1704 SetFaviconMapping(*page_url, favicon_id, favicon.icon_type); | 1704 SetFaviconMapping(*page_url, favicon_id, favicon.icon_type); |
1705 } | 1705 } |
1706 // else case, haven't cached entry yet. Caller is responsible for | 1706 // else case, haven't cached entry yet. Caller is responsible for |
(...skipping 15 matching lines...) Expand all Loading... |
1722 if (db_.get() && thumbnail_db_.get()) { | 1722 if (db_.get() && thumbnail_db_.get()) { |
1723 // Time the query. | 1723 // Time the query. |
1724 TimeTicks beginning_time = TimeTicks::Now(); | 1724 TimeTicks beginning_time = TimeTicks::Now(); |
1725 | 1725 |
1726 std::vector<IconMapping> icon_mappings; | 1726 std::vector<IconMapping> icon_mappings; |
1727 Time last_updated; | 1727 Time last_updated; |
1728 scoped_refptr<RefCountedBytes> data = new RefCountedBytes(); | 1728 scoped_refptr<RefCountedBytes> data = new RefCountedBytes(); |
1729 if (thumbnail_db_->GetIconMappingsForPageURL(page_url, &icon_mappings) && | 1729 if (thumbnail_db_->GetIconMappingsForPageURL(page_url, &icon_mappings) && |
1730 (icon_mappings.front().icon_type & icon_types) && | 1730 (icon_mappings.front().icon_type & icon_types) && |
1731 thumbnail_db_->GetFavicon(icon_mappings.front().icon_id, &last_updated, | 1731 thumbnail_db_->GetFavicon(icon_mappings.front().icon_id, &last_updated, |
1732 &data->data, &favicon.icon_url)) { | 1732 &data->data(), &favicon.icon_url)) { |
1733 favicon.known_icon = true; | 1733 favicon.known_icon = true; |
1734 favicon.expired = (Time::Now() - last_updated) > | 1734 favicon.expired = (Time::Now() - last_updated) > |
1735 TimeDelta::FromDays(kFaviconRefetchDays); | 1735 TimeDelta::FromDays(kFaviconRefetchDays); |
1736 favicon.icon_type = icon_mappings.front().icon_type; | 1736 favicon.icon_type = icon_mappings.front().icon_type; |
1737 favicon.image_data = data; | 1737 favicon.image_data = data; |
1738 } | 1738 } |
1739 | 1739 |
1740 UMA_HISTOGRAM_TIMES("History.GetFavIconForURL", // historical name | 1740 UMA_HISTOGRAM_TIMES("History.GetFavIconForURL", // historical name |
1741 TimeTicks::Now() - beginning_time); | 1741 TimeTicks::Now() - beginning_time); |
1742 } | 1742 } |
(...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2229 return true; | 2229 return true; |
2230 } | 2230 } |
2231 | 2231 |
2232 BookmarkService* HistoryBackend::GetBookmarkService() { | 2232 BookmarkService* HistoryBackend::GetBookmarkService() { |
2233 if (bookmark_service_) | 2233 if (bookmark_service_) |
2234 bookmark_service_->BlockTillLoaded(); | 2234 bookmark_service_->BlockTillLoaded(); |
2235 return bookmark_service_; | 2235 return bookmark_service_; |
2236 } | 2236 } |
2237 | 2237 |
2238 } // namespace history | 2238 } // namespace history |
OLD | NEW |