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 ccf1a2f..33959ea 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 7b1577d..42e4f20 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 3e0f2f1..a716c6d 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 ecb38eb..3147603 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 ac95340..40ac377 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