OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "device/generic_sensor/platform_sensor_provider_android.h" | |
6 | |
7 #include "base/android/scoped_java_ref.h" | |
8 #include "base/memory/singleton.h" | |
9 #include "device/generic_sensor/platform_sensor_android.h" | |
10 #include "jni/PlatformSensorProvider_jni.h" | |
11 | |
12 using base::android::AttachCurrentThread; | |
13 using base::android::ScopedJavaLocalRef; | |
14 | |
15 namespace device { | |
16 | |
17 // static | |
18 PlatformSensorProviderAndroid* PlatformSensorProviderAndroid::GetInstance() { | |
19 return base::Singleton< | |
20 PlatformSensorProviderAndroid, | |
21 base::LeakySingletonTraits<PlatformSensorProviderAndroid>>::get(); | |
22 } | |
23 | |
24 PlatformSensorProviderAndroid::PlatformSensorProviderAndroid() { | |
25 JNIEnv* env = AttachCurrentThread(); | |
26 j_object_.Reset(Java_PlatformSensorProvider_create(env)); | |
27 } | |
28 | |
29 PlatformSensorProviderAndroid::~PlatformSensorProviderAndroid() = default; | |
30 | |
31 void PlatformSensorProviderAndroid::CreateSensorInternal( | |
32 mojom::SensorType type, | |
33 mojo::ScopedSharedBufferMapping mapping, | |
34 const CreateSensorCallback& callback) { | |
35 JNIEnv* env = AttachCurrentThread(); | |
36 ScopedJavaLocalRef<jobject> sensor = Java_PlatformSensorProvider_createSensor( | |
37 env, j_object_.obj(), static_cast<jint>(type)); | |
38 | |
39 if (!sensor.obj()) | |
40 callback.Run(nullptr); | |
41 | |
42 scoped_refptr<PlatformSensorAndroid> concrete_sensor = | |
43 new PlatformSensorAndroid(type, std::move(mapping), this, sensor); | |
44 callback.Run(concrete_sensor); | |
45 } | |
46 | |
47 } // namespace device | |
OLD | NEW |