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 |