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

Issue 1005303003: Split the aggregate dictionary of content settings exceptions into per-type dictionaries (Closed)

Created:
5 years, 9 months ago by msramek
Modified:
5 years, 8 months ago
CC:
chromium-reviews, markusheintz_, xhwang, ddorwin, ericde
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Split the aggregate dictionary that contains content settings exceptions for all content types into separate dictionary holding one content type each. Old dictionary entry example: "www.google.com,*": {"cookies": <value>, "plugins": <value>, last_used: {"cookies": <timestamp>, "plugins": <timestamp>}, "per_plugin": {<resource_id>: <value>}} Split into separate dictionaries: cookies: "www.google.com,*": {"setting": <value>, "last_used": <timestamp>} plugins: "www.google.com,*": {"setting": <value>, "last_used": <timestamp>, "per_resource": {<resource_id>: <value>}} For migration between versions of Chrome, we use a similar logic as when we migrated the default preferences in https://codereview.chromium.org/1004733003/ . 1. On the first run, migrate all settings (PrefProvider::MigrateAllExceptions()). 2. Whenever the old dictionary preference changes, propagate the syncable entries into the new preferences (PrefProvider::OnOldContentSettingsPatternPairsChanged()). 3. Whenever one of the new preferences changes, and it is syncable, we write it back to the old dictionary preference as well (ContentSettingsPref::OnPrefChanged()). Note that PrefProvider manages its old dictionary preference the same way as ContentSettingsPref does a new preference, and ContentSettingsPref needs access to the old preference as well, which leads to some duplication in the code (UpdateOldPref() is just a modified version of UpdatePref(); both use some of the same constructs). We use the convention of referring to attributes and methods managing the old dictionary preference as "old" in the name. BUG=452388 Committed: https://crrev.com/c2bda48205f8246990caf262f87f52dd971c78a5 Cr-Commit-Position: refs/heads/master@{#323585}

Patch Set 1 #

Total comments: 4

Patch Set 2 : Fixed resource identifiers. #

Patch Set 3 : Rebase, various small changes. #

Total comments: 2

Patch Set 4 : Copy constructor. #

Patch Set 5 : Vector of pointers. #

Patch Set 6 : Added tests, fixed cleaning of prefs, etc. #

Patch Set 7 : Argh, forgot about Android. #

Patch Set 8 : Android fix 2. #

Patch Set 9 : Get rid of scoped ptrs. #

Patch Set 10 : Android fix 4. #

Total comments: 3

Patch Set 11 : s/scoped/linked/ #

Patch Set 12 : Fixed tests. #

Total comments: 16

Patch Set 13 : Fixed writing prefs in incognito. #

Patch Set 14 : PMI test, unsynced notifications. #

Patch Set 15 : Extracted PMI unittest. #

Patch Set 16 : ... #

Total comments: 17

Patch Set 17 : Comments, ScopedVector. #

Total comments: 1

Patch Set 18 : Switch fix. #

Patch Set 19 : Addressed comments. #

Patch Set 20 : Fixed initialization order. #

Patch Set 21 : Test fix. #

Total comments: 17

Patch Set 22 : Another round of tests. #

Patch Set 23 : Addressed more comments. #

Patch Set 24 : Added resource id tests. #

Patch Set 25 : Verbatim copying test. #

Patch Set 26 : Memory leak in last test. #

Total comments: 3
Unified diffs Side-by-side diffs Delta from patch set Stats (+1141 lines, -220 lines) Patch
M chrome/browser/content_settings/content_settings_pref_provider_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2 chunks +273 lines, -4 lines 0 comments Download
M chrome/browser/content_settings/host_content_settings_map_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 3 chunks +12 lines, -8 lines 0 comments Download
M components/content_settings/core/browser/content_settings_pref.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 4 chunks +40 lines, -21 lines 0 comments Download
M components/content_settings/core/browser/content_settings_pref.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 16 chunks +274 lines, -154 lines 0 comments Download
M components/content_settings/core/browser/content_settings_pref_provider.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 3 chunks +59 lines, -5 lines 0 comments Download
M components/content_settings/core/browser/content_settings_pref_provider.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 9 chunks +347 lines, -24 lines 3 comments Download
M components/content_settings/core/common/content_settings.h View 1 chunk +3 lines, -0 lines 0 comments Download
M components/content_settings/core/common/content_settings.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +42 lines, -0 lines 0 comments Download
M components/content_settings/core/common/pref_names.h View 1 2 1 chunk +30 lines, -0 lines 0 comments Download
M components/content_settings/core/common/pref_names.cc View 1 2 1 chunk +61 lines, -4 lines 0 comments Download

