Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(906)

Unified Diff: content/renderer/favicon_helper.cc

Issue 12780024: Split FaviconHelper in two: ImageLoadingHelper and FaviconHelper (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed android build Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/favicon_helper.cc
diff --git a/content/renderer/favicon_helper.cc b/content/renderer/favicon_helper.cc
index 1c00eb5797d24a11eeefbb440bb7ab7f62f1b248..a5cd40b167e393fbd901fdfff6f40c7256316b39 100644
--- a/content/renderer/favicon_helper.cc
+++ b/content/renderer/favicon_helper.cc
@@ -5,29 +5,16 @@
#include "content/renderer/favicon_helper.h"
#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/message_loop.h"
#include "content/common/icon_messages.h"
#include "content/public/renderer/render_view.h"
-#include "net/base/data_url.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebURLRequest.h"
#include "third_party/WebKit/Source/Platform/chromium/public/WebVector.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
-#include "ui/base/ui_base_switches.h"
-#include "ui/gfx/favicon_size.h"
-#include "ui/gfx/size.h"
-#include "ui/gfx/skbitmap_operations.h"
-#include "webkit/glue/image_decoder.h"
-#include "webkit/glue/multi_resolution_image_resource_fetcher.h"
-#include "webkit/glue/webkit_glue.h"
using WebKit::WebFrame;
using WebKit::WebIconURL;
using WebKit::WebVector;
using WebKit::WebURL;
-using WebKit::WebURLRequest;
-using webkit_glue::MultiResolutionImageResourceFetcher;
namespace content {
@@ -83,78 +70,6 @@ void FaviconHelper::DidChangeIcon(WebKit::WebFrame* frame,
FaviconHelper::~FaviconHelper() {
}
-void FaviconHelper::OnDownloadFavicon(int id,
- const GURL& image_url,
- int image_size) {
- std::vector<SkBitmap> result_images;
- if (image_url.SchemeIs("data")) {
- SkBitmap data_image = ImageFromDataUrl(image_url);
- if (!data_image.empty())
- result_images.push_back(data_image);
- } else {
- if (DownloadFavicon(id, image_url, image_size)) {
- // Will complete asynchronously via FaviconHelper::DidDownloadFavicon
- return;
- }
- }
-
- Send(new IconHostMsg_DidDownloadFavicon(routing_id(),
- id,
- image_url,
- image_size,
- result_images));
-}
-
-bool FaviconHelper::DownloadFavicon(int id,
- const GURL& image_url,
- int image_size) {
- // Make sure webview was not shut down.
- if (!render_view()->GetWebView())
- return false;
- // Create an image resource fetcher and assign it with a call back object.
- image_fetchers_.push_back(new MultiResolutionImageResourceFetcher(
- image_url, render_view()->GetWebView()->mainFrame(), id,
- WebURLRequest::TargetIsFavicon,
- base::Bind(&FaviconHelper::DidDownloadFavicon,
- base::Unretained(this), image_size)));
- return true;
-}
-
-void FaviconHelper::DidDownloadFavicon(
- int requested_size,
- MultiResolutionImageResourceFetcher* fetcher,
- const std::vector<SkBitmap>& images) {
- // Notify requester of image download status.
- Send(new IconHostMsg_DidDownloadFavicon(routing_id(),
- fetcher->id(),
- fetcher->image_url(),
- requested_size,
- images));
-
- // Remove the image fetcher from our pending list. We're in the callback from
- // MultiResolutionImageResourceFetcher, best to delay deletion.
- ImageResourceFetcherList::iterator iter =
- std::find(image_fetchers_.begin(), image_fetchers_.end(), fetcher);
- if (iter != image_fetchers_.end()) {
- image_fetchers_.weak_erase(iter);
- MessageLoop::current()->DeleteSoon(FROM_HERE, fetcher);
- }
-}
-
-SkBitmap FaviconHelper::ImageFromDataUrl(const GURL& url) const {
- std::string mime_type, char_set, data;
- if (net::DataURL::Parse(url, &mime_type, &char_set, &data) && !data.empty()) {
- // Decode the favicon using WebKit's image decoder.
- webkit_glue::ImageDecoder decoder(
- gfx::Size(gfx::kFaviconSize, gfx::kFaviconSize));
- const unsigned char* src_data =
- reinterpret_cast<const unsigned char*>(&data[0]);
-
- return decoder.Decode(src_data, data.size());
- }
- return SkBitmap();
-}
-
void FaviconHelper::SendUpdateFaviconURL(int32 routing_id,
int32 page_id,
const std::vector<FaviconURL>& urls) {
@@ -162,16 +77,6 @@ void FaviconHelper::SendUpdateFaviconURL(int32 routing_id,
Send(new IconHostMsg_UpdateFaviconURL(routing_id, page_id, urls));
}
-bool FaviconHelper::OnMessageReceived(const IPC::Message& message) {
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(FaviconHelper, message)
- IPC_MESSAGE_HANDLER(IconMsg_DownloadFavicon, OnDownloadFavicon)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
-
- return handled;
-}
-
void FaviconHelper::DidStopLoading() {
int icon_types = WebIconURL::TypeFavicon;
if (TouchEnabled())

Powered by Google App Engine
This is Rietveld 408576698