1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_THUMBNAILS_THUMBNAILING_CONTEXT_H_ 6 #define CHROME_BROWSER_THUMBNAILS_THUMBNAILING_CONTEXT_H_ 7 8 #include "base/basictypes.h" 9 #include "base/memory/ref_counted.h" 10 #include "chrome/browser/thumbnails/thumbnail_service.h" 11 #include "chrome/common/thumbnail_score.h" 12 #include "content/public/browser/web_contents.h" 13 #include "ui/gfx/size.h" 14 15 namespace thumbnails { 16 17 // The result of clipping. This can be used to determine if the 18 // generated thumbnail is good or not. 19 enum ClipResult { 20 // Clipping is not done yet. 21 CLIP_RESULT_UNPROCESSED, 22 // The source image is smaller. 23 CLIP_RESULT_SOURCE_IS_SMALLER, 24 // Wider than tall by twice or more, clip horizontally. 25 CLIP_RESULT_MUCH_WIDER_THAN_TALL, 26 // Wider than tall, clip horizontally. 27 CLIP_RESULT_WIDER_THAN_TALL, 28 // Taller than wide, clip vertically. 29 CLIP_RESULT_TALLER_THAN_WIDE, 30 // The source and destination aspect ratios are identical. 31 CLIP_RESULT_NOT_CLIPPED, 32 // The source and destination are identical. 33 CLIP_RESULT_SOURCE_SAME_AS_TARGET, 34 }; 35 36 // Holds the information needed for processing a thumbnail. 37 struct ThumbnailingContext : base::RefCountedThreadSafe<ThumbnailingContext> { 38 ThumbnailingContext(content::WebContents* web_contents, 39 ThumbnailService* receiving_service, 40 bool load_interrupted); 41 42 // Create an instance for use with unit tests. CreateThumbnailingContextForTestThumbnailingContext43 static ThumbnailingContext* CreateThumbnailingContextForTest() { 44 return new ThumbnailingContext(); 45 } 46 47 scoped_refptr<ThumbnailService> service; 48 GURL url; 49 ClipResult clip_result; 50 gfx::Size requested_copy_size; 51 ThumbnailScore score; 52 53 private: 54 ThumbnailingContext(); 55 ~ThumbnailingContext(); 56 57 friend class base::RefCountedThreadSafe<ThumbnailingContext>; 58 }; 59 60 } 61 62 #endif // CHROME_BROWSER_THUMBNAILS_THUMBNAILING_CONTEXT_H_ 63