| OLD | NEW |
| 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 800 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 811 } | 811 } |
| 812 } | 812 } |
| 813 | 813 |
| 814 bool ChromeRenderViewObserver::CaptureSnapshot(WebView* view, | 814 bool ChromeRenderViewObserver::CaptureSnapshot(WebView* view, |
| 815 SkBitmap* snapshot) { | 815 SkBitmap* snapshot) { |
| 816 base::TimeTicks beginning_time = base::TimeTicks::Now(); | 816 base::TimeTicks beginning_time = base::TimeTicks::Now(); |
| 817 | 817 |
| 818 view->layout(); | 818 view->layout(); |
| 819 const WebSize& size = view->size(); | 819 const WebSize& size = view->size(); |
| 820 | 820 |
| 821 SkCanvas* canvas = skia::CreatePlatformCanvas(size.width, size.height, true, | 821 skia::RefPtr<SkCanvas> canvas = skia::CreatePlatformCanvas( |
| 822 NULL, skia::RETURN_NULL_ON_FAILURE); | 822 size.width, size.height, true, NULL, skia::RETURN_NULL_ON_FAILURE); |
| 823 if (!canvas) | 823 if (!canvas) |
| 824 return false; | 824 return false; |
| 825 | 825 |
| 826 SkAutoUnref au(canvas); | 826 view->paint(webkit_glue::ToWebCanvas(canvas.get()), |
| 827 view->paint(webkit_glue::ToWebCanvas(canvas), | |
| 828 WebRect(0, 0, size.width, size.height)); | 827 WebRect(0, 0, size.width, size.height)); |
| 829 // TODO: Add a way to snapshot the whole page, not just the currently | 828 // TODO: Add a way to snapshot the whole page, not just the currently |
| 830 // visible part. | 829 // visible part. |
| 831 | 830 |
| 832 SkDevice* device = skia::GetTopDevice(*canvas); | 831 SkDevice* device = skia::GetTopDevice(*canvas); |
| 833 | 832 |
| 834 const SkBitmap& bitmap = device->accessBitmap(false); | 833 const SkBitmap& bitmap = device->accessBitmap(false); |
| 835 if (!bitmap.copyTo(snapshot, SkBitmap::kARGB_8888_Config)) | 834 if (!bitmap.copyTo(snapshot, SkBitmap::kARGB_8888_Config)) |
| 836 return false; | 835 return false; |
| 837 | 836 |
| 838 HISTOGRAM_TIMES("Renderer4.Snapshot", | 837 HISTOGRAM_TIMES("Renderer4.Snapshot", |
| 839 base::TimeTicks::Now() - beginning_time); | 838 base::TimeTicks::Now() - beginning_time); |
| 840 return true; | 839 return true; |
| 841 } | 840 } |
| 842 | 841 |
| 843 ExternalHostBindings* ChromeRenderViewObserver::GetExternalHostBindings() { | 842 ExternalHostBindings* ChromeRenderViewObserver::GetExternalHostBindings() { |
| 844 if (!external_host_bindings_.get()) { | 843 if (!external_host_bindings_.get()) { |
| 845 external_host_bindings_.reset(new ExternalHostBindings( | 844 external_host_bindings_.reset(new ExternalHostBindings( |
| 846 render_view(), routing_id())); | 845 render_view(), routing_id())); |
| 847 } | 846 } |
| 848 return external_host_bindings_.get(); | 847 return external_host_bindings_.get(); |
| 849 } | 848 } |
| 850 | 849 |
| 851 bool ChromeRenderViewObserver::IsStrictSecurityHost(const std::string& host) { | 850 bool ChromeRenderViewObserver::IsStrictSecurityHost(const std::string& host) { |
| 852 return (strict_security_hosts_.find(host) != strict_security_hosts_.end()); | 851 return (strict_security_hosts_.find(host) != strict_security_hosts_.end()); |
| 853 } | 852 } |
| OLD | NEW |