| 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 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 , m_doubleTapZoomPageScaleFactor(0) | 405 , m_doubleTapZoomPageScaleFactor(0) |
| 406 , m_doubleTapZoomPending(false) | 406 , m_doubleTapZoomPending(false) |
| 407 , m_enableFakePageScaleAnimationForTesting(false) | 407 , m_enableFakePageScaleAnimationForTesting(false) |
| 408 , m_fakePageScaleAnimationPageScaleFactor(0) | 408 , m_fakePageScaleAnimationPageScaleFactor(0) |
| 409 , m_fakePageScaleAnimationUseAnchor(false) | 409 , m_fakePageScaleAnimationUseAnchor(false) |
| 410 , m_contextMenuAllowed(false) | 410 , m_contextMenuAllowed(false) |
| 411 , m_doingDragAndDrop(false) | 411 , m_doingDragAndDrop(false) |
| 412 , m_ignoreInputEvents(false) | 412 , m_ignoreInputEvents(false) |
| 413 , m_compositorDeviceScaleFactorOverride(0) | 413 , m_compositorDeviceScaleFactorOverride(0) |
| 414 , m_rootLayerScale(1) | 414 , m_rootLayerScale(1) |
| 415 , m_suppressNextKeypressEvent(false) | 415 , m_suppressNextKeypressEvent(Suppress_None) |
| 416 , m_imeAcceptEvents(true) | 416 , m_imeAcceptEvents(true) |
| 417 , m_operationsAllowed(WebDragOperationNone) | 417 , m_operationsAllowed(WebDragOperationNone) |
| 418 , m_dragOperation(WebDragOperationNone) | 418 , m_dragOperation(WebDragOperationNone) |
| 419 , m_isTransparent(false) | 419 , m_isTransparent(false) |
| 420 , m_tabsToLinks(false) | 420 , m_tabsToLinks(false) |
| 421 , m_layerTreeView(0) | 421 , m_layerTreeView(0) |
| 422 , m_rootLayer(0) | 422 , m_rootLayer(0) |
| 423 , m_rootGraphicsLayer(0) | 423 , m_rootGraphicsLayer(0) |
| 424 , m_rootTransformLayer(0) | 424 , m_rootTransformLayer(0) |
| 425 , m_graphicsLayerFactory(adoptPtr(new GraphicsLayerFactoryChromium(this))) | 425 , m_graphicsLayerFactory(adoptPtr(new GraphicsLayerFactoryChromium(this))) |
| (...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1009 || (event.type == WebInputEvent::KeyDown) | 1009 || (event.type == WebInputEvent::KeyDown) |
| 1010 || (event.type == WebInputEvent::KeyUp)); | 1010 || (event.type == WebInputEvent::KeyUp)); |
| 1011 | 1011 |
| 1012 // Halt an in-progress fling on a key event. | 1012 // Halt an in-progress fling on a key event. |
| 1013 endActiveFlingAnimation(); | 1013 endActiveFlingAnimation(); |
| 1014 | 1014 |
| 1015 // Please refer to the comments explaining the m_suppressNextKeypressEvent | 1015 // Please refer to the comments explaining the m_suppressNextKeypressEvent |
| 1016 // member. | 1016 // member. |
| 1017 // The m_suppressNextKeypressEvent is set if the KeyDown is handled by | 1017 // The m_suppressNextKeypressEvent is set if the KeyDown is handled by |
| 1018 // Webkit. A keyDown event is typically associated with a keyPress(char) | 1018 // Webkit. A keyDown event is typically associated with a keyPress(char) |
| 1019 // event and a keyUp event. We reset this flag here as this is a new keyDown | 1019 // event and a keyUp event. We reset this state here as this is a new keyDow
n |
| 1020 // event. | 1020 // event. |
| 1021 m_suppressNextKeypressEvent = false; | 1021 m_suppressNextKeypressEvent = Suppress_None; |
| 1022 | 1022 |
| 1023 // If there is a select popup, it should be the one processing the event, | 1023 // If there is a select popup, it should be the one processing the event, |
| 1024 // not the page. | 1024 // not the page. |
| 1025 if (m_selectPopup) | 1025 if (m_selectPopup) |
| 1026 return m_selectPopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)
); | 1026 return m_selectPopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)
); |
| 1027 if (m_pagePopup) { | 1027 if (m_pagePopup) { |
| 1028 m_pagePopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)); | 1028 m_pagePopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)); |
| 1029 // We need to ignore the next Char event after this otherwise pressing | 1029 // We need to ignore the next Char event after this otherwise pressing |
| 1030 // enter when selecting an item in the popup will go to the page. | 1030 // enter when selecting an item in the popup will go to the page. |
| 1031 if (WebInputEvent::RawKeyDown == event.type) | 1031 if (WebInputEvent::RawKeyDown == event.type) |
| 1032 m_suppressNextKeypressEvent = true; | 1032 m_suppressNextKeypressEvent = Suppress_KeyEventCanceled; |
| 1033 return true; | 1033 return true; |
| 1034 } | 1034 } |
| 1035 | 1035 |
| 1036 RefPtrWillBeRawPtr<Frame> focusedFrame = focusedCoreFrame(); | 1036 RefPtrWillBeRawPtr<Frame> focusedFrame = focusedCoreFrame(); |
| 1037 if (focusedFrame && focusedFrame->isRemoteFrame()) { | 1037 if (focusedFrame && focusedFrame->isRemoteFrame()) { |
| 1038 WebRemoteFrameImpl* webFrame = WebRemoteFrameImpl::fromFrame(*toRemoteFr
ame(focusedFrame.get())); | 1038 WebRemoteFrameImpl* webFrame = WebRemoteFrameImpl::fromFrame(*toRemoteFr
ame(focusedFrame.get())); |
| 1039 webFrame->client()->forwardInputEvent(&event); | 1039 webFrame->client()->forwardInputEvent(&event); |
| 1040 return true; | 1040 return true; |
| 1041 } | 1041 } |
| 1042 | 1042 |
| 1043 if (!focusedFrame || !focusedFrame->isLocalFrame()) | 1043 if (!focusedFrame || !focusedFrame->isLocalFrame()) |
| 1044 return false; | 1044 return false; |
| 1045 | 1045 |
| 1046 LocalFrame* frame = toLocalFrame(focusedFrame.get()); | 1046 LocalFrame* frame = toLocalFrame(focusedFrame.get()); |
| 1047 | 1047 |
| 1048 PlatformKeyboardEventBuilder evt(event); | 1048 PlatformKeyboardEventBuilder evt(event); |
| 1049 | 1049 |
| 1050 if (frame->eventHandler().keyEvent(evt)) { | 1050 if (frame->eventHandler().keyEvent(evt)) { |
| 1051 if (WebInputEvent::RawKeyDown == event.type) { | 1051 if (WebInputEvent::RawKeyDown == event.type) { |
| 1052 // Suppress the next keypress event unless the focused node is a plu
g-in node. | 1052 // Suppress the next keypress event unless the focused node is a plu
g-in node. |
| 1053 // (Flash needs these keypress events to handle non-US keyboards.) | 1053 // (Flash needs these keypress events to handle non-US keyboards.) |
| 1054 Element* element = focusedElement(); | 1054 Element* element = focusedElement(); |
| 1055 if (!element || !element->renderer() || !element->renderer()->isEmbe
ddedObject()) | 1055 if (!element || !element->renderer() || !element->renderer()->isEmbe
ddedObject()) |
| 1056 m_suppressNextKeypressEvent = true; | 1056 m_suppressNextKeypressEvent = Suppress_KeyEventHandled; |
| 1057 } | 1057 } |
| 1058 return true; | 1058 return true; |
| 1059 } | 1059 } |
| 1060 | 1060 |
| 1061 #if !OS(MACOSX) | 1061 #if !OS(MACOSX) |
| 1062 const WebInputEvent::Type contextMenuTriggeringEventType = | 1062 const WebInputEvent::Type contextMenuTriggeringEventType = |
| 1063 #if OS(WIN) | 1063 #if OS(WIN) |
| 1064 WebInputEvent::KeyUp; | 1064 WebInputEvent::KeyUp; |
| 1065 #else | 1065 #else |
| 1066 WebInputEvent::RawKeyDown; | 1066 WebInputEvent::RawKeyDown; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1079 | 1079 |
| 1080 bool WebViewImpl::handleCharEvent(const WebKeyboardEvent& event) | 1080 bool WebViewImpl::handleCharEvent(const WebKeyboardEvent& event) |
| 1081 { | 1081 { |
| 1082 ASSERT(event.type == WebInputEvent::Char); | 1082 ASSERT(event.type == WebInputEvent::Char); |
| 1083 | 1083 |
| 1084 // Please refer to the comments explaining the m_suppressNextKeypressEvent | 1084 // Please refer to the comments explaining the m_suppressNextKeypressEvent |
| 1085 // member. The m_suppressNextKeypressEvent is set if the KeyDown is | 1085 // member. The m_suppressNextKeypressEvent is set if the KeyDown is |
| 1086 // handled by Webkit. A keyDown event is typically associated with a | 1086 // handled by Webkit. A keyDown event is typically associated with a |
| 1087 // keyPress(char) event and a keyUp event. We reset this flag here as it | 1087 // keyPress(char) event and a keyUp event. We reset this flag here as it |
| 1088 // only applies to the current keyPress event. | 1088 // only applies to the current keyPress event. |
| 1089 bool suppress = m_suppressNextKeypressEvent; | 1089 bool suppress = (m_suppressNextKeypressEvent != Suppress_None); |
| 1090 m_suppressNextKeypressEvent = false; | 1090 m_suppressNextKeypressEvent = Suppress_None; |
| 1091 | 1091 |
| 1092 // If there is a select popup, it should be the one processing the event, | 1092 // If there is a select popup, it should be the one processing the event, |
| 1093 // not the page. | 1093 // not the page. |
| 1094 if (m_selectPopup) | 1094 if (m_selectPopup) |
| 1095 return m_selectPopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)
); | 1095 return m_selectPopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)
); |
| 1096 if (m_pagePopup) | 1096 if (m_pagePopup) |
| 1097 return m_pagePopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)); | 1097 return m_pagePopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)); |
| 1098 | 1098 |
| 1099 LocalFrame* frame = toLocalFrame(focusedCoreFrame()); | 1099 LocalFrame* frame = toLocalFrame(focusedCoreFrame()); |
| 1100 if (!frame) | 1100 if (!frame) |
| (...skipping 1196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2297 // editable because JavaScript may delete a parent node of the composition | 2297 // editable because JavaScript may delete a parent node of the composition |
| 2298 // node. In this case, WebKit crashes while deleting texts from the parent | 2298 // node. In this case, WebKit crashes while deleting texts from the parent |
| 2299 // node, which doesn't exist any longer. | 2299 // node, which doesn't exist any longer. |
| 2300 RefPtrWillBeRawPtr<Range> range = inputMethodController.compositionRange(); | 2300 RefPtrWillBeRawPtr<Range> range = inputMethodController.compositionRange(); |
| 2301 if (range) { | 2301 if (range) { |
| 2302 Node* node = range->startContainer(); | 2302 Node* node = range->startContainer(); |
| 2303 if (!node || !node->isContentEditable()) | 2303 if (!node || !node->isContentEditable()) |
| 2304 return false; | 2304 return false; |
| 2305 } | 2305 } |
| 2306 | 2306 |
| 2307 // If we're not going to fire a keypress event, then the keydown event was | 2307 // The keydown event was canceled, so cancel any existing composition. |
| 2308 // canceled. In that case, cancel any existing composition. | 2308 if (text.isEmpty() || m_suppressNextKeypressEvent == Suppress_KeyEventCancel
ed) { |
| 2309 if (text.isEmpty() || m_suppressNextKeypressEvent) { | |
| 2310 // A browser process sent an IPC message which does not contain a valid | 2309 // A browser process sent an IPC message which does not contain a valid |
| 2311 // string, which means an ongoing composition has been canceled. | 2310 // string, which means an ongoing composition has been canceled. |
| 2312 // If the ongoing composition has been canceled, replace the ongoing | 2311 // If the ongoing composition has been canceled, replace the ongoing |
| 2313 // composition string with an empty string and complete it. | 2312 // composition string with an empty string and complete it. |
| 2314 String emptyString; | 2313 String emptyString; |
| 2315 Vector<CompositionUnderline> emptyUnderlines; | 2314 Vector<CompositionUnderline> emptyUnderlines; |
| 2316 inputMethodController.setComposition(emptyString, emptyUnderlines, 0, 0)
; | 2315 inputMethodController.setComposition(emptyString, emptyUnderlines, 0, 0)
; |
| 2317 return text.isEmpty(); | 2316 return text.isEmpty(); |
| 2318 } | 2317 } |
| 2319 | 2318 |
| (...skipping 2351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4671 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width | 4670 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width |
| 4672 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); | 4671 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); |
| 4673 } | 4672 } |
| 4674 | 4673 |
| 4675 void WebViewImpl::forceNextWebGLContextCreationToFail() | 4674 void WebViewImpl::forceNextWebGLContextCreationToFail() |
| 4676 { | 4675 { |
| 4677 WebGLRenderingContext::forceNextWebGLContextCreationToFail(); | 4676 WebGLRenderingContext::forceNextWebGLContextCreationToFail(); |
| 4678 } | 4677 } |
| 4679 | 4678 |
| 4680 } // namespace blink | 4679 } // namespace blink |
| OLD | NEW |