• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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