1 // Copyright (c) 2013 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.
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_AUDIO_AUDIO_API_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_AUDIO_AUDIO_API_H_
8 #include "chrome/browser/extensions/api/audio/audio_service.h"
9 #include "chrome/browser/extensions/chrome_extension_function.h"
10 #include "extensions/browser/browser_context_keyed_api_factory.h"
12 namespace extensions {
16 class AudioAPI : public BrowserContextKeyedAPI, public AudioService::Observer {
18 explicit AudioAPI(content::BrowserContext* context);
21 AudioService* GetService() const;
23 // BrowserContextKeyedAPI implementation.
24 static BrowserContextKeyedAPIFactory<AudioAPI>* GetFactoryInstance();
26 // AudioService::Observer implementation.
27 virtual void OnDeviceChanged() OVERRIDE;
30 friend class BrowserContextKeyedAPIFactory<AudioAPI>;
32 // BrowserContextKeyedAPI implementation.
33 static const char* service_name() {
37 content::BrowserContext* const browser_context_;
38 AudioService* service_;
41 class AudioGetInfoFunction : public ChromeAsyncExtensionFunction {
43 DECLARE_EXTENSION_FUNCTION("audio.getInfo",
47 virtual ~AudioGetInfoFunction() {}
48 virtual bool RunAsync() OVERRIDE;
51 void OnGetInfoCompleted(const OutputInfo& output_info,
52 const InputInfo& input_info,
56 class AudioSetActiveDevicesFunction : public ChromeSyncExtensionFunction {
58 DECLARE_EXTENSION_FUNCTION("audio.setActiveDevices",
59 AUDIO_SETACTIVEDEVICES);
62 virtual ~AudioSetActiveDevicesFunction() {}
63 virtual bool RunSync() OVERRIDE;
66 class AudioSetPropertiesFunction : public ChromeSyncExtensionFunction {
68 DECLARE_EXTENSION_FUNCTION("audio.setProperties",
72 virtual ~AudioSetPropertiesFunction() {}
73 virtual bool RunSync() OVERRIDE;
77 } // namespace extensions
79 #endif // CHROME_BROWSER_EXTENSIONS_API_AUDIO_AUDIO_API_H_