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

Unified Diff: chrome/browser/chromeos/mobile/mobile_activator_unittest.cc

Issue 22611005: Switch over MobileActivator to use Network*Handler (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix state machine + unit tests in the new world Created 7 years, 4 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: 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();

Powered by Google App Engine
This is Rietveld 408576698