1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h"
6
7#include "chromeos/network/network_state.h"
8
9namespace chromeos {
10
11NetworkPortalDetectorTestImpl::NetworkPortalDetectorTestImpl()
12    : strategy_id_(PortalDetectorStrategy::STRATEGY_ID_LOGIN_SCREEN) {
13}
14
15NetworkPortalDetectorTestImpl::~NetworkPortalDetectorTestImpl() {
16}
17
18void NetworkPortalDetectorTestImpl::SetDefaultNetworkForTesting(
19    const std::string& guid) {
20  DVLOG(1) << "SetDefaultNetworkForTesting: " << guid;
21  if (guid.empty()) {
22    default_network_.reset();
23  } else {
24    default_network_.reset(new NetworkState("/service/" + guid));
25    default_network_->SetGuid(guid);
26  }
27}
28
29void NetworkPortalDetectorTestImpl::SetDetectionResultsForTesting(
30    const std::string& guid,
31    const CaptivePortalState& state) {
32  DVLOG(1) << "SetDetectionResultsForTesting: " << guid << " = "
33           << NetworkPortalDetector::CaptivePortalStatusString(state.status);
34  if (!guid.empty())
35    portal_state_map_[guid] = state;
36}
37
38void NetworkPortalDetectorTestImpl::NotifyObserversForTesting() {
39  CaptivePortalState state;
40  if (default_network_ && portal_state_map_.count(default_network_->guid()))
41    state = portal_state_map_[default_network_->guid()];
42  FOR_EACH_OBSERVER(Observer, observers_,
43                    OnPortalDetectionCompleted(default_network_.get(), state));
44}
45
46void NetworkPortalDetectorTestImpl::AddObserver(Observer* observer) {
47  if (observer && !observers_.HasObserver(observer))
48    observers_.AddObserver(observer);
49}
50
51void NetworkPortalDetectorTestImpl::AddAndFireObserver(Observer* observer) {
52  AddObserver(observer);
53  if (!observer)
54    return;
55  if (!default_network_ || !portal_state_map_.count(default_network_->guid())) {
56    observer->OnPortalDetectionCompleted(default_network_.get(),
57                                         CaptivePortalState());
58  } else {
59    observer->OnPortalDetectionCompleted(
60        default_network_.get(), portal_state_map_[default_network_->guid()]);
61  }
62}
63
64void NetworkPortalDetectorTestImpl::RemoveObserver(Observer* observer) {
65  if (observer)
66    observers_.RemoveObserver(observer);
67}
68
69NetworkPortalDetector::CaptivePortalState
70NetworkPortalDetectorTestImpl::GetCaptivePortalState(
71    const std::string& guid) {
72  CaptivePortalStateMap::iterator it = portal_state_map_.find(guid);
73  if (it == portal_state_map_.end()) {
74    DVLOG(2) << "GetCaptivePortalState Not found: " << guid;
75    return CaptivePortalState();
76  }
77  DVLOG(2) << "GetCaptivePortalState: " << guid << " = "
78           << CaptivePortalStatusString(it->second.status);
79  return it->second;
80}
81
82bool NetworkPortalDetectorTestImpl::IsEnabled() {
83  return true;
84}
85
86void NetworkPortalDetectorTestImpl::Enable(bool start_detection) {
87}
88
89bool NetworkPortalDetectorTestImpl::StartDetectionIfIdle() {
90  return false;
91}
92
93void NetworkPortalDetectorTestImpl::SetStrategy(
94    PortalDetectorStrategy::StrategyId id) {
95  strategy_id_ = id;
96}
97
98}  // namespace chromeos
99