Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(775)

Side by Side Diff: chrome/browser/ui/cocoa/web_drop_target_unittest.mm

Issue 6358008: [Mac] Organize some files into chrome/browser/ui/cocoa/tab_contents/.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/mac/scoped_nsautorelease_pool.h"
6 #include "base/sys_string_conversions.h"
7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/renderer_host/test/test_render_view_host.h"
9 #include "chrome/browser/tab_contents/test_tab_contents.h"
10 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
11 #import "chrome/browser/ui/cocoa/web_drop_target.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #import "third_party/mozilla/NSPasteboard+Utils.h"
14 #include "webkit/glue/webdropdata.h"
15
16 class WebDropTargetTest : public RenderViewHostTestHarness {
17 public:
18 virtual void SetUp() {
19 RenderViewHostTestHarness::SetUp();
20 CocoaTest::BootstrapCocoa();
21 drop_target_.reset([[WebDropTarget alloc] initWithTabContents:contents()]);
22 }
23
24 void PutURLOnPasteboard(NSString* urlString, NSPasteboard* pboard) {
25 [pboard declareTypes:[NSArray arrayWithObject:NSURLPboardType]
26 owner:nil];
27 NSURL* url = [NSURL URLWithString:urlString];
28 EXPECT_TRUE(url);
29 [url writeToPasteboard:pboard];
30 }
31
32 void PutCoreURLAndTitleOnPasteboard(NSString* urlString, NSString* title,
33 NSPasteboard* pboard) {
34 [pboard
35 declareTypes:[NSArray arrayWithObjects:kCorePasteboardFlavorType_url,
36 kCorePasteboardFlavorType_urln,
37 nil]
38 owner:nil];
39 [pboard setString:urlString
40 forType:kCorePasteboardFlavorType_url];
41 [pboard setString:title
42 forType:kCorePasteboardFlavorType_urln];
43 }
44
45 base::mac::ScopedNSAutoreleasePool pool_;
46 scoped_nsobject<WebDropTarget> drop_target_;
47 };
48
49 // Make sure nothing leaks.
50 TEST_F(WebDropTargetTest, Init) {
51 EXPECT_TRUE(drop_target_);
52 }
53
54 // Test flipping of coordinates given a point in window coordinates.
55 TEST_F(WebDropTargetTest, Flip) {
56 NSPoint windowPoint = NSZeroPoint;
57 scoped_nsobject<NSWindow> window([[CocoaTestHelperWindow alloc] init]);
58 NSPoint viewPoint =
59 [drop_target_ flipWindowPointToView:windowPoint
60 view:[window contentView]];
61 NSPoint screenPoint =
62 [drop_target_ flipWindowPointToScreen:windowPoint
63 view:[window contentView]];
64 EXPECT_EQ(0, viewPoint.x);
65 EXPECT_EQ(600, viewPoint.y);
66 EXPECT_EQ(0, screenPoint.x);
67 // We can't put a value on the screen size since everyone will have a
68 // different one.
69 EXPECT_NE(0, screenPoint.y);
70 }
71
72 TEST_F(WebDropTargetTest, URL) {
73 NSPasteboard* pboard = nil;
74 NSString* url = nil;
75 NSString* title = nil;
76 GURL result_url;
77 string16 result_title;
78
79 // Put a URL on the pasteboard and check it.
80 pboard = [NSPasteboard pasteboardWithUniqueName];
81 url = @"http://www.google.com/";
82 PutURLOnPasteboard(url, pboard);
83 EXPECT_TRUE([drop_target_ populateURL:&result_url
84 andTitle:&result_title
85 fromPasteboard:pboard
86 convertingFilenames:NO]);
87 EXPECT_EQ(base::SysNSStringToUTF8(url), result_url.spec());
88 [pboard releaseGlobally];
89
90 // Put a 'url ' and 'urln' on the pasteboard and check it.
91 pboard = [NSPasteboard pasteboardWithUniqueName];
92 url = @"http://www.google.com/";
93 title = @"Title of Awesomeness!",
94 PutCoreURLAndTitleOnPasteboard(url, title, pboard);
95 EXPECT_TRUE([drop_target_ populateURL:&result_url
96 andTitle:&result_title
97 fromPasteboard:pboard
98 convertingFilenames:NO]);
99 EXPECT_EQ(base::SysNSStringToUTF8(url), result_url.spec());
100 EXPECT_EQ(base::SysNSStringToUTF16(title), result_title);
101 [pboard releaseGlobally];
102
103 // Also check that it passes file:// via 'url '/'urln' properly.
104 pboard = [NSPasteboard pasteboardWithUniqueName];
105 url = @"file:///tmp/dont_delete_me.txt";
106 title = @"very important";
107 PutCoreURLAndTitleOnPasteboard(url, title, pboard);
108 EXPECT_TRUE([drop_target_ populateURL:&result_url
109 andTitle:&result_title
110 fromPasteboard:pboard
111 convertingFilenames:NO]);
112 EXPECT_EQ(base::SysNSStringToUTF8(url), result_url.spec());
113 EXPECT_EQ(base::SysNSStringToUTF16(title), result_title);
114 [pboard releaseGlobally];
115
116 // And javascript:.
117 pboard = [NSPasteboard pasteboardWithUniqueName];
118 url = @"javascript:open('http://www.youtube.com/')";
119 title = @"kill some time";
120 PutCoreURLAndTitleOnPasteboard(url, title, pboard);
121 EXPECT_TRUE([drop_target_ populateURL:&result_url
122 andTitle:&result_title
123 fromPasteboard:pboard
124 convertingFilenames:NO]);
125 EXPECT_EQ(base::SysNSStringToUTF8(url), result_url.spec());
126 EXPECT_EQ(base::SysNSStringToUTF16(title), result_title);
127 [pboard releaseGlobally];
128
129 pboard = [NSPasteboard pasteboardWithUniqueName];
130 url = @"/bin/sh";
131 [pboard declareTypes:[NSArray arrayWithObject:NSFilenamesPboardType]
132 owner:nil];
133 [pboard setPropertyList:[NSArray arrayWithObject:url]
134 forType:NSFilenamesPboardType];
135 EXPECT_FALSE([drop_target_ populateURL:&result_url
136 andTitle:&result_title
137 fromPasteboard:pboard
138 convertingFilenames:NO]);
139 EXPECT_TRUE([drop_target_ populateURL:&result_url
140 andTitle:&result_title
141 fromPasteboard:pboard
142 convertingFilenames:YES]);
143 EXPECT_EQ("file://localhost/bin/sh", result_url.spec());
144 EXPECT_EQ("sh", UTF16ToUTF8(result_title));
145 [pboard releaseGlobally];
146 }
147
148 TEST_F(WebDropTargetTest, Data) {
149 WebDropData data;
150 NSPasteboard* pboard = [NSPasteboard pasteboardWithUniqueName];
151
152 PutURLOnPasteboard(@"http://www.google.com", pboard);
153 [pboard addTypes:[NSArray arrayWithObjects:NSHTMLPboardType,
154 NSStringPboardType, nil]
155 owner:nil];
156 NSString* htmlString = @"<html><body><b>hi there</b></body></html>";
157 NSString* textString = @"hi there";
158 [pboard setString:htmlString forType:NSHTMLPboardType];
159 [pboard setString:textString forType:NSStringPboardType];
160 [drop_target_ populateWebDropData:&data fromPasteboard:pboard];
161 EXPECT_EQ(data.url.spec(), "http://www.google.com/");
162 EXPECT_EQ(base::SysNSStringToUTF16(textString), data.plain_text);
163 EXPECT_EQ(base::SysNSStringToUTF16(htmlString), data.text_html);
164
165 [pboard releaseGlobally];
166 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698