Index: content/renderer/render_view_impl.cc |
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
index 851e81c5efb6fe0240914adbce4d88cb7a6e9df5..79dce611251507439b8ae2eaf2b7ffdca3160da2 100644 |
--- a/content/renderer/render_view_impl.cc |
+++ b/content/renderer/render_view_impl.cc |
@@ -1423,15 +1423,20 @@ void RenderViewImpl::OnScrollFocusedEditableNodeIntoRect( |
const gfx::Rect& rect) { |
if (has_scrolled_focused_editable_node_into_rect_ && |
rect == rect_for_scrolled_focused_editable_node_) { |
+ FocusChangeComplete(); |
return; |
} |
blink::WebElement element = GetFocusedElement(); |
+ bool will_animate = false; |
if (!element.isNull() && IsEditableNode(element)) { |
rect_for_scrolled_focused_editable_node_ = rect; |
has_scrolled_focused_editable_node_into_rect_ = true; |
- webview()->scrollFocusedNodeIntoRect(rect); |
+ will_animate = webview()->scrollFocusedNodeIntoRect(rect); |
} |
+ |
+ if (!will_animate) |
+ FocusChangeComplete(); |
} |
void RenderViewImpl::OnSetEditCommandsForNextKeyEvent( |
@@ -3601,6 +3606,11 @@ void RenderViewImpl::GetSelectionBounds(gfx::Rect* start, gfx::Rect* end) { |
RenderWidget::GetSelectionBounds(start, end); |
} |
+void RenderViewImpl::FocusChangeComplete() { |
+ RenderWidget::FocusChangeComplete(); |
+ FOR_EACH_OBSERVER(RenderViewObserver, observers_, FocusChangeComplete()); |
+} |
+ |
void RenderViewImpl::GetCompositionCharacterBounds( |
std::vector<gfx::Rect>* bounds) { |
DCHECK(bounds); |
@@ -3687,6 +3697,10 @@ void RenderViewImpl::InstrumentWillComposite() { |
webview()->devToolsAgent()->willComposite(); |
} |
+void RenderViewImpl::DidCompletePageScaleAnimation() { |
+ FocusChangeComplete(); |
+} |
+ |
void RenderViewImpl::SetScreenMetricsEmulationParameters( |
float device_scale_factor, |
const gfx::Point& root_layer_offset, |