/work/obj-fuzz/dist/include/mozilla/media/DeviceChangeCallback.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
2 | | /* vim: set sw=2 ts=8 et ft=cpp : */ |
3 | | /* This Source Code Form is subject to the terms of the Mozilla Public |
4 | | * License, v. 2.0. If a copy of the MPL was not distributed with this file, |
5 | | * You can obtain one at http://mozilla.org/MPL/2.0/. */ |
6 | | |
7 | | #ifndef mozilla_DeviceChangeCallback_h |
8 | | #define mozilla_DeviceChangeCallback_h |
9 | | |
10 | | #include "mozilla/Mutex.h" |
11 | | |
12 | | namespace mozilla { |
13 | | |
14 | | class DeviceChangeCallback |
15 | | { |
16 | | public: |
17 | | virtual void OnDeviceChange() |
18 | 0 | { |
19 | 0 | MutexAutoLock lock(mCallbackMutex); |
20 | 0 | for (DeviceChangeCallback* observer : mDeviceChangeCallbackList) |
21 | 0 | { |
22 | 0 | observer->OnDeviceChange(); |
23 | 0 | } |
24 | 0 | } |
25 | | |
26 | | virtual int AddDeviceChangeCallback(DeviceChangeCallback* aCallback) |
27 | 0 | { |
28 | 0 | MutexAutoLock lock(mCallbackMutex); |
29 | 0 | if (mDeviceChangeCallbackList.IndexOf(aCallback) == mDeviceChangeCallbackList.NoIndex) |
30 | 0 | mDeviceChangeCallbackList.AppendElement(aCallback); |
31 | 0 | return 0; |
32 | 0 | } |
33 | | |
34 | | virtual int RemoveDeviceChangeCallback(DeviceChangeCallback* aCallback) |
35 | 0 | { |
36 | 0 | MutexAutoLock lock(mCallbackMutex); |
37 | 0 | return RemoveDeviceChangeCallbackLocked(aCallback); |
38 | 0 | } |
39 | | |
40 | | virtual int RemoveDeviceChangeCallbackLocked(DeviceChangeCallback* aCallback) |
41 | 0 | { |
42 | 0 | mCallbackMutex.AssertCurrentThreadOwns(); |
43 | 0 | if (mDeviceChangeCallbackList.IndexOf(aCallback) != mDeviceChangeCallbackList.NoIndex) |
44 | 0 | mDeviceChangeCallbackList.RemoveElement(aCallback); |
45 | 0 | return 0; |
46 | 0 | } |
47 | | |
48 | | DeviceChangeCallback() : mCallbackMutex("mozilla::media::DeviceChangeCallback::mCallbackMutex") |
49 | 0 | { |
50 | 0 | } |
51 | | |
52 | | virtual ~DeviceChangeCallback() |
53 | 0 | { |
54 | 0 | } |
55 | | |
56 | | protected: |
57 | | nsTArray<DeviceChangeCallback*> mDeviceChangeCallbackList; |
58 | | Mutex mCallbackMutex; |
59 | | }; |
60 | | |
61 | | } // namespace mozilla |
62 | | |
63 | | #endif // mozilla_DeviceChangeCallback_h |