OLD | NEW |
1 /* This Source Code Form is subject to the terms of the Mozilla Public | 1 /* This Source Code Form is subject to the terms of the Mozilla Public |
2 * License, v. 2.0. If a copy of the MPL was not distributed with this file, | 2 * License, v. 2.0. If a copy of the MPL was not distributed with this file, |
3 * You can obtain one at http://mozilla.org/MPL/2.0/. */ | 3 * You can obtain one at http://mozilla.org/MPL/2.0/. */ |
4 | 4 |
5 Cu.import("resource://gre/modules/Services.jsm"); | 5 Cu.import("resource://gre/modules/Services.jsm"); |
6 Cu.import("resource://gre/modules/FileUtils.jsm"); | 6 Cu.import("resource://gre/modules/FileUtils.jsm"); |
7 | 7 |
8 let {Prefs} = require("prefs"); | 8 let {Prefs} = require("prefs"); |
9 | 9 |
10 let RULES_VERSION = 2; | 10 let RULES_VERSION = 2; |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 let customRules = Prefs.custom_replace; | 143 let customRules = Prefs.custom_replace; |
144 for (let searchString in customRules) | 144 for (let searchString in customRules) |
145 { | 145 { |
146 let replacement = customRules[searchString]; | 146 let replacement = customRules[searchString]; |
147 searchString = searchString.toLowerCase(); | 147 searchString = searchString.toLowerCase(); |
148 if (/^re:+/.test(searchString)) | 148 if (/^re:+/.test(searchString)) |
149 domain = domain.replace(new RegExp(RegExp.rightContext, "g"), replacement)
; | 149 domain = domain.replace(new RegExp(RegExp.rightContext, "g"), replacement)
; |
150 else | 150 else |
151 domain = domain.replace(searchString, replacement); | 151 domain = domain.replace(searchString, replacement); |
152 } | 152 } |
| 153 |
| 154 // Apply user's whitelist |
| 155 let whitelist = Prefs.whitelist; |
| 156 if (whitelist.hasOwnProperty(domain) || /^www\./.test(domain) && whitelist.has
OwnProperty(domain.substr(4))) |
| 157 { |
| 158 return domain; |
| 159 } |
153 | 160 |
154 // Now apply our rules on the domain name | 161 // Now apply our rules on the domain name |
155 for (let i = 0, l = rules.expressions.length; i < l; i++) | 162 for (let i = 0, l = rules.expressions.length; i < l; i++) |
156 domain = applyExpression(domain, rules.expressions[i]); | 163 domain = applyExpression(domain, rules.expressions[i]); |
157 | 164 |
158 // Find similar known domains, test domains without the www. prefix | 165 // Find similar known domains, test domains without the www. prefix |
159 if (domain.substr(0, 4) == "www.") | 166 if (domain.substr(0, 4) == "www.") |
160 domain = "www." + getBestMatch(domain.substr(4), rules.domain, 1, "."); | 167 domain = "www." + getBestMatch(domain.substr(4), rules.domain, 1, "."); |
161 else | 168 else |
162 domain = getBestMatch(domain, rules.domain, 1, "."); | 169 domain = getBestMatch(domain, rules.domain, 1, "."); |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 bestSuggestionDistance = distance; | 312 bestSuggestionDistance = distance; |
306 bestSuggestionMatched = matchedLen; | 313 bestSuggestionMatched = matchedLen; |
307 bestSuggestionPriority = priority; | 314 bestSuggestionPriority = priority; |
308 } | 315 } |
309 } | 316 } |
310 if (bestSuggestion) | 317 if (bestSuggestion) |
311 return input.substr(0, input.length - bestSuggestionMatched) + bestSuggestio
n; | 318 return input.substr(0, input.length - bestSuggestionMatched) + bestSuggestio
n; |
312 else | 319 else |
313 return input; | 320 return input; |
314 } | 321 } |
OLD | NEW |