Commit 71361c3f authored by imcheng's avatar imcheng Committed by Commit bot

[Reland] [Media Router Tests] Add tests for MediaRouterFactory.

Changed to use std::unique_ptr in tests since scoped_ptr is being
removed.

Original patch: https://codereview.chromium.org/1877273002/
Revert: https://codereview.chromium.org/1916973003/

TBR=mfoltz@chromium.org

Review URL: https://codereview.chromium.org/1918403002

Cr-Commit-Position: refs/heads/master@{#389892}
parent 696787e1
...@@ -62,6 +62,11 @@ MediaRouterFactory::MediaRouterFactory() ...@@ -62,6 +62,11 @@ MediaRouterFactory::MediaRouterFactory()
MediaRouterFactory::~MediaRouterFactory() { MediaRouterFactory::~MediaRouterFactory() {
} }
// static
MediaRouterFactory* MediaRouterFactory::GetMediaRouterFactoryForTest() {
return &service_factory.Get();
}
content::BrowserContext* MediaRouterFactory::GetBrowserContextToUse( content::BrowserContext* MediaRouterFactory::GetBrowserContextToUse(
content::BrowserContext* context) const { content::BrowserContext* context) const {
return chrome::GetBrowserContextRedirectedInIncognito(context); return chrome::GetBrowserContextRedirectedInIncognito(context);
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#ifndef CHROME_BROWSER_MEDIA_ROUTER_MEDIA_ROUTER_FACTORY_H_ #ifndef CHROME_BROWSER_MEDIA_ROUTER_MEDIA_ROUTER_FACTORY_H_
#define CHROME_BROWSER_MEDIA_ROUTER_MEDIA_ROUTER_FACTORY_H_ #define CHROME_BROWSER_MEDIA_ROUTER_MEDIA_ROUTER_FACTORY_H_
#include "base/gtest_prod_util.h"
#include "base/lazy_instance.h" #include "base/lazy_instance.h"
#include "base/macros.h" #include "base/macros.h"
#include "components/keyed_service/content/browser_context_keyed_service_factory.h" #include "components/keyed_service/content/browser_context_keyed_service_factory.h"
...@@ -30,10 +31,15 @@ class MediaRouterFactory : public BrowserContextKeyedServiceFactory { ...@@ -30,10 +31,15 @@ class MediaRouterFactory : public BrowserContextKeyedServiceFactory {
private: private:
friend struct base::DefaultLazyInstanceTraits<MediaRouterFactory>; friend struct base::DefaultLazyInstanceTraits<MediaRouterFactory>;
FRIEND_TEST_ALL_PREFIXES(MediaRouterFactoryTest,
OffTheRecordBrowserContextShutdown);
MediaRouterFactory(); MediaRouterFactory();
~MediaRouterFactory() override; ~MediaRouterFactory() override;
// Exposed for testing.
static MediaRouterFactory* GetMediaRouterFactoryForTest();
// BrowserContextKeyedServiceFactory interface. // BrowserContextKeyedServiceFactory interface.
content::BrowserContext* GetBrowserContextToUse( content::BrowserContext* GetBrowserContextToUse(
content::BrowserContext* context) const override; content::BrowserContext* context) const override;
......
// Copyright 2016 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 <memory>
#include "base/memory/ptr_util.h"
#include "chrome/browser/media/router/media_router_factory.h"
#include "chrome/browser/media/router/mock_media_router.h"
#include "chrome/test/base/testing_profile.h"
#include "content/public/browser/browser_context.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace media_router {
namespace {
std::unique_ptr<KeyedService> CreateMockMediaRouter(
content::BrowserContext* context) {
return base::WrapUnique(new MockMediaRouter);
}
} // namespace
class MediaRouterFactoryTest : public testing::Test {
protected:
MediaRouterFactoryTest() {}
~MediaRouterFactoryTest() override {}
Profile* profile() { return &profile_; }
private:
content::TestBrowserThreadBundle thread_bundle_;
TestingProfile profile_;
};
TEST_F(MediaRouterFactoryTest, CreateForRegularProfile) {
ASSERT_TRUE(MediaRouterFactory::GetApiForBrowserContext(profile()));
}
TEST_F(MediaRouterFactoryTest, CreateForOffTheRecordProfile) {
Profile* otr_profile = profile()->GetOffTheRecordProfile();
ASSERT_TRUE(otr_profile);
// Makes sure a MediaRouter can be created from an OTR Profile.
MediaRouter* router =
MediaRouterFactory::GetApiForBrowserContext(otr_profile);
ASSERT_TRUE(router);
// A Profile and its OTR Profile share the same MediaRouter instance.
ASSERT_EQ(router, MediaRouterFactory::GetApiForBrowserContext(profile()));
}
TEST_F(MediaRouterFactoryTest, OffTheRecordBrowserContextShutdown) {
MediaRouterFactory::GetMediaRouterFactoryForTest()->SetTestingFactory(
profile(), &CreateMockMediaRouter);
// Creates an off the record profile.
profile()->GetOffTheRecordProfile();
MockMediaRouter* router = static_cast<MockMediaRouter*>(
MediaRouterFactory::GetApiForBrowserContext(profile()));
ASSERT_TRUE(router);
EXPECT_CALL(*router, OnOffTheRecordProfileShutdown());
profile()->DestroyOffTheRecordProfile();
}
} // namespace media_router
...@@ -1441,6 +1441,7 @@ ...@@ -1441,6 +1441,7 @@
'browser/media/router/issue_manager_unittest.cc', 'browser/media/router/issue_manager_unittest.cc',
'browser/media/router/issue_unittest.cc', 'browser/media/router/issue_unittest.cc',
'browser/media/router/media_route_unittest.cc', 'browser/media/router/media_route_unittest.cc',
'browser/media/router/media_router_factory_unittest.cc',
'browser/media/router/media_sink_unittest.cc', 'browser/media/router/media_sink_unittest.cc',
'browser/media/router/media_sinks_observer_unittest.cc', 'browser/media/router/media_sinks_observer_unittest.cc',
'browser/media/router/media_source_helper_unittest.cc', 'browser/media/router/media_source_helper_unittest.cc',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment