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)34 IN_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