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

Side by Side Diff: chrome/renderer/chrome_render_view_observer.cc

Issue 7032013: Adapt to new icon interface from WebFrame (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Created 9 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/renderer/chrome_render_view_observer.h ('k') | content/renderer/render_view.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/renderer/chrome_render_view_observer.h" 5 #include "chrome/renderer/chrome_render_view_observer.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "chrome/common/chrome_constants.h"
10 #include "chrome/common/chrome_switches.h" 11 #include "chrome/common/chrome_switches.h"
11 #include "chrome/common/icon_messages.h" 12 #include "chrome/common/icon_messages.h"
12 #include "chrome/common/render_messages.h" 13 #include "chrome/common/render_messages.h"
13 #include "chrome/common/thumbnail_score.h" 14 #include "chrome/common/thumbnail_score.h"
14 #include "chrome/common/url_constants.h" 15 #include "chrome/common/url_constants.h"
15 #include "chrome/renderer/about_handler.h" 16 #include "chrome/renderer/about_handler.h"
16 #include "chrome/renderer/content_settings_observer.h" 17 #include "chrome/renderer/content_settings_observer.h"
17 #include "chrome/renderer/automation/dom_automation_controller.h" 18 #include "chrome/renderer/automation/dom_automation_controller.h"
18 #include "chrome/renderer/extensions/extension_dispatcher.h" 19 #include "chrome/renderer/extensions/extension_dispatcher.h"
19 #include "chrome/renderer/external_host_bindings.h" 20 #include "chrome/renderer/external_host_bindings.h"
(...skipping 23 matching lines...) Expand all
43 #include "ui/gfx/skbitmap_operations.h" 44 #include "ui/gfx/skbitmap_operations.h"
44 #include "webkit/glue/dom_operations.h" 45 #include "webkit/glue/dom_operations.h"
45 #include "webkit/glue/image_decoder.h" 46 #include "webkit/glue/image_decoder.h"
46 #include "webkit/glue/image_resource_fetcher.h" 47 #include "webkit/glue/image_resource_fetcher.h"
47 #include "webkit/glue/webkit_glue.h" 48 #include "webkit/glue/webkit_glue.h"
48 #include "v8/include/v8-testing.h" 49 #include "v8/include/v8-testing.h"
49 50
50 using WebKit::WebCString; 51 using WebKit::WebCString;
51 using WebKit::WebDataSource; 52 using WebKit::WebDataSource;
52 using WebKit::WebFrame; 53 using WebKit::WebFrame;
54 using WebKit::WebIconURL;
53 using WebKit::WebPageSerializer; 55 using WebKit::WebPageSerializer;
54 using WebKit::WebPageSerializerClient; 56 using WebKit::WebPageSerializerClient;
55 using WebKit::WebRect; 57 using WebKit::WebRect;
56 using WebKit::WebSecurityOrigin; 58 using WebKit::WebSecurityOrigin;
57 using WebKit::WebSize; 59 using WebKit::WebSize;
58 using WebKit::WebString; 60 using WebKit::WebString;
59 using WebKit::WebURL; 61 using WebKit::WebURL;
60 using WebKit::WebURLRequest; 62 using WebKit::WebURLRequest;
61 using WebKit::WebView; 63 using WebKit::WebView;
62 using WebKit::WebVector; 64 using WebKit::WebVector;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 // bitmap are all the same brightness. 108 // bitmap are all the same brightness.
107 static double CalculateBoringScore(SkBitmap* bitmap) { 109 static double CalculateBoringScore(SkBitmap* bitmap) {
108 int histogram[256] = {0}; 110 int histogram[256] = {0};
109 color_utils::BuildLumaHistogram(bitmap, histogram); 111 color_utils::BuildLumaHistogram(bitmap, histogram);
110 112
111 int color_count = *std::max_element(histogram, histogram + 256); 113 int color_count = *std::max_element(histogram, histogram + 256);
112 int pixel_count = bitmap->width() * bitmap->height(); 114 int pixel_count = bitmap->width() * bitmap->height();
113 return static_cast<double>(color_count) / pixel_count; 115 return static_cast<double>(color_count) / pixel_count;
114 } 116 }
115 117
118 static FaviconURL::IconType ToFaviconType(WebIconURL::Type type) {
119 switch (type) {
120 case WebIconURL::TypeFavicon :
sky 2011/05/17 16:08:50 no spaces between type and colon (here and on all
121 return FaviconURL::FAVICON;
122 case WebIconURL::TypeTouch :
123 return FaviconURL::TOUCH_ICON;
124 case WebIconURL::TypeTouchPrecomposed :
125 return FaviconURL::TOUCH_PRECOMPOSED_ICON;
126 case WebIconURL::TypeInvalid :
127 return FaviconURL::INVALID_ICON;
128 }
129 return FaviconURL::INVALID_ICON;
130 }
131
116 ChromeRenderViewObserver::ChromeRenderViewObserver( 132 ChromeRenderViewObserver::ChromeRenderViewObserver(
117 RenderView* render_view, 133 RenderView* render_view,
118 ContentSettingsObserver* content_settings, 134 ContentSettingsObserver* content_settings,
119 ExtensionDispatcher* extension_dispatcher, 135 ExtensionDispatcher* extension_dispatcher,
120 TranslateHelper* translate_helper, 136 TranslateHelper* translate_helper,
121 safe_browsing::PhishingClassifierDelegate* phishing_classifier) 137 safe_browsing::PhishingClassifierDelegate* phishing_classifier)
122 : RenderViewObserver(render_view), 138 : RenderViewObserver(render_view),
123 content_settings_(content_settings), 139 content_settings_(content_settings),
124 extension_dispatcher_(extension_dispatcher), 140 extension_dispatcher_(extension_dispatcher),
125 translate_helper_(translate_helper), 141 translate_helper_(translate_helper),
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 render_view()->content_state_immediately() ? 0 : kDelayForCaptureMs); 399 render_view()->content_state_immediately() ? 0 : kDelayForCaptureMs);
384 400
385 GURL osd_url = 401 GURL osd_url =
386 render_view()->webview()->mainFrame()->openSearchDescriptionURL(); 402 render_view()->webview()->mainFrame()->openSearchDescriptionURL();
387 if (!osd_url.is_empty()) { 403 if (!osd_url.is_empty()) {
388 Send(new ViewHostMsg_PageHasOSDD( 404 Send(new ViewHostMsg_PageHasOSDD(
389 routing_id(), render_view()->page_id(), osd_url, 405 routing_id(), render_view()->page_id(), osd_url,
390 search_provider::AUTODETECTED_PROVIDER)); 406 search_provider::AUTODETECTED_PROVIDER));
391 } 407 }
392 408
393 // TODO : Get both favicon and touch icon url, and send them to the browser. 409 int icon_types = WebIconURL::TypeFavicon;
394 GURL favicon_url(render_view()->webview()->mainFrame()->favIconURL()); 410 if (chrome::kEnableTouchIcon)
395 if (!favicon_url.is_empty()) { 411 icon_types |= WebIconURL::TypeTouchPrecomposed | WebIconURL::TypeTouch;
396 std::vector<FaviconURL> urls; 412
397 urls.push_back(FaviconURL(favicon_url, FaviconURL::FAVICON)); 413 WebVector<WebIconURL> icon_urls =
414 render_view()->webview()->mainFrame()->iconURLs(icon_types);
415 std::vector<FaviconURL> urls;
416 for (size_t i = 0; i < icon_urls.size(); i++) {
417 WebURL url = icon_urls[i].iconURL();
418 if (!url.isEmpty())
419 urls.push_back(FaviconURL(url, ToFaviconType(icon_urls[i].iconType())));
420 }
421 if (!urls.empty()) {
398 Send(new IconHostMsg_UpdateFaviconURL( 422 Send(new IconHostMsg_UpdateFaviconURL(
399 routing_id(), render_view()->page_id(), urls)); 423 routing_id(), render_view()->page_id(), urls));
400 } 424 }
401 } 425 }
402 426
403 void ChromeRenderViewObserver::DidChangeIcons(WebFrame* frame) { 427 void ChromeRenderViewObserver::DidChangeIcon(WebFrame* frame,
428 WebIconURL::Type icon_type) {
404 if (frame->parent()) 429 if (frame->parent())
405 return; 430 return;
406 431
432 if (!chrome::kEnableTouchIcon &&
433 icon_type != WebIconURL::TypeFavicon)
434 return;
435
436 WebVector<WebIconURL> icon_urls = frame->iconURLs(icon_type);
407 std::vector<FaviconURL> urls; 437 std::vector<FaviconURL> urls;
408 urls.push_back(FaviconURL(frame->favIconURL(), FaviconURL::FAVICON)); 438 for (size_t i = 0; i < icon_urls.size(); i++) {
439 urls.push_back(FaviconURL(icon_urls[i].iconURL(),
440 ToFaviconType(icon_urls[i].iconType())));
441 }
409 Send(new IconHostMsg_UpdateFaviconURL( 442 Send(new IconHostMsg_UpdateFaviconURL(
410 routing_id(), render_view()->page_id(), urls)); 443 routing_id(), render_view()->page_id(), urls));
411 } 444 }
412 445
413 void ChromeRenderViewObserver::DidCommitProvisionalLoad( 446 void ChromeRenderViewObserver::DidCommitProvisionalLoad(
414 WebFrame* frame, bool is_new_navigation) { 447 WebFrame* frame, bool is_new_navigation) {
415 if (!is_new_navigation) 448 if (!is_new_navigation)
416 return; 449 return;
417 450
418 MessageLoop::current()->PostDelayedTask( 451 MessageLoop::current()->PostDelayedTask(
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 if (net::DataURL::Parse(url, &mime_type, &char_set, &data) && !data.empty()) { 729 if (net::DataURL::Parse(url, &mime_type, &char_set, &data) && !data.empty()) {
697 // Decode the favicon using WebKit's image decoder. 730 // Decode the favicon using WebKit's image decoder.
698 webkit_glue::ImageDecoder decoder(gfx::Size(kFaviconSize, kFaviconSize)); 731 webkit_glue::ImageDecoder decoder(gfx::Size(kFaviconSize, kFaviconSize));
699 const unsigned char* src_data = 732 const unsigned char* src_data =
700 reinterpret_cast<const unsigned char*>(&data[0]); 733 reinterpret_cast<const unsigned char*>(&data[0]);
701 734
702 return decoder.Decode(src_data, data.size()); 735 return decoder.Decode(src_data, data.size());
703 } 736 }
704 return SkBitmap(); 737 return SkBitmap();
705 } 738 }
OLDNEW
« no previous file with comments | « chrome/renderer/chrome_render_view_observer.h ('k') | content/renderer/render_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698