| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2014 Google Inc. All rights reserved. | 2 * Copyright (C) 2014 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 551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 562 LocalFrame* focused = focusedLocalFrameAvailableForIme(); | 562 LocalFrame* focused = focusedLocalFrameAvailableForIme(); |
| 563 if (!focused) | 563 if (!focused) |
| 564 return false; | 564 return false; |
| 565 | 565 |
| 566 if (WebPlugin* plugin = focusedPluginIfInputMethodSupported(focused)) | 566 if (WebPlugin* plugin = focusedPluginIfInputMethodSupported(focused)) |
| 567 return plugin->confirmComposition(text, selectionBehavior); | 567 return plugin->confirmComposition(text, selectionBehavior); |
| 568 | 568 |
| 569 return focused->inputMethodController().confirmCompositionOrInsertText(text,
selectionBehavior == KeepSelection ? InputMethodController::KeepSelection : Inp
utMethodController::DoNotKeepSelection); | 569 return focused->inputMethodController().confirmCompositionOrInsertText(text,
selectionBehavior == KeepSelection ? InputMethodController::KeepSelection : Inp
utMethodController::DoNotKeepSelection); |
| 570 } | 570 } |
| 571 | 571 |
| 572 bool WebFrameWidgetImpl::compositionRange(size_t* location, size_t* length) | 572 WebRange WebFrameWidgetImpl::compositionRange() |
| 573 { | 573 { |
| 574 LocalFrame* focused = focusedLocalFrameAvailableForIme(); | 574 LocalFrame* focused = focusedLocalFrameAvailableForIme(); |
| 575 if (!focused) | 575 if (!focused) |
| 576 return false; | 576 return WebRange(); |
| 577 | 577 |
| 578 const EphemeralRange range = focused->inputMethodController().compositionEph
emeralRange(); | 578 const EphemeralRange range = focused->inputMethodController().compositionEph
emeralRange(); |
| 579 if (range.isNull()) | 579 if (range.isNull()) |
| 580 return false; | 580 return WebRange(); |
| 581 | 581 |
| 582 Element* editable = focused->selection().rootEditableElementOrDocumentElemen
t(); | 582 Element* editable = focused->selection().rootEditableElementOrDocumentElemen
t(); |
| 583 DCHECK(editable); | 583 DCHECK(editable); |
| 584 PlainTextRange plainTextRange(PlainTextRange::create(*editable, range)); | 584 return PlainTextRange::create(*editable, range); |
| 585 if (plainTextRange.isNull()) | |
| 586 return false; | |
| 587 *location = plainTextRange.start(); | |
| 588 *length = plainTextRange.length(); | |
| 589 return true; | |
| 590 } | 585 } |
| 591 | 586 |
| 592 WebTextInputInfo WebFrameWidgetImpl::textInputInfo() | 587 WebTextInputInfo WebFrameWidgetImpl::textInputInfo() |
| 593 { | 588 { |
| 594 WebTextInputInfo info; | 589 WebTextInputInfo info; |
| 595 | 590 |
| 596 LocalFrame* focused = focusedLocalFrameInWidget(); | 591 LocalFrame* focused = focusedLocalFrameInWidget(); |
| 597 if (!focused) | 592 if (!focused) |
| 598 return info; | 593 return info; |
| 599 | 594 |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 846 page()->pointerLockController().didNotAcquirePointerLock(); | 841 page()->pointerLockController().didNotAcquirePointerLock(); |
| 847 } | 842 } |
| 848 | 843 |
| 849 void WebFrameWidgetImpl::didLosePointerLock() | 844 void WebFrameWidgetImpl::didLosePointerLock() |
| 850 { | 845 { |
| 851 page()->pointerLockController().didLosePointerLock(); | 846 page()->pointerLockController().didLosePointerLock(); |
| 852 } | 847 } |
| 853 | 848 |
| 854 bool WebFrameWidgetImpl::getCompositionCharacterBounds(WebVector<WebRect>& bound
s) | 849 bool WebFrameWidgetImpl::getCompositionCharacterBounds(WebVector<WebRect>& bound
s) |
| 855 { | 850 { |
| 856 size_t offset = 0; | 851 WebRange range = compositionRange(); |
| 857 size_t characterCount = 0; | 852 if (range.isNull()) |
| 858 if (!compositionRange(&offset, &characterCount)) | |
| 859 return false; | 853 return false; |
| 860 | 854 |
| 861 if (characterCount == 0) | 855 if (range.length() == 0) |
| 862 return false; | 856 return false; |
| 863 | 857 |
| 864 LocalFrame* frame = focusedLocalFrameInWidget(); | 858 LocalFrame* frame = focusedLocalFrameInWidget(); |
| 865 if (!frame) | 859 if (!frame) |
| 866 return false; | 860 return false; |
| 867 | 861 |
| 868 WebLocalFrameImpl* webLocalFrame = WebLocalFrameImpl::fromFrame(frame); | 862 WebLocalFrameImpl* webLocalFrame = WebLocalFrameImpl::fromFrame(frame); |
| 863 size_t characterCount = range.length(); |
| 864 size_t offset = range.startOffset(); |
| 869 WebVector<WebRect> result(characterCount); | 865 WebVector<WebRect> result(characterCount); |
| 870 WebRect webrect; | 866 WebRect webrect; |
| 871 for (size_t i = 0; i < characterCount; ++i) { | 867 for (size_t i = 0; i < characterCount; ++i) { |
| 872 if (!webLocalFrame->firstRectForCharacterRange(offset + i, 1, webrect))
{ | 868 if (!webLocalFrame->firstRectForCharacterRange(offset + i, 1, webrect))
{ |
| 873 DLOG(ERROR) << "Could not retrieve character rectangle at " << i; | 869 DLOG(ERROR) << "Could not retrieve character rectangle at " << i; |
| 874 return false; | 870 return false; |
| 875 } | 871 } |
| 876 result[i] = webrect; | 872 result[i] = webrect; |
| 877 } | 873 } |
| 874 |
| 878 bounds.swap(result); | 875 bounds.swap(result); |
| 879 return true; | 876 return true; |
| 880 } | 877 } |
| 881 | 878 |
| 882 void WebFrameWidgetImpl::applyReplacementRange(int start, int length) | 879 void WebFrameWidgetImpl::applyReplacementRange(int start, int length) |
| 883 { | 880 { |
| 884 if (LocalFrame* frame = focusedLocalFrameInWidget()) { | 881 if (LocalFrame* frame = focusedLocalFrameInWidget()) { |
| 885 // TODO(dglazkov): Going from LocalFrame to WebLocalFrameImpl seems | 882 // TODO(dglazkov): Going from LocalFrame to WebLocalFrameImpl seems |
| 886 // silly. What is going on here? | 883 // silly. What is going on here? |
| 887 WebLocalFrameImpl::fromFrame(frame)->selectRange(WebRange(start, length)
); | 884 WebLocalFrameImpl::fromFrame(frame)->selectRange(WebRange(start, length)
); |
| (...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1438 } | 1435 } |
| 1439 | 1436 |
| 1440 LocalFrame* WebFrameWidgetImpl::focusedLocalFrameAvailableForIme() const | 1437 LocalFrame* WebFrameWidgetImpl::focusedLocalFrameAvailableForIme() const |
| 1441 { | 1438 { |
| 1442 if (!m_imeAcceptEvents) | 1439 if (!m_imeAcceptEvents) |
| 1443 return nullptr; | 1440 return nullptr; |
| 1444 return focusedLocalFrameInWidget(); | 1441 return focusedLocalFrameInWidget(); |
| 1445 } | 1442 } |
| 1446 | 1443 |
| 1447 } // namespace blink | 1444 } // namespace blink |
| OLD | NEW |