OLD | NEW |
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 "components/subresource_filter/content/browser/content_subresource_filt
er_driver_factory.h" | 5 #include "components/subresource_filter/content/browser/content_subresource_filt
er_driver_factory.h" |
6 | 6 |
7 #include "base/feature_list.h" | 7 #include "base/feature_list.h" |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "base/metrics/histogram_macros.h" | 9 #include "base/metrics/histogram_macros.h" |
10 #include "base/rand_util.h" | 10 #include "base/rand_util.h" |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 ActivationLevel::DISABLED) | 113 ActivationLevel::DISABLED) |
114 return ActivationDecision::ACTIVATION_DISABLED; | 114 return ActivationDecision::ACTIVATION_DISABLED; |
115 | 115 |
116 if (configurations->the_one_and_only().activation_scope == | 116 if (configurations->the_one_and_only().activation_scope == |
117 ActivationScope::NO_SITES) | 117 ActivationScope::NO_SITES) |
118 return ActivationDecision::ACTIVATION_DISABLED; | 118 return ActivationDecision::ACTIVATION_DISABLED; |
119 | 119 |
120 if (!url.SchemeIsHTTPOrHTTPS()) | 120 if (!url.SchemeIsHTTPOrHTTPS()) |
121 return ActivationDecision::UNSUPPORTED_SCHEME; | 121 return ActivationDecision::UNSUPPORTED_SCHEME; |
122 | 122 |
123 if (client_->ShouldSuppressActivation(navigation_handle)) | |
124 return ActivationDecision::URL_WHITELISTED; | |
125 | |
126 switch (configurations->the_one_and_only().activation_scope) { | 123 switch (configurations->the_one_and_only().activation_scope) { |
127 case ActivationScope::ALL_SITES: | 124 case ActivationScope::ALL_SITES: |
128 return ActivationDecision::ACTIVATED; | 125 return ActivationDecision::ACTIVATED; |
129 case ActivationScope::ACTIVATION_LIST: { | 126 case ActivationScope::ACTIVATION_LIST: { |
130 // The logic to ensure only http/https URLs are activated lives in | 127 // The logic to ensure only http/https URLs are activated lives in |
131 // AddActivationListMatch to ensure the activation list only has relevant | 128 // AddActivationListMatch to ensure the activation list only has relevant |
132 // entries. | 129 // entries. |
133 DCHECK(url.SchemeIsHTTPOrHTTPS() || | 130 DCHECK(url.SchemeIsHTTPOrHTTPS() || |
134 !DidURLMatchActivationList( | 131 !DidURLMatchActivationList( |
135 url, configurations->the_one_and_only().activation_list)); | 132 url, configurations->the_one_and_only().activation_list)); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 | 179 |
183 const auto configurations = GetActiveConfigurations(); | 180 const auto configurations = GetActiveConfigurations(); |
184 if (configurations->the_one_and_only().should_whitelist_site_on_reload && | 181 if (configurations->the_one_and_only().should_whitelist_site_on_reload && |
185 NavigationIsPageReload(url, referrer, transition)) { | 182 NavigationIsPageReload(url, referrer, transition)) { |
186 // Whitelist this host for the current as well as subsequent navigations. | 183 // Whitelist this host for the current as well as subsequent navigations. |
187 client_->WhitelistInCurrentWebContents(url); | 184 client_->WhitelistInCurrentWebContents(url); |
188 } | 185 } |
189 | 186 |
190 activation_decision_ = | 187 activation_decision_ = |
191 ComputeActivationDecisionForMainFrameNavigation(navigation_handle); | 188 ComputeActivationDecisionForMainFrameNavigation(navigation_handle); |
| 189 |
| 190 // Check for the whitelisted status last, so that the client gets an accurate |
| 191 // indication of whether there would be activation otherwise. |
| 192 bool whitelisted = client_->OnPageActivationComputed( |
| 193 navigation_handle, activation_decision_ == ActivationDecision::ACTIVATED); |
| 194 if (whitelisted) |
| 195 activation_decision_ = ActivationDecision::URL_WHITELISTED; |
192 DCHECK(activation_decision_ != ActivationDecision::UNKNOWN); | 196 DCHECK(activation_decision_ != ActivationDecision::UNKNOWN); |
193 if (activation_decision_ != ActivationDecision::ACTIVATED) { | 197 if (activation_decision_ != ActivationDecision::ACTIVATED) { |
194 ResetActivationState(); | 198 ResetActivationState(); |
195 return; | 199 return; |
196 } | 200 } |
197 | 201 |
198 activation_level_ = configurations->the_one_and_only().activation_level; | 202 activation_level_ = configurations->the_one_and_only().activation_level; |
199 measure_performance_ = | 203 measure_performance_ = |
200 activation_level_ != ActivationLevel::DISABLED && | 204 activation_level_ != ActivationLevel::DISABLED && |
201 ShouldMeasurePerformanceForPageLoad( | 205 ShouldMeasurePerformanceForPageLoad( |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 REPORT_REDIRECT_PATTERN_FOR_SUFFIX("SubresourceFilterOnly", hits_pattern, | 321 REPORT_REDIRECT_PATTERN_FOR_SUFFIX("SubresourceFilterOnly", hits_pattern, |
318 chain_size); | 322 chain_size); |
319 break; | 323 break; |
320 default: | 324 default: |
321 NOTREACHED(); | 325 NOTREACHED(); |
322 break; | 326 break; |
323 } | 327 } |
324 } | 328 } |
325 | 329 |
326 } // namespace subresource_filter | 330 } // namespace subresource_filter |
OLD | NEW |