1 // Copyright 2019 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/sync/test/integration/sync_test.h" 6 #include "components/sync/base/model_type.h" 7 #include "components/sync/base/user_selectable_type.h" 8 #include "components/sync/driver/profile_sync_service.h" 9 #include "components/sync/driver/sync_user_settings.h" 10 #include "content/public/test/browser_test.h" 11 #include "testing/gtest/include/gtest/gtest.h" 12 13 #if defined(OS_CHROMEOS) 14 #include "chrome/browser/sync/test/integration/os_sync_test.h" 15 #include "chromeos/constants/chromeos_features.h" 16 #endif 17 18 using syncer::UserSelectableType; 19 using syncer::UserSelectableTypeSet; 20 21 namespace { 22 23 #if defined(OS_CHROMEOS) 24 25 // These tests test the new Web Apps system with next generation sync. 26 // 27 // Chrome OS syncs apps as an OS type. 28 class SingleClientWebAppsOsSyncTest : public OsSyncTest { 29 public: SingleClientWebAppsOsSyncTest()30 SingleClientWebAppsOsSyncTest() : OsSyncTest(SINGLE_CLIENT) {} 31 ~SingleClientWebAppsOsSyncTest() override = default; 32 }; 33 IN_PROC_BROWSER_TEST_F(SingleClientWebAppsOsSyncTest,DisablingOsSyncFeatureDisablesDataType)34IN_PROC_BROWSER_TEST_F(SingleClientWebAppsOsSyncTest, 35 DisablingOsSyncFeatureDisablesDataType) { 36 ASSERT_TRUE(chromeos::features::IsSplitSettingsSyncEnabled()); 37 ASSERT_TRUE(SetupSync()); 38 syncer::ProfileSyncService* service = GetSyncService(0); 39 syncer::SyncUserSettings* settings = service->GetUserSettings(); 40 41 EXPECT_TRUE(settings->IsOsSyncFeatureEnabled()); 42 EXPECT_TRUE(service->GetActiveDataTypes().Has(syncer::WEB_APPS)); 43 44 settings->SetOsSyncFeatureEnabled(false); 45 EXPECT_FALSE(settings->IsOsSyncFeatureEnabled()); 46 EXPECT_FALSE(service->GetActiveDataTypes().Has(syncer::WEB_APPS)); 47 } 48 49 #else // !defined(OS_CHROMEOS) 50 51 // These tests test the new Web Apps system with next generation sync. 52 class SingleClientWebAppsSyncTest : public SyncTest { 53 public: 54 SingleClientWebAppsSyncTest() : SyncTest(SINGLE_CLIENT) {} 55 ~SingleClientWebAppsSyncTest() override = default; 56 }; 57 58 IN_PROC_BROWSER_TEST_F(SingleClientWebAppsSyncTest, 59 DisablingSelectedTypeDisablesModelType) { 60 ASSERT_TRUE(SetupSync()); 61 syncer::ProfileSyncService* service = GetSyncService(0); 62 syncer::SyncUserSettings* settings = service->GetUserSettings(); 63 ASSERT_TRUE(settings->GetSelectedTypes().Has(UserSelectableType::kApps)); 64 EXPECT_TRUE(service->GetActiveDataTypes().Has(syncer::WEB_APPS)); 65 66 settings->SetSelectedTypes(false, UserSelectableTypeSet()); 67 ASSERT_FALSE(settings->GetSelectedTypes().Has(UserSelectableType::kApps)); 68 EXPECT_FALSE(service->GetActiveDataTypes().Has(syncer::WEB_APPS)); 69 } 70 #endif // defined(OS_CHROMEOS) 71 72 } // namespace 73