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

Side by Side Diff: chrome/browser/sync_file_system/drive_file_sync_service_unittest.cc

Issue 16232019: Fix for finding a disabled origin after it was already moved to enabled. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Hiroki review #2 Created 7 years, 6 months 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 (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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_file_sync_service.h" 5 #include "chrome/browser/sync_file_system/drive_file_sync_service.h"
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "chrome/browser/sync_file_system/drive/fake_api_util.h" 8 #include "chrome/browser/sync_file_system/drive/fake_api_util.h"
9 #include "chrome/browser/sync_file_system/drive_metadata_store.h" 9 #include "chrome/browser/sync_file_system/drive_metadata_store.h"
10 #include "chrome/browser/sync_file_system/sync_file_system.pb.h" 10 #include "chrome/browser/sync_file_system/sync_file_system.pb.h"
(...skipping 15 matching lines...) Expand all
26 } 26 }
27 27
28 void ExpectEqStatus(bool* done, 28 void ExpectEqStatus(bool* done,
29 SyncStatusCode expected, 29 SyncStatusCode expected,
30 SyncStatusCode actual) { 30 SyncStatusCode actual) {
31 EXPECT_FALSE(*done); 31 EXPECT_FALSE(*done);
32 *done = true; 32 *done = true;
33 EXPECT_EQ(expected, actual); 33 EXPECT_EQ(expected, actual);
34 } 34 }
35 35
36 void ExpectOkStatus(SyncStatusCode status) {
37 EXPECT_EQ(SYNC_STATUS_OK, status);
38 }
39
36 } // namespace 40 } // namespace
37 41
38 class DriveFileSyncServiceTest : public testing::Test { 42 class DriveFileSyncServiceTest : public testing::Test {
39 public: 43 public:
40 DriveFileSyncServiceTest() 44 DriveFileSyncServiceTest()
41 : ui_thread_(content::BrowserThread::UI, &message_loop_), 45 : ui_thread_(content::BrowserThread::UI, &message_loop_),
42 file_thread_(content::BrowserThread::FILE, &message_loop_), 46 file_thread_(content::BrowserThread::FILE, &message_loop_),
43 fake_api_util_(NULL), 47 fake_api_util_(NULL),
44 metadata_store_(NULL), 48 metadata_store_(NULL),
45 sync_service_(NULL) {} 49 sync_service_(NULL) {}
(...skipping 11 matching lines...) Expand all
57 metadata_store_->Initialize(base::Bind(&DidInitialize, &done)); 61 metadata_store_->Initialize(base::Bind(&DidInitialize, &done));
58 message_loop_.RunUntilIdle(); 62 message_loop_.RunUntilIdle();
59 metadata_store_->SetSyncRootDirectory(kSyncRootResourceId); 63 metadata_store_->SetSyncRootDirectory(kSyncRootResourceId);
60 EXPECT_TRUE(done); 64 EXPECT_TRUE(done);
61 65
62 sync_service_ = DriveFileSyncService::CreateForTesting( 66 sync_service_ = DriveFileSyncService::CreateForTesting(
63 &profile_, 67 &profile_,
64 base_dir_, 68 base_dir_,
65 scoped_ptr<drive::APIUtilInterface>(fake_api_util_), 69 scoped_ptr<drive::APIUtilInterface>(fake_api_util_),
66 scoped_ptr<DriveMetadataStore>(metadata_store_)).Pass(); 70 scoped_ptr<DriveMetadataStore>(metadata_store_)).Pass();
71 message_loop_.RunUntilIdle();
67 } 72 }
68 73
69 virtual void TearDown() OVERRIDE { 74 virtual void TearDown() OVERRIDE {
70 metadata_store_ = NULL; 75 metadata_store_ = NULL;
71 fake_api_util_ = NULL; 76 fake_api_util_ = NULL;
72 sync_service_.reset(); 77 sync_service_.reset();
73 message_loop_.RunUntilIdle(); 78 message_loop_.RunUntilIdle();
74 79
75 base_dir_ = base::FilePath(); 80 base_dir_ = base::FilePath();
76 ASSERT_TRUE(RevokeSyncableFileSystem(kServiceName)); 81 ASSERT_TRUE(RevokeSyncableFileSystem(kServiceName));
77 } 82 }
78 83
79 virtual ~DriveFileSyncServiceTest() { 84 virtual ~DriveFileSyncServiceTest() {
80 } 85 }
81 86
82 protected: 87 protected:
83 base::MessageLoop* message_loop() { return &message_loop_; } 88 base::MessageLoop* message_loop() { return &message_loop_; }
84 drive::FakeAPIUtil* fake_api_util() { return fake_api_util_; } 89 drive::FakeAPIUtil* fake_api_util() { return fake_api_util_; }
85 DriveMetadataStore* metadata_store() { return metadata_store_; } 90 DriveMetadataStore* metadata_store() { return metadata_store_; }
86 DriveFileSyncService* sync_service() { return sync_service_.get(); } 91 DriveFileSyncService* sync_service() { return sync_service_.get(); }
92 std::map<GURL, std::string>* pending_batch_sync_origins() {
93 return &(sync_service()->pending_batch_sync_origins_);
94 }
95
96 bool VerifyOriginStatusCount(size_t expected_pending,
97 size_t expected_enabled,
98 size_t expected_disabled) {
99 size_t actual_pending = pending_batch_sync_origins()->size();
100 size_t actual_enabled = metadata_store()->incremental_sync_origins().size();
101 size_t actual_disabled = metadata_store()->disabled_origins().size();
102
103 // Prints which counts don't match up if any.
104 EXPECT_EQ(expected_pending, actual_pending);
105 EXPECT_EQ(expected_enabled, actual_enabled);
106 EXPECT_EQ(expected_disabled, actual_disabled);
107
108 // If any count doesn't match, the original line number can be printed by
109 // simply adding ASSERT_TRUE on the call to this function.
110 if (expected_pending == actual_pending &&
111 expected_enabled == actual_enabled &&
112 expected_disabled == actual_disabled)
113 return true;
114
115 return false;
116 }
87 117
88 private: 118 private:
89 base::ScopedTempDir scoped_base_dir_; 119 base::ScopedTempDir scoped_base_dir_;
90 base::MessageLoop message_loop_; 120 base::MessageLoop message_loop_;
91 content::TestBrowserThread ui_thread_; 121 content::TestBrowserThread ui_thread_;
92 content::TestBrowserThread file_thread_; 122 content::TestBrowserThread file_thread_;
93 123
94 TestingProfile profile_; 124 TestingProfile profile_;
95 base::FilePath base_dir_; 125 base::FilePath base_dir_;
96 126
97 drive::FakeAPIUtil* fake_api_util_; // Owned by |sync_service_|. 127 drive::FakeAPIUtil* fake_api_util_; // Owned by |sync_service_|.
98 DriveMetadataStore* metadata_store_; // Owned by |sync_service_|. 128 DriveMetadataStore* metadata_store_; // Owned by |sync_service_|.
99 129
100 scoped_ptr<DriveFileSyncService> sync_service_; 130 scoped_ptr<DriveFileSyncService> sync_service_;
101 131
102 DISALLOW_COPY_AND_ASSIGN(DriveFileSyncServiceTest); 132 DISALLOW_COPY_AND_ASSIGN(DriveFileSyncServiceTest);
103 }; 133 };
104 134
105 TEST_F(DriveFileSyncServiceTest, DeleteOriginDirectory) { 135 TEST_F(DriveFileSyncServiceTest, UninstallOrigin) {
106 // Add fake app origin directory using fake drive_sync_client. 136 // Add fake app origin directory using fake drive_sync_client.
107 std::string origin_dir_resource_id = "uninstalledappresourceid"; 137 std::string origin_dir_resource_id = "uninstalledappresourceid";
108 fake_api_util()->PushRemoteChange("parent_id", 138 fake_api_util()->PushRemoteChange("parent_id",
109 "parent_title", 139 "parent_title",
110 "uninstall_me_folder", 140 "uninstall_me_folder",
111 origin_dir_resource_id, 141 origin_dir_resource_id,
112 "resource_md5", 142 "resource_md5",
113 SYNC_FILE_TYPE_FILE, 143 SYNC_FILE_TYPE_FILE,
114 false); 144 false);
115 145
116 // Add meta_data entry so GURL->resourse_id mapping is there. 146 // Add meta_data entry so GURL->resourse_id mapping is there.
117 const GURL origin_gurl("chrome-extension://uninstallme"); 147 const GURL origin_gurl("chrome-extension://uninstallme");
118 metadata_store()->AddIncrementalSyncOrigin(origin_gurl, 148 metadata_store()->AddIncrementalSyncOrigin(origin_gurl,
119 origin_dir_resource_id); 149 origin_dir_resource_id);
120 150
121 // Delete the origin directory. 151 // Delete the origin directory.
122 bool done = false; 152 bool done = false;
123 sync_service()->UninstallOrigin( 153 sync_service()->UninstallOrigin(
124 origin_gurl, 154 origin_gurl,
125 base::Bind(&ExpectEqStatus, &done, SYNC_STATUS_OK)); 155 base::Bind(&ExpectEqStatus, &done, SYNC_STATUS_OK));
126 message_loop()->RunUntilIdle(); 156 message_loop()->RunUntilIdle();
127 EXPECT_TRUE(done); 157 EXPECT_TRUE(done);
128 158
129 // Assert the App's origin folder was marked as deleted. 159 // Assert the App's origin folder was marked as deleted.
130 EXPECT_TRUE(fake_api_util()->remote_resources().find(origin_dir_resource_id) 160 EXPECT_TRUE(fake_api_util()->remote_resources().find(
131 ->second.deleted); 161 origin_dir_resource_id)->second.deleted);
162 }
163
164 TEST_F(DriveFileSyncServiceTest, DisableOriginForTrackingChangesPendingOrigin) {
165 // Disable a pending origin after DriveFileSystemService has already started.
166 const GURL origin("chrome-extension://app");
167 std::string origin_resource_id = "app_resource_id";
168 pending_batch_sync_origins()->insert(std::make_pair(origin,
169 origin_resource_id));
170 ASSERT_TRUE(VerifyOriginStatusCount(1u, 0u, 0u));
171
172 // Pending origins that are disabled are dropped and do not go to disabled.
173 sync_service()->DisableOriginForTrackingChanges(origin,
174 base::Bind(&ExpectOkStatus));
175 message_loop()->RunUntilIdle();
176 ASSERT_TRUE(VerifyOriginStatusCount(0u, 0u, 0u));
177 }
178
179 TEST_F(DriveFileSyncServiceTest,
180 DisableOriginForTrackingChangesIncrementalOrigin) {
181 // Disable a pending origin after DriveFileSystemService has already started.
182 const GURL origin("chrome-extension://app");
183 std::string origin_resource_id = "app_resource_id";
184 metadata_store()->AddIncrementalSyncOrigin(origin, origin_resource_id);
185 ASSERT_TRUE(VerifyOriginStatusCount(0u, 1u, 0u));
186
187 sync_service()->DisableOriginForTrackingChanges(origin,
188 base::Bind(&ExpectOkStatus));
189 message_loop()->RunUntilIdle();
190 ASSERT_TRUE(VerifyOriginStatusCount(0u, 0u, 1u));
191 }
192
193 TEST_F(DriveFileSyncServiceTest, EnableOriginForTrackingChanges) {
194 const GURL origin("chrome-extension://app");
195 std::string origin_resource_id = "app_resource_id";
196 metadata_store()->AddIncrementalSyncOrigin(origin, origin_resource_id);
197 metadata_store()->DisableOrigin(origin, base::Bind(&ExpectOkStatus));
198 ASSERT_TRUE(VerifyOriginStatusCount(0u, 0u, 1u));
199
200 // Re-enable the previously disabled origin. It initially goes to pending
201 // status and then to enabled (incremental) again when NotifyTasksDone() in
202 // DriveFileSyncTaskManager invokes MaybeStartFetchChanges() and pending
203 // origins > 0.
204 sync_service()->EnableOriginForTrackingChanges(origin,
205 base::Bind(&ExpectOkStatus));
206 message_loop()->RunUntilIdle();
207 ASSERT_TRUE(VerifyOriginStatusCount(0u, 1u, 0u));
132 } 208 }
133 209
134 } // namespace sync_file_system 210 } // namespace sync_file_system
OLDNEW
« no previous file with comments | « chrome/browser/sync_file_system/drive_file_sync_service.cc ('k') | chrome/browser/sync_file_system/remote_file_sync_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698