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/api/profile_keyed_api_factory.h"
     10 #include "chrome/browser/extensions/extension_function.h"
     11 
     12 namespace extensions {
     13 
     14 class AudioService;
     15 
     16 class AudioAPI : public ProfileKeyedAPI,
     17                  public AudioService::Observer {
     18  public:
     19   explicit AudioAPI(Profile* profile);
     20   virtual ~AudioAPI();
     21 
     22   AudioService* GetService() const;
     23 
     24   // ProfileKeyedAPI implementation.
     25   static ProfileKeyedAPIFactory<AudioAPI>* GetFactoryInstance();
     26 
     27   // AudioService::Observer implementation.
     28   virtual void OnDeviceChanged() OVERRIDE;
     29 
     30  private:
     31   friend class ProfileKeyedAPIFactory<AudioAPI>;
     32 
     33   // ProfileKeyedAPI implementation.
     34   static const char* service_name() {
     35     return "AudioAPI";
     36   }
     37 
     38   Profile* const profile_;
     39   AudioService* service_;
     40 };
     41 
     42 class AudioGetInfoFunction : public AsyncExtensionFunction {
     43  public:
     44   DECLARE_EXTENSION_FUNCTION("audio.getInfo",
     45                              AUDIO_GETINFO);
     46 
     47  protected:
     48   virtual ~AudioGetInfoFunction() {}
     49   virtual bool RunImpl() OVERRIDE;
     50 
     51  private:
     52   void OnGetInfoCompleted(const OutputInfo& output_info,
     53                           const InputInfo& input_info,
     54                           bool success);
     55 };
     56 
     57 class AudioSetActiveDevicesFunction : public SyncExtensionFunction {
     58  public:
     59   DECLARE_EXTENSION_FUNCTION("audio.setActiveDevices",
     60                              AUDIO_SETACTIVEDEVICES);
     61 
     62  protected:
     63   virtual ~AudioSetActiveDevicesFunction() {}
     64   virtual bool RunImpl() OVERRIDE;
     65 };
     66 
     67 class AudioSetPropertiesFunction : public SyncExtensionFunction {
     68  public:
     69   DECLARE_EXTENSION_FUNCTION("audio.setProperties",
     70                              AUDIO_SETPROPERTIES);
     71 
     72  protected:
     73   virtual ~AudioSetPropertiesFunction() {}
     74   virtual bool RunImpl() OVERRIDE;
     75 };
     76 
     77 
     78 }  // namespace extensions
     79 
     80 #endif  // CHROME_BROWSER_EXTENSIONS_API_AUDIO_AUDIO_API_H_
     81