15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2010 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/web_contents/web_drag_utils_win.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <oleidl.h>
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebDragOperation;
11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebDragOperationsMask;
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebDragOperationNone;
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebDragOperationCopy;
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebDragOperationLink;
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebDragOperationMove;
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebDragOperationGeneric;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebDragOperation WinDragOpToWebDragOp(DWORD effect) {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(effect == DROPEFFECT_NONE || effect == DROPEFFECT_COPY ||
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         effect == DROPEFFECT_LINK || effect == DROPEFFECT_MOVE);
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return WinDragOpMaskToWebDragOpMask(effect);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebDragOperationsMask WinDragOpMaskToWebDragOpMask(DWORD effects) {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebDragOperationsMask ops = WebDragOperationNone;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (effects & DROPEFFECT_COPY)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ops = static_cast<WebDragOperationsMask>(ops | WebDragOperationCopy);
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (effects & DROPEFFECT_LINK)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ops = static_cast<WebDragOperationsMask>(ops | WebDragOperationLink);
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (effects & DROPEFFECT_MOVE)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ops = static_cast<WebDragOperationsMask>(ops | WebDragOperationMove |
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             WebDragOperationGeneric);
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return ops;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DWORD WebDragOpToWinDragOp(WebDragOperation op) {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(op == WebDragOperationNone ||
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         op == WebDragOperationCopy ||
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         op == WebDragOperationLink ||
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         op == WebDragOperationMove ||
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         op == (WebDragOperationMove | WebDragOperationGeneric));
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return WebDragOpMaskToWinDragOpMask(op);
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DWORD WebDragOpMaskToWinDragOpMask(WebDragOperationsMask ops) {
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DWORD win_ops = DROPEFFECT_NONE;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (ops & WebDragOperationCopy)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    win_ops |= DROPEFFECT_COPY;
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (ops & WebDragOperationLink)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    win_ops |= DROPEFFECT_LINK;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (ops & (WebDragOperationMove | WebDragOperationGeneric))
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    win_ops |= DROPEFFECT_MOVE;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return win_ops;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
61