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

Issue 676993 link

Starred by 1 user

Issue metadata

Status: Verified
Owner:
No longer actively working on Chrom...
Closed: Feb 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: iOS
Pri: 2
Type: Bug



Sign in to add a comment

Able to access omnibox through bluetooth keyboard when settings or Bookmarks screen is ON.

Project Member Reported by pmadalla@chromium.org, Dec 26 2016

Issue description

App Version: 57.0.2960.0 canary,
iOS Version: 9.3.5, iOS 10
Device: iPad

PreCondition :  
1.Connect the Bluetooth keyboard to the device.

Steps to reproduce:
 1. Launch chrome.
 2. Type in  “ ⌘ , “ in the bluetooth keyboard to open Settings dialog
 3. Press “tab” key in bluetooth keyboard. 

Observed results:
Able to access omnibox

Expected results:
Background should be disabled when settings,bookmarks and history screens are present.

Number of times you were able to reproduce: 5/5
Bug reproducible after clean install: Yes
Bug reproducible after clearing cache and cookies: Yes
Bug reproducible on Chrome Mobile on Android: NA
Bug reproducible on Dolphin/Safari/Firefox: NA
Bug reproducible on current stable build (App Version, iOS Version): Yes in M55
Bug reproducible on the current beta channel build (App Version, iOS Version): Yes in M56

Link to Video :
https://drive.google.com/a/google.com/file/d/0B--UpU2GW2EpZHpUb3N1UXpGYUk/view?usp=sharing

 
Labels: -found-in-m56 found-in-M57
Labels: M-57
Owner: lpromero@chromium.org
Status: Assigned (was: Untriaged)
Cc: noyau@chromium.org
Components: UI>Browser>Bookmarks
Louis, could you please look if settings should move focus from omnibox. CCing Eric for bookmarks, which probably should do the same.
I initially thought we were the one focusing the omnibox via keyboard commands, but turns out we never handle the tab key (@"\t").

It is the keyboard that decides to focus the omnibox via:
* thread #1: tid = 0x92dd81, 0x0000000119704351 UIKit`-[UIResponder becomeFirstResponder], name = 'CrWebMain', queue = 'com.apple.main-thread', stop reason = breakpoint 5.1
    frame #0: 0x0000000119704351 UIKit`-[UIResponder becomeFirstResponder]
    frame #1: 0x000000011959da87 UIKit`-[UIView(Hierarchy) becomeFirstResponder] + 138
    frame #2: 0x0000000119ffd7a8 UIKit`-[UITextField becomeFirstResponder] + 51
  * frame #3: 0x000000010f5b7e36 Chromium`::-[OmniboxTextFieldIOS becomeFirstResponder](self=0x00007f811301e000, _cmd="becomeFirstResponder") + 54 at omnibox_text_field_ios.mm:994
    frame #4: 0x00000001197bbb66 UIKit`-[UIKeyboardImpl handleTabWithShift:beforePublicKeyCommands:] + 352
    frame #5: 0x00000001197b26c8 UIKit`-[UIKeyboardImpl handleKeyCommand:repeatOkay:beforePublicKeyCommands:] + 1578
    frame #6: 0x00000001197cdcb1 UIKit`-[UIKeyboardImpl handleKeyEvent:executionContext:] + 1233
    frame #7: 0x000000011a03d36b UIKit`-[UIKeyboardTaskQueue continueExecutionOnMainThread] + 385
    frame #8: 0x00000001197cd74f UIKit`-[UIKeyboardImpl handleKeyEvent:] + 215
    frame #9: 0x000000011adb044c CoreFoundation`__invoking___ + 140
    frame #10: 0x000000011adb02d1 CoreFoundation`-[NSInvocation invoke] + 289
    frame #11: 0x0000000119cd80b7 UIKit`-[UIRepeatedAction invoke] + 293
    frame #12: 0x0000000119cd80ed UIKit`-[UIRepeatedAction _preInvocationTimerFire] + 22
    frame #13: 0x000000011950bce2 UIKit`-[UIApplication _handleKeyUIEvent:] + 2183
    frame #14: 0x00000001197060bd UIKit`-[UIResponder _handleKeyUIEvent:] + 79
    frame #15: 0x00000001197060bd UIKit`-[UIResponder _handleKeyUIEvent:] + 79
    frame #16: 0x00000001197060bd UIKit`-[UIResponder _handleKeyUIEvent:] + 79
    frame #17: 0x00000001197060bd UIKit`-[UIResponder _handleKeyUIEvent:] + 79
    frame #18: 0x00000001197060bd UIKit`-[UIResponder _handleKeyUIEvent:] + 79
    frame #19: 0x00000001197060bd UIKit`-[UIResponder _handleKeyUIEvent:] + 79
    frame #20: 0x00000001197060bd UIKit`-[UIResponder _handleKeyUIEvent:] + 79
    frame #21: 0x00000001197060bd UIKit`-[UIResponder _handleKeyUIEvent:] + 79
    frame #22: 0x00000001197060bd UIKit`-[UIResponder _handleKeyUIEvent:] + 79
    frame #23: 0x00000001197060bd UIKit`-[UIResponder _handleKeyUIEvent:] + 79
    frame #24: 0x00000001197060bd UIKit`-[UIResponder _handleKeyUIEvent:] + 79
    frame #25: 0x00000001197060bd UIKit`-[UIResponder _handleKeyUIEvent:] + 79
    frame #26: 0x00000001197060bd UIKit`-[UIResponder _handleKeyUIEvent:] + 79
    frame #27: 0x00000001197060bd UIKit`-[UIResponder _handleKeyUIEvent:] + 79
    frame #28: 0x000000011950b175 UIKit`-[UIApplication handleKeyUIEvent:] + 103
    frame #29: 0x000000011950b0ee UIKit`-[UIApplication handleKeyHIDEvent:] + 665
    frame #30: 0x0000000119cf6f96 UIKit`__dispatchPreprocessedEventFromEventQueue + 1305
    frame #31: 0x0000000119cf0463 UIKit`__handleEventQueue + 4879
    frame #32: 0x000000011adce761 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    frame #33: 0x000000011adb398c CoreFoundation`__CFRunLoopDoSources0 + 556
    frame #34: 0x000000011adb2e76 CoreFoundation`__CFRunLoopRun + 918
    frame #35: 0x000000011adb2884 CoreFoundation`CFRunLoopRunSpecific + 420
    frame #36: 0x0000000120540a6f GraphicsServices`GSEventRunModal + 161
    frame #37: 0x00000001194ecc68 UIKit`UIApplicationMain + 159
    frame #38: 0x000000010ec9856a Chromium`main(argc=1, argv=0x00007fff50f688e8) + 1082 at chrome_exe_main.mm:66
    frame #39: 0x0000000122a4968d libdyld.dylib`start + 1
    frame #40: 0x0000000122a4968d libdyld.dylib`start + 1


