two_client_extensions_sync_test.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// Copyright (c) 2012 The Chromium Authors. All rights reserved.
24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// Use of this source code is governed by a BSD-style license that can be
34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// found in the LICENSE file.
44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "base/basictypes.h"
64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "chrome/browser/sync/test/integration/extensions_helper.h"
74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "chrome/browser/sync/test/integration/profile_sync_service_harness.h"
84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "chrome/browser/sync/test/integration/sync_test.h"
94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectusing extensions_helper::AllProfilesHaveSameExtensionsAsVerifier;
114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectusing extensions_helper::DisableExtension;
124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectusing extensions_helper::EnableExtension;
134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectusing extensions_helper::HasSameExtensionsAsVerifier;
144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectusing extensions_helper::IncognitoDisableExtension;
154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectusing extensions_helper::IncognitoEnableExtension;
164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectusing extensions_helper::InstallExtension;
174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectusing extensions_helper::InstallExtensionsPendingForSync;
184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectusing extensions_helper::UninstallExtension;
194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectclass TwoClientExtensionsSyncTest : public SyncTest {
214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project public:
224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  TwoClientExtensionsSyncTest() : SyncTest(TWO_CLIENT) {}
234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  virtual ~TwoClientExtensionsSyncTest() {}
254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project private:
274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  DISALLOW_COPY_AND_ASSIGN(TwoClientExtensionsSyncTest);
284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project};
294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectIN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest, StartWithNoExtensions) {
314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(SetupSync());
324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectIN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest, StartWithSameExtensions) {
374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(SetupClients());
384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  const int kNumExtensions = 5;
404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  for (int i = 0; i < kNumExtensions; ++i) {
414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    InstallExtension(GetProfile(0), i);
424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    InstallExtension(GetProfile(1), i);
434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    InstallExtension(verifier(), i);
444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  }
454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(SetupSync());
474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectIN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest,
544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                       StartWithDifferentExtensions) {
554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(SetupClients());
564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  int i = 0;
584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  const int kNumCommonExtensions = 5;
604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  for (int j = 0; j < kNumCommonExtensions; ++i, ++j) {
614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    InstallExtension(GetProfile(0), i);
6273018b4a1d088cdda0e7bd059fddf1f308a8195aIan Rogers    InstallExtension(GetProfile(1), i);
634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    InstallExtension(verifier(), i);
644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  }
654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  const int kNumProfile0Extensions = 10;
674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  for (int j = 0; j < kNumProfile0Extensions; ++i, ++j) {
684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    InstallExtension(GetProfile(0), i);
694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    InstallExtension(verifier(), i);
704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  }
714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  const int kNumProfile1Extensions = 10;
734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  for (int j = 0; j < kNumProfile1Extensions; ++i, ++j) {
744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    InstallExtension(GetProfile(1), i);
754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    InstallExtension(verifier(), i);
764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  }
774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(SetupSync());
794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(GetProfile(0));
834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(GetProfile(1));
844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectIN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest,
894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                       InstallDifferentExtensions) {
904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(SetupClients());
914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  int i = 0;
934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  const int kNumCommonExtensions = 5;
954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  for (int j = 0; j < kNumCommonExtensions; ++i, ++j) {
964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    InstallExtension(GetProfile(0), i);
974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    InstallExtension(GetProfile(1), i);
984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    InstallExtension(verifier(), i);
994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  }
1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(SetupSync());
1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  const int kNumProfile0Extensions = 10;
1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  for (int j = 0; j < kNumProfile0Extensions; ++i, ++j) {
1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    InstallExtension(GetProfile(0), i);
1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    InstallExtension(verifier(), i);
1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  }
1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  const int kNumProfile1Extensions = 10;
1124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  for (int j = 0; j < kNumProfile1Extensions; ++i, ++j) {
1134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    InstallExtension(GetProfile(1), i);
1144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    InstallExtension(verifier(), i);
1154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  }
1164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
1184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(GetProfile(0));
1204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(GetProfile(1));
1214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
1234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
1244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// TCM ID - 3637311.
1264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectIN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest, Add) {
1274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(SetupSync());
1284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
1294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(GetProfile(0), 0);
1314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(verifier(), 0);
1324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
1334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(GetProfile(0));
1354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(GetProfile(1));
1364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
1374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
1384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// TCM ID - 3724281.
1404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectIN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest, Uninstall) {
1414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(SetupSync());
1424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
1434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(GetProfile(0), 0);
1454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(verifier(), 0);
1464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
1474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(GetProfile(0));
1494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(GetProfile(1));
1504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
1514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  UninstallExtension(GetProfile(0), 0);
1534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  UninstallExtension(verifier(), 0);
1544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
1554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
1564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
1574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// TCM ID - 3635304.
1594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectIN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest, Merge) {
1604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(SetupSync());
1614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
1624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(GetProfile(0), 0);
1644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(GetProfile(1), 0);
1654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
1664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  UninstallExtension(GetProfile(0), 0);
1684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(GetProfile(0), 1);
1694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(verifier(), 1);
1704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(GetProfile(0), 2);
1724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(GetProfile(1), 2);
1734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(verifier(), 2);
1744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(GetProfile(1), 3);
1764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(verifier(), 3);
1774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
1794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(GetProfile(0));
1804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(GetProfile(1));
1814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
1824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
1834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// TCM ID - 3605300.
1854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectIN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest,
1864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                       UpdateEnableDisableExtension) {
1874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(SetupSync());
1884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
1894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(GetProfile(0), 0);
1914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(GetProfile(1), 0);
1924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(verifier(), 0);
1934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
1944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
1954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  DisableExtension(GetProfile(0), 0);
1974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  DisableExtension(verifier(), 0);
1984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(HasSameExtensionsAsVerifier(0));
1994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_FALSE(HasSameExtensionsAsVerifier(1));
2004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
2024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
2034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  EnableExtension(GetProfile(1), 0);
2054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  EnableExtension(verifier(), 0);
2064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(HasSameExtensionsAsVerifier(1));
2074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_FALSE(HasSameExtensionsAsVerifier(0));
2084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
2104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
2114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
2124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// TCM ID - 3728322.
2144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectIN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest,
2154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                       UpdateIncognitoEnableDisable) {
2164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(SetupSync());
2174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
2184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(GetProfile(0), 0);
2204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(GetProfile(1), 0);
2214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(verifier(), 0);
2224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
2234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
2244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  IncognitoEnableExtension(GetProfile(0), 0);
2264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  IncognitoEnableExtension(verifier(), 0);
2274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(HasSameExtensionsAsVerifier(0));
2284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_FALSE(HasSameExtensionsAsVerifier(1));
2294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
2314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
2324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  IncognitoDisableExtension(GetProfile(1), 0);
2344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  IncognitoDisableExtension(verifier(), 0);
2354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(HasSameExtensionsAsVerifier(1));
2364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_FALSE(HasSameExtensionsAsVerifier(0));
2374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
2394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
2404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
2414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// TCM ID - 3732278.
2434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectIN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest, DisableExtensions) {
2444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(SetupSync());
2454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
2464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(GetClient(1)->DisableSyncForDatatype(syncer::EXTENSIONS));
2484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(GetProfile(0), 1);
2494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(verifier(), 1);
2504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(
2514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project      GetClient(0)->AwaitCommitActivityCompletion());
2524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_FALSE(AllProfilesHaveSameExtensionsAsVerifier());
2534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(GetClient(1)->EnableSyncForDatatype(syncer::EXTENSIONS));
2554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
2564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(GetProfile(0));
2574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(GetProfile(1));
2584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(verifier());
2594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
2604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
2614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// TCM ID - 3606290.
2634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectIN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest, DisableSync) {
2644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(SetupSync());
2654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
2664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(GetClient(1)->DisableSyncForAllDatatypes());
2684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(GetProfile(0), 0);
2694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(verifier(), 0);
2704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(
2714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project      GetClient(0)->AwaitCommitActivityCompletion());
2724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(HasSameExtensionsAsVerifier(0));
2734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_FALSE(HasSameExtensionsAsVerifier(1));
2744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(GetClient(1)->EnableSyncForAllDatatypes());
2764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
2774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(GetProfile(0));
2784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(GetProfile(1));
2794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(verifier());
2804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
2814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
2824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// Regression test for bug 104399: ensure that an extension installed prior to
2844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// setting up sync, when uninstalled, is also uninstalled from sync.
2854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectIN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest,
2864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                       UninstallPreinstalledExtensions) {
2874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(SetupClients());
2884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
2894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(GetProfile(0), 0);
2914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtension(verifier(), 0);
2924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(SetupSync());
2944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(GetProfile(0));
2964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  InstallExtensionsPendingForSync(GetProfile(1));
2974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
2984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
2994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  UninstallExtension(GetProfile(0), 0);
3014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  UninstallExtension(verifier(), 0);
3024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AwaitQuiescence());
3044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
3054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
3064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// TODO(akalin): Add tests exercising:
3084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project//   - Offline installation/uninstallation behavior
3094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project