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

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

Issue 11138024: Simplify platform_canvas.h by recognizing that PlatformCanvas does not actually extend (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 1 month 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 INSECURE_CONTENT_DISPLAY_HOST_GOOGLE_SUPPORT, 143 INSECURE_CONTENT_DISPLAY_HOST_GOOGLE_SUPPORT,
144 INSECURE_CONTENT_RUN_HOST_GOOGLE_SUPPORT, 144 INSECURE_CONTENT_RUN_HOST_GOOGLE_SUPPORT,
145 INSECURE_CONTENT_DISPLAY_HOST_GOOGLE_INTL, 145 INSECURE_CONTENT_DISPLAY_HOST_GOOGLE_INTL,
146 INSECURE_CONTENT_RUN_HOST_GOOGLE_INTL, 146 INSECURE_CONTENT_RUN_HOST_GOOGLE_INTL,
147 INSECURE_CONTENT_NUM_EVENTS 147 INSECURE_CONTENT_NUM_EVENTS
148 }; 148 };
149 149
150 // Constants for mixed-content blocking. 150 // Constants for mixed-content blocking.
151 static const char kGoogleDotCom[] = "google.com"; 151 static const char kGoogleDotCom[] = "google.com";
152 152
153 static bool PaintViewIntoCanvas(WebView* view,
154 skia::PlatformCanvas& canvas) {
155 view->layout();
156 const WebSize& size = view->size();
157
158 if (!canvas.initialize(size.width, size.height, true))
159 return false;
160
161 view->paint(webkit_glue::ToWebCanvas(&canvas),
162 WebRect(0, 0, size.width, size.height));
163 // TODO: Add a way to snapshot the whole page, not just the currently
164 // visible part.
165
166 return true;
167 }
168
169 static FaviconURL::IconType ToFaviconType(WebIconURL::Type type) { 153 static FaviconURL::IconType ToFaviconType(WebIconURL::Type type) {
170 switch (type) { 154 switch (type) {
171 case WebIconURL::TypeFavicon: 155 case WebIconURL::TypeFavicon:
172 return FaviconURL::FAVICON; 156 return FaviconURL::FAVICON;
173 case WebIconURL::TypeTouch: 157 case WebIconURL::TypeTouch:
174 return FaviconURL::TOUCH_ICON; 158 return FaviconURL::TOUCH_ICON;
175 case WebIconURL::TypeTouchPrecomposed: 159 case WebIconURL::TypeTouchPrecomposed:
176 return FaviconURL::TOUCH_PRECOMPOSED_ICON; 160 return FaviconURL::TOUCH_PRECOMPOSED_ICON;
177 case WebIconURL::TypeInvalid: 161 case WebIconURL::TypeInvalid:
178 return FaviconURL::INVALID_ICON; 162 return FaviconURL::INVALID_ICON;
(...skipping 718 matching lines...) Expand 10 before | Expand all | Expand 10 after
897 if (last_space_index == std::wstring::npos) 881 if (last_space_index == std::wstring::npos)
898 return; // don't index if we got a huge block of text with no spaces 882 return; // don't index if we got a huge block of text with no spaces
899 contents->resize(last_space_index); 883 contents->resize(last_space_index);
900 } 884 }
901 } 885 }
902 886
903 bool ChromeRenderViewObserver::CaptureSnapshot(WebView* view, 887 bool ChromeRenderViewObserver::CaptureSnapshot(WebView* view,
904 SkBitmap* snapshot) { 888 SkBitmap* snapshot) {
905 base::TimeTicks beginning_time = base::TimeTicks::Now(); 889 base::TimeTicks beginning_time = base::TimeTicks::Now();
906 890
907 skia::PlatformCanvas canvas; 891 view->layout();
908 if (!PaintViewIntoCanvas(view, canvas)) 892 const WebSize& size = view->size();
893
894 SkCanvas* canvas = skia::CreatePlatformCanvas(size.width, size.height, true,
895 NULL, skia::RETURN_NULL_ON_FAILURE);
896 if (!canvas)
909 return false; 897 return false;
910 898
911 SkDevice* device = skia::GetTopDevice(canvas); 899 SkAutoUnref au(canvas);
900 view->paint(webkit_glue::ToWebCanvas(canvas),
901 WebRect(0, 0, size.width, size.height));
902 // TODO: Add a way to snapshot the whole page, not just the currently
903 // visible part.
904
905 SkDevice* device = skia::GetTopDevice(*canvas);
912 906
913 const SkBitmap& bitmap = device->accessBitmap(false); 907 const SkBitmap& bitmap = device->accessBitmap(false);
914 if (!bitmap.copyTo(snapshot, SkBitmap::kARGB_8888_Config)) 908 if (!bitmap.copyTo(snapshot, SkBitmap::kARGB_8888_Config))
915 return false; 909 return false;
916 910
917 HISTOGRAM_TIMES("Renderer4.Snapshot", 911 HISTOGRAM_TIMES("Renderer4.Snapshot",
918 base::TimeTicks::Now() - beginning_time); 912 base::TimeTicks::Now() - beginning_time);
919 return true; 913 return true;
920 } 914 }
921 915
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
978 reinterpret_cast<const unsigned char*>(&data[0]); 972 reinterpret_cast<const unsigned char*>(&data[0]);
979 973
980 return decoder.Decode(src_data, data.size()); 974 return decoder.Decode(src_data, data.size());
981 } 975 }
982 return SkBitmap(); 976 return SkBitmap();
983 } 977 }
984 978
985 bool ChromeRenderViewObserver::IsStrictSecurityHost(const std::string& host) { 979 bool ChromeRenderViewObserver::IsStrictSecurityHost(const std::string& host) {
986 return (strict_security_hosts_.find(host) != strict_security_hosts_.end()); 980 return (strict_security_hosts_.find(host) != strict_security_hosts_.end());
987 } 981 }
OLDNEW
« no previous file with comments | « chrome/renderer/automation/automation_renderer_helper.cc ('k') | chrome/renderer/safe_browsing/phishing_thumbnailer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698