Make the ChromeOS chromecast system tray integration use a private API.
[chromium-blink-merge.git] / chrome / browser / thumbnails / thumbnailing_context.h
blob1cfe67178aeb2a2270510a0da26cb12058efddb8
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.
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,
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;
48 GURL url;
49 ClipResult clip_result;
50 gfx::Size requested_copy_size;
51 ThumbnailScore score;
53 private:
54 ThumbnailingContext();
55 ~ThumbnailingContext();
57 friend class base::RefCountedThreadSafe<ThumbnailingContext>;
60 } // namespace thumbnails
62 #endif // CHROME_BROWSER_THUMBNAILS_THUMBNAILING_CONTEXT_H_