| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROMEOS_COMPONENTS_TETHER_HOST_SCAN_SCHEDULER_H | 5 #ifndef CHROMEOS_COMPONENTS_TETHER_HOST_SCAN_SCHEDULER_H |
| 6 #define CHROMEOS_COMPONENTS_TETHER_HOST_SCAN_SCHEDULER_H | 6 #define CHROMEOS_COMPONENTS_TETHER_HOST_SCAN_SCHEDULER_H |
| 7 | 7 |
| 8 #include "chromeos/dbus/power_manager_client.h" | 8 #include "chromeos/dbus/power_manager_client.h" |
| 9 #include "chromeos/login/login_state.h" | 9 #include "chromeos/login/login_state.h" |
| 10 #include "chromeos/network/network_state_handler_observer.h" | 10 #include "chromeos/network/network_state_handler_observer.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 class LoginState; | 23 class LoginState; |
| 24 class PowerManagerClient; | 24 class PowerManagerClient; |
| 25 | 25 |
| 26 namespace tether { | 26 namespace tether { |
| 27 | 27 |
| 28 class HostScanner; | 28 class HostScanner; |
| 29 | 29 |
| 30 // Schedules scans for tether hosts. To start a scan attempt, three conditions | 30 // Schedules scans for tether hosts. To start a scan attempt, three conditions |
| 31 // must be true: | 31 // must be true: |
| 32 // | 32 // |
| 33 // (1) The user has just started using the device; specifically, the user has | 33 // (1) The user has just logged in or has just resumed using the device after |
| 34 // just logged in or has just resumed using the device after it had been | 34 // it had been sleeping/suspended. |
| 35 // sleeping/suspended. | |
| 36 // (2) The device does not have an Internet connection. | 35 // (2) The device does not have an Internet connection. |
| 37 // (3) The device has synced data about other devices belonging to the user's | 36 // (3) The device has synced data about other devices belonging to the user's |
| 38 // account, and at least one of those devices is capable of being a tether | 37 // account, and at least one of those devices is capable of being a tether |
| 39 // host (i.e., it has a mobile data connection). | 38 // host (i.e., it has a mobile data connection). |
| 40 // | 39 // |
| 41 // When one of those conditions changes, this class checks the conditions and | 40 // When one of those conditions changes, this class checks the conditions and |
| 42 // starts a scan automatically. Alternatively, a scan can be explicitly | 41 // starts a scan automatically. Alternatively, a scan can be explicitly |
| 43 // triggered via ScheduleScanNowIfPossible(). | 42 // triggered via ScheduleScanNowIfPossible(). |
| 44 class HostScanScheduler : public LoginState::Observer, | 43 class HostScanScheduler : public LoginState::Observer, |
| 45 public PowerManagerClient::Observer, | 44 public PowerManagerClient::Observer, |
| (...skipping 22 matching lines...) Expand all Loading... |
| 68 void NetworkConnectionStateChanged(const NetworkState* network) override; | 67 void NetworkConnectionStateChanged(const NetworkState* network) override; |
| 69 | 68 |
| 70 // cryptauth::CryptAuthDeviceManager::Observer | 69 // cryptauth::CryptAuthDeviceManager::Observer |
| 71 void OnSyncFinished(cryptauth::CryptAuthDeviceManager::SyncResult sync_result, | 70 void OnSyncFinished(cryptauth::CryptAuthDeviceManager::SyncResult sync_result, |
| 72 cryptauth::CryptAuthDeviceManager::DeviceChangeResult | 71 cryptauth::CryptAuthDeviceManager::DeviceChangeResult |
| 73 device_change_result) override; | 72 device_change_result) override; |
| 74 | 73 |
| 75 private: | 74 private: |
| 76 friend class HostScanSchedulerTest; | 75 friend class HostScanSchedulerTest; |
| 77 | 76 |
| 78 class Context { | 77 class Delegate { |
| 79 public: | 78 public: |
| 80 virtual void AddObserver(HostScanScheduler* host_scan_scheduler) = 0; | 79 virtual void AddObserver(HostScanScheduler* host_scan_scheduler) = 0; |
| 81 virtual void RemoveObserver(HostScanScheduler* host_scan_scheduler) = 0; | 80 virtual void RemoveObserver(HostScanScheduler* host_scan_scheduler) = 0; |
| 82 virtual bool IsAuthenticatedUserLoggedIn() const = 0; | 81 virtual bool IsAuthenticatedUserLoggedIn() const = 0; |
| 83 virtual bool IsNetworkConnectedOrConnecting() const = 0; | 82 virtual bool IsNetworkConnectedOrConnecting() const = 0; |
| 84 virtual bool AreTetherHostsSynced() const = 0; | 83 virtual bool AreTetherHostsSynced() const = 0; |
| 85 }; | 84 }; |
| 86 | 85 |
| 87 class ContextImpl : public Context { | 86 class DelegateImpl : public Delegate { |
| 88 public: | 87 public: |
| 89 ContextImpl(const content::BrowserContext* browser_context); | 88 DelegateImpl(const content::BrowserContext* browser_context); |
| 90 | 89 |
| 91 void AddObserver(HostScanScheduler* host_scan_scheduler) override; | 90 void AddObserver(HostScanScheduler* host_scan_scheduler) override; |
| 92 void RemoveObserver(HostScanScheduler* host_scan_scheduler) override; | 91 void RemoveObserver(HostScanScheduler* host_scan_scheduler) override; |
| 93 bool IsAuthenticatedUserLoggedIn() const override; | 92 bool IsAuthenticatedUserLoggedIn() const override; |
| 94 bool IsNetworkConnectedOrConnecting() const override; | 93 bool IsNetworkConnectedOrConnecting() const override; |
| 95 bool AreTetherHostsSynced() const override; | 94 bool AreTetherHostsSynced() const override; |
| 96 }; | 95 }; |
| 97 | 96 |
| 98 HostScanScheduler(std::unique_ptr<Context> context_, | 97 HostScanScheduler(std::unique_ptr<Delegate> delegate, |
| 99 std::unique_ptr<HostScanner> host_scanner); | 98 std::unique_ptr<HostScanner> host_scanner); |
| 100 | 99 |
| 101 std::unique_ptr<Context> context_; | 100 std::unique_ptr<Delegate> delegate_; |
| 102 std::unique_ptr<HostScanner> host_scanner_; | 101 std::unique_ptr<HostScanner> host_scanner_; |
| 103 bool initialized_; | 102 bool initialized_; |
| 104 | 103 |
| 105 DISALLOW_COPY_AND_ASSIGN(HostScanScheduler); | 104 DISALLOW_COPY_AND_ASSIGN(HostScanScheduler); |
| 106 }; | 105 }; |
| 107 | 106 |
| 108 } // namespace tether | 107 } // namespace tether |
| 109 | 108 |
| 110 } // namespace chromeos | 109 } // namespace chromeos |
| 111 | 110 |
| 112 #endif // CHROMEOS_COMPONENTS_TETHER_HOST_SCAN_SCHEDULER_H | 111 #endif // CHROMEOS_COMPONENTS_TETHER_HOST_SCAN_SCHEDULER_H |
| OLD | NEW |