Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / xwalk / sysapps / common / sysapps_manager_unittest.cc
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.
4
5 #include "xwalk/sysapps/common/sysapps_manager.h"
6
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"
20
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;
27
28 namespace {
29
30 class XWalkSysAppsManagerTest : public ::testing::Test {
31  protected:
32   static void SetUpTestCase() {
33     media::InitializeMediaLibraryForTesting();
34
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);
39
40     ASSERT_FALSE(pak_dir.empty());
41
42     base::FilePath pak_file = pak_dir.Append(FILE_PATH_LITERAL("xwalk.pak"));
43     ui::ResourceBundle::InitSharedInstanceWithPakPath(pak_file);
44   }
45 };
46
47 class DummyExtension : public XWalkExtension {
48  public:
49   DummyExtension() {}
50
51   XWalkExtensionInstance* CreateInstance() override {
52     return NULL;
53   }
54 };
55
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();
62 }
63
64 }  // namespace
65
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);
72 }
73
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);
80 }
81
82 TEST_F(XWalkSysAppsManagerTest, DoesNotReplaceExtensions) {
83   XWalkExtension* extension_ptr(new DummyExtension);
84
85   XWalkExtensionVector extensions;
86   extensions.push_back(extension_ptr);
87
88   SysAppsManager manager;
89   manager.CreateExtensionsForExtensionThread(&extensions);
90   EXPECT_GE(extensions.size(), 1u);
91
92   manager.CreateExtensionsForUIThread(&extensions);
93   EXPECT_GE(extensions.size(), 1u);
94
95   EXPECT_EQ(extensions[0], extension_ptr);
96
97   STLDeleteElements(&extensions);
98 }
99
100 TEST_F(XWalkSysAppsManagerTest, GetAVCodecsProvider) {
101   SysAppsManager manager;
102
103   AVCodecsProvider* provider(manager.GetAVCodecsProvider());
104   EXPECT_TRUE(provider != NULL);
105
106   // AVCodecsProvider is shared among different extensions
107   // instances. GetAVCodecsProvider() should always return
108   // the same provider.
109   EXPECT_EQ(provider, manager.GetAVCodecsProvider());
110 }
111
112 TEST_F(XWalkSysAppsManagerTest, GetCPUProvider) {
113   SysAppsManager manager;
114
115   CPUInfoProvider* provider(manager.GetCPUInfoProvider());
116   EXPECT_TRUE(provider != NULL);
117
118   // CPUInfoProvider is shared among different extensions
119   // instances. GetCPUInfoProvider() should always return
120   // the same provider.
121   EXPECT_EQ(provider, manager.GetCPUInfoProvider());
122 }