OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
| 5 #include "chrome/browser/extensions/requirements_checker.h" |
| 6 |
5 #include <vector> | 7 #include <vector> |
6 | 8 |
7 #include "base/bind.h" | 9 #include "base/bind.h" |
8 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
9 #include "base/memory/ref_counted.h" | 11 #include "base/memory/ref_counted.h" |
10 #include "base/message_loop/message_loop.h" | 12 #include "base/message_loop/message_loop.h" |
11 #include "base/path_service.h" | 13 #include "base/path_service.h" |
12 #include "base/strings/string_util.h" | 14 #include "base/strings/string_util.h" |
13 #include "chrome/browser/extensions/extension_browsertest.h" | 15 #include "chrome/browser/extensions/extension_browsertest.h" |
14 #include "chrome/browser/extensions/requirements_checker.h" | |
15 #include "chrome/common/chrome_paths.h" | 16 #include "chrome/common/chrome_paths.h" |
16 #include "chrome/grit/generated_resources.h" | 17 #include "chrome/grit/generated_resources.h" |
17 #include "content/public/browser/browser_thread.h" | 18 #include "content/public/browser/browser_thread.h" |
18 #include "content/public/browser/gpu_data_manager.h" | 19 #include "content/public/browser/gpu_data_manager.h" |
| 20 #include "content/public/test/test_utils.h" |
19 #include "extensions/common/extension.h" | 21 #include "extensions/common/extension.h" |
20 #include "extensions/common/file_util.h" | 22 #include "extensions/common/file_util.h" |
21 #include "gpu/config/gpu_info.h" | 23 #include "gpu/config/gpu_info.h" |
22 #include "ui/base/l10n/l10n_util.h" | 24 #include "ui/base/l10n/l10n_util.h" |
23 | 25 |
24 namespace extensions { | 26 namespace extensions { |
25 | 27 |
26 class RequirementsCheckerBrowserTest : public ExtensionBrowserTest { | 28 class RequirementsCheckerBrowserTest : public ExtensionBrowserTest { |
27 public: | 29 public: |
28 scoped_refptr<const Extension> LoadExtensionFromDirName( | 30 scoped_refptr<const Extension> LoadExtensionFromDirName( |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 RequirementsChecker checker_; | 77 RequirementsChecker checker_; |
76 }; | 78 }; |
77 | 79 |
78 IN_PROC_BROWSER_TEST_F(RequirementsCheckerBrowserTest, CheckEmptyExtension) { | 80 IN_PROC_BROWSER_TEST_F(RequirementsCheckerBrowserTest, CheckEmptyExtension) { |
79 scoped_refptr<const Extension> extension( | 81 scoped_refptr<const Extension> extension( |
80 LoadExtensionFromDirName("no_requirements")); | 82 LoadExtensionFromDirName("no_requirements")); |
81 ASSERT_TRUE(extension.get()); | 83 ASSERT_TRUE(extension.get()); |
82 checker_.Check(extension, base::Bind( | 84 checker_.Check(extension, base::Bind( |
83 &RequirementsCheckerBrowserTest::ValidateRequirementErrors, | 85 &RequirementsCheckerBrowserTest::ValidateRequirementErrors, |
84 base::Unretained(this), std::vector<std::string>())); | 86 base::Unretained(this), std::vector<std::string>())); |
85 content::BrowserThread::GetBlockingPool()->FlushForTesting(); | 87 content::RunAllBlockingPoolTasksUntilIdle(); |
86 } | 88 } |
87 | 89 |
88 IN_PROC_BROWSER_TEST_F(RequirementsCheckerBrowserTest, CheckNpapiExtension) { | 90 IN_PROC_BROWSER_TEST_F(RequirementsCheckerBrowserTest, CheckNpapiExtension) { |
89 scoped_refptr<const Extension> extension( | 91 scoped_refptr<const Extension> extension( |
90 LoadExtensionFromDirName("require_npapi")); | 92 LoadExtensionFromDirName("require_npapi")); |
91 ASSERT_TRUE(extension.get()); | 93 ASSERT_TRUE(extension.get()); |
92 | 94 |
93 std::vector<std::string> expected_errors; | 95 std::vector<std::string> expected_errors; |
94 #if defined(OS_POSIX) && !defined(OS_MACOSX) | 96 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
95 expected_errors.push_back(l10n_util::GetStringUTF8( | 97 expected_errors.push_back(l10n_util::GetStringUTF8( |
96 IDS_EXTENSION_NPAPI_NOT_SUPPORTED)); | 98 IDS_EXTENSION_NPAPI_NOT_SUPPORTED)); |
97 #endif | 99 #endif |
98 | 100 |
99 checker_.Check(extension, base::Bind( | 101 checker_.Check(extension, base::Bind( |
100 &RequirementsCheckerBrowserTest::ValidateRequirementErrors, | 102 &RequirementsCheckerBrowserTest::ValidateRequirementErrors, |
101 base::Unretained(this), expected_errors)); | 103 base::Unretained(this), expected_errors)); |
102 content::BrowserThread::GetBlockingPool()->FlushForTesting(); | 104 content::RunAllBlockingPoolTasksUntilIdle(); |
103 } | 105 } |
104 | 106 |
105 IN_PROC_BROWSER_TEST_F(RequirementsCheckerBrowserTest, | 107 IN_PROC_BROWSER_TEST_F(RequirementsCheckerBrowserTest, |
106 CheckWindowShapeExtension) { | 108 CheckWindowShapeExtension) { |
107 scoped_refptr<const Extension> extension( | 109 scoped_refptr<const Extension> extension( |
108 LoadExtensionFromDirName("require_window_shape")); | 110 LoadExtensionFromDirName("require_window_shape")); |
109 ASSERT_TRUE(extension.get()); | 111 ASSERT_TRUE(extension.get()); |
110 | 112 |
111 std::vector<std::string> expected_errors; | 113 std::vector<std::string> expected_errors; |
112 #if !defined(USE_AURA) | 114 #if !defined(USE_AURA) |
113 expected_errors.push_back(l10n_util::GetStringUTF8( | 115 expected_errors.push_back(l10n_util::GetStringUTF8( |
114 IDS_EXTENSION_WINDOW_SHAPE_NOT_SUPPORTED)); | 116 IDS_EXTENSION_WINDOW_SHAPE_NOT_SUPPORTED)); |
115 #endif // !defined(USE_AURA) | 117 #endif // !defined(USE_AURA) |
116 | 118 |
117 checker_.Check(extension, base::Bind( | 119 checker_.Check(extension, base::Bind( |
118 &RequirementsCheckerBrowserTest::ValidateRequirementErrors, | 120 &RequirementsCheckerBrowserTest::ValidateRequirementErrors, |
119 base::Unretained(this), expected_errors)); | 121 base::Unretained(this), expected_errors)); |
120 content::BrowserThread::GetBlockingPool()->FlushForTesting(); | 122 content::RunAllBlockingPoolTasksUntilIdle(); |
121 } | 123 } |
122 | 124 |
123 IN_PROC_BROWSER_TEST_F(RequirementsCheckerBrowserTest, DisallowWebGL) { | 125 IN_PROC_BROWSER_TEST_F(RequirementsCheckerBrowserTest, DisallowWebGL) { |
124 scoped_refptr<const Extension> extension( | 126 scoped_refptr<const Extension> extension( |
125 LoadExtensionFromDirName("require_3d")); | 127 LoadExtensionFromDirName("require_3d")); |
126 ASSERT_TRUE(extension.get()); | 128 ASSERT_TRUE(extension.get()); |
127 | 129 |
128 // Backlist webgl | 130 // Backlist webgl |
129 std::vector<std::string> blacklisted_features; | 131 std::vector<std::string> blacklisted_features; |
130 blacklisted_features.push_back("webgl"); | 132 blacklisted_features.push_back("webgl"); |
131 BlackListGPUFeatures(blacklisted_features); | 133 BlackListGPUFeatures(blacklisted_features); |
132 content::BrowserThread::GetBlockingPool()->FlushForTesting(); | 134 content::RunAllBlockingPoolTasksUntilIdle(); |
133 | 135 |
134 std::vector<std::string> expected_errors; | 136 std::vector<std::string> expected_errors; |
135 expected_errors.push_back(l10n_util::GetStringUTF8( | 137 expected_errors.push_back(l10n_util::GetStringUTF8( |
136 IDS_EXTENSION_WEBGL_NOT_SUPPORTED)); | 138 IDS_EXTENSION_WEBGL_NOT_SUPPORTED)); |
137 | 139 |
138 checker_.Check(extension, base::Bind( | 140 checker_.Check(extension, base::Bind( |
139 &RequirementsCheckerBrowserTest::ValidateRequirementErrors, | 141 &RequirementsCheckerBrowserTest::ValidateRequirementErrors, |
140 base::Unretained(this), expected_errors)); | 142 base::Unretained(this), expected_errors)); |
141 content::BrowserThread::GetBlockingPool()->FlushForTesting(); | 143 content::RunAllBlockingPoolTasksUntilIdle(); |
142 } | 144 } |
143 | 145 |
144 IN_PROC_BROWSER_TEST_F(RequirementsCheckerBrowserTest, Check3DExtension) { | 146 IN_PROC_BROWSER_TEST_F(RequirementsCheckerBrowserTest, Check3DExtension) { |
145 scoped_refptr<const Extension> extension( | 147 scoped_refptr<const Extension> extension( |
146 LoadExtensionFromDirName("require_3d")); | 148 LoadExtensionFromDirName("require_3d")); |
147 ASSERT_TRUE(extension.get()); | 149 ASSERT_TRUE(extension.get()); |
148 | 150 |
149 std::vector<std::string> expected_errors; | 151 std::vector<std::string> expected_errors; |
150 | 152 |
151 if (!content::GpuDataManager::GetInstance()->GpuAccessAllowed(NULL)) { | 153 if (!content::GpuDataManager::GetInstance()->GpuAccessAllowed(NULL)) { |
152 expected_errors.push_back(l10n_util::GetStringUTF8( | 154 expected_errors.push_back(l10n_util::GetStringUTF8( |
153 IDS_EXTENSION_WEBGL_NOT_SUPPORTED)); | 155 IDS_EXTENSION_WEBGL_NOT_SUPPORTED)); |
154 } | 156 } |
155 | 157 |
156 checker_.Check(extension, base::Bind( | 158 checker_.Check(extension, base::Bind( |
157 &RequirementsCheckerBrowserTest::ValidateRequirementErrors, | 159 &RequirementsCheckerBrowserTest::ValidateRequirementErrors, |
158 base::Unretained(this), expected_errors)); | 160 base::Unretained(this), expected_errors)); |
159 content::BrowserThread::GetBlockingPool()->FlushForTesting(); | 161 content::RunAllBlockingPoolTasksUntilIdle(); |
160 } | 162 } |
161 | 163 |
162 } // namespace extensions | 164 } // namespace extensions |
OLD | NEW |