web_drag_source_mac_unittest.mm revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1// Copyright (c) 2012 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#import "content/browser/web_contents/web_drag_source_mac.h"
6
7#include "content/browser/web_contents/web_contents_impl.h"
8#include "content/public/common/drop_data.h"
9#include "content/public/test/test_renderer_host.h"
10#include "googleurl/src/gurl.h"
11#include "testing/gtest/include/gtest/gtest.h"
12
13namespace content {
14
15typedef RenderViewHostTestHarness WebDragSourceMacTest;
16
17TEST_F(WebDragSourceMacTest, DragInvalidlyEscapedBookmarklet) {
18  scoped_ptr<WebContents> contents(CreateTestWebContents());
19  base::scoped_nsobject<NSView> view(
20      [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 10, 10)]);
21
22  scoped_ptr<DropData> dropData(new DropData);
23  dropData->url = GURL("javascript:%");
24
25  WebContentsImpl* contentsImpl = static_cast<WebContentsImpl*>(contents.get());
26  base::scoped_nsobject<WebDragSource> source([[WebDragSource alloc]
27      initWithContents:contentsImpl
28                  view:view
29              dropData:dropData.get()
30                 image:nil
31                offset:NSMakePoint(0, 0)
32            pasteboard:[NSPasteboard pasteboardWithUniqueName]
33     dragOperationMask:NSDragOperationCopy]);
34
35  // Test that this call doesn't throw any exceptions: http://crbug.com/128371
36  base::scoped_nsobject<NSPasteboard> pasteboard(
37      [NSPasteboard pasteboardWithUniqueName]);
38  [source lazyWriteToPasteboard:pasteboard forType:NSURLPboardType];
39}
40
41}  // namespace content
42