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

Unified Diff: components/test_runner/web_widget_test_client.cc

Issue 1935593004: Extract WebWidgetTestClient out of WebTestProxyBase and WebViewTestClient. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@test-runner-for-specific-view-separate
Patch Set: Created 4 years, 8 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: components/test_runner/web_widget_test_client.cc
diff --git a/components/test_runner/web_widget_test_client.cc b/components/test_runner/web_widget_test_client.cc
new file mode 100644
index 0000000000000000000000000000000000000000..76291d181a70d37c924185be01ad97f4c501d19f
--- /dev/null
+++ b/components/test_runner/web_widget_test_client.cc
@@ -0,0 +1,112 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/test_runner/web_widget_test_client.h"
+
+#include "base/bind.h"
+#include "base/bind_helpers.h"
+#include "base/logging.h"
+#include "base/time/time.h"
+#include "components/test_runner/mock_screen_orientation_client.h"
+#include "components/test_runner/test_interfaces.h"
+#include "components/test_runner/test_runner.h"
+#include "components/test_runner/test_runner_for_specific_view.h"
+#include "components/test_runner/web_task.h"
+#include "components/test_runner/web_test_delegate.h"
+#include "components/test_runner/web_test_proxy.h"
+#include "third_party/WebKit/public/platform/WebScreenInfo.h"
+#include "third_party/WebKit/public/web/WebPagePopup.h"
+#include "third_party/WebKit/public/web/WebWidget.h"
+
+namespace test_runner {
+
+WebWidgetTestClient::WebWidgetTestClient(TestRunner* test_runner,
+ WebTestProxyBase* web_test_proxy_base)
+ : test_runner_(test_runner),
+ web_test_proxy_base_(web_test_proxy_base),
+ animation_scheduled_(false),
+ weak_factory_(this) {
+ DCHECK(test_runner);
+ DCHECK(web_test_proxy_base);
+}
+
+WebWidgetTestClient::~WebWidgetTestClient() {}
+
+void WebWidgetTestClient::scheduleAnimation() {
+ if (!test_runner_->TestIsRunning())
+ return;
+
+ if (!animation_scheduled_) {
+ animation_scheduled_ = true;
+ test_runner_->OnAnimationScheduled(web_test_proxy_base_->web_widget());
+
+ web_test_proxy_base_->delegate()->PostDelayedTask(
+ new WebCallbackTask(base::Bind(&WebWidgetTestClient::AnimateNow,
+ weak_factory_.GetWeakPtr())),
+ 1);
+ }
+}
+
+void WebWidgetTestClient::AnimateNow() {
+ if (animation_scheduled_) {
+ blink::WebWidget* web_widget = web_test_proxy_base_->web_widget();
+ animation_scheduled_ = false;
+ test_runner_->OnAnimationBegun(web_widget);
+
+ base::TimeDelta animate_time = base::TimeTicks::Now() - base::TimeTicks();
+ web_widget->beginFrame(animate_time.InSecondsF());
+ web_widget->updateAllLifecyclePhases();
+ if (blink::WebPagePopup* popup = web_widget->pagePopup()) {
+ popup->beginFrame(animate_time.InSecondsF());
+ popup->updateAllLifecyclePhases();
+ }
+ }
+}
+
+blink::WebScreenInfo WebWidgetTestClient::screenInfo() {
+ blink::WebScreenInfo screen_info;
+ MockScreenOrientationClient* mock_client =
+ web_test_proxy_base_->test_interfaces()
+ ->GetTestRunner()
+ ->getMockScreenOrientationClient();
+ if (mock_client->IsDisabled()) {
+ // Indicate to WebTestProxy that there is no test/mock info.
+ screen_info.orientationType = blink::WebScreenOrientationUndefined;
+ } else {
+ // Override screen orientation information with mock data.
+ screen_info.orientationType = mock_client->CurrentOrientationType();
+ screen_info.orientationAngle = mock_client->CurrentOrientationAngle();
+ }
+ return screen_info;
+}
+
+bool WebWidgetTestClient::requestPointerLock() {
+ return web_test_proxy_base_->view_test_runner()->RequestPointerLock();
+}
+
+void WebWidgetTestClient::requestPointerUnlock() {
+ web_test_proxy_base_->view_test_runner()->RequestPointerUnlock();
+}
+
+bool WebWidgetTestClient::isPointerLocked() {
+ return web_test_proxy_base_->view_test_runner()->isPointerLocked();
+}
+
+void WebWidgetTestClient::didFocus() {
+ test_runner_->SetFocus(web_test_proxy_base_->web_view(), true);
+}
+
+void WebWidgetTestClient::setToolTipText(const blink::WebString& text,
+ blink::WebTextDirection direction) {
+ test_runner_->setToolTipText(text);
+}
+
+void WebWidgetTestClient::resetInputMethod() {
+ // If a composition text exists, then we need to let the browser process
+ // to cancel the input method's ongoing composition session.
+ if (web_test_proxy_base_)
+ web_test_proxy_base_->web_widget()->confirmComposition();
+}
+
+} // namespace test_runner

Powered by Google App Engine
This is Rietveld 408576698