Chromium Code Reviews| 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 2369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2380 LocalFrame* focused = focusedLocalFrameAvailableForIme(); | 2380 LocalFrame* focused = focusedLocalFrameAvailableForIme(); |
| 2381 if (!focused) | 2381 if (!focused) |
| 2382 return false; | 2382 return false; |
| 2383 | 2383 |
| 2384 if (WebPlugin* plugin = focusedPluginIfInputMethodSupported(focused)) | 2384 if (WebPlugin* plugin = focusedPluginIfInputMethodSupported(focused)) |
| 2385 return plugin->confirmComposition(text, selectionBehavior); | 2385 return plugin->confirmComposition(text, selectionBehavior); |
| 2386 | 2386 |
| 2387 return focused->inputMethodController().confirmCompositionOrInsertText(text, selectionBehavior == KeepSelection ? InputMethodController::KeepSelection : Inp utMethodController::DoNotKeepSelection); | 2387 return focused->inputMethodController().confirmCompositionOrInsertText(text, selectionBehavior == KeepSelection ? InputMethodController::KeepSelection : Inp utMethodController::DoNotKeepSelection); |
| 2388 } | 2388 } |
| 2389 | 2389 |
| 2390 bool WebViewImpl::compositionRange(size_t* location, size_t* length) | 2390 WebRange WebViewImpl::compositionRange() |
| 2391 { | 2391 { |
| 2392 LocalFrame* focused = focusedLocalFrameAvailableForIme(); | 2392 LocalFrame* focused = focusedLocalFrameAvailableForIme(); |
| 2393 if (!focused) | 2393 if (!focused) |
| 2394 return false; | 2394 return WebRange(); |
| 2395 | 2395 |
| 2396 const EphemeralRange range = focused->inputMethodController().compositionEph emeralRange(); | 2396 const EphemeralRange range = focused->inputMethodController().compositionEph emeralRange(); |
| 2397 if (range.isNull()) | 2397 if (range.isNull()) |
| 2398 return false; | 2398 return WebRange(); |
| 2399 | 2399 |
| 2400 Element* editable = focused->selection().rootEditableElementOrDocumentElemen t(); | 2400 Element* editable = focused->selection().rootEditableElementOrDocumentElemen t(); |
| 2401 DCHECK(editable); | 2401 DCHECK(editable); |
| 2402 PlainTextRange plainTextRange(PlainTextRange::create(*editable, range)); | 2402 return PlainTextRange::create(*editable, range); |
| 2403 if (plainTextRange.isNull()) | |
| 2404 return false; | |
| 2405 *location = plainTextRange.start(); | |
| 2406 *length = plainTextRange.length(); | |
| 2407 return true; | |
| 2408 } | 2403 } |
| 2409 | 2404 |
| 2410 WebTextInputInfo WebViewImpl::textInputInfo() | 2405 WebTextInputInfo WebViewImpl::textInputInfo() |
| 2411 { | 2406 { |
| 2412 WebTextInputInfo info; | 2407 WebTextInputInfo info; |
| 2413 | 2408 |
| 2414 LocalFrame* focused = focusedLocalFrameInWidget(); | 2409 LocalFrame* focused = focusedLocalFrameInWidget(); |
| 2415 if (!focused) | 2410 if (!focused) |
| 2416 return info; | 2411 return info; |
| 2417 | 2412 |
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2805 } | 2800 } |
| 2806 | 2801 |
| 2807 void WebViewImpl::didChangeWindowResizerRect() | 2802 void WebViewImpl::didChangeWindowResizerRect() |
| 2808 { | 2803 { |
| 2809 if (mainFrameImpl()->frameView()) | 2804 if (mainFrameImpl()->frameView()) |
| 2810 mainFrameImpl()->frameView()->windowResizerRectChanged(); | 2805 mainFrameImpl()->frameView()->windowResizerRectChanged(); |
| 2811 } | 2806 } |
| 2812 | 2807 |
| 2813 bool WebViewImpl::getCompositionCharacterBounds(WebVector<WebRect>& bounds) | 2808 bool WebViewImpl::getCompositionCharacterBounds(WebVector<WebRect>& bounds) |
| 2814 { | 2809 { |
| 2815 size_t offset = 0; | 2810 WebRange range = compositionRange(); |
| 2816 size_t characterCount = 0; | 2811 if (range.isNull()) |
| 2817 if (!compositionRange(&offset, &characterCount)) | |
| 2818 return false; | 2812 return false; |
| 2819 | 2813 |
| 2820 if (characterCount == 0) | 2814 if (range.length() == 0) |
|
esprehn
2016/09/02 21:24:34
isEmpty() would be idiomatic.
| |
| 2821 return false; | 2815 return false; |
| 2822 | 2816 |
| 2823 WebLocalFrame* frame = focusedFrame(); | 2817 WebLocalFrame* frame = focusedFrame(); |
| 2824 | 2818 |
| 2825 // Only consider frames whose local root is the main frame. For other | 2819 // Only consider frames whose local root is the main frame. For other |
| 2826 // local frames which have different local roots, the corresponding | 2820 // local frames which have different local roots, the corresponding |
| 2827 // WebFrameWidget will handle this task. | 2821 // WebFrameWidget will handle this task. |
| 2828 if (frame->localRoot() != mainFrameImpl()) | 2822 if (frame->localRoot() != mainFrameImpl()) |
| 2829 return false; | 2823 return false; |
| 2830 | 2824 |
| 2825 size_t characterCount = range.length(); | |
| 2826 size_t offset = range.startOffset(); | |
| 2831 WebVector<WebRect> result(characterCount); | 2827 WebVector<WebRect> result(characterCount); |
| 2832 WebRect webrect; | 2828 WebRect webrect; |
| 2833 for (size_t i = 0; i < characterCount; ++i) { | 2829 for (size_t i = 0; i < characterCount; ++i) { |
| 2834 if (!frame->firstRectForCharacterRange(offset + i, 1, webrect)) { | 2830 if (!frame->firstRectForCharacterRange(offset + i, 1, webrect)) { |
| 2835 DLOG(ERROR) << "Could not retrieve character rectangle at " << i; | 2831 DLOG(ERROR) << "Could not retrieve character rectangle at " << i; |
| 2836 return false; | 2832 return false; |
| 2837 } | 2833 } |
| 2838 result[i] = webrect; | 2834 result[i] = webrect; |
| 2839 } | 2835 } |
| 2840 bounds.swap(result); | 2836 bounds.swap(result); |
| (...skipping 1757 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4598 return nullptr; | 4594 return nullptr; |
| 4599 return focusedFrame; | 4595 return focusedFrame; |
| 4600 } | 4596 } |
| 4601 | 4597 |
| 4602 LocalFrame* WebViewImpl::focusedLocalFrameAvailableForIme() const | 4598 LocalFrame* WebViewImpl::focusedLocalFrameAvailableForIme() const |
| 4603 { | 4599 { |
| 4604 return m_imeAcceptEvents ? focusedLocalFrameInWidget() : nullptr; | 4600 return m_imeAcceptEvents ? focusedLocalFrameInWidget() : nullptr; |
| 4605 } | 4601 } |
| 4606 | 4602 |
| 4607 } // namespace blink | 4603 } // namespace blink |
| OLD | NEW |