OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved. |
3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 ++deletionEnd; | 254 ++deletionEnd; |
255 } | 255 } |
256 if (!forwardMachine.atCodePointBoundary()) | 256 if (!forwardMachine.atCodePointBoundary()) |
257 return invalidDeletionLength; | 257 return invalidDeletionLength; |
258 | 258 |
259 const int offset = forwardMachine.getBoundaryOffset(); | 259 const int offset = forwardMachine.getBoundaryOffset(); |
260 DCHECK_EQ(offset, deletionEnd - selectionEnd); | 260 DCHECK_EQ(offset, deletionEnd - selectionEnd); |
261 return offset; | 261 return offset; |
262 } | 262 } |
263 | 263 |
264 Element* rootEditableElementOfSelection(const FrameSelection& selection) { | |
265 return rootEditableElementOf(selection.selectionInDOMTree().base()); | |
266 } | |
267 | |
268 } // anonymous namespace | 264 } // anonymous namespace |
269 | 265 |
270 InputMethodController* InputMethodController::create(LocalFrame& frame) { | 266 InputMethodController* InputMethodController::create(LocalFrame& frame) { |
271 return new InputMethodController(frame); | 267 return new InputMethodController(frame); |
272 } | 268 } |
273 | 269 |
274 InputMethodController::InputMethodController(LocalFrame& frame) | 270 InputMethodController::InputMethodController(LocalFrame& frame) |
275 : m_frame(&frame), m_hasComposition(false) {} | 271 : m_frame(&frame), m_hasComposition(false) {} |
276 | 272 |
277 InputMethodController::~InputMethodController() = default; | 273 InputMethodController::~InputMethodController() = default; |
(...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1027 | 1023 |
1028 WebTextInputInfo InputMethodController::textInputInfo() const { | 1024 WebTextInputInfo InputMethodController::textInputInfo() const { |
1029 WebTextInputInfo info; | 1025 WebTextInputInfo info; |
1030 if (!isAvailable()) | 1026 if (!isAvailable()) |
1031 return info; | 1027 return info; |
1032 | 1028 |
1033 if (!frame().selection().isAvailable()) { | 1029 if (!frame().selection().isAvailable()) { |
1034 // plugins/mouse-capture-inside-shadow.html reaches here. | 1030 // plugins/mouse-capture-inside-shadow.html reaches here. |
1035 return info; | 1031 return info; |
1036 } | 1032 } |
1037 Element* element = rootEditableElementOfSelection(frame().selection()); | 1033 Element* element = frame() |
| 1034 .selection() |
| 1035 .computeVisibleSelectionInDOMTreeDeprecated() |
| 1036 .rootEditableElement(); |
1038 if (!element) | 1037 if (!element) |
1039 return info; | 1038 return info; |
1040 | 1039 |
1041 info.inputMode = inputModeOfFocusedElement(); | 1040 info.inputMode = inputModeOfFocusedElement(); |
1042 info.type = textInputType(); | 1041 info.type = textInputType(); |
1043 info.flags = textInputFlags(); | 1042 info.flags = textInputFlags(); |
1044 if (info.type == WebTextInputTypeNone) | 1043 if (info.type == WebTextInputTypeNone) |
1045 return info; | 1044 return info; |
1046 | 1045 |
1047 if (!frame().editor().canEdit()) | 1046 if (!frame().editor().canEdit()) |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1176 | 1175 |
1177 WebTextInputType InputMethodController::textInputType() const { | 1176 WebTextInputType InputMethodController::textInputType() const { |
1178 if (!frame().selection().isAvailable()) { | 1177 if (!frame().selection().isAvailable()) { |
1179 // "mouse-capture-inside-shadow.html" reaches here. | 1178 // "mouse-capture-inside-shadow.html" reaches here. |
1180 return WebTextInputTypeNone; | 1179 return WebTextInputTypeNone; |
1181 } | 1180 } |
1182 | 1181 |
1183 // It's important to preserve the equivalence of textInputInfo().type and | 1182 // It's important to preserve the equivalence of textInputInfo().type and |
1184 // textInputType(), so perform the same rootEditableElement() existence check | 1183 // textInputType(), so perform the same rootEditableElement() existence check |
1185 // here for consistency. | 1184 // here for consistency. |
1186 if (!rootEditableElementOfSelection(frame().selection())) | 1185 if (!frame() |
| 1186 .selection() |
| 1187 .computeVisibleSelectionInDOMTreeDeprecated() |
| 1188 .rootEditableElement()) |
1187 return WebTextInputTypeNone; | 1189 return WebTextInputTypeNone; |
1188 | 1190 |
1189 if (!isAvailable()) | 1191 if (!isAvailable()) |
1190 return WebTextInputTypeNone; | 1192 return WebTextInputTypeNone; |
1191 | 1193 |
1192 Element* element = document().focusedElement(); | 1194 Element* element = document().focusedElement(); |
1193 if (!element) | 1195 if (!element) |
1194 return WebTextInputTypeNone; | 1196 return WebTextInputTypeNone; |
1195 | 1197 |
1196 if (isHTMLInputElement(*element)) { | 1198 if (isHTMLInputElement(*element)) { |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1240 finishComposingText(KeepSelection); | 1242 finishComposingText(KeepSelection); |
1241 } | 1243 } |
1242 | 1244 |
1243 DEFINE_TRACE(InputMethodController) { | 1245 DEFINE_TRACE(InputMethodController) { |
1244 visitor->trace(m_frame); | 1246 visitor->trace(m_frame); |
1245 visitor->trace(m_compositionRange); | 1247 visitor->trace(m_compositionRange); |
1246 SynchronousMutationObserver::trace(visitor); | 1248 SynchronousMutationObserver::trace(visitor); |
1247 } | 1249 } |
1248 | 1250 |
1249 } // namespace blink | 1251 } // namespace blink |
OLD | NEW |