diff --git a/browser/native_window_win.cc b/browser/native_window_win.cc index f03d3365a1e8..89542297a60a 100644 --- a/browser/native_window_win.cc +++ b/browser/native_window_win.cc @@ -194,6 +194,17 @@ class NativeWindowFramelessView : public views::NonClientFrameView { DISALLOW_COPY_AND_ASSIGN(NativeWindowFramelessView); }; +bool WindowHasModalDialog(HWND parent, HWND except, HWND after = NULL) { + HWND hwnd = ::FindWindowEx(parent, after, NULL, NULL); + if (hwnd != except && + (::GetWindowLong(hwnd, GWL_STYLE) & (WS_VISIBLE | WS_POPUP))) + return true; + else if (hwnd == NULL) + return false; + else + return WindowHasModalDialog(parent, except, hwnd); +} + } // namespace NativeWindowWin::NativeWindowWin(content::WebContents* web_contents, @@ -359,6 +370,11 @@ bool NativeWindowWin::IsKiosk() { return IsFullscreen(); } +bool NativeWindowWin::HasModalDialog() { + return WindowHasModalDialog(GetNativeWindow(), + GetWebContents()->GetView()->GetNativeView()); +} + gfx::NativeWindow NativeWindowWin::GetNativeWindow() { return window_->GetNativeView(); }