|  | // Copyright (c) 2013 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 "ui/base/window_open_disposition.h" | 
|  |  | 
|  | #include "build/build_config.h" | 
|  | #include "ui/events/event_constants.h" | 
|  |  | 
|  | namespace ui { | 
|  |  | 
|  | WindowOpenDisposition DispositionFromClick(bool middle_button, | 
|  | bool alt_key, | 
|  | bool ctrl_key, | 
|  | bool meta_key, | 
|  | bool shift_key) { | 
|  | // MacOS uses meta key (Command key) to spawn new tabs. | 
|  | #if defined(OS_MACOSX) | 
|  | if (middle_button || meta_key) | 
|  | #else | 
|  | if (middle_button || ctrl_key) | 
|  | #endif | 
|  | return shift_key ? WindowOpenDisposition::NEW_FOREGROUND_TAB | 
|  | : WindowOpenDisposition::NEW_BACKGROUND_TAB; | 
|  | if (shift_key) | 
|  | return WindowOpenDisposition::NEW_WINDOW; | 
|  | if (alt_key) | 
|  | return WindowOpenDisposition::SAVE_TO_DISK; | 
|  | return WindowOpenDisposition::CURRENT_TAB; | 
|  | } | 
|  |  | 
|  | WindowOpenDisposition DispositionFromEventFlags(int event_flags) { | 
|  | return DispositionFromClick( | 
|  | (event_flags & ui::EF_MIDDLE_MOUSE_BUTTON) != 0, | 
|  | (event_flags & ui::EF_ALT_DOWN) != 0, | 
|  | (event_flags & ui::EF_CONTROL_DOWN) != 0, | 
|  | (event_flags & ui::EF_COMMAND_DOWN) != 0, | 
|  | (event_flags & ui::EF_SHIFT_DOWN) != 0); | 
|  | } | 
|  |  | 
|  | }  // namespace ui |