Index: third_party/WebKit/Source/web/ValidationMessageClientImpl.cpp |
diff --git a/third_party/WebKit/Source/web/ValidationMessageClientImpl.cpp b/third_party/WebKit/Source/web/ValidationMessageClientImpl.cpp |
index 0608b48da7ec413276a3cd293be6a155b1403429..784a1a268f95bb54b75f416598738cbb8f738d46 100644 |
--- a/third_party/WebKit/Source/web/ValidationMessageClientImpl.cpp |
+++ b/third_party/WebKit/Source/web/ValidationMessageClientImpl.cpp |
@@ -84,6 +84,7 @@ void ValidationMessageClientImpl::ShowValidationMessage( |
web_view_.Client()->ShowValidationMessage( |
anchor_in_viewport, message_, ToWebTextDirection(message_dir), |
sub_message, ToWebTextDirection(sub_message_dir)); |
+ web_view_.ChromeClient().RegisterPopupOpeningObserver(this); |
finish_time_ = |
MonotonicallyIncreasingTime() + |
@@ -105,6 +106,7 @@ void ValidationMessageClientImpl::HideValidationMessage(const Element& anchor) { |
message_ = String(); |
finish_time_ = 0; |
web_view_.Client()->HideValidationMessage(); |
+ web_view_.ChromeClient().UnregisterPopupOpeningObserver(this); |
} |
bool ValidationMessageClientImpl::IsValidationMessageVisible( |
@@ -152,6 +154,11 @@ void ValidationMessageClientImpl::WillBeDestroyed() { |
HideValidationMessage(*current_anchor_); |
} |
+void ValidationMessageClientImpl::WillOpenPopup() { |
+ if (current_anchor_) |
+ HideValidationMessage(*current_anchor_); |
+} |
+ |
DEFINE_TRACE(ValidationMessageClientImpl) { |
visitor->Trace(current_anchor_); |
ValidationMessageClient::Trace(visitor); |