diff options
author | arv@chromium.org <arv@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-17 20:19:57 +0000 |
---|---|---|
committer | arv@chromium.org <arv@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-17 20:19:57 +0000 |
commit | 790879f7d6faea44ef0d13c2f7b44fe74edafa5e (patch) | |
tree | 6d0210a7594a265ba97425289f0a0ac44aabfb62 /chrome/browser/history | |
parent | 36ea6c6f047abed672aa9af4f3071a7364142d64 (diff) | |
download | chromium_src-790879f7d6faea44ef0d13c2f7b44fe74edafa5e.zip chromium_src-790879f7d6faea44ef0d13c2f7b44fe74edafa5e.tar.gz chromium_src-790879f7d6faea44ef0d13c2f7b44fe74edafa5e.tar.bz2 |
Change so that the extension favicon is read on the UI thread since extension objects should only be accessed on the UI thread.
This also fixes erg's todo to make favicons use RefCountedMemory instead of RefCountedBytes in all places.
BUG=None
TEST=None
Review URL: http://codereview.chromium.org/1028001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41869 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/history')
-rw-r--r-- | chrome/browser/history/history.cc | 2 | ||||
-rw-r--r-- | chrome/browser/history/history_backend.cc | 7 | ||||
-rw-r--r-- | chrome/browser/history/history_backend.h | 2 | ||||
-rw-r--r-- | chrome/browser/history/history_backend_unittest.cc | 14 | ||||
-rw-r--r-- | chrome/browser/history/thumbnail_database.cc | 9 | ||||
-rw-r--r-- | chrome/browser/history/thumbnail_database.h | 4 |
6 files changed, 22 insertions, 16 deletions
diff --git a/chrome/browser/history/history.cc b/chrome/browser/history/history.cc index 53ad780..b1b9d09 100644 --- a/chrome/browser/history/history.cc +++ b/chrome/browser/history/history.cc @@ -433,7 +433,7 @@ void HistoryService::SetFavicon(const GURL& page_url, ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::SetFavIcon, page_url, icon_url, - scoped_refptr<RefCountedBytes>(new RefCountedBytes(image_data))); + scoped_refptr<RefCountedMemory>(new RefCountedBytes(image_data))); } void HistoryService::SetFaviconOutOfDateForPage(const GURL& page_url) { diff --git a/chrome/browser/history/history_backend.cc b/chrome/browser/history/history_backend.cc index 33c079a..420095e 100644 --- a/chrome/browser/history/history_backend.cc +++ b/chrome/browser/history/history_backend.cc @@ -1445,7 +1445,8 @@ void HistoryBackend::SetImportedFavicons( favicon_id = thumbnail_db_->AddFavIcon(favicon_usage[i].favicon_url); if (!favicon_id) continue; // Unable to add the favicon. - thumbnail_db_->SetFavIcon(favicon_id, favicon_usage[i].png_data, now); + thumbnail_db_->SetFavIcon(favicon_id, + new RefCountedBytes(favicon_usage[i].png_data), now); } // Save the mapping from all the URLs to the favicon. @@ -1561,7 +1562,7 @@ void HistoryBackend::GetFavIconForURL( void HistoryBackend::SetFavIcon( const GURL& page_url, const GURL& icon_url, - scoped_refptr<RefCountedBytes> data) { + scoped_refptr<RefCountedMemory> data) { DCHECK(data.get()); if (!thumbnail_db_.get() || !db_.get()) return; @@ -1571,7 +1572,7 @@ void HistoryBackend::SetFavIcon( id = thumbnail_db_->AddFavIcon(icon_url); // Set the image data. - thumbnail_db_->SetFavIcon(id, data->data, Time::Now()); + thumbnail_db_->SetFavIcon(id, data, Time::Now()); SetFavIconMapping(page_url, id); } diff --git a/chrome/browser/history/history_backend.h b/chrome/browser/history/history_backend.h index 34817a7..cfd1637 100644 --- a/chrome/browser/history/history_backend.h +++ b/chrome/browser/history/history_backend.h @@ -191,7 +191,7 @@ class HistoryBackend : public base::RefCountedThreadSafe<HistoryBackend>, const GURL& page_url); void SetFavIcon(const GURL& page_url, const GURL& icon_url, - scoped_refptr<RefCountedBytes> data); + scoped_refptr<RefCountedMemory> data); void UpdateFavIconMappingAndFetch(scoped_refptr<GetFavIconRequest> request, const GURL& page_url, const GURL& icon_url); diff --git a/chrome/browser/history/history_backend_unittest.cc b/chrome/browser/history/history_backend_unittest.cc index e1c8d47..5be4a77 100644 --- a/chrome/browser/history/history_backend_unittest.cc +++ b/chrome/browser/history/history_backend_unittest.cc @@ -6,6 +6,7 @@ #include "base/file_path.h" #include "base/file_util.h" #include "base/path_service.h" +#include "base/ref_counted.h" #include "base/scoped_ptr.h" #include "chrome/browser/bookmarks/bookmark_model.h" #include "chrome/browser/history/history_backend.h" @@ -183,12 +184,12 @@ TEST_F(HistoryBackendTest, DeleteAll) { std::vector<unsigned char> data; data.push_back('1'); - EXPECT_TRUE(backend_->thumbnail_db_->SetFavIcon( - favicon1, data, Time::Now())); + EXPECT_TRUE(backend_->thumbnail_db_->SetFavIcon(favicon1, + new RefCountedBytes(data), Time::Now())); data[0] = '2'; EXPECT_TRUE(backend_->thumbnail_db_->SetFavIcon( - favicon2, data, Time::Now())); + favicon2, new RefCountedBytes(data), Time::Now())); // First visit two URLs. URLRow row1(GURL("http://www.google.com/")); @@ -311,11 +312,11 @@ TEST_F(HistoryBackendTest, URLsNoLongerBookmarked) { std::vector<unsigned char> data; data.push_back('1'); EXPECT_TRUE(backend_->thumbnail_db_->SetFavIcon( - favicon1, data, Time::Now())); + favicon1, new RefCountedBytes(data), Time::Now())); data[0] = '2'; EXPECT_TRUE(backend_->thumbnail_db_->SetFavIcon( - favicon2, data, Time::Now())); + favicon2, new RefCountedBytes(data), Time::Now())); // First visit two URLs. URLRow row1(GURL("http://www.google.com/")); @@ -509,7 +510,8 @@ TEST_F(HistoryBackendTest, ImportedFaviconsTest) { FavIconID favicon1 = backend_->thumbnail_db_->AddFavIcon(favicon_url1); std::vector<unsigned char> data; data.push_back('1'); - EXPECT_TRUE(backend_->thumbnail_db_->SetFavIcon(favicon1, data, Time::Now())); + EXPECT_TRUE(backend_->thumbnail_db_->SetFavIcon(favicon1, + RefCountedBytes::TakeVector(&data), Time::Now())); URLRow row1(GURL("http://www.google.com/")); row1.set_favicon_id(favicon1); row1.set_visit_count(1); diff --git a/chrome/browser/history/thumbnail_database.cc b/chrome/browser/history/thumbnail_database.cc index 4e6f372..9fab35c 100644 --- a/chrome/browser/history/thumbnail_database.cc +++ b/chrome/browser/history/thumbnail_database.cc @@ -11,6 +11,7 @@ #if defined(OS_MACOSX) #include "base/mac_util.h" #endif +#include "base/ref_counted_memory.h" #include "base/time.h" #include "base/string_util.h" #include "chrome/browser/diagnostics/sqlite_diagnostics.h" @@ -305,17 +306,17 @@ bool ThumbnailDatabase::ThumbnailScoreForId(URLID id, } bool ThumbnailDatabase::SetFavIcon(URLID icon_id, - const std::vector<unsigned char>& icon_data, + scoped_refptr<RefCountedMemory> icon_data, base::Time time) { DCHECK(icon_id); - if (icon_data.size()) { + if (icon_data->size()) { sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE, "UPDATE favicons SET image_data=?, last_updated=? WHERE id=?")); if (!statement) return 0; - statement.BindBlob(0, &icon_data.front(), - static_cast<int>(icon_data.size())); + statement.BindBlob(0, icon_data->front(), + static_cast<int>(icon_data->size())); statement.BindInt64(1, time.ToTimeT()); statement.BindInt64(2, icon_id); return statement.Run(); diff --git a/chrome/browser/history/thumbnail_database.h b/chrome/browser/history/thumbnail_database.h index 362edec..fb24357 100644 --- a/chrome/browser/history/thumbnail_database.h +++ b/chrome/browser/history/thumbnail_database.h @@ -10,11 +10,13 @@ #include "app/sql/connection.h" #include "app/sql/init_status.h" #include "app/sql/meta_table.h" +#include "base/ref_counted.h" #include "chrome/browser/history/history_types.h" #include "chrome/browser/history/url_database.h" // For DBCloseScoper. #include "chrome/browser/meta_table_helper.h" class FilePath; +class RefCountedMemory; struct ThumbnailScore; class SkBitmap; @@ -88,7 +90,7 @@ class ThumbnailDatabase { // The time indicates the access time, and is used to detect when the favicon // should be refreshed. bool SetFavIcon(FavIconID icon_id, - const std::vector<unsigned char>& icon_data, + scoped_refptr<RefCountedMemory> icon_data, base::Time time); // Sets the time the favicon was last updated. |