OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 <memory> | 5 #include <memory> |
6 #include <string> | 6 #include <string> |
7 #include <tuple> | 7 #include <tuple> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 16 matching lines...) Expand all Loading... | |
27 #include "chrome/browser/chromeos/login/ui/login_display_host.h" | 27 #include "chrome/browser/chromeos/login/ui/login_display_host.h" |
28 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" | 28 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" |
29 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" | 29 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" |
30 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" | 30 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" |
31 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 31 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
32 #include "chrome/browser/policy/profile_policy_connector.h" | 32 #include "chrome/browser/policy/profile_policy_connector.h" |
33 #include "chrome/browser/policy/profile_policy_connector_factory.h" | 33 #include "chrome/browser/policy/profile_policy_connector_factory.h" |
34 #include "chrome/browser/prefs/pref_service_syncable_util.h" | 34 #include "chrome/browser/prefs/pref_service_syncable_util.h" |
35 #include "chrome/browser/profiles/profile.h" | 35 #include "chrome/browser/profiles/profile.h" |
36 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h" | 36 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h" |
37 #include "chrome/browser/ui/app_list/arc/arc_app_test.h" | |
37 #include "chrome/browser/ui/ash/multi_user/multi_user_util.h" | 38 #include "chrome/browser/ui/ash/multi_user/multi_user_util.h" |
38 #include "chrome/common/pref_names.h" | 39 #include "chrome/common/pref_names.h" |
39 #include "chrome/test/base/testing_profile.h" | 40 #include "chrome/test/base/testing_profile.h" |
40 #include "chromeos/chromeos_switches.h" | 41 #include "chromeos/chromeos_switches.h" |
41 #include "chromeos/dbus/dbus_thread_manager.h" | 42 #include "chromeos/dbus/dbus_thread_manager.h" |
42 #include "chromeos/dbus/fake_session_manager_client.h" | 43 #include "chromeos/dbus/fake_session_manager_client.h" |
43 #include "components/arc/arc_service_manager.h" | 44 #include "components/arc/arc_service_manager.h" |
44 #include "components/arc/arc_session_runner.h" | 45 #include "components/arc/arc_session_runner.h" |
45 #include "components/arc/arc_util.h" | 46 #include "components/arc/arc_util.h" |
46 #include "components/arc/test/fake_arc_session.h" | 47 #include "components/arc/test/fake_arc_session.h" |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
195 content::TestBrowserThreadBundle thread_bundle_; | 196 content::TestBrowserThreadBundle thread_bundle_; |
196 std::unique_ptr<TestingProfile> profile_; | 197 std::unique_ptr<TestingProfile> profile_; |
197 std::unique_ptr<ArcServiceManager> arc_service_manager_; | 198 std::unique_ptr<ArcServiceManager> arc_service_manager_; |
198 std::unique_ptr<ArcSessionManager> arc_session_manager_; | 199 std::unique_ptr<ArcSessionManager> arc_session_manager_; |
199 chromeos::ScopedUserManagerEnabler user_manager_enabler_; | 200 chromeos::ScopedUserManagerEnabler user_manager_enabler_; |
200 base::ScopedTempDir temp_dir_; | 201 base::ScopedTempDir temp_dir_; |
201 | 202 |
202 DISALLOW_COPY_AND_ASSIGN(ArcSessionManagerTestBase); | 203 DISALLOW_COPY_AND_ASSIGN(ArcSessionManagerTestBase); |
203 }; | 204 }; |
204 | 205 |
205 class ArcSessionManagerTest : public ArcSessionManagerTestBase { | 206 // Intermediate class so that the children can inject test parameter freely. |
207 class AbstractArcSessionManagerTest : public ArcSessionManagerTestBase { | |
206 public: | 208 public: |
207 ArcSessionManagerTest() = default; | 209 AbstractArcSessionManagerTest() = default; |
208 | |
209 void SetUp() override { | 210 void SetUp() override { |
210 ArcSessionManagerTestBase::SetUp(); | 211 ArcSessionManagerTestBase::SetUp(); |
212 ArcAppTest::Init(IsPersistentArcEnabled()); | |
211 | 213 |
212 const AccountId account_id(AccountId::FromUserEmailGaiaId( | 214 const AccountId account_id(AccountId::FromUserEmailGaiaId( |
213 profile()->GetProfileUserName(), "1234567890")); | 215 profile()->GetProfileUserName(), "1234567890")); |
214 GetFakeUserManager()->AddUser(account_id); | 216 GetFakeUserManager()->AddUser(account_id); |
215 GetFakeUserManager()->LoginUser(account_id); | 217 GetFakeUserManager()->LoginUser(account_id); |
216 } | 218 } |
217 | 219 |
220 protected: | |
221 virtual bool IsPersistentArcEnabled() = 0; | |
222 | |
223 private: | |
224 DISALLOW_COPY_AND_ASSIGN(AbstractArcSessionManagerTest); | |
225 }; | |
226 | |
227 class ArcSessionManagerTest : public AbstractArcSessionManagerTest, | |
228 public ::testing::WithParamInterface<bool> { | |
229 public: | |
230 ArcSessionManagerTest() = default; | |
231 | |
232 protected: | |
233 bool IsPersistentArcEnabled() override { return GetParam(); } | |
234 | |
218 private: | 235 private: |
219 DISALLOW_COPY_AND_ASSIGN(ArcSessionManagerTest); | 236 DISALLOW_COPY_AND_ASSIGN(ArcSessionManagerTest); |
220 }; | 237 }; |
221 | 238 |
222 TEST_F(ArcSessionManagerTest, PrefChangeTriggersService) { | 239 INSTANTIATE_TEST_CASE_P(, |
hidehiko
2017/02/23 10:29:16
Any name?
victorhsieh
2017/02/24 00:44:59
I prefer not to. It will change the test name fro
| |
240 ArcSessionManagerTest, | |
241 ::testing::Values(false, true)); | |
hidehiko
2017/02/23 10:29:16
::testing::Bool() can be used?
victorhsieh
2017/02/24 00:44:59
Done.
| |
242 | |
243 TEST_P(ArcSessionManagerTest, PrefChangeTriggersService) { | |
244 // TODO(victorhsieh): Implement opt-in and opt-out flow. | |
245 if (arc_session_manager()->IsPersistentArc()) | |
246 return; | |
247 | |
223 ASSERT_EQ(ArcSessionManager::State::NOT_INITIALIZED, | 248 ASSERT_EQ(ArcSessionManager::State::NOT_INITIALIZED, |
224 arc_session_manager()->state()); | 249 arc_session_manager()->state()); |
225 | 250 |
226 PrefService* const pref = profile()->GetPrefs(); | 251 PrefService* const pref = profile()->GetPrefs(); |
227 ASSERT_FALSE(pref->GetBoolean(prefs::kArcEnabled)); | 252 ASSERT_FALSE(pref->GetBoolean(prefs::kArcEnabled)); |
228 | 253 |
229 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); | 254 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); |
230 | 255 |
231 ASSERT_TRUE(WaitForDataRemoved(ArcSessionManager::State::STOPPED)); | 256 ASSERT_TRUE(WaitForDataRemoved(ArcSessionManager::State::STOPPED)); |
232 | 257 |
233 pref->SetBoolean(prefs::kArcEnabled, true); | 258 pref->SetBoolean(prefs::kArcEnabled, true); |
234 base::RunLoop().RunUntilIdle(); | 259 base::RunLoop().RunUntilIdle(); |
235 ASSERT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, | 260 ASSERT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, |
236 arc_session_manager()->state()); | 261 arc_session_manager()->state()); |
237 | 262 |
238 pref->SetBoolean(prefs::kArcEnabled, false); | 263 pref->SetBoolean(prefs::kArcEnabled, false); |
239 | 264 |
240 ASSERT_TRUE(WaitForDataRemoved(ArcSessionManager::State::STOPPED)); | 265 ASSERT_TRUE(WaitForDataRemoved(ArcSessionManager::State::STOPPED)); |
241 | 266 |
242 // Correctly stop service. | 267 // Correctly stop service. |
243 arc_session_manager()->Shutdown(); | 268 arc_session_manager()->Shutdown(); |
244 } | 269 } |
245 | 270 |
246 TEST_F(ArcSessionManagerTest, DisabledForEphemeralDataUsers) { | 271 TEST_P(ArcSessionManagerTest, DisabledForEphemeralDataUsers) { |
247 PrefService* const prefs = profile()->GetPrefs(); | 272 PrefService* const prefs = profile()->GetPrefs(); |
248 EXPECT_FALSE(prefs->GetBoolean(prefs::kArcSignedIn)); | 273 EXPECT_FALSE(prefs->GetBoolean(prefs::kArcSignedIn)); |
249 prefs->SetBoolean(prefs::kArcEnabled, true); | 274 prefs->SetBoolean(prefs::kArcEnabled, true); |
250 | 275 |
251 chromeos::FakeChromeUserManager* const fake_user_manager = | 276 chromeos::FakeChromeUserManager* const fake_user_manager = |
252 GetFakeUserManager(); | 277 GetFakeUserManager(); |
253 | 278 |
254 fake_user_manager->AddUser(fake_user_manager->GetGuestAccountId()); | 279 fake_user_manager->AddUser(fake_user_manager->GetGuestAccountId()); |
255 fake_user_manager->SwitchActiveUser(fake_user_manager->GetGuestAccountId()); | 280 fake_user_manager->SwitchActiveUser(fake_user_manager->GetGuestAccountId()); |
256 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); | 281 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); |
(...skipping 24 matching lines...) Expand all Loading... | |
281 fake_user_manager->RemoveUserFromList(not_in_list_account_id); | 306 fake_user_manager->RemoveUserFromList(not_in_list_account_id); |
282 arc_session_manager()->Shutdown(); | 307 arc_session_manager()->Shutdown(); |
283 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); | 308 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); |
284 ASSERT_EQ(ArcSessionManager::State::NOT_INITIALIZED, | 309 ASSERT_EQ(ArcSessionManager::State::NOT_INITIALIZED, |
285 arc_session_manager()->state()); | 310 arc_session_manager()->state()); |
286 | 311 |
287 // Correctly stop service. | 312 // Correctly stop service. |
288 arc_session_manager()->Shutdown(); | 313 arc_session_manager()->Shutdown(); |
289 } | 314 } |
290 | 315 |
291 TEST_F(ArcSessionManagerTest, BaseWorkflow) { | 316 TEST_P(ArcSessionManagerTest, BaseWorkflow) { |
317 // See BaseWorkflowOnPersistentArc for Persistent ARC flow. | |
318 if (arc_session_manager()->IsPersistentArc()) | |
319 return; | |
320 | |
292 ASSERT_TRUE(arc_session_manager()->IsSessionStopped()); | 321 ASSERT_TRUE(arc_session_manager()->IsSessionStopped()); |
293 ASSERT_EQ(ArcSessionManager::State::NOT_INITIALIZED, | 322 ASSERT_EQ(ArcSessionManager::State::NOT_INITIALIZED, |
294 arc_session_manager()->state()); | 323 arc_session_manager()->state()); |
295 EXPECT_TRUE(arc_session_manager()->sign_in_start_time().is_null()); | 324 EXPECT_TRUE(arc_session_manager()->sign_in_start_time().is_null()); |
296 EXPECT_TRUE(arc_session_manager()->arc_start_time().is_null()); | 325 EXPECT_TRUE(arc_session_manager()->arc_start_time().is_null()); |
297 | 326 |
298 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); | 327 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); |
299 | 328 |
300 // By default ARC is not enabled. | 329 // By default ARC is not enabled. |
301 ASSERT_TRUE(WaitForDataRemoved(ArcSessionManager::State::STOPPED)); | 330 ASSERT_TRUE(WaitForDataRemoved(ArcSessionManager::State::STOPPED)); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
333 base::RunLoop().RunUntilIdle(); | 362 base::RunLoop().RunUntilIdle(); |
334 | 363 |
335 // UI is disabled in unit tests and this code is unchanged. | 364 // UI is disabled in unit tests and this code is unchanged. |
336 ASSERT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, | 365 ASSERT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, |
337 arc_session_manager()->state()); | 366 arc_session_manager()->state()); |
338 | 367 |
339 // Correctly stop service. | 368 // Correctly stop service. |
340 arc_session_manager()->Shutdown(); | 369 arc_session_manager()->Shutdown(); |
341 } | 370 } |
342 | 371 |
343 TEST_F(ArcSessionManagerTest, CancelFetchingDisablesArc) { | 372 TEST_P(ArcSessionManagerTest, CancelFetchingDisablesArc) { |
373 // TODO(victorhsieh): Implement opt-in flow on Persistent ARC. | |
374 if (arc_session_manager()->IsPersistentArc()) | |
375 return; | |
376 | |
344 PrefService* const pref = profile()->GetPrefs(); | 377 PrefService* const pref = profile()->GetPrefs(); |
345 | 378 |
346 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); | 379 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); |
347 pref->SetBoolean(prefs::kArcEnabled, true); | 380 pref->SetBoolean(prefs::kArcEnabled, true); |
348 base::RunLoop().RunUntilIdle(); | 381 base::RunLoop().RunUntilIdle(); |
349 | 382 |
350 ASSERT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, | 383 ASSERT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, |
351 arc_session_manager()->state()); | 384 arc_session_manager()->state()); |
352 | 385 |
353 arc_session_manager()->CancelAuthCode(); | 386 arc_session_manager()->CancelAuthCode(); |
354 | 387 |
355 // Wait until data is removed. | 388 // Wait until data is removed. |
356 ASSERT_TRUE(WaitForDataRemoved(ArcSessionManager::State::STOPPED)); | 389 ASSERT_TRUE(WaitForDataRemoved(ArcSessionManager::State::STOPPED)); |
357 | 390 |
358 ASSERT_FALSE(pref->GetBoolean(prefs::kArcEnabled)); | 391 ASSERT_FALSE(pref->GetBoolean(prefs::kArcEnabled)); |
359 | 392 |
360 // Correctly stop service. | 393 // Correctly stop service. |
361 arc_session_manager()->Shutdown(); | 394 arc_session_manager()->Shutdown(); |
362 } | 395 } |
363 | 396 |
364 TEST_F(ArcSessionManagerTest, CloseUIKeepsArcEnabled) { | 397 TEST_P(ArcSessionManagerTest, CloseUIKeepsArcEnabled) { |
365 PrefService* const pref = profile()->GetPrefs(); | 398 PrefService* const pref = profile()->GetPrefs(); |
366 | 399 |
367 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); | 400 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); |
368 pref->SetBoolean(prefs::kArcEnabled, true); | 401 pref->SetBoolean(prefs::kArcEnabled, true); |
369 base::RunLoop().RunUntilIdle(); | 402 base::RunLoop().RunUntilIdle(); |
370 | 403 |
371 arc_session_manager()->StartArc(); | 404 arc_session_manager()->StartArc(); |
372 | 405 |
373 ASSERT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); | 406 ASSERT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); |
374 | 407 |
375 arc_session_manager()->CancelAuthCode(); | 408 arc_session_manager()->CancelAuthCode(); |
376 ASSERT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); | 409 ASSERT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); |
377 ASSERT_TRUE(pref->GetBoolean(prefs::kArcEnabled)); | 410 ASSERT_TRUE(pref->GetBoolean(prefs::kArcEnabled)); |
378 | 411 |
379 // Correctly stop service. | 412 // Correctly stop service. |
380 arc_session_manager()->Shutdown(); | 413 arc_session_manager()->Shutdown(); |
381 } | 414 } |
382 | 415 |
383 TEST_F(ArcSessionManagerTest, EnableDisablesArc) { | 416 TEST_P(ArcSessionManagerTest, EnableDisablesArc) { |
384 const PrefService* pref = profile()->GetPrefs(); | 417 const PrefService* pref = profile()->GetPrefs(); |
385 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); | 418 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); |
386 | 419 |
387 EXPECT_FALSE(pref->GetBoolean(prefs::kArcEnabled)); | 420 EXPECT_FALSE(pref->GetBoolean(prefs::kArcEnabled)); |
388 arc_session_manager()->SetArcPlayStoreEnabled(true); | 421 arc_session_manager()->SetArcPlayStoreEnabled(true); |
389 EXPECT_TRUE(pref->GetBoolean(prefs::kArcEnabled)); | 422 EXPECT_TRUE(pref->GetBoolean(prefs::kArcEnabled)); |
390 arc_session_manager()->SetArcPlayStoreEnabled(false); | 423 arc_session_manager()->SetArcPlayStoreEnabled(false); |
391 EXPECT_FALSE(pref->GetBoolean(prefs::kArcEnabled)); | 424 EXPECT_FALSE(pref->GetBoolean(prefs::kArcEnabled)); |
392 | 425 |
393 // Correctly stop service. | 426 // Correctly stop service. |
394 arc_session_manager()->Shutdown(); | 427 arc_session_manager()->Shutdown(); |
395 } | 428 } |
396 | 429 |
397 TEST_F(ArcSessionManagerTest, SignInStatus) { | 430 TEST_P(ArcSessionManagerTest, SignInStatus) { |
398 PrefService* const prefs = profile()->GetPrefs(); | 431 PrefService* const prefs = profile()->GetPrefs(); |
399 | 432 |
400 EXPECT_TRUE(arc_session_manager()->sign_in_start_time().is_null()); | 433 EXPECT_TRUE(arc_session_manager()->sign_in_start_time().is_null()); |
401 EXPECT_TRUE(arc_session_manager()->arc_start_time().is_null()); | 434 EXPECT_TRUE(arc_session_manager()->arc_start_time().is_null()); |
402 | 435 |
403 EXPECT_FALSE(prefs->GetBoolean(prefs::kArcSignedIn)); | 436 EXPECT_FALSE(prefs->GetBoolean(prefs::kArcSignedIn)); |
404 prefs->SetBoolean(prefs::kArcEnabled, true); | 437 prefs->SetBoolean(prefs::kArcEnabled, true); |
405 | 438 |
406 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); | 439 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); |
407 EXPECT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, | 440 if (arc_session_manager()->IsPersistentArc()) { |
408 arc_session_manager()->state()); | 441 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); |
442 } else { | |
443 EXPECT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, | |
444 arc_session_manager()->state()); | |
445 } | |
409 | 446 |
410 // Emulate to accept the terms of service. | 447 // Emulate to accept the terms of service. |
411 prefs->SetBoolean(prefs::kArcTermsAccepted, true); | 448 prefs->SetBoolean(prefs::kArcTermsAccepted, true); |
412 arc_session_manager()->StartArc(); | 449 if (!arc_session_manager()->IsPersistentArc()) { |
450 arc_session_manager()->StartArc(); | |
451 } | |
413 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); | 452 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); |
414 EXPECT_TRUE(arc_session_manager()->IsSessionRunning()); | 453 EXPECT_TRUE(arc_session_manager()->IsSessionRunning()); |
415 EXPECT_FALSE(prefs->GetBoolean(prefs::kArcSignedIn)); | 454 EXPECT_FALSE(prefs->GetBoolean(prefs::kArcSignedIn)); |
416 EXPECT_FALSE(arc_session_manager()->arc_start_time().is_null()); | 455 EXPECT_FALSE(arc_session_manager()->arc_start_time().is_null()); |
417 arc_session_manager()->OnProvisioningFinished(ProvisioningResult::SUCCESS); | 456 arc_session_manager()->OnProvisioningFinished(ProvisioningResult::SUCCESS); |
418 EXPECT_TRUE(prefs->GetBoolean(prefs::kArcSignedIn)); | 457 EXPECT_TRUE(prefs->GetBoolean(prefs::kArcSignedIn)); |
419 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); | 458 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); |
420 EXPECT_TRUE(arc_session_manager()->IsSessionRunning()); | 459 EXPECT_TRUE(arc_session_manager()->IsSessionRunning()); |
421 EXPECT_TRUE(arc_session_manager()->sign_in_start_time().is_null()); | 460 EXPECT_TRUE(arc_session_manager()->sign_in_start_time().is_null()); |
422 | 461 |
(...skipping 13 matching lines...) Expand all Loading... | |
436 // On error, UI to send feedback is showing. In that case, | 475 // On error, UI to send feedback is showing. In that case, |
437 // the ARC is still necessary to run on background for gathering the logs. | 476 // the ARC is still necessary to run on background for gathering the logs. |
438 EXPECT_TRUE(prefs->GetBoolean(prefs::kArcSignedIn)); | 477 EXPECT_TRUE(prefs->GetBoolean(prefs::kArcSignedIn)); |
439 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); | 478 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); |
440 EXPECT_TRUE(arc_session_manager()->IsSessionRunning()); | 479 EXPECT_TRUE(arc_session_manager()->IsSessionRunning()); |
441 | 480 |
442 // Correctly stop service. | 481 // Correctly stop service. |
443 arc_session_manager()->Shutdown(); | 482 arc_session_manager()->Shutdown(); |
444 } | 483 } |
445 | 484 |
446 TEST_F(ArcSessionManagerTest, DisabledForDeviceLocalAccount) { | 485 TEST_P(ArcSessionManagerTest, DisabledForDeviceLocalAccount) { |
447 PrefService* const prefs = profile()->GetPrefs(); | 486 PrefService* const prefs = profile()->GetPrefs(); |
448 EXPECT_FALSE(prefs->GetBoolean(prefs::kArcSignedIn)); | 487 EXPECT_FALSE(prefs->GetBoolean(prefs::kArcSignedIn)); |
449 prefs->SetBoolean(prefs::kArcEnabled, true); | 488 prefs->SetBoolean(prefs::kArcEnabled, true); |
450 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); | 489 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); |
451 arc_session_manager()->StartArc(); | 490 arc_session_manager()->StartArc(); |
452 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); | 491 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); |
453 | 492 |
454 // Create device local account and set it as active. | 493 // Create device local account and set it as active. |
455 const std::string email = "device-local-account@fake-email.com"; | 494 const std::string email = "device-local-account@fake-email.com"; |
456 TestingProfile::Builder profile_builder; | 495 TestingProfile::Builder profile_builder; |
(...skipping 11 matching lines...) Expand all Loading... | |
468 device_local_profile->GetPrefs()->SetBoolean(prefs::kArcEnabled, true); | 507 device_local_profile->GetPrefs()->SetBoolean(prefs::kArcEnabled, true); |
469 arc_session_manager()->OnPrimaryUserProfilePrepared( | 508 arc_session_manager()->OnPrimaryUserProfilePrepared( |
470 device_local_profile.get()); | 509 device_local_profile.get()); |
471 EXPECT_EQ(ArcSessionManager::State::NOT_INITIALIZED, | 510 EXPECT_EQ(ArcSessionManager::State::NOT_INITIALIZED, |
472 arc_session_manager()->state()); | 511 arc_session_manager()->state()); |
473 | 512 |
474 // Correctly stop service. | 513 // Correctly stop service. |
475 arc_session_manager()->Shutdown(); | 514 arc_session_manager()->Shutdown(); |
476 } | 515 } |
477 | 516 |
478 TEST_F(ArcSessionManagerTest, DisabledForNonPrimaryProfile) { | 517 TEST_P(ArcSessionManagerTest, DisabledForNonPrimaryProfile) { |
479 profile()->GetPrefs()->SetBoolean(prefs::kArcEnabled, true); | 518 profile()->GetPrefs()->SetBoolean(prefs::kArcEnabled, true); |
480 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); | 519 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); |
481 arc_session_manager()->StartArc(); | 520 arc_session_manager()->StartArc(); |
482 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); | 521 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); |
483 | 522 |
484 // Create a second profile and set it as the active profile. | 523 // Create a second profile and set it as the active profile. |
485 const std::string email = "test@example.com"; | 524 const std::string email = "test@example.com"; |
486 TestingProfile::Builder profile_builder; | 525 TestingProfile::Builder profile_builder; |
487 profile_builder.SetProfileName(email); | 526 profile_builder.SetProfileName(email); |
488 std::unique_ptr<TestingProfile> second_profile(profile_builder.Build()); | 527 std::unique_ptr<TestingProfile> second_profile(profile_builder.Build()); |
489 const AccountId account_id(AccountId::FromUserEmail(email)); | 528 const AccountId account_id(AccountId::FromUserEmail(email)); |
490 GetFakeUserManager()->AddUser(account_id); | 529 GetFakeUserManager()->AddUser(account_id); |
491 GetFakeUserManager()->SwitchActiveUser(account_id); | 530 GetFakeUserManager()->SwitchActiveUser(account_id); |
492 second_profile->GetPrefs()->SetBoolean(prefs::kArcEnabled, true); | 531 second_profile->GetPrefs()->SetBoolean(prefs::kArcEnabled, true); |
493 | 532 |
494 // Check that non-primary user can't use ARC. | 533 // Check that non-primary user can't use ARC. |
495 EXPECT_FALSE(chromeos::ProfileHelper::IsPrimaryProfile(second_profile.get())); | 534 EXPECT_FALSE(chromeos::ProfileHelper::IsPrimaryProfile(second_profile.get())); |
496 EXPECT_FALSE(ArcAppListPrefs::Get(second_profile.get())); | 535 EXPECT_FALSE(ArcAppListPrefs::Get(second_profile.get())); |
497 | 536 |
498 arc_session_manager()->Shutdown(); | 537 arc_session_manager()->Shutdown(); |
499 } | 538 } |
500 | 539 |
501 TEST_F(ArcSessionManagerTest, RemoveDataFolder) { | 540 TEST_P(ArcSessionManagerTest, RemoveDataFolder) { |
541 // TODO(victorhsieh): Implement data removal on Persistent ARC. | |
542 if (arc_session_manager()->IsPersistentArc()) | |
543 return; | |
544 | |
502 profile()->GetPrefs()->SetBoolean(prefs::kArcEnabled, false); | 545 profile()->GetPrefs()->SetBoolean(prefs::kArcEnabled, false); |
503 // Starting session manager with prefs::kArcEnabled off automatically removes | 546 // Starting session manager with prefs::kArcEnabled off automatically removes |
504 // Android's data folder. | 547 // Android's data folder. |
505 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); | 548 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); |
506 EXPECT_TRUE( | 549 EXPECT_TRUE( |
507 profile()->GetPrefs()->GetBoolean(prefs::kArcDataRemoveRequested)); | 550 profile()->GetPrefs()->GetBoolean(prefs::kArcDataRemoveRequested)); |
508 EXPECT_EQ(ArcSessionManager::State::REMOVING_DATA_DIR, | 551 EXPECT_EQ(ArcSessionManager::State::REMOVING_DATA_DIR, |
509 arc_session_manager()->state()); | 552 arc_session_manager()->state()); |
510 // Enable ARC. Data is removed asyncronously. At this moment session manager | 553 // Enable ARC. Data is removed asyncronously. At this moment session manager |
511 // should be in REMOVING_DATA_DIR state. | 554 // should be in REMOVING_DATA_DIR state. |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
544 | 587 |
545 EXPECT_FALSE( | 588 EXPECT_FALSE( |
546 profile()->GetPrefs()->GetBoolean(prefs::kArcDataRemoveRequested)); | 589 profile()->GetPrefs()->GetBoolean(prefs::kArcDataRemoveRequested)); |
547 | 590 |
548 arc_session_manager()->StartArc(); | 591 arc_session_manager()->StartArc(); |
549 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); | 592 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); |
550 | 593 |
551 arc_session_manager()->Shutdown(); | 594 arc_session_manager()->Shutdown(); |
552 } | 595 } |
553 | 596 |
554 TEST_F(ArcSessionManagerTest, IgnoreSecondErrorReporting) { | 597 TEST_P(ArcSessionManagerTest, IgnoreSecondErrorReporting) { |
555 profile()->GetPrefs()->SetBoolean(prefs::kArcEnabled, true); | 598 profile()->GetPrefs()->SetBoolean(prefs::kArcEnabled, true); |
556 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); | 599 arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); |
557 arc_session_manager()->StartArc(); | 600 arc_session_manager()->StartArc(); |
558 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); | 601 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); |
559 | 602 |
560 // Report some failure that does not stop the bridge. | 603 // Report some failure that does not stop the bridge. |
561 arc_session_manager()->OnProvisioningFinished( | 604 arc_session_manager()->OnProvisioningFinished( |
562 ProvisioningResult::GMS_SIGN_IN_FAILED); | 605 ProvisioningResult::GMS_SIGN_IN_FAILED); |
563 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); | 606 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); |
564 | 607 |
565 // Try to send another error that stops the bridge if sent first. It should | 608 // Try to send another error that stops the bridge if sent first. It should |
566 // be ignored. | 609 // be ignored. |
567 arc_session_manager()->OnProvisioningFinished( | 610 arc_session_manager()->OnProvisioningFinished( |
568 ProvisioningResult::CHROME_SERVER_COMMUNICATION_ERROR); | 611 ProvisioningResult::CHROME_SERVER_COMMUNICATION_ERROR); |
569 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); | 612 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); |
570 | 613 |
571 arc_session_manager()->Shutdown(); | 614 arc_session_manager()->Shutdown(); |
572 } | 615 } |
573 | 616 |
574 class ArcSessionManagerPolicyTest | 617 class ArcSessionManagerPolicyTest |
575 : public ArcSessionManagerTest, | 618 : public AbstractArcSessionManagerTest, |
576 public testing::WithParamInterface<std::tuple<base::Value, base::Value>> { | 619 public testing::WithParamInterface< |
620 std::tuple<base::Value, base::Value, bool>> { | |
577 public: | 621 public: |
578 const base::Value& backup_restore_pref_value() const { | 622 const base::Value& backup_restore_pref_value() const { |
579 return std::get<0>(GetParam()); | 623 return std::get<0>(GetParam()); |
580 } | 624 } |
581 | 625 |
582 const base::Value& location_service_pref_value() const { | 626 const base::Value& location_service_pref_value() const { |
583 return std::get<1>(GetParam()); | 627 return std::get<1>(GetParam()); |
584 } | 628 } |
629 | |
630 protected: | |
631 bool IsPersistentArcEnabled() override { return std::get<2>(GetParam()); } | |
585 }; | 632 }; |
586 | 633 |
587 TEST_P(ArcSessionManagerPolicyTest, SkippingTerms) { | 634 TEST_P(ArcSessionManagerPolicyTest, SkippingTerms) { |
588 sync_preferences::TestingPrefServiceSyncable* const prefs = | 635 sync_preferences::TestingPrefServiceSyncable* const prefs = |
589 profile()->GetTestingPrefService(); | 636 profile()->GetTestingPrefService(); |
590 | 637 |
591 // Backup-restore and location-service prefs are off by default. | 638 // Backup-restore and location-service prefs are off by default. |
592 EXPECT_FALSE(prefs->GetBoolean(prefs::kArcSignedIn)); | 639 EXPECT_FALSE(prefs->GetBoolean(prefs::kArcSignedIn)); |
593 EXPECT_FALSE(prefs->GetBoolean(prefs::kArcTermsAccepted)); | 640 EXPECT_FALSE(prefs->GetBoolean(prefs::kArcTermsAccepted)); |
594 | 641 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
631 prefs->RemoveManagedPref(prefs::kArcEnabled); | 678 prefs->RemoveManagedPref(prefs::kArcEnabled); |
632 WaitForDataRemoved(ArcSessionManager::State::STOPPED); | 679 WaitForDataRemoved(ArcSessionManager::State::STOPPED); |
633 arc_session_manager()->Shutdown(); | 680 arc_session_manager()->Shutdown(); |
634 } | 681 } |
635 | 682 |
636 INSTANTIATE_TEST_CASE_P( | 683 INSTANTIATE_TEST_CASE_P( |
637 ArcSessionManagerPolicyTest, | 684 ArcSessionManagerPolicyTest, |
638 ArcSessionManagerPolicyTest, | 685 ArcSessionManagerPolicyTest, |
639 testing::Combine( | 686 testing::Combine( |
640 testing::Values(base::Value(), base::Value(false), base::Value(true)), | 687 testing::Values(base::Value(), base::Value(false), base::Value(true)), |
641 testing::Values(base::Value(), base::Value(false), base::Value(true)))); | 688 testing::Values(base::Value(), base::Value(false), base::Value(true)), |
689 testing::Values(true, false))); | |
642 | 690 |
643 class ArcSessionManagerKioskTest : public ArcSessionManagerTestBase { | 691 class ArcSessionManagerKioskTest : public ArcSessionManagerTestBase { |
644 public: | 692 public: |
645 ArcSessionManagerKioskTest() = default; | 693 ArcSessionManagerKioskTest() = default; |
646 | 694 |
647 void SetUp() override { | 695 void SetUp() override { |
648 ArcSessionManagerTestBase::SetUp(); | 696 ArcSessionManagerTestBase::SetUp(); |
649 const AccountId account_id( | 697 const AccountId account_id( |
650 AccountId::FromUserEmail(profile()->GetProfileUserName())); | 698 AccountId::FromUserEmail(profile()->GetProfileUserName())); |
651 GetFakeUserManager()->AddArcKioskAppUser(account_id); | 699 GetFakeUserManager()->AddArcKioskAppUser(account_id); |
(...skipping 15 matching lines...) Expand all Loading... | |
667 // and not invoked then, including TearDown(). | 715 // and not invoked then, including TearDown(). |
668 bool terminated = false; | 716 bool terminated = false; |
669 arc_session_manager()->SetAttemptUserExitCallbackForTesting( | 717 arc_session_manager()->SetAttemptUserExitCallbackForTesting( |
670 base::Bind([](bool* terminated) { *terminated = true; }, &terminated)); | 718 base::Bind([](bool* terminated) { *terminated = true; }, &terminated)); |
671 | 719 |
672 arc_session_manager()->OnProvisioningFinished( | 720 arc_session_manager()->OnProvisioningFinished( |
673 ProvisioningResult::CHROME_SERVER_COMMUNICATION_ERROR); | 721 ProvisioningResult::CHROME_SERVER_COMMUNICATION_ERROR); |
674 EXPECT_TRUE(terminated); | 722 EXPECT_TRUE(terminated); |
675 } | 723 } |
676 | 724 |
677 class ArcSessionOobeOptInTest : public ArcSessionManagerTest { | 725 class ArcSessionOobeOptInTest : public AbstractArcSessionManagerTest { |
678 public: | 726 public: |
679 ArcSessionOobeOptInTest() = default; | 727 ArcSessionOobeOptInTest() = default; |
680 | 728 |
681 protected: | 729 protected: |
730 bool IsPersistentArcEnabled() override { return false; } | |
hidehiko
2017/02/23 10:29:16
This also should be tested with and without PARC?
victorhsieh
2017/02/24 00:44:59
Done.
| |
731 | |
682 void CreateLoginDisplayHost() { | 732 void CreateLoginDisplayHost() { |
683 fake_login_display_host_ = base::MakeUnique<FakeLoginDisplayHost>(); | 733 fake_login_display_host_ = base::MakeUnique<FakeLoginDisplayHost>(); |
684 } | 734 } |
685 | 735 |
686 void CloseLoginDisplayHost() { fake_login_display_host_.reset(); } | 736 void CloseLoginDisplayHost() { fake_login_display_host_.reset(); } |
687 | 737 |
688 void AppendEnableArcOOBEOptInSwitch() { | 738 void AppendEnableArcOOBEOptInSwitch() { |
689 base::CommandLine::ForCurrentProcess()->AppendSwitch( | 739 base::CommandLine::ForCurrentProcess()->AppendSwitch( |
690 chromeos::switches::kEnableArcOOBEOptIn); | 740 chromeos::switches::kEnableArcOOBEOptIn); |
691 } | 741 } |
(...skipping 19 matching lines...) Expand all Loading... | |
711 EXPECT_FALSE(ArcSessionManager::IsOobeOptInActive()); | 761 EXPECT_FALSE(ArcSessionManager::IsOobeOptInActive()); |
712 GetFakeUserManager()->set_current_user_new(true); | 762 GetFakeUserManager()->set_current_user_new(true); |
713 EXPECT_FALSE(ArcSessionManager::IsOobeOptInActive()); | 763 EXPECT_FALSE(ArcSessionManager::IsOobeOptInActive()); |
714 CreateLoginDisplayHost(); | 764 CreateLoginDisplayHost(); |
715 EXPECT_TRUE(ArcSessionManager::IsOobeOptInActive()); | 765 EXPECT_TRUE(ArcSessionManager::IsOobeOptInActive()); |
716 } | 766 } |
717 | 767 |
718 class ArcSessionOobeOptInNegotiatorTest | 768 class ArcSessionOobeOptInNegotiatorTest |
719 : public ArcSessionOobeOptInTest, | 769 : public ArcSessionOobeOptInTest, |
720 public chromeos::ArcTermsOfServiceScreenActor, | 770 public chromeos::ArcTermsOfServiceScreenActor, |
721 public testing::WithParamInterface<bool> { | 771 public testing::WithParamInterface<std::tuple<bool, bool>> { |
722 public: | 772 public: |
723 ArcSessionOobeOptInNegotiatorTest() = default; | 773 ArcSessionOobeOptInNegotiatorTest() = default; |
724 | 774 |
725 void SetUp() override { | 775 void SetUp() override { |
726 ArcSessionOobeOptInTest::SetUp(); | 776 ArcSessionOobeOptInTest::SetUp(); |
727 | 777 |
728 AppendEnableArcOOBEOptInSwitch(); | 778 AppendEnableArcOOBEOptInSwitch(); |
729 | 779 |
730 ArcTermsOfServiceOobeNegotiator::SetArcTermsOfServiceScreenActorForTesting( | 780 ArcTermsOfServiceOobeNegotiator::SetArcTermsOfServiceScreenActorForTesting( |
731 this); | 781 this); |
(...skipping 19 matching lines...) Expand all Loading... | |
751 // Correctly stop service. | 801 // Correctly stop service. |
752 arc_session_manager()->Shutdown(); | 802 arc_session_manager()->Shutdown(); |
753 | 803 |
754 ArcTermsOfServiceOobeNegotiator::SetArcTermsOfServiceScreenActorForTesting( | 804 ArcTermsOfServiceOobeNegotiator::SetArcTermsOfServiceScreenActorForTesting( |
755 nullptr); | 805 nullptr); |
756 | 806 |
757 ArcSessionOobeOptInTest::TearDown(); | 807 ArcSessionOobeOptInTest::TearDown(); |
758 } | 808 } |
759 | 809 |
760 protected: | 810 protected: |
761 bool IsManagedUser() { return GetParam(); } | 811 bool IsManagedUser() { return std::get<0>(GetParam()); } |
812 | |
813 bool IsPersistentArcEnabled() override { return std::get<1>(GetParam()); } | |
762 | 814 |
763 void ReportResult(bool accepted) { | 815 void ReportResult(bool accepted) { |
764 for (auto& observer : observer_list_) { | 816 for (auto& observer : observer_list_) { |
765 if (accepted) | 817 if (accepted) |
766 observer.OnAccept(); | 818 observer.OnAccept(); |
767 else | 819 else |
768 observer.OnSkip(); | 820 observer.OnSkip(); |
769 } | 821 } |
770 base::RunLoop().RunUntilIdle(); | 822 base::RunLoop().RunUntilIdle(); |
771 } | 823 } |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
811 void Hide() override {} | 863 void Hide() override {} |
812 | 864 |
813 base::ObserverList<chromeos::ArcTermsOfServiceScreenActorObserver> | 865 base::ObserverList<chromeos::ArcTermsOfServiceScreenActorObserver> |
814 observer_list_; | 866 observer_list_; |
815 | 867 |
816 DISALLOW_COPY_AND_ASSIGN(ArcSessionOobeOptInNegotiatorTest); | 868 DISALLOW_COPY_AND_ASSIGN(ArcSessionOobeOptInNegotiatorTest); |
817 }; | 869 }; |
818 | 870 |
819 INSTANTIATE_TEST_CASE_P(ArcSessionOobeOptInNegotiatorTestImpl, | 871 INSTANTIATE_TEST_CASE_P(ArcSessionOobeOptInNegotiatorTestImpl, |
820 ArcSessionOobeOptInNegotiatorTest, | 872 ArcSessionOobeOptInNegotiatorTest, |
821 ::testing::Values(true, false)); | 873 testing::Combine(::testing::Values(true, false), |
874 ::testing::Values(true, false))); | |
822 | 875 |
823 TEST_P(ArcSessionOobeOptInNegotiatorTest, OobeTermsAccepted) { | 876 TEST_P(ArcSessionOobeOptInNegotiatorTest, OobeTermsAccepted) { |
824 actor()->Show(); | 877 actor()->Show(); |
825 MaybeWaitForDataRemoved(); | 878 MaybeWaitForDataRemoved(); |
826 EXPECT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, | 879 EXPECT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, |
827 arc_session_manager()->state()); | 880 arc_session_manager()->state()); |
828 ReportResult(true); | 881 ReportResult(true); |
829 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); | 882 EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); |
830 EXPECT_TRUE(arc_session_manager()->IsArcPlayStoreEnabled()); | 883 EXPECT_TRUE(arc_session_manager()->IsArcPlayStoreEnabled()); |
831 } | 884 } |
(...skipping 15 matching lines...) Expand all Loading... | |
847 EXPECT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, | 900 EXPECT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, |
848 arc_session_manager()->state()); | 901 arc_session_manager()->state()); |
849 CloseLoginDisplayHost(); | 902 CloseLoginDisplayHost(); |
850 ReportActorDestroyed(); | 903 ReportActorDestroyed(); |
851 EXPECT_EQ(ArcSessionManager::State::STOPPED, arc_session_manager()->state()); | 904 EXPECT_EQ(ArcSessionManager::State::STOPPED, arc_session_manager()->state()); |
852 EXPECT_FALSE(!IsManagedUser() && | 905 EXPECT_FALSE(!IsManagedUser() && |
853 arc_session_manager()->IsArcPlayStoreEnabled()); | 906 arc_session_manager()->IsArcPlayStoreEnabled()); |
854 } | 907 } |
855 | 908 |
856 } // namespace arc | 909 } // namespace arc |
OLD | NEW |