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

Unified Diff: chrome/browser/media/media_capture_devices_dispatcher.cc

Issue 252673002: Fixed screen capture confirmation dialog to be either system or browser window modal. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/media/media_capture_devices_dispatcher.cc
diff --git a/chrome/browser/media/media_capture_devices_dispatcher.cc b/chrome/browser/media/media_capture_devices_dispatcher.cc
index 93d462b8bbe66567759879b3ea2e852421d03587..640be47a7bc873bf9f89cb2085e1f160e0cb7b19 100644
--- a/chrome/browser/media/media_capture_devices_dispatcher.cc
+++ b/chrome/browser/media/media_capture_devices_dispatcher.cc
@@ -4,6 +4,8 @@
#include "chrome/browser/media/media_capture_devices_dispatcher.h"
+#include "apps/app_window.h"
+#include "apps/app_window_registry.h"
#include "base/command_line.h"
#include "base/logging.h"
#include "base/prefs/pref_service.h"
@@ -17,6 +19,9 @@
#include "chrome/browser/media/media_stream_capture_indicator.h"
#include "chrome/browser/media/media_stream_infobar_delegate.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_finder.h"
+#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/screen_capture_notification_ui.h"
#include "chrome/browser/ui/simple_message_box.h"
#include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
@@ -238,6 +243,26 @@ void StopAudioStreamMonitoringOnUIThread(
#endif // defined(AUDIO_STREAM_MONITORING)
+// Find browser or app window from a given |web_contents|.
+gfx::NativeWindow FindParentWindowForWebContents(
+ content::WebContents* web_contents) {
+ Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
+ if (browser && browser->window())
+ return browser->window()->GetNativeWindow();
+
+ const apps::AppWindowRegistry::AppWindowList& window_list =
+ apps::AppWindowRegistry::Get(
+ web_contents->GetBrowserContext())->app_windows();
+ for (apps::AppWindowRegistry::AppWindowList::const_iterator iter =
+ window_list.begin();
+ iter != window_list.end(); ++iter) {
+ if ((*iter)->web_contents() == web_contents)
+ return (*iter)->GetNativeWindow();
+ }
+
+ return NULL;
+}
+
} // namespace
MediaCaptureDevicesDispatcher::PendingAccessRequest::PendingAccessRequest(
@@ -454,6 +479,8 @@ void MediaCaptureDevicesDispatcher::ProcessScreenCaptureAccessRequest(
// is closed. See http://crbug.com/326690.
base::string16 application_title =
GetApplicationTitle(web_contents, extension);
+ gfx::NativeWindow parent_window =
+ FindParentWindowForWebContents(web_contents);
web_contents = NULL;
// For component extensions, bypass message box.
@@ -467,7 +494,7 @@ void MediaCaptureDevicesDispatcher::ProcessScreenCaptureAccessRequest(
IDS_MEDIA_SCREEN_AND_AUDIO_CAPTURE_CONFIRMATION_TEXT,
application_name);
chrome::MessageBoxResult result = chrome::ShowMessageBox(
- NULL,
+ parent_window,
l10n_util::GetStringFUTF16(
IDS_MEDIA_SCREEN_CAPTURE_CONFIRMATION_TITLE, application_name),
confirmation_text,
« no previous file with comments | « no previous file | chrome/browser/ui/views/simple_message_box_views.cc » ('j') | ui/wm/core/window_modality_controller.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698