| OLD | NEW |
| 1 // Copyright (c) 2009 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/tab_contents/thumbnail_generator.h" | 5 #include "chrome/browser/tab_contents/thumbnail_generator.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <map> | 8 #include <map> |
| 9 | 9 |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| 11 #include "base/scoped_ptr.h" | 11 #include "base/scoped_ptr.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 24 #include "gfx/color_utils.h" | 24 #include "gfx/color_utils.h" |
| 25 #include "gfx/rect.h" | 25 #include "gfx/rect.h" |
| 26 #include "gfx/skbitmap_operations.h" | 26 #include "gfx/skbitmap_operations.h" |
| 27 #include "googleurl/src/gurl.h" | 27 #include "googleurl/src/gurl.h" |
| 28 #include "skia/ext/bitmap_platform_device.h" | 28 #include "skia/ext/bitmap_platform_device.h" |
| 29 #include "skia/ext/image_operations.h" | 29 #include "skia/ext/image_operations.h" |
| 30 #include "skia/ext/platform_canvas.h" | 30 #include "skia/ext/platform_canvas.h" |
| 31 #include "third_party/skia/include/core/SkBitmap.h" | 31 #include "third_party/skia/include/core/SkBitmap.h" |
| 32 | 32 |
| 33 #if defined(OS_WIN) | 33 #if defined(OS_WIN) |
| 34 #include "app/win/win_util.h" | 34 #include "chrome/common/section_util_win.h" |
| 35 #endif | 35 #endif |
| 36 | 36 |
| 37 // Overview | 37 // Overview |
| 38 // -------- | 38 // -------- |
| 39 // This class provides current thumbnails for tabs. The simplest operation is | 39 // This class provides current thumbnails for tabs. The simplest operation is |
| 40 // when a request for a thumbnail comes in, to grab the backing store and make | 40 // when a request for a thumbnail comes in, to grab the backing store and make |
| 41 // a smaller version of that. | 41 // a smaller version of that. |
| 42 // | 42 // |
| 43 // A complication happens because we don't always have nice backing stores for | 43 // A complication happens because we don't always have nice backing stores for |
| 44 // all tabs (there is a cache of several tabs we'll keep backing stores for). | 44 // all tabs (there is a cache of several tabs we'll keep backing stores for). |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 // this callback for later lookup when the rendering is done. | 261 // this callback for later lookup when the rendering is done. |
| 262 static int sequence_num = 0; | 262 static int sequence_num = 0; |
| 263 sequence_num++; | 263 sequence_num++; |
| 264 scoped_ptr<TransportDIB> thumbnail_dib(TransportDIB::Create( | 264 scoped_ptr<TransportDIB> thumbnail_dib(TransportDIB::Create( |
| 265 desired_size.width() * desired_size.height() * 4, sequence_num)); | 265 desired_size.width() * desired_size.height() * 4, sequence_num)); |
| 266 | 266 |
| 267 #if defined(OS_WIN) | 267 #if defined(OS_WIN) |
| 268 // Duplicate the handle to the DIB here because the renderer process does not | 268 // Duplicate the handle to the DIB here because the renderer process does not |
| 269 // have permission. The duplicated handle is owned by the renderer process, | 269 // have permission. The duplicated handle is owned by the renderer process, |
| 270 // which is responsible for closing it. | 270 // which is responsible for closing it. |
| 271 TransportDIB::Handle renderer_dib_handle = app::win::GetSectionForProcess( | 271 TransportDIB::Handle renderer_dib_handle = chrome::GetSectionForProcess( |
| 272 thumbnail_dib->handle(), | 272 thumbnail_dib->handle(), |
| 273 renderer->process()->GetHandle(), | 273 renderer->process()->GetHandle(), |
| 274 false); | 274 false); |
| 275 if (!renderer_dib_handle) { | 275 if (!renderer_dib_handle) { |
| 276 LOG(WARNING) << "Could not duplicate dib handle for renderer"; | 276 LOG(WARNING) << "Could not duplicate dib handle for renderer"; |
| 277 delete callback; | 277 delete callback; |
| 278 return; | 278 return; |
| 279 } | 279 } |
| 280 #else | 280 #else |
| 281 TransportDIB::Handle renderer_dib_handle = thumbnail_dib->handle(); | 281 TransportDIB::Handle renderer_dib_handle = thumbnail_dib->handle(); |
| (...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 676 return false; | 676 return false; |
| 677 // Skip if we don't have to udpate the existing thumbnail. | 677 // Skip if we don't have to udpate the existing thumbnail. |
| 678 ThumbnailScore current_score; | 678 ThumbnailScore current_score; |
| 679 if (is_known && | 679 if (is_known && |
| 680 top_sites->GetPageThumbnailScore(url, ¤t_score) && | 680 top_sites->GetPageThumbnailScore(url, ¤t_score) && |
| 681 !current_score.ShouldConsiderUpdating()) | 681 !current_score.ShouldConsiderUpdating()) |
| 682 return false; | 682 return false; |
| 683 | 683 |
| 684 return true; | 684 return true; |
| 685 } | 685 } |
| OLD | NEW |