Index: chrome/browser/extensions/api/tab_capture/offscreen_presentation.cc |
diff --git a/chrome/browser/extensions/api/tab_capture/offscreen_presentation.cc b/chrome/browser/extensions/api/tab_capture/offscreen_presentation.cc |
index 2ccd614b8035321582aac9c7c12777da22d06bdf..f83a6f6d1520c8672001a0f5d7656cbf6467fad0 100644 |
--- a/chrome/browser/extensions/api/tab_capture/offscreen_presentation.cc |
+++ b/chrome/browser/extensions/api/tab_capture/offscreen_presentation.cc |
@@ -138,25 +138,17 @@ OffscreenPresentationsOwner* OffscreenPresentationsOwner::Get( |
return FromWebContents(extension_web_contents); |
} |
-OffscreenPresentation* OffscreenPresentationsOwner::FindOrStartPresentation( |
+OffscreenPresentation* OffscreenPresentationsOwner::StartPresentation( |
const GURL& start_url, |
const std::string& presentation_id, |
const gfx::Size& initial_size) { |
- OffscreenPresentation* presentation = |
- FindPresentation(start_url, presentation_id); |
- if (presentation) { |
- DVLOG(1) << "Returning already-running OffscreenPresentation for start_url=" |
- << presentation->start_url(); |
- return presentation; |
- } |
- |
if (presentations_.size() >= kMaxPresentationsPerExtension) |
return nullptr; // Maximum number of presentations reached. |
- presentation = new OffscreenPresentation(this, start_url, presentation_id); |
- presentations_.push_back(presentation); |
- presentation->Start(initial_size); |
- return presentation; |
+ presentations_.push_back( |
+ new OffscreenPresentation(this, start_url, presentation_id)); |
+ presentations_.back()->Start(initial_size); |
+ return presentations_.back(); |
} |
void OffscreenPresentationsOwner::ClosePresentation( |
@@ -167,16 +159,6 @@ void OffscreenPresentationsOwner::ClosePresentation( |
presentations_.erase(it); |
} |
-OffscreenPresentation* OffscreenPresentationsOwner::FindPresentation( |
- const GURL& start_url, const std::string& presentation_id) const { |
- for (OffscreenPresentation* presentation : presentations_) { |
- if (presentation->start_url() == start_url && |
- presentation->presentation_id() == presentation_id) |
- return presentation; |
- } |
- return nullptr; |
-} |
- |
OffscreenPresentation::OffscreenPresentation(OffscreenPresentationsOwner* owner, |
const GURL& start_url, |
const std::string& id) |
@@ -219,6 +201,13 @@ void OffscreenPresentation::Start(const gfx::Size& initial_size) { |
// automatically unmuted, but will be captured into the MediaStream. |
presentation_web_contents_->SetAudioMuted(true); |
+ // TODO(imcheng): If |presentation_id_| is not empty, register it with the |
+ // PresentationRouter. http://crbug.com/513859 |
+ if (!presentation_id_.empty()) { |
+ NOTIMPLEMENTED() |
+ << "Register with PresentationRouter, id=" << presentation_id_; |
+ } |
+ |
// Navigate to the initial URL of the presentation. |
content::NavigationController::LoadURLParams load_params(start_url_); |
load_params.should_replace_current_entry = true; |
@@ -381,14 +370,12 @@ void OffscreenPresentation::RequestMediaAccessPermission( |
// WebContents. |
content::BrowserContext* const extension_browser_context = |
owner_->extension_web_contents()->GetBrowserContext(); |
- std::string extension_id; |
- for (const ExtensionHost* host : |
- ProcessManager::Get(extension_browser_context)->background_hosts()) { |
- if (host->host_contents() == owner_->extension_web_contents()) { |
- extension_id = host->extension_id(); |
- break; |
- } |
- } |
+ const extensions::Extension* const extension = |
+ ProcessManager::Get(extension_browser_context)-> |
+ GetExtensionForWebContents(owner_->extension_web_contents()); |
+ const std::string extension_id = extension ? extension->id() : ""; |
+ LOG_IF(DFATAL, extension_id.empty()) |
+ << "Extension that started this OffscreenPresentation was not found."; |
// If verified, allow any tab capture audio/video devices that were requested. |
extensions::TabCaptureRegistry* const tab_capture_registry = |