summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authormeelapshah@chromium.org <meelapshah@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-26 22:56:46 +0000
committermeelapshah@chromium.org <meelapshah@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-26 22:56:46 +0000
commit2a58420b7c51fc7649d88b475a324385683c4106 (patch)
tree9e5d3a16e9ebc36d6c39828bcd000c18ebc9907e /chrome
parent0d63354d16ebf48e0fcd105db1fc7e421ba9b3fe (diff)
downloadchromium_src-2a58420b7c51fc7649d88b475a324385683c4106.zip
chromium_src-2a58420b7c51fc7649d88b475a324385683c4106.tar.gz
chromium_src-2a58420b7c51fc7649d88b475a324385683c4106.tar.bz2
WriteThumbnailToDisk runs on a bg thread so it cannot access the cache_ directly.
Instead, pass the data to be written to disk so no cache_ lookups are necessary. Review URL: http://codereview.chromium.org/149105 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19435 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/thumbnail_store.cc9
-rw-r--r--chrome/browser/thumbnail_store.h4
-rw-r--r--chrome/browser/thumbnail_store_unittest.cc8
3 files changed, 15 insertions, 6 deletions
diff --git a/chrome/browser/thumbnail_store.cc b/chrome/browser/thumbnail_store.cc
index 43c088d..6acc551 100644
--- a/chrome/browser/thumbnail_store.cc
+++ b/chrome/browser/thumbnail_store.cc
@@ -165,16 +165,17 @@ bool ThumbnailStore::SetPageThumbnail(const GURL& url,
// Write the new thumbnail data to disk in the background on file_thread.
if (write_to_disk) {
g_browser_process->file_thread()->message_loop()->PostTask(FROM_HERE,
- NewRunnableMethod(this, &ThumbnailStore::WriteThumbnailToDisk, url));
+ NewRunnableMethod(this, &ThumbnailStore::WriteThumbnailToDisk, url,
+ jpeg_data, score));
}
return true;
}
-bool ThumbnailStore::WriteThumbnailToDisk(const GURL& url) const {
+bool ThumbnailStore::WriteThumbnailToDisk(const GURL& url,
+ scoped_refptr<RefCountedBytes> data,
+ const ThumbnailScore& score) const {
Pickle packed;
FilePath file = file_path_.AppendASCII(MD5String(url.spec()));
- scoped_refptr<RefCountedBytes> data((*cache_)[url].first);
- ThumbnailScore score = (*cache_)[url].second;
// Pack the url, ThumbnailScore, and the JPEG data.
packed.WriteString(url.spec());
diff --git a/chrome/browser/thumbnail_store.h b/chrome/browser/thumbnail_store.h
index 40e6033..5c6bfe4 100644
--- a/chrome/browser/thumbnail_store.h
+++ b/chrome/browser/thumbnail_store.h
@@ -117,7 +117,9 @@ class ThumbnailStore : public base::RefCountedThreadSafe<ThumbnailStore> {
void OnDiskDataAvailable(ThumbnailStore::Cache* cache);
// Write thumbnail data to disk for a given url.
- bool WriteThumbnailToDisk(const GURL& url) const;
+ bool WriteThumbnailToDisk(const GURL& url,
+ scoped_refptr<RefCountedBytes> data,
+ const ThumbnailScore& score) const;
// Pack the given ThumbnailScore into the given Pickle.
void PackScore(const ThumbnailScore& score, Pickle* packed) const;
diff --git a/chrome/browser/thumbnail_store_unittest.cc b/chrome/browser/thumbnail_store_unittest.cc
index 7f24be2..d9ce619 100644
--- a/chrome/browser/thumbnail_store_unittest.cc
+++ b/chrome/browser/thumbnail_store_unittest.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include <string.h>
+#include <algorithm>
#include <iostream>
#include <vector>
@@ -200,7 +201,12 @@ TEST_F(ThumbnailStoreTest, RetrieveFromDisk) {
// Store a thumbnail onto the disk and retrieve it.
EXPECT_TRUE(store->SetPageThumbnail(url1_, *google_, score1_, false));
- EXPECT_TRUE(store->WriteThumbnailToDisk(url1_));
+
+ ThumbnailStore::Cache::iterator it = store->cache_->find(url1_);
+ DCHECK(it != store->cache_->end());
+
+ EXPECT_TRUE(store->WriteThumbnailToDisk(url1_, it->second.first,
+ it->second.second));
EXPECT_TRUE(store->GetPageThumbnailFromDisk(file_path_.AppendASCII(
MD5String(url1_.spec())), &url2_, read_image, &score2));
EXPECT_TRUE(url1_ == url2_);