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#include "content/common/cursors/webcursor.h"
6
7#include "base/logging.h"
8#include "third_party/WebKit/public/platform/WebCursorInfo.h"
9#include "ui/base/cursor/cursor.h"
10
11using blink::WebCursorInfo;
12
13namespace content {
14
15gfx::NativeCursor WebCursor::GetNativeCursor() {
16  switch (type_) {
17    case WebCursorInfo::TypePointer:
18      return ui::kCursorPointer;
19    case WebCursorInfo::TypeCross:
20      return ui::kCursorCross;
21    case WebCursorInfo::TypeHand:
22      return ui::kCursorHand;
23    case WebCursorInfo::TypeIBeam:
24      return ui::kCursorIBeam;
25    case WebCursorInfo::TypeWait:
26      return ui::kCursorWait;
27    case WebCursorInfo::TypeHelp:
28      return ui::kCursorHelp;
29    case WebCursorInfo::TypeEastResize:
30      return ui::kCursorEastResize;
31    case WebCursorInfo::TypeNorthResize:
32      return ui::kCursorNorthResize;
33    case WebCursorInfo::TypeNorthEastResize:
34      return ui::kCursorNorthEastResize;
35    case WebCursorInfo::TypeNorthWestResize:
36      return ui::kCursorNorthWestResize;
37    case WebCursorInfo::TypeSouthResize:
38      return ui::kCursorSouthResize;
39    case WebCursorInfo::TypeSouthEastResize:
40      return ui::kCursorSouthEastResize;
41    case WebCursorInfo::TypeSouthWestResize:
42      return ui::kCursorSouthWestResize;
43    case WebCursorInfo::TypeWestResize:
44      return ui::kCursorWestResize;
45    case WebCursorInfo::TypeNorthSouthResize:
46      return ui::kCursorNorthSouthResize;
47    case WebCursorInfo::TypeEastWestResize:
48      return ui::kCursorEastWestResize;
49    case WebCursorInfo::TypeNorthEastSouthWestResize:
50      return ui::kCursorNorthEastSouthWestResize;
51    case WebCursorInfo::TypeNorthWestSouthEastResize:
52      return ui::kCursorNorthWestSouthEastResize;
53    case WebCursorInfo::TypeColumnResize:
54      return ui::kCursorColumnResize;
55    case WebCursorInfo::TypeRowResize:
56      return ui::kCursorRowResize;
57    case WebCursorInfo::TypeMiddlePanning:
58      return ui::kCursorMiddlePanning;
59    case WebCursorInfo::TypeEastPanning:
60      return ui::kCursorEastPanning;
61    case WebCursorInfo::TypeNorthPanning:
62      return ui::kCursorNorthPanning;
63    case WebCursorInfo::TypeNorthEastPanning:
64      return ui::kCursorNorthEastPanning;
65    case WebCursorInfo::TypeNorthWestPanning:
66      return ui::kCursorNorthWestPanning;
67    case WebCursorInfo::TypeSouthPanning:
68      return ui::kCursorSouthPanning;
69    case WebCursorInfo::TypeSouthEastPanning:
70      return ui::kCursorSouthEastPanning;
71    case WebCursorInfo::TypeSouthWestPanning:
72      return ui::kCursorSouthWestPanning;
73    case WebCursorInfo::TypeWestPanning:
74      return ui::kCursorWestPanning;
75    case WebCursorInfo::TypeMove:
76      return ui::kCursorMove;
77    case WebCursorInfo::TypeVerticalText:
78      return ui::kCursorVerticalText;
79    case WebCursorInfo::TypeCell:
80      return ui::kCursorCell;
81    case WebCursorInfo::TypeContextMenu:
82      return ui::kCursorContextMenu;
83    case WebCursorInfo::TypeAlias:
84      return ui::kCursorAlias;
85    case WebCursorInfo::TypeProgress:
86      return ui::kCursorProgress;
87    case WebCursorInfo::TypeNoDrop:
88      return ui::kCursorNoDrop;
89    case WebCursorInfo::TypeCopy:
90      return ui::kCursorCopy;
91    case WebCursorInfo::TypeNone:
92      return ui::kCursorNone;
93    case WebCursorInfo::TypeNotAllowed:
94      return ui::kCursorNotAllowed;
95    case WebCursorInfo::TypeZoomIn:
96      return ui::kCursorZoomIn;
97    case WebCursorInfo::TypeZoomOut:
98      return ui::kCursorZoomOut;
99    case WebCursorInfo::TypeGrab:
100      return ui::kCursorGrab;
101    case WebCursorInfo::TypeGrabbing:
102      return ui::kCursorGrabbing;
103    case WebCursorInfo::TypeCustom: {
104      ui::Cursor cursor(ui::kCursorCustom);
105      cursor.SetPlatformCursor(GetPlatformCursor());
106      return cursor;
107    }
108    default:
109      NOTREACHED();
110      return gfx::kNullCursor;
111  }
112}
113
114}  // namespace content
115