Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(653)

Side by Side Diff: chromeos/components/tether/host_scan_cache_unittest.cc

Issue 2915833003: Tether: Break helper TimerFactory out of BleConnectionManager and HostScanCache. (Closed)
Patch Set: khorimoto@ comments. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 #include "chromeos/components/tether/host_scan_cache.h" 5 #include "chromeos/components/tether/host_scan_cache.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <unordered_map> 8 #include <unordered_map>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/callback.h" 11 #include "base/callback.h"
12 #include "base/memory/ptr_util.h" 12 #include "base/memory/ptr_util.h"
13 #include "base/test/scoped_task_environment.h" 13 #include "base/test/scoped_task_environment.h"
14 #include "base/timer/mock_timer.h" 14 #include "base/timer/mock_timer.h"
15 #include "chromeos/components/tether/device_id_tether_network_guid_map.h" 15 #include "chromeos/components/tether/device_id_tether_network_guid_map.h"
16 #include "chromeos/components/tether/fake_active_host.h" 16 #include "chromeos/components/tether/fake_active_host.h"
17 #include "chromeos/components/tether/fake_host_scan_cache.h" 17 #include "chromeos/components/tether/fake_host_scan_cache.h"
18 #include "chromeos/components/tether/mock_tether_host_response_recorder.h" 18 #include "chromeos/components/tether/mock_tether_host_response_recorder.h"
19 #include "chromeos/components/tether/timer_factory.h"
19 #include "chromeos/dbus/dbus_thread_manager.h" 20 #include "chromeos/dbus/dbus_thread_manager.h"
20 #include "chromeos/network/network_state.h" 21 #include "chromeos/network/network_state.h"
21 #include "chromeos/network/network_state_handler.h" 22 #include "chromeos/network/network_state_handler.h"
22 #include "chromeos/network/network_state_test.h" 23 #include "chromeos/network/network_state_test.h"
23 #include "testing/gmock/include/gmock/gmock.h" 24 #include "testing/gmock/include/gmock/gmock.h"
24 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
25 26
26 using testing::NiceMock; 27 using testing::NiceMock;
27 using testing::Invoke; 28 using testing::Invoke;
28 29
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 explicit ExtendedMockTimer(const base::Closure& destructor_callback) 64 explicit ExtendedMockTimer(const base::Closure& destructor_callback)
64 : base::MockTimer(true /* retain_user_task */, false /* is_repeating */), 65 : base::MockTimer(true /* retain_user_task */, false /* is_repeating */),
65 destructor_callback_(destructor_callback) {} 66 destructor_callback_(destructor_callback) {}
66 67
67 ~ExtendedMockTimer() override { destructor_callback_.Run(); } 68 ~ExtendedMockTimer() override { destructor_callback_.Run(); }
68 69
69 private: 70 private:
70 base::Closure destructor_callback_; 71 base::Closure destructor_callback_;
71 }; 72 };
72 73
74 class TestTimerFactory : public TimerFactory {
75 public:
76 TestTimerFactory() {}
77 ~TestTimerFactory() override {}
78
79 std::unordered_map<std::string, ExtendedMockTimer*>&
80 tether_network_guid_to_timer_map() {
81 return tether_network_guid_to_timer_map_;
82 }
83
84 void set_tether_network_guid_for_next_timer(
85 const std::string& tether_network_guid_for_next_timer) {
86 tether_network_guid_for_next_timer_ = tether_network_guid_for_next_timer;
87 }
88
89 // TimerFactory:
90 std::unique_ptr<base::Timer> CreateOneShotTimer() override {
91 EXPECT_FALSE(tether_network_guid_for_next_timer_.empty());
92 ExtendedMockTimer* mock_timer = new ExtendedMockTimer(base::Bind(
93 &TestTimerFactory::OnActiveTimerDestructor, base::Unretained(this),
94 tether_network_guid_for_next_timer_));
95 tether_network_guid_to_timer_map_[tether_network_guid_for_next_timer_] =
96 mock_timer;
97 return base::WrapUnique(mock_timer);
98 }
99
100 private:
101 void OnActiveTimerDestructor(const std::string& tether_network_guid) {
102 tether_network_guid_to_timer_map_.erase(
103 tether_network_guid_to_timer_map_.find(tether_network_guid));
104 }
105
106 std::string tether_network_guid_for_next_timer_;
107 std::unordered_map<std::string, ExtendedMockTimer*>
108 tether_network_guid_to_timer_map_;
109 };
110
73 } // namespace 111 } // namespace
74 112
75 // TODO(khorimoto): The test uses a FakeHostScanCache to keep an in-memory 113 // TODO(khorimoto): The test uses a FakeHostScanCache to keep an in-memory
76 // cache of expected values. This has the potential to be confusing, since this 114 // cache of expected values. This has the potential to be confusing, since this
77 // is the test for HostScanCache. Clean this up to avoid using FakeHostScanCache 115 // is the test for HostScanCache. Clean this up to avoid using FakeHostScanCache
78 // if possible. 116 // if possible.
79 class HostScanCacheTest : public NetworkStateTest { 117 class HostScanCacheTest : public NetworkStateTest {
80 protected: 118 protected:
81 class TestTimerFactory : public HostScanCache::TimerFactory {
82 public:
83 TestTimerFactory() {}
84 ~TestTimerFactory() {}
85
86 std::unordered_map<std::string, ExtendedMockTimer*>&
87 tether_network_guid_to_timer_map() {
88 return tether_network_guid_to_timer_map_;
89 }
90
91 void set_tether_network_guid_for_next_timer(
92 const std::string& tether_network_guid_for_next_timer) {
93 tether_network_guid_for_next_timer_ = tether_network_guid_for_next_timer;
94 }
95
96 // HostScanCache::TimerFactory:
97 std::unique_ptr<base::Timer> CreateOneShotTimer() override {
98 EXPECT_FALSE(tether_network_guid_for_next_timer_.empty());
99 ExtendedMockTimer* mock_timer = new ExtendedMockTimer(base::Bind(
100 &TestTimerFactory::OnActiveTimerDestructor, base::Unretained(this),
101 tether_network_guid_for_next_timer_));
102 tether_network_guid_to_timer_map_[tether_network_guid_for_next_timer_] =
103 mock_timer;
104 return base::WrapUnique(mock_timer);
105 }
106
107 private:
108 void OnActiveTimerDestructor(const std::string& tether_network_guid) {
109 tether_network_guid_to_timer_map_.erase(
110 tether_network_guid_to_timer_map_.find(tether_network_guid));
111 }
112
113 std::string tether_network_guid_for_next_timer_;
114 std::unordered_map<std::string, ExtendedMockTimer*>
115 tether_network_guid_to_timer_map_;
116 };
117
118 HostScanCacheTest() {} 119 HostScanCacheTest() {}
119 120
120 void SetUp() override { 121 void SetUp() override {
121 DBusThreadManager::Initialize(); 122 DBusThreadManager::Initialize();
122 NetworkStateTest::SetUp(); 123 NetworkStateTest::SetUp();
123 network_state_handler()->SetTetherTechnologyState( 124 network_state_handler()->SetTetherTechnologyState(
124 NetworkStateHandler::TECHNOLOGY_ENABLED); 125 NetworkStateHandler::TECHNOLOGY_ENABLED);
125 126
126 test_timer_factory_ = new TestTimerFactory(); 127 test_timer_factory_ = new TestTimerFactory();
127 fake_active_host_ = base::MakeUnique<FakeActiveHost>(); 128 fake_active_host_ = base::MakeUnique<FakeActiveHost>();
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 439
439 // Simulate a connection to device 1. 440 // Simulate a connection to device 1.
440 SetActiveHost(kTetherGuid1); 441 SetActiveHost(kTetherGuid1);
441 SetHasConnectedToHost(kTetherGuid1); 442 SetHasConnectedToHost(kTetherGuid1);
442 VerifyCacheMatchesNetworkStack(); 443 VerifyCacheMatchesNetworkStack();
443 } 444 }
444 445
445 } // namespace tether 446 } // namespace tether
446 447
447 } // namespace chromeos 448 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/components/tether/host_scan_cache.cc ('k') | chromeos/components/tether/timer_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698