blob: 6fcbb3b4eb433a0472c82a1f392de30adcd1c719 [file] [log] [blame]
// 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/network/portal_detector/network_portal_detector.h"
#include "base/logging.h"
#include "components/device_event_log/device_event_log.h"
namespace chromeos {
namespace {
bool set_for_testing_ = false;
NetworkPortalDetector* network_portal_detector_ = nullptr;
const char kCaptivePortalStatusUnknown[] = "Unknown";
const char kCaptivePortalStatusOffline[] = "Offline";
const char kCaptivePortalStatusOnline[] = "Online";
const char kCaptivePortalStatusPortal[] = "Portal";
const char kCaptivePortalStatusProxyAuthRequired[] = "ProxyAuthRequired";
const char kCaptivePortalStatusUnrecognized[] = "Unrecognized";
} // namespace
// static
std::string NetworkPortalDetector::CaptivePortalStatusString(
CaptivePortalStatus status) {
switch (status) {
case CAPTIVE_PORTAL_STATUS_UNKNOWN:
return kCaptivePortalStatusUnknown;
case CAPTIVE_PORTAL_STATUS_OFFLINE:
return kCaptivePortalStatusOffline;
case CAPTIVE_PORTAL_STATUS_ONLINE:
return kCaptivePortalStatusOnline;
case CAPTIVE_PORTAL_STATUS_PORTAL:
return kCaptivePortalStatusPortal;
case CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED:
return kCaptivePortalStatusProxyAuthRequired;
case CAPTIVE_PORTAL_STATUS_COUNT:
NOTREACHED();
}
return kCaptivePortalStatusUnrecognized;
}
namespace network_portal_detector {
void InitializeForTesting(NetworkPortalDetector* network_portal_detector) {
if (network_portal_detector) {
CHECK(!set_for_testing_) << "InitializeForTesting is called twice";
delete network_portal_detector_;
network_portal_detector_ = network_portal_detector;
set_for_testing_ = true;
} else {
network_portal_detector_ = nullptr;
set_for_testing_ = false;
}
}
bool IsInitialized() {
return network_portal_detector_;
}
bool SetForTesting() {
return set_for_testing_;
}
void Shutdown() {
CHECK(network_portal_detector_ || set_for_testing_)
<< "Shutdown() called without Initialize()";
delete network_portal_detector_;
network_portal_detector_ = nullptr;
}
NetworkPortalDetector* GetInstance() {
CHECK(network_portal_detector_) << "GetInstance() called before Initialize()";
return network_portal_detector_;
}
void SetNetworkPortalDetector(NetworkPortalDetector* network_portal_detector) {
CHECK(!network_portal_detector_)
<< "NetworkPortalDetector was initialized twice.";
NET_LOG(EVENT) << "SetNetworkPortalDetector";
network_portal_detector_ = network_portal_detector;
}
} // namespace network_portal_detector
} // namespace chromeos