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

Side by Side Diff: chrome/browser/browsing_data/origin_filter_builder.cc

Issue 1741123002: Add removal filter support for Cookies, Storage, and Content Settings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/browsing_data/origin_filter_builder.h" 5 #include "chrome/browser/browsing_data/origin_filter_builder.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "components/content_settings/core/common/content_settings_pattern.h"
11 12
12 namespace { 13 namespace {
13 14
14 bool NoopFilter(const GURL& url) { 15 bool NoopFilter(const GURL& url) {
15 return true; 16 return true;
16 } 17 }
17 18
18 } // namespace 19 } // namespace
19 20
20 OriginFilterBuilder::OriginFilterBuilder(Mode mode) 21 OriginFilterBuilder::OriginFilterBuilder(Mode mode)
(...skipping 19 matching lines...) Expand all
40 // origin. This is currently not a problem, but if it becomes one, 41 // origin. This is currently not a problem, but if it becomes one,
41 // consider recognizing the URL path. 42 // consider recognizing the URL path.
42 43
43 origin_list_.insert(origin); 44 origin_list_.insert(origin);
44 } 45 }
45 46
46 void OriginFilterBuilder::SetMode(Mode mode) { 47 void OriginFilterBuilder::SetMode(Mode mode) {
47 mode_ = mode; 48 mode_ = mode;
48 } 49 }
49 50
51 bool OriginFilterBuilder::IsEmptyBlacklist() const {
52 return mode_ == Mode::BLACKLIST && origin_list_.empty();
53 }
54
50 base::Callback<bool(const GURL&)> 55 base::Callback<bool(const GURL&)>
51 OriginFilterBuilder::BuildSameOriginFilter() const { 56 OriginFilterBuilder::BuildSameOriginFilter() const {
52 std::set<url::Origin>* origins = new std::set<url::Origin>(origin_list_); 57 std::set<url::Origin>* origins = new std::set<url::Origin>(origin_list_);
53 return base::Bind(&OriginFilterBuilder::MatchesURL, 58 return base::Bind(&OriginFilterBuilder::MatchesURL,
54 base::Owned(origins), mode_); 59 base::Owned(origins), mode_);
55 } 60 }
56 61
62 base::Callback<bool(const ContentSettingsPattern& pattern)>
63 OriginFilterBuilder::BuildSameOriginContentSettingsFilter() const {
msramek 2016/03/01 17:24:09 nit: indent (or unindent in the other methods if
dmurph 2016/03/08 01:42:56 Done.
64 std::set<url::Origin>* origins = new std::set<url::Origin>(origin_list_);
65 return base::Bind(&OriginFilterBuilder::MatchesContentSettingsPattern,
66 base::Owned(origins), mode_);
67 }
68
57 base::Callback<bool(const GURL&)> 69 base::Callback<bool(const GURL&)>
58 OriginFilterBuilder::BuildDomainFilter() const { 70 OriginFilterBuilder::BuildDomainFilter() const {
59 std::set<url::Origin>* origins = new std::set<url::Origin>(origin_list_); 71 std::set<url::Origin>* origins = new std::set<url::Origin>(origin_list_);
60 return base::Bind(&OriginFilterBuilder::MatchesURLWithSubdomains, 72 return base::Bind(&OriginFilterBuilder::MatchesURLWithSubdomains,
61 base::Owned(origins), mode_); 73 base::Owned(origins), mode_);
62 } 74 }
63 75
64 // static 76 // static
65 base::Callback<bool(const GURL&)> OriginFilterBuilder::BuildNoopFilter() { 77 base::Callback<bool(const GURL&)> OriginFilterBuilder::BuildNoopFilter() {
66 return base::Bind(&NoopFilter); 78 return base::Bind(&NoopFilter);
67 } 79 }
68 80
69 // static 81 // static
70 bool OriginFilterBuilder::MatchesURL( 82 bool OriginFilterBuilder::MatchesURL(
71 std::set<url::Origin>* origins, Mode mode, const GURL& url) { 83 std::set<url::Origin>* origins, Mode mode, const GURL& url) {
72 return ((origins->find(url::Origin(url)) != origins->end()) == 84 return ((origins->find(url::Origin(url)) != origins->end()) ==
73 (mode == WHITELIST)); 85 (mode == WHITELIST));
74 } 86 }
75 87
76 // static 88 // static
89 bool OriginFilterBuilder::MatchesContentSettingsPattern(
msramek 2016/03/01 17:24:09 Please add a test for this method to OriginFilterB
dmurph 2016/03/08 01:42:56 Done.
90 std::set<url::Origin>* origins,
91 Mode mode,
92 const ContentSettingsPattern& pattern) {
93 for (const url::Origin& origin : *origins) {
94 if ((mode == WHITELIST) && pattern.Matches(GURL(origin.Serialize())))
msramek 2016/03/01 17:24:09 This method always returns false if mode == BLACKL
dmurph 2016/03/08 01:42:56 Ah, fixed.
95 return true;
96 }
97 return false;
98 }
99
100 // static
77 bool OriginFilterBuilder::MatchesURLWithSubdomains( 101 bool OriginFilterBuilder::MatchesURLWithSubdomains(
78 std::set<url::Origin>* origins, Mode mode, const GURL& url) { 102 std::set<url::Origin>* origins, Mode mode, const GURL& url) {
79 if (origins->empty()) 103 if (origins->empty())
80 return mode == BLACKLIST; 104 return mode == BLACKLIST;
81 105
82 // If there is no concept of subdomains, simply delegate to MatchesURL(). 106 // If there is no concept of subdomains, simply delegate to MatchesURL().
83 if (url.HostIsIPAddress()) 107 if (url.HostIsIPAddress())
84 return MatchesURL(origins, mode, url); 108 return MatchesURL(origins, mode, url);
85 109
86 // TODO(msramek): We do not expect filters to be particularly large. 110 // TODO(msramek): We do not expect filters to be particularly large.
(...skipping 15 matching lines...) Expand all
102 if (origins->find(url::Origin(origin_with_removed_subdomain)) 126 if (origins->find(url::Origin(origin_with_removed_subdomain))
103 != origins->end()) { 127 != origins->end()) {
104 return mode == WHITELIST; 128 return mode == WHITELIST;
105 } 129 }
106 } 130 }
107 131
108 // We do not recognize the URL. Return false for whitelist mode and true 132 // We do not recognize the URL. Return false for whitelist mode and true
109 // for blacklist mode. 133 // for blacklist mode.
110 return mode == BLACKLIST; 134 return mode == BLACKLIST;
111 } 135 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698