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

Issue 726273 link

Starred by 2 users

Issue metadata

Status: Archived
Owner:
Last visit > 30 days ago
Closed: Jun 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Regression:Focus stays on the keyboard icon even after the On-screen keyboard is minimized

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

Issue description

Chrome Version:59.0.3071.71/9460.50.0 on Paine, Blaze & Peppy
OS:chrome
Precondition:On-screen keyboard should be enabled in Accessibility Settings

What steps will reproduce the problem?
(1)Open Guest Mode 
(2)Click On-screen keyboard, minimize it and Observe the Focus stay on On-screen Keyboard icon at the shelf(Kindly refer video)

Actual:Focus stays on the keyboard icon even after the On-screen  keyboard is  minimized.
Expected:Focus shouldn't stay on the keyboard icon after the On-screen keyboard is minimized.

This is a regression issue as same is working fine in 57.0.2987.154/9202.71.0 stable Paine

Note:
1.Issue is not applicable to Windows and Linux OS
2.Issue is also seen in latest stable M-58 and dev M-60

@Tbuckley: Please confirm the issue.






 
Actual.mp4
10.9 MB View Download
Expected.mp4
9.7 MB View Download

Comment 1 by kochi@chromium.org, May 25 2017

Components: -Blink>Focus
I don't think this is related to Blink's focus handling implementation.
Removing Blink>Focus component.
Cc: tdander...@chromium.org tbuck...@chromium.org
Owner: bruthig@chromium.org
@bruthig do you know why the button is staying in the active state?
Labels: Proj-MaterialDesign-CrOS
Cc: jamescook@chromium.org moh...@chromium.org
Status: Started (was: Assigned)
It appears the VirtualKeyboardTray is attaching to a KeyboardController instance that is getting destroyed and is never attaching to the active KeyboardController instance.  Need to dig deeper...
Cc: sky@chromium.org
sky, do you recall lifetime issues with KeyboardController? I seem to recall it had a weird create/destroy cycle.

Comment 6 by sky@chromium.org, May 30 2017

