OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/render_view_impl.h" | 5 #include "content/renderer/render_view_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 1608 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1619 } | 1619 } |
1620 | 1620 |
1621 void RenderViewImpl::didCancelCompositionOnSelectionChange() { | 1621 void RenderViewImpl::didCancelCompositionOnSelectionChange() { |
1622 Send(new InputHostMsg_ImeCancelComposition(GetRoutingID())); | 1622 Send(new InputHostMsg_ImeCancelComposition(GetRoutingID())); |
1623 } | 1623 } |
1624 | 1624 |
1625 bool RenderViewImpl::handleCurrentKeyboardEvent() { | 1625 bool RenderViewImpl::handleCurrentKeyboardEvent() { |
1626 if (edit_commands_.empty()) | 1626 if (edit_commands_.empty()) |
1627 return false; | 1627 return false; |
1628 | 1628 |
1629 WebFrame* frame = webview()->focusedFrame(); | 1629 WebLocalFrame* frame = webview()->focusedFrame(); |
dcheng
2016/06/13 17:29:45
Ditto: why is |frame| null here? I wonder if this
| |
1630 if (!frame) | 1630 if (!frame) |
1631 return false; | 1631 return false; |
1632 | 1632 |
1633 EditCommands::iterator it = edit_commands_.begin(); | 1633 EditCommands::iterator it = edit_commands_.begin(); |
1634 EditCommands::iterator end = edit_commands_.end(); | 1634 EditCommands::iterator end = edit_commands_.end(); |
1635 | 1635 |
1636 bool did_execute_command = false; | 1636 bool did_execute_command = false; |
1637 for (; it != end; ++it) { | 1637 for (; it != end; ++it) { |
1638 // In gtk and cocoa, it's possible to bind multiple edit commands to one | 1638 // In gtk and cocoa, it's possible to bind multiple edit commands to one |
1639 // key (but it's the exception). Once one edit command is not executed, it | 1639 // key (but it's the exception). Once one edit command is not executed, it |
(...skipping 1065 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2705 PepperPluginInstanceImpl* focused_pepper_plugin = GetFocusedPepperPlugin(); | 2705 PepperPluginInstanceImpl* focused_pepper_plugin = GetFocusedPepperPlugin(); |
2706 if (focused_pepper_plugin) { | 2706 if (focused_pepper_plugin) { |
2707 focused_pepper_plugin->render_frame()->OnImeSetComposition( | 2707 focused_pepper_plugin->render_frame()->OnImeSetComposition( |
2708 text, underlines, selection_start, selection_end); | 2708 text, underlines, selection_start, selection_end); |
2709 return; | 2709 return; |
2710 } | 2710 } |
2711 #endif // ENABLE_PLUGINS | 2711 #endif // ENABLE_PLUGINS |
2712 if (replacement_range.IsValid() && webview()) { | 2712 if (replacement_range.IsValid() && webview()) { |
2713 // Select the text in |replacement_range|, it will then be replaced by | 2713 // Select the text in |replacement_range|, it will then be replaced by |
2714 // text added by the call to RenderWidget::OnImeSetComposition(). | 2714 // text added by the call to RenderWidget::OnImeSetComposition(). |
2715 if (WebLocalFrame* frame = webview()->focusedFrame()->toWebLocalFrame()) { | 2715 if (WebLocalFrame* frame = webview()->focusedFrame()) { |
dcheng
2016/06/13 17:29:45
I'm not sure this can ever be null.
toWebLocalFra
| |
2716 WebRange webrange = WebRange::fromDocumentRange( | 2716 WebRange webrange = WebRange::fromDocumentRange( |
2717 frame, replacement_range.start(), replacement_range.length()); | 2717 frame, replacement_range.start(), replacement_range.length()); |
2718 if (!webrange.isNull()) | 2718 if (!webrange.isNull()) |
2719 frame->selectRange(webrange); | 2719 frame->selectRange(webrange); |
2720 } | 2720 } |
2721 } | 2721 } |
2722 RenderWidget::OnImeSetComposition(text, | 2722 RenderWidget::OnImeSetComposition(text, |
2723 underlines, | 2723 underlines, |
2724 replacement_range, | 2724 replacement_range, |
2725 selection_start, | 2725 selection_start, |
2726 selection_end); | 2726 selection_end); |
2727 } | 2727 } |
2728 | 2728 |
2729 void RenderViewImpl::OnImeConfirmComposition( | 2729 void RenderViewImpl::OnImeConfirmComposition( |
2730 const base::string16& text, | 2730 const base::string16& text, |
2731 const gfx::Range& replacement_range, | 2731 const gfx::Range& replacement_range, |
2732 bool keep_selection) { | 2732 bool keep_selection) { |
2733 #if defined(ENABLE_PLUGINS) | 2733 #if defined(ENABLE_PLUGINS) |
2734 PepperPluginInstanceImpl* focused_pepper_plugin = GetFocusedPepperPlugin(); | 2734 PepperPluginInstanceImpl* focused_pepper_plugin = GetFocusedPepperPlugin(); |
2735 if (focused_pepper_plugin) { | 2735 if (focused_pepper_plugin) { |
2736 focused_pepper_plugin->render_frame()->OnImeConfirmComposition( | 2736 focused_pepper_plugin->render_frame()->OnImeConfirmComposition( |
2737 text, replacement_range, keep_selection); | 2737 text, replacement_range, keep_selection); |
2738 return; | 2738 return; |
2739 } | 2739 } |
2740 #endif // ENABLE_PLUGINS | 2740 #endif // ENABLE_PLUGINS |
2741 if (replacement_range.IsValid() && webview()) { | 2741 if (replacement_range.IsValid() && webview()) { |
2742 // Select the text in |replacement_range|, it will then be replaced by | 2742 // Select the text in |replacement_range|, it will then be replaced by |
2743 // text added by the call to RenderWidget::OnImeConfirmComposition(). | 2743 // text added by the call to RenderWidget::OnImeConfirmComposition(). |
2744 if (WebLocalFrame* frame = webview()->focusedFrame()->toWebLocalFrame()) { | 2744 if (WebLocalFrame* frame = webview()->focusedFrame()) { |
dcheng
2016/06/13 17:29:45
Ditto.
| |
2745 WebRange webrange = WebRange::fromDocumentRange( | 2745 WebRange webrange = WebRange::fromDocumentRange( |
2746 frame, replacement_range.start(), replacement_range.length()); | 2746 frame, replacement_range.start(), replacement_range.length()); |
2747 if (!webrange.isNull()) | 2747 if (!webrange.isNull()) |
2748 frame->selectRange(webrange); | 2748 frame->selectRange(webrange); |
2749 } | 2749 } |
2750 } | 2750 } |
2751 RenderWidget::OnImeConfirmComposition(text, | 2751 RenderWidget::OnImeConfirmComposition(text, |
2752 replacement_range, | 2752 replacement_range, |
2753 keep_selection); | 2753 keep_selection); |
2754 } | 2754 } |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2807 | 2807 |
2808 if (!webview()) | 2808 if (!webview()) |
2809 return; | 2809 return; |
2810 size_t start_offset = 0; | 2810 size_t start_offset = 0; |
2811 size_t character_count = 0; | 2811 size_t character_count = 0; |
2812 if (!webview()->compositionRange(&start_offset, &character_count)) | 2812 if (!webview()->compositionRange(&start_offset, &character_count)) |
2813 return; | 2813 return; |
2814 if (character_count == 0) | 2814 if (character_count == 0) |
2815 return; | 2815 return; |
2816 | 2816 |
2817 blink::WebFrame* frame = webview()->focusedFrame(); | 2817 blink::WebLocalFrame* frame = webview()->focusedFrame(); |
2818 if (!frame) | 2818 if (!frame) |
dcheng
2016/06/13 17:29:45
Similar question: can this actually return null? I
| |
2819 return; | 2819 return; |
2820 | 2820 |
2821 bounds_in_window->reserve(character_count); | 2821 bounds_in_window->reserve(character_count); |
2822 blink::WebRect webrect; | 2822 blink::WebRect webrect; |
2823 for (size_t i = 0; i < character_count; ++i) { | 2823 for (size_t i = 0; i < character_count; ++i) { |
2824 if (!frame->firstRectForCharacterRange(start_offset + i, 1, webrect)) { | 2824 if (!frame->firstRectForCharacterRange(start_offset + i, 1, webrect)) { |
2825 DLOG(ERROR) << "Could not retrieve character rectangle at " << i; | 2825 DLOG(ERROR) << "Could not retrieve character rectangle at " << i; |
2826 bounds_in_window->clear(); | 2826 bounds_in_window->clear(); |
2827 return; | 2827 return; |
2828 } | 2828 } |
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3229 return render_frame->focused_pepper_plugin(); | 3229 return render_frame->focused_pepper_plugin(); |
3230 } | 3230 } |
3231 frame = frame->traverseNext(false); | 3231 frame = frame->traverseNext(false); |
3232 } | 3232 } |
3233 | 3233 |
3234 return nullptr; | 3234 return nullptr; |
3235 } | 3235 } |
3236 #endif | 3236 #endif |
3237 | 3237 |
3238 } // namespace content | 3238 } // namespace content |
OLD | NEW |