Index: third_party/WebKit/Source/web/ChromeClientImpl.cpp |
diff --git a/third_party/WebKit/Source/web/ChromeClientImpl.cpp b/third_party/WebKit/Source/web/ChromeClientImpl.cpp |
index cf15d6dd1d0e6dbf307d6ffaf2fd2589d005ffde..c654d6be30177c1b2ac4bedb8d36b8f2f446c579 100644 |
--- a/third_party/WebKit/Source/web/ChromeClientImpl.cpp |
+++ b/third_party/WebKit/Source/web/ChromeClientImpl.cpp |
@@ -331,12 +331,19 @@ void updatePolicyForEvent(const WebInputEvent* inputEvent, |
} |
WebNavigationPolicy getNavigationPolicy(const WindowFeatures& features) { |
- // If our default configuration was modified by a script or wasn't |
- // created by a user gesture, then show as a popup. Else, let this |
- // new window be opened as a toplevel window. |
- bool asPopup = !features.toolBarVisible || !features.statusBarVisible || |
- !features.scrollbarsVisible || !features.menuBarVisible || |
- !features.resizable; |
+ // If the window features didn't enable the toolbar, or this window wasn't |
+ // created by a user gesture, show as a popup instead of a new tab. |
+ // |
+ // Note: this previously also checked that menubar, resizable, scrollbar, and |
+ // statusbar are enabled too. When no feature string is specified, these |
+ // features default to enabled (and the window opens as a new tab). However, |
+ // when a feature string is specified, any *unspecified* features default to |
+ // disabled, often causing the window to open as a popup instead. |
+ // |
+ // As specifying menubar, resizable, scrollbar, and statusbar have no effect |
+ // on the UI, just ignore them and only consider whether or not the toolbar is |
+ // enabled, which matches Firefox's behavior. |
+ bool asPopup = !features.toolBarVisible; |
NavigationPolicy policy = NavigationPolicyNewForegroundTab; |
if (asPopup) |