New issue
Advanced search Search tips

Issue 873116 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 3
Type: Bug



Sign in to add a comment

SigninManagerAndroid hardcodes USER_CLICKED_SIGNOUT_SETTINGS as reason for all SignOuts

Project Member Reported by chcunningham@chromium.org, Aug 10

Issue description

Described by TODO and code here
https://cs.chromium.org/chromium/src/chrome/browser/android/signin/signin_manager_android.cc?rcl=f2f75f326f9fb7b36d8829440104d599474f3bda&l=216

SignOut() calls happen for a number of other reasons, so these should be properly plumbed.

This hardcoded reason is sent to UMA
https://cs.chromium.org/chromium/src/components/signin/core/browser/signin_metrics.cc?rcl=f2f75f326f9fb7b36d8829440104d599474f3bda&l=508

ChromeSigninClient also uses the reason to make behavior decisions in desktop code paths. 
https://cs.chromium.org/chromium/src/chrome/browser/signin/chrome_signin_client.cc?type=cs&q=signout_source_metric+f:chrome_signin_client.cc&sq=package:chromium&g=0&l=275

We would like to use the reason for android as well as part of upcoming work to refactor SigninManager::IsSignoutProhibited
https://docs.google.com/document/d/14esaufZT0fr258zL5I69y7YBBc24XsxtDU0B7wpWxBo/edit#bookmark=id.t69fnqpy377k
 
Owner: chcunningham@chromium.org
Status: Started (was: Untriaged)
Blocking: 866518
Project Member

Comment 4 by bugdroid1@chromium.org, Aug 31

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

commit 9e33ebd7109818eea40a7d1200781320e8375a06
Author: chcunningham <chcunningham@chromium.org>
Date: Fri Aug 31 21:06:25 2018

[Android] SigninManager: remove hypothetical SignOut loop

onNativeSignOut() triggers a call to signOut() -> nativeSignOut()

Parts of signOut() are needed, but the call to nativeSignOut() should
be avoided for flows that originated at the native side (native signout
is already done).

Change-Id: Ib205cfd61e94b49838e738b87c5cdb43b2d9f563
Bug: 873116
Reviewed-on: https://chromium-review.googlesource.com/1169462
Commit-Queue: Chrome Cunningham <chcunningham@chromium.org>
Reviewed-by: Boris Sazonov <bsazonov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#588164}
[modify] https://crrev.com/9e33ebd7109818eea40a7d1200781320e8375a06/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
[modify] https://crrev.com/9e33ebd7109818eea40a7d1200781320e8375a06/chrome/android/java_sources.gni
[add] https://crrev.com/9e33ebd7109818eea40a7d1200781320e8375a06/chrome/android/junit/src/org/chromium/chrome/browser/signin/SigninManagerTest.java
[modify] https://crrev.com/9e33ebd7109818eea40a7d1200781320e8375a06/chrome/browser/android/signin/signin_manager_android.cc
[modify] https://crrev.com/9e33ebd7109818eea40a7d1200781320e8375a06/chrome/browser/android/signin/signin_manager_android.h

Project Member

Comment 5 by bugdroid1@chromium.org, Sep 7

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

commit 460b33178a96c926496c3f63eac1ab08d8fe9c79
Author: chcunningham <chcunningham@chromium.org>
Date: Fri Sep 07 18:47:50 2018

[Android] Plumb SignoutReason for SigninManagerAndroid

SigninManagerAndroid::SignOut() has historically hard coded the reason
as signin_metrics::USER_CLICKED_SIGNOUT_SETTINGS. This CL begins to
address the TODO there by plumbing the reason from the java layer and
various callers.

For now the CL preserves the existing "USER_CLICKED" everywhere. Follow
up work should change this reason to reflect the real trigger.

