Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(344)

Issue 2184823007: Add a feature which, when enabled, blocks permissions after X prompt dismissals. (Closed)

Created:
4 years, 4 months ago by dominickn
Modified:
4 years, 2 months ago
CC:
chromium-reviews, mlamouri+watch-permissions_chromium.org, markusheintz_, msramek+watch_chromium.org, raymes+watch_chromium.org, tsergeant, benwells, kcarattini, lgarron
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Add a feature which, when enabled, blocks permissions after X prompt dismissals. This CL implements automatic permission blocking after a user has dismissed a prompt a certain number of times (3 by default). This is gated behind a feature which is disabled by default. The number of dismissals required to trigger the blocking is controllable via a variation parameter. Additional unittests are added to ensure this behaves as expected, with and without custom parameters from variations. This CL also adds a hook to BrowsingDataRemover to remove the counts when the user clears their site data. Unittests for this are also implemented. At each dismiss|ignore of a permission prompt, the number of preceding dismissals|ignores is logged to UMA so we can sample how many users are repeatedly dismissing prompts or repeatedly ignoring prompts. It is intended to gather metrics (and potentially experiment with) the dismissal switch starting with M54 on stable to observe whether it improves permission prompt UX and decision rates. BUG=632269 Committed: https://crrev.com/6947d75c181dc3f7484b77c25ba053cbda75fbe1 Cr-Commit-Position: refs/heads/master@{#410920}

Patch Set 1 #

Total comments: 12

Patch Set 2 : Rebase #

Patch Set 3 : Improve test #

Total comments: 17

Patch Set 4 : Extract into independent class #

Patch Set 5 : Remove unnecessary PermissionUtil changes #

Total comments: 18

Patch Set 6 : Metrics. Enable test on Android. Variations test. Clear data when history cleared #

Patch Set 7 : Unify implementation in permission_context_base, make log static #

Total comments: 36

Patch Set 8 : Address comments #

Total comments: 8

Patch Set 9 : Add ignore logging and UMA. Addressing comments #

Patch Set 10 : Fix unit test #

Total comments: 6

Patch Set 11 : Address comments #

Total comments: 6

Patch Set 12 : Addressing comments, adding BDR test #

Total comments: 2

Patch Set 13 : Addressing nits #

