1 // Copyright (c) 2013 Intel Corporation. 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.
5 #include "xwalk/sysapps/common/sysapps_manager.h"
7 #include "base/command_line.h"
8 #include "base/files/file_path.h"
9 #include "base/files/file_util.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "base/path_service.h"
12 #include "base/stl_util.h"
13 #include "media/base/media.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15 #include "ui/base/resource/resource_bundle.h"
16 #include "xwalk/extensions/common/xwalk_extension.h"
17 #include "xwalk/extensions/common/xwalk_extension_vector.h"
18 #include "xwalk/sysapps/device_capabilities/av_codecs_provider.h"
19 #include "xwalk/sysapps/device_capabilities/cpu_info_provider.h"
21 using xwalk::sysapps::AVCodecsProvider;
22 using xwalk::sysapps::CPUInfoProvider;
23 using xwalk::sysapps::SysAppsManager;
24 using xwalk::extensions::XWalkExtension;
25 using xwalk::extensions::XWalkExtensionInstance;
26 using xwalk::extensions::XWalkExtensionVector;
30 class XWalkSysAppsManagerTest : public ::testing::Test {
32 static void SetUpTestCase() {
33 media::InitializeMediaLibraryForTesting();
35 // We need to make sure the resource bundle is up because
36 // the extensions we instantiate on this test depend on it.
37 base::FilePath pak_dir;
38 PathService::Get(base::DIR_MODULE, &pak_dir);
40 ASSERT_FALSE(pak_dir.empty());
42 base::FilePath pak_file = pak_dir.Append(FILE_PATH_LITERAL("xwalk.pak"));
43 ui::ResourceBundle::InitSharedInstanceWithPakPath(pak_file);
47 class DummyExtension : public XWalkExtension {
51 XWalkExtensionInstance* CreateInstance() override {
56 int CountExtensions(SysAppsManager* manager) {
57 XWalkExtensionVector extensions;
58 STLElementDeleter<XWalkExtensionVector> deleter(&extensions);
59 manager->CreateExtensionsForExtensionThread(&extensions);
60 manager->CreateExtensionsForUIThread(&extensions);
61 return extensions.size();
66 TEST_F(XWalkSysAppsManagerTest, DisableDeviceCapabilities) {
67 SysAppsManager manager;
68 int count_before_disable = CountExtensions(&manager);
69 manager.DisableDeviceCapabilities();
70 int count_after_disable = CountExtensions(&manager);
71 EXPECT_EQ(count_before_disable, count_after_disable + 1);
74 TEST_F(XWalkSysAppsManagerTest, DisableRawSockets) {
75 SysAppsManager manager;
76 int count_before_disable = CountExtensions(&manager);
77 manager.DisableRawSockets();
78 int count_after_disable = CountExtensions(&manager);
79 EXPECT_EQ(count_before_disable, count_after_disable + 1);
82 TEST_F(XWalkSysAppsManagerTest, DoesNotReplaceExtensions) {
83 XWalkExtension* extension_ptr(new DummyExtension);
85 XWalkExtensionVector extensions;
86 extensions.push_back(extension_ptr);
88 SysAppsManager manager;
89 manager.CreateExtensionsForExtensionThread(&extensions);
90 EXPECT_GE(extensions.size(), 1u);
92 manager.CreateExtensionsForUIThread(&extensions);
93 EXPECT_GE(extensions.size(), 1u);
95 EXPECT_EQ(extensions[0], extension_ptr);
97 STLDeleteElements(&extensions);
100 TEST_F(XWalkSysAppsManagerTest, GetAVCodecsProvider) {
101 SysAppsManager manager;
103 AVCodecsProvider* provider(manager.GetAVCodecsProvider());
104 EXPECT_TRUE(provider != NULL);
106 // AVCodecsProvider is shared among different extensions
107 // instances. GetAVCodecsProvider() should always return
108 // the same provider.
109 EXPECT_EQ(provider, manager.GetAVCodecsProvider());
112 TEST_F(XWalkSysAppsManagerTest, GetCPUProvider) {
113 SysAppsManager manager;
115 CPUInfoProvider* provider(manager.GetCPUInfoProvider());
116 EXPECT_TRUE(provider != NULL);
118 // CPUInfoProvider is shared among different extensions
119 // instances. GetCPUInfoProvider() should always return
120 // the same provider.
121 EXPECT_EQ(provider, manager.GetCPUInfoProvider());