| 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/favicon/favicon_handler.h" | 5 #include "chrome/browser/favicon/favicon_handler.h" |
| 6 #include "chrome/browser/profiles/profile.h" | 6 #include "chrome/browser/profiles/profile.h" |
| 7 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 7 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
| 8 #include "content/browser/tab_contents/test_tab_contents.h" | 8 #include "content/browser/tab_contents/test_tab_contents.h" |
| 9 #include "content/public/browser/navigation_entry.h" | 9 #include "content/public/browser/navigation_entry.h" |
| 10 #include "content/public/browser/favicon_status.h" | 10 #include "content/public/browser/favicon_status.h" |
| 11 #include "ui/gfx/codec/png_codec.h" | 11 #include "ui/gfx/codec/png_codec.h" |
| 12 #include "ui/gfx/favicon_size.h" | 12 #include "ui/gfx/favicon_size.h" |
| 13 #include "ui/gfx/image/image.h" | 13 #include "ui/gfx/image/image.h" |
| 14 | 14 |
| 15 class TestFaviconHandler; | 15 class TestFaviconHandler; |
| 16 | 16 |
| 17 using content::NavigationEntry; |
| 18 |
| 17 namespace { | 19 namespace { |
| 18 | 20 |
| 19 // Fill the given bmp with valid png data. | 21 // Fill the given bmp with valid png data. |
| 20 void FillDataToBitmap(int w, int h, SkBitmap* bmp) { | 22 void FillDataToBitmap(int w, int h, SkBitmap* bmp) { |
| 21 bmp->setConfig(SkBitmap::kARGB_8888_Config, w, h); | 23 bmp->setConfig(SkBitmap::kARGB_8888_Config, w, h); |
| 22 bmp->allocPixels(); | 24 bmp->allocPixels(); |
| 23 | 25 |
| 24 unsigned char* src_data = | 26 unsigned char* src_data = |
| 25 reinterpret_cast<unsigned char*>(bmp->getAddr32(0, 0)); | 27 reinterpret_cast<unsigned char*>(bmp->getAddr32(0, 0)); |
| 26 for (int i = 0; i < w * h; i++) { | 28 for (int i = 0; i < w * h; i++) { |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 // the various delegate methods. Most of these methods are actually never | 129 // the various delegate methods. Most of these methods are actually never |
| 128 // called. | 130 // called. |
| 129 // TODO(rohitrao): Refactor the tests to override these delegate methods instead | 131 // TODO(rohitrao): Refactor the tests to override these delegate methods instead |
| 130 // of subclassing. | 132 // of subclassing. |
| 131 class TestFaviconHandlerDelegate : public FaviconHandlerDelegate { | 133 class TestFaviconHandlerDelegate : public FaviconHandlerDelegate { |
| 132 public: | 134 public: |
| 133 explicit TestFaviconHandlerDelegate(TabContents* tab_contents) | 135 explicit TestFaviconHandlerDelegate(TabContents* tab_contents) |
| 134 : tab_contents_(tab_contents) { | 136 : tab_contents_(tab_contents) { |
| 135 } | 137 } |
| 136 | 138 |
| 137 virtual content::NavigationEntry* GetActiveEntry() { | 139 virtual NavigationEntry* GetActiveEntry() { |
| 138 ADD_FAILURE() << "TestFaviconHandlerDelegate::GetActiveEntry() " | 140 ADD_FAILURE() << "TestFaviconHandlerDelegate::GetActiveEntry() " |
| 139 << "should never be called in tests."; | 141 << "should never be called in tests."; |
| 140 return NULL; | 142 return NULL; |
| 141 } | 143 } |
| 142 | 144 |
| 143 virtual void StartDownload(int id, const GURL& url, int image_size) { | 145 virtual void StartDownload(int id, const GURL& url, int image_size) { |
| 144 ADD_FAILURE() << "TestFaviconHandlerDelegate::StartDownload() " | 146 ADD_FAILURE() << "TestFaviconHandlerDelegate::StartDownload() " |
| 145 << "should never be called in tests."; | 147 << "should never be called in tests."; |
| 146 } | 148 } |
| 147 | 149 |
| 148 virtual void NotifyFaviconUpdated() { | 150 virtual void NotifyFaviconUpdated() { |
| 149 tab_contents_->NotifyNavigationStateChanged(TabContents::INVALIDATE_TAB); | 151 tab_contents_->NotifyNavigationStateChanged(TabContents::INVALIDATE_TAB); |
| 150 } | 152 } |
| 151 | 153 |
| 152 private: | 154 private: |
| 153 TabContents* tab_contents_; // weak | 155 TabContents* tab_contents_; // weak |
| 154 }; | 156 }; |
| 155 | 157 |
| 156 // This class is used to catch the FaviconHandler's download and history | 158 // This class is used to catch the FaviconHandler's download and history |
| 157 // request, and also provide the methods to access the FaviconHandler internal. | 159 // request, and also provide the methods to access the FaviconHandler internal. |
| 158 class TestFaviconHandler : public FaviconHandler { | 160 class TestFaviconHandler : public FaviconHandler { |
| 159 public: | 161 public: |
| 160 TestFaviconHandler(const GURL& page_url, | 162 TestFaviconHandler(const GURL& page_url, |
| 161 Profile* profile, | 163 Profile* profile, |
| 162 FaviconHandlerDelegate* delegate, | 164 FaviconHandlerDelegate* delegate, |
| 163 Type type) | 165 Type type) |
| 164 : FaviconHandler(profile, delegate, type), | 166 : FaviconHandler(profile, delegate, type), |
| 165 download_image_size_(0), | 167 download_image_size_(0), |
| 166 entry_(content::NavigationEntry::Create()), | 168 entry_(NavigationEntry::Create()), |
| 167 download_id_(0) { | 169 download_id_(0) { |
| 168 entry_->SetURL(page_url); | 170 entry_->SetURL(page_url); |
| 169 } | 171 } |
| 170 | 172 |
| 171 virtual ~TestFaviconHandler() { | 173 virtual ~TestFaviconHandler() { |
| 172 } | 174 } |
| 173 | 175 |
| 174 HistoryRequestHandler* history_handler() { | 176 HistoryRequestHandler* history_handler() { |
| 175 return history_handler_.get(); | 177 return history_handler_.get(); |
| 176 } | 178 } |
| 177 | 179 |
| 178 // This method will take the ownership of the given handler. | 180 // This method will take the ownership of the given handler. |
| 179 void set_history_handler(HistoryRequestHandler* handler) { | 181 void set_history_handler(HistoryRequestHandler* handler) { |
| 180 history_handler_.reset(handler); | 182 history_handler_.reset(handler); |
| 181 } | 183 } |
| 182 | 184 |
| 183 DownloadHandler* download_handler() { | 185 DownloadHandler* download_handler() { |
| 184 return download_handler_.get(); | 186 return download_handler_.get(); |
| 185 } | 187 } |
| 186 | 188 |
| 187 // This method will take the ownership of the given download_handler. | 189 // This method will take the ownership of the given download_handler. |
| 188 void set_download_handler(DownloadHandler* download_handler) { | 190 void set_download_handler(DownloadHandler* download_handler) { |
| 189 download_handler_.reset(download_handler); | 191 download_handler_.reset(download_handler); |
| 190 } | 192 } |
| 191 | 193 |
| 192 virtual content::NavigationEntry* GetEntry() { | 194 virtual NavigationEntry* GetEntry() { |
| 193 return entry_.get(); | 195 return entry_.get(); |
| 194 } | 196 } |
| 195 | 197 |
| 196 const std::vector<FaviconURL>& urls() { | 198 const std::vector<FaviconURL>& urls() { |
| 197 return urls_; | 199 return urls_; |
| 198 } | 200 } |
| 199 | 201 |
| 200 void FetchFavicon(const GURL& url) { | 202 void FetchFavicon(const GURL& url) { |
| 201 FaviconHandler::FetchFavicon(url); | 203 FaviconHandler::FetchFavicon(url); |
| 202 } | 204 } |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 virtual bool ShouldSaveFavicon(const GURL& url) OVERRIDE { | 268 virtual bool ShouldSaveFavicon(const GURL& url) OVERRIDE { |
| 267 return true; | 269 return true; |
| 268 } | 270 } |
| 269 | 271 |
| 270 GURL page_url_; | 272 GURL page_url_; |
| 271 | 273 |
| 272 GURL download_image_url_; | 274 GURL download_image_url_; |
| 273 int download_image_size_; | 275 int download_image_size_; |
| 274 | 276 |
| 275 private: | 277 private: |
| 276 scoped_ptr<content::NavigationEntry> entry_; | 278 scoped_ptr<NavigationEntry> entry_; |
| 277 | 279 |
| 278 // The unique id of a download request. It will be returned to a | 280 // The unique id of a download request. It will be returned to a |
| 279 // FaviconHandler. | 281 // FaviconHandler. |
| 280 int download_id_; | 282 int download_id_; |
| 281 | 283 |
| 282 scoped_ptr<DownloadHandler> download_handler_; | 284 scoped_ptr<DownloadHandler> download_handler_; |
| 283 scoped_ptr<HistoryRequestHandler> history_handler_; | 285 scoped_ptr<HistoryRequestHandler> history_handler_; |
| 284 | 286 |
| 285 DISALLOW_COPY_AND_ASSIGN(TestFaviconHandler); | 287 DISALLOW_COPY_AND_ASSIGN(TestFaviconHandler); |
| 286 }; | 288 }; |
| (...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 815 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data()); | 817 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data()); |
| 816 handler->favicon_data_.image_data = data; | 818 handler->favicon_data_.image_data = data; |
| 817 | 819 |
| 818 handler->InvokeCallback(); | 820 handler->InvokeCallback(); |
| 819 | 821 |
| 820 // No download request. | 822 // No download request. |
| 821 EXPECT_FALSE(helper.download_handler()); | 823 EXPECT_FALSE(helper.download_handler()); |
| 822 } | 824 } |
| 823 | 825 |
| 824 } // namespace. | 826 } // namespace. |
| OLD | NEW |