Note the handleTabWithShift:beforePublicKeyCommands, so I don't think that adding a no-op key command would work.

I found out that when the BookmarkEditViewController is up, the first responder is nil and the bug reproes.
But when I let the BookmarkEditViewController become first responder, the bug doesn't repro.
Having all screens becoming first responders is going to be tricky…
Labels: -M-57 M-58
Status: Started (was: Assigned)
https://codereview.chromium.org/2718683002/
I couldn't test this with EarlGrey, I filed a bug for them to implement simulated key presses.
If it comes, I'll add tests in https://codereview.chromium.org/2714933002/.

Moving to M58 as this is not a regression.
Cc: cma...@chromium.org
Claude, is Franky able to perform external keyboard events?
Project Member

Comment 7 by bugdroid1@chromium.org, Feb 24 2017

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

commit a4a59720181d50024b86da5937cc7ae459f725a6
Author: lpromero <lpromero@chromium.org>
Date: Fri Feb 24 15:49:16 2017

Let modal view controllers become first responder when presented.

By becoming first responder, they become the recipient of key presses
and prevent the system to automatically focus the omnibox by calling
-[UIKeyboardImpl handleTabWithShift:beforePublicKeyCommands:] when the
tab key is pressed.

BUG= 676993 
R=gambard@chromium.org

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

[modify] https://crrev.com/a4a59720181d50024b86da5937cc7ae459f725a6/ios/chrome/browser/ui/bookmarks/bookmark_navigation_controller.mm
[modify] https://crrev.com/a4a59720181d50024b86da5937cc7ae459f725a6/ios/chrome/browser/ui/history/history_panel_view_controller.mm
[modify] https://crrev.com/a4a59720181d50024b86da5937cc7ae459f725a6/ios/chrome/browser/ui/reading_list/reading_list_view_controller.mm
[modify] https://crrev.com/a4a59720181d50024b86da5937cc7ae459f725a6/ios/chrome/browser/ui/settings/settings_navigation_controller.mm

Project Member

Comment 8 by bugdroid1@chromium.org, Feb 24 2017

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chrome/ios_internal.git/+/b2f7720512a7e920272c5bcaef89d59fea79c36a

commit b2f7720512a7e920272c5bcaef89d59fea79c36a
Author: lpromero <lpromero@google.com>
Date: Fri Feb 24 16:58:34 2017

Status: Fixed (was: Started)
Status: Verified (was: Fixed)
Verified on chrome canary version 58.0.3026.0 on iPad Mini 10.2.1/9.3.5. Background is disabled when settings, bookmarks and history screens are present. 

Sign in to add a comment