Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1039)

Side by Side Diff: chrome/browser/chrome_content_browser_client.cc

Issue 10537099: add "always allow" option to the mediastream infobar and allow user to allow/not allow acces to devi (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: use only content settings, added a device controller, addressed all the comments Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chrome_content_browser_client.h" 5 #include "chrome/browser/chrome_content_browser_client.h"
6 6
7 #include <set> 7 #include <set>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 22 matching lines...) Expand all
33 #include "chrome/browser/extensions/extension_process_manager.h" 33 #include "chrome/browser/extensions/extension_process_manager.h"
34 #include "chrome/browser/extensions/extension_service.h" 34 #include "chrome/browser/extensions/extension_service.h"
35 #include "chrome/browser/extensions/extension_system.h" 35 #include "chrome/browser/extensions/extension_system.h"
36 #include "chrome/browser/extensions/extension_web_ui.h" 36 #include "chrome/browser/extensions/extension_web_ui.h"
37 #include "chrome/browser/extensions/extension_webkit_preferences.h" 37 #include "chrome/browser/extensions/extension_webkit_preferences.h"
38 #include "chrome/browser/geolocation/chrome_access_token_store.h" 38 #include "chrome/browser/geolocation/chrome_access_token_store.h"
39 #include "chrome/browser/google/google_util.h" 39 #include "chrome/browser/google/google_util.h"
40 #include "chrome/browser/gpu_util.h" 40 #include "chrome/browser/gpu_util.h"
41 #include "chrome/browser/infobars/infobar_tab_helper.h" 41 #include "chrome/browser/infobars/infobar_tab_helper.h"
42 #include "chrome/browser/media/media_internals.h" 42 #include "chrome/browser/media/media_internals.h"
43 #include "chrome/browser/media/media_stream_devices_controller.h"
43 #include "chrome/browser/net/chrome_net_log.h" 44 #include "chrome/browser/net/chrome_net_log.h"
44 #include "chrome/browser/notifications/desktop_notification_service.h" 45 #include "chrome/browser/notifications/desktop_notification_service.h"
45 #include "chrome/browser/notifications/desktop_notification_service_factory.h" 46 #include "chrome/browser/notifications/desktop_notification_service_factory.h"
46 #include "chrome/browser/pepper_gtalk_message_filter.h" 47 #include "chrome/browser/pepper_gtalk_message_filter.h"
47 #include "chrome/browser/platform_util.h" 48 #include "chrome/browser/platform_util.h"
48 #include "chrome/browser/prefs/pref_service.h" 49 #include "chrome/browser/prefs/pref_service.h"
49 #include "chrome/browser/prefs/scoped_user_pref_update.h" 50 #include "chrome/browser/prefs/scoped_user_pref_update.h"
50 #include "chrome/browser/prerender/prerender_manager.h" 51 #include "chrome/browser/prerender/prerender_manager.h"
51 #include "chrome/browser/prerender/prerender_manager_factory.h" 52 #include "chrome/browser/prerender/prerender_manager_factory.h"
52 #include "chrome/browser/prerender/prerender_message_filter.h" 53 #include "chrome/browser/prerender/prerender_message_filter.h"
(...skipping 1058 matching lines...) Expand 10 before | Expand all | Expand 10 after
1111 // Abort, if the tab was closed after the request was made but before we 1112 // Abort, if the tab was closed after the request was made but before we
1112 // got to this point. 1113 // got to this point.
1113 callback.Run(content::MediaStreamDevices()); 1114 callback.Run(content::MediaStreamDevices());
1114 return; 1115 return;
1115 } 1116 }
1116 1117
1117 TabContentsWrapper* tab = 1118 TabContentsWrapper* tab =
1118 TabContentsWrapper::GetCurrentWrapperForContents(contents); 1119 TabContentsWrapper::GetCurrentWrapperForContents(contents);
1119 DCHECK(tab); 1120 DCHECK(tab);
1120 1121
1121 InfoBarTabHelper* infobar_helper = tab->infobar_tab_helper(); 1122 scoped_ptr<MediaStreamDevicesController>
1122 InfoBarDelegate* old_infobar = NULL; 1123 controller(new MediaStreamDevicesController(tab->profile(),
1123 for (size_t i = 0; i < infobar_helper->infobar_count() && !old_infobar; ++i) { 1124 request,
1124 old_infobar = 1125 callback));
1125 infobar_helper->GetInfoBarDelegateAt(i)->AsMediaStreamInfoBarDelegate(); 1126 if (!controller->DismissInfoBarAndTakeActionOnSettings()) {
1127 InfoBarTabHelper* infobar_helper = tab->infobar_tab_helper();
1128 InfoBarDelegate* old_infobar = NULL;
1129 size_t i = 0;
1130 for (; i < infobar_helper->infobar_count() && !old_infobar; ++i) {
1131 old_infobar = infobar_helper->GetInfoBarDelegateAt(i)->
1132 AsMediaStreamInfoBarDelegate();
1133 }
1134
1135 // The MediaStreamInfoBarDelegate will take the ownership of the controller;
1136 MediaStreamInfoBarDelegate* infobar =
1137 new MediaStreamInfoBarDelegate(infobar_helper,
1138 controller.release());
1139 if (old_infobar)
1140 infobar_helper->ReplaceInfoBar(old_infobar, infobar);
1141 else
1142 infobar_helper->AddInfoBar(infobar);
1126 } 1143 }
1127
1128 InfoBarDelegate* infobar = new MediaStreamInfoBarDelegate(infobar_helper,
1129 request,
1130 callback);
1131 if (old_infobar)
1132 infobar_helper->ReplaceInfoBar(old_infobar, infobar);
1133 else
1134 infobar_helper->AddInfoBar(infobar);
1135 } 1144 }
1136 1145
1137 content::MediaObserver* ChromeContentBrowserClient::GetMediaObserver() { 1146 content::MediaObserver* ChromeContentBrowserClient::GetMediaObserver() {
1138 return MediaInternals::GetInstance(); 1147 return MediaInternals::GetInstance();
1139 } 1148 }
1140 1149
1141 void ChromeContentBrowserClient::RequestDesktopNotificationPermission( 1150 void ChromeContentBrowserClient::RequestDesktopNotificationPermission(
1142 const GURL& source_origin, 1151 const GURL& source_origin,
1143 int callback_context, 1152 int callback_context,
1144 int render_process_id, 1153 int render_process_id,
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
1607 #if defined(USE_NSS) 1616 #if defined(USE_NSS)
1608 crypto::CryptoModuleBlockingPasswordDelegate* 1617 crypto::CryptoModuleBlockingPasswordDelegate*
1609 ChromeContentBrowserClient::GetCryptoPasswordDelegate( 1618 ChromeContentBrowserClient::GetCryptoPasswordDelegate(
1610 const GURL& url) { 1619 const GURL& url) {
1611 return browser::NewCryptoModuleBlockingDialogDelegate( 1620 return browser::NewCryptoModuleBlockingDialogDelegate(
1612 browser::kCryptoModulePasswordKeygen, url.host()); 1621 browser::kCryptoModulePasswordKeygen, url.host());
1613 } 1622 }
1614 #endif 1623 #endif
1615 1624
1616 } // namespace chrome 1625 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698