Commit a365352b authored by Jacob Dufault's avatar Jacob Dufault Committed by Commit Bot

cros: Simplify how views/screens are mocked in WizardControllerBrowsertest

This eliminates MockOutShowHide and simplifies lifetime.

MockOutShowHide derived from another Mock class, and also embedded the
view inside of it. This means that the view was destroyed while the
model was being destroyed.

EXPECT_* methods are now moved to test code instead of the mock class,
since the EXPECT_* methods assume a specific type of usage that is not
always present.

ScreenManager is also cleaned up so that it does not declare any friend
tests.

Bug: 928555
Change-Id: I2f61648dc980e4d5b08620d76d3bbd4d58cd2403
Reviewed-on: https://chromium-review.googlesource.com/c/1450281Reviewed-by: default avatarAlexander Alekseev <alemate@chromium.org>
Reviewed-by: default avatarDenis Kuznetsov <antrim@chromium.org>
Commit-Queue: Jacob Dufault <jdufault@chromium.org>
Cr-Commit-Position: refs/heads/master@{#629264}
parent a445df3d
...@@ -4,9 +4,6 @@ ...@@ -4,9 +4,6 @@
#include "chrome/browser/chromeos/login/enrollment/mock_auto_enrollment_check_screen.h" #include "chrome/browser/chromeos/login/enrollment/mock_auto_enrollment_check_screen.h"
using ::testing::AtLeast;
using ::testing::NotNull;
namespace chromeos { namespace chromeos {
MockAutoEnrollmentCheckScreen::MockAutoEnrollmentCheckScreen( MockAutoEnrollmentCheckScreen::MockAutoEnrollmentCheckScreen(
...@@ -16,11 +13,13 @@ MockAutoEnrollmentCheckScreen::MockAutoEnrollmentCheckScreen( ...@@ -16,11 +13,13 @@ MockAutoEnrollmentCheckScreen::MockAutoEnrollmentCheckScreen(
MockAutoEnrollmentCheckScreen::~MockAutoEnrollmentCheckScreen() {} MockAutoEnrollmentCheckScreen::~MockAutoEnrollmentCheckScreen() {}
MockAutoEnrollmentCheckScreenView::MockAutoEnrollmentCheckScreenView() void MockAutoEnrollmentCheckScreen::RealShow() {
: screen_(NULL) { AutoEnrollmentCheckScreen::Show();
EXPECT_CALL(*this, MockSetDelegate(NotNull())).Times(AtLeast(1));
} }
MockAutoEnrollmentCheckScreenView::MockAutoEnrollmentCheckScreenView() =
default;
MockAutoEnrollmentCheckScreenView::~MockAutoEnrollmentCheckScreenView() { MockAutoEnrollmentCheckScreenView::~MockAutoEnrollmentCheckScreenView() {
if (screen_) if (screen_)
screen_->OnViewDestroyed(this); screen_->OnViewDestroyed(this);
......
...@@ -16,6 +16,11 @@ class MockAutoEnrollmentCheckScreen : public AutoEnrollmentCheckScreen { ...@@ -16,6 +16,11 @@ class MockAutoEnrollmentCheckScreen : public AutoEnrollmentCheckScreen {
MockAutoEnrollmentCheckScreen(BaseScreenDelegate* base_screen_delegate, MockAutoEnrollmentCheckScreen(BaseScreenDelegate* base_screen_delegate,
AutoEnrollmentCheckScreenView* view); AutoEnrollmentCheckScreenView* view);
~MockAutoEnrollmentCheckScreen() override; ~MockAutoEnrollmentCheckScreen() override;
MOCK_METHOD0(Show, void());
MOCK_METHOD0(Hide, void());
void RealShow();
}; };
class MockAutoEnrollmentCheckScreenView : public AutoEnrollmentCheckScreenView { class MockAutoEnrollmentCheckScreenView : public AutoEnrollmentCheckScreenView {
...@@ -29,7 +34,7 @@ class MockAutoEnrollmentCheckScreenView : public AutoEnrollmentCheckScreenView { ...@@ -29,7 +34,7 @@ class MockAutoEnrollmentCheckScreenView : public AutoEnrollmentCheckScreenView {
MOCK_METHOD0(Show, void()); MOCK_METHOD0(Show, void());
private: private:
Delegate* screen_; Delegate* screen_ = nullptr;
}; };
} // namespace chromeos } // namespace chromeos
......
...@@ -19,6 +19,9 @@ class MockEnrollmentScreen : public EnrollmentScreen { ...@@ -19,6 +19,9 @@ class MockEnrollmentScreen : public EnrollmentScreen {
MockEnrollmentScreen(BaseScreenDelegate* base_screen_delegate, MockEnrollmentScreen(BaseScreenDelegate* base_screen_delegate,
EnrollmentScreenView* view); EnrollmentScreenView* view);
~MockEnrollmentScreen() override; ~MockEnrollmentScreen() override;
MOCK_METHOD0(Show, void());
MOCK_METHOD0(Hide, void());
}; };
class MockEnrollmentScreenView : public EnrollmentScreenView { class MockEnrollmentScreenView : public EnrollmentScreenView {
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#include "chrome/browser/chromeos/login/screen_manager.h" #include "chrome/browser/chromeos/login/screen_manager.h"
#include <utility>
#include "base/memory/ptr_util.h" #include "base/memory/ptr_util.h"
#include "chrome/browser/chromeos/login/wizard_controller.h" #include "chrome/browser/chromeos/login/wizard_controller.h"
...@@ -30,4 +32,15 @@ bool ScreenManager::HasScreen(OobeScreen screen) { ...@@ -30,4 +32,15 @@ bool ScreenManager::HasScreen(OobeScreen screen) {
return screens_.count(screen) > 0; return screens_.count(screen) > 0;
} }
void ScreenManager::SetScreenForTesting(std::unique_ptr<BaseScreen> value) {
// Capture screen id to avoid using `value` after moving it; = is not a
// sequence point.
auto id = value->screen_id();
screens_[id] = std::move(value);
}
void ScreenManager::DeleteScreenForTesting(OobeScreen screen) {
screens_[screen] = nullptr;
}
} // namespace chromeos } // namespace chromeos
...@@ -26,15 +26,10 @@ class ScreenManager { ...@@ -26,15 +26,10 @@ class ScreenManager {
bool HasScreen(OobeScreen screen); bool HasScreen(OobeScreen screen);
private: void SetScreenForTesting(std::unique_ptr<BaseScreen> value);
FRIEND_TEST_ALL_PREFIXES(EnrollmentScreenTest, TestCancel); void DeleteScreenForTesting(OobeScreen screen);
FRIEND_TEST_ALL_PREFIXES(WizardControllerFlowTest, Accelerators);
friend class WizardControllerFlowTest;
friend class WizardControllerOobeResumeTest;
friend class WizardControllerBrokenLocalStateTest;
friend class WizardControllerOobeConfigurationTest;
friend class WizardControllerSupervisionTransitionOobeTest;
private:
// Created screens. // Created screens.
std::map<OobeScreen, std::unique_ptr<BaseScreen>> screens_; std::map<OobeScreen, std::unique_ptr<BaseScreen>> screens_;
......
...@@ -4,9 +4,6 @@ ...@@ -4,9 +4,6 @@
#include "chrome/browser/chromeos/login/screens/mock_arc_terms_of_service_screen.h" #include "chrome/browser/chromeos/login/screens/mock_arc_terms_of_service_screen.h"
using ::testing::AtLeast;
using ::testing::NotNull;
namespace chromeos { namespace chromeos {
MockArcTermsOfServiceScreen::MockArcTermsOfServiceScreen( MockArcTermsOfServiceScreen::MockArcTermsOfServiceScreen(
...@@ -29,4 +26,11 @@ void MockArcTermsOfServiceScreenView::AddObserver( ...@@ -29,4 +26,11 @@ void MockArcTermsOfServiceScreenView::AddObserver(
MockAddObserver(observer); MockAddObserver(observer);
} }
void MockArcTermsOfServiceScreenView::RemoveObserver(
ArcTermsOfServiceScreenViewObserver* observer) {
if (observer_ == observer)
observer_ = nullptr;
MockRemoveObserver(observer);
}
} // namespace chromeos } // namespace chromeos
...@@ -16,6 +16,9 @@ class MockArcTermsOfServiceScreen : public ArcTermsOfServiceScreen { ...@@ -16,6 +16,9 @@ class MockArcTermsOfServiceScreen : public ArcTermsOfServiceScreen {
MockArcTermsOfServiceScreen(BaseScreenDelegate* base_screen_delegate, MockArcTermsOfServiceScreen(BaseScreenDelegate* base_screen_delegate,
ArcTermsOfServiceScreenView* view); ArcTermsOfServiceScreenView* view);
~MockArcTermsOfServiceScreen() override; ~MockArcTermsOfServiceScreen() override;
MOCK_METHOD0(Show, void());
MOCK_METHOD0(Hide, void());
}; };
class MockArcTermsOfServiceScreenView : public ArcTermsOfServiceScreenView { class MockArcTermsOfServiceScreenView : public ArcTermsOfServiceScreenView {
...@@ -24,17 +27,18 @@ class MockArcTermsOfServiceScreenView : public ArcTermsOfServiceScreenView { ...@@ -24,17 +27,18 @@ class MockArcTermsOfServiceScreenView : public ArcTermsOfServiceScreenView {
~MockArcTermsOfServiceScreenView() override; ~MockArcTermsOfServiceScreenView() override;
void AddObserver(ArcTermsOfServiceScreenViewObserver* observer) override; void AddObserver(ArcTermsOfServiceScreenViewObserver* observer) override;
void RemoveObserver(ArcTermsOfServiceScreenViewObserver* observer) override;
MOCK_METHOD0(Show, void()); MOCK_METHOD0(Show, void());
MOCK_METHOD0(Hide, void()); MOCK_METHOD0(Hide, void());
MOCK_METHOD1(Bind, void(ArcTermsOfServiceScreen* screen)); MOCK_METHOD1(Bind, void(ArcTermsOfServiceScreen* screen));
MOCK_METHOD1(MockAddObserver, MOCK_METHOD1(MockAddObserver,
void(ArcTermsOfServiceScreenViewObserver* observer)); void(ArcTermsOfServiceScreenViewObserver* observer));
MOCK_METHOD1(RemoveObserver, MOCK_METHOD1(MockRemoveObserver,
void(ArcTermsOfServiceScreenViewObserver* observer)); void(ArcTermsOfServiceScreenViewObserver* observer));
private: private:
ArcTermsOfServiceScreenViewObserver* observer_; ArcTermsOfServiceScreenViewObserver* observer_ = nullptr;
}; };
} // namespace chromeos } // namespace chromeos
......
...@@ -4,9 +4,6 @@ ...@@ -4,9 +4,6 @@
#include "chrome/browser/chromeos/login/screens/mock_demo_preferences_screen.h" #include "chrome/browser/chromeos/login/screens/mock_demo_preferences_screen.h"
using ::testing::AtLeast;
using ::testing::NotNull;
namespace chromeos { namespace chromeos {
MockDemoPreferencesScreen::MockDemoPreferencesScreen( MockDemoPreferencesScreen::MockDemoPreferencesScreen(
...@@ -16,9 +13,7 @@ MockDemoPreferencesScreen::MockDemoPreferencesScreen( ...@@ -16,9 +13,7 @@ MockDemoPreferencesScreen::MockDemoPreferencesScreen(
MockDemoPreferencesScreen::~MockDemoPreferencesScreen() = default; MockDemoPreferencesScreen::~MockDemoPreferencesScreen() = default;
MockDemoPreferencesScreenView::MockDemoPreferencesScreenView() { MockDemoPreferencesScreenView::MockDemoPreferencesScreenView() = default;
EXPECT_CALL(*this, MockBind(NotNull())).Times(AtLeast(1));
}
MockDemoPreferencesScreenView::~MockDemoPreferencesScreenView() { MockDemoPreferencesScreenView::~MockDemoPreferencesScreenView() {
if (screen_) if (screen_)
......
...@@ -18,6 +18,9 @@ class MockDemoPreferencesScreen : public DemoPreferencesScreen { ...@@ -18,6 +18,9 @@ class MockDemoPreferencesScreen : public DemoPreferencesScreen {
DemoPreferencesScreenView* view); DemoPreferencesScreenView* view);
~MockDemoPreferencesScreen() override; ~MockDemoPreferencesScreen() override;
MOCK_METHOD0(Show, void());
MOCK_METHOD0(Hide, void());
private: private:
DISALLOW_COPY_AND_ASSIGN(MockDemoPreferencesScreen); DISALLOW_COPY_AND_ASSIGN(MockDemoPreferencesScreen);
}; };
...@@ -34,7 +37,7 @@ class MockDemoPreferencesScreenView : public DemoPreferencesScreenView { ...@@ -34,7 +37,7 @@ class MockDemoPreferencesScreenView : public DemoPreferencesScreenView {
void Bind(DemoPreferencesScreen* screen) override; void Bind(DemoPreferencesScreen* screen) override;
private: private:
DemoPreferencesScreen* screen_; DemoPreferencesScreen* screen_ = nullptr;
DISALLOW_COPY_AND_ASSIGN(MockDemoPreferencesScreenView); DISALLOW_COPY_AND_ASSIGN(MockDemoPreferencesScreenView);
}; };
......
...@@ -4,9 +4,6 @@ ...@@ -4,9 +4,6 @@
#include "chrome/browser/chromeos/login/screens/mock_demo_setup_screen.h" #include "chrome/browser/chromeos/login/screens/mock_demo_setup_screen.h"
using ::testing::AtLeast;
using ::testing::NotNull;
namespace chromeos { namespace chromeos {
MockDemoSetupScreen::MockDemoSetupScreen( MockDemoSetupScreen::MockDemoSetupScreen(
...@@ -16,9 +13,7 @@ MockDemoSetupScreen::MockDemoSetupScreen( ...@@ -16,9 +13,7 @@ MockDemoSetupScreen::MockDemoSetupScreen(
MockDemoSetupScreen::~MockDemoSetupScreen() = default; MockDemoSetupScreen::~MockDemoSetupScreen() = default;
MockDemoSetupScreenView::MockDemoSetupScreenView() { MockDemoSetupScreenView::MockDemoSetupScreenView() = default;
EXPECT_CALL(*this, MockBind(NotNull())).Times(AtLeast(1));
}
MockDemoSetupScreenView::~MockDemoSetupScreenView() { MockDemoSetupScreenView::~MockDemoSetupScreenView() {
if (screen_) if (screen_)
......
...@@ -17,6 +17,9 @@ class MockDemoSetupScreen : public DemoSetupScreen { ...@@ -17,6 +17,9 @@ class MockDemoSetupScreen : public DemoSetupScreen {
MockDemoSetupScreen(BaseScreenDelegate* base_screen_delegate, MockDemoSetupScreen(BaseScreenDelegate* base_screen_delegate,
DemoSetupScreenView* view); DemoSetupScreenView* view);
~MockDemoSetupScreen() override; ~MockDemoSetupScreen() override;
MOCK_METHOD0(Show, void());
MOCK_METHOD0(Hide, void());
}; };
class MockDemoSetupScreenView : public DemoSetupScreenView { class MockDemoSetupScreenView : public DemoSetupScreenView {
...@@ -34,7 +37,7 @@ class MockDemoSetupScreenView : public DemoSetupScreenView { ...@@ -34,7 +37,7 @@ class MockDemoSetupScreenView : public DemoSetupScreenView {
void Bind(DemoSetupScreen* screen) override; void Bind(DemoSetupScreen* screen) override;
private: private:
DemoSetupScreen* screen_; DemoSetupScreen* screen_ = nullptr;
}; };
} // namespace chromeos } // namespace chromeos
......
...@@ -4,9 +4,6 @@ ...@@ -4,9 +4,6 @@
#include "chrome/browser/chromeos/login/screens/mock_enable_debugging_screen.h" #include "chrome/browser/chromeos/login/screens/mock_enable_debugging_screen.h"
using ::testing::AtLeast;
using ::testing::NotNull;
namespace chromeos { namespace chromeos {
MockEnableDebuggingScreen::MockEnableDebuggingScreen( MockEnableDebuggingScreen::MockEnableDebuggingScreen(
...@@ -16,9 +13,7 @@ MockEnableDebuggingScreen::MockEnableDebuggingScreen( ...@@ -16,9 +13,7 @@ MockEnableDebuggingScreen::MockEnableDebuggingScreen(
MockEnableDebuggingScreen::~MockEnableDebuggingScreen() {} MockEnableDebuggingScreen::~MockEnableDebuggingScreen() {}
MockEnableDebuggingScreenView::MockEnableDebuggingScreenView() { MockEnableDebuggingScreenView::MockEnableDebuggingScreenView() = default;
EXPECT_CALL(*this, MockSetDelegate(NotNull())).Times(AtLeast(1));
}
MockEnableDebuggingScreenView::~MockEnableDebuggingScreenView() { MockEnableDebuggingScreenView::~MockEnableDebuggingScreenView() {
if (delegate_) if (delegate_)
......
...@@ -17,6 +17,9 @@ class MockEnableDebuggingScreen : public EnableDebuggingScreen { ...@@ -17,6 +17,9 @@ class MockEnableDebuggingScreen : public EnableDebuggingScreen {
MockEnableDebuggingScreen(BaseScreenDelegate* base_screen_delegate, MockEnableDebuggingScreen(BaseScreenDelegate* base_screen_delegate,
EnableDebuggingScreenView* view); EnableDebuggingScreenView* view);
~MockEnableDebuggingScreen() override; ~MockEnableDebuggingScreen() override;
MOCK_METHOD0(Show, void());
MOCK_METHOD0(Hide, void());
}; };
class MockEnableDebuggingScreenView : public EnableDebuggingScreenView { class MockEnableDebuggingScreenView : public EnableDebuggingScreenView {
......
...@@ -18,6 +18,9 @@ class MockEulaScreen : public EulaScreen { ...@@ -18,6 +18,9 @@ class MockEulaScreen : public EulaScreen {
Delegate* delegate, Delegate* delegate,
EulaView* view); EulaView* view);
~MockEulaScreen() override; ~MockEulaScreen() override;
MOCK_METHOD0(Show, void());
MOCK_METHOD0(Hide, void());
}; };
class MockEulaView : public EulaView { class MockEulaView : public EulaView {
......
...@@ -4,9 +4,6 @@ ...@@ -4,9 +4,6 @@
#include "chrome/browser/chromeos/login/screens/mock_supervision_transition_screen.h" #include "chrome/browser/chromeos/login/screens/mock_supervision_transition_screen.h"
using ::testing::_;
using ::testing::AtLeast;
namespace chromeos { namespace chromeos {
MockSupervisionTransitionScreen::MockSupervisionTransitionScreen( MockSupervisionTransitionScreen::MockSupervisionTransitionScreen(
...@@ -16,9 +13,8 @@ MockSupervisionTransitionScreen::MockSupervisionTransitionScreen( ...@@ -16,9 +13,8 @@ MockSupervisionTransitionScreen::MockSupervisionTransitionScreen(
MockSupervisionTransitionScreen::~MockSupervisionTransitionScreen() = default; MockSupervisionTransitionScreen::~MockSupervisionTransitionScreen() = default;
MockSupervisionTransitionScreenView::MockSupervisionTransitionScreenView() { MockSupervisionTransitionScreenView::MockSupervisionTransitionScreenView() =
EXPECT_CALL(*this, MockBind(_)).Times(AtLeast(1)); default;
}
MockSupervisionTransitionScreenView::~MockSupervisionTransitionScreenView() { MockSupervisionTransitionScreenView::~MockSupervisionTransitionScreenView() {
if (screen_) if (screen_)
......
...@@ -17,6 +17,8 @@ class MockUpdateScreen : public UpdateScreen { ...@@ -17,6 +17,8 @@ class MockUpdateScreen : public UpdateScreen {
MockUpdateScreen(BaseScreenDelegate* base_screen_delegate, UpdateView* view); MockUpdateScreen(BaseScreenDelegate* base_screen_delegate, UpdateView* view);
virtual ~MockUpdateScreen(); virtual ~MockUpdateScreen();
MOCK_METHOD0(Show, void());
MOCK_METHOD0(Hide, void());
MOCK_METHOD0(StartNetworkCheck, void()); MOCK_METHOD0(StartNetworkCheck, void());
}; };
......
...@@ -6,9 +6,6 @@ ...@@ -6,9 +6,6 @@
namespace chromeos { namespace chromeos {
using ::testing::AtLeast;
using ::testing::_;
MockWelcomeScreen::MockWelcomeScreen(BaseScreenDelegate* base_screen_delegate, MockWelcomeScreen::MockWelcomeScreen(BaseScreenDelegate* base_screen_delegate,
Delegate* delegate, Delegate* delegate,
WelcomeView* view) WelcomeView* view)
...@@ -16,9 +13,7 @@ MockWelcomeScreen::MockWelcomeScreen(BaseScreenDelegate* base_screen_delegate, ...@@ -16,9 +13,7 @@ MockWelcomeScreen::MockWelcomeScreen(BaseScreenDelegate* base_screen_delegate,
MockWelcomeScreen::~MockWelcomeScreen() = default; MockWelcomeScreen::~MockWelcomeScreen() = default;
MockWelcomeView::MockWelcomeView() { MockWelcomeView::MockWelcomeView() = default;
EXPECT_CALL(*this, MockBind(_)).Times(AtLeast(1));
}
MockWelcomeView::~MockWelcomeView() { MockWelcomeView::~MockWelcomeView() {
if (screen_) if (screen_)
......
...@@ -4,9 +4,6 @@ ...@@ -4,9 +4,6 @@
#include "chrome/browser/chromeos/login/screens/mock_wrong_hwid_screen.h" #include "chrome/browser/chromeos/login/screens/mock_wrong_hwid_screen.h"
using testing::AtLeast;
using testing::NotNull;
namespace chromeos { namespace chromeos {
MockWrongHWIDScreen::MockWrongHWIDScreen( MockWrongHWIDScreen::MockWrongHWIDScreen(
...@@ -16,9 +13,7 @@ MockWrongHWIDScreen::MockWrongHWIDScreen( ...@@ -16,9 +13,7 @@ MockWrongHWIDScreen::MockWrongHWIDScreen(
MockWrongHWIDScreen::~MockWrongHWIDScreen() {} MockWrongHWIDScreen::~MockWrongHWIDScreen() {}
MockWrongHWIDScreenView::MockWrongHWIDScreenView() : delegate_(nullptr) { MockWrongHWIDScreenView::MockWrongHWIDScreenView() = default;
EXPECT_CALL(*this, MockSetDelegate(NotNull())).Times(AtLeast(1));
}
MockWrongHWIDScreenView::~MockWrongHWIDScreenView() { MockWrongHWIDScreenView::~MockWrongHWIDScreenView() {
if (delegate_) if (delegate_)
......
...@@ -18,6 +18,9 @@ class MockWrongHWIDScreen : public WrongHWIDScreen { ...@@ -18,6 +18,9 @@ class MockWrongHWIDScreen : public WrongHWIDScreen {
MockWrongHWIDScreen(BaseScreenDelegate* base_screen_delegate, MockWrongHWIDScreen(BaseScreenDelegate* base_screen_delegate,
WrongHWIDScreenView* view); WrongHWIDScreenView* view);
~MockWrongHWIDScreen() override; ~MockWrongHWIDScreen() override;
MOCK_METHOD0(Show, void());
MOCK_METHOD0(Hide, void());
}; };
class MockWrongHWIDScreenView : public WrongHWIDScreenView { class MockWrongHWIDScreenView : public WrongHWIDScreenView {
...@@ -32,7 +35,7 @@ class MockWrongHWIDScreenView : public WrongHWIDScreenView { ...@@ -32,7 +35,7 @@ class MockWrongHWIDScreenView : public WrongHWIDScreenView {
MOCK_METHOD1(MockSetDelegate, void(Delegate*)); MOCK_METHOD1(MockSetDelegate, void(Delegate*));
private: private:
Delegate* delegate_; Delegate* delegate_ = nullptr;
}; };
} // namespace chromeos } // namespace chromeos
......
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