| Index: chromeos/pairing/fake_controller_pairing_controller.cc
|
| diff --git a/chromeos/pairing/fake_controller_pairing_controller.cc b/chromeos/pairing/fake_controller_pairing_controller.cc
|
| deleted file mode 100644
|
| index 6be3c90b0272ebe08a4e67f06c739f3aff758004..0000000000000000000000000000000000000000
|
| --- a/chromeos/pairing/fake_controller_pairing_controller.cc
|
| +++ /dev/null
|
| @@ -1,335 +0,0 @@
|
| -// Copyright 2014 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 "chromeos/pairing/fake_controller_pairing_controller.h"
|
| -
|
| -#include <map>
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/logging.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "base/rand_util.h"
|
| -#include "base/strings/string_number_conversions.h"
|
| -#include "base/strings/string_split.h"
|
| -#include "base/strings/string_util.h"
|
| -
|
| -namespace chromeos {
|
| -
|
| -FakeControllerPairingController::FakeControllerPairingController(
|
| - const std::string& config)
|
| - : current_stage_(STAGE_NONE),
|
| - should_fail_on_connecting_(false),
|
| - connection_lost_begin_(STAGE_NONE),
|
| - connection_lost_end_(STAGE_NONE),
|
| - enrollment_should_fail_(false) {
|
| - ApplyConfig(config);
|
| - AddObserver(this);
|
| -}
|
| -
|
| -FakeControllerPairingController::~FakeControllerPairingController() {
|
| - RemoveObserver(this);
|
| -}
|
| -
|
| -void FakeControllerPairingController::ApplyConfig(const std::string& config) {
|
| - typedef std::vector<std::string> Tokens;
|
| -
|
| - base::StringPairs kv_pairs;
|
| - CHECK(base::SplitStringIntoKeyValuePairs(config, ':', ',', &kv_pairs))
|
| - << "Wrong config format.";
|
| - std::map<std::string, std::string> dict(kv_pairs.begin(), kv_pairs.end());
|
| -
|
| - if (dict.count("async_duration")) {
|
| - int ms = 0;
|
| - CHECK(base::StringToInt(dict["async_duration"], &ms))
|
| - << "Wrong 'async_duration' format.";
|
| - async_duration_ = base::TimeDelta::FromMilliseconds(ms);
|
| - } else {
|
| - async_duration_ = base::TimeDelta::FromMilliseconds(3000);
|
| - }
|
| -
|
| - should_fail_on_connecting_ =
|
| - dict.count("fail_connecting") && (dict["fail_connecting"] == "1");
|
| -
|
| - enrollment_should_fail_ =
|
| - dict.count("fail_enrollment") && (dict["fail_enrollment"] == "1");
|
| -
|
| - if (dict.count("connection_lost")) {
|
| - Tokens lost_begin_end;
|
| - CHECK(Tokenize(dict["connection_lost"], "-", &lost_begin_end) == 2)
|
| - << "Wrong 'connection_lost' format.";
|
| - int begin = 0;
|
| - int end = 0;
|
| - CHECK(base::StringToInt(lost_begin_end[0], &begin) &&
|
| - base::StringToInt(lost_begin_end[1], &end))
|
| - << "Wrong 'connection_lost' format.";
|
| - CHECK((begin == 0 && end == 0) ||
|
| - (STAGE_WAITING_FOR_CODE_CONFIRMATION <= begin && begin <= end &&
|
| - end <= STAGE_HOST_ENROLLMENT_ERROR))
|
| - << "Wrong 'connection_lost' interval.";
|
| - connection_lost_begin_ = static_cast<Stage>(begin);
|
| - connection_lost_end_ = static_cast<Stage>(end);
|
| - } else {
|
| - connection_lost_begin_ = connection_lost_end_ = STAGE_NONE;
|
| - }
|
| -
|
| - if (!dict.count("discovery")) {
|
| - dict["discovery"] =
|
| - "F-Device_1~F-Device_5~F-Device_3~L-Device_3~L-Device_1~F-Device_1";
|
| - }
|
| - base::StringPairs events;
|
| - CHECK(
|
| - base::SplitStringIntoKeyValuePairs(dict["discovery"], '-', '~', &events))
|
| - << "Wrong 'discovery' format.";
|
| - DiscoveryScenario scenario;
|
| - for (base::StringPairs::const_iterator event = events.begin();
|
| - event != events.end();
|
| - ++event) {
|
| - std::string type = event->first;
|
| - std::string device_id = event->second;
|
| - CHECK(type == "F" || type == "L" || type == "N")
|
| - << "Wrong discovery event type.";
|
| - CHECK(!device_id.empty() || type == "N") << "Empty device ID.";
|
| - scenario.push_back(DiscoveryEvent(
|
| - type == "F" ? DEVICE_FOUND : type == "L" ? DEVICE_LOST : NOTHING_FOUND,
|
| - device_id));
|
| - }
|
| - SetDiscoveryScenario(scenario);
|
| -
|
| - preset_confirmation_code_ = dict["code"];
|
| - CHECK(preset_confirmation_code_.empty() ||
|
| - (preset_confirmation_code_.length() == 6 &&
|
| - preset_confirmation_code_.find_first_not_of("0123456789") ==
|
| - std::string::npos))
|
| - << "Wrong 'code' format.";
|
| -}
|
| -
|
| -void FakeControllerPairingController::SetShouldFailOnConnecting() {
|
| - should_fail_on_connecting_ = true;
|
| -}
|
| -
|
| -void FakeControllerPairingController::SetShouldLoseConnection(Stage stage_begin,
|
| - Stage stage_end) {
|
| - connection_lost_begin_ = stage_begin;
|
| - connection_lost_end_ = stage_end;
|
| -}
|
| -
|
| -void FakeControllerPairingController::SetEnrollmentShouldFail() {
|
| - enrollment_should_fail_ = true;
|
| -}
|
| -
|
| -void FakeControllerPairingController::SetDiscoveryScenario(
|
| - const DiscoveryScenario& discovery_scenario) {
|
| - discovery_scenario_ = discovery_scenario;
|
| - // Check that scenario is valid.
|
| - std::set<std::string> devices;
|
| - for (DiscoveryScenario::const_iterator event = discovery_scenario_.begin();
|
| - event != discovery_scenario_.end();
|
| - ++event) {
|
| - switch (event->first) {
|
| - case DEVICE_FOUND: {
|
| - devices.insert(event->second);
|
| - break;
|
| - }
|
| - case DEVICE_LOST: {
|
| - CHECK(devices.count(event->second));
|
| - devices.erase(event->second);
|
| - break;
|
| - }
|
| - case NOTHING_FOUND: {
|
| - CHECK(++event == discovery_scenario_.end());
|
| - return;
|
| - }
|
| - }
|
| - }
|
| -}
|
| -
|
| -void FakeControllerPairingController::AddObserver(Observer* observer) {
|
| - observers_.AddObserver(observer);
|
| -}
|
| -
|
| -void FakeControllerPairingController::RemoveObserver(Observer* observer) {
|
| - observers_.RemoveObserver(observer);
|
| -}
|
| -
|
| -ControllerPairingController::Stage
|
| -FakeControllerPairingController::GetCurrentStage() {
|
| - return current_stage_;
|
| -}
|
| -
|
| -void FakeControllerPairingController::StartPairing() {
|
| - CHECK(current_stage_ == STAGE_NONE);
|
| - ChangeStage(STAGE_DEVICES_DISCOVERY);
|
| -}
|
| -
|
| -ControllerPairingController::DeviceIdList
|
| -FakeControllerPairingController::GetDiscoveredDevices() {
|
| - CHECK(current_stage_ == STAGE_DEVICES_DISCOVERY);
|
| - return DeviceIdList(discovered_devices_.begin(), discovered_devices_.end());
|
| -}
|
| -
|
| -void FakeControllerPairingController::ChooseDeviceForPairing(
|
| - const std::string& device_id) {
|
| - CHECK(current_stage_ == STAGE_DEVICES_DISCOVERY);
|
| - CHECK(discovered_devices_.count(device_id));
|
| - choosen_device_ = device_id;
|
| - ChangeStage(STAGE_ESTABLISHING_CONNECTION);
|
| -}
|
| -
|
| -void FakeControllerPairingController::RepeatDiscovery() {
|
| - CHECK(current_stage_ == STAGE_DEVICE_NOT_FOUND ||
|
| - current_stage_ == STAGE_ESTABLISHING_CONNECTION_ERROR ||
|
| - current_stage_ == STAGE_HOST_ENROLLMENT_ERROR);
|
| - ChangeStage(STAGE_DEVICES_DISCOVERY);
|
| -}
|
| -
|
| -std::string FakeControllerPairingController::GetConfirmationCode() {
|
| - CHECK(current_stage_ == STAGE_WAITING_FOR_CODE_CONFIRMATION);
|
| - if (confirmation_code_.empty()) {
|
| - if (preset_confirmation_code_.empty()) {
|
| - for (int i = 0; i < 6; ++i)
|
| - confirmation_code_.push_back(base::RandInt('0', '9'));
|
| - } else {
|
| - confirmation_code_ = preset_confirmation_code_;
|
| - }
|
| - }
|
| - return confirmation_code_;
|
| -}
|
| -
|
| -void FakeControllerPairingController::SetConfirmationCodeIsCorrect(
|
| - bool correct) {
|
| - CHECK(current_stage_ == STAGE_WAITING_FOR_CODE_CONFIRMATION);
|
| - if (correct)
|
| - ChangeStage(STAGE_HOST_UPDATE_IN_PROGRESS);
|
| - else
|
| - ChangeStage(STAGE_DEVICES_DISCOVERY);
|
| -}
|
| -
|
| -void FakeControllerPairingController::OnAuthenticationDone(
|
| - const chromeos::UserContext& user_context,
|
| - content::BrowserContext* browser_context) {
|
| - CHECK(current_stage_ == STAGE_WAITING_FOR_CREDENTIALS);
|
| - ChangeStage(STAGE_HOST_ENROLLMENT_IN_PROGRESS);
|
| -}
|
| -
|
| -void FakeControllerPairingController::StartSession() {
|
| - CHECK(current_stage_ == STAGE_PAIRING_DONE);
|
| - ChangeStage(STAGE_FINISHED);
|
| -}
|
| -
|
| -void FakeControllerPairingController::ChangeStage(Stage new_stage) {
|
| - if (current_stage_ == new_stage)
|
| - return;
|
| - current_stage_ = new_stage;
|
| - FOR_EACH_OBSERVER(Observer, observers_, PairingStageChanged(new_stage));
|
| -}
|
| -
|
| -void FakeControllerPairingController::ChangeStageLater(Stage new_stage) {
|
| - base::MessageLoop::current()->PostDelayedTask(
|
| - FROM_HERE,
|
| - base::Bind(&FakeControllerPairingController::ChangeStage,
|
| - base::Unretained(this),
|
| - new_stage),
|
| - async_duration_);
|
| -}
|
| -
|
| -void FakeControllerPairingController::ExecuteDiscoveryEvent(
|
| - size_t event_position) {
|
| - if (current_stage_ != STAGE_DEVICES_DISCOVERY)
|
| - return;
|
| - CHECK(event_position < discovery_scenario_.size());
|
| - const DiscoveryEvent& event = discovery_scenario_[event_position];
|
| - switch (event.first) {
|
| - case DEVICE_FOUND: {
|
| - DeviceFound(event.second);
|
| - break;
|
| - }
|
| - case DEVICE_LOST: {
|
| - DeviceLost(event.second);
|
| - break;
|
| - }
|
| - case NOTHING_FOUND: {
|
| - ChangeStage(STAGE_DEVICE_NOT_FOUND);
|
| - break;
|
| - }
|
| - }
|
| - if (++event_position == discovery_scenario_.size()) {
|
| - return;
|
| - }
|
| - base::MessageLoop::current()->PostDelayedTask(
|
| - FROM_HERE,
|
| - base::Bind(&FakeControllerPairingController::ExecuteDiscoveryEvent,
|
| - base::Unretained(this),
|
| - event_position),
|
| - async_duration_);
|
| -}
|
| -
|
| -void FakeControllerPairingController::DeviceFound(
|
| - const std::string& device_id) {
|
| - CHECK(current_stage_ == STAGE_DEVICES_DISCOVERY);
|
| - discovered_devices_.insert(device_id);
|
| - FOR_EACH_OBSERVER(Observer, observers_, DiscoveredDevicesListChanged());
|
| -}
|
| -
|
| -void FakeControllerPairingController::DeviceLost(const std::string& device_id) {
|
| - CHECK(current_stage_ == STAGE_DEVICES_DISCOVERY);
|
| - discovered_devices_.erase(device_id);
|
| - FOR_EACH_OBSERVER(Observer, observers_, DiscoveredDevicesListChanged());
|
| -}
|
| -
|
| -void FakeControllerPairingController::PairingStageChanged(Stage new_stage) {
|
| - Stage next_stage = STAGE_NONE;
|
| - switch (new_stage) {
|
| - case STAGE_DEVICES_DISCOVERY: {
|
| - discovered_devices_.clear();
|
| - base::MessageLoop::current()->PostDelayedTask(
|
| - FROM_HERE,
|
| - base::Bind(&FakeControllerPairingController::ExecuteDiscoveryEvent,
|
| - base::Unretained(this),
|
| - 0),
|
| - async_duration_);
|
| - break;
|
| - }
|
| - case STAGE_ESTABLISHING_CONNECTION: {
|
| - if (should_fail_on_connecting_) {
|
| - next_stage = STAGE_ESTABLISHING_CONNECTION_ERROR;
|
| - should_fail_on_connecting_ = false;
|
| - } else {
|
| - confirmation_code_.clear();
|
| - next_stage = STAGE_WAITING_FOR_CODE_CONFIRMATION;
|
| - }
|
| - break;
|
| - }
|
| - case STAGE_HOST_UPDATE_IN_PROGRESS: {
|
| - next_stage = STAGE_WAITING_FOR_CREDENTIALS;
|
| - break;
|
| - }
|
| - case STAGE_HOST_ENROLLMENT_IN_PROGRESS: {
|
| - if (enrollment_should_fail_) {
|
| - enrollment_should_fail_ = false;
|
| - next_stage = STAGE_HOST_ENROLLMENT_ERROR;
|
| - } else {
|
| - next_stage = STAGE_PAIRING_DONE;
|
| - }
|
| - break;
|
| - }
|
| - case STAGE_HOST_CONNECTION_LOST: {
|
| - next_stage = connection_lost_end_;
|
| - connection_lost_end_ = STAGE_NONE;
|
| - break;
|
| - }
|
| - default:
|
| - break;
|
| - }
|
| - if (new_stage == connection_lost_begin_) {
|
| - connection_lost_begin_ = STAGE_NONE;
|
| - next_stage = STAGE_HOST_CONNECTION_LOST;
|
| - }
|
| - if (next_stage != STAGE_NONE)
|
| - ChangeStageLater(next_stage);
|
| -}
|
| -
|
| -void FakeControllerPairingController::DiscoveredDevicesListChanged() {
|
| -}
|
| -
|
| -} // namespace chromeos
|
|
|