media_router_factory.cc 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // Copyright 2020 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. #include "components/media_router/browser/media_router_factory.h"
  5. #include "build/build_config.h"
  6. #include "components/keyed_service/content/browser_context_dependency_manager.h"
  7. #include "components/media_router/browser/media_router.h"
  8. #include "content/public/browser/browser_context.h"
  9. using content::BrowserContext;
  10. namespace media_router {
  11. namespace {
  12. MediaRouterFactory* g_instance = nullptr;
  13. } // namespace
  14. // static
  15. MediaRouter* MediaRouterFactory::GetApiForBrowserContext(
  16. BrowserContext* context) {
  17. DCHECK(context);
  18. // GetServiceForBrowserContext returns a KeyedService hence the static_cast<>
  19. // to return a pointer to MediaRouter.
  20. return static_cast<MediaRouter*>(
  21. g_instance->GetServiceForBrowserContext(context, true));
  22. }
  23. // static
  24. MediaRouterFactory* MediaRouterFactory::GetInstance() {
  25. DCHECK(g_instance);
  26. return g_instance;
  27. }
  28. MediaRouterFactory::MediaRouterFactory()
  29. : BrowserContextKeyedServiceFactory(
  30. "MediaRouter",
  31. BrowserContextDependencyManager::GetInstance()) {
  32. DCHECK(!g_instance);
  33. g_instance = this;
  34. }
  35. MediaRouterFactory::~MediaRouterFactory() {
  36. g_instance = nullptr;
  37. }
  38. } // namespace media_router