| 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
|
|
|