Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(195)

Side by Side Diff: chrome/browser/extensions/extension_install_checker_unittest.cc

Issue 2768723002: Update ExtensionInstallChecker to use PreloadCheck classes (Closed)
Patch Set: Blacklist comment Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/extension_install_checker.h"
6
5 #include "base/bind.h" 7 #include "base/bind.h"
6 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/memory/ptr_util.h"
7 #include "base/run_loop.h" 10 #include "base/run_loop.h"
8 #include "base/single_thread_task_runner.h" 11 #include "base/single_thread_task_runner.h"
12 #include "base/strings/utf_string_conversions.h"
9 #include "base/threading/thread_task_runner_handle.h" 13 #include "base/threading/thread_task_runner_handle.h"
10 #include "chrome/browser/extensions/extension_install_checker.h" 14 #include "extensions/browser/preload_check_test_util.h"
11 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
12 16
13 namespace extensions { 17 namespace extensions {
14 18
15 namespace { 19 namespace {
16 20
17 const BlacklistState kBlacklistStateError = BLACKLISTED_MALWARE; 21 const PreloadCheck::Error kBlacklistError = PreloadCheck::BLACKLISTED_ID;
18 const char kDummyRequirementsError[] = "Requirements error"; 22 const char kDummyRequirementsError[] = "Requirements error";
19 const char kDummyPolicyError[] = "Cannot install extension"; 23 const char kDummyPolicyError[] = "Cannot install extension";
20 24
21 } // namespace 25 } // namespace
22 26
23 // Stubs most of the checks since we are interested in validating the logic in 27 // Stubs most of the checks since we are interested in validating the logic in
24 // the install checker. This class implements a synchronous version of all 28 // the install checker. This class implements a synchronous version of all
25 // checks. 29 // checks.
26 class ExtensionInstallCheckerForTest : public ExtensionInstallChecker { 30 class ExtensionInstallCheckerForTest : public ExtensionInstallChecker {
27 public: 31 public:
28 ExtensionInstallCheckerForTest(int enabled_checks, bool fail_fast) 32 ExtensionInstallCheckerForTest(int enabled_checks, bool fail_fast)
29 : ExtensionInstallChecker(nullptr, nullptr, enabled_checks, fail_fast), 33 : ExtensionInstallChecker(nullptr, nullptr, enabled_checks, fail_fast),
30 requirements_check_called_(false), 34 is_async_(false) {}
31 blacklist_check_called_(false),
32 policy_check_called_(false),
33 blacklist_state_(NOT_BLACKLISTED) {}
34 35
35 ~ExtensionInstallCheckerForTest() override {} 36 ~ExtensionInstallCheckerForTest() override {}
36 37
37 void set_requirements_error(const std::string& error) { 38 void set_requirements_error(const std::string& error) {
38 requirements_error_ = error; 39 requirements_error_ = error;
39 } 40 }
40 void set_policy_check_error(const std::string& error) {
41 policy_check_error_ = error;
42 }
43 void set_blacklist_state(BlacklistState state) { blacklist_state_ = state; }
44 41
45 bool requirements_check_called() const { return requirements_check_called_; } 42 bool is_async() const { return is_async_; }
46 bool blacklist_check_called() const { return blacklist_check_called_; } 43 void set_is_async(bool is_async) { is_async_ = is_async; }
47 bool policy_check_called() const { return policy_check_called_; }
48 44
45 protected:
49 void MockCheckRequirements() { 46 void MockCheckRequirements() {
50 if (!is_running()) 47 if (!is_running())
51 return; 48 return;
52 std::vector<std::string> errors; 49 std::vector<std::string> errors;
53 if (!requirements_error_.empty()) 50 if (!requirements_error_.empty())
54 errors.push_back(requirements_error_); 51 errors.push_back(requirements_error_);
55 OnRequirementsCheckDone(errors); 52 OnRequirementsCheckDone(errors);
56 } 53 }
57 54
58 void MockCheckBlacklistState() { 55 void CheckRequirements() override {
59 if (!is_running()) 56 if (is_async_) {
60 return; 57 base::ThreadTaskRunnerHandle::Get()->PostTask(
61 OnBlacklistStateCheckDone(blacklist_state_); 58 FROM_HERE,
59 base::Bind(&ExtensionInstallCheckerForTest::MockCheckRequirements,
60 base::Unretained(this)));
61 } else {
62 MockCheckRequirements();
63 }
62 } 64 }
63 65
64 protected: 66 private:
65 void CheckRequirements() override { 67 // Whether to run the requirements and blacklist checks asynchronously, as
66 requirements_check_called_ = true; 68 // they often do in ExtensionInstallChecker.
67 MockCheckRequirements(); 69 bool is_async_;
68 }
69 70
70 void CheckManagementPolicy() override { 71 // Dummy error for testing.
71 policy_check_called_ = true;
72 OnManagementPolicyCheckDone(policy_check_error_.empty(),
73 policy_check_error_);
74 }
75
76 void CheckBlacklistState() override {
77 blacklist_check_called_ = true;
78 MockCheckBlacklistState();
79 }
80
81 bool requirements_check_called_;
82 bool blacklist_check_called_;
83 bool policy_check_called_;
84
85 // Dummy errors for testing.
86 std::string requirements_error_; 72 std::string requirements_error_;
87 std::string policy_check_error_;
88 BlacklistState blacklist_state_;
89 };
90
91 // This class implements asynchronous mocks of the requirements and blacklist
92 // checks.
93 class ExtensionInstallCheckerAsync : public ExtensionInstallCheckerForTest {
94 public:
95 ExtensionInstallCheckerAsync(int enabled_checks, bool fail_fast)
96 : ExtensionInstallCheckerForTest(enabled_checks, fail_fast) {}
97
98 protected:
99 void CheckRequirements() override {
100 requirements_check_called_ = true;
101
102 base::ThreadTaskRunnerHandle::Get()->PostTask(
103 FROM_HERE,
104 base::Bind(&ExtensionInstallCheckerForTest::MockCheckRequirements,
105 base::Unretained(this)));
106 }
107
108 void CheckBlacklistState() override {
109 blacklist_check_called_ = true;
110
111 base::ThreadTaskRunnerHandle::Get()->PostTask(
112 FROM_HERE,
113 base::Bind(&ExtensionInstallCheckerForTest::MockCheckBlacklistState,
114 base::Unretained(this)));
115 }
116 }; 73 };
117 74
118 class CheckObserver { 75 class CheckObserver {
119 public: 76 public:
120 CheckObserver() : result_(0), call_count_(0) {} 77 CheckObserver() : result_(0), call_count_(0) {}
121 78
122 int result() const { return result_; } 79 int result() const { return result_; }
123 int call_count() const { return call_count_; } 80 int call_count() const { return call_count_; }
124 81
125 void OnChecksComplete(int checks_failed) { 82 void OnChecksComplete(int checks_failed) {
(...skipping 11 matching lines...) Expand all
137 private: 94 private:
138 int result_; 95 int result_;
139 int call_count_; 96 int call_count_;
140 }; 97 };
141 98
142 class ExtensionInstallCheckerTest : public testing::Test { 99 class ExtensionInstallCheckerTest : public testing::Test {
143 public: 100 public:
144 ExtensionInstallCheckerTest() {} 101 ExtensionInstallCheckerTest() {}
145 ~ExtensionInstallCheckerTest() override {} 102 ~ExtensionInstallCheckerTest() override {}
146 103
104 void SetBlacklistError(ExtensionInstallCheckerForTest* checker,
105 PreloadCheck::Error error) {
106 std::unique_ptr<PreloadCheckStub> blacklist_check =
Devlin 2017/03/24 16:21:48 nit: With base::MakeUnique<>(), auto is often clea
michaelpg 2017/03/24 21:48:28 Done.
107 base::MakeUnique<PreloadCheckStub>();
108 blacklist_check->set_is_async(checker->is_async());
109 if (error != PreloadCheck::NONE)
110 blacklist_check->AddError(error);
111 checker->SetBlacklistCheckForTesting(std::move(blacklist_check));
112 }
113
114 void SetPolicyError(ExtensionInstallCheckerForTest* checker,
115 PreloadCheck::Error error,
116 std::string message) {
117 // The policy check always runs synchronously.
118 std::unique_ptr<PreloadCheckStub> policy_check =
119 base::MakeUnique<PreloadCheckStub>();
120 if (error != PreloadCheck::NONE) {
121 policy_check->AddError(error);
122 policy_check->set_error_message(base::UTF8ToUTF16(message));
123 }
124 checker->SetPolicyCheckForTesting(std::move(policy_check));
125 }
126
147 protected: 127 protected:
128 void SetAllPass(ExtensionInstallCheckerForTest* checker) {
129 SetBlacklistError(checker, PreloadCheck::NONE);
130 SetPolicyError(checker, PreloadCheck::NONE, "");
131 checker->set_requirements_error("");
132 }
133
148 void SetAllErrors(ExtensionInstallCheckerForTest* checker) { 134 void SetAllErrors(ExtensionInstallCheckerForTest* checker) {
149 checker->set_blacklist_state(kBlacklistStateError); 135 SetBlacklistError(checker, kBlacklistError);
150 checker->set_policy_check_error(kDummyPolicyError); 136 SetPolicyError(checker, PreloadCheck::DISALLOWED_BY_POLICY,
137 kDummyPolicyError);
151 checker->set_requirements_error(kDummyRequirementsError); 138 checker->set_requirements_error(kDummyRequirementsError);
152 } 139 }
153 140
154 void ValidateExpectedCalls(int call_mask,
155 const ExtensionInstallCheckerForTest& checker) {
156 bool expect_blacklist_checked =
157 (call_mask & ExtensionInstallChecker::CHECK_BLACKLIST) != 0;
158 bool expect_requirements_checked =
159 (call_mask & ExtensionInstallChecker::CHECK_REQUIREMENTS) != 0;
160 bool expect_policy_checked =
161 (call_mask & ExtensionInstallChecker::CHECK_MANAGEMENT_POLICY) != 0;
162 EXPECT_EQ(expect_blacklist_checked, checker.blacklist_check_called());
163 EXPECT_EQ(expect_policy_checked, checker.policy_check_called());
164 EXPECT_EQ(expect_requirements_checked, checker.requirements_check_called());
165 }
166
167 void ExpectRequirementsPass(const ExtensionInstallCheckerForTest& checker) { 141 void ExpectRequirementsPass(const ExtensionInstallCheckerForTest& checker) {
168 EXPECT_TRUE(checker.requirement_errors().empty()); 142 EXPECT_TRUE(checker.requirement_errors().empty());
169 } 143 }
170 144
171 void ExpectRequirementsError(const char* expected_error, 145 void ExpectRequirementsError(const char* expected_error,
172 const ExtensionInstallCheckerForTest& checker) { 146 const ExtensionInstallCheckerForTest& checker) {
173 EXPECT_FALSE(checker.requirement_errors().empty()); 147 EXPECT_FALSE(checker.requirement_errors().empty());
174 EXPECT_EQ(std::string(expected_error), 148 EXPECT_EQ(std::string(expected_error),
175 checker.requirement_errors().front()); 149 checker.requirement_errors().front());
176 } 150 }
177 151
178 void ExpectRequirementsError(const ExtensionInstallCheckerForTest& checker) { 152 void ExpectRequirementsError(const ExtensionInstallCheckerForTest& checker) {
179 ExpectRequirementsError(kDummyRequirementsError, checker); 153 ExpectRequirementsError(kDummyRequirementsError, checker);
180 } 154 }
181 155
182 void ExpectBlacklistPass(const ExtensionInstallCheckerForTest& checker) { 156 void ExpectBlacklistPass(const ExtensionInstallCheckerForTest& checker) {
183 EXPECT_EQ(NOT_BLACKLISTED, checker.blacklist_state()); 157 EXPECT_EQ(PreloadCheck::NONE, checker.blacklist_error());
184 } 158 }
185 159
186 void ExpectBlacklistError(const ExtensionInstallCheckerForTest& checker) { 160 void ExpectBlacklistError(const ExtensionInstallCheckerForTest& checker) {
187 EXPECT_EQ(kBlacklistStateError, checker.blacklist_state()); 161 EXPECT_EQ(kBlacklistError, checker.blacklist_error());
188 } 162 }
189 163
190 void ExpectPolicyPass(const ExtensionInstallCheckerForTest& checker) { 164 void ExpectPolicyPass(const ExtensionInstallCheckerForTest& checker) {
191 EXPECT_TRUE(checker.policy_allows_load());
192 EXPECT_TRUE(checker.policy_error().empty()); 165 EXPECT_TRUE(checker.policy_error().empty());
193 } 166 }
194 167
195 void ExpectPolicyError(const char* expected_error, 168 void ExpectPolicyError(const char* expected_error,
196 const ExtensionInstallCheckerForTest& checker) { 169 const ExtensionInstallCheckerForTest& checker) {
197 EXPECT_FALSE(checker.policy_allows_load());
198 EXPECT_FALSE(checker.policy_error().empty()); 170 EXPECT_FALSE(checker.policy_error().empty());
199 EXPECT_EQ(std::string(expected_error), checker.policy_error()); 171 EXPECT_EQ(std::string(expected_error), checker.policy_error());
200 } 172 }
201 173
202 void ExpectPolicyError(const ExtensionInstallCheckerForTest& checker) { 174 void ExpectPolicyError(const ExtensionInstallCheckerForTest& checker) {
203 ExpectPolicyError(kDummyPolicyError, checker); 175 ExpectPolicyError(kDummyPolicyError, checker);
204 } 176 }
205 177
206 void RunChecker(ExtensionInstallCheckerForTest* checker, 178 void RunChecker(ExtensionInstallCheckerForTest* checker,
207 int expected_checks_run,
208 int expected_result) { 179 int expected_result) {
209 CheckObserver observer; 180 CheckObserver observer;
210 checker->Start(base::Bind(&CheckObserver::OnChecksComplete, 181 checker->Start(base::Bind(&CheckObserver::OnChecksComplete,
211 base::Unretained(&observer))); 182 base::Unretained(&observer)));
212 observer.Wait(); 183 observer.Wait();
213 184
214 EXPECT_FALSE(checker->is_running()); 185 EXPECT_FALSE(checker->is_running());
215 EXPECT_EQ(expected_result, observer.result()); 186 EXPECT_EQ(expected_result, observer.result());
216 EXPECT_EQ(1, observer.call_count()); 187 EXPECT_EQ(1, observer.call_count());
217 ValidateExpectedCalls(expected_checks_run, *checker);
218 } 188 }
219 189
220 void DoRunAllChecksPass(ExtensionInstallCheckerForTest* checker) { 190 void DoRunAllChecksPass(ExtensionInstallCheckerForTest* checker) {
191 SetAllPass(checker);
221 RunChecker(checker, 192 RunChecker(checker,
222 ExtensionInstallChecker::CHECK_ALL,
223 0); 193 0);
224 194
225 ExpectRequirementsPass(*checker); 195 ExpectRequirementsPass(*checker);
226 ExpectPolicyPass(*checker); 196 ExpectPolicyPass(*checker);
227 ExpectBlacklistPass(*checker); 197 ExpectBlacklistPass(*checker);
228 } 198 }
229 199
230 void DoRunAllChecksFail(ExtensionInstallCheckerForTest* checker) { 200 void DoRunAllChecksFail(ExtensionInstallCheckerForTest* checker) {
231 SetAllErrors(checker); 201 SetAllErrors(checker);
232 RunChecker(checker, 202 RunChecker(checker,
233 ExtensionInstallChecker::CHECK_ALL,
234 ExtensionInstallChecker::CHECK_ALL); 203 ExtensionInstallChecker::CHECK_ALL);
235 204
236 ExpectRequirementsError(*checker); 205 ExpectRequirementsError(*checker);
237 ExpectPolicyError(*checker); 206 ExpectPolicyError(*checker);
238 ExpectBlacklistError(*checker); 207 ExpectBlacklistError(*checker);
239 } 208 }
240 209
241 void DoRunSubsetOfChecks(int checks_to_run) { 210 void DoRunSubsetOfChecks(int checks_to_run) {
242 ExtensionInstallCheckerForTest sync_checker(checks_to_run, 211 ExtensionInstallCheckerForTest sync_checker(checks_to_run,
243 /*fail_fast=*/false); 212 /*fail_fast=*/false);
244 ExtensionInstallCheckerAsync async_checker(checks_to_run, 213 ExtensionInstallCheckerForTest async_checker(checks_to_run,
245 /*fail_fast=*/false); 214 /*fail_fast=*/false);
246 ExtensionInstallCheckerForTest* checkers[] = { 215 async_checker.set_is_async(true);
247 &sync_checker, &async_checker,
248 };
249 216
250 for (auto* checker : checkers) { 217 for (auto* checker : {&sync_checker, &async_checker}) {
251 SetAllErrors(checker); 218 SetAllErrors(checker);
252 RunChecker(checker, checks_to_run, checks_to_run); 219 RunChecker(checker, checks_to_run);
253 220
254 if (checks_to_run & ExtensionInstallChecker::CHECK_REQUIREMENTS) 221 if (checks_to_run & ExtensionInstallChecker::CHECK_REQUIREMENTS)
255 ExpectRequirementsError(*checker); 222 ExpectRequirementsError(*checker);
256 else 223 else
257 ExpectRequirementsPass(*checker); 224 ExpectRequirementsPass(*checker);
258 225
259 if (checks_to_run & ExtensionInstallChecker::CHECK_MANAGEMENT_POLICY) 226 if (checks_to_run & ExtensionInstallChecker::CHECK_MANAGEMENT_POLICY)
260 ExpectPolicyError(*checker); 227 ExpectPolicyError(*checker);
261 else 228 else
262 ExpectPolicyPass(*checker); 229 ExpectPolicyPass(*checker);
263 230
264 if (checks_to_run & ExtensionInstallChecker::CHECK_BLACKLIST) 231 if (checks_to_run & ExtensionInstallChecker::CHECK_BLACKLIST)
265 ExpectBlacklistError(*checker); 232 ExpectBlacklistError(*checker);
266 else 233 else
267 ExpectBlacklistPass(*checker); 234 ExpectBlacklistPass(*checker);
268 } 235 }
269 } 236 }
270 237
271 private: 238 private:
272 // A message loop is required for the asynchronous tests. 239 // A message loop is required for the asynchronous tests.
273 base::MessageLoop message_loop; 240 base::MessageLoop message_loop;
274 }; 241 };
275 242
276 // Test the case where all tests pass. 243 // Test the case where all tests pass.
277 TEST_F(ExtensionInstallCheckerTest, AllSucceeded) { 244 TEST_F(ExtensionInstallCheckerTest, AllSucceeded) {
278 ExtensionInstallCheckerForTest sync_checker( 245 ExtensionInstallCheckerForTest sync_checker(
279 ExtensionInstallChecker::CHECK_ALL, /*fail_fast=*/false); 246 ExtensionInstallChecker::CHECK_ALL, /*fail_fast=*/false);
280 DoRunAllChecksPass(&sync_checker); 247 DoRunAllChecksPass(&sync_checker);
281 248
282 ExtensionInstallCheckerAsync async_checker(ExtensionInstallChecker::CHECK_ALL, 249 ExtensionInstallCheckerForTest async_checker(
283 /*fail_fast=*/false); 250 ExtensionInstallChecker::CHECK_ALL, /*fail_fast=*/false);
251 async_checker.set_is_async(true);
284 DoRunAllChecksPass(&async_checker); 252 DoRunAllChecksPass(&async_checker);
285 } 253 }
286 254
287 // Test the case where all tests fail. 255 // Test the case where all tests fail.
288 TEST_F(ExtensionInstallCheckerTest, AllFailed) { 256 TEST_F(ExtensionInstallCheckerTest, AllFailed) {
289 ExtensionInstallCheckerForTest sync_checker( 257 ExtensionInstallCheckerForTest sync_checker(
290 ExtensionInstallChecker::CHECK_ALL, /*fail_fast=*/false); 258 ExtensionInstallChecker::CHECK_ALL, /*fail_fast=*/false);
291 DoRunAllChecksFail(&sync_checker); 259 DoRunAllChecksFail(&sync_checker);
292 260
293 ExtensionInstallCheckerAsync async_checker(ExtensionInstallChecker::CHECK_ALL, 261 ExtensionInstallCheckerForTest async_checker(
294 /*fail_fast=*/false); 262 ExtensionInstallChecker::CHECK_ALL, /*fail_fast=*/false);
263 async_checker.set_is_async(true);
295 DoRunAllChecksFail(&async_checker); 264 DoRunAllChecksFail(&async_checker);
296 } 265 }
297 266
298 // Test running only a subset of tests. 267 // Test running only a subset of tests.
299 TEST_F(ExtensionInstallCheckerTest, RunSubsetOfChecks) { 268 TEST_F(ExtensionInstallCheckerTest, RunSubsetOfChecks) {
300 DoRunSubsetOfChecks(ExtensionInstallChecker::CHECK_MANAGEMENT_POLICY | 269 DoRunSubsetOfChecks(ExtensionInstallChecker::CHECK_MANAGEMENT_POLICY |
301 ExtensionInstallChecker::CHECK_REQUIREMENTS); 270 ExtensionInstallChecker::CHECK_REQUIREMENTS);
302 DoRunSubsetOfChecks(ExtensionInstallChecker::CHECK_BLACKLIST | 271 DoRunSubsetOfChecks(ExtensionInstallChecker::CHECK_BLACKLIST |
303 ExtensionInstallChecker::CHECK_REQUIREMENTS); 272 ExtensionInstallChecker::CHECK_REQUIREMENTS);
304 DoRunSubsetOfChecks(ExtensionInstallChecker::CHECK_BLACKLIST); 273 DoRunSubsetOfChecks(ExtensionInstallChecker::CHECK_BLACKLIST);
305 } 274 }
306 275
307 // Test fail fast with synchronous callbacks. 276 // Test fail fast with synchronous callbacks.
308 TEST_F(ExtensionInstallCheckerTest, FailFastSync) { 277 TEST_F(ExtensionInstallCheckerTest, FailFastSync) {
309 // This test assumes some internal knowledge of the implementation - that 278 // This test assumes some internal knowledge of the implementation - that
310 // the policy check runs first. 279 // the policy check runs first.
311 { 280 {
312 ExtensionInstallCheckerForTest checker(ExtensionInstallChecker::CHECK_ALL, 281 ExtensionInstallCheckerForTest checker(ExtensionInstallChecker::CHECK_ALL,
313 /*fail_fast=*/true); 282 /*fail_fast=*/true);
314 SetAllErrors(&checker); 283 SetAllErrors(&checker);
315 RunChecker(&checker, ExtensionInstallChecker::CHECK_MANAGEMENT_POLICY, 284 RunChecker(&checker, ExtensionInstallChecker::CHECK_MANAGEMENT_POLICY);
316 ExtensionInstallChecker::CHECK_MANAGEMENT_POLICY);
317 285
318 ExpectRequirementsPass(checker); 286 ExpectRequirementsPass(checker);
319 ExpectPolicyError(checker); 287 ExpectPolicyError(checker);
320 ExpectBlacklistPass(checker); 288 ExpectBlacklistPass(checker);
321 } 289 }
322 290
323 { 291 {
324 ExtensionInstallCheckerForTest checker( 292 ExtensionInstallCheckerForTest checker(
325 ExtensionInstallChecker::CHECK_REQUIREMENTS | 293 ExtensionInstallChecker::CHECK_REQUIREMENTS |
326 ExtensionInstallChecker::CHECK_BLACKLIST, 294 ExtensionInstallChecker::CHECK_BLACKLIST,
327 /*fail_fast=*/true); 295 /*fail_fast=*/true);
328 SetAllErrors(&checker); 296 SetAllErrors(&checker);
329 RunChecker(&checker, ExtensionInstallChecker::CHECK_REQUIREMENTS, 297 RunChecker(&checker, ExtensionInstallChecker::CHECK_REQUIREMENTS);
330 ExtensionInstallChecker::CHECK_REQUIREMENTS);
331 298
332 ExpectRequirementsError(checker); 299 ExpectRequirementsError(checker);
333 ExpectPolicyPass(checker); 300 ExpectPolicyPass(checker);
334 ExpectBlacklistPass(checker); 301 ExpectBlacklistPass(checker);
335 } 302 }
336 } 303 }
337 304
338 // Test fail fast with asynchronous callbacks. 305 // Test fail fast with asynchronous callbacks.
339 TEST_F(ExtensionInstallCheckerTest, FailFastAsync) { 306 TEST_F(ExtensionInstallCheckerTest, FailFastAsync) {
340 // This test assumes some internal knowledge of the implementation - that 307 // This test assumes some internal knowledge of the implementation - that
341 // the requirements check runs before the blacklist check. Both checks should 308 // the requirements check runs before the blacklist check. Both checks should
342 // be called, but the requirements check callback arrives first and the 309 // be called, but the requirements check callback arrives first and the
343 // blacklist result will be discarded. 310 // blacklist result will be discarded.
344 ExtensionInstallCheckerAsync checker(ExtensionInstallChecker::CHECK_ALL, 311 ExtensionInstallCheckerForTest checker(ExtensionInstallChecker::CHECK_ALL,
345 /*fail_fast=*/true); 312 /*fail_fast=*/true);
346 313 checker.set_is_async(true);
347 SetAllErrors(&checker); 314 SetAllErrors(&checker);
348 315
349 // The policy check is synchronous and needs to pass for the other tests to 316 // The policy check is synchronous and needs to pass for the other tests to
350 // run. 317 // run.
351 checker.set_policy_check_error(std::string()); 318 SetPolicyError(&checker, PreloadCheck::NONE, "");
352 319
353 RunChecker(&checker, 320 RunChecker(&checker,
354 ExtensionInstallChecker::CHECK_ALL,
355 ExtensionInstallChecker::CHECK_REQUIREMENTS); 321 ExtensionInstallChecker::CHECK_REQUIREMENTS);
356 322
357 ExpectRequirementsError(checker); 323 ExpectRequirementsError(checker);
358 ExpectPolicyPass(checker); 324 ExpectPolicyPass(checker);
359 ExpectBlacklistPass(checker); 325 ExpectBlacklistPass(checker);
360 } 326 }
361 327
362 } // namespace extensions 328 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698