Index: chrome/browser/thumbnails/content_based_thumbnailing_algorithm.cc |
diff --git a/chrome/browser/thumbnails/content_based_thumbnailing_algorithm.cc b/chrome/browser/thumbnails/content_based_thumbnailing_algorithm.cc |
index 6278009f30647b2462d20524af5dc221fe235e5d..7e452ecc8711890dddc8855a2a5e1e153e2a03c7 100644 |
--- a/chrome/browser/thumbnails/content_based_thumbnailing_algorithm.cc |
+++ b/chrome/browser/thumbnails/content_based_thumbnailing_algorithm.cc |
@@ -76,13 +76,14 @@ void ContentBasedThumbnailingAlgorithm::ProcessBitmap( |
// thread pool. |
if (source_bitmap.width() <= target_thumbnail_size.width() || |
source_bitmap.height() <= target_thumbnail_size.height()) { |
- context->score.boring_score = |
- color_utils::CalculateBoringScore(source_bitmap); |
- context->score.good_clipping = |
- (context->clip_result == CLIP_RESULT_WIDER_THAN_TALL || |
- context->clip_result == CLIP_RESULT_TALLER_THAN_WIDE || |
- context->clip_result == CLIP_RESULT_NOT_CLIPPED || |
- context->clip_result == CLIP_RESULT_SOURCE_SAME_AS_TARGET); |
+ context->SetBoringScore(color_utils::CalculateBoringScore(source_bitmap)); |
+ ClipResult clip_result = context->clip_result(); |
+ bool good_clipping = |
+ (clip_result == CLIP_RESULT_WIDER_THAN_TALL || |
+ clip_result == CLIP_RESULT_TALLER_THAN_WIDE || |
+ clip_result == CLIP_RESULT_NOT_CLIPPED || |
+ clip_result == CLIP_RESULT_SOURCE_SAME_AS_TARGET); |
+ context->SetGoodClipping(good_clipping); |
callback.Run(*context.get(), source_bitmap); |
return; |
@@ -96,8 +97,13 @@ void ContentBasedThumbnailingAlgorithm::ProcessBitmap( |
context, |
callback), |
base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)) { |
- LOG(WARNING) << "PostSequencedWorkerTask failed. The thumbnail for " |
- << context->url << " will not be created."; |
+ LOG(WARNING) << "PostSequencedWorkerTask failed. The thumbnail will " |
+ << "will not be created."; |
+ if (context->web_contents() != nullptr) { |
+ LOG(WARNING) << "The URL was " << context->GetURL() << "."; |
+ } else { |
+ LOG(WARNING) << "No URL was specified."; |
+ } |
} |
} |
@@ -108,18 +114,20 @@ SkBitmap ContentBasedThumbnailingAlgorithm::PrepareSourceBitmap( |
ThumbnailingContext* context) { |
gfx::Size resize_target; |
SkBitmap clipped_bitmap; |
- if (context->clip_result == CLIP_RESULT_UNPROCESSED) { |
+ if (context->clip_result() == CLIP_RESULT_UNPROCESSED) { |
// This case will require extracting a fragment from the retrieved bitmap. |
int scrollbar_size = gfx::scrollbar_size(); |
gfx::Size scrollbarless( |
std::max(1, received_bitmap.width() - scrollbar_size), |
std::max(1, received_bitmap.height() - scrollbar_size)); |
+ ClipResult clip_result; |
gfx::Rect clipping_rect = GetClippingRect( |
scrollbarless, |
thumbnail_size, |
&resize_target, |
- &context->clip_result); |
+ &clip_result); |
+ context->set_clip_result(clip_result); |
received_bitmap.extractSubset(&clipped_bitmap, |
gfx::RectToSkIRect(clipping_rect)); |
@@ -128,7 +136,7 @@ SkBitmap ContentBasedThumbnailingAlgorithm::PrepareSourceBitmap( |
// clipped. Upstream code in same cases seems opportunistic and it may |
// not perform actual resizing if copying with resize is not supported. |
// In this case we will resize to the orignally requested copy size. |
- resize_target = context->requested_copy_size; |
+ resize_target = context->requested_copy_size(); |
clipped_bitmap = received_bitmap; |
} |
@@ -159,7 +167,7 @@ void ContentBasedThumbnailingAlgorithm::CreateRetargetedThumbnail( |
const ConsumerCallback& callback) { |
base::TimeTicks begin_compute_thumbnail = base::TimeTicks::Now(); |
float kernel_sigma = |
- context->clip_result == CLIP_RESULT_SOURCE_SAME_AS_TARGET ? 5.0f : 2.5f; |
+ context->clip_result() == CLIP_RESULT_SOURCE_SAME_AS_TARGET ? 5.0f : 2.5f; |
SkBitmap thumbnail = thumbnailing_utils::CreateRetargetedThumbnailImage( |
source_bitmap, thumbnail_size, kernel_sigma); |
bool processing_failed = thumbnail.empty(); |
@@ -167,8 +175,12 @@ void ContentBasedThumbnailingAlgorithm::CreateRetargetedThumbnail( |
// Log and apply the method very much like in SimpleThumbnailCrop (except |
// that some clipping and copying is not required). |
LOG(WARNING) << "CreateRetargetedThumbnailImage failed. " |
- << "The thumbnail for " << context->url |
- << " will be created the old-fashioned way."; |
+ << "Creating the thumbnail the old-fashioned way."; |
+ if (context->web_contents()) { |
+ LOG(WARNING) << "The URL was " << context->GetURL(); |
+ } else { |
+ LOG(WARNING) << "No URL was specified."; |
+ } |
ClipResult clip_result; |
gfx::Rect clipping_rect = SimpleThumbnailCrop::GetClippingRect( |
@@ -187,15 +199,18 @@ void ContentBasedThumbnailingAlgorithm::CreateRetargetedThumbnail( |
LOCAL_HISTOGRAM_TIMES(kThumbnailHistogramName, |
base::TimeTicks::Now() - begin_compute_thumbnail); |
} |
- context->score.boring_score = |
- color_utils::CalculateBoringScore(source_bitmap); |
- if (!processing_failed) |
- context->score.boring_score *= kScoreBoostFromSuccessfulRetargeting; |
- context->score.good_clipping = |
- (context->clip_result == CLIP_RESULT_WIDER_THAN_TALL || |
- context->clip_result == CLIP_RESULT_TALLER_THAN_WIDE || |
- context->clip_result == CLIP_RESULT_NOT_CLIPPED || |
- context->clip_result == CLIP_RESULT_SOURCE_SAME_AS_TARGET); |
+ double boring_score = color_utils::CalculateBoringScore(source_bitmap); |
+ if (!processing_failed) { |
+ boring_score *= kScoreBoostFromSuccessfulRetargeting; |
+ } |
+ context->SetBoringScore(boring_score); |
+ ClipResult clip_result = context->clip_result(); |
+ bool good_clipping = |
+ (clip_result == CLIP_RESULT_WIDER_THAN_TALL || |
+ clip_result == CLIP_RESULT_TALLER_THAN_WIDE || |
+ clip_result == CLIP_RESULT_NOT_CLIPPED || |
+ clip_result == CLIP_RESULT_SOURCE_SAME_AS_TARGET); |
+ context->SetGoodClipping(good_clipping); |
// Post the result (the bitmap) back to the callback. |
BrowserThread::PostTask( |
BrowserThread::UI, |