summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chromecast/browser/DEPS1
-rw-r--r--chromecast/browser/cast_browser_main_parts.cc13
-rw-r--r--chromecast/browser/cast_browser_main_parts.h9
-rw-r--r--chromecast/browser/cast_content_browser_client.cc4
-rw-r--r--chromecast/browser/cast_content_browser_client.h8
-rw-r--r--chromecast/browser/cast_content_browser_client_simple.cc8
6 files changed, 39 insertions, 4 deletions
diff --git a/chromecast/browser/DEPS b/chromecast/browser/DEPS
index bd203a8..c4a4b0e 100644
--- a/chromecast/browser/DEPS
+++ b/chromecast/browser/DEPS
@@ -10,5 +10,6 @@ include_rules = [
"+components/network_hints/browser",
"+content/public/browser",
"+gin/v8_initializer.h",
+ "+media/audio",
"+media/base",
]
diff --git a/chromecast/browser/cast_browser_main_parts.cc b/chromecast/browser/cast_browser_main_parts.cc
index 1c0ca15..7922d74 100644
--- a/chromecast/browser/cast_browser_main_parts.cc
+++ b/chromecast/browser/cast_browser_main_parts.cc
@@ -4,6 +4,7 @@
#include "chromecast/browser/cast_browser_main_parts.h"
+#include <string>
#if !defined(OS_ANDROID)
#include <signal.h>
#include <sys/prctl.h>
@@ -33,6 +34,8 @@
#include "chromecast/net/connectivity_checker.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/common/content_switches.h"
+#include "media/audio/audio_manager.h"
+#include "media/audio/audio_manager_factory.h"
#include "media/base/browser_cdm_factory.h"
#include "media/base/media_switches.h"
@@ -192,11 +195,13 @@ void AddDefaultCommandLineSwitches(base::CommandLine* command_line) {
CastBrowserMainParts::CastBrowserMainParts(
const content::MainFunctionParams& parameters,
- URLRequestContextFactory* url_request_context_factory)
+ URLRequestContextFactory* url_request_context_factory,
+ scoped_ptr<::media::AudioManagerFactory> audio_manager_factory)
: BrowserMainParts(),
cast_browser_process_(new CastBrowserProcess()),
parameters_(parameters),
- url_request_context_factory_(url_request_context_factory) {
+ url_request_context_factory_(url_request_context_factory),
+ audio_manager_factory_(audio_manager_factory.Pass()) {
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
AddDefaultCommandLineSwitches(command_line);
}
@@ -212,6 +217,10 @@ void CastBrowserMainParts::PreMainMessageLoopStart() {
// Net/DNS metrics.
metrics::PreregisterAllGroupedHistograms();
+ // Set the platform's implementation of AudioManagerFactory.
+ if (audio_manager_factory_)
+ ::media::AudioManager::SetFactory(audio_manager_factory_.release());
+
#if defined(OS_ANDROID)
net::NetworkChangeNotifier::SetFactory(
new net::NetworkChangeNotifierFactoryAndroid());
diff --git a/chromecast/browser/cast_browser_main_parts.h b/chromecast/browser/cast_browser_main_parts.h
index 7c9baf4..49954ce 100644
--- a/chromecast/browser/cast_browser_main_parts.h
+++ b/chromecast/browser/cast_browser_main_parts.h
@@ -11,6 +11,10 @@
#include "content/public/browser/browser_main_parts.h"
#include "content/public/common/main_function_params.h"
+namespace media {
+class AudioManagerFactory;
+}
+
namespace chromecast {
namespace shell {
class CastBrowserProcess;
@@ -18,9 +22,11 @@ class URLRequestContextFactory;
class CastBrowserMainParts : public content::BrowserMainParts {
public:
+ // This class does not take ownership of |url_request_content_factory|.
CastBrowserMainParts(
const content::MainFunctionParams& parameters,
- URLRequestContextFactory* url_request_context_factory);
+ URLRequestContextFactory* url_request_context_factory,
+ scoped_ptr<::media::AudioManagerFactory> audio_manager_factory);
~CastBrowserMainParts() override;
// content::BrowserMainParts implementation:
@@ -35,6 +41,7 @@ class CastBrowserMainParts : public content::BrowserMainParts {
scoped_ptr<CastBrowserProcess> cast_browser_process_;
const content::MainFunctionParams parameters_; // For running browser tests.
URLRequestContextFactory* const url_request_context_factory_;
+ scoped_ptr<::media::AudioManagerFactory> audio_manager_factory_;
DISALLOW_COPY_AND_ASSIGN(CastBrowserMainParts);
};
diff --git a/chromecast/browser/cast_content_browser_client.cc b/chromecast/browser/cast_content_browser_client.cc
index 4a07649..a6178e4 100644
--- a/chromecast/browser/cast_content_browser_client.cc
+++ b/chromecast/browser/cast_content_browser_client.cc
@@ -38,6 +38,7 @@
#include "content/public/common/url_constants.h"
#include "content/public/common/web_preferences.h"
#include "gin/v8_initializer.h"
+#include "media/audio/audio_manager_factory.h"
#include "net/ssl/ssl_cert_request_info.h"
#include "net/url_request/url_request_context_getter.h"
#include "ui/gl/gl_switches.h"
@@ -66,7 +67,8 @@ CastContentBrowserClient::~CastContentBrowserClient() {
content::BrowserMainParts* CastContentBrowserClient::CreateBrowserMainParts(
const content::MainFunctionParams& parameters) {
return new CastBrowserMainParts(parameters,
- url_request_context_factory_.get());
+ url_request_context_factory_.get(),
+ PlatformCreateAudioManagerFactory());
}
void CastContentBrowserClient::RenderProcessWillLaunch(
diff --git a/chromecast/browser/cast_content_browser_client.h b/chromecast/browser/cast_content_browser_client.h
index 0d25e61..5e5c262 100644
--- a/chromecast/browser/cast_content_browser_client.h
+++ b/chromecast/browser/cast_content_browser_client.h
@@ -6,6 +6,8 @@
#define CHROMECAST_BROWSER_CAST_CONTENT_BROWSER_CLIENT_H_
#include <map>
+#include <string>
+#include <vector>
#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
@@ -19,6 +21,10 @@ namespace content {
class BrowserMessageFilter;
}
+namespace media {
+class AudioManagerFactory;
+}
+
namespace net {
class HostResolver;
}
@@ -109,6 +115,8 @@ class CastContentBrowserClient: public content::ContentBrowserClient {
GURL requesting_url,
int render_process_id);
+ scoped_ptr<::media::AudioManagerFactory> PlatformCreateAudioManagerFactory();
+
#if !defined(OS_ANDROID)
// Returns the crash signal FD corresponding to the current process type.
int GetCrashSignalFD(const base::CommandLine& command_line);
diff --git a/chromecast/browser/cast_content_browser_client_simple.cc b/chromecast/browser/cast_content_browser_client_simple.cc
index 34012b4..bde5a71 100644
--- a/chromecast/browser/cast_content_browser_client_simple.cc
+++ b/chromecast/browser/cast_content_browser_client_simple.cc
@@ -5,6 +5,7 @@
#include "chromecast/browser/cast_content_browser_client.h"
#include "content/public/browser/browser_message_filter.h"
+#include "media/audio/audio_manager_factory.h"
namespace chromecast {
namespace shell {
@@ -18,5 +19,12 @@ CastContentBrowserClient::PlatformGetBrowserMessageFilters() {
return std::vector<scoped_refptr<content::BrowserMessageFilter>>();
}
+scoped_ptr<::media::AudioManagerFactory>
+CastContentBrowserClient::PlatformCreateAudioManagerFactory() {
+ // Return nullptr. The factory will not be set, and the statically linked
+ // implementation of AudioManager will be used.
+ return scoped_ptr<::media::AudioManagerFactory>();
+}
+
} // namespace shell
} // namespace chromecast