Chromium Code Reviews| 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 |