Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1388)

Unified Diff: chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.h

Issue 2791203002: Switching WebRtc private API from AudioManager to AudioSystem (Closed)
Patch Set: rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.h
diff --git a/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.h b/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.h
index af78e3c81b5d471695a92c90eda6db55611e0a82..201f72a68c11011f32ea3e1977bb0bd5f04a4fd6 100644
--- a/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.h
+++ b/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.h
@@ -54,31 +54,9 @@ class WebrtcAudioPrivateFunction : public ChromeAsyncExtensionFunction {
~WebrtcAudioPrivateFunction() override;
protected:
- // Retrieves the list of output device descriptions on the appropriate
- // thread. Call from UI thread, callback will occur on IO thread.
- void GetOutputDeviceDescriptions();
-
- // Must override this if you call GetOutputDeviceDescriptions. Called on IO
- // thread.
- virtual void OnOutputDeviceDescriptions(
- std::unique_ptr<media::AudioDeviceDescriptions> device_descriptions);
-
- // Calculates a single HMAC. Call from any thread. Calls back via
- // OnHMACCalculated on UI thread.
- //
- // This function, and device ID HMACs in this API in general use the
- // calling extension's ID as the security origin. The only exception
- // to this rule is when calculating the input device ID HMAC in
- // getAssociatedSink, where we use the provided |securityOrigin|.
- void CalculateHMAC(const std::string& raw_id);
-
- // Must override this if you call CalculateHMAC.
- virtual void OnHMACCalculated(const std::string& hmac);
-
// Calculates a single HMAC, using the extension ID as the security origin.
- //
// Call only on IO thread.
- std::string CalculateHMACImpl(const std::string& raw_id);
+ std::string CalculateHMAC(const std::string& raw_id);
// Initializes |device_id_salt_|. Must be called on the UI thread,
// before any calls to |device_id_salt()|.
@@ -106,17 +84,23 @@ class WebrtcAudioPrivateGetSinksFunction : public WebrtcAudioPrivateFunction {
~WebrtcAudioPrivateGetSinksFunction() override {}
private:
+ using SinkInfoVector = std::vector<api::webrtc_audio_private::SinkInfo>;
+
DECLARE_EXTENSION_FUNCTION("webrtcAudioPrivate.getSinks",
WEBRTC_AUDIO_PRIVATE_GET_SINKS);
- // Sequence of events is that we query the list of sinks on the
- // AudioManager's thread, then calculate HMACs on the IO thread,
- // then finish on the UI thread.
bool RunAsync() override;
- void DoQuery();
- void OnOutputDeviceDescriptions(
- std::unique_ptr<media::AudioDeviceDescriptions> raw_ids) override;
- void DoneOnUIThread();
+
+ // Requests output device descriptions.
+ void GetOutputDeviceDescriptionsOnIOThread();
+
+ // Receives output device descriptions, calculates HMACs for them and replies
+ // to UI thread with DoneOnUIThread().
+ void ReceiveOutputDeviceDescriptionsOnIOThread(
+ media::AudioDeviceDescriptions sink_devices);
+
+ // Sends the response.
+ void DoneOnUIThread(std::unique_ptr<SinkInfoVector> results);
};
class WebrtcAudioPrivateGetAssociatedSinkFunction
@@ -131,45 +115,27 @@ class WebrtcAudioPrivateGetAssociatedSinkFunction
DECLARE_EXTENSION_FUNCTION("webrtcAudioPrivate.getAssociatedSink",
WEBRTC_AUDIO_PRIVATE_GET_ASSOCIATED_SINK);
+ // UI thread: Entry point, posts GetInputDeviceDescriptions() to IO thread.
bool RunAsync() override;
- // This implementation is slightly complicated because of different
- // thread requirements for the various functions we need to invoke.
- //
- // Each worker function will post a task to the appropriate thread
- // for the next one.
- //
- // The sequence of events is:
- // 1. Get the list of source devices on the device thread.
- // 2. Given a source ID for an origin and that security origin, find
- // the raw source ID. This needs to happen on the IO thread since
- // we will be using the ResourceContext.
- // 3. Given a raw source ID, get the raw associated sink ID on the
- // device thread.
- // 4. Given the raw associated sink ID, get its HMAC on the IO thread.
- // 5. Respond with the HMAC of the associated sink ID on the UI thread.
-
- // Fills in |source_devices_|. Note that these are input devices,
- // not output devices, so don't use
- // |WebrtcAudioPrivateFunction::GetOutputDeviceDescriptions|.
- void GetDevicesOnDeviceThread();
-
- // Takes the parameters of the function, retrieves the raw source
- // device ID, or the empty string if none.
- void GetRawSourceIDOnIOThread();
-
- // Gets the raw sink ID for a raw source ID. Sends it to |CalculateHMAC|.
- void GetAssociatedSinkOnDeviceThread(const std::string& raw_source_id);
-
- // Receives the associated sink ID after its HMAC is calculated.
- void OnHMACCalculated(const std::string& hmac) override;
-
- // Accessed from UI thread and device thread, but only on one at a
- // time, no locking needed.
- std::unique_ptr<api::webrtc_audio_private::GetAssociatedSink::Params> params_;
+ // Enumerates input devices.
+ void GetInputDeviceDescriptionsOnIOThread();
+
+ // Receives the input device descriptions, looks up the raw source device ID
+ // basing on |params|, and requests the associated raw sink ID for it.
+ void ReceiveInputDeviceDescriptionsOnIOThread(
+ media::AudioDeviceDescriptions source_devices);
+
+ // IO thread: Receives the raw sink ID, calculates HMAC and replies to IO
+ // thread with ReceiveHMACOnUIThread().
+ void CalculateHMACOnIOThread(const std::string& raw_sink_id);
- // Audio sources (input devices). Filled in by DoWorkOnDeviceThread.
- media::AudioDeviceDescriptions source_devices_;
+ // Receives the associated sink ID as HMAC and sends the response.
+ void ReceiveHMACOnUIThread(const std::string& hmac);
+
+ // Initialized on UI thread in RunAsync(), read-only access on IO thread - no
+ // locking needed.
+ std::unique_ptr<api::webrtc_audio_private::GetAssociatedSink::Params> params_;
};
class WebrtcAudioPrivateSetAudioExperimentsFunction
« no previous file with comments | « no previous file | chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698