New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 723535 link

Starred by 5 users

Issue metadata

Status: Verified
Owner:
Closed: Jul 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Regression:Unable to enter any text in Store Finder search box of walmart.com

Project Member Reported by rkalavakuntla@chromium.org, May 17 2017

Issue description

Chrome Version:59.0.3071.57/9460.42.0 Beta-Channel Daisy,Peppy and Candy.
OS:chrome

What steps will reproduce the problem?
(1)Sign into user ->launch chrome, Open https://www.walmart.com/
(2)In Header-drop down menu ->go near Store Finder, enter random words to find any store and Observe(kindly refer video)

Actual:Unable to enter any  text/numbers in the box to find.When we try to enter anything the menu closes.
Expected:Should be able to enter any text/numbers to find any store.

This is a Regression issue as same is working fine in 55.0.2883.42/8872.44.0 dev-channel candy.

Note:
1. Able to reproduce issue in M-56(56.0.2924.72/9000.71.0) and also in latest M-60.
2. Issue is not seen in Windows and Linux OS,checked with version #60.0.3102.0 dev



 
Actual.webm
1.3 MB View Download
Expected.webm
988 KB View Download
Able to reproduce the issue on chrome 58.0.3029.112/CrOS 9334.69.0 - Peppy

Unable to reproduce the issue on Chrome 59.0.3071.47/Ubuntu 14.04.5
Cc: afakhry@chromium.org
Components: -UI UI>Input>Text
Owner: malaykeshav@chromium.org
Status: Assigned (was: Untriaged)

Comment 3 by pbe...@chromium.org, May 19 2017

Reproduced with 58.0.3029.112 beta (64-bit) on Platform 9334.69.0 (Official Build) beta-channel caroline 
Cc: malaykeshav@chromium.org
Owner: chaopeng@chromium.org
Bisecting results in the following CL as the cause:
https://codereview.chromium.org/2384053002

assigning to @chaopeng
I can reproduce this in linux build (target = "chromeos"). It is weird it works correctly when I go to https://www.walmart.com/store/finder.
Cc: dtapu...@chromium.org
```
[109969:109969:0519/193941.491676:ERROR:web_input_event.cc(405)] ET_MOUSE_EXITED
#0 0x7f3e3dc6cfcc base::debug::StackTrace::StackTrace()
#1 0x7f3e3b7a60db ui::MakeWebMouseEventFromUiEvent()
#2 0x7f3e3b7a5ed8 ui::MakeWebMouseEvent()
#3 0x7f3e3bc3c3e5 content::RenderWidgetHostViewEventHandler::OnMouseEvent()
#4 0x7f3e3a686abb ui::EventDispatcher::ProcessEvent()
#5 0x7f3e3a686867 ui::EventDispatcherDelegate::DispatchEvent()
#6 0x7f3e3a589b74 aura::WindowEventDispatcher::DispatchMouseEnterOrExit()
#7 0x7f3e3a589a2c aura::WindowEventDispatcher::DispatchMouseExitAtPoint()
#8 0x7f3e3a58ddf3 aura::WindowTreeHost::OnCursorVisibilityChanged()
#9 0x7f3e395c8813 ash::AshNativeCursorManager::SetVisibility()
#10 0x7f3e3983ec91 wm::CursorManager::HideCursor()
```

There is a mouse_exit event sent from CursorManager::HideCursor.
Here is a sample for mouse cursor hide. https://jsfiddle.net/jo2o65pg/2/
Tested in Chrome Linux/Mac, FireFox, Safari, only ChromeOS will Dispatch mouseleave event and cancel hover state.


#7 I just tried the fiddle on Cros and Linux. Both show the same behavior. What am I looking for?
#8 My bad. Keypress on mouse hover is what I was missing
Cc: sadrul@chromium.org
sadrul@ do you have any thoughts on this? A ET_MOUSE_EXITED is being dispatched by Ash which is causing the mouse hover to be removed from the page.

I don't believe Mac dispatches a Mouse exit in this case
On ChromeOS, aura hides the mouse cursor on key-event [1]. On Windows/Linux, aura does not [2], as far as I can tell.

When the cursor hides, I think it makes sense to dispatch a MOUSE_EXIT event, so that the page can update the hover state correctly.

So I guess the question is: do other platforms hide the mouse cursor on key events (I think Windows does, but I am not sure)? If so, is MOUSE_EXIT sent when cursor hides?

[1] https://cs.chromium.org/chromium/src/ash/wm/cursor_manager_chromeos.cc?type=cs&sq=package:chromium&l=23
[2] https://cs.chromium.org/chromium/src/ui/wm/core/cursor_manager.cc?type=cs&sq=package:chromium&l=208
Windows does not do this. Only chrome os and Mac do this. And as I stated before both have different approaches. 
> does not do this

Does not hide cursor? Does not generate mouse-exit when cursor is hidden? Neither?

