summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorananta <ananta@chromium.org>2015-05-12 18:51:21 -0700
committerCommit bot <commit-bot@chromium.org>2015-05-13 01:52:38 +0000
commit56fb0ec2da13e47e65d1ef8e07dee1a9a37fde70 (patch)
treeeff9bebaea3e94db158a7f58cd7b79ffcbacc5ee
parentd548caa0a48298a075fe7482fb8a1f1b51f96be8 (diff)
downloadchromium_src-56fb0ec2da13e47e65d1ef8e07dee1a9a37fde70.zip
chromium_src-56fb0ec2da13e47e65d1ef8e07dee1a9a37fde70.tar.gz
chromium_src-56fb0ec2da13e47e65d1ef8e07dee1a9a37fde70.tar.bz2
Send a Blur notification to the renderer if we receive a mouse exit for a window outside a popup.
Blink maintains state for popups whether they are hidden shown etc. So when a popup is shown and an action causes the popup to be hidden then blink changes the state to hidden. If an action causes the popup to be closed on the browser without notifying blink that the popup is going away due to focus being lost on the parent view, then blink assumes that the popup is still visible. As a result clicking again on a select box would just hide the popup as blink thinks the popup is visible. This bug is only triggered in corner cases like ASH where you have one root window parenting everything else. On regular desktop environments clicking outside the browser window while the popup is open would cause activation changes to occur which would ensure that the Blur notification goes through to the browser. The other change is a simple fix in delegate_execute which caused it to crash in debug mode on a multi dll build. Crash occurred because we were looking for version information in base.dll while launching the crash server. BUG=482937 Review URL: https://codereview.chromium.org/1136143005 Cr-Commit-Position: refs/heads/master@{#329563}
-rw-r--r--content/browser/renderer_host/render_widget_host_view_aura.cc6
-rw-r--r--win8/delegate_execute/crash_server_init.cc2
2 files changed, 7 insertions, 1 deletions
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index 93a4e93..1457ae4 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -337,6 +337,12 @@ void RenderWidgetHostViewAura::ApplyEventFilterForPopupExit(
if (target != window_ &&
(!popup_parent_host_view_ ||
target != popup_parent_host_view_->window_)) {
+ // If we enter this code path it means that we did not receive any focus
+ // lost notifications for the popup window. Ensure that blink is aware
+ // of the fact that focus was lost for the host window by sending a Blur
+ // notification.
+ if (popup_parent_host_view_ && popup_parent_host_view_->host_)
+ popup_parent_host_view_->host_->Blur();
// Note: popup_parent_host_view_ may be NULL when there are multiple
// popup children per view. See: RenderWidgetHostViewAura::InitAsPopup().
Shutdown();
diff --git a/win8/delegate_execute/crash_server_init.cc b/win8/delegate_execute/crash_server_init.cc
index 1272652..859874d 100644
--- a/win8/delegate_execute/crash_server_init.cc
+++ b/win8/delegate_execute/crash_server_init.cc
@@ -47,7 +47,7 @@ bool IsRunningSystemInstall() {
google_breakpad::CustomClientInfo* GetCustomInfo() {
scoped_ptr<FileVersionInfo> version_info(
- FileVersionInfo::CreateFileVersionInfoForCurrentModule());
+ FileVersionInfo::CreateFileVersionInfoForModule(NULL));
static google_breakpad::CustomInfoEntry ver_entry(
L"ver", version_info->file_version().c_str());