Index: chrome/browser/ui/browser.cc |
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc |
index 0dbe830eef46dd802465ba64422515169c6f4a45..16cedcd2491847b662927733fc4980b5e0f26145 100644 |
--- a/chrome/browser/ui/browser.cc |
+++ b/chrome/browser/ui/browser.cc |
@@ -64,6 +64,7 @@ |
#include "chrome/browser/intents/register_intent_handler_infobar_delegate.h" |
#include "chrome/browser/intents/web_intents_util.h" |
#include "chrome/browser/lifetime/application_lifetime.h" |
+#include "chrome/browser/media/media_stream_devices_controller.h" |
#include "chrome/browser/net/url_fixer_upper.h" |
#include "chrome/browser/notifications/notification_ui_manager.h" |
#include "chrome/browser/platform_util.h" |
@@ -3703,20 +3704,26 @@ void Browser::RequestMediaAccessPermission( |
TabContents* tab = TabContents::FromWebContents(web_contents); |
DCHECK(tab); |
- InfoBarTabHelper* infobar_helper = tab->infobar_tab_helper(); |
- InfoBarDelegate* old_infobar = NULL; |
- for (size_t i = 0; i < infobar_helper->infobar_count() && !old_infobar; ++i) { |
- old_infobar = |
- infobar_helper->GetInfoBarDelegateAt(i)->AsMediaStreamInfoBarDelegate(); |
- } |
+ scoped_ptr<MediaStreamDevicesController> |
+ controller(new MediaStreamDevicesController(tab->profile(), |
+ request, |
+ callback)); |
+ if (!controller->DismissInfoBarAndTakeActionOnSettings()) { |
+ InfoBarTabHelper* infobar_helper = tab->infobar_tab_helper(); |
+ InfoBarDelegate* old_infobar = NULL; |
+ size_t i = 0; |
+ for (; i < infobar_helper->infobar_count() && !old_infobar; ++i) { |
+ old_infobar = infobar_helper->GetInfoBarDelegateAt(i)-> |
+ AsMediaStreamInfoBarDelegate(); |
+ } |
- InfoBarDelegate* infobar = new MediaStreamInfoBarDelegate(infobar_helper, |
- request, |
- callback); |
- if (old_infobar) |
- infobar_helper->ReplaceInfoBar(old_infobar, infobar); |
- else |
- infobar_helper->AddInfoBar(infobar); |
+ InfoBarDelegate* infobar = |
+ new MediaStreamInfoBarDelegate(infobar_helper, controller.release()); |
+ if (old_infobar) |
+ infobar_helper->ReplaceInfoBar(old_infobar, infobar); |
+ else |
+ infobar_helper->AddInfoBar(infobar); |
+ } |
} |
/////////////////////////////////////////////////////////////////////////////// |