WebKitURLWithTitles pasteboard format should support URLs containing Emoji characters.
authorenrica@apple.com <enrica@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 21 Mar 2012 22:46:49 +0000 (22:46 +0000)
committerenrica@apple.com <enrica@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 21 Mar 2012 22:46:49 +0000 (22:46 +0000)
https://bugs.webkit.org/show_bug.cgi?id=81835
<rdar://problem/11082749>

Reviewed by Brady Eidson.

Source/WebCore:

When writing the URL in the pasteboard for the WebURLWithTitles format,
we use the user visible string instead of the original URL.
In case of URL with Unicode characters, we lose the encoding.

Added TestWebKitAPI test.

* platform/mac/PasteboardMac.mm:
(WebCore::writeURLForTypes): Writes to the pasteboard the original URL.

Tools:

* TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.html:
* TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.mm:
(TestWebKitAPI::contextMenuCopyLink):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@111614 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/mac/PasteboardMac.mm
Tools/ChangeLog
Tools/TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.html
Tools/TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.mm

index ccf1a2f70077b8798cc9b193049443f847e81aa9..33959ea65aaf6c557f93ccd2a14430473763907b 100644 (file)
@@ -1,3 +1,20 @@
+2012-03-21  Enrica Casucci  <enrica@apple.com>
+
+        WebKitURLWithTitles pasteboard format should support URLs containing Emoji characters.
+        https://bugs.webkit.org/show_bug.cgi?id=81835
+        <rdar://problem/11082749>
+
+        Reviewed by Brady Eidson.
+
+        When writing the URL in the pasteboard for the WebURLWithTitles format,
+        we use the user visible string instead of the original URL.
+        In case of URL with Unicode characters, we lose the encoding.
+        
+        Added TestWebKitAPI test.
+
+        * platform/mac/PasteboardMac.mm:
+        (WebCore::writeURLForTypes): Writes to the pasteboard the original URL.
+
 2012-03-21  Levi Weintraub  <leviw@chromium.org>
 
         Correct LayoutUnit usage in VisiblePosition.cpp
index 7b1577d9e00381e6c890b3e2b8b0365e1e6278a5..42e4f207e1dcffe90c879ceb8de26b052608adac 100644 (file)
@@ -225,7 +225,7 @@ static void writeURLForTypes(const Vector<String>& types, const String& pasteboa
     }
     if (types.contains(WebURLsWithTitlesPboardType)) {
         Vector<String> paths;
-        paths.append(userVisibleString);
+        paths.append([cocoaURL absoluteString]);
         paths.append(titleStr.stripWhiteSpace());
         platformStrategies()->pasteboardStrategy()->setPathnamesForType(paths, WebURLsWithTitlesPboardType, pasteboardName);
     }
index 3e0f2f191a147045a128f4d3ea3acd3d48c13997..a716c6dc35e617578bdfe3edadeeada813041d24 100644 (file)
@@ -1,3 +1,15 @@
+2012-03-21  Enrica Casucci  <enrica@apple.com>
+
+        WebKitURLWithTitles pasteboard format should support URLs containing Emoji characters.
+        https://bugs.webkit.org/show_bug.cgi?id=81835
+        <rdar://problem/11082749>
+
+        Reviewed by Brady Eidson.
+
+        * TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.html:
+        * TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.mm:
+        (TestWebKitAPI::contextMenuCopyLink):
+
 2012-03-21  Alexandru Chiculita  <achicu@adobe.com>
 
         [CSS Shaders] Make CSS Shaders compile on Chromium
index ecb38ebd651056f51c22efef39fbe4696b9bd804..3147603ce4c1f4b98b372cdcbfbcdeeed0500e33 100644 (file)
@@ -1 +1,4 @@
-Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<a href='http://www.webkit.org/'>Click me</a>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\ No newline at end of file
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+</head>
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<a href='http://www.webkit.org/'>Click me</a>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<a href='http://xn--ls8h.la/'>http://💩.la</a>.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\ No newline at end of file
index ac95340c5dafefe83204cfd102e1cd2d4ce7861e..40ac377e1cdd9650b81bb1851dc34ec0b79d2a7b 100644 (file)
@@ -29,6 +29,7 @@
 #import "WTFStringUtilities.h"
 
 #import <WebKit/WebViewPrivate.h>
+#import <WebKit/WebURLsWithTitles.h>
 #import <WebKit/DOM.h>
 #import <Carbon/Carbon.h>
 #import <wtf/RetainPtr.h>
@@ -51,13 +52,13 @@ static bool didFinishLoad;
 
 namespace TestWebKitAPI {
 
-static void contextMenuCopyLink(WebView* webView)
+static void contextMenuCopyLink(WebView* webView, int itemIndex)
 {
     [[[[webView mainFrame] frameView] documentView] layout];
     
     DOMDocument *document = [[webView mainFrame] DOMDocument];
     DOMElement *documentElement = [document documentElement];
-    DOMHTMLAnchorElement *anchor = (DOMHTMLAnchorElement *)[documentElement querySelector:@"a"];
+    DOMHTMLAnchorElement *anchor = (DOMHTMLAnchorElement *)[[documentElement querySelectorAll:@"a"] item:itemIndex];
 
     NSWindow *window = [webView window];
     NSEvent *event = [NSEvent mouseEventWithType:NSRightMouseDown
@@ -98,10 +99,17 @@ TEST(WebKit1, ContextMenuCanCopyURL)
     
     Util::run(&didFinishLoad);
 
-    contextMenuCopyLink(webView.get());
+    contextMenuCopyLink(webView.get(), 0);
     
     NSURL *url = [NSURL URLFromPasteboard:[NSPasteboard generalPasteboard]];
     EXPECT_EQ(String("http://www.webkit.org/"), String([url absoluteString]));
+
+    contextMenuCopyLink(webView.get(), 1);
+    
+    NSArray * urls = [WebURLsWithTitles URLsFromPasteboard: [NSPasteboard generalPasteboard]];
+    NSArray * titles = [WebURLsWithTitles titlesFromPasteboard: [NSPasteboard generalPasteboard]];
+    EXPECT_WK_STREQ(@"http://xn--ls8h.la/", [[urls objectAtIndex:0] absoluteString]);
+    EXPECT_WK_STREQ(@"http://💩.la", [titles objectAtIndex:0]);
 }
 
 } // namespace TestWebKitAPI