| Index: chrome/browser/chromeos/mobile/mobile_activator_unittest.cc
|
| diff --git a/chrome/browser/chromeos/mobile/mobile_activator_unittest.cc b/chrome/browser/chromeos/mobile/mobile_activator_unittest.cc
|
| index 563a06a220d5b8a6d3d72dd6a84b1d569be29bab..764dfd6d1c70b522df9e00454c9ae2affd5547e3 100644
|
| --- a/chrome/browser/chromeos/mobile/mobile_activator_unittest.cc
|
| +++ b/chrome/browser/chromeos/mobile/mobile_activator_unittest.cc
|
| @@ -4,17 +4,21 @@
|
|
|
| #include "chrome/browser/chromeos/mobile/mobile_activator.h"
|
|
|
| -#include "chrome/browser/chromeos/cros/mock_network_library.h"
|
| -#include "chrome/browser/chromeos/cros/network_library.h"
|
| +#include "base/message_loop/message_loop.h"
|
| +#include "chromeos/dbus/dbus_thread_manager.h"
|
| +#include "chromeos/network/network_handler.h"
|
| +#include "chromeos/network/network_state.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "third_party/cros_system_api/dbus/service_constants.h"
|
|
|
| using std::string;
|
|
|
| using content::BrowserThread;
|
| using testing::_;
|
| using testing::Eq;
|
| +using testing::Invoke;
|
| using testing::Return;
|
|
|
| namespace {
|
| @@ -34,39 +38,39 @@ namespace chromeos {
|
|
|
| class TestMobileActivator : public MobileActivator {
|
| public:
|
| - TestMobileActivator(MockNetworkLibrary* mock_network_library,
|
| - CellularNetwork* cellular_network)
|
| - : mock_network_library_(mock_network_library),
|
| + explicit TestMobileActivator(NetworkState* cellular_network) :
|
| cellular_network_(cellular_network) {
|
| // Provide reasonable defaults for basic things we're usually not testing.
|
| ON_CALL(*this, DCheckOnThread(_))
|
| .WillByDefault(Return());
|
| - ON_CALL(*this, FindMatchingCellularNetwork(_))
|
| - .WillByDefault(Return(cellular_network));
|
| - ON_CALL(*this, GetNetworkLibrary())
|
| - .WillByDefault(Return(mock_network_library_));
|
| + ON_CALL(*this, GetNetworkState(_))
|
| + .WillByDefault(Return(cellular_network_));
|
| }
|
| virtual ~TestMobileActivator() {}
|
|
|
| - MOCK_METHOD3(ChangeState, void(CellularNetwork*,
|
| + MOCK_METHOD3(RequestCellularActivation,
|
| + void(const NetworkState*,
|
| + const base::Closure&,
|
| + const network_handler::ErrorCallback&));
|
| + MOCK_METHOD3(ChangeState, void(const NetworkState*,
|
| MobileActivator::PlanActivationState,
|
| const std::string&));
|
| - MOCK_METHOD1(EvaluateCellularNetwork, void(CellularNetwork*));
|
| - MOCK_METHOD1(FindMatchingCellularNetwork, CellularNetwork*(bool));
|
| + MOCK_METHOD1(GetNetworkState, const NetworkState*(const std::string&));
|
| + MOCK_METHOD1(EvaluateCellularNetwork, void(const NetworkState*));
|
| + MOCK_METHOD0(SignalCellularPlanPayment, void(void));
|
| MOCK_METHOD0(StartOTASPTimer, void(void));
|
| + MOCK_CONST_METHOD0(HasRecentCellularPlanPayment, bool(void));
|
|
|
| - void InvokeChangeState(CellularNetwork* network,
|
| + void InvokeChangeState(const NetworkState* network,
|
| MobileActivator::PlanActivationState new_state,
|
| const std::string& error_description) {
|
| MobileActivator::ChangeState(network, new_state, error_description);
|
| }
|
|
|
| private:
|
| - MOCK_CONST_METHOD0(GetNetworkLibrary, NetworkLibrary*(void));
|
| MOCK_CONST_METHOD1(DCheckOnThread, void(const BrowserThread::ID id));
|
|
|
| - MockNetworkLibrary* mock_network_library_;
|
| - CellularNetwork* cellular_network_;
|
| + NetworkState* cellular_network_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(TestMobileActivator);
|
| };
|
| @@ -74,27 +78,33 @@ class TestMobileActivator : public MobileActivator {
|
| class MobileActivatorTest : public testing::Test {
|
| public:
|
| MobileActivatorTest()
|
| - : network_library_(),
|
| - cellular_network_(string(kTestServicePath)),
|
| - mobile_activator_(&network_library_, &cellular_network_) {}
|
| + : cellular_network_(string(kTestServicePath)),
|
| + mobile_activator_(&cellular_network_) {
|
| + }
|
| virtual ~MobileActivatorTest() {}
|
|
|
| protected:
|
| - virtual void SetUp() {}
|
| - virtual void TearDown() {}
|
| + virtual void SetUp() {
|
| + DBusThreadManager::InitializeWithStub();
|
| + NetworkHandler::Initialize();
|
| + }
|
| + virtual void TearDown() {
|
| + NetworkHandler::Shutdown();
|
| + DBusThreadManager::Shutdown();
|
| + }
|
|
|
| void set_activator_state(const MobileActivator::PlanActivationState state) {
|
| mobile_activator_.state_ = state;
|
| }
|
| - void set_network_activation_state(ActivationState state) {
|
| - cellular_network_.activation_state_ = state;
|
| + void set_network_activation_state(const std::string& activation_state) {
|
| + cellular_network_.activation_state_ = activation_state;
|
| }
|
| - void set_connection_state(ConnectionState state) {
|
| - cellular_network_.state_ = state;
|
| + void set_connection_state(const std::string& state) {
|
| + cellular_network_.connection_state_ = state;
|
| }
|
|
|
| - MockNetworkLibrary network_library_;
|
| - MockCellularNetwork cellular_network_;
|
| + base::MessageLoop message_loop_;
|
| + NetworkState cellular_network_;
|
| TestMobileActivator mobile_activator_;
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(MobileActivatorTest);
|
| @@ -106,24 +116,24 @@ TEST_F(MobileActivatorTest, BasicFlowForNewDevices) {
|
| // activated.
|
| std::string error_description;
|
| set_activator_state(MobileActivator::PLAN_ACTIVATION_START);
|
| - set_connection_state(STATE_IDLE);
|
| - set_network_activation_state(ACTIVATION_STATE_NOT_ACTIVATED);
|
| + set_connection_state(flimflam::kStateIdle);
|
| + set_network_activation_state(flimflam::kActivationStateNotActivated);
|
| EXPECT_EQ(MobileActivator::PLAN_ACTIVATION_INITIATING_ACTIVATION,
|
| mobile_activator_.PickNextState(&cellular_network_,
|
| &error_description));
|
| // Now behave as if ChangeState() has initiated an activation.
|
| set_activator_state(MobileActivator::PLAN_ACTIVATION_INITIATING_ACTIVATION);
|
| - set_network_activation_state(ACTIVATION_STATE_ACTIVATING);
|
| + set_network_activation_state(flimflam::kActivationStateActivating);
|
| // We'll sit in this state while we wait for the OTASP to finish.
|
| EXPECT_EQ(MobileActivator::PLAN_ACTIVATION_INITIATING_ACTIVATION,
|
| mobile_activator_.PickNextState(&cellular_network_,
|
| &error_description));
|
| - set_network_activation_state(ACTIVATION_STATE_PARTIALLY_ACTIVATED);
|
| + set_network_activation_state(flimflam::kActivationStatePartiallyActivated);
|
| // We'll sit in this state until we go online as well.
|
| EXPECT_EQ(MobileActivator::PLAN_ACTIVATION_INITIATING_ACTIVATION,
|
| mobile_activator_.PickNextState(&cellular_network_,
|
| &error_description));
|
| - set_connection_state(STATE_PORTAL);
|
| + set_connection_state(flimflam::kStatePortal);
|
| // After we go online, we go back to START, which acts as a jumping off
|
| // point for the two types of initial OTASP.
|
| EXPECT_EQ(MobileActivator::PLAN_ACTIVATION_START,
|
| @@ -135,12 +145,12 @@ TEST_F(MobileActivatorTest, BasicFlowForNewDevices) {
|
| &error_description));
|
| // Very similar things happen while we're trying OTASP.
|
| set_activator_state(MobileActivator::PLAN_ACTIVATION_TRYING_OTASP);
|
| - set_network_activation_state(ACTIVATION_STATE_ACTIVATING);
|
| + set_network_activation_state(flimflam::kActivationStateActivating);
|
| EXPECT_EQ(MobileActivator::PLAN_ACTIVATION_TRYING_OTASP,
|
| mobile_activator_.PickNextState(&cellular_network_,
|
| &error_description));
|
| - set_network_activation_state(ACTIVATION_STATE_PARTIALLY_ACTIVATED);
|
| - set_connection_state(STATE_PORTAL);
|
| + set_network_activation_state(flimflam::kActivationStatePartiallyActivated);
|
| + set_connection_state(flimflam::kStatePortal);
|
| // And when we come back online again and aren't activating, load the portal.
|
| EXPECT_EQ(MobileActivator::PLAN_ACTIVATION_PAYMENT_PORTAL_LOADING,
|
| mobile_activator_.PickNextState(&cellular_network_,
|
| @@ -149,7 +159,7 @@ TEST_F(MobileActivatorTest, BasicFlowForNewDevices) {
|
| set_activator_state(MobileActivator::PLAN_ACTIVATION_SHOWING_PAYMENT);
|
| // The JS also calls us to signal that the portal is done. This triggers us
|
| // to start our final OTASP via the aptly named StartOTASP().
|
| - EXPECT_CALL(network_library_, SignalCellularPlanPayment());
|
| + EXPECT_CALL(mobile_activator_, SignalCellularPlanPayment());
|
| EXPECT_CALL(mobile_activator_,
|
| ChangeState(Eq(&cellular_network_),
|
| Eq(MobileActivator::PLAN_ACTIVATION_START_OTASP),
|
| @@ -166,34 +176,52 @@ TEST_F(MobileActivatorTest, BasicFlowForNewDevices) {
|
| &error_description));
|
| // Similarly to TRYING_OTASP and INITIATING_OTASP above...
|
| set_activator_state(MobileActivator::PLAN_ACTIVATION_OTASP);
|
| - set_network_activation_state(ACTIVATION_STATE_ACTIVATING);
|
| + set_network_activation_state(flimflam::kActivationStateActivating);
|
| EXPECT_EQ(MobileActivator::PLAN_ACTIVATION_OTASP,
|
| mobile_activator_.PickNextState(&cellular_network_,
|
| &error_description));
|
| - set_network_activation_state(ACTIVATION_STATE_ACTIVATED);
|
| + set_network_activation_state(flimflam::kActivationStateActivated);
|
| EXPECT_EQ(MobileActivator::PLAN_ACTIVATION_DONE,
|
| mobile_activator_.PickNextState(&cellular_network_,
|
| &error_description));
|
| }
|
|
|
| +// A fake for MobileActivator::RequestCellularActivation that always succeeds.
|
| +void FakeRequestCellularActivationSuccess(
|
| + const NetworkState* network,
|
| + const base::Closure& success_callback,
|
| + const network_handler::ErrorCallback& error_callback) {
|
| + success_callback.Run();
|
| +}
|
| +
|
| +// A fake for MobileActivator::RequestCellularActivation that always fails.
|
| +void FakeRequestCellularActivationFailure(
|
| + const NetworkState* network,
|
| + const base::Closure& success_callback,
|
| + const network_handler::ErrorCallback& error_callback) {
|
| + scoped_ptr<base::DictionaryValue> value;
|
| + error_callback.Run("", value.Pass());
|
| +}
|
| +
|
| TEST_F(MobileActivatorTest, OTASPScheduling) {
|
| const std::string error;
|
| for (size_t i = 0; i < kNumOTASPStates; ++i) {
|
| // When activation works, we start a timer to watch for success.
|
| - EXPECT_CALL(cellular_network_, StartActivation())
|
| + EXPECT_CALL(mobile_activator_, RequestCellularActivation(_, _, _))
|
| .Times(1)
|
| - .WillOnce(Return(true));
|
| + .WillOnce(Invoke(FakeRequestCellularActivationSuccess));
|
| EXPECT_CALL(mobile_activator_, StartOTASPTimer())
|
| - .Times(1);
|
| + .Times(1);
|
| set_activator_state(MobileActivator::PLAN_ACTIVATION_START);
|
| mobile_activator_.InvokeChangeState(&cellular_network_,
|
| kOTASPStates[i],
|
| error);
|
| +
|
| // When activation fails, it's an error, unless we're trying for the final
|
| // OTASP, in which case we try again via DELAY_OTASP.
|
| - EXPECT_CALL(cellular_network_, StartActivation())
|
| + EXPECT_CALL(mobile_activator_, RequestCellularActivation(_, _, _))
|
| .Times(1)
|
| - .WillOnce(Return(false));
|
| + .WillOnce(Invoke(FakeRequestCellularActivationFailure));
|
| if (kOTASPStates[i] == MobileActivator::PLAN_ACTIVATION_OTASP) {
|
| EXPECT_CALL(mobile_activator_, ChangeState(
|
| Eq(&cellular_network_),
|
| @@ -221,8 +249,8 @@ TEST_F(MobileActivatorTest, ReconnectOnDisconnectFromPaymentPortal) {
|
| // like when we're displaying the portal care quite a bit about going
|
| // offline. Lets test for those cases.
|
| std::string error_description;
|
| - set_connection_state(STATE_FAILURE);
|
| - set_network_activation_state(ACTIVATION_STATE_PARTIALLY_ACTIVATED);
|
| + set_connection_state(flimflam::kStateFailure);
|
| + set_network_activation_state(flimflam::kActivationStatePartiallyActivated);
|
| set_activator_state(MobileActivator::PLAN_ACTIVATION_PAYMENT_PORTAL_LOADING);
|
| EXPECT_EQ(MobileActivator::PLAN_ACTIVATION_RECONNECTING,
|
| mobile_activator_.PickNextState(&cellular_network_,
|
| @@ -234,10 +262,8 @@ TEST_F(MobileActivatorTest, ReconnectOnDisconnectFromPaymentPortal) {
|
| }
|
|
|
| TEST_F(MobileActivatorTest, StartAtStart) {
|
| - EXPECT_CALL(network_library_,
|
| - AddNetworkManagerObserver(Eq(&mobile_activator_)));
|
| - EXPECT_CALL(network_library_, HasRecentCellularPlanPayment()).
|
| - WillOnce(Return(false));
|
| + EXPECT_CALL(mobile_activator_, HasRecentCellularPlanPayment())
|
| + .WillOnce(Return(false));
|
| EXPECT_CALL(mobile_activator_,
|
| EvaluateCellularNetwork(Eq(&cellular_network_)));
|
| mobile_activator_.StartActivation();
|
|
|