I think it would be useful to talk to the ChromeOS UX folks to see whether (and how) we want to change behaviour for ChromeOS.
sadrul@ But in other platform, cursor hide does not change hover state. Try the example #7 hover the first div then key down (I use js to hide cursor).
Cc: e...@chromium.org
The mouse exit event is introduce in 450edc67348bc0106da16e56d783b2c3c9a9030c.
450edc67348bc0106da16e56d783b2c3c9a9030c introduced mouse exit event because Browser UI does not update hover state for touch event. I tried remove the mouse exit event and the behavior will be the same as before 450edc67348bc0106da16e56d783b2c3c9a9030c. 

For short term fix, I think we can keep the mouse exit event but add a flag to show this event is for update UI hover state and filter it in blink::WebMouseEvent MakeWebMouseEventFromUiEvent[1]. For long term, maybe we should handle touch event for UI. 

Another option is change CrOS to not hide cursor when key down.

sadurl@ dtapuska@ WDYT?

[1] https://cs.chromium.org/chromium/src/ui/events/blink/web_input_event.cc?rcl=5d138159d521118ad2a61d5ae34767e7c05adb6d&l=391
I don't think clearing hover state on cursor hide (from keyboard at least) is a good idea for exactly these kinds of cases but I guess that's a UX decision for ChromeOS folks. I would say hiding the cursor isn't really an exit, it's just changing it's visibility. The cursor still has a location that hasn't changed. I guess clearing hover does make sense if you hide the cursor due to touch.

Certainly though, we should have consistent behavior in web content across platforms. If Ash wants to keep this behaviour Chao's suggestions in #17 sgtm.
Cc: hwi@chromium.org
cc'ing hwi for chrome desktop behavior

Comment 20 by hwi@chromium.org, Jun 8 2017

re: continue showing cursor on keydown - imo, the cursor becomes a visual distraction during input, e.g. the user might want to move the cursor out of way if it's still there while they're typing. By not hiding the cursor automatically, we make hiding action manual/additional user effort. 

I couldn't get to testing on the specified devices yet since I'm not in my office. I'll test it tomorrow and get back to you more. I'm sorry for the delay. 

Comment 21 by hwi@chromium.org, Jun 9 2017

It was reproducible on Kevin 60.0.3112.10 (Official Build) Dev (32 bit). 

I still don't recommend the solution 2, "Not hiding cursor when key down", i.e. the cursor should hide when typing starts to avoid distraction and manual effort to move cursor.

Thanks!
Project Member

Comment 22 by bugdroid1@chromium.org, Jun 29 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8f8945967bb9b4af9b3ee825834f608a0465b010

commit 8f8945967bb9b4af9b3ee825834f608a0465b010
Author: chaopeng <chaopeng@chromium.org>
Date: Thu Jun 29 23:20:45 2017

Convert the mouse exit only use for update UI hover state to mouse move

This issue is caused by:

1. On mac anc CrOS, we hide the mouse cursor on keydown event.
2. On CrOS, we hide the mouse cursor on touch event.
3. 450edc67348bc0106da16e56d783b2c3c9a9030c introduced mouse exit event
   to update Browser UI hover state when mouse cursor is hidden.
4. In 3963e231e4c43187a05f3c6420f5df997d734ea0 we convert mouse exit
   event to mouse leave event (before this patch we convert mouse exit
   to mouse move)since we need a correct event in renderer.
5. After 3 and 4, the mouse hide in 1 will send a mouse leave which the
   popup-div listening and disappear the popup.

In this patch, we introduce a new flag EF_CURSOR_HIDE, which is set on the
mouse-exit event generated when the mouse cursor hides. This event is then
filtered out, so that it does not reach the renderer.

BUG= 723535 

Change-Id: I2206d424c7ebd012b715307fd801973a926c7a14
Reviewed-on: https://chromium-review.googlesource.com/545276
Commit-Queue: Jianpeng Chao <chaopeng@chromium.org>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Reviewed-by: Dave Tapuska <dtapuska@chromium.org>
Cr-Commit-Position: refs/heads/master@{#483541}
[modify] https://crrev.com/8f8945967bb9b4af9b3ee825834f608a0465b010/content/browser/renderer_host/render_widget_host_view_event_handler.cc
[modify] https://crrev.com/8f8945967bb9b4af9b3ee825834f608a0465b010/ui/aura/window_event_dispatcher.cc
[modify] https://crrev.com/8f8945967bb9b4af9b3ee825834f608a0465b010/ui/aura/window_event_dispatcher.h
[modify] https://crrev.com/8f8945967bb9b4af9b3ee825834f608a0465b010/ui/aura/window_event_dispatcher_unittest.cc
[modify] https://crrev.com/8f8945967bb9b4af9b3ee825834f608a0465b010/ui/aura/window_tree_host.cc
[modify] https://crrev.com/8f8945967bb9b4af9b3ee825834f608a0465b010/ui/events/event_constants.h

Cc: pucchakayala@chromium.org dhadd...@chromium.org
 Issue 739892  has been merged into this issue.
Status: Fixed (was: Assigned)
Cc: mkarkada@chromium.org
This issue is still existing on Chrome OS 9592.71.0, 60.0.3112.80 (stable build) but is fixed on Chrome OS 9765.12.0, 61.0.3162.16 (dev build). 
Status: Verified (was: Fixed)
10124.0.0, 64.0.3265.0

Sign in to add a comment