Total comments: 1
Unified diffs Side-by-side diffs Delta from patch set Stats (+861 lines, -25 lines) Patch
M chrome/browser/browsing_data/browsing_data_remover.cc View 1 2 3 4 5 6 7 8 9 10 11 2 chunks +3 lines, -0 lines 0 comments Download
M chrome/browser/browsing_data/browsing_data_remover_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 4 chunks +138 lines, -0 lines 0 comments Download
M chrome/browser/permissions/permission_context_base.h View 1 2 3 4 5 6 7 8 3 chunks +6 lines, -3 lines 0 comments Download
M chrome/browser/permissions/permission_context_base.cc View 1 2 3 4 5 6 7 8 4 chunks +13 lines, -0 lines 0 comments Download
M chrome/browser/permissions/permission_context_base_unittest.cc View 1 2 3 4 5 6 7 8 9 8 chunks +209 lines, -14 lines 1 comment Download
A chrome/browser/permissions/permission_decision_auto_blocker.h View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +61 lines, -0 lines 0 comments Download
A chrome/browser/permissions/permission_decision_auto_blocker.cc View 1 2 3 4 5 6 7 8 9 10 1 chunk +168 lines, -0 lines 0 comments Download
A chrome/browser/permissions/permission_decision_auto_blocker_unittest.cc View 1 2 3 4 5 6 7 8 1 chunk +104 lines, -0 lines 0 comments Download
M chrome/browser/permissions/permission_infobar_delegate.cc View 1 2 3 4 5 6 7 8 2 chunks +4 lines, -0 lines 0 comments Download
M chrome/browser/permissions/permission_request_impl.h View 1 2 3 4 5 6 7 8 1 chunk +0 lines, -1 line 0 comments Download
M chrome/browser/permissions/permission_request_impl.cc View 1 2 3 4 5 6 7 8 2 chunks +4 lines, -1 line 0 comments Download
M chrome/browser/permissions/permission_uma_util.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +10 lines, -0 lines 0 comments Download
M chrome/browser/permissions/permission_uma_util.cc View 1 2 3 4 5 6 7 8 9 10 4 chunks +97 lines, -6 lines 0 comments Download
M chrome/chrome_browser.gypi View 1 2 3 4 5 6 7 8 1 chunk +2 lines, -0 lines 0 comments Download
M chrome/chrome_tests_unit.gypi View 1 2 3 4 5 6 7 8 1 chunk +1 line, -0 lines 0 comments Download
M chrome/common/chrome_features.h View 1 2 3 4 5 6 7 8 1 chunk +2 lines, -0 lines 0 comments Download
M chrome/common/chrome_features.cc View 1 2 3 4 5 6 7 8 1 chunk +5 lines, -0 lines 0 comments Download
M components/content_settings/core/browser/website_settings_registry.cc View 1 2 1 chunk +6 lines, -0 lines 0 comments Download
M components/content_settings/core/common/content_settings.cc View 1 2 3 4 5 6 7 1 chunk +1 line, -0 lines 0 comments Download
M components/content_settings/core/common/content_settings_types.h View 1 2 3 4 5 6 7 1 chunk +1 line, -0 lines 0 comments Download
M tools/metrics/histograms/histograms.xml View 1 2 3 4 5 6 7 8 9 10 11 2 chunks +26 lines, -0 lines 0 comments Download

Messages