Change-Id: Id225b9bf5e9b9fd5771c2353616c6a1a82e60af8
Bug: 873116
Reviewed-on: https://chromium-review.googlesource.com/1170763
Reviewed-by: David Roger <droger@chromium.org>
Reviewed-by: Theresa <twellington@chromium.org>
Reviewed-by: Bernhard Bauer <bauerb@chromium.org>
Reviewed-by: Boris Sazonov <bsazonov@chromium.org>
Commit-Queue: Chrome Cunningham <chcunningham@chromium.org>
Cr-Commit-Position: refs/heads/master@{#589607}
[modify] https://crrev.com/460b33178a96c926496c3f63eac1ab08d8fe9c79/chrome/android/java/src/org/chromium/chrome/browser/preferences/SyncAndServicesPreferences.java
[modify] https://crrev.com/460b33178a96c926496c3f63eac1ab08d8fe9c79/chrome/android/java/src/org/chromium/chrome/browser/services/GoogleServicesManager.java
[modify] https://crrev.com/460b33178a96c926496c3f63eac1ab08d8fe9c79/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java
[modify] https://crrev.com/460b33178a96c926496c3f63eac1ab08d8fe9c79/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
[modify] https://crrev.com/460b33178a96c926496c3f63eac1ab08d8fe9c79/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
[modify] https://crrev.com/460b33178a96c926496c3f63eac1ab08d8fe9c79/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncAccountSwitcher.java
[modify] https://crrev.com/460b33178a96c926496c3f63eac1ab08d8fe9c79/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/SyncCustomizationFragment.java
[modify] https://crrev.com/460b33178a96c926496c3f63eac1ab08d8fe9c79/chrome/android/javatests/src/org/chromium/chrome/browser/history/HistoryActivityTest.java
[modify] https://crrev.com/460b33178a96c926496c3f63eac1ab08d8fe9c79/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninTest.java
[modify] https://crrev.com/460b33178a96c926496c3f63eac1ab08d8fe9c79/chrome/android/junit/src/org/chromium/chrome/browser/signin/SigninManagerTest.java
[modify] https://crrev.com/460b33178a96c926496c3f63eac1ab08d8fe9c79/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java
[modify] https://crrev.com/460b33178a96c926496c3f63eac1ab08d8fe9c79/chrome/browser/android/signin/signin_manager_android.cc
[modify] https://crrev.com/460b33178a96c926496c3f63eac1ab08d8fe9c79/chrome/browser/android/signin/signin_manager_android.h
[modify] https://crrev.com/460b33178a96c926496c3f63eac1ab08d8fe9c79/components/signin/core/browser/signin_metrics.h

Project Member

Comment 6 by bugdroid1@chromium.org, Sep 17

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

commit 45fefd334fc65149b83f211f22973bb47568e67a
Author: chcunningham <chcunningham@chromium.org>
Date: Mon Sep 17 19:02:03 2018

[Android] SingninHelper: give correct reason for rename SignOut()

This SignOut() call is not triggered by a user clicking signout
settings. This CL passes a reason to indicate that SignOut was not user
driven.

Bug: 873116, 866518
Change-Id: I2990769d11ec5d02add1b37dabf54926b47e9d32
Reviewed-on: https://chromium-review.googlesource.com/1170775
Reviewed-by: David Roger <droger@chromium.org>
Reviewed-by: Boris Sazonov <bsazonov@chromium.org>
Commit-Queue: Chrome Cunningham <chcunningham@chromium.org>
Cr-Commit-Position: refs/heads/master@{#591760}
[modify] https://crrev.com/45fefd334fc65149b83f211f22973bb47568e67a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
[modify] https://crrev.com/45fefd334fc65149b83f211f22973bb47568e67a/components/signin/core/browser/signin_metrics.h
[modify] https://crrev.com/45fefd334fc65149b83f211f22973bb47568e67a/tools/metrics/histograms/enums.xml

Cc: -bsazonov@chromium.org
Owner: bsazonov@chromium.org
Status: Assigned (was: Started)
Boris, I'll leave it to you and the team to tackle the remaining work here. I updated one of the reasons (comment 6) but the rest are still USER_CLICKED_...

As of https://chromium-review.googlesource.com/c/chromium/src/+/1175797/, the "reason" for sign-out becomes critical to deciding whether sign-out is allowed (i.e. not prohibited by policy). Sign-outs that user USER_CLICKED_... as a reason will appear as user-initiated and may end up disallowed.

In practice this is not a behavior change for android. It was historically the case that IsSignoutProhibited() potentially prohibited *all* sign-outs regardless of reason, so the fact that android uses USER_CLICKED_... almost everywhere just maintains the status quo. But Android may have non-user-initated signouts that should be allowed (similar to the ACCOUNT_REMOVED_FROM_DEVICE sign-out in comment 6). 

Additionally, using the right reason is desirable from a metrics pov. 
Blocking: -866518

Sign in to add a comment