Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2518)

Unified Diff: content/renderer/render_view_impl.cc

Issue 715733002: [Android] Show autofill popup after animation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase on top of https://codereview.chromium.org/826713002/ Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/render_view_impl.cc
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index d37337b367e7961df83f23a614b9330fd268fec1..1141aaf0c7e13b8e1da6b0c07e39c35ccca8e61d 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -1317,6 +1317,7 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(ViewMsg_ThemeChanged, OnThemeChanged)
IPC_MESSAGE_HANDLER(ViewMsg_MoveOrResizeStarted, OnMoveOrResizeStarted)
IPC_MESSAGE_HANDLER(ViewMsg_ClearFocusedElement, OnClearFocusedElement)
+ IPC_MESSAGE_HANDLER(ViewMsg_FocusChangeComplete, FocusChangeComplete)
IPC_MESSAGE_HANDLER(ViewMsg_SetBackgroundOpaque, OnSetBackgroundOpaque)
IPC_MESSAGE_HANDLER(ViewMsg_EnablePreferredSizeChangedMode,
OnEnablePreferredSizeChangedMode)
@@ -1417,15 +1418,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(
@@ -1920,6 +1926,8 @@ void RenderViewImpl::focusedNodeChanged(const WebNode& node) {
// TODO(dmazzoni): this should be part of RenderFrameObserver.
GetMainRenderFrame()->FocusedNodeChanged(node);
+
+ focused_element_bounds_ = node_bounds;
}
void RenderViewImpl::didUpdateLayout() {
@@ -3198,9 +3206,16 @@ void RenderViewImpl::OnResize(const ViewMsg_Resize_Params& params) {
if (old_visible_viewport_size != visible_viewport_size_)
has_scrolled_focused_editable_node_into_rect_ = false;
- FOR_EACH_OBSERVER(RenderViewObserver,
- observers_,
- Resized());
+ blink::WebElement focused_element = GetFocusedElement();
+ blink::WebRect bounds = focused_element.isNull()
+ ? blink::WebRect()
+ : focused_element.boundsInViewportSpace();
+ if (bounds != focused_element_bounds_) {
+ FOR_EACH_OBSERVER(RenderViewObserver, observers_,
+ FocusedElementMovedOnResize());
+ }
+
+ focused_element_bounds_ = bounds;
}
void RenderViewImpl::DidInitiatePaint() {
@@ -3626,6 +3641,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);
@@ -3712,6 +3732,10 @@ void RenderViewImpl::InstrumentWillComposite() {
webview()->devToolsAgent()->willComposite();
}
+void RenderViewImpl::DidCompletePageScaleAnimation() {
+ FocusChangeComplete();
+}
+
void RenderViewImpl::SetScreenMetricsEmulationParameters(
float device_scale_factor,
const gfx::Point& root_layer_offset,

Powered by Google App Engine
This is Rietveld 408576698