Total messages: 85 (59 generated)
dominickn
Hi raymes, PTAL! This is the first time I've worked in permissions code, so please ...
4 years, 4 months ago (2016-07-28 07:12:01 UTC) #4
raymes
This is really cool Dom! I made a start at reviewing but didn't have time ...
4 years, 4 months ago (2016-07-28 08:07:50 UTC) #14
kcarattini
Thanks for doing this Dom! https://codereview.chromium.org/2184823007/diff/40001/chrome/browser/permissions/permission_context_base.cc File chrome/browser/permissions/permission_context_base.cc (right): https://codereview.chromium.org/2184823007/diff/40001/chrome/browser/permissions/permission_context_base.cc#newcode224 chrome/browser/permissions/permission_context_base.cc:224: persist = true; On ...
4 years, 4 months ago (2016-07-28 08:54:50 UTC) #18
dominickn
PTAL, thanks https://codereview.chromium.org/2184823007/diff/1/chrome/browser/permissions/permission_util.cc File chrome/browser/permissions/permission_util.cc (right): https://codereview.chromium.org/2184823007/diff/1/chrome/browser/permissions/permission_util.cc#newcode35 chrome/browser/permissions/permission_util.cc:35: if (!settings) On 2016/07/28 08:07:50, raymes wrote: ...
4 years, 4 months ago (2016-08-01 01:08:51 UTC) #20
raymes
Thanks for breaking out the new code :) Just a few more comments. https://codereview.chromium.org/2184823007/diff/40001/chrome/browser/permissions/permission_context_base.cc File ...
4 years, 4 months ago (2016-08-01 05:09:11 UTC) #22
kcarattini
https://codereview.chromium.org/2184823007/diff/40001/chrome/browser/permissions/permission_context_base.cc File chrome/browser/permissions/permission_context_base.cc (right): https://codereview.chromium.org/2184823007/diff/40001/chrome/browser/permissions/permission_context_base.cc#newcode224 chrome/browser/permissions/permission_context_base.cc:224: persist = true; On 2016/08/01 05:09:11, raymes wrote: > ...
4 years, 4 months ago (2016-08-01 07:09:52 UTC) #23
battre
I did not review this in detail but have a thought on this: It would ...
4 years, 4 months ago (2016-08-02 07:09:07 UTC) #25
dominickn
On 2016/08/02 07:09:07, battre wrote: > I did not review this in detail but have ...
4 years, 4 months ago (2016-08-02 07:19:13 UTC) #26
dominickn
PTAL, thanks! https://codereview.chromium.org/2184823007/diff/80001/chrome/browser/permissions/permission_context_base_unittest.cc File chrome/browser/permissions/permission_context_base_unittest.cc (right): https://codereview.chromium.org/2184823007/diff/80001/chrome/browser/permissions/permission_context_base_unittest.cc#newcode215 chrome/browser/permissions/permission_context_base_unittest.cc:215: EXPECT_EQ(i+1, permission_context.decisions().size()); On 2016/08/01 05:09:11, raymes wrote: ...
4 years, 4 months ago (2016-08-03 05:38:46 UTC) #39
raymes
Thanks for getting the tests working Dom! The comments below are mainly minor. Maybe Ben ...
4 years, 4 months ago (2016-08-05 03:27:48 UTC) #42
dominickn
https://codereview.chromium.org/2184823007/diff/120001/chrome/browser/permissions/permission_context_base.h File chrome/browser/permissions/permission_context_base.h (right): https://codereview.chromium.org/2184823007/diff/120001/chrome/browser/permissions/permission_context_base.h#newcode167 chrome/browser/permissions/permission_context_base.h:167: static base::LazyInstance<PermissionPromptDecisionLog> prompt_decision_log_; On 2016/08/05 03:27:47, raymes wrote: > ...
4 years, 4 months ago (2016-08-05 04:29:31 UTC) #44
raymes
permissions lgtm with a few comments :) https://codereview.chromium.org/2184823007/diff/120001/chrome/browser/permissions/permission_prompt_decision_log.cc File chrome/browser/permissions/permission_prompt_decision_log.cc (right): https://codereview.chromium.org/2184823007/diff/120001/chrome/browser/permissions/permission_prompt_decision_log.cc#newcode111 chrome/browser/permissions/permission_prompt_decision_log.cc:111: content::PermissionType permission) ...
4 years, 4 months ago (2016-08-06 00:50:21 UTC) #48
dominickn
Thanks! This new version also adds logging and UMA metrics for ignores on prompts. https://codereview.chromium.org/2184823007/diff/120001/chrome/browser/permissions/permission_prompt_decision_log.cc ...
4 years, 4 months ago (2016-08-08 02:18:29 UTC) #52
dominickn
+msramek: PTAL at the browsing data remover, and advise whether removing this new count with ...
4 years, 4 months ago (2016-08-08 04:13:07 UTC) #59
kcarattini
https://codereview.chromium.org/2184823007/diff/180001/chrome/browser/permissions/permission_decision_auto_blocker.cc File chrome/browser/permissions/permission_decision_auto_blocker.cc (right): https://codereview.chromium.org/2184823007/diff/180001/chrome/browser/permissions/permission_decision_auto_blocker.cc#newcode100 chrome/browser/permissions/permission_decision_auto_blocker.cc:100: RecordAction(url, permission, kPromptIgnoreCountKey); Can you rename RecordAction to make ...
4 years, 4 months ago (2016-08-08 06:14:32 UTC) #62
dominickn
https://codereview.chromium.org/2184823007/diff/180001/chrome/browser/permissions/permission_decision_auto_blocker.cc File chrome/browser/permissions/permission_decision_auto_blocker.cc (right): https://codereview.chromium.org/2184823007/diff/180001/chrome/browser/permissions/permission_decision_auto_blocker.cc#newcode100 chrome/browser/permissions/permission_decision_auto_blocker.cc:100: RecordAction(url, permission, kPromptIgnoreCountKey); On 2016/08/08 06:14:31, kcarattini wrote: > ...
4 years, 4 months ago (2016-08-08 06:26:08 UTC) #63
kcarattini
lgtm
4 years, 4 months ago (2016-08-08 06:40:29 UTC) #66
msramek
Kudos for proactively implementing this with a URL filter :) https://codereview.chromium.org/2184823007/diff/200001/chrome/browser/browsing_data/browsing_data_remover.cc File chrome/browser/browsing_data/browsing_data_remover.cc (right): https://codereview.chromium.org/2184823007/diff/200001/chrome/browser/browsing_data/browsing_data_remover.cc#newcode795 ...
4 years, 4 months ago (2016-08-08 17:09:53 UTC) #69
Ilya Sherman
Metrics LGTM % a request for clarification: https://codereview.chromium.org/2184823007/diff/200001/tools/metrics/histograms/histograms.xml File tools/metrics/histograms/histograms.xml (right): https://codereview.chromium.org/2184823007/diff/200001/tools/metrics/histograms/histograms.xml#newcode39512 tools/metrics/histograms/histograms.xml:39512: + the ...
4 years, 4 months ago (2016-08-08 20:04:56 UTC) #70
Lei Zhang
On 2016/08/08 04:13:07, dominickn wrote: > +thestig: PTAL at chrome/common/ lgtm
4 years, 4 months ago (2016-08-08 20:24:44 UTC) #71
dominickn
msramek: Thanks! PTAL. https://codereview.chromium.org/2184823007/diff/200001/chrome/browser/browsing_data/browsing_data_remover.cc File chrome/browser/browsing_data/browsing_data_remover.cc (right): https://codereview.chromium.org/2184823007/diff/200001/chrome/browser/browsing_data/browsing_data_remover.cc#newcode795 chrome/browser/browsing_data/browsing_data_remover.cc:795: On 2016/08/08 17:09:53, msramek wrote: > ...
4 years, 4 months ago (2016-08-09 08:31:24 UTC) #76
msramek
LGTM % style nits. Thanks for the thorough test! https://codereview.chromium.org/2184823007/diff/220001/chrome/browser/browsing_data/browsing_data_remover_unittest.cc File chrome/browser/browsing_data/browsing_data_remover_unittest.cc (right): https://codereview.chromium.org/2184823007/diff/220001/chrome/browser/browsing_data/browsing_data_remover_unittest.cc#newcode1029 chrome/browser/browsing_data/browsing_data_remover_unittest.cc:1029: ...
4 years, 4 months ago (2016-08-09 08:46:14 UTC) #77
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2184823007/240001
4 years, 4 months ago (2016-08-10 00:27:05 UTC) #80
commit-bot: I haz the power
Committed patchset #13 (id:240001)
4 years, 4 months ago (2016-08-10 02:00:25 UTC) #82
commit-bot: I haz the power
Patchset 13 (id:??) landed as https://crrev.com/6947d75c181dc3f7484b77c25ba053cbda75fbe1 Cr-Commit-Position: refs/heads/master@{#410920}
4 years, 4 months ago (2016-08-10 02:02:19 UTC) #84
Lei Zhang
4 years, 2 months ago (2016-09-27 21:57:51 UTC) #85
Message was sent while issue was closed.
https://codereview.chromium.org/2184823007/diff/240001/chrome/browser/permiss...
File chrome/browser/permissions/permission_context_base_unittest.cc (right):

https://codereview.chromium.org/2184823007/diff/240001/chrome/browser/permiss...
chrome/browser/permissions/permission_context_base_unittest.cc:292:
base::FeatureList::ClearInstanceForTesting();
If you read the comments for ClearInstanceForTesting(), you should know not to
use it, because you leave the base::FeatureList global instance as a nullptr at
the end.

https://codereview.chromium.org/2373883002 changes this test to use a
base::test::ScopedFeatureList.

Powered by Google App Engine
This is Rietveld 408576698