Chromium Code Reviews| Index: chrome/browser/chromeos/net/network_portal_detector_impl.cc |
| diff --git a/chrome/browser/chromeos/net/network_portal_detector_impl.cc b/chrome/browser/chromeos/net/network_portal_detector_impl.cc |
| index e58698103d432c11710eb725c0029d14839210ee..b30b331c84410cd5a9462e4363a9c211f3125144 100644 |
| --- a/chrome/browser/chromeos/net/network_portal_detector_impl.cc |
| +++ b/chrome/browser/chromeos/net/network_portal_detector_impl.cc |
| @@ -13,6 +13,7 @@ |
| #include "base/metrics/histogram.h" |
| #include "base/strings/stringprintf.h" |
| #include "chrome/browser/chrome_notification_types.h" |
| +#include "chrome/browser/chromeos/net/network_portal_notification_controller.h" |
| #include "chromeos/dbus/dbus_thread_manager.h" |
| #include "chromeos/dbus/shill_profile_client.h" |
| #include "chromeos/login/login_state.h" |
| @@ -139,6 +140,32 @@ void RecordPortalToOnlineTransition(const base::TimeDelta& duration) { |
| } |
| } |
| +class NetworkPortalDetectorStubImpl : public NetworkPortalDetector { |
| + public: |
| + NetworkPortalDetectorStubImpl() {} |
| + ~NetworkPortalDetectorStubImpl() override {} |
| + |
| + private: |
| + // NetworkPortalDetector: |
| + void AddObserver(Observer* observer) override {} |
| + void AddAndFireObserver(Observer* observer) override { |
| + if (observer) |
| + observer->OnPortalDetectionCompleted(nullptr, CaptivePortalState()); |
| + } |
| + void RemoveObserver(Observer* observer) override {} |
| + CaptivePortalState GetCaptivePortalState( |
| + const std::string& service_path) override { |
| + return CaptivePortalState(); |
| + } |
| + bool IsEnabled() override { return false; } |
| + void Enable(bool start_detection) override {} |
| + bool StartDetectionIfIdle() override { return false; } |
| + void SetStrategy(PortalDetectorStrategy::StrategyId id) override {} |
| + void OnLockScreenRequest() override {} |
| + |
| + DISALLOW_COPY_AND_ASSIGN(NetworkPortalDetectorStubImpl); |
| +}; |
| + |
| } // namespace |
| //////////////////////////////////////////////////////////////////////////////// |
| @@ -207,36 +234,37 @@ const char NetworkPortalDetectorImpl::kSessionPortalToOnlineHistogram[] = |
| "CaptivePortal.Session.PortalToOnlineTransition"; |
| // static |
| -void NetworkPortalDetectorImpl::Initialize( |
| +void NetworkPortalDetector::Initialize( |
|
stevenjb
2015/09/17 20:45:52
I don't feel strongly about this, but I think this
achuithb
2015/09/17 22:03:32
I can move the stub impl to it's own file, but it'
stevenjb
2015/09/18 22:04:09
We can't implement a NetworkPortalDetector method
achuithb
2015/09/22 17:37:23
ok, I've created the stub files and reverted these
|
| net::URLRequestContextGetter* url_context) { |
| - if (NetworkPortalDetector::set_for_testing()) |
| + if (set_for_testing_) |
| return; |
| - CHECK(!NetworkPortalDetector::network_portal_detector()) |
| + CHECK(!network_portal_detector_) |
| << "NetworkPortalDetector was initialized twice."; |
| NET_LOG(EVENT) << "NetworkPortalDetectorImpl::Initialize()"; |
| if (base::CommandLine::ForCurrentProcess()->HasSwitch(::switches::kTestType)) |
| - set_network_portal_detector(new NetworkPortalDetectorStubImpl()); |
| + network_portal_detector_ = new NetworkPortalDetectorStubImpl(); |
| else |
| - set_network_portal_detector(new NetworkPortalDetectorImpl(url_context)); |
| + network_portal_detector_ = new NetworkPortalDetectorImpl(url_context, true); |
| } |
| NetworkPortalDetectorImpl::NetworkPortalDetectorImpl( |
| - const scoped_refptr<net::URLRequestContextGetter>& request_context) |
| - : state_(STATE_IDLE), |
| - test_url_(CaptivePortalDetector::kDefaultURL), |
| - enabled_(false), |
| + const scoped_refptr<net::URLRequestContextGetter>& request_context, |
| + bool create_notification_controller) |
| + : test_url_(CaptivePortalDetector::kDefaultURL), |
| strategy_(PortalDetectorStrategy::CreateById( |
| PortalDetectorStrategy::STRATEGY_ID_LOGIN_SCREEN, |
| this)), |
| - last_detection_result_(CAPTIVE_PORTAL_STATUS_UNKNOWN), |
| - same_detection_result_count_(0), |
| - no_response_result_count_(0), |
| weak_factory_(this) { |
| NET_LOG(EVENT) << "NetworkPortalDetectorImpl::NetworkPortalDetectorImpl()"; |
| captive_portal_detector_.reset(new CaptivePortalDetector(request_context)); |
| - notification_controller_.set_retry_detection_callback(base::Bind( |
| - &NetworkPortalDetectorImpl::RetryDetection, base::Unretained(this))); |
| + if (create_notification_controller) { |
| + notification_controller_.reset( |
| + new NetworkPortalNotificationController(this)); |
| + notification_controller_->set_retry_detection_callback( |
| + base::Bind(&NetworkPortalDetectorImpl::RetryDetection, |
| + weak_factory_.GetWeakPtr())); |
| + } |
| registrar_.Add(this, |
| chrome::NOTIFICATION_LOGIN_PROXY_CHANGED, |
| @@ -337,14 +365,14 @@ void NetworkPortalDetectorImpl::SetStrategy( |
| } |
| void NetworkPortalDetectorImpl::OnLockScreenRequest() { |
| - notification_controller_.CloseDialog(); |
| + if (notification_controller_.get()) |
|
stevenjb
2015/09/17 20:45:52
nit: if (notification_controller_)
achuithb
2015/09/17 22:03:32
Done.
|
| + notification_controller_->CloseDialog(); |
| } |
| void NetworkPortalDetectorImpl::DefaultNetworkChanged( |
| const NetworkState* default_network) { |
| DCHECK(CalledOnValidThread()); |
| - notification_controller_.DefaultNetworkChanged(default_network); |
| if (!default_network) { |
| NET_LOG(EVENT) << "Default network changed: None"; |
| @@ -354,7 +382,7 @@ void NetworkPortalDetectorImpl::DefaultNetworkChanged( |
| CaptivePortalState state; |
| state.status = CAPTIVE_PORTAL_STATUS_OFFLINE; |
| - OnDetectionCompleted(NULL, state); |
| + OnDetectionCompleted(nullptr, state); |
| return; |
| } |
| @@ -608,7 +636,6 @@ void NetworkPortalDetectorImpl::NotifyDetectionCompleted( |
| const CaptivePortalState& state) { |
| FOR_EACH_OBSERVER( |
| Observer, observers_, OnPortalDetectionCompleted(network, state)); |
| - notification_controller_.OnPortalDetectionCompleted(network, state); |
| } |
| bool NetworkPortalDetectorImpl::AttemptTimeoutIsCancelledForTesting() const { |