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

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: review comments 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 acc1cdf3bb93bc1efd8a82dd19d7e2d3d0fd018f..87bae74260f6e268dbad06fec4f13129c7b63112 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,13 @@ void TabCaptureRegistry::HandleRequestUpdateOnUIThread(
if (!router)
return;
- if (requests_.find(device.device_id) == requests_.end())
+ std::pair<int, int> id_pair = std::make_pair(render_process_id,
no longer working on chromium 2012/12/07 14:13:10 nit, use key instead
justinlin 2012/12/07 15:50:09 Done.
+ render_view_id);
+
+ if (requests_.find(id_pair) == 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 +78,7 @@ void TabCaptureRegistry::HandleRequestUpdateOnUIThread(
return;
}
- TabCaptureRegistry::TabCaptureRequest& request_info =
- requests_[device.device_id];
+ TabCaptureRegistry::TabCaptureRequest& request_info = requests_[id_pair];
request_info.status = state;
scoped_ptr<tab_capture::CaptureInfo> info(new tab_capture::CaptureInfo());
@@ -120,10 +126,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 &&
@@ -134,8 +139,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(
@@ -165,6 +172,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));
@@ -178,14 +187,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