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

Unified Diff: chrome/browser/extensions/api/tab_capture/tab_capture_registry.cc

Issue 11451006: Make TabCapture requests use the target render process and render view id's for UI permissions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove early return Created 8 years 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/tab_capture_registry.cc
diff --git a/chrome/browser/extensions/api/tab_capture/tab_capture_registry.cc b/chrome/browser/extensions/api/tab_capture/tab_capture_registry.cc
index df2655cd1ccda3191b8b283ee432513428357260..3953de0049b504fe7a8da84bd7b802e03a3f007a 100644
--- a/chrome/browser/extensions/api/tab_capture/tab_capture_registry.cc
+++ b/chrome/browser/extensions/api/tab_capture/tab_capture_registry.cc
@@ -33,6 +33,8 @@ TabCaptureRegistry::~TabCaptureRegistry() {
}
void TabCaptureRegistry::HandleRequestUpdateOnUIThread(
+ int render_process_id,
+ int render_view_id,
const content::MediaStreamDevice& device,
const content::MediaRequestState new_state) {
EventRouter* router = profile_ ?
@@ -40,8 +42,12 @@ void TabCaptureRegistry::HandleRequestUpdateOnUIThread(
if (!router)
return;
- if (requests_.find(device.device_id) == requests_.end())
+ std::pair<int, int> key = std::make_pair(render_process_id, render_view_id);
+
+ if (requests_.find(key) == requests_.end()) {
+ LOG(ERROR) << "Receiving updates for invalid tab capture request.";
return;
+ }
tab_capture::TabCaptureState state =
tab_capture::TAB_CAPTURE_TAB_CAPTURE_STATE_NONE;
@@ -71,8 +77,7 @@ void TabCaptureRegistry::HandleRequestUpdateOnUIThread(
return;
}
- TabCaptureRegistry::TabCaptureRequest& request_info =
- requests_[device.device_id];
+ TabCaptureRegistry::TabCaptureRequest& request_info = requests_[key];
request_info.status = state;
scoped_ptr<tab_capture::CaptureInfo> info(new tab_capture::CaptureInfo());
@@ -122,10 +127,9 @@ void TabCaptureRegistry::Observe(int type,
}
}
-bool TabCaptureRegistry::AddRequest(
- const std::string& key, const TabCaptureRequest& request) {
+bool TabCaptureRegistry::AddRequest(const std::pair<int, int> key,
+ const TabCaptureRequest& request) {
// Currently, we do not allow multiple active captures for same tab.
- DCHECK(!key.empty());
if (requests_.find(key) != requests_.end())
if (requests_[key].status !=
tab_capture::TAB_CAPTURE_TAB_CAPTURE_STATE_STOPPED &&
@@ -136,8 +140,10 @@ bool TabCaptureRegistry::AddRequest(
return true;
}
-bool TabCaptureRegistry::VerifyRequest(const std::string& key) {
- return requests_.find(key) != requests_.end();
+bool TabCaptureRegistry::VerifyRequest(int render_process_id,
+ int render_view_id) {
+ return requests_.find(std::make_pair(
+ render_process_id, render_view_id)) != requests_.end();
}
void TabCaptureRegistry::MediaObserverProxy::Attach(
@@ -167,6 +173,8 @@ void TabCaptureRegistry::MediaObserverProxy::RegisterAsMediaObserverOnIOThread(
}
void TabCaptureRegistry::MediaObserverProxy::OnRequestUpdate(
+ int render_process_id,
+ int render_view_id,
const content::MediaStreamDevice& device,
const content::MediaRequestState new_state) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
@@ -180,14 +188,19 @@ void TabCaptureRegistry::MediaObserverProxy::OnRequestUpdate(
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
base::Bind(&TabCaptureRegistry::MediaObserverProxy::UpdateOnUIThread,
- this, device, new_state));
+ this, render_process_id, render_view_id, device, new_state));
}
void TabCaptureRegistry::MediaObserverProxy::UpdateOnUIThread(
+ int render_process_id,
+ int render_view_id,
const content::MediaStreamDevice& device,
const content::MediaRequestState new_state) {
if (handler_)
- handler_->HandleRequestUpdateOnUIThread(device, new_state);
+ handler_->HandleRequestUpdateOnUIThread(render_process_id,
+ render_view_id,
+ device,
+ new_state);
}
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698