15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/extension_service.h" 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/extension_sorting.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/profile_sync_service_harness.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/test/integration/apps_helper.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/test/integration/sync_app_helper.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/test/integration/sync_test.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/extensions/extension_constants.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/api/string_ordinal.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using apps_helper::AllProfilesHaveSameAppsAsVerifier; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using apps_helper::CopyNTPOrdinals; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using apps_helper::DisableApp; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using apps_helper::EnableApp; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using apps_helper::FixNTPOrdinalCollisions; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using apps_helper::GetAppLaunchOrdinalForApp; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using apps_helper::HasSameAppsAsVerifier; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using apps_helper::IncognitoDisableApp; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using apps_helper::IncognitoEnableApp; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using apps_helper::InstallApp; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using apps_helper::InstallAppsPendingForSync; 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using apps_helper::InstallPlatformApp; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using apps_helper::SetAppLaunchOrdinalForApp; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using apps_helper::SetPageOrdinalForApp; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using apps_helper::UninstallApp; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TwoClientAppsSyncTest : public SyncTest { 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TwoClientAppsSyncTest() : SyncTest(TWO_CLIENT) {} 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~TwoClientAppsSyncTest() {} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TwoClientAppsSyncTest); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, StartWithNoApps) { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, StartWithSameApps) { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int kNumApps = 5; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < kNumApps; ++i) { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), i); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(1), i); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), i); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Install some apps on both clients, some on only one client, some on only the 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// other, and sync. Both clients should end up with all apps, and the app and 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// page ordinals should be identical. 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, StartWithDifferentApps) { 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int i = 0; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int kNumCommonApps = 5; 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int j = 0; j < kNumCommonApps; ++i, ++j) { 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), i); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(1), i); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), i); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int kNumProfile0Apps = 10; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int j = 0; j < kNumProfile0Apps; ++i, ++j) { 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), i); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), i); 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CopyNTPOrdinals(GetProfile(0), verifier(), i); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int kNumProfile1Apps = 10; 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int j = 0; j < kNumProfile1Apps; ++i, ++j) { 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(1), i); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), i); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CopyNTPOrdinals(GetProfile(1), verifier(), i); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const int kNumPlatformApps = 5; 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int j = 0; j < kNumPlatformApps; ++i, ++j) { 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) InstallPlatformApp(GetProfile(1), i); 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) InstallPlatformApp(verifier(), i); 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CopyNTPOrdinals(GetProfile(1), verifier(), i); 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FixNTPOrdinalCollisions(verifier()); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(0)); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(1)); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Install some apps on both clients, then sync. Then install some apps on only 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// one client, some on only the other, and then sync again. Both clients should 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// end up with all apps, and the app and page ordinals should be identical. 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, InstallDifferentApps) { 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int i = 0; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int kNumCommonApps = 5; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int j = 0; j < kNumCommonApps; ++i, ++j) { 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), i); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(1), i); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), i); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int kNumProfile0Apps = 10; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int j = 0; j < kNumProfile0Apps; ++i, ++j) { 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), i); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), i); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CopyNTPOrdinals(GetProfile(0), verifier(), i); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int kNumProfile1Apps = 10; 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int j = 0; j < kNumProfile1Apps; ++i, ++j) { 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(1), i); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), i); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CopyNTPOrdinals(GetProfile(1), verifier(), i); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FixNTPOrdinalCollisions(verifier()); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(0)); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(1)); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3711279. 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, Add) { 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), 0); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), 0); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(0)); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(1)); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3706267. 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, Uninstall) { 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()); 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), 0); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), 0); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(0)); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(1)); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UninstallApp(GetProfile(0), 0); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UninstallApp(verifier(), 0); 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Install an app on one client, then sync. Then uninstall the app on the first 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// client and sync again. Now install a new app on the first client and sync. 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Both client should only have the second app, with identical app and page 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ordinals. 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, UninstallThenInstall) { 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), 0); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), 0); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(0)); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(1)); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UninstallApp(GetProfile(0), 0); 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UninstallApp(verifier(), 0); 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), 1); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), 1); 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(0)); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(1)); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3699295. 219c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Flaky: http://crbug.com/226055 220c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, DISABLED_Merge) { 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()); 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), 0); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(1), 0); 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UninstallApp(GetProfile(0), 0); 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), 1); 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), 1); 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), 2); 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(1), 2); 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), 2); 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(1), 3); 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), 3); 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(0)); 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(1)); 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 7723126. 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, UpdateEnableDisableApp) { 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()); 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), 0); 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(1), 0); 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), 0); 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableApp(GetProfile(0), 0); 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableApp(verifier(), 0); 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(HasSameAppsAsVerifier(0)); 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(HasSameAppsAsVerifier(1)); 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnableApp(GetProfile(1), 0); 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnableApp(verifier(), 0); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(HasSameAppsAsVerifier(1)); 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(HasSameAppsAsVerifier(0)); 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 7706637. 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, UpdateIncognitoEnableDisable) { 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()); 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), 0); 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(1), 0); 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), 0); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IncognitoEnableApp(GetProfile(0), 0); 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IncognitoEnableApp(verifier(), 0); 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(HasSameAppsAsVerifier(0)); 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(HasSameAppsAsVerifier(1)); 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IncognitoDisableApp(GetProfile(1), 0); 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IncognitoDisableApp(verifier(), 0); 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(HasSameAppsAsVerifier(1)); 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(HasSameAppsAsVerifier(0)); 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3718276. 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, DisableApps) { 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()); 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->DisableSyncForDatatype(syncer::APPS)); 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), 0); 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), 0); 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitFullSyncCompletion("Installed an app.")); 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(HasSameAppsAsVerifier(0)); 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(HasSameAppsAsVerifier(1)); 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->EnableSyncForDatatype(syncer::APPS)); 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(0)); 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(1)); 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Disable sync for the second client and then install an app on the first 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// client, then enable sync on the second client. Both clients should have the 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// same app with identical app and page ordinals. 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3720303. 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, DisableSync) { 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()); 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->DisableSyncForAllDatatypes()); 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), 0); 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), 0); 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitFullSyncCompletion("Installed an app.")); 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(HasSameAppsAsVerifier(0)); 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(HasSameAppsAsVerifier(1)); 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->EnableSyncForAllDatatypes()); 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(0)); 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallAppsPendingForSync(GetProfile(1)); 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Install the same app on both clients, then sync. Change the page ordinal on 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// one client and sync. Both clients should have the updated page ordinal for 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the app. 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, UpdatePageOrdinal) { 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()); 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) syncer::StringOrdinal initial_page = 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) syncer::StringOrdinal::CreateInitialOrdinal(); 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), 0); 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(1), 0); 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), 0); 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) syncer::StringOrdinal second_page = initial_page.CreateAfter(); 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetPageOrdinalForApp(GetProfile(0), 0, second_page); 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetPageOrdinalForApp(verifier(), 0, second_page); 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Install the same app on both clients, then sync. Change the app launch 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ordinal on one client and sync. Both clients should have the updated app 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// launch ordinal for the app. 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, UpdateAppLaunchOrdinal) { 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()); 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(0), 0); 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(GetProfile(1), 0); 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallApp(verifier(), 0); 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) syncer::StringOrdinal initial_position = 3802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetAppLaunchOrdinalForApp(GetProfile(0), 0); 3812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) syncer::StringOrdinal second_position = initial_position.CreateAfter(); 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetAppLaunchOrdinalForApp(GetProfile(0), 0, second_position); 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetAppLaunchOrdinalForApp(verifier(), 0, second_position); 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Adjust the CWS location within a page on the first client and sync. Adjust 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// which page the CWS appears on and sync. Both clients should have the same 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// page and app launch ordinal values for the CWS. 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, UpdateCWSOrdinals) { 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()); 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Change the app launch ordinal. 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) syncer::StringOrdinal cws_app_launch_ordinal = 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetProfile(0)->GetExtensionService()-> 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extension_prefs()->extension_sorting()->GetAppLaunchOrdinal( 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extension_misc::kWebStoreAppId); 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetProfile(0)->GetExtensionService()->extension_prefs()->extension_sorting()-> 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetAppLaunchOrdinal( 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extension_misc::kWebStoreAppId, cws_app_launch_ordinal.CreateAfter()); 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verifier()->GetExtensionService()->extension_prefs()->extension_sorting()-> 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetAppLaunchOrdinal( 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extension_misc::kWebStoreAppId, cws_app_launch_ordinal.CreateAfter()); 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Change the page ordinal. 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) syncer::StringOrdinal cws_page_ordinal = 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetProfile(1)->GetExtensionService()-> 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extension_prefs()->extension_sorting()->GetPageOrdinal( 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extension_misc::kWebStoreAppId); 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetProfile(1)->GetExtensionService()->extension_prefs()-> 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extension_sorting()->SetPageOrdinal(extension_misc::kWebStoreAppId, 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cws_page_ordinal.CreateAfter()); 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verifier()->GetExtensionService()->extension_prefs()-> 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extension_sorting()->SetPageOrdinal(extension_misc::kWebStoreAppId, 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cws_page_ordinal.CreateAfter()); 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier()); 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(akalin): Add tests exercising: 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// - Offline installation/uninstallation behavior 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// - App-specific properties 428