Chromium Code Reviews| 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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" |
| 7 #include "chrome/browser/chrome_notification_types.h" | 7 #include "chrome/browser/chrome_notification_types.h" |
| 8 #include "chrome/browser/extensions/app_sync_data.h" | 8 #include "chrome/browser/extensions/app_sync_data.h" |
| 9 #include "chrome/browser/extensions/bookmark_app_helper.h" | 9 #include "chrome/browser/extensions/bookmark_app_helper.h" |
| 10 #include "chrome/browser/extensions/extension_service.h" | 10 #include "chrome/browser/extensions/extension_service.h" |
| 11 #include "chrome/browser/extensions/extension_sync_service.h" | 11 #include "chrome/browser/extensions/extension_sync_service.h" |
| 12 #include "chrome/browser/extensions/launch_util.h" | 12 #include "chrome/browser/extensions/launch_util.h" |
| 13 #include "chrome/browser/profiles/profile.h" | 13 #include "chrome/browser/profiles/profile.h" |
| 14 #include "chrome/browser/sync/test/integration/apps_helper.h" | 14 #include "chrome/browser/sync/test/integration/apps_helper.h" |
| 15 #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h" | 15 #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h" |
| 16 #include "chrome/browser/sync/test/integration/sync_app_helper.h" | 16 #include "chrome/browser/sync/test/integration/sync_app_helper.h" |
| 17 #include "chrome/browser/sync/test/integration/sync_integration_test_util.h" | 17 #include "chrome/browser/sync/test/integration/sync_integration_test_util.h" |
| 18 #include "chrome/browser/sync/test/integration/sync_test.h" | 18 #include "chrome/browser/sync/test/integration/sync_test.h" |
| 19 #include "chrome/common/extensions/extension_constants.h" | 19 #include "chrome/common/extensions/extension_constants.h" |
|
Fady Samuel
2014/08/29 19:39:47
Do you need this?
Xi Han
2014/08/29 19:52:54
Removed.
| |
| 20 #include "content/public/browser/notification_service.h" | 20 #include "content/public/browser/notification_service.h" |
| 21 #include "content/public/test/test_utils.h" | 21 #include "content/public/test/test_utils.h" |
| 22 #include "extensions/browser/app_sorting.h" | 22 #include "extensions/browser/app_sorting.h" |
| 23 #include "extensions/browser/extension_prefs.h" | 23 #include "extensions/browser/extension_prefs.h" |
| 24 #include "extensions/browser/extension_registry.h" | 24 #include "extensions/browser/extension_registry.h" |
| 25 #include "extensions/browser/extension_system.h" | 25 #include "extensions/browser/extension_system.h" |
| 26 #include "extensions/common/constants.h" | |
| 26 #include "sync/api/string_ordinal.h" | 27 #include "sync/api/string_ordinal.h" |
| 27 | 28 |
| 28 using apps_helper::AllProfilesHaveSameAppsAsVerifier; | 29 using apps_helper::AllProfilesHaveSameAppsAsVerifier; |
| 29 using apps_helper::CopyNTPOrdinals; | 30 using apps_helper::CopyNTPOrdinals; |
| 30 using apps_helper::DisableApp; | 31 using apps_helper::DisableApp; |
| 31 using apps_helper::EnableApp; | 32 using apps_helper::EnableApp; |
| 32 using apps_helper::FixNTPOrdinalCollisions; | 33 using apps_helper::FixNTPOrdinalCollisions; |
| 33 using apps_helper::GetAppLaunchOrdinalForApp; | 34 using apps_helper::GetAppLaunchOrdinalForApp; |
| 34 using apps_helper::HasSameAppsAsVerifier; | 35 using apps_helper::HasSameAppsAsVerifier; |
| 35 using apps_helper::IncognitoDisableApp; | 36 using apps_helper::IncognitoDisableApp; |
| (...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 328 // which page the CWS appears on and sync. Both clients should have the same | 329 // which page the CWS appears on and sync. Both clients should have the same |
| 329 // page and app launch ordinal values for the CWS. | 330 // page and app launch ordinal values for the CWS. |
| 330 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, UpdateCWSOrdinals) { | 331 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, UpdateCWSOrdinals) { |
| 331 ASSERT_TRUE(SetupSync()); | 332 ASSERT_TRUE(SetupSync()); |
| 332 ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); | 333 ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); |
| 333 | 334 |
| 334 // Change the app launch ordinal. | 335 // Change the app launch ordinal. |
| 335 syncer::StringOrdinal cws_app_launch_ordinal = | 336 syncer::StringOrdinal cws_app_launch_ordinal = |
| 336 extensions::ExtensionPrefs::Get(GetProfile(0)) | 337 extensions::ExtensionPrefs::Get(GetProfile(0)) |
| 337 ->app_sorting() | 338 ->app_sorting() |
| 338 ->GetAppLaunchOrdinal(extension_misc::kWebStoreAppId); | 339 ->GetAppLaunchOrdinal(extensions::kWebStoreAppId); |
| 339 extensions::ExtensionPrefs::Get(GetProfile(0)) | 340 extensions::ExtensionPrefs::Get(GetProfile(0)) |
| 340 ->app_sorting() | 341 ->app_sorting() |
| 341 ->SetAppLaunchOrdinal(extension_misc::kWebStoreAppId, | 342 ->SetAppLaunchOrdinal(extensions::kWebStoreAppId, |
| 342 cws_app_launch_ordinal.CreateAfter()); | 343 cws_app_launch_ordinal.CreateAfter()); |
| 343 extensions::ExtensionPrefs::Get(verifier()) | 344 extensions::ExtensionPrefs::Get(verifier()) |
| 344 ->app_sorting() | 345 ->app_sorting() |
| 345 ->SetAppLaunchOrdinal(extension_misc::kWebStoreAppId, | 346 ->SetAppLaunchOrdinal(extensions::kWebStoreAppId, |
| 346 cws_app_launch_ordinal.CreateAfter()); | 347 cws_app_launch_ordinal.CreateAfter()); |
| 347 ASSERT_TRUE(AwaitAllProfilesHaveSameAppsAsVerifier()); | 348 ASSERT_TRUE(AwaitAllProfilesHaveSameAppsAsVerifier()); |
| 348 | 349 |
| 349 // Change the page ordinal. | 350 // Change the page ordinal. |
| 350 syncer::StringOrdinal cws_page_ordinal = | 351 syncer::StringOrdinal cws_page_ordinal = |
| 351 extensions::ExtensionPrefs::Get(GetProfile(1)) | 352 extensions::ExtensionPrefs::Get(GetProfile(1)) |
| 352 ->app_sorting() | 353 ->app_sorting() |
| 353 ->GetPageOrdinal(extension_misc::kWebStoreAppId); | 354 ->GetPageOrdinal(extensions::kWebStoreAppId); |
| 354 extensions::ExtensionPrefs::Get(GetProfile(1))->app_sorting()->SetPageOrdinal( | 355 extensions::ExtensionPrefs::Get(GetProfile(1))->app_sorting()->SetPageOrdinal( |
| 355 extension_misc::kWebStoreAppId, cws_page_ordinal.CreateAfter()); | 356 extensions::kWebStoreAppId, cws_page_ordinal.CreateAfter()); |
| 356 extensions::ExtensionPrefs::Get(verifier())->app_sorting()->SetPageOrdinal( | 357 extensions::ExtensionPrefs::Get(verifier())->app_sorting()->SetPageOrdinal( |
| 357 extension_misc::kWebStoreAppId, cws_page_ordinal.CreateAfter()); | 358 extensions::kWebStoreAppId, cws_page_ordinal.CreateAfter()); |
| 358 ASSERT_TRUE(AwaitAllProfilesHaveSameAppsAsVerifier()); | 359 ASSERT_TRUE(AwaitAllProfilesHaveSameAppsAsVerifier()); |
| 359 } | 360 } |
| 360 | 361 |
| 361 // Adjust the launch type on the first client and sync. Both clients should | 362 // Adjust the launch type on the first client and sync. Both clients should |
| 362 // have the same launch type values for the CWS. | 363 // have the same launch type values for the CWS. |
| 363 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, UpdateLaunchType) { | 364 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, UpdateLaunchType) { |
| 364 ASSERT_TRUE(SetupSync()); | 365 ASSERT_TRUE(SetupSync()); |
| 365 ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); | 366 ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); |
| 366 | 367 |
| 367 // Change the launch type to window. | 368 // Change the launch type to window. |
| 368 extensions::SetLaunchType(GetExtensionService(GetProfile(1)), | 369 extensions::SetLaunchType(GetExtensionService(GetProfile(1)), |
| 369 extension_misc::kWebStoreAppId, | 370 extensions::kWebStoreAppId, |
| 370 extensions::LAUNCH_TYPE_WINDOW); | 371 extensions::LAUNCH_TYPE_WINDOW); |
| 371 extensions::SetLaunchType(GetExtensionService(verifier()), | 372 extensions::SetLaunchType(GetExtensionService(verifier()), |
| 372 extension_misc::kWebStoreAppId, | 373 extensions::kWebStoreAppId, |
| 373 extensions::LAUNCH_TYPE_WINDOW); | 374 extensions::LAUNCH_TYPE_WINDOW); |
| 374 ASSERT_TRUE(AwaitAllProfilesHaveSameAppsAsVerifier()); | 375 ASSERT_TRUE(AwaitAllProfilesHaveSameAppsAsVerifier()); |
| 375 | 376 |
| 376 // Change the launch type to regular tab. | 377 // Change the launch type to regular tab. |
| 377 extensions::SetLaunchType(GetExtensionService(GetProfile(1)), | 378 extensions::SetLaunchType(GetExtensionService(GetProfile(1)), |
| 378 extension_misc::kWebStoreAppId, | 379 extensions::kWebStoreAppId, |
| 379 extensions::LAUNCH_TYPE_REGULAR); | 380 extensions::LAUNCH_TYPE_REGULAR); |
| 380 ASSERT_FALSE(HasSameAppsAsVerifier(1)); | 381 ASSERT_FALSE(HasSameAppsAsVerifier(1)); |
| 381 extensions::SetLaunchType(GetExtensionService(verifier()), | 382 extensions::SetLaunchType(GetExtensionService(verifier()), |
| 382 extension_misc::kWebStoreAppId, | 383 extensions::kWebStoreAppId, |
| 383 extensions::LAUNCH_TYPE_REGULAR); | 384 extensions::LAUNCH_TYPE_REGULAR); |
| 384 ASSERT_TRUE(AwaitAllProfilesHaveSameAppsAsVerifier()); | 385 ASSERT_TRUE(AwaitAllProfilesHaveSameAppsAsVerifier()); |
| 385 } | 386 } |
| 386 | 387 |
| 387 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, UnexpectedLaunchType) { | 388 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, UnexpectedLaunchType) { |
| 388 ASSERT_TRUE(SetupSync()); | 389 ASSERT_TRUE(SetupSync()); |
| 389 ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); | 390 ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); |
| 390 | 391 |
| 391 extensions::SetLaunchType(GetExtensionService(GetProfile(1)), | 392 extensions::SetLaunchType(GetExtensionService(GetProfile(1)), |
| 392 extension_misc::kWebStoreAppId, | 393 extensions::kWebStoreAppId, |
| 393 extensions::LAUNCH_TYPE_REGULAR); | 394 extensions::LAUNCH_TYPE_REGULAR); |
| 394 extensions::SetLaunchType(GetExtensionService(verifier()), | 395 extensions::SetLaunchType(GetExtensionService(verifier()), |
| 395 extension_misc::kWebStoreAppId, | 396 extensions::kWebStoreAppId, |
| 396 extensions::LAUNCH_TYPE_REGULAR); | 397 extensions::LAUNCH_TYPE_REGULAR); |
| 397 ASSERT_TRUE(AwaitAllProfilesHaveSameAppsAsVerifier()); | 398 ASSERT_TRUE(AwaitAllProfilesHaveSameAppsAsVerifier()); |
| 398 | 399 |
| 399 const extensions::Extension* extension = | 400 const extensions::Extension* extension = |
| 400 GetExtensionRegistry(GetProfile(1))->GetExtensionById( | 401 GetExtensionRegistry(GetProfile(1))->GetExtensionById( |
| 401 extension_misc::kWebStoreAppId, | 402 extensions::kWebStoreAppId, |
| 402 extensions::ExtensionRegistry::EVERYTHING); | 403 extensions::ExtensionRegistry::EVERYTHING); |
| 403 ASSERT_TRUE(extension); | 404 ASSERT_TRUE(extension); |
| 404 | 405 |
| 405 ExtensionSyncService* extension_sync_service = | 406 ExtensionSyncService* extension_sync_service = |
| 406 ExtensionSyncService::Get(GetProfile(1)); | 407 ExtensionSyncService::Get(GetProfile(1)); |
| 407 | 408 |
| 408 extensions::AppSyncData original_data( | 409 extensions::AppSyncData original_data( |
| 409 extension_sync_service->GetAppSyncData(*extension)); | 410 extension_sync_service->GetAppSyncData(*extension)); |
| 410 | 411 |
| 411 // Create an invalid launch type and ensure it doesn't get down-synced. This | 412 // Create an invalid launch type and ensure it doesn't get down-synced. This |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 462 content::WindowedNotificationObserver windowed_observer( | 463 content::WindowedNotificationObserver windowed_observer( |
| 463 extensions::NOTIFICATION_CRX_INSTALLER_DONE, | 464 extensions::NOTIFICATION_CRX_INSTALLER_DONE, |
| 464 base::Bind(&AllProfilesHaveSameAppsAsVerifier)); | 465 base::Bind(&AllProfilesHaveSameAppsAsVerifier)); |
| 465 windowed_observer.Wait(); | 466 windowed_observer.Wait(); |
| 466 } | 467 } |
| 467 } | 468 } |
| 468 | 469 |
| 469 // TODO(akalin): Add tests exercising: | 470 // TODO(akalin): Add tests exercising: |
| 470 // - Offline installation/uninstallation behavior | 471 // - Offline installation/uninstallation behavior |
| 471 // - App-specific properties | 472 // - App-specific properties |
| OLD | NEW |