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

Unified Diff: chrome/browser/extensions/api/tab_capture/offscreen_presentation.h

Issue 1221483002: New tabCapture.captureOffscreenTab API, initially for Presentation API 1UA mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Register off-screen tabs as presentations via separate private API. Created 5 years, 3 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: chrome/browser/extensions/api/tab_capture/offscreen_presentation.h
diff --git a/chrome/browser/extensions/api/tab_capture/offscreen_presentation.h b/chrome/browser/extensions/api/tab_capture/offscreen_presentation.h
index 03ca5c22810b3cbf2daf8cb9073895912bec0fe8..fcd5d0ed2c719e2dda090d13e602dda5746bb1e5 100644
--- a/chrome/browser/extensions/api/tab_capture/offscreen_presentation.h
+++ b/chrome/browser/extensions/api/tab_capture/offscreen_presentation.h
@@ -20,6 +20,9 @@ class Profile;
namespace extensions {
+// TODO(miu): This file and classes should be renamed, as this implementation
+// has expanded in scope to be used for all off-screen tabs.
+
class OffscreenPresentation; // Forward declaration. See below.
// Creates, owns, and manages all OffscreenPresentation instances created by the
@@ -31,7 +34,7 @@ class OffscreenPresentation; // Forward declaration. See below.
// Usage:
//
// OffscreenPresentationsOwner::Get(extension_contents)
-// ->FindOrStartPresentation(start_url, presentation_id, size);
+// ->StartPresentation(start_url, size);
//
// This class operates exclusively on the UI thread and so is not thread-safe.
class OffscreenPresentationsOwner
@@ -44,14 +47,19 @@ class OffscreenPresentationsOwner
static OffscreenPresentationsOwner* Get(
content::WebContents* extension_web_contents);
- // Find a presentation, keyed by |start_url| and |presentation_id|. If found,
- // return it. Otherwise, instantiate a new one and return that. If too many
- // presentations have already been started, this method returns nullptr.
- OffscreenPresentation* FindOrStartPresentation(
+ // Instantiate a new off-screen tab and navigate it to |start_url|. The new
+ // tab's main frame will start out with the given |initial_size| in DIP
+ // coordinates. If too many off-screen tabs have already been started, this
+ // method returns nullptr.
+ OffscreenPresentation* StartPresentation(
const GURL& start_url,
- const std::string& presentation_id,
const gfx::Size& initial_size);
+ // Retrieve an existing instance by its ID. If not found, this method returns
+ // nullptr.
+ OffscreenPresentation* FindByOffscreenTabId(
+ const std::string& offscreen_tab_id) const;
+
protected:
friend class OffscreenPresentation;
@@ -68,10 +76,8 @@ class OffscreenPresentationsOwner
explicit OffscreenPresentationsOwner(content::WebContents* contents);
- // Returns the OffscreenPresentation that matches the given |start_url| and
- // |presentation_id|, or nullptr if not found.
- OffscreenPresentation* FindPresentation(
- const GURL& start_url, const std::string& presentation_id) const;
+ // Returns a unique, random ID that no other OffscreenPresentation has.
+ std::string CreateUniqueRandomId() const;
content::WebContents* const extension_web_contents_;
ScopedVector<OffscreenPresentation> presentations_;
@@ -104,7 +110,7 @@ class OffscreenPresentation : protected content::WebContentsDelegate,
~OffscreenPresentation() final;
const GURL& start_url() const { return start_url_; }
- const std::string& presentation_id() const { return presentation_id_; }
+ const std::string& id() const { return id_; }
// The presentation page's WebContents instance.
content::WebContents* web_contents() const {
@@ -184,8 +190,8 @@ class OffscreenPresentation : protected content::WebContentsDelegate,
// current WebContents URL if navigations have occurred.
const GURL start_url_;
- // The presentation ID used to help uniquely identify this instance.
- const std::string presentation_id_;
+ // An ID used to uniquely identify this instance.
+ const std::string id_;
// A non-shared off-the-record profile based on the profile of the extension
// background page.

Powered by Google App Engine
This is Rietveld 408576698