| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 STATIC_ASSERT_MATCHING_ENUM(DragOperationCopy); | 230 STATIC_ASSERT_MATCHING_ENUM(DragOperationCopy); |
| 231 STATIC_ASSERT_MATCHING_ENUM(DragOperationLink); | 231 STATIC_ASSERT_MATCHING_ENUM(DragOperationLink); |
| 232 STATIC_ASSERT_MATCHING_ENUM(DragOperationGeneric); | 232 STATIC_ASSERT_MATCHING_ENUM(DragOperationGeneric); |
| 233 STATIC_ASSERT_MATCHING_ENUM(DragOperationPrivate); | 233 STATIC_ASSERT_MATCHING_ENUM(DragOperationPrivate); |
| 234 STATIC_ASSERT_MATCHING_ENUM(DragOperationMove); | 234 STATIC_ASSERT_MATCHING_ENUM(DragOperationMove); |
| 235 STATIC_ASSERT_MATCHING_ENUM(DragOperationDelete); | 235 STATIC_ASSERT_MATCHING_ENUM(DragOperationDelete); |
| 236 STATIC_ASSERT_MATCHING_ENUM(DragOperationEvery); | 236 STATIC_ASSERT_MATCHING_ENUM(DragOperationEvery); |
| 237 | 237 |
| 238 static bool shouldUseExternalPopupMenus = false; | 238 static bool shouldUseExternalPopupMenus = false; |
| 239 | 239 |
| 240 static int webInputEventKeyStateToPlatformEventKeyState(int webInputEventKeyStat
e) | |
| 241 { | |
| 242 int platformEventKeyState = 0; | |
| 243 if (webInputEventKeyState & WebInputEvent::ShiftKey) | |
| 244 platformEventKeyState = platformEventKeyState | PlatformEvent::ShiftKey; | |
| 245 if (webInputEventKeyState & WebInputEvent::ControlKey) | |
| 246 platformEventKeyState = platformEventKeyState | PlatformEvent::CtrlKey; | |
| 247 if (webInputEventKeyState & WebInputEvent::AltKey) | |
| 248 platformEventKeyState = platformEventKeyState | PlatformEvent::AltKey; | |
| 249 if (webInputEventKeyState & WebInputEvent::MetaKey) | |
| 250 platformEventKeyState = platformEventKeyState | PlatformEvent::MetaKey; | |
| 251 return platformEventKeyState; | |
| 252 } | |
| 253 | |
| 254 namespace { | 240 namespace { |
| 255 | 241 |
| 256 class UserGestureNotifier { | 242 class UserGestureNotifier { |
| 257 public: | 243 public: |
| 258 // If a UserGestureIndicator is created for a user gesture since the last | 244 // If a UserGestureIndicator is created for a user gesture since the last |
| 259 // page load and *userGestureObserved is false, the UserGestureNotifier | 245 // page load and *userGestureObserved is false, the UserGestureNotifier |
| 260 // will notify the client and set *userGestureObserved to true. | 246 // will notify the client and set *userGestureObserved to true. |
| 261 UserGestureNotifier(WebAutofillClient*, bool* userGestureObserved); | 247 UserGestureNotifier(WebAutofillClient*, bool* userGestureObserved); |
| 262 ~UserGestureNotifier(); | 248 ~UserGestureNotifier(); |
| 263 | 249 |
| (...skipping 3368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3632 m_page->dragController().dragEnded(); | 3618 m_page->dragController().dragEnded(); |
| 3633 m_doingDragAndDrop = false; | 3619 m_doingDragAndDrop = false; |
| 3634 } | 3620 } |
| 3635 } | 3621 } |
| 3636 | 3622 |
| 3637 WebDragOperation WebViewImpl::dragTargetDragEnter( | 3623 WebDragOperation WebViewImpl::dragTargetDragEnter( |
| 3638 const WebDragData& webDragData, | 3624 const WebDragData& webDragData, |
| 3639 const WebPoint& clientPoint, | 3625 const WebPoint& clientPoint, |
| 3640 const WebPoint& screenPoint, | 3626 const WebPoint& screenPoint, |
| 3641 WebDragOperationsMask operationsAllowed, | 3627 WebDragOperationsMask operationsAllowed, |
| 3642 int keyModifiers) | 3628 int modifiers) |
| 3643 { | 3629 { |
| 3644 ASSERT(!m_currentDragData); | 3630 ASSERT(!m_currentDragData); |
| 3645 | 3631 |
| 3646 m_currentDragData = DataObject::create(webDragData); | 3632 m_currentDragData = DataObject::create(webDragData); |
| 3647 m_operationsAllowed = operationsAllowed; | 3633 m_operationsAllowed = operationsAllowed; |
| 3648 | 3634 |
| 3649 return dragTargetDragEnterOrOver(clientPoint, screenPoint, DragEnter, keyMod
ifiers); | 3635 return dragTargetDragEnterOrOver(clientPoint, screenPoint, DragEnter, modifi
ers); |
| 3650 } | 3636 } |
| 3651 | 3637 |
| 3652 WebDragOperation WebViewImpl::dragTargetDragOver( | 3638 WebDragOperation WebViewImpl::dragTargetDragOver( |
| 3653 const WebPoint& clientPoint, | 3639 const WebPoint& clientPoint, |
| 3654 const WebPoint& screenPoint, | 3640 const WebPoint& screenPoint, |
| 3655 WebDragOperationsMask operationsAllowed, | 3641 WebDragOperationsMask operationsAllowed, |
| 3656 int keyModifiers) | 3642 int modifiers) |
| 3657 { | 3643 { |
| 3658 m_operationsAllowed = operationsAllowed; | 3644 m_operationsAllowed = operationsAllowed; |
| 3659 | 3645 |
| 3660 return dragTargetDragEnterOrOver(clientPoint, screenPoint, DragOver, keyModi
fiers); | 3646 return dragTargetDragEnterOrOver(clientPoint, screenPoint, DragOver, modifie
rs); |
| 3661 } | 3647 } |
| 3662 | 3648 |
| 3663 void WebViewImpl::dragTargetDragLeave() | 3649 void WebViewImpl::dragTargetDragLeave() |
| 3664 { | 3650 { |
| 3665 ASSERT(m_currentDragData); | 3651 ASSERT(m_currentDragData); |
| 3666 | 3652 |
| 3667 DragData dragData( | 3653 DragData dragData( |
| 3668 m_currentDragData.get(), | 3654 m_currentDragData.get(), |
| 3669 IntPoint(), | 3655 IntPoint(), |
| 3670 IntPoint(), | 3656 IntPoint(), |
| 3671 static_cast<DragOperation>(m_operationsAllowed)); | 3657 static_cast<DragOperation>(m_operationsAllowed)); |
| 3672 | 3658 |
| 3673 m_page->dragController().dragExited(&dragData); | 3659 m_page->dragController().dragExited(&dragData); |
| 3674 | 3660 |
| 3675 // FIXME: why is the drag scroll timer not stopped here? | 3661 // FIXME: why is the drag scroll timer not stopped here? |
| 3676 | 3662 |
| 3677 m_dragOperation = WebDragOperationNone; | 3663 m_dragOperation = WebDragOperationNone; |
| 3678 m_currentDragData = nullptr; | 3664 m_currentDragData = nullptr; |
| 3679 } | 3665 } |
| 3680 | 3666 |
| 3681 void WebViewImpl::dragTargetDrop(const WebPoint& clientPoint, | 3667 void WebViewImpl::dragTargetDrop(const WebPoint& clientPoint, |
| 3682 const WebPoint& screenPoint, | 3668 const WebPoint& screenPoint, |
| 3683 int keyModifiers) | 3669 int modifiers) |
| 3684 { | 3670 { |
| 3685 ASSERT(m_currentDragData); | 3671 ASSERT(m_currentDragData); |
| 3686 | 3672 |
| 3687 WebAutofillClient* autofillClient = mainFrameImpl() ? mainFrameImpl()->autof
illClient() : 0; | 3673 WebAutofillClient* autofillClient = mainFrameImpl() ? mainFrameImpl()->autof
illClient() : 0; |
| 3688 UserGestureNotifier notifier(autofillClient, &m_userGestureObserved); | 3674 UserGestureNotifier notifier(autofillClient, &m_userGestureObserved); |
| 3689 | 3675 |
| 3690 // If this webview transitions from the "drop accepting" state to the "not | 3676 // If this webview transitions from the "drop accepting" state to the "not |
| 3691 // accepting" state, then our IPC message reply indicating that may be in- | 3677 // accepting" state, then our IPC message reply indicating that may be in- |
| 3692 // flight, or else delayed by javascript processing in this webview. If a | 3678 // flight, or else delayed by javascript processing in this webview. If a |
| 3693 // drop happens before our IPC reply has reached the browser process, then | 3679 // drop happens before our IPC reply has reached the browser process, then |
| 3694 // the browser forwards the drop to this webview. So only allow a drop to | 3680 // the browser forwards the drop to this webview. So only allow a drop to |
| 3695 // proceed if our webview m_dragOperation state is not DragOperationNone. | 3681 // proceed if our webview m_dragOperation state is not DragOperationNone. |
| 3696 | 3682 |
| 3697 if (m_dragOperation == WebDragOperationNone) { // IPC RACE CONDITION: do not
allow this drop. | 3683 if (m_dragOperation == WebDragOperationNone) { // IPC RACE CONDITION: do not
allow this drop. |
| 3698 dragTargetDragLeave(); | 3684 dragTargetDragLeave(); |
| 3699 return; | 3685 return; |
| 3700 } | 3686 } |
| 3701 | 3687 |
| 3702 m_currentDragData->setModifierKeyState(webInputEventKeyStateToPlatformEventK
eyState(keyModifiers)); | 3688 m_currentDragData->setModifiers(toPlatformMouseEventModifiers(modifiers)); |
| 3703 DragData dragData( | 3689 DragData dragData( |
| 3704 m_currentDragData.get(), | 3690 m_currentDragData.get(), |
| 3705 clientPoint, | 3691 clientPoint, |
| 3706 screenPoint, | 3692 screenPoint, |
| 3707 static_cast<DragOperation>(m_operationsAllowed)); | 3693 static_cast<DragOperation>(m_operationsAllowed)); |
| 3708 | 3694 |
| 3709 UserGestureIndicator gesture(DefinitelyProcessingNewUserGesture); | 3695 UserGestureIndicator gesture(DefinitelyProcessingNewUserGesture); |
| 3710 m_page->dragController().performDrag(&dragData); | 3696 m_page->dragController().performDrag(&dragData); |
| 3711 | 3697 |
| 3712 m_dragOperation = WebDragOperationNone; | 3698 m_dragOperation = WebDragOperationNone; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 3730 { | 3716 { |
| 3731 Vector<String> convertedWords; | 3717 Vector<String> convertedWords; |
| 3732 convertedWords.append(words.data(), words.size()); | 3718 convertedWords.append(words.data(), words.size()); |
| 3733 | 3719 |
| 3734 for (Frame* frame = m_page->mainFrame(); frame; frame = frame->tree().traver
seNext()) { | 3720 for (Frame* frame = m_page->mainFrame(); frame; frame = frame->tree().traver
seNext()) { |
| 3735 if (frame->isLocalFrame()) | 3721 if (frame->isLocalFrame()) |
| 3736 toLocalFrame(frame)->removeSpellingMarkersUnderWords(convertedWords)
; | 3722 toLocalFrame(frame)->removeSpellingMarkersUnderWords(convertedWords)
; |
| 3737 } | 3723 } |
| 3738 } | 3724 } |
| 3739 | 3725 |
| 3740 WebDragOperation WebViewImpl::dragTargetDragEnterOrOver(const WebPoint& clientPo
int, const WebPoint& screenPoint, DragAction dragAction, int keyModifiers) | 3726 WebDragOperation WebViewImpl::dragTargetDragEnterOrOver(const WebPoint& clientPo
int, const WebPoint& screenPoint, DragAction dragAction, int modifiers) |
| 3741 { | 3727 { |
| 3742 ASSERT(m_currentDragData); | 3728 ASSERT(m_currentDragData); |
| 3743 | 3729 |
| 3744 m_currentDragData->setModifierKeyState(webInputEventKeyStateToPlatformEventK
eyState(keyModifiers)); | 3730 m_currentDragData->setModifiers(toPlatformMouseEventModifiers(modifiers)); |
| 3745 DragData dragData( | 3731 DragData dragData( |
| 3746 m_currentDragData.get(), | 3732 m_currentDragData.get(), |
| 3747 clientPoint, | 3733 clientPoint, |
| 3748 screenPoint, | 3734 screenPoint, |
| 3749 static_cast<DragOperation>(m_operationsAllowed)); | 3735 static_cast<DragOperation>(m_operationsAllowed)); |
| 3750 | 3736 |
| 3751 DragSession dragSession; | 3737 DragSession dragSession; |
| 3752 if (dragAction == DragEnter) | 3738 if (dragAction == DragEnter) |
| 3753 dragSession = m_page->dragController().dragEntered(&dragData); | 3739 dragSession = m_page->dragController().dragEntered(&dragData); |
| 3754 else | 3740 else |
| (...skipping 911 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4666 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width | 4652 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width |
| 4667 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); | 4653 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); |
| 4668 } | 4654 } |
| 4669 | 4655 |
| 4670 void WebViewImpl::forceNextWebGLContextCreationToFail() | 4656 void WebViewImpl::forceNextWebGLContextCreationToFail() |
| 4671 { | 4657 { |
| 4672 WebGLRenderingContext::forceNextWebGLContextCreationToFail(); | 4658 WebGLRenderingContext::forceNextWebGLContextCreationToFail(); |
| 4673 } | 4659 } |
| 4674 | 4660 |
| 4675 } // namespace blink | 4661 } // namespace blink |
| OLD | NEW |