| 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/dom_ui/web_ui_favicon_source.h" | 5 #include "chrome/browser/dom_ui/web_ui_favicon_source.h" |
| 6 | 6 |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "chrome/browser/profiles/profile.h" | 8 #include "chrome/browser/profiles/profile.h" |
| 9 #include "chrome/common/url_constants.h" | 9 #include "chrome/common/url_constants.h" |
| 10 #include "grit/app_resources.h" | 10 #include "grit/app_resources.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 SendResponse(request_id, NULL); | 47 SendResponse(request_id, NULL); |
| 48 } | 48 } |
| 49 } | 49 } |
| 50 | 50 |
| 51 std::string WebUIFavIconSource::GetMimeType(const std::string&) const { | 51 std::string WebUIFavIconSource::GetMimeType(const std::string&) const { |
| 52 // We need to explicitly return a mime type, otherwise if the user tries to | 52 // We need to explicitly return a mime type, otherwise if the user tries to |
| 53 // drag the image they get no extension. | 53 // drag the image they get no extension. |
| 54 return "image/png"; | 54 return "image/png"; |
| 55 } | 55 } |
| 56 | 56 |
| 57 bool WebUIFavIconSource::ShouldReplaceExistingSource() const { |
| 58 // Leave the existing DataSource in place, otherwise we'll drop any pending |
| 59 // requests on the floor. |
| 60 return false; |
| 61 } |
| 62 |
| 57 void WebUIFavIconSource::OnFavIconDataAvailable( | 63 void WebUIFavIconSource::OnFavIconDataAvailable( |
| 58 FaviconService::Handle request_handle, | 64 FaviconService::Handle request_handle, |
| 59 bool know_favicon, | 65 bool know_favicon, |
| 60 scoped_refptr<RefCountedMemory> data, | 66 scoped_refptr<RefCountedMemory> data, |
| 61 bool expired, | 67 bool expired, |
| 62 GURL icon_url) { | 68 GURL icon_url) { |
| 63 FaviconService* favicon_service = | 69 FaviconService* favicon_service = |
| 64 profile_->GetFaviconService(Profile::EXPLICIT_ACCESS); | 70 profile_->GetFaviconService(Profile::EXPLICIT_ACCESS); |
| 65 int request_id = cancelable_consumer_.GetClientData(favicon_service, | 71 int request_id = cancelable_consumer_.GetClientData(favicon_service, |
| 66 request_handle); | 72 request_handle); |
| 67 | 73 |
| 68 if (know_favicon && data.get() && data->size()) { | 74 if (know_favicon && data.get() && data->size()) { |
| 69 // Forward the data along to the networking system. | 75 // Forward the data along to the networking system. |
| 70 SendResponse(request_id, data); | 76 SendResponse(request_id, data); |
| 71 } else { | 77 } else { |
| 72 SendDefaultResponse(request_id); | 78 SendDefaultResponse(request_id); |
| 73 } | 79 } |
| 74 } | 80 } |
| 75 | 81 |
| 76 void WebUIFavIconSource::SendDefaultResponse(int request_id) { | 82 void WebUIFavIconSource::SendDefaultResponse(int request_id) { |
| 77 if (!default_favicon_.get()) { | 83 if (!default_favicon_.get()) { |
| 78 default_favicon_ = | 84 default_favicon_ = |
| 79 ResourceBundle::GetSharedInstance().LoadDataResourceBytes( | 85 ResourceBundle::GetSharedInstance().LoadDataResourceBytes( |
| 80 IDR_DEFAULT_FAVICON); | 86 IDR_DEFAULT_FAVICON); |
| 81 } | 87 } |
| 82 | 88 |
| 83 SendResponse(request_id, default_favicon_); | 89 SendResponse(request_id, default_favicon_); |
| 84 } | 90 } |
| OLD | NEW |