Bug 170798

Summary: Make WebCore::topPrivatelyControlledDomain() return "localhost" for localhost
Product: WebKit Reporter: John Wilander <wilander>
Component: WebCore Misc.Assignee: John Wilander <wilander>
Status: RESOLVED FIXED    
Severity: Normal CC: achristensen, commit-queue, webkit-bug-importer, wilander
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=170763
https://bugs.webkit.org/show_bug.cgi?id=169399
Attachments:
Description Flags
Patch
none
Patch
none
Patch for landing none

Description John Wilander 2017-04-12 18:00:23 PDT
WebCore::topPrivatelyControlledDomain() is used for partitioning and should return "localhost" if the host domain is "localhost".
Comment 1 Radar WebKit Bug Importer 2017-04-12 18:04:10 PDT
<rdar://problem/31595108>
Comment 2 John Wilander 2017-04-12 18:19:28 PDT
Created attachment 306959 [details]
Patch
Comment 3 Alex Christensen 2017-04-12 22:24:20 PDT
Comment on attachment 306959 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=306959&action=review

> Source/WebCore/platform/mac/PublicSuffixMac.mm:48
> +    if ([domain _web_looksLikeIPAddress] || [domain isEqualToString:@"localhost"])

Let's do a case-insensitive comparison and add a test for LocalHost.
Comment 4 John Wilander 2017-04-17 15:46:30 PDT
Created attachment 307309 [details]
Patch
Comment 5 Alex Christensen 2017-04-18 14:34:01 PDT
Comment on attachment 307309 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=307309&action=review

> Source/WebCore/platform/mac/PublicSuffixMac.mm:54
> +    const auto& lowercaseDomain = domain.convertToASCIILowercase();

I guess punycode encoding should not happen here.  This seems correct.

> Tools/TestWebKitAPI/Tests/mac/PublicSuffix.mm:64
> +    EXPECT_FALSE(isPublicSuffix(""));

Is this the UTF-8 encoding if an uppercase non-ASCII character?  Careful when committing, because sometimes our tools like webkit-patch UTF-8 encode non-ASCII characters.  svn  commit doesn't change the characters.
We should probably include a test with an uppercase non-ASCII character and a test with a lowercase non-ASCII character just for fun.

> Tools/TestWebKitAPI/Tests/mac/PublicSuffix.mm:90
> +    EXPECT_EQ(String("example.com"), topPrivatelyControlledDomain("ExamPle.com"));

And let's add a test with a.b.subdomain.Example.com
Comment 6 John Wilander 2017-04-18 16:21:12 PDT
Created attachment 307433 [details]
Patch for landing
Comment 7 John Wilander 2017-04-18 16:22:08 PDT
(In reply to Alex Christensen from comment #5)
> Comment on attachment 307309 [details]
> Patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=307309&action=review
> 
> > Source/WebCore/platform/mac/PublicSuffixMac.mm:54
> > +    const auto& lowercaseDomain = domain.convertToASCIILowercase();
> 
> I guess punycode encoding should not happen here.  This seems correct.
> 
> > Tools/TestWebKitAPI/Tests/mac/PublicSuffix.mm:64
> > +    EXPECT_FALSE(isPublicSuffix(""));
> 
> Is this the UTF-8 encoding if an uppercase non-ASCII character?  Careful
> when committing, because sometimes our tools like webkit-patch UTF-8 encode
> non-ASCII characters.  svn  commit doesn't change the characters.
> We should probably include a test with an uppercase non-ASCII character and
> a test with a lowercase non-ASCII character just for fun.
> 
> > Tools/TestWebKitAPI/Tests/mac/PublicSuffix.mm:90
> > +    EXPECT_EQ(String("example.com"), topPrivatelyControlledDomain("ExamPle.com"));
> 
> And let's add a test with a.b.subdomain.Example.com

All done. Thanks, Alex!
Comment 8 WebKit Commit Bot 2017-04-18 17:04:54 PDT
Comment on attachment 307433 [details]
Patch for landing

Clearing flags on attachment: 307433

Committed r215489: <http://trac.webkit.org/changeset/215489>
Comment 9 WebKit Commit Bot 2017-04-18 17:04:56 PDT
All reviewed patches have been landed.  Closing bug.