Sorry, I don't remember anything unusual about KeyboardController.
Does anyone know why a new KeyboardController instance is recreated "...after initial login and after multiprofile login" (See https://cs.chromium.org/chromium/src/ash/shell.cc?rcl=72c574306ae23defb06ca2643939ac46771e975b&l=1229) ?

...or whether we should be allowing multiple instances to be created?

It's unclear to me whether the issue is that multiple instances are being created, or whether the VirtualKeyboardTray isn't updating who it is observing.

First Creation:

#0 0x7f4bcecb48eb base::debug::StackTrace::StackTrace()
#1 0x7f4bcecb362c base::debug::StackTrace::StackTrace()
#2 0x7f4bc00b48c9 ash::Shell::CreateKeyboard()
#3 0x55a48e0e550d chromeos::AccessibilityManager::UpdateVirtualKeyboardFromPref()
#4 0x55a48e0e7b77 chromeos::AccessibilityManager::SetProfile()
#5 0x55a48e0e8cb2 chromeos::AccessibilityManager::Observe()
#6 0x7f4bc87e8746 content::NotificationServiceImpl::Notify()
#7 0x55a48e54d273 chromeos::ChromeSessionManager::SessionStarted()
#8 0x55a48e54d122 chromeos::(anonymous namespace)::StartUserSession()
#9 0x55a48e54cf16 chromeos::(anonymous namespace)::StartStubLoginSession()
#10 0x55a48e54cb86 chromeos::ChromeSessionManager::Initialize()
#11 0x55a48e2afbec chromeos::ChromeBrowserMainPartsChromeos::PostProfileInit()
#12 0x55a48f46d534 ChromeBrowserMainParts::PreMainMessageLoopRunImpl()
#13 0x55a48f46c890 ChromeBrowserMainParts::PreMainMessageLoopRun()
#14 0x55a48e2aec7a chromeos::ChromeBrowserMainPartsChromeos::PreMainMessageLoopRun()
#15 0x7f4bc811f1b1 content::BrowserMainLoop::PreMainMessageLoopRun()
#16 0x7f4bc7462ad5 _ZN4base8internal13FunctorTraitsIMN7content13URLLoaderImplEFvvEvE6InvokeIPS3_JEEEvS5_OT_DpOT0_
#17 0x7f4bc8127d61 _ZN4base8internal12InvokeHelperILb0EiE8MakeItSoIRKMN7content15BrowserMainLoopEFivEJPS5_EEEiOT_DpOT0_
#18 0x7f4bc8127d07 _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserMainLoopEFivEJNS0_17UnretainedWrapperIS4_EEEEEFivEE7RunImplIRKS6_RKSt5tupleIJS8_EEJLm0EEEEiOT_OT0_NS_13IndexSequenceIJXspT1_EEEE
#19 0x7f4bc8127c4c _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserMainLoopEFivEJNS0_17UnretainedWrapperIS4_EEEEEFivEE3RunEPNS0_13BindStateBaseE
#20 0x7f4bc7436b2d _ZNKR4base8CallbackIFvvELNS_8internal8CopyModeE1ELNS2_10RepeatModeE1EE3RunEv
#21 0x7f4bc8cb2b2b content::StartupTaskRunner::RunAllTasksNow()
#22 0x7f4bc811cd30 content::BrowserMainLoop::CreateStartupTasks()
#23 0x7f4bc812b197 content::BrowserMainRunnerImpl::Initialize()
#24 0x7f4bc81193ff content::BrowserMain()
#25 0x7f4bc9952bc6 content::RunNamedProcessTypeMain()
#26 0x7f4bc9954caf content::ContentMainRunnerImpl::Run()
#27 0x7f4bc995185a content::ContentServiceManagerMainDelegate::RunEmbedderProcess()
#28 0x7f4bcf47bd47 service_manager::Main()
#29 0x7f4bc99526eb content::ContentMain()
#30 0x55a48d42a3bc ChromeMain
#31 0x55a48d42a2b2 main
#32 0x7f4bb3610f45 __libc_start_main
#33 0x55a48d42a194 <unknown>


Second Creation:

#0 0x7f4bcecb48eb base::debug::StackTrace::StackTrace()
#1 0x7f4bcecb362c base::debug::StackTrace::StackTrace()
#2 0x7f4bc00b48c9 ash::Shell::CreateKeyboard()
#3 0x7f4bc00b8d91 ash::Shell::OnSessionStateChanged()
#4 0x7f4bc004b96f ash::SessionController::SetSessionState()
#5 0x7f4bc004b883 ash::SessionController::SetSessionInfo()
#6 0x7f4bbea4d713 ash::mojom::SessionControllerStubDispatch::Accept()
#7 0x7f4bc00502b3 ash::mojom::SessionControllerStub<>::Accept()
#8 0x7f4bcf151f52 mojo::InterfaceEndpointClient::HandleValidatedMessage()
#9 0x7f4bcf151911 mojo::InterfaceEndpointClient::HandleIncomingMessageThunk::Accept()
#10 0x7f4bcf14f810 mojo::FilterChain::Accept()
#11 0x7f4bcf15378f mojo::InterfaceEndpointClient::HandleIncomingMessage()
#12 0x7f4bcf167f0c mojo::internal::MultiplexRouter::ProcessIncomingMessage()
#13 0x7f4bcf167794 mojo::internal::MultiplexRouter::Accept()
#14 0x7f4bcf14f810 mojo::FilterChain::Accept()
#15 0x7f4bcf144612 mojo::Connector::ReadSingleMessage()
#16 0x7f4bcf14518e mojo::Connector::ReadAllAvailableMessages()
#17 0x7f4bcf144fde mojo::Connector::OnHandleReadyInternal()
#18 0x7f4bcf144edb mojo::Connector::OnWatcherHandleReady()
#19 0x7f4bcf147e1c _ZN4base8internal13FunctorTraitsIMN4mojo9ConnectorEFvjEvE6InvokeIPS3_JjEEEvS5_OT_DpOT0_
#20 0x7f4bcf147d26 _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIRKMN4mojo9ConnectorEFvjEJPS5_jEEEvOT_DpOT0_
#21 0x7f4bcf147cb7 _ZN4base8internal7InvokerINS0_9BindStateIMN4mojo9ConnectorEFvjEJNS0_17UnretainedWrapperIS4_EEEEEFvjEE7RunImplIRKS6_RKSt5tupleIJS8_EEJLm0EEEEvOT_OT0_NS_13IndexSequenceIJXspT1_EEEEOj
#22 0x7f4bcf147bbc _ZN4base8internal7InvokerINS0_9BindStateIMN4mojo9ConnectorEFvjEJNS0_17UnretainedWrapperIS4_EEEEEFvjEE3RunEPNS0_13BindStateBaseEOj
#23 0x7f4bcf43cb81 _ZNKR4base8CallbackIFvjELNS_8internal8CopyModeE1ELNS2_10RepeatModeE1EE3RunEj
#24 0x7f4bcf43bfd1 mojo::SimpleWatcher::OnHandleReady()
#25 0x7f4bcf43d573 _ZN4base8internal13FunctorTraitsIMN4mojo13SimpleWatcherEFvijEvE6InvokeIRKNS_7WeakPtrIS3_EEJRKiRKjEEEvS5_OT_DpOT0_
#26 0x7f4bcf43d3c4 _ZN4base8internal12InvokeHelperILb1EvE8MakeItSoIRKMN4mojo13SimpleWatcherEFvijERKNS_7WeakPtrIS5_EEJRKiRKjEEEvOT_OT0_DpOT1_
#27 0x7f4bcf43d324 _ZN4base8internal7InvokerINS0_9BindStateIMN4mojo13SimpleWatcherEFvijEJNS_7WeakPtrIS4_EEijEEEFvvEE7RunImplIRKS6_RKSt5tupleIJS8_ijEEJLm0ELm1ELm2EEEEvOT_OT0_NS_13IndexSequenceIJXspT1_EEEE
#28 0x7f4bcf43d1cc _ZN4base8internal7InvokerINS0_9BindStateIMN4mojo13SimpleWatcherEFvijEJNS_7WeakPtrIS4_EEijEEEFvvEE3RunEPNS0_13BindStateBaseE
#29 0x7f4bcec73d2e _ZNO4base8CallbackIFvvELNS_8internal8CopyModeE0ELNS2_10RepeatModeE0EE3RunEv
#30 0x7f4bcecb9de1 base::debug::TaskAnnotator::RunTask()
#31 0x7f4bced482ee base::MessageLoop::RunTask()
#32 0x7f4bced48557 base::MessageLoop::DeferOrRunPendingTask()
#33 0x7f4bced487ad base::MessageLoop::DoWork()
#34 0x7f4bced5a6dc base::MessagePumpLibevent::Run()
#35 0x7f4bced47dc3 base::MessageLoop::Run()
#36 0x7f4bcede6f67 base::RunLoop::Run()
#37 0x55a48f46f166 ChromeBrowserMainParts::MainMessageLoopRun()
#38 0x7f4bc811f8fb content::BrowserMainLoop::RunMainMessageLoopParts()
#39 0x7f4bc812b4b5 content::BrowserMainRunnerImpl::Run()
#40 0x7f4bc8119438 content::BrowserMain()
#41 0x7f4bc9952bc6 content::RunNamedProcessTypeMain()
#42 0x7f4bc9954caf content::ContentMainRunnerImpl::Run()
#43 0x7f4bc995185a content::ContentServiceManagerMainDelegate::RunEmbedderProcess()
#44 0x7f4bcf47bd47 service_manager::Main()
#45 0x7f4bc99526eb content::ContentMain()
#46 0x55a48d42a3bc ChromeMain
#47 0x55a48d42a2b2 main
#48 0x7f4bb3610f45 __libc_start_main
#49 0x55a48d42a194 <unknown>

I suspect the 'regression'/change here might be that the Shelf, and thus the VirtualKeyboardTray is now created sooner and has a chance to observe the first KeyboardController instance.
Status: Fixed (was: Started)
Project Member

Comment 11 by bugdroid1@chromium.org, Jun 1 2017

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

commit ce80702d421f8e1626e99d23dd54d83aec979b78
Author: bruthig <bruthig@chromium.org>
Date: Thu Jun 01 14:48:00 2017

Updated the VK Tray button to properly remove visual activated state.

The VirtualKeyboardTray button was attaching to a KeyboardController instance
that was being replaced without attaching itself as an observer to the new one.

BUG= 726273 
TEST=manual

Review-Url: https://codereview.chromium.org/2916653002
Cr-Commit-Position: refs/heads/master@{#476285}

[modify] https://crrev.com/ce80702d421f8e1626e99d23dd54d83aec979b78/ash/shell.cc
[modify] https://crrev.com/ce80702d421f8e1626e99d23dd54d83aec979b78/ash/shell_observer.h
[modify] https://crrev.com/ce80702d421f8e1626e99d23dd54d83aec979b78/ash/system/virtual_keyboard/virtual_keyboard_tray.cc
[modify] https://crrev.com/ce80702d421f8e1626e99d23dd54d83aec979b78/ash/system/virtual_keyboard/virtual_keyboard_tray.h

Comment 12 by dchan@chromium.org, Jan 22 2018

Status: Archived (was: Fixed)

Sign in to add a comment