Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(712)

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/sync_engine_unittest.cc

Issue 62883005: Implement SyncEngine::UpdateRegisteredApps() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/sync_file_system/drive_backend/sync_engine.h" 5 #include "chrome/browser/sync_file_system/drive_backend/sync_engine.h"
6 6
7 #include "base/files/scoped_temp_dir.h" 7 #include "base/files/scoped_temp_dir.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/strings/stringprintf.h"
9 #include "chrome/browser/drive/fake_drive_service.h" 10 #include "chrome/browser/drive/fake_drive_service.h"
11 #include "chrome/browser/extensions/test_extension_service.h"
10 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 12 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
11 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" 13 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
12 #include "chrome/browser/sync_file_system/sync_file_system_test_util.h" 14 #include "chrome/browser/sync_file_system/sync_file_system_test_util.h"
13 #include "content/public/test/test_browser_thread_bundle.h" 15 #include "content/public/test/test_browser_thread_bundle.h"
14 #include "extensions/common/extension.h" 16 #include "extensions/common/extension.h"
17 #include "extensions/common/extension_builder.h"
18 #include "extensions/common/value_builder.h"
15 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
16 20
17 namespace sync_file_system { 21 namespace sync_file_system {
18 namespace drive_backend { 22 namespace drive_backend {
19 23
20 namespace { 24 namespace {
21 25
22 const char kAppID[] = "app_id"; 26 const char kAppID[] = "app_id";
23 27
24 } // namespace 28 } // namespace
25 29
30 class MockExtensionService : public TestExtensionService {
31 public:
32 MockExtensionService() {}
33 virtual ~MockExtensionService() {}
34
35 virtual const ExtensionSet* extensions() const OVERRIDE {
36 return &extensions_;
37 }
38
39 virtual const ExtensionSet* disabled_extensions() const OVERRIDE {
40 return &disabled_extensions_;
41 }
42
43 virtual void AddExtension(const extensions::Extension* extension) OVERRIDE {
44 extensions_.Insert(make_scoped_refptr(extension));
45 }
46
47 virtual const extensions::Extension* GetInstalledExtension(
48 const std::string& extension_id) const OVERRIDE {
49 return extensions_.GetByID(extension_id);
50 }
51
52 virtual bool IsExtensionEnabled(
53 const std::string& extension_id) const OVERRIDE {
54 return extensions_.Contains(extension_id) &&
55 !disabled_extensions_.Contains(extension_id);
56 }
57
58 void UninstallExtension(const std::string& extension_id) {
59 extensions_.Remove(extension_id);
60 disabled_extensions_.Remove(extension_id);
61 }
62
63 void DisableExtension(const std::string& extension_id) {
64 if (!IsExtensionEnabled(extension_id))
65 return;
66 const extensions::Extension* extension = extensions_.GetByID(extension_id);
67 disabled_extensions_.Insert(make_scoped_refptr(extension));
68 }
69
70 private:
71 ExtensionSet extensions_;
72 ExtensionSet disabled_extensions_;
73
74 DISALLOW_COPY_AND_ASSIGN(MockExtensionService);
75 };
76
26 class SyncEngineTest : public testing::Test { 77 class SyncEngineTest : public testing::Test {
27 public: 78 public:
28 SyncEngineTest() {} 79 SyncEngineTest() {}
29 virtual ~SyncEngineTest() {} 80 virtual ~SyncEngineTest() {}
30 81
31 virtual void SetUp() OVERRIDE { 82 virtual void SetUp() OVERRIDE {
32 ASSERT_TRUE(profile_dir_.CreateUniqueTempDir()); 83 ASSERT_TRUE(profile_dir_.CreateUniqueTempDir());
84 extension_service_.reset(new MockExtensionService);
33 scoped_ptr<drive::FakeDriveService> fake_drive_service( 85 scoped_ptr<drive::FakeDriveService> fake_drive_service(
34 new drive::FakeDriveService); 86 new drive::FakeDriveService);
35 87
36 ASSERT_TRUE(fake_drive_service->LoadAccountMetadataForWapi( 88 ASSERT_TRUE(fake_drive_service->LoadAccountMetadataForWapi(
37 "sync_file_system/account_metadata.json")); 89 "sync_file_system/account_metadata.json"));
38 ASSERT_TRUE(fake_drive_service->LoadResourceListForWapi( 90 ASSERT_TRUE(fake_drive_service->LoadResourceListForWapi(
39 "gdata/empty_feed.json")); 91 "gdata/empty_feed.json"));
40 sync_engine_.reset(new drive_backend::SyncEngine( 92 sync_engine_.reset(new drive_backend::SyncEngine(
41 profile_dir_.path(), 93 profile_dir_.path(),
42 base::MessageLoopProxy::current(), 94 base::MessageLoopProxy::current(),
43 fake_drive_service.PassAs<drive::DriveServiceInterface>(), 95 fake_drive_service.PassAs<drive::DriveServiceInterface>(),
44 NULL, NULL)); 96 NULL,
97 extension_service_.get()));
45 sync_engine_->Initialize(); 98 sync_engine_->Initialize();
46 base::RunLoop().RunUntilIdle(); 99 base::RunLoop().RunUntilIdle();
47 } 100 }
48 101
49 virtual void TearDown() OVERRIDE { 102 virtual void TearDown() OVERRIDE {
50 sync_engine_.reset(); 103 sync_engine_.reset();
104 extension_service_.reset();
51 base::RunLoop().RunUntilIdle(); 105 base::RunLoop().RunUntilIdle();
52 } 106 }
53 107
108 MockExtensionService* extension_service() { return extension_service_.get(); }
54 SyncEngine* sync_engine() { return sync_engine_.get(); } 109 SyncEngine* sync_engine() { return sync_engine_.get(); }
55 110
111 void UpdateRegisteredApps() {
112 sync_engine_->UpdateRegisteredApps();
113 }
114
56 private: 115 private:
57 content::TestBrowserThreadBundle browser_threads_; 116 content::TestBrowserThreadBundle browser_threads_;
58 base::ScopedTempDir profile_dir_; 117 base::ScopedTempDir profile_dir_;
59 118
119 scoped_ptr<MockExtensionService> extension_service_;
60 scoped_ptr<drive_backend::SyncEngine> sync_engine_; 120 scoped_ptr<drive_backend::SyncEngine> sync_engine_;
61 121
62 DISALLOW_COPY_AND_ASSIGN(SyncEngineTest); 122 DISALLOW_COPY_AND_ASSIGN(SyncEngineTest);
63 }; 123 };
64 124
65 TEST_F(SyncEngineTest, EnableOrigin) { 125 TEST_F(SyncEngineTest, EnableOrigin) {
66 FileTracker tracker; 126 FileTracker tracker;
67 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN; 127 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN;
68 MetadataDatabase* metadata_database = sync_engine()->GetMetadataDatabase(); 128 MetadataDatabase* metadata_database = sync_engine()->GetMetadataDatabase();
69 GURL origin = extensions::Extension::GetBaseURLFromExtensionId(kAppID); 129 GURL origin = extensions::Extension::GetBaseURLFromExtensionId(kAppID);
(...skipping 18 matching lines...) Expand all
88 148
89 sync_engine()->UninstallOrigin( 149 sync_engine()->UninstallOrigin(
90 origin, 150 origin,
91 RemoteFileSyncService::UNINSTALL_AND_KEEP_REMOTE, 151 RemoteFileSyncService::UNINSTALL_AND_KEEP_REMOTE,
92 CreateResultReceiver(&sync_status)); 152 CreateResultReceiver(&sync_status));
93 base::RunLoop().RunUntilIdle(); 153 base::RunLoop().RunUntilIdle();
94 EXPECT_EQ(SYNC_STATUS_OK, sync_status); 154 EXPECT_EQ(SYNC_STATUS_OK, sync_status);
95 ASSERT_FALSE(metadata_database->FindAppRootTracker(kAppID, &tracker)); 155 ASSERT_FALSE(metadata_database->FindAppRootTracker(kAppID, &tracker));
96 } 156 }
97 157
158 TEST_F(SyncEngineTest, UpdateRegisteredApps) {
159 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN;
160 for (int i = 0; i < 3; i++) {
161 scoped_refptr<const extensions::Extension> extension =
162 extensions::ExtensionBuilder()
163 .SetManifest(extensions::DictionaryBuilder()
164 .Set("name", "foo")
165 .Set("version", "1.0")
166 .Set("manifest_version", 2))
167 .SetID(base::StringPrintf("app_%d", i))
168 .Build();
169 extension_service()->AddExtension(extension.get());
170 GURL origin = extensions::Extension::GetBaseURLFromExtensionId(
171 extension->id());
172 sync_status = SYNC_STATUS_UNKNOWN;
173 sync_engine()->RegisterOrigin(origin, CreateResultReceiver(&sync_status));
174 base::RunLoop().RunUntilIdle();
175 EXPECT_EQ(SYNC_STATUS_OK, sync_status);
176 }
177
178 MetadataDatabase* metadata_database = sync_engine()->GetMetadataDatabase();
179 FileTracker tracker;
180
181 ASSERT_TRUE(metadata_database->FindAppRootTracker("app_0", &tracker));
182 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
183
184 ASSERT_TRUE(metadata_database->FindAppRootTracker("app_1", &tracker));
185 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
186
187 ASSERT_TRUE(metadata_database->FindAppRootTracker("app_2", &tracker));
188 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
189
190 extension_service()->DisableExtension("app_1");
191 extension_service()->UninstallExtension("app_2");
192 ASSERT_FALSE(extension_service()->GetInstalledExtension("app_2"));
193 UpdateRegisteredApps();
194 base::RunLoop().RunUntilIdle();
195
196 ASSERT_TRUE(metadata_database->FindAppRootTracker("app_0", &tracker));
197 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
198
199 ASSERT_TRUE(metadata_database->FindAppRootTracker("app_1", &tracker));
200 EXPECT_EQ(TRACKER_KIND_DISABLED_APP_ROOT, tracker.tracker_kind());
201
202 ASSERT_FALSE(metadata_database->FindAppRootTracker("app_2", &tracker));
203 }
204
98 } // namespace drive_backend 205 } // namespace drive_backend
99 } // namespace sync_file_system 206 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698