Home | History | Annotate | Download | only in audio
      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.
      4 
      5 #ifndef CHROME_BROWSER_EXTENSIONS_API_AUDIO_AUDIO_API_H_
      6 #define CHROME_BROWSER_EXTENSIONS_API_AUDIO_AUDIO_API_H_
      7 
      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"
     11 
     12 namespace extensions {
     13 
     14 class AudioService;
     15 
     16 class AudioAPI : public BrowserContextKeyedAPI, public AudioService::Observer {
     17  public:
     18   explicit AudioAPI(content::BrowserContext* context);
     19   virtual ~AudioAPI();
     20 
     21   AudioService* GetService() const;
     22 
     23   // BrowserContextKeyedAPI implementation.
     24   static BrowserContextKeyedAPIFactory<AudioAPI>* GetFactoryInstance();
     25 
     26   // AudioService::Observer implementation.
     27   virtual void OnDeviceChanged() OVERRIDE;
     28 
     29  private:
     30   friend class BrowserContextKeyedAPIFactory<AudioAPI>;
     31 
     32   // BrowserContextKeyedAPI implementation.
     33   static const char* service_name() {
     34     return "AudioAPI";
     35   }
     36 
     37   content::BrowserContext* const browser_context_;
     38   AudioService* service_;
     39 };
     40 
     41 class AudioGetInfoFunction : public ChromeAsyncExtensionFunction {
     42  public:
     43   DECLARE_EXTENSION_FUNCTION("audio.getInfo",
     44                              AUDIO_GETINFO);
     45 
     46  protected:
     47   virtual ~AudioGetInfoFunction() {}
     48   virtual bool RunAsync() OVERRIDE;
     49 
     50  private:
     51   void OnGetInfoCompleted(const OutputInfo& output_info,
     52                           const InputInfo& input_info,
     53                           bool success);
     54 };
     55 
     56 class AudioSetActiveDevicesFunction : public ChromeSyncExtensionFunction {
     57  public:
     58   DECLARE_EXTENSION_FUNCTION("audio.setActiveDevices",
     59                              AUDIO_SETACTIVEDEVICES);
     60 
     61  protected:
     62   virtual ~AudioSetActiveDevicesFunction() {}
     63   virtual bool RunSync() OVERRIDE;
     64 };
     65 
     66 class AudioSetPropertiesFunction : public ChromeSyncExtensionFunction {
     67  public:
     68   DECLARE_EXTENSION_FUNCTION("audio.setProperties",
     69                              AUDIO_SETPROPERTIES);
     70 
     71  protected:
     72   virtual ~AudioSetPropertiesFunction() {}
     73   virtual bool RunSync() OVERRIDE;
     74 };
     75 
     76 
     77 }  // namespace extensions
     78 
     79 #endif  // CHROME_BROWSER_EXTENSIONS_API_AUDIO_AUDIO_API_H_
     80