OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "extensions/browser/api/declarative_webrequest/webrequest_condition_att
ribute.h" | 5 #include "extensions/browser/api/declarative_webrequest/webrequest_condition_att
ribute.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 // Does |str| pass |this| StringMatchTest? | 323 // Does |str| pass |this| StringMatchTest? |
324 bool Matches(const std::string& str) const; | 324 bool Matches(const std::string& str) const; |
325 | 325 |
326 private: | 326 private: |
327 StringMatchTest(const std::string& data, | 327 StringMatchTest(const std::string& data, |
328 MatchType type, | 328 MatchType type, |
329 bool case_sensitive); | 329 bool case_sensitive); |
330 | 330 |
331 const std::string data_; | 331 const std::string data_; |
332 const MatchType type_; | 332 const MatchType type_; |
333 const bool case_sensitive_; | 333 const base::CompareCase case_sensitive_; |
334 DISALLOW_COPY_AND_ASSIGN(StringMatchTest); | 334 DISALLOW_COPY_AND_ASSIGN(StringMatchTest); |
335 }; | 335 }; |
336 | 336 |
337 // Represents a test group -- a set of string matching tests to be applied to | 337 // Represents a test group -- a set of string matching tests to be applied to |
338 // both the header name and value. | 338 // both the header name and value. |
339 class HeaderMatchTest { | 339 class HeaderMatchTest { |
340 public: | 340 public: |
341 ~HeaderMatchTest(); | 341 ~HeaderMatchTest(); |
342 | 342 |
343 // Gets the test group description in |tests| and creates the corresponding | 343 // Gets the test group description in |tests| and creates the corresponding |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 return scoped_ptr<StringMatchTest>( | 415 return scoped_ptr<StringMatchTest>( |
416 new StringMatchTest(str, type, case_sensitive)); | 416 new StringMatchTest(str, type, case_sensitive)); |
417 } | 417 } |
418 | 418 |
419 HeaderMatcher::StringMatchTest::~StringMatchTest() {} | 419 HeaderMatcher::StringMatchTest::~StringMatchTest() {} |
420 | 420 |
421 bool HeaderMatcher::StringMatchTest::Matches( | 421 bool HeaderMatcher::StringMatchTest::Matches( |
422 const std::string& str) const { | 422 const std::string& str) const { |
423 switch (type_) { | 423 switch (type_) { |
424 case kPrefix: | 424 case kPrefix: |
425 return base::StartsWithASCII(str, data_, case_sensitive_); | 425 return base::StartsWith(str, data_, case_sensitive_); |
426 case kSuffix: | 426 case kSuffix: |
427 return base::EndsWith(str, data_, case_sensitive_); | 427 return base::EndsWith(str, data_, case_sensitive_); |
428 case kEquals: | 428 case kEquals: |
429 return str.size() == data_.size() && | 429 return str.size() == data_.size() && |
430 base::StartsWithASCII(str, data_, case_sensitive_); | 430 base::StartsWith(str, data_, case_sensitive_); |
431 case kContains: | 431 case kContains: |
432 if (!case_sensitive_) { | 432 if (case_sensitive_ == base::CompareCase::INSENSITIVE_ASCII) { |
433 return std::search(str.begin(), str.end(), data_.begin(), data_.end(), | 433 return std::search(str.begin(), str.end(), data_.begin(), data_.end(), |
434 CaseInsensitiveCompareASCII<char>()) != str.end(); | 434 CaseInsensitiveCompareASCII<char>()) != str.end(); |
435 } else { | 435 } else { |
436 return str.find(data_) != std::string::npos; | 436 return str.find(data_) != std::string::npos; |
437 } | 437 } |
438 } | 438 } |
439 // We never get past the "switch", but the compiler worries about no return. | 439 // We never get past the "switch", but the compiler worries about no return. |
440 NOTREACHED(); | 440 NOTREACHED(); |
441 return false; | 441 return false; |
442 } | 442 } |
443 | 443 |
444 HeaderMatcher::StringMatchTest::StringMatchTest(const std::string& data, | 444 HeaderMatcher::StringMatchTest::StringMatchTest(const std::string& data, |
445 MatchType type, | 445 MatchType type, |
446 bool case_sensitive) | 446 bool case_sensitive) |
447 : data_(data), | 447 : data_(data), |
448 type_(type), | 448 type_(type), |
449 case_sensitive_(case_sensitive) {} | 449 case_sensitive_(case_sensitive ? base::CompareCase::SENSITIVE |
| 450 : base::CompareCase::INSENSITIVE_ASCII) {} |
450 | 451 |
451 // HeaderMatcher::HeaderMatchTest implementation. | 452 // HeaderMatcher::HeaderMatchTest implementation. |
452 | 453 |
453 HeaderMatcher::HeaderMatchTest::HeaderMatchTest( | 454 HeaderMatcher::HeaderMatchTest::HeaderMatchTest( |
454 ScopedVector<const StringMatchTest>* name_match, | 455 ScopedVector<const StringMatchTest>* name_match, |
455 ScopedVector<const StringMatchTest>* value_match) | 456 ScopedVector<const StringMatchTest>* value_match) |
456 : name_match_(name_match->Pass()), | 457 : name_match_(name_match->Pass()), |
457 value_match_(value_match->Pass()) {} | 458 value_match_(value_match->Pass()) {} |
458 | 459 |
459 HeaderMatcher::HeaderMatchTest::~HeaderMatchTest() {} | 460 HeaderMatcher::HeaderMatchTest::~HeaderMatchTest() {} |
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
869 bool WebRequestConditionAttributeStages::Equals( | 870 bool WebRequestConditionAttributeStages::Equals( |
870 const WebRequestConditionAttribute* other) const { | 871 const WebRequestConditionAttribute* other) const { |
871 if (!WebRequestConditionAttribute::Equals(other)) | 872 if (!WebRequestConditionAttribute::Equals(other)) |
872 return false; | 873 return false; |
873 const WebRequestConditionAttributeStages* casted_other = | 874 const WebRequestConditionAttributeStages* casted_other = |
874 static_cast<const WebRequestConditionAttributeStages*>(other); | 875 static_cast<const WebRequestConditionAttributeStages*>(other); |
875 return allowed_stages_ == casted_other->allowed_stages_; | 876 return allowed_stages_ == casted_other->allowed_stages_; |
876 } | 877 } |
877 | 878 |
878 } // namespace extensions | 879 } // namespace extensions |
OLD | NEW |