can't log in to U1 while buying app

Bug #1612166 reported by Selene ToyKeeper
18
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Canonical System Image
Fix Released
Critical
Michał Sawicz
qtmir (Ubuntu)
Fix Released
Critical
Daniel d'Andrada

Bug Description

Lately I've found that the keyboard refuses to show up during app store login while attempting to buy an app. I traced the issue down to krillin rc-proposed 376, which had only one landing -- maliit-framework + qtmir, with this description: "Check focus before granting input access in maliit".

Steps to reproduce the issue: (what I did, at least, some details might be extra)
1. Flash the phone totally fresh, removing all previous state.
2. Go to the click store.
3. Scroll down to "cut the rope", tap it, then tap its price to attempt an install.
4. Tap the U1 login input fields and try to get the keyboard to appear.

Expected results: OSK appears and login can be completed.

Actual results: OSK refuses to show up even though it works elsewhere on the phone.

Something about pay-ui seems to interfere with input / focus detection in this specific case.

Here is the landing and its MP:
https://requests.ci-train.ubuntu.com/#/ticket/1595
https://code.launchpad.net/~dandrader/qtmir/dbusFocusInfo/+merge/298253

Related branches

Changed in canonical-devices-system-image:
assignee: nobody → Michał Sawicz (saviq)
importance: Undecided → Critical
milestone: none → 13
status: New → Confirmed
tags: added: regression-proposed
Revision history for this message
Selene ToyKeeper (toykeeper) wrote :

Note, it's still possible to log in via USS -> Accounts -> U1. The exact same interface works fine when accessed from a different UI flow. It's just the out-of-box first-app flow which runs into issues, and only if a U1 account wasn't already connected.

So, there's an easy workaround. But it can make for an unfortunate new-user experience.

description: updated
Revision history for this message
Selene ToyKeeper (toykeeper) wrote :

I've also determined this only affects paid apps. The free ones appear to work fine, but if someone tries to buy a paid app without a connected account, the login UI doesn't allow the user to type.

summary: - can't log in to U1 from app store
+ can't log in to U1 while buying app
description: updated
Michał Sawicz (saviq)
Changed in canonical-devices-system-image:
status: Confirmed → Triaged
Changed in qtmir:
assignee: nobody → Daniel d'Andrada (dandrader)
importance: Undecided → Critical
status: New → Triaged
affects: qtmir → unity8 (Ubuntu)
Changed in unity8 (Ubuntu):
assignee: Daniel d'Andrada (dandrader) → nobody
Revision history for this message
Michał Sawicz (saviq) wrote :

some relevant logs:

WARNING: Application attempted to activate itself without focus, PID: 6744

[2016-08-25:10:36:14.944] qtmir.dbus: DBusFocusInfo: pid 6744 is in cgroup "/" which is not app-specific

phablet 6744 1.6 2.7 308252 54488 ? Sl 10:36 0:01 /usr/bin/online-accounts-ui --socket /run/user/32011/online-accounts-ui/ui-1-ubuntuone --profile unconfined

affects: unity8 (Ubuntu) → qtmir (Ubuntu)
Changed in qtmir (Ubuntu):
assignee: nobody → Daniel d'Andrada (dandrader)
Revision history for this message
Michał Sawicz (saviq) wrote :

A bit more logs:

[2016-08-25:10:57:18.258] qtmir.dbus: DBusFocusInfo: pid 11168 is in cgroup "/" which is not app-specific
[2016-08-25:10:57:18.258] qtmir.dbus: DBusFocusInfo: looking at session[0x95db18,name="unity8-dash",pid=8125]
[2016-08-25:10:57:18.258] qtmir.dbus: DBusFocusInfo: looking at child session[0xa23a10,name="payui.qml",pid=11110]
[2016-08-25:10:57:18.259] qtmir.dbus: DBusFocusInfo.isPidFocused(11168) pidSet=QSet(11168) found no session

phablet 11110 12.6 4.7 660008 94976 ? Sl 10:57 0:10 /usr/lib/arm-linux-gnueabihf/qt5/bin/qmlscene /usr/share/payui/qml/payui.qml purchase://com.zeptolab.cuttherope.full
phablet 11168 1.6 2.6 308124 54044 ? Sl 10:57 0:01 /usr/bin/online-accounts-ui --socket /run/user/32011/online-accounts-ui/ui-1-ubuntuone --profile unconfined

Looks like the online accounts UI isn't a child of the app surface, is it maybe a child of the pay ui? Should we recurse?

Revision history for this message
Michał Sawicz (saviq) wrote :

A bit more naive debugging revealed that indeed we need to look at all descendants, not just direct children:

[2016-08-25:11:24:30.175] qtmir.dbus: DBusFocusInfo: pid 13344 is in cgroup "/" which is not app-specific
[2016-08-25:11:24:30.175] qtmir.dbus: DBusFocusInfo: looking at session[0x1006130,name="unity8-dash",pid=12709]
[2016-08-25:11:24:30.177] qtmir.dbus: DBusFocusInfo: looking at child session[0x8f4500,name="payui.qml",pid=13293]
[2016-08-25:11:24:30.178] qtmir.dbus: DBusFocusInfo: looking at grandchild session[0xe138c8,name="online-accounts-ui",pid=13344]
[2016-08-25:11:24:30.178] qtmir.dbus: DBusFocusInfo.isPidFocused(13344) pidSet=QSet(13344) found session[0xe138c8,name="online-accounts-ui",pid=13344] with activeFocus=true

Changed in qtmir (Ubuntu):
status: Triaged → In Progress
Michał Sawicz (saviq)
Changed in canonical-devices-system-image:
status: Triaged → In Progress
Revision history for this message
Selene ToyKeeper (toykeeper) wrote :
Changed in canonical-devices-system-image:
status: In Progress → Fix Committed
Changed in qtmir (Ubuntu):
status: In Progress → Fix Released
Changed in canonical-devices-system-image:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.