12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- // Copyright 2020 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "weblayer/browser/media/media_router_factory.h"
- #include "base/android/jni_android.h"
- #include "base/no_destructor.h"
- #include "components/media_router/browser/android/media_router_android.h"
- #include "components/media_router/browser/android/media_router_dialog_controller_android.h"
- #include "components/media_router/browser/media_router_dialog_controller.h"
- #include "content/public/browser/browser_context.h"
- #include "weblayer/browser/java/jni/MediaRouterClientImpl_jni.h"
- namespace weblayer {
- // static
- MediaRouterFactory* MediaRouterFactory::GetInstance() {
- static base::NoDestructor<MediaRouterFactory> instance;
- return instance.get();
- }
- // static
- bool MediaRouterFactory::IsFeatureEnabled() {
- static bool enabled = Java_MediaRouterClientImpl_isMediaRouterEnabled(
- base::android::AttachCurrentThread());
- return enabled;
- }
- // static
- void MediaRouterFactory::DoPlatformInitIfNeeded() {
- static bool init_done = false;
- if (init_done)
- return;
- Java_MediaRouterClientImpl_initialize(base::android::AttachCurrentThread());
- media_router::MediaRouterDialogController::SetGetOrCreate(
- base::BindRepeating([](content::WebContents* web_contents) {
- DCHECK(web_contents);
- // This call does nothing if the controller already exists.
- media_router::MediaRouterDialogControllerAndroid::CreateForWebContents(
- web_contents);
- return static_cast<media_router::MediaRouterDialogController*>(
- media_router::MediaRouterDialogControllerAndroid::FromWebContents(
- web_contents));
- }));
- init_done = true;
- }
- MediaRouterFactory::MediaRouterFactory() = default;
- MediaRouterFactory::~MediaRouterFactory() = default;
- content::BrowserContext* MediaRouterFactory::GetBrowserContextToUse(
- content::BrowserContext* context) const {
- return context;
- }
- KeyedService* MediaRouterFactory::BuildServiceInstanceFor(
- content::BrowserContext* context) const {
- media_router::MediaRouterBase* media_router =
- new media_router::MediaRouterAndroid();
- media_router->Initialize();
- return media_router;
- }
- } // namespace weblayer
|