1 // Copyright 2018 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef DEVICE_VR_ANDROID_ARCORE_ARCORE_DEVICE_PROVIDER_FACTORY_H_
6 #define DEVICE_VR_ANDROID_ARCORE_ARCORE_DEVICE_PROVIDER_FACTORY_H_
7 
8 #include <memory>
9 
10 #include "base/component_export.h"
11 #include "base/macros.h"
12 
13 namespace device {
14 
15 class VRDeviceProvider;
16 
COMPONENT_EXPORT(VR_ARCORE)17 class COMPONENT_EXPORT(VR_ARCORE) ArCoreDeviceProviderFactory {
18  public:
19   static std::unique_ptr<device::VRDeviceProvider> Create();
20   static void Install(std::unique_ptr<ArCoreDeviceProviderFactory> factory);
21 
22   virtual ~ArCoreDeviceProviderFactory() = default;
23 
24  protected:
25   ArCoreDeviceProviderFactory() = default;
26 
27   virtual std::unique_ptr<device::VRDeviceProvider> CreateDeviceProvider() = 0;
28 
29  private:
30   DISALLOW_COPY_AND_ASSIGN(ArCoreDeviceProviderFactory);
31 };
32 
33 }  // namespace device
34 
35 #endif  // DEVICE_VR_ANDROID_ARCORE_ARCORE_DEVICE_PROVIDER_FACTORY_H_
36