Index: chrome/browser/media/media_stream_devices_controller.cc |
=================================================================== |
--- chrome/browser/media/media_stream_devices_controller.cc (revision 285314) |
+++ chrome/browser/media/media_stream_devices_controller.cc (working copy) |
@@ -24,6 +24,7 @@ |
#include "components/user_prefs/pref_registry_syncable.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/navigation_entry.h" |
+#include "content/public/browser/render_widget_host_view.h" |
#include "content/public/common/media_stream_request.h" |
#include "extensions/common/constants.h" |
#include "grit/generated_resources.h" |
@@ -762,7 +763,7 @@ |
const { |
MediaStreamTypeSettingsMap::const_iterator it = |
request_permissions_.find(content::MEDIA_DEVICE_AUDIO_CAPTURE); |
- return (it != request_permissions_.end() && |
+ return (it != request_permissions_.end() && IsCaptureDeviceRequestAllowed() && |
it->second.permission == MEDIA_ALLOWED); |
} |
@@ -770,6 +771,15 @@ |
const { |
MediaStreamTypeSettingsMap::const_iterator it = |
request_permissions_.find(content::MEDIA_DEVICE_VIDEO_CAPTURE); |
- return (it != request_permissions_.end() && |
+ return (it != request_permissions_.end() && IsCaptureDeviceRequestAllowed() && |
it->second.permission == MEDIA_ALLOWED); |
} |
+ |
+bool MediaStreamDevicesController::IsCaptureDeviceRequestAllowed() const { |
+#if defined(OS_ANDROID) |
+ // Don't approve device requests if the tab was hidden. |
+ // TODO(qinmin): Add a test for this. http://crbug.com/396869. |
+ return web_contents_->GetRenderWidgetHostView()->IsShowing(); |
+#endif |
+ return true; |
+} |