1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/scoped_nsautorelease_pool.h"
#include "base/sys_string_conversions.h"
#import "chrome/browser/cocoa/cocoa_test_helper.h"
#import "chrome/browser/cocoa/web_drop_target.h"
#include "chrome/browser/renderer_host/test/test_render_view_host.h"
#include "testing/gtest/include/gtest/gtest.h"
#import "third_party/mozilla/include/NSPasteboard+Utils.h"
#include "webkit/glue/webdropdata.h"
class WebDropTargetTest : public RenderViewHostTestHarness {
public:
virtual void SetUp() {
RenderViewHostTestHarness::SetUp();
CocoaTest::BootstrapCocoa();
drop_target_.reset([[WebDropTarget alloc] initWithTabContents:contents()]);
}
void PutURLOnPasteboard(NSString* urlString, NSPasteboard* pboard) {
[pboard declareTypes:[NSArray arrayWithObject:NSURLPboardType]
owner:nil];
NSURL* url = [NSURL URLWithString:urlString];
EXPECT_TRUE(url);
[url writeToPasteboard:pboard];
}
base::ScopedNSAutoreleasePool pool_;
scoped_nsobject<WebDropTarget> drop_target_;
};
// Make sure nothing leaks.
TEST_F(WebDropTargetTest, Init) {
EXPECT_TRUE(drop_target_);
}
// Test flipping of coordinates given a point in window coordinates.
TEST_F(WebDropTargetTest, Flip) {
NSPoint windowPoint = NSZeroPoint;
scoped_nsobject<NSWindow> window([[CocoaTestHelperWindow alloc] init]);
NSPoint viewPoint =
[drop_target_ flipWindowPointToView:windowPoint
view:[window contentView]];
NSPoint screenPoint =
[drop_target_ flipWindowPointToScreen:windowPoint
view:[window contentView]];
EXPECT_EQ(viewPoint.x, 0);
EXPECT_EQ(viewPoint.y, 600);
EXPECT_EQ(screenPoint.x, 0);
// We can't put a value on the screen size since everyone will have a
// different one.
EXPECT_NE(screenPoint.y, 0);
}
TEST_F(WebDropTargetTest, URL) {
WebDropData data;
// Put a URL on the pasteboard and check it.
NSPasteboard* pboard = [NSPasteboard pasteboardWithUniqueName];
PutURLOnPasteboard(@"http://www.google.com", pboard);
[drop_target_ populateURLAndTitle:&data fromPasteboard:pboard];
EXPECT_EQ(data.url.spec(), "http://www.google.com/");
[pboard releaseGlobally];
// Put a 'url ' and 'urln' on the pasteboard and check it.
NSString* title = @"Title of Awesomeness!";
pboard = [NSPasteboard pasteboardWithUniqueName];
[pboard declareTypes:[NSArray arrayWithObjects:kCorePasteboardFlavorType_url,
kCorePasteboardFlavorType_urln, nil]
owner:nil];
[pboard setString:@"http://www.something.com/"
forType:kCorePasteboardFlavorType_url];
[pboard setString:title
forType:kCorePasteboardFlavorType_urln];
[drop_target_ populateURLAndTitle:&data fromPasteboard:pboard];
EXPECT_EQ(data.url.spec(), "http://www.something.com/");
EXPECT_EQ(data.url_title, base::SysNSStringToUTF16(title));
[pboard releaseGlobally];
}
TEST_F(WebDropTargetTest, Data) {
WebDropData data;
NSPasteboard* pboard = [NSPasteboard pasteboardWithUniqueName];
PutURLOnPasteboard(@"http://www.google.com", pboard);
[pboard addTypes:[NSArray arrayWithObjects:NSHTMLPboardType,
NSStringPboardType, nil]
owner:nil];
NSString* htmlString = @"<html><body><b>hi there</b></body></html>";
NSString* textString = @"hi there";
[pboard setString:htmlString forType:NSHTMLPboardType];
[pboard setString:textString forType:NSStringPboardType];
[drop_target_ populateWebDropData:&data fromPasteboard:pboard];
EXPECT_EQ(data.url.spec(), "http://www.google.com/");
EXPECT_EQ(data.plain_text, base::SysNSStringToUTF16(textString));
EXPECT_EQ(data.text_html, base::SysNSStringToUTF16(htmlString));
[pboard releaseGlobally];
}
TEST_F(WebDropTargetTest, EnterExitDrop) {
// TODO(pinkerton): Call enter/exit/drop and see what happens. This is a bit
// harder to test.
}
|