OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_CAPTURE_WEB_CONTENTS_FUNCTION_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_API_CAPTURE_WEB_CONTENTS_FUNCTION_H_ |
6 #define CHROME_BROWSER_EXTENSIONS_API_CAPTURE_WEB_CONTENTS_FUNCTION_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_API_CAPTURE_WEB_CONTENTS_FUNCTION_H_ |
7 | 7 |
8 #include "chrome/browser/extensions/chrome_extension_function.h" | |
9 #include "extensions/common/api/extension_types.h" | 8 #include "extensions/common/api/extension_types.h" |
10 | 9 |
11 class SkBitmap; | 10 class SkBitmap; |
12 | 11 |
13 namespace content { | 12 namespace content { |
14 class WebContents; | 13 class WebContents; |
15 } | 14 } |
16 | 15 |
17 namespace extensions { | 16 namespace extensions { |
18 | 17 |
19 // Base class for capturing visibile area of a WebContents. | 18 // Base class for capturing visibile area of a WebContents. |
20 // This is used by both webview.captureVisibleRegion and tabs.captureVisibleTab. | 19 // This is used by both webview.captureVisibleRegion and tabs.captureVisibleTab. |
Ken Rockot(use gerrit already)
2014/09/04 01:27:50
Please document T here, as it is not obvious at fi
| |
21 class CaptureWebContentsFunction : public ChromeAsyncExtensionFunction { | 20 template <typename T> |
21 class CaptureWebContentsFunction : public T { | |
22 public: | 22 public: |
23 CaptureWebContentsFunction(); | 23 CaptureWebContentsFunction() {} |
24 | 24 |
25 protected: | 25 protected: |
26 virtual ~CaptureWebContentsFunction(); | 26 virtual ~CaptureWebContentsFunction() {} |
27 | 27 |
28 // ExtensionFunction implementation. | 28 // ExtensionFunction implementation. |
29 virtual bool HasPermission() OVERRIDE; | 29 virtual bool HasPermission() OVERRIDE; |
30 virtual bool RunAsync() OVERRIDE; | 30 virtual bool RunAsync() OVERRIDE; |
31 | 31 |
32 virtual bool IsScreenshotEnabled() = 0; | 32 virtual bool IsScreenshotEnabled() = 0; |
33 virtual content::WebContents* GetWebContentsForID(int context_id) = 0; | 33 virtual content::WebContents* GetWebContentsForID(int context_id) = 0; |
34 | 34 |
35 enum FailureReason { | 35 enum FailureReason { |
36 FAILURE_REASON_UNKNOWN, | 36 FAILURE_REASON_UNKNOWN, |
37 FAILURE_REASON_ENCODING_FAILED, | 37 FAILURE_REASON_ENCODING_FAILED, |
38 FAILURE_REASON_VIEW_INVISIBLE | 38 FAILURE_REASON_VIEW_INVISIBLE |
39 }; | 39 }; |
40 virtual void OnCaptureFailure(FailureReason reason) = 0; | 40 virtual void OnCaptureFailure(FailureReason reason) = 0; |
41 | 41 |
42 // ValidationFailure override to match RunAsync(). | |
43 static bool ValidationFailure(CaptureWebContentsFunction* function); | |
44 | |
42 private: | 45 private: |
43 typedef core_api::extension_types::ImageDetails ImageDetails; | 46 typedef core_api::extension_types::ImageDetails ImageDetails; |
44 | 47 |
45 void CopyFromBackingStoreComplete(bool succeed, const SkBitmap& bitmap); | 48 void CopyFromBackingStoreComplete(bool succeed, const SkBitmap& bitmap); |
46 void OnCaptureSuccess(const SkBitmap& bitmap); | 49 void OnCaptureSuccess(const SkBitmap& bitmap); |
47 | 50 |
48 // |context_id_| is the ID used to find the relevant WebContents. In the | 51 // |context_id_| is the ID used to find the relevant WebContents. In the |
49 // |tabs.captureVisibleTab()| api, this represents the window-id, and in the | 52 // |tabs.captureVisibleTab()| api, this represents the window-id, and in the |
50 // |webview.captureVisibleRegion()| api, this represents the instance-id of | 53 // |webview.captureVisibleRegion()| api, this represents the instance-id of |
51 // the guest. | 54 // the guest. |
52 int context_id_; | 55 int context_id_; |
53 | 56 |
54 // The format (JPEG vs PNG) of the resulting image. Set in RunAsync(). | 57 // The format (JPEG vs PNG) of the resulting image. Set in RunAsync(). |
55 ImageDetails::Format image_format_; | 58 ImageDetails::Format image_format_; |
56 | 59 |
57 // Quality setting to use when encoding jpegs. Set in RunAsync(). | 60 // Quality setting to use when encoding jpegs. Set in RunAsync(). |
58 int image_quality_; | 61 int image_quality_; |
59 | 62 |
60 DISALLOW_COPY_AND_ASSIGN(CaptureWebContentsFunction); | 63 DISALLOW_COPY_AND_ASSIGN(CaptureWebContentsFunction); |
61 }; | 64 }; |
62 | 65 |
63 } // namespace extensions | 66 } // namespace extensions |
64 | 67 |
65 #endif // CHROME_BROWSER_EXTENSIONS_API_CAPTURE_WEB_CONTENTS_FUNCTION_H_ | 68 #endif // CHROME_BROWSER_EXTENSIONS_API_CAPTURE_WEB_CONTENTS_FUNCTION_H_ |
OLD | NEW |