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.
5 #ifndef CHROME_BROWSER_THUMBNAILS_THUMBNAILING_CONTEXT_H_
6 #define CHROME_BROWSER_THUMBNAILS_THUMBNAILING_CONTEXT_H_
8 #include "base/basictypes.h"
9 #include "base/memory/ref_counted.h"
10 #include "chrome/browser/thumbnails/thumbnail_service.h"
11 #include "components/history/core/common/thumbnail_score.h"
12 #include "content/public/browser/web_contents.h"
13 #include "ui/gfx/geometry/size.h"
15 namespace thumbnails
{
17 // The result of clipping. This can be used to determine if the
18 // generated thumbnail is good or not.
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
,
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
);
42 // Create an instance for use with unit tests.
43 static ThumbnailingContext
* CreateThumbnailingContextForTest() {
44 return new ThumbnailingContext();
47 scoped_refptr
<ThumbnailService
> service
;
49 ClipResult clip_result
;
50 gfx::Size requested_copy_size
;
54 ThumbnailingContext();
55 ~ThumbnailingContext();
57 friend class base::RefCountedThreadSafe
<ThumbnailingContext
>;
60 } // namespace thumbnails
62 #endif // CHROME_BROWSER_THUMBNAILS_THUMBNAILING_CONTEXT_H_