Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Unified Diff: extensions/browser/api/web_contents_capture_client.h

Issue 1582053002: Implement webview.captureVisibleRegion() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test so it waits for the first frame to be generated. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: extensions/browser/api/web_contents_capture_client.h
diff --git a/extensions/browser/api/capture_web_contents_function.h b/extensions/browser/api/web_contents_capture_client.h
similarity index 54%
rename from extensions/browser/api/capture_web_contents_function.h
rename to extensions/browser/api/web_contents_capture_client.h
index 53f78f7992725e2cd291c38136c70d6e3e947f09..4107ee4eded91be3e51cace8a75ad81a78ed93a4 100644
--- a/extensions/browser/api/capture_web_contents_function.h
+++ b/extensions/browser/api/web_contents_capture_client.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef EXTENSIONS_BROWSER_API_CAPTURE_WEB_CONTENTS_FUNCTION_H_
-#define EXTENSIONS_BROWSER_API_CAPTURE_WEB_CONTENTS_FUNCTION_H_
+#ifndef EXTENSIONS_BROWSER_API_WEB_CONTENTS_CAPTURE_CLIENT_H_
+#define EXTENSIONS_BROWSER_API_WEB_CONTENTS_CAPTURE_CLIENT_H_
#include "base/macros.h"
#include "content/public/browser/readback_types.h"
@@ -18,50 +18,41 @@ class WebContents;
namespace extensions {
-// Base class for capturing visibile area of a WebContents.
+// Base class for capturing visible area of a WebContents.
// This is used by both webview.captureVisibleRegion and tabs.captureVisibleTab.
-class CaptureWebContentsFunction : public AsyncExtensionFunction {
+class WebContentsCaptureClient {
public:
- CaptureWebContentsFunction() {}
+ WebContentsCaptureClient() {}
protected:
- ~CaptureWebContentsFunction() override {}
-
- // ExtensionFunction implementation.
- bool HasPermission() override;
- bool RunAsync() override;
+ virtual ~WebContentsCaptureClient() {}
virtual bool IsScreenshotEnabled() = 0;
- virtual content::WebContents* GetWebContentsForID(int context_id) = 0;
enum FailureReason {
FAILURE_REASON_UNKNOWN,
FAILURE_REASON_ENCODING_FAILED,
FAILURE_REASON_VIEW_INVISIBLE
};
+ bool CaptureAsync(content::WebContents* web_contents,
+ const api::extension_types::ImageDetails* image_detail,
+ const content::ReadbackRequestCallback callback);
+ bool EncodeBitmap(const SkBitmap& bitmap, std::string* base64_result);
virtual void OnCaptureFailure(FailureReason reason) = 0;
-
- private:
-
+ virtual void OnCaptureSuccess(const SkBitmap& bitmap) = 0;
void CopyFromBackingStoreComplete(const SkBitmap& bitmap,
content::ReadbackResponse response);
- void OnCaptureSuccess(const SkBitmap& bitmap);
-
- // |context_id_| is the ID used to find the relevant WebContents. In the
- // |tabs.captureVisibleTab()| api, this represents the window-id, and in the
- // |webview.captureVisibleRegion()| api, this represents the instance-id of
- // the guest.
- int context_id_;
+ private:
// The format (JPEG vs PNG) of the resulting image. Set in RunAsync().
api::extension_types::ImageFormat image_format_;
// Quality setting to use when encoding jpegs. Set in RunAsync().
int image_quality_;
- DISALLOW_COPY_AND_ASSIGN(CaptureWebContentsFunction);
+ DISALLOW_COPY_AND_ASSIGN(WebContentsCaptureClient);
};
} // namespace extensions
-#endif // EXTENSIONS_BROWSER_API_CAPTURE_WEB_CONTENTS_FUNCTION_H_
+#endif // EXTENSIONS_BROWSER_API_WEB_CONTENTS_CAPTURE_CLIENT_H_

Powered by Google App Engine
This is Rietveld 408576698