Messages

Total messages: 32 (8 generated)
msramek
Hello Markus and Raymes, I uploaded my CL on splitting exceptions. It currently works, but ...
5 years, 9 months ago (2015-03-24 15:11:45 UTC) #2
msramek
https://codereview.chromium.org/1005303003/diff/1/components/content_settings/core/browser/content_settings_pref_provider.cc File components/content_settings/core/browser/content_settings_pref_provider.cc (right): https://codereview.chromium.org/1005303003/diff/1/components/content_settings/core/browser/content_settings_pref_provider.cc#newcode438 components/content_settings/core/browser/content_settings_pref_provider.cc:438: for (size_t i = 0; i < entries.size(); ++i) ...
5 years, 9 months ago (2015-03-25 11:58:50 UTC) #3
raymes
Hey Martin, sorry I haven't gotten around to looking at this but I should have ...
5 years, 9 months ago (2015-03-26 06:51:10 UTC) #4
msramek
No problem, Raymes. +Bernhard who is probably interested too. Side note: Tested on Linux, the ...
5 years, 9 months ago (2015-03-26 18:27:39 UTC) #6
raymes
Hey Martin, I've started looking at this. I'm not finished but here are some comments ...
5 years, 8 months ago (2015-04-01 06:51:21 UTC) #8
msramek
https://codereview.chromium.org/1005303003/diff/320001/components/content_settings/core/browser/content_settings_pref.cc File components/content_settings/core/browser/content_settings_pref.cc (right): https://codereview.chromium.org/1005303003/diff/320001/components/content_settings/core/browser/content_settings_pref.cc#newcode130 components/content_settings/core/browser/content_settings_pref.cc:130: if (IsContentSettingsTypeSyncable(content_type_)) On 2015/04/01 06:51:20, raymes wrote: > nit: ...
5 years, 8 months ago (2015-04-01 09:34:26 UTC) #9
markusheintz_
https://codereview.chromium.org/1005303003/diff/220001/components/content_settings/core/browser/content_settings_pref.cc File components/content_settings/core/browser/content_settings_pref.cc (right): https://codereview.chromium.org/1005303003/diff/220001/components/content_settings/core/browser/content_settings_pref.cc#newcode169 components/content_settings/core/browser/content_settings_pref.cc:169: if (IsContentSettingsTypeSyncable(content_type_)) Please add { } https://codereview.chromium.org/1005303003/diff/220001/components/content_settings/core/browser/content_settings_pref_provider.cc File components/content_settings/core/browser/content_settings_pref_provider.cc ...
5 years, 8 months ago (2015-04-01 10:02:52 UTC) #10
msramek
https://codereview.chromium.org/1005303003/diff/220001/components/content_settings/core/browser/content_settings_pref.cc File components/content_settings/core/browser/content_settings_pref.cc (right): https://codereview.chromium.org/1005303003/diff/220001/components/content_settings/core/browser/content_settings_pref.cc#newcode169 components/content_settings/core/browser/content_settings_pref.cc:169: if (IsContentSettingsTypeSyncable(content_type_)) On 2015/04/01 10:02:51, markusheintz_ wrote: > Please ...
5 years, 8 months ago (2015-04-01 10:53:35 UTC) #11
msramek
Hello again Markus and Raymes, I did some manual testing today. Syncing between an old ...
5 years, 8 months ago (2015-04-01 16:25:30 UTC) #12
raymes
Thanks Martin! I just have to review the unittests. The migration logic is unfortunate and ...
5 years, 8 months ago (2015-04-02 00:22:09 UTC) #13
markusheintz_
https://codereview.chromium.org/1005303003/diff/420001/components/content_settings/core/browser/content_settings_pref_provider.cc File components/content_settings/core/browser/content_settings_pref_provider.cc (right): https://codereview.chromium.org/1005303003/diff/420001/components/content_settings/core/browser/content_settings_pref_provider.cc#newcode153 components/content_settings/core/browser/content_settings_pref_provider.cc:153: pref_change_registrar_.Add(prefs::kContentSettingsPatternPairs, base::Bind( Do you need to register the pref ...
5 years, 8 months ago (2015-04-02 11:04:49 UTC) #14
markusheintz_
Please look at the locks as discussed offline
5 years, 8 months ago (2015-04-02 13:19:11 UTC) #15
markusheintz_
LGTM after fixing the remaining comments. https://codereview.chromium.org/1005303003/diff/420001/components/content_settings/core/browser/content_settings_pref_provider.cc File components/content_settings/core/browser/content_settings_pref_provider.cc (right): https://codereview.chromium.org/1005303003/diff/420001/components/content_settings/core/browser/content_settings_pref_provider.cc#newcode213 components/content_settings/core/browser/content_settings_pref_provider.cc:213: if (primary_pattern == ...
5 years, 8 months ago (2015-04-02 15:52:26 UTC) #16
msramek
https://codereview.chromium.org/1005303003/diff/420001/components/content_settings/core/browser/content_settings_pref.cc File components/content_settings/core/browser/content_settings_pref.cc (right): https://codereview.chromium.org/1005303003/diff/420001/components/content_settings/core/browser/content_settings_pref.cc#newcode339 components/content_settings/core/browser/content_settings_pref.cc:339: setting_ptr.get()); On 2015/04/02 00:22:09, raymes wrote: > I think ...
5 years, 8 months ago (2015-04-02 16:22:55 UTC) #17
msramek
On 2015/04/02 13:19:11, markusheintz_ wrote: > Please look at the locks as discussed offline As ...
5 years, 8 months ago (2015-04-02 16:23:48 UTC) #18
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1005303003/500001
5 years, 8 months ago (2015-04-02 18:51:29 UTC) #21
msramek
I tested the migration (with and without sync on), syncing, whether the migration can happen ...
5 years, 8 months ago (2015-04-02 19:09:40 UTC) #22
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1005303003/520001
5 years, 8 months ago (2015-04-02 19:51:18 UTC) #25
commit-bot: I haz the power
Committed patchset #26 (id:520001)
5 years, 8 months ago (2015-04-03 04:57:27 UTC) #26
brucedawson
https://codereview.chromium.org/1005303003/diff/520001/components/content_settings/core/browser/content_settings_pref_provider.cc File components/content_settings/core/browser/content_settings_pref_provider.cc (right): https://codereview.chromium.org/1005303003/diff/520001/components/content_settings/core/browser/content_settings_pref_provider.cc#newcode409 components/content_settings/core/browser/content_settings_pref_provider.cc:409: for (size_t i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) ...
5 years, 8 months ago (2015-04-03 19:55:53 UTC) #28
commit-bot: I haz the power
Patchset 26 (id:??) landed as https://crrev.com/c2bda48205f8246990caf262f87f52dd971c78a5 Cr-Commit-Position: refs/heads/master@{#323585}
5 years, 8 months ago (2015-04-03 20:30:11 UTC) #29
msramek
https://codereview.chromium.org/1005303003/diff/520001/components/content_settings/core/browser/content_settings_pref_provider.cc File components/content_settings/core/browser/content_settings_pref_provider.cc (right): https://codereview.chromium.org/1005303003/diff/520001/components/content_settings/core/browser/content_settings_pref_provider.cc#newcode409 components/content_settings/core/browser/content_settings_pref_provider.cc:409: for (size_t i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) ...
5 years, 8 months ago (2015-04-03 22:13:49 UTC) #30
brucedawson
I dream of a day when we can build with -Wshadow, but that day is ...
5 years, 8 months ago (2015-04-06 17:36:56 UTC) #31
raymes
5 years, 8 months ago (2015-04-07 01:55:56 UTC) #32
Message was sent while issue was closed.
lgtm!

https://codereview.chromium.org/1005303003/diff/520001/components/content_set...
File components/content_settings/core/browser/content_settings_pref_provider.cc
(right):

https://codereview.chromium.org/1005303003/diff/520001/components/content_set...
components/content_settings/core/browser/content_settings_pref_provider.cc:188: 
nit: unneeded extra line

Powered by Google App Engine
This is Rietveld 408576698