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

Side by Side Diff: chrome/browser/chromeos/login/bluetooth_host_pairing_browsertest.cc

Issue 2383953002: [Bootstrapping] Introduce an accelerator to put a ChromeOS device into Slave OOBE process. (Closed)
Patch Set: Address achuith@'s comments. Created 4 years, 2 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
« no previous file with comments | « no previous file | chrome/browser/chromeos/login/startup_utils.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "base/memory/ref_counted.h" 5 #include "base/memory/ref_counted.h"
6 #include "base/run_loop.h" 6 #include "base/run_loop.h"
7 #include "chrome/browser/chromeos/login/test/oobe_base_test.h" 7 #include "chrome/browser/chromeos/login/test/oobe_base_test.h"
8 #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h" 8 #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
9 #include "chrome/browser/chromeos/login/wizard_controller.h" 9 #include "chrome/browser/chromeos/login/wizard_controller.h"
10 #include "components/pairing/bluetooth_host_pairing_controller.h" 10 #include "components/pairing/bluetooth_host_pairing_controller.h"
(...skipping 27 matching lines...) Expand all
38 38
39 private: 39 private:
40 bool finished_ = false; 40 bool finished_ = false;
41 std::unique_ptr<base::RunLoop> run_loop_; 41 std::unique_ptr<base::RunLoop> run_loop_;
42 42
43 DISALLOW_COPY_AND_ASSIGN(TestDelegate); 43 DISALLOW_COPY_AND_ASSIGN(TestDelegate);
44 }; 44 };
45 45
46 } // namespace 46 } // namespace
47 47
48 class BluetoothHostPairingTest : public OobeBaseTest { 48 // This is the class to simulate the OOBE process for devices that don't have
49 // sufficient input, i.e., the first screen of OOBE is the HID detection screen.
50 // The device will put itself in Bluetooth discoverable mode.
51 class BluetoothHostPairingNoInputTest : public OobeBaseTest {
49 public: 52 public:
50 using InputDeviceInfo = device::InputServiceLinux::InputDeviceInfo; 53 using InputDeviceInfo = device::InputServiceLinux::InputDeviceInfo;
51 54
52 BluetoothHostPairingTest() { 55 BluetoothHostPairingNoInputTest() {
53 InputServiceProxy::SetThreadIdForTesting(content::BrowserThread::UI); 56 InputServiceProxy::SetThreadIdForTesting(content::BrowserThread::UI);
54 input_service_linux_.reset(new device::FakeInputServiceLinux); 57 input_service_linux_.reset(new device::FakeInputServiceLinux);
55 device::InputServiceLinux::SetForTesting(input_service_linux_.get()); 58 device::InputServiceLinux::SetForTesting(input_service_linux_.get());
56
57 AddUsbMouse();
58 AddUsbKeyboard();
59 } 59 }
60 ~BluetoothHostPairingTest() override {} 60 ~BluetoothHostPairingNoInputTest() override {}
61 61
62 // OobeBaseTest override: 62 // OobeBaseTest override:
63 void SetUpOnMainThread() override { 63 void SetUpOnMainThread() override {
64 OobeBaseTest::SetUpOnMainThread(); 64 OobeBaseTest::SetUpOnMainThread();
65 delegate_.reset(new TestDelegate); 65 delegate_.reset(new TestDelegate);
66 controller()->SetDelegateForTesting(delegate_.get()); 66 if (controller()) {
67 bluetooth_adapter_ = controller()->GetAdapterForTesting(); 67 controller()->SetDelegateForTesting(delegate_.get());
68 bluetooth_adapter_ = controller()->GetAdapterForTesting();
69 }
68 } 70 }
69 71
70 pairing_chromeos::BluetoothHostPairingController* controller() { 72 pairing_chromeos::BluetoothHostPairingController* controller() {
71 WizardController* wizard_controller = 73 pairing_chromeos::SharkConnectionListener* shark_listener =
72 WizardController::default_controller(); 74 WizardController::default_controller()
73 return wizard_controller->GetSharkConnectionListenerForTesting() 75 ->GetSharkConnectionListenerForTesting();
74 ->GetControllerForTesting(); 76 return shark_listener ? shark_listener->GetControllerForTesting() : nullptr;
75 } 77 }
76 78
77 device::BluetoothAdapter* bluetooth_adapter() { 79 device::BluetoothAdapter* bluetooth_adapter() {
78 return bluetooth_adapter_.get(); 80 return bluetooth_adapter_.get();
79 } 81 }
80 82
81 TestDelegate* delegate() { return delegate_.get(); } 83 TestDelegate* delegate() { return delegate_.get(); }
82 84
83 void AddUsbMouse() { 85 void AddUsbMouse() {
84 InputDeviceInfo mouse; 86 InputDeviceInfo mouse;
(...skipping 20 matching lines...) Expand all
105 mouse.type = InputDeviceInfo::TYPE_BLUETOOTH; 107 mouse.type = InputDeviceInfo::TYPE_BLUETOOTH;
106 mouse.is_mouse = true; 108 mouse.is_mouse = true;
107 input_service_linux_->AddDeviceForTesting(mouse); 109 input_service_linux_->AddDeviceForTesting(mouse);
108 } 110 }
109 111
110 private: 112 private:
111 std::unique_ptr<device::FakeInputServiceLinux> input_service_linux_; 113 std::unique_ptr<device::FakeInputServiceLinux> input_service_linux_;
112 scoped_refptr<device::BluetoothAdapter> bluetooth_adapter_; 114 scoped_refptr<device::BluetoothAdapter> bluetooth_adapter_;
113 std::unique_ptr<TestDelegate> delegate_; 115 std::unique_ptr<TestDelegate> delegate_;
114 116
115 DISALLOW_COPY_AND_ASSIGN(BluetoothHostPairingTest); 117 DISALLOW_COPY_AND_ASSIGN(BluetoothHostPairingNoInputTest);
116 }; 118 };
117 119
118 // Test that in normal user OOBE login flow, if there is no Bluetooth device 120 // Test that in normal user OOBE login flow for devices lacking input devices,
119 // connected, the Bluetooth adapter should be disabled when OOBE reaches login 121 // if there is no Bluetooth device connected, the Bluetooth adapter should be
120 // screen (which means OOBE has been completed). 122 // disabled when OOBE reaches login screen (which means OOBE has been completed)
121 IN_PROC_BROWSER_TEST_F(BluetoothHostPairingTest, NoBluetoothDeviceConnected) { 123 IN_PROC_BROWSER_TEST_F(BluetoothHostPairingNoInputTest,
122 OobeScreenWaiter(OobeScreen::SCREEN_OOBE_NETWORK).Wait(); 124 NoBluetoothDeviceConnected) {
125 OobeScreenWaiter(OobeScreen::SCREEN_OOBE_HID_DETECTION).Wait();
123 EXPECT_EQ(bluetooth_adapter()->IsPowered(), true); 126 EXPECT_EQ(bluetooth_adapter()->IsPowered(), true);
124 WizardController::default_controller()->SkipToLoginForTesting( 127 WizardController::default_controller()->SkipToLoginForTesting(
125 LoginScreenContext()); 128 LoginScreenContext());
126 OobeScreenWaiter(OobeScreen::SCREEN_GAIA_SIGNIN).Wait(); 129 OobeScreenWaiter(OobeScreen::SCREEN_GAIA_SIGNIN).Wait();
127 delegate()->WaitUntilAdapterReset(); 130 delegate()->WaitUntilAdapterReset();
128 EXPECT_EQ(bluetooth_adapter()->IsPowered(), false); 131 EXPECT_EQ(bluetooth_adapter()->IsPowered(), false);
129 } 132 }
130 133
131 // Test that in normal user OOBE login flow, if there is any Bluetooth device 134 // Test that in normal user OOBE login flow for devices lacking input devices,
132 // connected, the Bluetooth adapter should not be disabled after OOBE completes. 135 // if there is any Bluetooth device connected, the Bluetooth adapter should not
133 IN_PROC_BROWSER_TEST_F(BluetoothHostPairingTest, BluetoothDeviceConnected) { 136 // be disabled after OOBE completes.
134 OobeScreenWaiter(OobeScreen::SCREEN_OOBE_NETWORK).Wait(); 137 IN_PROC_BROWSER_TEST_F(BluetoothHostPairingNoInputTest,
138 BluetoothDeviceConnected) {
139 OobeScreenWaiter(OobeScreen::SCREEN_OOBE_HID_DETECTION).Wait();
135 AddBluetoothMouse(); 140 AddBluetoothMouse();
136 EXPECT_EQ(bluetooth_adapter()->IsPowered(), true); 141 EXPECT_EQ(bluetooth_adapter()->IsPowered(), true);
137 WizardController::default_controller()->SkipToLoginForTesting( 142 WizardController::default_controller()->SkipToLoginForTesting(
138 LoginScreenContext()); 143 LoginScreenContext());
139 OobeScreenWaiter(OobeScreen::SCREEN_GAIA_SIGNIN).Wait(); 144 OobeScreenWaiter(OobeScreen::SCREEN_GAIA_SIGNIN).Wait();
140 delegate()->WaitUntilAdapterReset(); 145 delegate()->WaitUntilAdapterReset();
141 EXPECT_EQ(bluetooth_adapter()->IsPowered(), true); 146 EXPECT_EQ(bluetooth_adapter()->IsPowered(), true);
142 } 147 }
143 148
149 // This is the class to simulate the OOBE process for devices that have
150 // sufficient input, i.e., the first screen of OOBE is the network screen.
151 // The device will not put itself in Bluetooth discoverable mode until the user
152 // manually trigger it using the proper accelerator.
153 class BluetoothHostPairingWithInputTest
154 : public BluetoothHostPairingNoInputTest {
155 public:
156 BluetoothHostPairingWithInputTest() {
157 AddUsbMouse();
158 AddUsbKeyboard();
159 }
160 ~BluetoothHostPairingWithInputTest() override {}
161
162 private:
163 DISALLOW_COPY_AND_ASSIGN(BluetoothHostPairingWithInputTest);
164 };
165
166 // Test that in normal user OOBE login flow for devices that have input devices,
167 // the Bluetooth is disabled by default.
168 IN_PROC_BROWSER_TEST_F(BluetoothHostPairingWithInputTest,
169 BluetoothDisableByDefault) {
170 OobeScreenWaiter(OobeScreen::SCREEN_OOBE_NETWORK).Wait();
171 EXPECT_FALSE(controller());
172 EXPECT_FALSE(bluetooth_adapter());
173 }
174
144 } // namespace chromeos 175 } // namespace chromeos
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/chromeos/login/startup_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698