OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/mac/scoped_nsautorelease_pool.h" | 5 #include "base/mac/scoped_nsautorelease_pool.h" |
6 #import "base/memory/scoped_nsobject.h" | 6 #import "base/memory/scoped_nsobject.h" |
7 #include "base/sys_string_conversions.h" | 7 #include "base/sys_string_conversions.h" |
8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
9 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h" | 9 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h" |
10 #import "chrome/browser/ui/cocoa/drag_util.h" | |
11 #import "chrome/browser/ui/cocoa/tab_contents/web_drop_target.h" | 10 #import "chrome/browser/ui/cocoa/tab_contents/web_drop_target.h" |
12 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 11 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
13 #include "content/browser/tab_contents/test_tab_contents.h" | 12 #include "content/browser/tab_contents/test_tab_contents.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
15 #import "third_party/mozilla/NSPasteboard+Utils.h" | 14 #import "third_party/mozilla/NSPasteboard+Utils.h" |
| 15 #import "ui/base/dragdrop/cocoa_dnd_util.h" |
16 #include "webkit/glue/webdropdata.h" | 16 #include "webkit/glue/webdropdata.h" |
17 | 17 |
18 class WebDropTargetTest : public ChromeRenderViewHostTestHarness { | 18 class WebDropTargetTest : public ChromeRenderViewHostTestHarness { |
19 public: | 19 public: |
20 virtual void SetUp() { | 20 virtual void SetUp() { |
21 ChromeRenderViewHostTestHarness::SetUp(); | 21 ChromeRenderViewHostTestHarness::SetUp(); |
22 CocoaTest::BootstrapCocoa(); | 22 CocoaTest::BootstrapCocoa(); |
23 drop_target_.reset([[WebDropTarget alloc] initWithTabContents:contents()]); | 23 drop_target_.reset([[WebDropTarget alloc] initWithTabContents:contents()]); |
24 } | 24 } |
25 | 25 |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 NSPasteboard* pboard = nil; | 75 NSPasteboard* pboard = nil; |
76 NSString* url = nil; | 76 NSString* url = nil; |
77 NSString* title = nil; | 77 NSString* title = nil; |
78 GURL result_url; | 78 GURL result_url; |
79 string16 result_title; | 79 string16 result_title; |
80 | 80 |
81 // Put a URL on the pasteboard and check it. | 81 // Put a URL on the pasteboard and check it. |
82 pboard = [NSPasteboard pasteboardWithUniqueName]; | 82 pboard = [NSPasteboard pasteboardWithUniqueName]; |
83 url = @"http://www.google.com/"; | 83 url = @"http://www.google.com/"; |
84 PutURLOnPasteboard(url, pboard); | 84 PutURLOnPasteboard(url, pboard); |
85 EXPECT_TRUE(drag_util::PopulateURLAndTitleFromPasteBoard( | 85 EXPECT_TRUE(ui::PopulateURLAndTitleFromPasteboard( |
86 &result_url, &result_title, pboard, NO)); | 86 &result_url, &result_title, pboard, NO)); |
87 EXPECT_EQ(base::SysNSStringToUTF8(url), result_url.spec()); | 87 EXPECT_EQ(base::SysNSStringToUTF8(url), result_url.spec()); |
88 [pboard releaseGlobally]; | 88 [pboard releaseGlobally]; |
89 | 89 |
90 // Put a 'url ' and 'urln' on the pasteboard and check it. | 90 // Put a 'url ' and 'urln' on the pasteboard and check it. |
91 pboard = [NSPasteboard pasteboardWithUniqueName]; | 91 pboard = [NSPasteboard pasteboardWithUniqueName]; |
92 url = @"http://www.google.com/"; | 92 url = @"http://www.google.com/"; |
93 title = @"Title of Awesomeness!", | 93 title = @"Title of Awesomeness!", |
94 PutCoreURLAndTitleOnPasteboard(url, title, pboard); | 94 PutCoreURLAndTitleOnPasteboard(url, title, pboard); |
95 EXPECT_TRUE(drag_util::PopulateURLAndTitleFromPasteBoard( | 95 EXPECT_TRUE(ui::PopulateURLAndTitleFromPasteboard( |
96 &result_url, &result_title, pboard, NO)); | 96 &result_url, &result_title, pboard, NO)); |
97 EXPECT_EQ(base::SysNSStringToUTF8(url), result_url.spec()); | 97 EXPECT_EQ(base::SysNSStringToUTF8(url), result_url.spec()); |
98 EXPECT_EQ(base::SysNSStringToUTF16(title), result_title); | 98 EXPECT_EQ(base::SysNSStringToUTF16(title), result_title); |
99 [pboard releaseGlobally]; | 99 [pboard releaseGlobally]; |
100 | 100 |
101 // Also check that it passes file:// via 'url '/'urln' properly. | 101 // Also check that it passes file:// via 'url '/'urln' properly. |
102 pboard = [NSPasteboard pasteboardWithUniqueName]; | 102 pboard = [NSPasteboard pasteboardWithUniqueName]; |
103 url = @"file:///tmp/dont_delete_me.txt"; | 103 url = @"file:///tmp/dont_delete_me.txt"; |
104 title = @"very important"; | 104 title = @"very important"; |
105 PutCoreURLAndTitleOnPasteboard(url, title, pboard); | 105 PutCoreURLAndTitleOnPasteboard(url, title, pboard); |
106 EXPECT_TRUE(drag_util::PopulateURLAndTitleFromPasteBoard( | 106 EXPECT_TRUE(ui::PopulateURLAndTitleFromPasteboard( |
107 &result_url, &result_title, pboard, NO)); | 107 &result_url, &result_title, pboard, NO)); |
108 EXPECT_EQ(base::SysNSStringToUTF8(url), result_url.spec()); | 108 EXPECT_EQ(base::SysNSStringToUTF8(url), result_url.spec()); |
109 EXPECT_EQ(base::SysNSStringToUTF16(title), result_title); | 109 EXPECT_EQ(base::SysNSStringToUTF16(title), result_title); |
110 [pboard releaseGlobally]; | 110 [pboard releaseGlobally]; |
111 | 111 |
112 // And javascript:. | 112 // And javascript:. |
113 pboard = [NSPasteboard pasteboardWithUniqueName]; | 113 pboard = [NSPasteboard pasteboardWithUniqueName]; |
114 url = @"javascript:open('http://www.youtube.com/')"; | 114 url = @"javascript:open('http://www.youtube.com/')"; |
115 title = @"kill some time"; | 115 title = @"kill some time"; |
116 PutCoreURLAndTitleOnPasteboard(url, title, pboard); | 116 PutCoreURLAndTitleOnPasteboard(url, title, pboard); |
117 EXPECT_TRUE(drag_util::PopulateURLAndTitleFromPasteBoard( | 117 EXPECT_TRUE(ui::PopulateURLAndTitleFromPasteboard( |
118 &result_url, &result_title, pboard, NO)); | 118 &result_url, &result_title, pboard, NO)); |
119 EXPECT_EQ(base::SysNSStringToUTF8(url), result_url.spec()); | 119 EXPECT_EQ(base::SysNSStringToUTF8(url), result_url.spec()); |
120 EXPECT_EQ(base::SysNSStringToUTF16(title), result_title); | 120 EXPECT_EQ(base::SysNSStringToUTF16(title), result_title); |
121 [pboard releaseGlobally]; | 121 [pboard releaseGlobally]; |
122 | 122 |
123 pboard = [NSPasteboard pasteboardWithUniqueName]; | 123 pboard = [NSPasteboard pasteboardWithUniqueName]; |
124 url = @"/bin/sh"; | 124 url = @"/bin/sh"; |
125 [pboard declareTypes:[NSArray arrayWithObject:NSFilenamesPboardType] | 125 [pboard declareTypes:[NSArray arrayWithObject:NSFilenamesPboardType] |
126 owner:nil]; | 126 owner:nil]; |
127 [pboard setPropertyList:[NSArray arrayWithObject:url] | 127 [pboard setPropertyList:[NSArray arrayWithObject:url] |
128 forType:NSFilenamesPboardType]; | 128 forType:NSFilenamesPboardType]; |
129 EXPECT_FALSE(drag_util::PopulateURLAndTitleFromPasteBoard( | 129 EXPECT_FALSE(ui::PopulateURLAndTitleFromPasteboard( |
130 &result_url, &result_title, pboard, NO)); | 130 &result_url, &result_title, pboard, NO)); |
131 EXPECT_TRUE(drag_util::PopulateURLAndTitleFromPasteBoard( | 131 EXPECT_TRUE(ui::PopulateURLAndTitleFromPasteboard( |
132 &result_url, &result_title, pboard, YES)); | 132 &result_url, &result_title, pboard, YES)); |
133 EXPECT_EQ("file://localhost/bin/sh", result_url.spec()); | 133 EXPECT_EQ("file://localhost/bin/sh", result_url.spec()); |
134 EXPECT_EQ("sh", UTF16ToUTF8(result_title)); | 134 EXPECT_EQ("sh", UTF16ToUTF8(result_title)); |
135 [pboard releaseGlobally]; | 135 [pboard releaseGlobally]; |
136 } | 136 } |
137 | 137 |
138 TEST_F(WebDropTargetTest, Data) { | 138 TEST_F(WebDropTargetTest, Data) { |
139 WebDropData data; | 139 WebDropData data; |
140 NSPasteboard* pboard = [NSPasteboard pasteboardWithUniqueName]; | 140 NSPasteboard* pboard = [NSPasteboard pasteboardWithUniqueName]; |
141 | 141 |
142 PutURLOnPasteboard(@"http://www.google.com", pboard); | 142 PutURLOnPasteboard(@"http://www.google.com", pboard); |
143 [pboard addTypes:[NSArray arrayWithObjects:NSHTMLPboardType, | 143 [pboard addTypes:[NSArray arrayWithObjects:NSHTMLPboardType, |
144 NSStringPboardType, nil] | 144 NSStringPboardType, nil] |
145 owner:nil]; | 145 owner:nil]; |
146 NSString* htmlString = @"<html><body><b>hi there</b></body></html>"; | 146 NSString* htmlString = @"<html><body><b>hi there</b></body></html>"; |
147 NSString* textString = @"hi there"; | 147 NSString* textString = @"hi there"; |
148 [pboard setString:htmlString forType:NSHTMLPboardType]; | 148 [pboard setString:htmlString forType:NSHTMLPboardType]; |
149 [pboard setString:textString forType:NSStringPboardType]; | 149 [pboard setString:textString forType:NSStringPboardType]; |
150 [drop_target_ populateWebDropData:&data fromPasteboard:pboard]; | 150 [drop_target_ populateWebDropData:&data fromPasteboard:pboard]; |
151 EXPECT_EQ(data.url.spec(), "http://www.google.com/"); | 151 EXPECT_EQ(data.url.spec(), "http://www.google.com/"); |
152 EXPECT_EQ(base::SysNSStringToUTF16(textString), data.plain_text); | 152 EXPECT_EQ(base::SysNSStringToUTF16(textString), data.plain_text); |
153 EXPECT_EQ(base::SysNSStringToUTF16(htmlString), data.text_html); | 153 EXPECT_EQ(base::SysNSStringToUTF16(htmlString), data.text_html); |
154 | 154 |
155 [pboard releaseGlobally]; | 155 [pboard releaseGlobally]; |
156 } | 156 } |
OLD | NEW |