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

Unified Diff: content/browser/web_contents/web_drag_dest_mac_unittest.mm

Issue 1852433004: Fix NSPasteboard leaks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix compile error. Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/web_contents/web_drag_dest_mac_unittest.mm
diff --git a/content/browser/web_contents/web_drag_dest_mac_unittest.mm b/content/browser/web_contents/web_drag_dest_mac_unittest.mm
index efa6452e267c80662ad52394e77798995ac20a68..b6a6946ab7de38bae0a470f20f7c1867deac7772 100644
--- a/content/browser/web_contents/web_drag_dest_mac_unittest.mm
+++ b/content/browser/web_contents/web_drag_dest_mac_unittest.mm
@@ -5,6 +5,7 @@
#include "base/mac/mac_util.h"
#include "base/mac/scoped_nsautorelease_pool.h"
#import "base/mac/scoped_nsobject.h"
+#include "base/memory/ref_counted.h"
#include "base/strings/sys_string_conversions.h"
#include "base/strings/utf_string_conversions.h"
#import "content/browser/web_contents/web_drag_dest_mac.h"
@@ -13,6 +14,7 @@
#include "content/test/test_web_contents.h"
#include "testing/gtest/include/gtest/gtest.h"
#import "third_party/mozilla/NSPasteboard+Utils.h"
+#import "ui/base/clipboard/clipboard_util_mac.h"
#import "ui/base/dragdrop/cocoa_dnd_util.h"
#import "ui/gfx/test/ui_cocoa_test_helper.h"
@@ -82,88 +84,80 @@ TEST_F(WebDragDestTest, Flip) {
}
TEST_F(WebDragDestTest, URL) {
- NSPasteboard* pboard = nil;
NSString* url = nil;
NSString* title = nil;
GURL result_url;
base::string16 result_title;
// Put a URL on the pasteboard and check it.
- pboard = [NSPasteboard pasteboardWithUniqueName];
+ scoped_refptr<ui::UniquePasteboard> pboard = new ui::UniquePasteboard;
url = @"http://www.google.com/";
- PutURLOnPasteboard(url, pboard);
- EXPECT_TRUE(ui::PopulateURLAndTitleFromPasteboard(
- &result_url, &result_title, pboard, NO));
+ PutURLOnPasteboard(url, pboard->get());
+ EXPECT_TRUE(ui::PopulateURLAndTitleFromPasteboard(&result_url, &result_title,
+ pboard->get(), NO));
EXPECT_EQ(base::SysNSStringToUTF8(url), result_url.spec());
- [pboard releaseGlobally];
// Put a 'url ' and 'urln' on the pasteboard and check it.
- pboard = [NSPasteboard pasteboardWithUniqueName];
+ pboard = new ui::UniquePasteboard;
url = @"http://www.google.com/";
title = @"Title of Awesomeness!",
- PutCoreURLAndTitleOnPasteboard(url, title, pboard);
- EXPECT_TRUE(ui::PopulateURLAndTitleFromPasteboard(
- &result_url, &result_title, pboard, NO));
+ PutCoreURLAndTitleOnPasteboard(url, title, pboard->get());
+ EXPECT_TRUE(ui::PopulateURLAndTitleFromPasteboard(&result_url, &result_title,
+ pboard->get(), NO));
EXPECT_EQ(base::SysNSStringToUTF8(url), result_url.spec());
EXPECT_EQ(base::SysNSStringToUTF16(title), result_title);
- [pboard releaseGlobally];
// Also check that it passes file:// via 'url '/'urln' properly.
- pboard = [NSPasteboard pasteboardWithUniqueName];
+ pboard = new ui::UniquePasteboard;
url = @"file:///tmp/dont_delete_me.txt";
title = @"very important";
- PutCoreURLAndTitleOnPasteboard(url, title, pboard);
- EXPECT_TRUE(ui::PopulateURLAndTitleFromPasteboard(
- &result_url, &result_title, pboard, NO));
+ PutCoreURLAndTitleOnPasteboard(url, title, pboard->get());
+ EXPECT_TRUE(ui::PopulateURLAndTitleFromPasteboard(&result_url, &result_title,
+ pboard->get(), NO));
EXPECT_EQ(base::SysNSStringToUTF8(url), result_url.spec());
EXPECT_EQ(base::SysNSStringToUTF16(title), result_title);
- [pboard releaseGlobally];
// And javascript:.
- pboard = [NSPasteboard pasteboardWithUniqueName];
+ pboard = new ui::UniquePasteboard;
url = @"javascript:open('http://www.youtube.com/')";
title = @"kill some time";
- PutCoreURLAndTitleOnPasteboard(url, title, pboard);
- EXPECT_TRUE(ui::PopulateURLAndTitleFromPasteboard(
- &result_url, &result_title, pboard, NO));
+ PutCoreURLAndTitleOnPasteboard(url, title, pboard->get());
+ EXPECT_TRUE(ui::PopulateURLAndTitleFromPasteboard(&result_url, &result_title,
+ pboard->get(), NO));
EXPECT_EQ(base::SysNSStringToUTF8(url), result_url.spec());
EXPECT_EQ(base::SysNSStringToUTF16(title), result_title);
- [pboard releaseGlobally];
- pboard = [NSPasteboard pasteboardWithUniqueName];
+ pboard = new ui::UniquePasteboard;
url = @"/bin/sh";
- [pboard declareTypes:[NSArray arrayWithObject:NSFilenamesPboardType]
- owner:nil];
- [pboard setPropertyList:[NSArray arrayWithObject:url]
- forType:NSFilenamesPboardType];
- EXPECT_FALSE(ui::PopulateURLAndTitleFromPasteboard(
- &result_url, &result_title, pboard, NO));
- EXPECT_TRUE(ui::PopulateURLAndTitleFromPasteboard(
- &result_url, &result_title, pboard, YES));
+ [pboard->get() declareTypes:[NSArray arrayWithObject:NSFilenamesPboardType]
+ owner:nil];
+ [pboard->get() setPropertyList:[NSArray arrayWithObject:url]
+ forType:NSFilenamesPboardType];
+ EXPECT_FALSE(ui::PopulateURLAndTitleFromPasteboard(&result_url, &result_title,
+ pboard->get(), NO));
+ EXPECT_TRUE(ui::PopulateURLAndTitleFromPasteboard(&result_url, &result_title,
+ pboard->get(), YES));
base::scoped_nsobject<NSURL> expected_output(
[[NSURL alloc] initFileURLWithPath:url isDirectory:NO]);
EXPECT_EQ([[expected_output absoluteString] UTF8String], result_url.spec());
EXPECT_EQ("sh", base::UTF16ToUTF8(result_title));
- [pboard releaseGlobally];
}
TEST_F(WebDragDestTest, Data) {
DropData data;
- NSPasteboard* pboard = [NSPasteboard pasteboardWithUniqueName];
+ scoped_refptr<ui::UniquePasteboard> pboard = new ui::UniquePasteboard;
- PutURLOnPasteboard(@"http://www.google.com", pboard);
- [pboard addTypes:[NSArray arrayWithObjects:NSHTMLPboardType,
- NSStringPboardType, nil]
- owner:nil];
+ PutURLOnPasteboard(@"http://www.google.com", pboard->get());
+ [pboard->get() 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];
- [drag_dest_ populateDropData:&data fromPasteboard:pboard];
+ [pboard->get() setString:htmlString forType:NSHTMLPboardType];
+ [pboard->get() setString:textString forType:NSStringPboardType];
+ [drag_dest_ populateDropData:&data fromPasteboard:pboard->get()];
EXPECT_EQ(data.url.spec(), "http://www.google.com/");
EXPECT_EQ(base::SysNSStringToUTF16(textString), data.text.string());
EXPECT_EQ(base::SysNSStringToUTF16(htmlString), data.html.string());
-
- [pboard releaseGlobally];
}

Powered by Google App Engine
This is Rietveld 408576698