Commit 95d45bae authored by Joel Hockey's avatar Joel Hockey Committed by Commit Bot

Revert "cros: Introduce common concept for conditions that can be awaited it tests."

This reverts commit ee05382c.

Reason for revert:
browser_tests fail to compile for chromeos
../../chrome/browser/chromeos/login/sync_consent_interactive_ui_test.cc:82:10: error: allocating an object of abstract class type 'test::TestConditionWaiter'
  return test::TestConditionWaiter(base::BindRepeating(
         ^
../../chrome/browser/chromeos/login/test/test_condition_waiter.h:17:16: note: unimplemented pure virtual method 'Wait' in 'TestConditionWaiter'
  virtual void Wait() = 0;
               ^
1 error generated.


Original change's description:
> cros: Introduce common concept for conditions that can be awaited it tests.
> 
> Bug: 912704
> Change-Id: Ie1804ce8a6f05721e28a6d2c703530d8e0c53841
> Reviewed-on: https://chromium-review.googlesource.com/c/1481511
> Commit-Queue: Denis Kuznetsov <antrim@chromium.org>
> Reviewed-by: Alexander Alekseev <alemate@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#635114}

TBR=antrim@chromium.org,alemate@chromium.org,rsorokin@chromium.org,jdufault@chromium.org

Change-Id: Id0e69390d0d106f00d1a4527479b4a1752402324
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 912704
Reviewed-on: https://chromium-review.googlesource.com/c/1487433Reviewed-by: default avatarJoel Hockey <joelhockey@chromium.org>
Commit-Queue: Joel Hockey <joelhockey@chromium.org>
Cr-Commit-Position: refs/heads/master@{#635229}
parent a9dca829
...@@ -2107,9 +2107,8 @@ static_library("test_support") { ...@@ -2107,9 +2107,8 @@ static_library("test_support") {
"login/screens/mock_update_screen.h", "login/screens/mock_update_screen.h",
"login/screens/mock_welcome_screen.cc", "login/screens/mock_welcome_screen.cc",
"login/screens/mock_welcome_screen.h", "login/screens/mock_welcome_screen.h",
"login/test/test_condition_waiter.cc",
"login/test/test_condition_waiter.h", "login/test/test_condition_waiter.h",
"login/test/test_predicate_waiter.cc",
"login/test/test_predicate_waiter.h",
"scoped_set_running_on_chromeos_for_testing.cc", "scoped_set_running_on_chromeos_for_testing.cc",
"scoped_set_running_on_chromeos_for_testing.h", "scoped_set_running_on_chromeos_for_testing.h",
"settings/scoped_testing_cros_settings.cc", "settings/scoped_testing_cros_settings.cc",
......
...@@ -127,7 +127,13 @@ std::string ScreenToContentQuery(OobeScreen screen) { ...@@ -127,7 +127,13 @@ std::string ScreenToContentQuery(OobeScreen screen) {
// Waits for js condition to be fulfilled. // Waits for js condition to be fulfilled.
void WaitForJsCondition(const std::string& js_condition) { void WaitForJsCondition(const std::string& js_condition) {
test::OobeJS().CreateWaiter(js_condition)->Wait(); return test::TestConditionWaiter(base::BindRepeating(
[](const std::string& js_condition) {
return test::OobeJS().GetBool(
js_condition);
},
js_condition))
.Wait();
} }
} // namespace } // namespace
......
...@@ -316,6 +316,17 @@ class ScopedCanConfigureNetwork { ...@@ -316,6 +316,17 @@ class ScopedCanConfigureNetwork {
DISALLOW_COPY_AND_ASSIGN(ScopedCanConfigureNetwork); DISALLOW_COPY_AND_ASSIGN(ScopedCanConfigureNetwork);
}; };
// Waits for js condition to be fulfilled.
void WaitForJsCondition(const std::string& js_condition) {
return test::TestConditionWaiter(base::BindRepeating(
[](const std::string& js_condition) {
return test::OobeJS().GetBool(
js_condition);
},
js_condition))
.Wait();
}
class KioskFakeDiskMountManager : public file_manager::FakeDiskMountManager { class KioskFakeDiskMountManager : public file_manager::FakeDiskMountManager {
public: public:
KioskFakeDiskMountManager() {} KioskFakeDiskMountManager() {}
...@@ -982,10 +993,8 @@ IN_PROC_BROWSER_TEST_F(KioskTest, LaunchInDiagnosticMode) { ...@@ -982,10 +993,8 @@ IN_PROC_BROWSER_TEST_F(KioskTest, LaunchInDiagnosticMode) {
LaunchApp(kTestKioskApp, true); LaunchApp(kTestKioskApp, true);
bool new_kiosk_ui = KioskAppMenuHandler::EnableNewKioskUI(); bool new_kiosk_ui = KioskAppMenuHandler::EnableNewKioskUI();
test::OobeJS() WaitForJsCondition(new_kiosk_ui ? kCheckDiagnosticModeNewAPI
.CreateWaiter(new_kiosk_ui ? kCheckDiagnosticModeNewAPI : kCheckDiagnosticModeOldAPI);
: kCheckDiagnosticModeOldAPI)
->Wait();
std::string diagnosticMode(new_kiosk_ui ? std::string diagnosticMode(new_kiosk_ui ?
kCheckDiagnosticModeNewAPI : kCheckDiagnosticModeOldAPI); kCheckDiagnosticModeNewAPI : kCheckDiagnosticModeOldAPI);
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#include "chrome/browser/chromeos/login/screens/update_screen.h" #include "chrome/browser/chromeos/login/screens/update_screen.h"
#include "chrome/browser/chromeos/login/test/js_checker.h" #include "chrome/browser/chromeos/login/test/js_checker.h"
#include "chrome/browser/chromeos/login/test/oobe_base_test.h" #include "chrome/browser/chromeos/login/test/oobe_base_test.h"
#include "chrome/browser/chromeos/login/test/test_predicate_waiter.h" #include "chrome/browser/chromeos/login/test/test_condition_waiter.h"
#include "chrome/browser/chromeos/login/ui/login_display_host.h" #include "chrome/browser/chromeos/login/ui/login_display_host.h"
#include "chrome/browser/chromeos/login/wizard_controller.h" #include "chrome/browser/chromeos/login/wizard_controller.h"
#include "chrome/browser/lifetime/application_lifetime.h" #include "chrome/browser/lifetime/application_lifetime.h"
...@@ -28,6 +28,35 @@ ...@@ -28,6 +28,35 @@
namespace chromeos { namespace chromeos {
namespace { namespace {
enum class JsWaitOptions {
kNone,
kSatisfyIfOobeDestroyed,
};
// If |options| is kSatisfyIfOobeDestroyed, we are waiting for the end
// condition, so it is automatically fullfilled if LoginDisplayHost is already
// destroyed.
void WaitForJsCondition(const std::string& js_condition,
JsWaitOptions options) {
if (options == JsWaitOptions::kSatisfyIfOobeDestroyed) {
return test::TestConditionWaiter(
base::BindRepeating(
[](const std::string& js_condition) {
return !LoginDisplayHost::default_host() ||
test::OobeJS().GetBool(js_condition);
},
js_condition))
.Wait();
}
return test::TestConditionWaiter(base::BindRepeating(
[](const std::string& js_condition) {
return test::OobeJS().GetBool(
js_condition);
},
js_condition))
.Wait();
}
class ScopedQuickUnlockPrivateGetAuthTokenFunctionObserver { class ScopedQuickUnlockPrivateGetAuthTokenFunctionObserver {
public: public:
explicit ScopedQuickUnlockPrivateGetAuthTokenFunctionObserver( explicit ScopedQuickUnlockPrivateGetAuthTokenFunctionObserver(
...@@ -116,7 +145,7 @@ class OobeInteractiveUITest ...@@ -116,7 +145,7 @@ class OobeInteractiveUITest
LOG(INFO) LOG(INFO)
<< "OobeInteractiveUITest: Waiting for LoginDisplayHost to shut down."; << "OobeInteractiveUITest: Waiting for LoginDisplayHost to shut down.";
test::TestPredicateWaiter(base::BindRepeating([]() { test::TestConditionWaiter(base::BindRepeating([]() {
return !LoginDisplayHost::default_host(); return !LoginDisplayHost::default_host();
})).Wait(); })).Wait();
LOG(INFO) << "OobeInteractiveUITest: LoginDisplayHost is down."; LOG(INFO) << "OobeInteractiveUITest: LoginDisplayHost is down.";
...@@ -128,9 +157,8 @@ class OobeInteractiveUITest ...@@ -128,9 +157,8 @@ class OobeInteractiveUITest
content::NotificationService::AllSources()); content::NotificationService::AllSources());
observer.Wait(); observer.Wait();
test::OobeJS() WaitForJsCondition("Oobe.getInstance().currentScreen.id == 'connect'",
.CreateWaiter("Oobe.getInstance().currentScreen.id == 'connect'") JsWaitOptions::kNone);
->Wait();
} }
void RunWelcomeScreenChecks() { void RunWelcomeScreenChecks() {
...@@ -159,10 +187,9 @@ class OobeInteractiveUITest ...@@ -159,10 +187,9 @@ class OobeInteractiveUITest
} }
void WaitForNetworkSelectionScreen() { void WaitForNetworkSelectionScreen() {
test::OobeJS() WaitForJsCondition(
.CreateWaiter( "Oobe.getInstance().currentScreen.id == 'network-selection'",
"Oobe.getInstance().currentScreen.id == 'network-selection'") JsWaitOptions::kNone);
->Wait();
LOG(INFO) LOG(INFO)
<< "OobeInteractiveUITest: Switched to 'network-selection' screen."; << "OobeInteractiveUITest: Switched to 'network-selection' screen.";
} }
...@@ -180,17 +207,15 @@ class OobeInteractiveUITest ...@@ -180,17 +207,15 @@ class OobeInteractiveUITest
} }
void WaitForEulaScreen() { void WaitForEulaScreen() {
test::OobeJS() WaitForJsCondition("Oobe.getInstance().currentScreen.id == 'eula'",
.CreateWaiter("Oobe.getInstance().currentScreen.id == 'eula'") JsWaitOptions::kNone);
->Wait();
LOG(INFO) << "OobeInteractiveUITest: Switched to 'eula' screen."; LOG(INFO) << "OobeInteractiveUITest: Switched to 'eula' screen.";
} }
void RunEulaScreenChecks() { void RunEulaScreenChecks() {
// Wait for actual EULA to appear. // Wait for actual EULA to appear.
test::OobeJS() WaitForJsCondition("!$('oobe-eula-md').$.eulaDialog.hidden",
.CreateWaiter("!$('oobe-eula-md').$.eulaDialog.hidden") JsWaitOptions::kNone);
->Wait();
test::OobeJS().ExpectTrue("!$('oobe-eula-md').$.acceptButton.disabled"); test::OobeJS().ExpectTrue("!$('oobe-eula-md').$.acceptButton.disabled");
} }
...@@ -199,10 +224,9 @@ class OobeInteractiveUITest ...@@ -199,10 +224,9 @@ class OobeInteractiveUITest
} }
void WaitForUpdateScreen() { void WaitForUpdateScreen() {
test::OobeJS() WaitForJsCondition("Oobe.getInstance().currentScreen.id == 'update'",
.CreateWaiter("Oobe.getInstance().currentScreen.id == 'update'") JsWaitOptions::kNone);
->Wait(); WaitForJsCondition("!$('update').hidden", JsWaitOptions::kNone);
test::OobeJS().CreateWaiter("!$('update').hidden")->Wait();
LOG(INFO) << "OobeInteractiveUITest: Switched to 'update' screen."; LOG(INFO) << "OobeInteractiveUITest: Switched to 'update' screen.";
} }
...@@ -217,9 +241,8 @@ class OobeInteractiveUITest ...@@ -217,9 +241,8 @@ class OobeInteractiveUITest
} }
void WaitForGaiaSignInScreen() { void WaitForGaiaSignInScreen() {
test::OobeJS() WaitForJsCondition("Oobe.getInstance().currentScreen.id == 'gaia-signin'",
.CreateWaiter("Oobe.getInstance().currentScreen.id == 'gaia-signin'") JsWaitOptions::kNone);
->Wait();
LOG(INFO) << "OobeInteractiveUITest: Switched to 'gaia-signin' screen."; LOG(INFO) << "OobeInteractiveUITest: Switched to 'gaia-signin' screen.";
} }
...@@ -235,9 +258,8 @@ class OobeInteractiveUITest ...@@ -235,9 +258,8 @@ class OobeInteractiveUITest
void WaitForSyncConsentScreen() { void WaitForSyncConsentScreen() {
LOG(INFO) << "OobeInteractiveUITest: Waiting for 'sync-consent' screen."; LOG(INFO) << "OobeInteractiveUITest: Waiting for 'sync-consent' screen.";
test::OobeJS() WaitForJsCondition("Oobe.getInstance().currentScreen.id == 'sync-consent'",
.CreateWaiter("Oobe.getInstance().currentScreen.id == 'sync-consent'") JsWaitOptions::kNone);
->Wait();
} }
void ExitScreenSyncConsent() { void ExitScreenSyncConsent() {
...@@ -249,29 +271,27 @@ class OobeInteractiveUITest ...@@ -249,29 +271,27 @@ class OobeInteractiveUITest
screen->OnStateChanged(nullptr); screen->OnStateChanged(nullptr);
LOG(INFO) << "OobeInteractiveUITest: Waiting for 'sync-consent' screen " LOG(INFO) << "OobeInteractiveUITest: Waiting for 'sync-consent' screen "
"to close."; "to close.";
test::CreatePredicateOrOobeDestroyedWaiter( WaitForJsCondition("Oobe.getInstance().currentScreen.id != 'sync-consent'",
"Oobe.getInstance().currentScreen.id != 'sync-consent'") JsWaitOptions::kSatisfyIfOobeDestroyed);
->Wait();
} }
void WaitForFingerprintScreen() { void WaitForFingerprintScreen() {
LOG(INFO) LOG(INFO)
<< "OobeInteractiveUITest: Waiting for 'fingerprint-setup' screen."; << "OobeInteractiveUITest: Waiting for 'fingerprint-setup' screen.";
test::OobeJS() WaitForJsCondition(
.CreateWaiter( "Oobe.getInstance().currentScreen.id == 'fingerprint-setup'",
"Oobe.getInstance().currentScreen.id == 'fingerprint-setup'") JsWaitOptions::kNone);
->Wait();
LOG(INFO) << "OobeInteractiveUITest: Waiting for fingerprint setup screen " LOG(INFO) << "OobeInteractiveUITest: Waiting for fingerprint setup screen "
"to show."; "to show.";
test::OobeJS().CreateWaiter("!$('fingerprint-setup').hidden")->Wait(); WaitForJsCondition("!$('fingerprint-setup').hidden", JsWaitOptions::kNone);
LOG(INFO) << "OobeInteractiveUITest: Waiting for fingerprint setup screen " LOG(INFO) << "OobeInteractiveUITest: Waiting for fingerprint setup screen "
"to initializes."; "to initializes.";
test::OobeJS().CreateWaiter("!$('fingerprint-setup-impl').hidden")->Wait(); WaitForJsCondition("!$('fingerprint-setup-impl').hidden",
JsWaitOptions::kNone);
LOG(INFO) << "OobeInteractiveUITest: Waiting for fingerprint setup screen " LOG(INFO) << "OobeInteractiveUITest: Waiting for fingerprint setup screen "
"to show setupFingerprint."; "to show setupFingerprint.";
test::OobeJS() WaitForJsCondition("!$('fingerprint-setup-impl').$.setupFingerprint.hidden",
.CreateWaiter("!$('fingerprint-setup-impl').$.setupFingerprint.hidden") JsWaitOptions::kNone);
->Wait();
} }
void RunFingerprintScreenChecks() { void RunFingerprintScreenChecks() {
...@@ -285,9 +305,8 @@ class OobeInteractiveUITest ...@@ -285,9 +305,8 @@ class OobeInteractiveUITest
"$('fingerprint-setup-impl').$.setupFingerprint.hidden"); "$('fingerprint-setup-impl').$.setupFingerprint.hidden");
LOG(INFO) << "OobeInteractiveUITest: Waiting for fingerprint setup " LOG(INFO) << "OobeInteractiveUITest: Waiting for fingerprint setup "
"to switch to placeFinger."; "to switch to placeFinger.";
test::OobeJS() WaitForJsCondition("!$('fingerprint-setup-impl').$.placeFinger.hidden",
.CreateWaiter("!$('fingerprint-setup-impl').$.placeFinger.hidden") JsWaitOptions::kNone);
->Wait();
} }
void ExitFingerprintPinSetupScreen() { void ExitFingerprintPinSetupScreen() {
...@@ -300,16 +319,16 @@ class OobeInteractiveUITest ...@@ -300,16 +319,16 @@ class OobeInteractiveUITest
"$('fingerprint-setup-impl').$.setupFingerprintLater.click()"); "$('fingerprint-setup-impl').$.setupFingerprintLater.click()");
LOG(INFO) << "OobeInteractiveUITest: Waiting for fingerprint setup screen " LOG(INFO) << "OobeInteractiveUITest: Waiting for fingerprint setup screen "
"to close."; "to close.";
test::CreatePredicateOrOobeDestroyedWaiter( WaitForJsCondition(
"Oobe.getInstance().currentScreen.id != 'fingerprint-setup'") "Oobe.getInstance().currentScreen.id !="
->Wait(); "'fingerprint-setup'",
JsWaitOptions::kSatisfyIfOobeDestroyed);
LOG(INFO) << "OobeInteractiveUITest: 'fingerprint-setup' screen done."; LOG(INFO) << "OobeInteractiveUITest: 'fingerprint-setup' screen done.";
} }
void WaitForDiscoverScreen() { void WaitForDiscoverScreen() {
test::OobeJS() WaitForJsCondition("Oobe.getInstance().currentScreen.id == 'discover'",
.CreateWaiter("Oobe.getInstance().currentScreen.id == 'discover'") JsWaitOptions::kNone);
->Wait();
LOG(INFO) << "OobeInteractiveUITest: Switched to 'discover' screen."; LOG(INFO) << "OobeInteractiveUITest: Switched to 'discover' screen.";
} }
...@@ -334,16 +353,14 @@ class OobeInteractiveUITest ...@@ -334,16 +353,14 @@ class OobeInteractiveUITest
test::OobeJS().ExecuteAsync( test::OobeJS().ExecuteAsync(
"$('discover-impl').root.querySelector('discover-pin-setup-module')." "$('discover-impl').root.querySelector('discover-pin-setup-module')."
"$.setupSkipButton.click()"); "$.setupSkipButton.click()");
test::CreatePredicateOrOobeDestroyedWaiter( WaitForJsCondition("Oobe.getInstance().currentScreen.id != 'discover'",
"Oobe.getInstance().currentScreen.id != 'discover'") JsWaitOptions::kSatisfyIfOobeDestroyed);
->Wait();
LOG(INFO) << "OobeInteractiveUITest: 'discover' screen done."; LOG(INFO) << "OobeInteractiveUITest: 'discover' screen done.";
} }
void WaitForUserImageScreen() { void WaitForUserImageScreen() {
test::OobeJS() WaitForJsCondition("Oobe.getInstance().currentScreen.id == 'user-image'",
.CreateWaiter("Oobe.getInstance().currentScreen.id == 'user-image'") JsWaitOptions::kNone);
->Wait();
LOG(INFO) << "OobeInteractiveUITest: Switched to 'user-image' screen."; LOG(INFO) << "OobeInteractiveUITest: Switched to 'user-image' screen.";
} }
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
#include "chrome/browser/chromeos/login/test/js_checker.h" #include "chrome/browser/chromeos/login/test/js_checker.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "chrome/browser/chromeos/login/test/test_predicate_waiter.h"
#include "chrome/browser/chromeos/login/ui/login_display_host.h" #include "chrome/browser/chromeos/login/ui/login_display_host.h"
#include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
...@@ -19,11 +18,6 @@ std::string WrapSend(const std::string& expression) { ...@@ -19,11 +18,6 @@ std::string WrapSend(const std::string& expression) {
return "window.domAutomationController.send(" + expression + ")"; return "window.domAutomationController.send(" + expression + ")";
} }
bool CheckConditionIfOobeExists(const std::string& js_condition) {
return !chromeos::LoginDisplayHost::default_host() ||
chromeos::test::OobeJS().GetBool(js_condition);
}
} // namespace } // namespace
namespace chromeos { namespace chromeos {
...@@ -98,13 +92,6 @@ void JSChecker::ExpectNE(const std::string& expression, bool result) { ...@@ -98,13 +92,6 @@ void JSChecker::ExpectNE(const std::string& expression, bool result) {
EXPECT_NE(GetBool(expression), result) << expression; EXPECT_NE(GetBool(expression), result) << expression;
} }
std::unique_ptr<TestConditionWaiter> JSChecker::CreateWaiter(
const std::string& js_condition) {
TestPredicateWaiter::PredicateCheck predicate = base::BindRepeating(
&JSChecker::GetBool, base::Unretained(this), js_condition);
return std::make_unique<TestPredicateWaiter>(predicate);
}
void JSChecker::GetBoolImpl(const std::string& expression, bool* result) { void JSChecker::GetBoolImpl(const std::string& expression, bool* result) {
CHECK(web_contents_); CHECK(web_contents_);
ASSERT_TRUE(content::ExecuteScriptAndExtractBool( ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
...@@ -138,12 +125,5 @@ void ExecuteOobeJSAsync(const std::string& script) { ...@@ -138,12 +125,5 @@ void ExecuteOobeJSAsync(const std::string& script) {
LoginDisplayHost::default_host()->GetOobeWebContents(), script); LoginDisplayHost::default_host()->GetOobeWebContents(), script);
} }
std::unique_ptr<TestConditionWaiter> CreatePredicateOrOobeDestroyedWaiter(
const std::string& js_condition) {
TestPredicateWaiter::PredicateCheck predicate =
base::BindRepeating(&CheckConditionIfOobeExists, js_condition);
return std::make_unique<TestPredicateWaiter>(predicate);
}
} // namespace test } // namespace test
} // namespace chromeos } // namespace chromeos
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_TEST_JS_CHECKER_H_ #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_TEST_JS_CHECKER_H_
#define CHROME_BROWSER_CHROMEOS_LOGIN_TEST_JS_CHECKER_H_ #define CHROME_BROWSER_CHROMEOS_LOGIN_TEST_JS_CHECKER_H_
#include <memory>
#include <string> #include <string>
namespace content { namespace content {
...@@ -15,8 +14,6 @@ class WebContents; ...@@ -15,8 +14,6 @@ class WebContents;
namespace chromeos { namespace chromeos {
namespace test { namespace test {
class TestConditionWaiter;
// Utility class for tests that allows us to evalute and check JavaScript // Utility class for tests that allows us to evalute and check JavaScript
// expressions inside given web contents. All calls are made synchronously. // expressions inside given web contents. All calls are made synchronously.
class JSChecker { class JSChecker {
...@@ -49,11 +46,6 @@ class JSChecker { ...@@ -49,11 +46,6 @@ class JSChecker {
void ExpectEQ(const std::string& expression, bool result); void ExpectEQ(const std::string& expression, bool result);
void ExpectNE(const std::string& expression, bool result); void ExpectNE(const std::string& expression, bool result);
// Checks test waiter that would await until |js_condition| evaluates
// to true.
std::unique_ptr<TestConditionWaiter> CreateWaiter(
const std::string& js_condition);
void set_web_contents(content::WebContents* web_contents) { void set_web_contents(content::WebContents* web_contents) {
web_contents_ = web_contents; web_contents_ = web_contents;
} }
...@@ -74,11 +66,6 @@ JSChecker OobeJS(); ...@@ -74,11 +66,6 @@ JSChecker OobeJS();
void ExecuteOobeJS(const std::string& script); void ExecuteOobeJS(const std::string& script);
void ExecuteOobeJSAsync(const std::string& script); void ExecuteOobeJSAsync(const std::string& script);
// Helper method to create waiter over js condition that would also be satisfied
// if oobe UI is destroyed.
std::unique_ptr<TestConditionWaiter> CreatePredicateOrOobeDestroyedWaiter(
const std::string& js_expression);
} // namespace test } // namespace test
} // namespace chromeos } // namespace chromeos
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#include "base/macros.h" #include "base/macros.h"
#include "chrome/browser/chromeos/login/oobe_screen.h" #include "chrome/browser/chromeos/login/oobe_screen.h"
#include "chrome/browser/chromeos/login/test/test_condition_waiter.h"
#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
namespace content { namespace content {
...@@ -17,12 +16,13 @@ class MessageLoopRunner; ...@@ -17,12 +16,13 @@ class MessageLoopRunner;
namespace chromeos { namespace chromeos {
// A waiter that blocks until the expected oobe screen is reached. // A waiter that blocks until the expected oobe screen is reached.
class OobeScreenWaiter : public OobeUI::Observer, class OobeScreenWaiter : public OobeUI::Observer {
public test::TestConditionWaiter {
public: public:
explicit OobeScreenWaiter(OobeScreen expected_screen); explicit OobeScreenWaiter(OobeScreen expected_screen);
~OobeScreenWaiter() override; ~OobeScreenWaiter() override;
// Run message loop to wait for the expected_screen to become current screen.
void Wait();
// Run message loop to wait for the expected_screen to be fully initialized. // Run message loop to wait for the expected_screen to be fully initialized.
void WaitForInitialization(); void WaitForInitialization();
...@@ -37,9 +37,6 @@ class OobeScreenWaiter : public OobeUI::Observer, ...@@ -37,9 +37,6 @@ class OobeScreenWaiter : public OobeUI::Observer,
OobeScreen new_screen) override; OobeScreen new_screen) override;
void OnScreenInitialized(OobeScreen screen) override; void OnScreenInitialized(OobeScreen screen) override;
// TestConditionWaiter;
void Wait() override;
private: private:
OobeUI* GetOobeUI(); OobeUI* GetOobeUI();
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/chromeos/login/test/test_predicate_waiter.h" #include "chrome/browser/chromeos/login/test/test_condition_waiter.h"
#include "base/callback.h" #include "base/callback.h"
...@@ -10,27 +10,27 @@ namespace chromeos { ...@@ -10,27 +10,27 @@ namespace chromeos {
namespace test { namespace test {
namespace { namespace {
const base::TimeDelta kPredicateCheckFrequency = const base::TimeDelta kConditionCheckFrequency =
base::TimeDelta::FromMilliseconds(200); base::TimeDelta::FromMilliseconds(200);
} // anonymous namespace } // anonymous namespace
TestPredicateWaiter::TestPredicateWaiter( TestConditionWaiter::TestConditionWaiter(
const base::RepeatingCallback<bool(void)>& is_fulfilled) const base::RepeatingCallback<bool(void)>& is_fulfilled)
: is_fulfilled_(is_fulfilled) {} : is_fulfilled_(is_fulfilled) {}
TestPredicateWaiter::~TestPredicateWaiter() = default; TestConditionWaiter::~TestConditionWaiter() = default;
void TestPredicateWaiter::Wait() { void TestConditionWaiter::Wait() {
if (is_fulfilled_.Run()) if (is_fulfilled_.Run())
return; return;
timer_.Start(FROM_HERE, kPredicateCheckFrequency, this, timer_.Start(FROM_HERE, kConditionCheckFrequency, this,
&TestPredicateWaiter::CheckPredicate); &TestConditionWaiter::CheckCondition);
run_loop_.Run(); run_loop_.Run();
} }
void TestPredicateWaiter::CheckPredicate() { void TestConditionWaiter::CheckCondition() {
if (is_fulfilled_.Run()) { if (is_fulfilled_.Run()) {
run_loop_.Quit(); run_loop_.Quit();
timer_.Stop(); timer_.Stop();
......
// Copyright 2019 The Chromium Authors. All rights reserved. // Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_TEST_TEST_CONDITION_WAITER_H_ #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_TEST_TEST_CONDITION_WAITER_H_
#define CHROME_BROWSER_CHROMEOS_LOGIN_TEST_TEST_CONDITION_WAITER_H_ #define CHROME_BROWSER_CHROMEOS_LOGIN_TEST_TEST_CONDITION_WAITER_H_
#include "base/macros.h" #include "base/callback_forward.h"
#include "base/run_loop.h"
#include "base/timer/timer.h"
namespace chromeos { namespace chromeos {
namespace test { namespace test {
// Generic class for conditions that can be awaited it test. // Waits for condition to be fulfilled.
class TestConditionWaiter { class TestConditionWaiter {
public: public:
virtual ~TestConditionWaiter() = default; using ConditionCheck = base::RepeatingCallback<bool(void)>;
virtual void Wait() = 0;
protected: explicit TestConditionWaiter(const ConditionCheck& is_fulfilled);
TestConditionWaiter() = default; ~TestConditionWaiter();
void Wait();
private:
void CheckCondition();
const ConditionCheck is_fulfilled_;
base::RepeatingTimer timer_;
base::RunLoop run_loop_;
DISALLOW_COPY_AND_ASSIGN(TestConditionWaiter); DISALLOW_COPY_AND_ASSIGN(TestConditionWaiter);
}; };
......
// Copyright 2019 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.
#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_TEST_TEST_PREDICATE_WAITER_H_
#define CHROME_BROWSER_CHROMEOS_LOGIN_TEST_TEST_PREDICATE_WAITER_H_
#include "base/callback_forward.h"
#include "base/run_loop.h"
#include "base/timer/timer.h"
#include "chrome/browser/chromeos/login/test/test_condition_waiter.h"
namespace chromeos {
namespace test {
// Waits for predicate to be fulfilled.
class TestPredicateWaiter : public TestConditionWaiter {
public:
using PredicateCheck = base::RepeatingCallback<bool(void)>;
explicit TestPredicateWaiter(const PredicateCheck& is_fulfilled);
~TestPredicateWaiter() override;
// TestConditionWaiter
void Wait() override;
private:
void CheckPredicate();
const PredicateCheck is_fulfilled_;
base::RepeatingTimer timer_;
base::RunLoop run_loop_;
DISALLOW_COPY_AND_ASSIGN(TestPredicateWaiter);
};
} // namespace test
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_LOGIN_TEST_TEST_PREDICATE_WAITER_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment