diff options
author | asanka@chromium.org <asanka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-02 17:44:57 +0000 |
---|---|---|
committer | asanka@chromium.org <asanka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-02 17:44:57 +0000 |
commit | c68dd427a84abfddbdf2d357b22c955d5cc55372 (patch) | |
tree | e6bc23402cc8e30703ec7df4c86fc65aa60fc9cb /content | |
parent | 2ffd73d989f9f07df881020d55e2e2e768efda6f (diff) | |
download | chromium_src-c68dd427a84abfddbdf2d357b22c955d5cc55372.zip chromium_src-c68dd427a84abfddbdf2d357b22c955d5cc55372.tar.gz chromium_src-c68dd427a84abfddbdf2d357b22c955d5cc55372.tar.bz2 |
Add a const overload to DownloadItem::GetExternalData().
BUG=78085
TEST=unit_tests
Review URL: http://codereview.chromium.org/9518008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@124678 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r-- | content/browser/download/download_item_impl.cc | 14 | ||||
-rw-r--r-- | content/browser/download/download_item_impl.h | 1 | ||||
-rw-r--r-- | content/browser/download/download_item_impl_unittest.cc | 9 | ||||
-rw-r--r-- | content/public/browser/download_item.h | 3 | ||||
-rw-r--r-- | content/test/mock_download_item.h | 1 |
5 files changed, 24 insertions, 4 deletions
diff --git a/content/browser/download/download_item_impl.cc b/content/browser/download/download_item_impl.cc index dd08306..a8341b1 100644 --- a/content/browser/download/download_item_impl.cc +++ b/content/browser/download/download_item_impl.cc @@ -1131,9 +1131,17 @@ void DownloadItemImpl::MockDownloadOpenForTesting() { open_enabled_ = false; } DownloadItem::ExternalData* DownloadItemImpl::GetExternalData(const void* key) { - if (!ContainsKey(external_data_map_, key)) - return NULL; - return external_data_map_[key]; + // The behavior of the const overload is identical with the exception of the + // constness of |this| and the return value. + return const_cast<DownloadItem::ExternalData*>( + static_cast<const DownloadItemImpl&>(*this).GetExternalData(key)); +} + +const DownloadItem::ExternalData* +DownloadItemImpl::GetExternalData(const void* key) const { + std::map<const void*, ExternalData*>::const_iterator it = + external_data_map_.find(key); + return (it == external_data_map_.end()) ? NULL : it->second; } void DownloadItemImpl::SetExternalData( diff --git a/content/browser/download/download_item_impl.h b/content/browser/download/download_item_impl.h index f034a21..3e00796 100644 --- a/content/browser/download/download_item_impl.h +++ b/content/browser/download/download_item_impl.h @@ -209,6 +209,7 @@ class CONTENT_EXPORT DownloadItemImpl : public content::DownloadItem { virtual std::string DebugString(bool verbose) const OVERRIDE; virtual void MockDownloadOpenForTesting() OVERRIDE; virtual ExternalData* GetExternalData(const void* key) OVERRIDE; + virtual const ExternalData* GetExternalData(const void* key) const OVERRIDE; virtual void SetExternalData(const void* key, ExternalData* data) OVERRIDE; private: diff --git a/content/browser/download/download_item_impl_unittest.cc b/content/browser/download/download_item_impl_unittest.cc index a794d3f..55bad0e 100644 --- a/content/browser/download/download_item_impl_unittest.cc +++ b/content/browser/download/download_item_impl_unittest.cc @@ -294,9 +294,11 @@ class TestExternalData : public DownloadItem::ExternalData { TEST_F(DownloadItemTest, ExternalData) { DownloadItem* item = CreateDownloadItem(DownloadItem::IN_PROGRESS); + const DownloadItem* const_item = item; // Shouldn't be anything there before set. EXPECT_EQ(NULL, item->GetExternalData(&external_data_test_string)); + EXPECT_EQ(NULL, const_item->GetExternalData(&external_data_test_string)); TestExternalData* test1(new TestExternalData()); test1->value = 2; @@ -308,6 +310,13 @@ TEST_F(DownloadItemTest, ExternalData) { item->GetExternalData(&external_data_test_string)); EXPECT_EQ(test1, test_result); + // Ditto for const lookup. + const TestExternalData* test_const_result = + static_cast<const TestExternalData*>( + const_item->GetExternalData(&external_data_test_string)); + EXPECT_EQ(static_cast<const TestExternalData*>(test1), + test_const_result); + // Destructor should be called if value overwritten. New value // should then be retrievable. TestExternalData* test2(new TestExternalData()); diff --git a/content/public/browser/download_item.h b/content/public/browser/download_item.h index 803c6bf..106cfb6 100644 --- a/content/public/browser/download_item.h +++ b/content/public/browser/download_item.h @@ -344,7 +344,8 @@ class CONTENT_EXPORT DownloadItem { // If an object is already held by the DownloadItem associated with // the passed key, it will be destroyed if overwriten by a new pointer // (overwrites by the same pointer are ignored). - virtual ExternalData* GetExternalData(const void* key) = 0; + virtual ExternalData* GetExternalData(const void* key) = 0; + virtual const ExternalData* GetExternalData(const void* key) const = 0; virtual void SetExternalData(const void* key, ExternalData* data) = 0; virtual std::string DebugString(bool verbose) const = 0; diff --git a/content/test/mock_download_item.h b/content/test/mock_download_item.h index ad0378d..c91e94c 100644 --- a/content/test/mock_download_item.h +++ b/content/test/mock_download_item.h @@ -116,6 +116,7 @@ class MockDownloadItem : public content::DownloadItem { MOCK_CONST_METHOD1(DebugString, std::string(bool)); MOCK_METHOD0(MockDownloadOpenForTesting, void()); MOCK_METHOD1(GetExternalData, ExternalData*(const void*)); + MOCK_CONST_METHOD1(GetExternalData, const ExternalData*(const void*)); MOCK_METHOD2(SetExternalData, void(const void*, ExternalData*)); }; |