diff options
author | kkimlabs <kkimlabs@chromium.org> | 2015-04-03 03:08:09 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-03 10:08:37 +0000 |
commit | 16a0d2a22d17e3932432dab4559e63c5134aaccc (patch) | |
tree | cb3602e115c8dc531195283d2c417825005f00ad /components/enhanced_bookmarks/test_image_store.h | |
parent | a4c00a7ec01b3308c98cfad88b4bf3af1b4fde2b (diff) | |
download | chromium_src-16a0d2a22d17e3932432dab4559e63c5134aaccc.zip chromium_src-16a0d2a22d17e3932432dab4559e63c5134aaccc.tar.gz chromium_src-16a0d2a22d17e3932432dab4559e63c5134aaccc.tar.bz2 |
Fix crashes due to gfx::Image unsafe thread passing
gfx::Image has |storage_| member which is base::RefCounted, not thread
safe. Thus passing around gfx::Image to other threads by copying is
incorrect.
Workaround by using scoped_ptr and making ImageRecord class
RefCountedThreadSafe.
Related discussion:
https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/8LqVoXQ_2bo
BUG=471800
Review URL: https://codereview.chromium.org/1031293002
Cr-Commit-Position: refs/heads/master@{#323720}
Diffstat (limited to 'components/enhanced_bookmarks/test_image_store.h')
-rw-r--r-- | components/enhanced_bookmarks/test_image_store.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/components/enhanced_bookmarks/test_image_store.h b/components/enhanced_bookmarks/test_image_store.h index 460a285..e74d25b 100644 --- a/components/enhanced_bookmarks/test_image_store.h +++ b/components/enhanced_bookmarks/test_image_store.h @@ -14,10 +14,12 @@ class TestImageStore : public ImageStore { public: TestImageStore(); bool HasKey(const GURL& page_url) override; - void Insert(const GURL& page_url, - const enhanced_bookmarks::ImageRecord& image) override; + void Insert( + const GURL& page_url, + scoped_refptr<enhanced_bookmarks::ImageRecord> image_record) override; void Erase(const GURL& page_url) override; - enhanced_bookmarks::ImageRecord Get(const GURL& page_url) override; + scoped_refptr<enhanced_bookmarks::ImageRecord> Get( + const GURL& page_url) override; gfx::Size GetSize(const GURL& page_url) override; void GetAllPageUrls(std::set<GURL>* urls) override; void ClearAll() override; @@ -27,7 +29,8 @@ class TestImageStore : public ImageStore { ~TestImageStore() override; private: - typedef std::map<const GURL, enhanced_bookmarks::ImageRecord> ImageMap; + typedef std::map<const GURL, scoped_refptr<enhanced_bookmarks::ImageRecord>> + ImageMap; ImageMap store_; DISALLOW_COPY_AND_ASSIGN(TestImageStore); |