| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "device/serial/serial_device_enumerator.h" | 5 #include "device/serial/serial_device_enumerator.h" |
| 6 #include "device/serial/serial_service_impl.h" | 6 #include "device/serial/serial_service_impl.h" |
| 7 #include "device/serial/test_serial_io_handler.h" | 7 #include "device/serial/test_serial_io_handler.h" |
| 8 #include "extensions/renderer/api_test_base.h" | 8 #include "extensions/renderer/api_test_base.h" |
| 9 #include "grit/extensions_renderer_resources.h" | 9 #include "grit/extensions_renderer_resources.h" |
| 10 | 10 |
| 11 // A test launcher for tests for the serial API defined in | 11 // A test launcher for tests for the serial API defined in |
| 12 // extensions/test/data/serial_unittest.js. Each C++ test function sets up a | 12 // extensions/test/data/serial_unittest.js. Each C++ test function sets up a |
| 13 // fake DeviceEnumerator or SerialIoHandler expecting or returning particular | 13 // fake DeviceEnumerator or SerialIoHandler expecting or returning particular |
| 14 // values for that test. | 14 // values for that test. |
| 15 | 15 |
| 16 namespace extensions { | 16 namespace extensions { |
| 17 | 17 |
| 18 namespace { | 18 namespace { |
| 19 | 19 |
| 20 class FakeSerialDeviceEnumerator : public device::SerialDeviceEnumerator { | 20 class FakeSerialDeviceEnumerator : public device::SerialDeviceEnumerator { |
| 21 virtual mojo::Array<device::serial::DeviceInfoPtr> GetDevices() override { | 21 mojo::Array<device::serial::DeviceInfoPtr> GetDevices() override { |
| 22 mojo::Array<device::serial::DeviceInfoPtr> result(3); | 22 mojo::Array<device::serial::DeviceInfoPtr> result(3); |
| 23 result[0] = device::serial::DeviceInfo::New(); | 23 result[0] = device::serial::DeviceInfo::New(); |
| 24 result[0]->path = "device"; | 24 result[0]->path = "device"; |
| 25 result[0]->vendor_id = 1234; | 25 result[0]->vendor_id = 1234; |
| 26 result[0]->has_vendor_id = true; | 26 result[0]->has_vendor_id = true; |
| 27 result[0]->product_id = 5678; | 27 result[0]->product_id = 5678; |
| 28 result[0]->has_product_id = true; | 28 result[0]->has_product_id = true; |
| 29 result[0]->display_name = "foo"; | 29 result[0]->display_name = "foo"; |
| 30 result[1] = device::serial::DeviceInfo::New(); | 30 result[1] = device::serial::DeviceInfo::New(); |
| 31 result[1]->path = "another_device"; | 31 result[1]->path = "another_device"; |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 return result; | 101 return result; |
| 102 } | 102 } |
| 103 | 103 |
| 104 class TestIoHandlerBase : public device::TestSerialIoHandler { | 104 class TestIoHandlerBase : public device::TestSerialIoHandler { |
| 105 public: | 105 public: |
| 106 TestIoHandlerBase() : calls_(0) {} | 106 TestIoHandlerBase() : calls_(0) {} |
| 107 | 107 |
| 108 size_t num_calls() const { return calls_; } | 108 size_t num_calls() const { return calls_; } |
| 109 | 109 |
| 110 protected: | 110 protected: |
| 111 virtual ~TestIoHandlerBase() {} | 111 ~TestIoHandlerBase() override {} |
| 112 void record_call() const { calls_++; } | 112 void record_call() const { calls_++; } |
| 113 | 113 |
| 114 private: | 114 private: |
| 115 mutable size_t calls_; | 115 mutable size_t calls_; |
| 116 | 116 |
| 117 DISALLOW_COPY_AND_ASSIGN(TestIoHandlerBase); | 117 DISALLOW_COPY_AND_ASSIGN(TestIoHandlerBase); |
| 118 }; | 118 }; |
| 119 | 119 |
| 120 class SetControlSignalsTestIoHandler : public TestIoHandlerBase { | 120 class SetControlSignalsTestIoHandler : public TestIoHandlerBase { |
| 121 public: | 121 public: |
| 122 SetControlSignalsTestIoHandler() {} | 122 SetControlSignalsTestIoHandler() {} |
| 123 | 123 |
| 124 virtual bool SetControlSignals( | 124 bool SetControlSignals( |
| 125 const device::serial::HostControlSignals& signals) override { | 125 const device::serial::HostControlSignals& signals) override { |
| 126 static const device::serial::HostControlSignals expected_signals[] = { | 126 static const device::serial::HostControlSignals expected_signals[] = { |
| 127 GenerateControlSignals(OPTIONAL_VALUE_UNSET, OPTIONAL_VALUE_UNSET), | 127 GenerateControlSignals(OPTIONAL_VALUE_UNSET, OPTIONAL_VALUE_UNSET), |
| 128 GenerateControlSignals(OPTIONAL_VALUE_FALSE, OPTIONAL_VALUE_UNSET), | 128 GenerateControlSignals(OPTIONAL_VALUE_FALSE, OPTIONAL_VALUE_UNSET), |
| 129 GenerateControlSignals(OPTIONAL_VALUE_TRUE, OPTIONAL_VALUE_UNSET), | 129 GenerateControlSignals(OPTIONAL_VALUE_TRUE, OPTIONAL_VALUE_UNSET), |
| 130 GenerateControlSignals(OPTIONAL_VALUE_UNSET, OPTIONAL_VALUE_FALSE), | 130 GenerateControlSignals(OPTIONAL_VALUE_UNSET, OPTIONAL_VALUE_FALSE), |
| 131 GenerateControlSignals(OPTIONAL_VALUE_FALSE, OPTIONAL_VALUE_FALSE), | 131 GenerateControlSignals(OPTIONAL_VALUE_FALSE, OPTIONAL_VALUE_FALSE), |
| 132 GenerateControlSignals(OPTIONAL_VALUE_TRUE, OPTIONAL_VALUE_FALSE), | 132 GenerateControlSignals(OPTIONAL_VALUE_TRUE, OPTIONAL_VALUE_FALSE), |
| 133 GenerateControlSignals(OPTIONAL_VALUE_UNSET, OPTIONAL_VALUE_TRUE), | 133 GenerateControlSignals(OPTIONAL_VALUE_UNSET, OPTIONAL_VALUE_TRUE), |
| 134 GenerateControlSignals(OPTIONAL_VALUE_FALSE, OPTIONAL_VALUE_TRUE), | 134 GenerateControlSignals(OPTIONAL_VALUE_FALSE, OPTIONAL_VALUE_TRUE), |
| 135 GenerateControlSignals(OPTIONAL_VALUE_TRUE, OPTIONAL_VALUE_TRUE), | 135 GenerateControlSignals(OPTIONAL_VALUE_TRUE, OPTIONAL_VALUE_TRUE), |
| 136 }; | 136 }; |
| 137 if (num_calls() >= arraysize(expected_signals)) | 137 if (num_calls() >= arraysize(expected_signals)) |
| 138 return false; | 138 return false; |
| 139 | 139 |
| 140 EXPECT_EQ(expected_signals[num_calls()].has_dtr, signals.has_dtr); | 140 EXPECT_EQ(expected_signals[num_calls()].has_dtr, signals.has_dtr); |
| 141 EXPECT_EQ(expected_signals[num_calls()].dtr, signals.dtr); | 141 EXPECT_EQ(expected_signals[num_calls()].dtr, signals.dtr); |
| 142 EXPECT_EQ(expected_signals[num_calls()].has_rts, signals.has_rts); | 142 EXPECT_EQ(expected_signals[num_calls()].has_rts, signals.has_rts); |
| 143 EXPECT_EQ(expected_signals[num_calls()].rts, signals.rts); | 143 EXPECT_EQ(expected_signals[num_calls()].rts, signals.rts); |
| 144 record_call(); | 144 record_call(); |
| 145 return true; | 145 return true; |
| 146 } | 146 } |
| 147 | 147 |
| 148 private: | 148 private: |
| 149 virtual ~SetControlSignalsTestIoHandler() {} | 149 ~SetControlSignalsTestIoHandler() override {} |
| 150 | 150 |
| 151 DISALLOW_COPY_AND_ASSIGN(SetControlSignalsTestIoHandler); | 151 DISALLOW_COPY_AND_ASSIGN(SetControlSignalsTestIoHandler); |
| 152 }; | 152 }; |
| 153 | 153 |
| 154 class GetControlSignalsTestIoHandler : public TestIoHandlerBase { | 154 class GetControlSignalsTestIoHandler : public TestIoHandlerBase { |
| 155 public: | 155 public: |
| 156 GetControlSignalsTestIoHandler() {} | 156 GetControlSignalsTestIoHandler() {} |
| 157 | 157 |
| 158 virtual device::serial::DeviceControlSignalsPtr GetControlSignals() | 158 device::serial::DeviceControlSignalsPtr GetControlSignals() const override { |
| 159 const override { | |
| 160 device::serial::DeviceControlSignalsPtr signals( | 159 device::serial::DeviceControlSignalsPtr signals( |
| 161 device::serial::DeviceControlSignals::New()); | 160 device::serial::DeviceControlSignals::New()); |
| 162 signals->dcd = num_calls() & 1; | 161 signals->dcd = num_calls() & 1; |
| 163 signals->cts = num_calls() & 2; | 162 signals->cts = num_calls() & 2; |
| 164 signals->ri = num_calls() & 4; | 163 signals->ri = num_calls() & 4; |
| 165 signals->dsr = num_calls() & 8; | 164 signals->dsr = num_calls() & 8; |
| 166 record_call(); | 165 record_call(); |
| 167 return signals.Pass(); | 166 return signals.Pass(); |
| 168 } | 167 } |
| 169 | 168 |
| 170 private: | 169 private: |
| 171 virtual ~GetControlSignalsTestIoHandler() {} | 170 ~GetControlSignalsTestIoHandler() override {} |
| 172 | 171 |
| 173 DISALLOW_COPY_AND_ASSIGN(GetControlSignalsTestIoHandler); | 172 DISALLOW_COPY_AND_ASSIGN(GetControlSignalsTestIoHandler); |
| 174 }; | 173 }; |
| 175 | 174 |
| 176 class ConfigurePortTestIoHandler : public TestIoHandlerBase { | 175 class ConfigurePortTestIoHandler : public TestIoHandlerBase { |
| 177 public: | 176 public: |
| 178 ConfigurePortTestIoHandler() {} | 177 ConfigurePortTestIoHandler() {} |
| 179 virtual bool ConfigurePort( | 178 bool ConfigurePort( |
| 180 const device::serial::ConnectionOptions& options) override { | 179 const device::serial::ConnectionOptions& options) override { |
| 181 static const device::serial::ConnectionOptions expected_options[] = { | 180 static const device::serial::ConnectionOptions expected_options[] = { |
| 182 GenerateConnectionOptions(9600, | 181 GenerateConnectionOptions(9600, |
| 183 device::serial::DATA_BITS_EIGHT, | 182 device::serial::DATA_BITS_EIGHT, |
| 184 device::serial::PARITY_BIT_NO, | 183 device::serial::PARITY_BIT_NO, |
| 185 device::serial::STOP_BITS_ONE, | 184 device::serial::STOP_BITS_ONE, |
| 186 OPTIONAL_VALUE_FALSE), | 185 OPTIONAL_VALUE_FALSE), |
| 187 GenerateConnectionOptions(57600, | 186 GenerateConnectionOptions(57600, |
| 188 device::serial::DATA_BITS_NONE, | 187 device::serial::DATA_BITS_NONE, |
| 189 device::serial::PARITY_BIT_NONE, | 188 device::serial::PARITY_BIT_NONE, |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 EXPECT_EQ(expected_options[num_calls()].stop_bits, options.stop_bits); | 243 EXPECT_EQ(expected_options[num_calls()].stop_bits, options.stop_bits); |
| 245 EXPECT_EQ(expected_options[num_calls()].has_cts_flow_control, | 244 EXPECT_EQ(expected_options[num_calls()].has_cts_flow_control, |
| 246 options.has_cts_flow_control); | 245 options.has_cts_flow_control); |
| 247 EXPECT_EQ(expected_options[num_calls()].cts_flow_control, | 246 EXPECT_EQ(expected_options[num_calls()].cts_flow_control, |
| 248 options.cts_flow_control); | 247 options.cts_flow_control); |
| 249 record_call(); | 248 record_call(); |
| 250 return TestSerialIoHandler::ConfigurePort(options); | 249 return TestSerialIoHandler::ConfigurePort(options); |
| 251 } | 250 } |
| 252 | 251 |
| 253 private: | 252 private: |
| 254 virtual ~ConfigurePortTestIoHandler() {} | 253 ~ConfigurePortTestIoHandler() override {} |
| 255 | 254 |
| 256 DISALLOW_COPY_AND_ASSIGN(ConfigurePortTestIoHandler); | 255 DISALLOW_COPY_AND_ASSIGN(ConfigurePortTestIoHandler); |
| 257 }; | 256 }; |
| 258 | 257 |
| 259 class FlushTestIoHandler : public TestIoHandlerBase { | 258 class FlushTestIoHandler : public TestIoHandlerBase { |
| 260 public: | 259 public: |
| 261 FlushTestIoHandler() {} | 260 FlushTestIoHandler() {} |
| 262 | 261 |
| 263 virtual bool Flush() const override { | 262 bool Flush() const override { |
| 264 record_call(); | 263 record_call(); |
| 265 return true; | 264 return true; |
| 266 } | 265 } |
| 267 | 266 |
| 268 private: | 267 private: |
| 269 virtual ~FlushTestIoHandler() {} | 268 ~FlushTestIoHandler() override {} |
| 270 | 269 |
| 271 DISALLOW_COPY_AND_ASSIGN(FlushTestIoHandler); | 270 DISALLOW_COPY_AND_ASSIGN(FlushTestIoHandler); |
| 272 }; | 271 }; |
| 273 | 272 |
| 274 class FailToConnectTestIoHandler : public TestIoHandlerBase { | 273 class FailToConnectTestIoHandler : public TestIoHandlerBase { |
| 275 public: | 274 public: |
| 276 FailToConnectTestIoHandler() {} | 275 FailToConnectTestIoHandler() {} |
| 277 virtual void Open(const std::string& port, | 276 void Open(const std::string& port, |
| 278 const OpenCompleteCallback& callback) override { | 277 const OpenCompleteCallback& callback) override { |
| 279 callback.Run(false); | 278 callback.Run(false); |
| 280 return; | 279 return; |
| 281 } | 280 } |
| 282 | 281 |
| 283 private: | 282 private: |
| 284 virtual ~FailToConnectTestIoHandler() {} | 283 ~FailToConnectTestIoHandler() override {} |
| 285 | 284 |
| 286 DISALLOW_COPY_AND_ASSIGN(FailToConnectTestIoHandler); | 285 DISALLOW_COPY_AND_ASSIGN(FailToConnectTestIoHandler); |
| 287 }; | 286 }; |
| 288 | 287 |
| 289 class FailToGetInfoTestIoHandler : public TestIoHandlerBase { | 288 class FailToGetInfoTestIoHandler : public TestIoHandlerBase { |
| 290 public: | 289 public: |
| 291 explicit FailToGetInfoTestIoHandler(int times_to_succeed) | 290 explicit FailToGetInfoTestIoHandler(int times_to_succeed) |
| 292 : times_to_succeed_(times_to_succeed) {} | 291 : times_to_succeed_(times_to_succeed) {} |
| 293 virtual device::serial::ConnectionInfoPtr GetPortInfo() const override { | 292 device::serial::ConnectionInfoPtr GetPortInfo() const override { |
| 294 if (times_to_succeed_-- > 0) | 293 if (times_to_succeed_-- > 0) |
| 295 return device::TestSerialIoHandler::GetPortInfo(); | 294 return device::TestSerialIoHandler::GetPortInfo(); |
| 296 return device::serial::ConnectionInfoPtr(); | 295 return device::serial::ConnectionInfoPtr(); |
| 297 } | 296 } |
| 298 | 297 |
| 299 private: | 298 private: |
| 300 virtual ~FailToGetInfoTestIoHandler() {} | 299 ~FailToGetInfoTestIoHandler() override {} |
| 301 | 300 |
| 302 mutable int times_to_succeed_; | 301 mutable int times_to_succeed_; |
| 303 | 302 |
| 304 DISALLOW_COPY_AND_ASSIGN(FailToGetInfoTestIoHandler); | 303 DISALLOW_COPY_AND_ASSIGN(FailToGetInfoTestIoHandler); |
| 305 }; | 304 }; |
| 306 | 305 |
| 307 class SendErrorTestIoHandler : public TestIoHandlerBase { | 306 class SendErrorTestIoHandler : public TestIoHandlerBase { |
| 308 public: | 307 public: |
| 309 explicit SendErrorTestIoHandler(device::serial::SendError error) | 308 explicit SendErrorTestIoHandler(device::serial::SendError error) |
| 310 : error_(error) {} | 309 : error_(error) {} |
| 311 | 310 |
| 312 virtual void WriteImpl() override { QueueWriteCompleted(0, error_); } | 311 void WriteImpl() override { QueueWriteCompleted(0, error_); } |
| 313 | 312 |
| 314 private: | 313 private: |
| 315 virtual ~SendErrorTestIoHandler() {} | 314 ~SendErrorTestIoHandler() override {} |
| 316 | 315 |
| 317 device::serial::SendError error_; | 316 device::serial::SendError error_; |
| 318 | 317 |
| 319 DISALLOW_COPY_AND_ASSIGN(SendErrorTestIoHandler); | 318 DISALLOW_COPY_AND_ASSIGN(SendErrorTestIoHandler); |
| 320 }; | 319 }; |
| 321 | 320 |
| 322 class FixedDataReceiveTestIoHandler : public TestIoHandlerBase { | 321 class FixedDataReceiveTestIoHandler : public TestIoHandlerBase { |
| 323 public: | 322 public: |
| 324 explicit FixedDataReceiveTestIoHandler(const std::string& data) | 323 explicit FixedDataReceiveTestIoHandler(const std::string& data) |
| 325 : data_(data) {} | 324 : data_(data) {} |
| 326 | 325 |
| 327 virtual void ReadImpl() override { | 326 void ReadImpl() override { |
| 328 if (pending_read_buffer_len() < data_.size()) | 327 if (pending_read_buffer_len() < data_.size()) |
| 329 return; | 328 return; |
| 330 memcpy(pending_read_buffer(), data_.c_str(), data_.size()); | 329 memcpy(pending_read_buffer(), data_.c_str(), data_.size()); |
| 331 QueueReadCompleted(static_cast<uint32_t>(data_.size()), | 330 QueueReadCompleted(static_cast<uint32_t>(data_.size()), |
| 332 device::serial::RECEIVE_ERROR_NONE); | 331 device::serial::RECEIVE_ERROR_NONE); |
| 333 } | 332 } |
| 334 | 333 |
| 335 private: | 334 private: |
| 336 virtual ~FixedDataReceiveTestIoHandler() {} | 335 ~FixedDataReceiveTestIoHandler() override {} |
| 337 | 336 |
| 338 const std::string data_; | 337 const std::string data_; |
| 339 | 338 |
| 340 DISALLOW_COPY_AND_ASSIGN(FixedDataReceiveTestIoHandler); | 339 DISALLOW_COPY_AND_ASSIGN(FixedDataReceiveTestIoHandler); |
| 341 }; | 340 }; |
| 342 | 341 |
| 343 class ReceiveErrorTestIoHandler : public TestIoHandlerBase { | 342 class ReceiveErrorTestIoHandler : public TestIoHandlerBase { |
| 344 public: | 343 public: |
| 345 explicit ReceiveErrorTestIoHandler(device::serial::ReceiveError error) | 344 explicit ReceiveErrorTestIoHandler(device::serial::ReceiveError error) |
| 346 : error_(error) {} | 345 : error_(error) {} |
| 347 | 346 |
| 348 virtual void ReadImpl() override { QueueReadCompleted(0, error_); } | 347 void ReadImpl() override { QueueReadCompleted(0, error_); } |
| 349 | 348 |
| 350 private: | 349 private: |
| 351 virtual ~ReceiveErrorTestIoHandler() {} | 350 ~ReceiveErrorTestIoHandler() override {} |
| 352 | 351 |
| 353 device::serial::ReceiveError error_; | 352 device::serial::ReceiveError error_; |
| 354 | 353 |
| 355 DISALLOW_COPY_AND_ASSIGN(ReceiveErrorTestIoHandler); | 354 DISALLOW_COPY_AND_ASSIGN(ReceiveErrorTestIoHandler); |
| 356 }; | 355 }; |
| 357 | 356 |
| 358 class SendDataWithErrorIoHandler : public TestIoHandlerBase { | 357 class SendDataWithErrorIoHandler : public TestIoHandlerBase { |
| 359 public: | 358 public: |
| 360 SendDataWithErrorIoHandler() : sent_error_(false) {} | 359 SendDataWithErrorIoHandler() : sent_error_(false) {} |
| 361 virtual void WriteImpl() override { | 360 void WriteImpl() override { |
| 362 if (sent_error_) { | 361 if (sent_error_) { |
| 363 WriteCompleted(pending_write_buffer_len(), | 362 WriteCompleted(pending_write_buffer_len(), |
| 364 device::serial::SEND_ERROR_NONE); | 363 device::serial::SEND_ERROR_NONE); |
| 365 return; | 364 return; |
| 366 } | 365 } |
| 367 sent_error_ = true; | 366 sent_error_ = true; |
| 368 // We expect the JS test code to send a 4 byte buffer. | 367 // We expect the JS test code to send a 4 byte buffer. |
| 369 ASSERT_LT(2u, pending_write_buffer_len()); | 368 ASSERT_LT(2u, pending_write_buffer_len()); |
| 370 WriteCompleted(2, device::serial::SEND_ERROR_SYSTEM_ERROR); | 369 WriteCompleted(2, device::serial::SEND_ERROR_SYSTEM_ERROR); |
| 371 } | 370 } |
| 372 | 371 |
| 373 private: | 372 private: |
| 374 virtual ~SendDataWithErrorIoHandler() {} | 373 ~SendDataWithErrorIoHandler() override {} |
| 375 | 374 |
| 376 bool sent_error_; | 375 bool sent_error_; |
| 377 | 376 |
| 378 DISALLOW_COPY_AND_ASSIGN(SendDataWithErrorIoHandler); | 377 DISALLOW_COPY_AND_ASSIGN(SendDataWithErrorIoHandler); |
| 379 }; | 378 }; |
| 380 | 379 |
| 381 class BlockSendsForeverSendIoHandler : public TestIoHandlerBase { | 380 class BlockSendsForeverSendIoHandler : public TestIoHandlerBase { |
| 382 public: | 381 public: |
| 383 BlockSendsForeverSendIoHandler() {} | 382 BlockSendsForeverSendIoHandler() {} |
| 384 virtual void WriteImpl() override {} | 383 void WriteImpl() override {} |
| 385 | 384 |
| 386 private: | 385 private: |
| 387 virtual ~BlockSendsForeverSendIoHandler() {} | 386 ~BlockSendsForeverSendIoHandler() override {} |
| 388 | 387 |
| 389 DISALLOW_COPY_AND_ASSIGN(BlockSendsForeverSendIoHandler); | 388 DISALLOW_COPY_AND_ASSIGN(BlockSendsForeverSendIoHandler); |
| 390 }; | 389 }; |
| 391 | 390 |
| 392 } // namespace | 391 } // namespace |
| 393 | 392 |
| 394 class SerialApiTest : public ApiTestBase { | 393 class SerialApiTest : public ApiTestBase { |
| 395 public: | 394 public: |
| 396 SerialApiTest() {} | 395 SerialApiTest() {} |
| 397 | 396 |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 635 | 634 |
| 636 TEST_F(SerialApiTest, SetPausedUnknownConnectionId) { | 635 TEST_F(SerialApiTest, SetPausedUnknownConnectionId) { |
| 637 RunTest("serial_unittest.js", "testSetPausedUnknownConnectionId"); | 636 RunTest("serial_unittest.js", "testSetPausedUnknownConnectionId"); |
| 638 } | 637 } |
| 639 | 638 |
| 640 TEST_F(SerialApiTest, SendUnknownConnectionId) { | 639 TEST_F(SerialApiTest, SendUnknownConnectionId) { |
| 641 RunTest("serial_unittest.js", "testSendUnknownConnectionId"); | 640 RunTest("serial_unittest.js", "testSendUnknownConnectionId"); |
| 642 } | 641 } |
| 643 | 642 |
| 644 } // namespace extensions | 643 } // namespace extensions |
| OLD | NEW |