| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/macros.h" |
| #include "base/threading/platform_thread.h" |
| #include "build/build_config.h" |
| #include "device/usb/usb_context.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "third_party/libusb/src/libusb/libusb.h" |
| |
| namespace device { |
| |
| namespace { |
| |
| class UsbContextTest : public testing::Test { |
| protected: |
| class UsbContextForTest : public UsbContext { |
| public: |
| explicit UsbContextForTest(PlatformUsbContext context) |
| : UsbContext(context) {} |
| |
| private: |
| ~UsbContextForTest() override {} |
| DISALLOW_COPY_AND_ASSIGN(UsbContextForTest); |
| }; |
| }; |
| |
| } // namespace |
| |
| #if defined(OS_LINUX) |
| // Linux trybot does not support usb. |
| #define MAYBE_GracefulShutdown DISABLED_GracefulShutdown |
| #elif defined(OS_ANDROID) |
| // Android build does not include usb support. |
| #define MAYBE_GracefulShutdown DISABLED_GracefulShutdown |
| #else |
| #define MAYBE_GracefulShutdown GracefulShutdown |
| #endif |
| |
| TEST_F(UsbContextTest, MAYBE_GracefulShutdown) { |
| base::TimeTicks start = base::TimeTicks::Now(); |
| { |
| PlatformUsbContext platform_context; |
| ASSERT_EQ(LIBUSB_SUCCESS, libusb_init(&platform_context)); |
| scoped_refptr<UsbContextForTest> context( |
| new UsbContextForTest(platform_context)); |
| } |
| base::TimeDelta elapse = base::TimeTicks::Now() - start; |
| if (elapse > base::TimeDelta::FromSeconds(2)) { |
| FAIL(); |
| } |
| } |
| |
| } // namespace device |