Commit 54bac784 authored by skuhne@chromium.org's avatar skuhne@chromium.org

Fixing crash Crash Report - Stack Signature: content::RenderWidgetHostImpl::ForwardKeybo


BUG=134465
TEST=by hand


Review URL: https://chromiumcodereview.appspot.com/10836186

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@151121 0039d316-1c4b-4281-b951-d872f2087c98
parent f9717cec
......@@ -23,6 +23,7 @@
#include "chrome/browser/ui/browser_tabstrip.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/chrome_pages.h"
#include "chrome/browser/ui/fullscreen/fullscreen_controller.h"
#include "chrome/browser/ui/tab_contents/tab_contents.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/ui/webui/sync_promo/sync_promo_ui.h"
......@@ -43,6 +44,10 @@
#include "base/win/metro.h"
#endif
#if defined(USE_ASH)
#include "ash/wm/window_util.h"
#endif
using content::WebContents;
using content::NavigationEntry;
using content::NavigationController;
......@@ -282,13 +287,31 @@ void BrowserCommandController::ExecuteCommandWithDisposition(
NewIncognitoWindow(browser_);
break;
case IDC_CLOSE_WINDOW:
CloseWindow(browser_);
// Destroying a tab / browser window while it has opened a full screen
// window will destroy it's content class - which will destroy the
// delegate - which is also used by the opened full screen window's
// event handler. That will cause then a crash. To avoid that we supress
// closing of windows via key stroke while a full screen window is open.
// http://crbug.com/134465, http://crbug.com/131436
#if defined(OS_CHROMEOS)
if (!IsFullScreenWindowOpen())
#endif
CloseWindow(browser_);
break;
case IDC_NEW_TAB:
NewTab(browser_);
break;
case IDC_CLOSE_TAB:
CloseTab(browser_);
// Destroying a tab / browser window while it has opened a full screen
// window will destroy it's content class - which will destroy the
// delegate - which is also used by the opened full screen window's
// event handler. That will cause then a crash. To avoid that we supress
// closing of windows via key stroke while a full screen window is open.
// http://crbug.com/134465, http://crbug.com/131436
#if defined(OS_CHROMEOS)
if (!IsFullScreenWindowOpen())
#endif
CloseTab(browser_);
break;
case IDC_SELECT_NEXT_TAB:
SelectNextTab(browser_);
......@@ -1078,4 +1101,13 @@ Profile* BrowserCommandController::profile() {
return browser_->profile();
}
bool BrowserCommandController::IsFullScreenWindowOpen() {
#if defined(USE_ASH)
aura::Window* window = ash::wm::GetActiveWindow();
return (window && ash::wm::IsWindowFullscreen(window));
#else
return false;
#endif
}
} // namespace chrome
......@@ -161,6 +161,9 @@ class BrowserCommandController : public CommandUpdater::CommandUpdaterDelegate,
inline BrowserWindow* window();
inline Profile* profile();
// Check if any window is open in full screen mode.
bool IsFullScreenWindowOpen();
Browser* browser_;
// The CommandUpdater that manages the browser window commands.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment