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

Unified Diff: third_party/WebKit/Source/web/ValidationMessageClientImpl.cpp

Issue 2886683002: Move ValidationMessageClientImpl to core/page/. (Closed)
Patch Set: Created 3 years, 7 months 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: 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
deleted file mode 100644
index 882665e0c43537f07136788ccf66274647ccb951..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/web/ValidationMessageClientImpl.cpp
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include "web/ValidationMessageClientImpl.h"
-
-#include "core/dom/Element.h"
-#include "core/dom/TaskRunnerHelper.h"
-#include "core/exported/WebViewBase.h"
-#include "core/frame/FrameView.h"
-#include "core/page/ChromeClient.h"
-#include "platform/PlatformChromeClient.h"
-#include "platform/wtf/CurrentTime.h"
-#include "public/platform/WebRect.h"
-#include "public/platform/WebString.h"
-#include "public/web/WebTextDirection.h"
-#include "public/web/WebViewClient.h"
-
-namespace blink {
-
-ValidationMessageClientImpl::ValidationMessageClientImpl(WebViewBase& web_view)
- : web_view_(web_view),
- current_anchor_(nullptr),
- last_page_scale_factor_(1),
- finish_time_(0) {}
-
-ValidationMessageClientImpl* ValidationMessageClientImpl::Create(
- WebViewBase& web_view) {
- return new ValidationMessageClientImpl(web_view);
-}
-
-ValidationMessageClientImpl::~ValidationMessageClientImpl() {}
-
-FrameView* ValidationMessageClientImpl::CurrentView() {
- return current_anchor_->GetDocument().View();
-}
-
-void ValidationMessageClientImpl::ShowValidationMessage(
- const Element& anchor,
- const String& message,
- TextDirection message_dir,
- const String& sub_message,
- TextDirection sub_message_dir) {
- if (message.IsEmpty()) {
- HideValidationMessage(anchor);
- return;
- }
- if (!anchor.GetLayoutBox())
- return;
- if (current_anchor_)
- HideValidationMessage(*current_anchor_);
- current_anchor_ = &anchor;
- IntRect anchor_in_viewport =
- CurrentView()->ContentsToViewport(anchor.PixelSnappedBoundingBox());
- last_anchor_rect_in_screen_ =
- CurrentView()->GetChromeClient()->ViewportToScreen(anchor_in_viewport,
- CurrentView());
- last_page_scale_factor_ = web_view_.PageScaleFactor();
- message_ = message;
- const double kMinimumSecondToShowValidationMessage = 5.0;
- const double kSecondPerCharacter = 0.05;
- const double kStatusCheckInterval = 0.1;
-
- 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() +
- std::max(kMinimumSecondToShowValidationMessage,
- (message.length() + sub_message.length()) * kSecondPerCharacter);
- // FIXME: We should invoke checkAnchorStatus actively when layout, scroll,
- // or page scale change happen.
- timer_ = WTF::MakeUnique<TaskRunnerTimer<ValidationMessageClientImpl>>(
- TaskRunnerHelper::Get(TaskType::kUnspecedTimer, &anchor.GetDocument()),
- this, &ValidationMessageClientImpl::CheckAnchorStatus);
- timer_->StartRepeating(kStatusCheckInterval, BLINK_FROM_HERE);
-}
-
-void ValidationMessageClientImpl::HideValidationMessage(const Element& anchor) {
- if (!current_anchor_ || !IsValidationMessageVisible(anchor))
- return;
- timer_ = nullptr;
- current_anchor_ = nullptr;
- message_ = String();
- finish_time_ = 0;
- web_view_.Client()->HideValidationMessage();
- web_view_.ChromeClient().UnregisterPopupOpeningObserver(this);
-}
-
-bool ValidationMessageClientImpl::IsValidationMessageVisible(
- const Element& anchor) {
- return current_anchor_ == &anchor;
-}
-
-void ValidationMessageClientImpl::WillUnloadDocument(const Document& document) {
- if (current_anchor_ && current_anchor_->GetDocument() == document)
- HideValidationMessage(*current_anchor_);
-}
-
-void ValidationMessageClientImpl::DocumentDetached(const Document& document) {
- DCHECK(!current_anchor_ || current_anchor_->GetDocument() != document)
- << "willUnloadDocument() should be called beforehand.";
-}
-
-void ValidationMessageClientImpl::CheckAnchorStatus(TimerBase*) {
- DCHECK(current_anchor_);
- if (MonotonicallyIncreasingTime() >= finish_time_ || !CurrentView()) {
- HideValidationMessage(*current_anchor_);
- return;
- }
-
- IntRect new_anchor_rect_in_viewport =
- current_anchor_->VisibleBoundsInVisualViewport();
- if (new_anchor_rect_in_viewport.IsEmpty()) {
- HideValidationMessage(*current_anchor_);
- return;
- }
-
- IntRect new_anchor_rect_in_viewport_in_screen =
- CurrentView()->GetChromeClient()->ViewportToScreen(
- new_anchor_rect_in_viewport, CurrentView());
- if (new_anchor_rect_in_viewport_in_screen == last_anchor_rect_in_screen_ &&
- web_view_.PageScaleFactor() == last_page_scale_factor_)
- return;
- last_anchor_rect_in_screen_ = new_anchor_rect_in_viewport_in_screen;
- last_page_scale_factor_ = web_view_.PageScaleFactor();
- web_view_.Client()->MoveValidationMessage(new_anchor_rect_in_viewport);
-}
-
-void ValidationMessageClientImpl::WillBeDestroyed() {
- if (current_anchor_)
- HideValidationMessage(*current_anchor_);
-}
-
-void ValidationMessageClientImpl::WillOpenPopup() {
- if (current_anchor_)
- HideValidationMessage(*current_anchor_);
-}
-
-DEFINE_TRACE(ValidationMessageClientImpl) {
- visitor->Trace(current_anchor_);
- ValidationMessageClient::Trace(visitor);
-}
-
-} // namespace blink
« no previous file with comments | « third_party/WebKit/Source/web/ValidationMessageClientImpl.h ('k') | third_party/WebKit/Source/web/WebViewImpl.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698