Make EqualsIgnoringPrivateKey work with mixin applications.

R=regis@google.com

Review-Url: https://codereview.chromium.org/2842053003 .
This commit is contained in:
Ryan Macnak 2017-04-26 13:25:17 -07:00
parent 27b4b36b86
commit 760db12d17
2 changed files with 12 additions and 1 deletions

View file

@ -21151,7 +21151,8 @@ static bool EqualsIgnoringPrivateKey(const String& str1, const String& str2) {
if (ch == Library::kPrivateKeySeparator) {
// Consume a private key separator.
while ((pos < len) && (T1::CharAt(str1, pos) != '.')) {
while ((pos < len) && (T1::CharAt(str1, pos) != '.') &&
(T1::CharAt(str1, pos) != '&')) {
pos++;
}
// Resume matching characters.

View file

@ -3191,6 +3191,16 @@ ISOLATE_UNIT_TEST_CASE(EqualsIgnoringPrivate) {
bare_name = OneByteString::New("food");
EXPECT(!String::EqualsIgnoringPrivateKey(mangled_name, bare_name));
// Private mixin application match.
mangled_name = OneByteString::New("_M1@12345&_M2@12345&_M3@12345");
bare_name = OneByteString::New("_M1&_M2&_M3");
EXPECT(String::EqualsIgnoringPrivateKey(mangled_name, bare_name));
// Private mixin application mismatch.
mangled_name = OneByteString::New("_M1@12345&_M2@12345&_M3@12345");
bare_name = OneByteString::New("_M1&_M2&_M4");
EXPECT(!String::EqualsIgnoringPrivateKey(mangled_name, bare_name));
// Private constructor match.
mangled_name = OneByteString::New("foo@12345.");
bare_name = OneByteString::New("foo.");