| Index: chrome/browser/media/media_stream_devices_controller.cc
|
| diff --git a/chrome/browser/media/media_stream_devices_controller.cc b/chrome/browser/media/media_stream_devices_controller.cc
|
| index f3727b9e383b5c1b903657eb8f351a8819af65c1..6fd8b8a57c70297627939c738159e428efbe6444 100644
|
| --- a/chrome/browser/media/media_stream_devices_controller.cc
|
| +++ b/chrome/browser/media/media_stream_devices_controller.cc
|
| @@ -64,7 +64,12 @@ MediaStreamDevicesController::MediaStreamDevicesController(
|
| }
|
| }
|
|
|
| -MediaStreamDevicesController::~MediaStreamDevicesController() {}
|
| +MediaStreamDevicesController::~MediaStreamDevicesController() {
|
| + if (!callback_.is_null()) {
|
| + callback_.Run(content::MediaStreamDevices(),
|
| + scoped_ptr<content::MediaStreamUI>());
|
| + }
|
| +}
|
|
|
| // static
|
| void MediaStreamDevicesController::RegisterUserPrefs(
|
| @@ -172,7 +177,9 @@ void MediaStreamDevicesController::Accept(bool update_content_setting) {
|
| GetMediaStreamCaptureIndicator()->RegisterMediaStream(
|
| web_contents_, devices);
|
| }
|
| - callback_.Run(devices, ui.Pass());
|
| + content::MediaResponseCallback cb = callback_;
|
| + callback_.Reset();
|
| + cb.Run(devices, ui.Pass());
|
| }
|
|
|
| void MediaStreamDevicesController::Deny(bool update_content_setting) {
|
| @@ -187,8 +194,9 @@ void MediaStreamDevicesController::Deny(bool update_content_setting) {
|
| if (update_content_setting)
|
| SetPermission(false);
|
|
|
| - callback_.Run(content::MediaStreamDevices(),
|
| - scoped_ptr<content::MediaStreamUI>());
|
| + content::MediaResponseCallback cb = callback_;
|
| + callback_.Reset();
|
| + cb.Run(content::MediaStreamDevices(), scoped_ptr<content::MediaStreamUI>());
|
| }
|
|
|
| MediaStreamDevicesController::DevicePolicy
|
|
|