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

Side by Side Diff: chrome/browser/chromeos/gdata/gdata_util.cc

Issue 10538071: gdata: Convert FindEntryByResourceIdSync() to asynchronous. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix spelling error of 'completion' and a few unnecessary newlines. Created 8 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/chromeos/gdata/gdata_util.h" 5 #include "chrome/browser/chromeos/gdata/gdata_util.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 kReadOnlyFilePermissions)); 139 kReadOnlyFilePermissions));
140 cache_paths->push_back(std::make_pair( 140 cache_paths->push_back(std::make_pair(
141 file_system->GetCacheFilePath(resource_id, file_md5, 141 file_system->GetCacheFilePath(resource_id, file_md5,
142 GDataCache::CACHE_TYPE_TMP, 142 GDataCache::CACHE_TYPE_TMP,
143 GDataCache::CACHED_FILE_FROM_SERVER), 143 GDataCache::CACHED_FILE_FROM_SERVER),
144 kReadOnlyFilePermissions)); 144 kReadOnlyFilePermissions));
145 145
146 callback.Run(); 146 callback.Run();
147 } 147 }
148 148
149 // Invoked upon completion of FindEntryByResourceId initiated by
150 // ModifyGDataFileResourceUrl.
151 void OnFindEntryByResourceId(Profile* profile,
achuithb 2012/06/11 21:48:41 Could we move this next to OpenEditURLUIThread? Th
hshi1 2012/06/11 22:42:21 Sounds reasonable, done. On 2012/06/11 21:48:41,
152 const std::string& resource_id,
achuithb 2012/06/11 21:48:41 indentation is off
hshi1 2012/06/11 22:42:21 Done.
153 base::PlatformFileError error,
154 GDataEntry* entry) {
155 if (error != base::PLATFORM_FILE_OK || !entry || !entry->AsGDataFile())
achuithb 2012/06/11 21:48:41 Could you please add a DCHECK for UI thread here?
hshi1 2012/06/11 22:42:21 Again, this is run on the CALLER thread, not on UI
achuithb 2012/06/11 22:56:11 Which I believe is the UI thread in this case, rig
hshi1 2012/06/11 23:17:52 Yes you're right. Done.
156 return;
157
158 std::string file_name = entry->AsGDataFile()->file_name();
achuithb 2012/06/11 21:48:41 could we make this const?
hshi1 2012/06/11 22:42:21 Done.
159 GURL edit_url = GetFileResourceUrl(resource_id, file_name);
achuithb 2012/06/11 21:48:41 could we make this const too? You may need to chan
hshi1 2012/06/11 22:42:21 If I declare the object as "const GURL edit_url" h
achuithb 2012/06/11 22:56:11 That's strange. It should be const GURL* since edi
hshi1 2012/06/11 23:17:52 Sorry I was mistaken. It should be "const GURL*".
160 OpenEditURLUIThread(profile, &edit_url);
161 DVLOG(1) << "OnFindEntryByResourceId " << edit_url;
162 }
163
149 } // namespace 164 } // namespace
150 165
151 const FilePath& GetGDataMountPointPath() { 166 const FilePath& GetGDataMountPointPath() {
152 CR_DEFINE_STATIC_LOCAL(FilePath, gdata_mount_path, 167 CR_DEFINE_STATIC_LOCAL(FilePath, gdata_mount_path,
153 (FilePath::FromUTF8Unsafe(kGDataMountPointPath))); 168 (FilePath::FromUTF8Unsafe(kGDataMountPointPath)));
154 return gdata_mount_path; 169 return gdata_mount_path;
155 } 170 }
156 171
157 const std::string& GetGDataMountPointPathAsString() { 172 const std::string& GetGDataMountPointPathAsString() {
158 CR_DEFINE_STATIC_LOCAL(std::string, gdata_mount_path_string, 173 CR_DEFINE_STATIC_LOCAL(std::string, gdata_mount_path_string,
(...skipping 12 matching lines...) Expand all
171 std::string url(base::StringPrintf( 186 std::string url(base::StringPrintf(
172 "%s:%s", 187 "%s:%s",
173 chrome::kDriveScheme, 188 chrome::kDriveScheme,
174 net::EscapePath(resource_id).c_str())); 189 net::EscapePath(resource_id).c_str()));
175 return GURL(url); 190 return GURL(url);
176 } 191 }
177 192
178 void ModifyGDataFileResourceUrl(Profile* profile, 193 void ModifyGDataFileResourceUrl(Profile* profile,
179 const FilePath& gdata_cache_path, 194 const FilePath& gdata_cache_path,
180 GURL* url) { 195 GURL* url) {
181 GDataFileSystem* file_system = GetGDataFileSystem(profile); 196 GDataFileSystem* file_system = GetGDataFileSystem(profile);
achuithb 2012/06/11 21:48:41 Could you please add a DCHECK for UI thread here?
hshi1 2012/06/11 22:42:21 Done.
182 if (!file_system) 197 if (!file_system)
183 return; 198 return;
184 199
185 // Handle hosted documents. The edit url is in the temporary file, so we 200 // Handle hosted documents. The edit url is in the temporary file, so we
186 // read it on a blocking thread. 201 // read it on a blocking thread.
187 if (file_system->GetCacheDirectoryPath( 202 if (file_system->GetCacheDirectoryPath(
188 GDataCache::CACHE_TYPE_TMP_DOCUMENTS).IsParent( 203 GDataCache::CACHE_TYPE_TMP_DOCUMENTS).IsParent(
189 gdata_cache_path)) { 204 gdata_cache_path)) {
190 GURL* edit_url = new GURL(); 205 GURL* edit_url = new GURL();
191 content::BrowserThread::GetBlockingPool()->PostTaskAndReply(FROM_HERE, 206 content::BrowserThread::GetBlockingPool()->PostTaskAndReply(FROM_HERE,
192 base::Bind(&GetHostedDocumentURLBlockingThread, 207 base::Bind(&GetHostedDocumentURLBlockingThread,
193 gdata_cache_path, edit_url), 208 gdata_cache_path, edit_url),
194 base::Bind(&OpenEditURLUIThread, profile, base::Owned(edit_url))); 209 base::Bind(&OpenEditURLUIThread, profile, base::Owned(edit_url)));
195 *url = GURL(); 210 *url = GURL();
196 return; 211 return;
achuithb 2012/06/11 21:48:41 instead of this return, how about using an else in
hshi1 2012/06/11 22:42:21 Done.
197 } 212 }
198 213
199 // Handle all other gdata files. 214 // Handle all other gdata files.
200 if (file_system->GetCacheDirectoryPath( 215 if (file_system->GetCacheDirectoryPath(
201 GDataCache::CACHE_TYPE_TMP).IsParent(gdata_cache_path)) { 216 GDataCache::CACHE_TYPE_TMP).IsParent(gdata_cache_path)) {
202 const std::string resource_id = 217 const std::string resource_id =
203 gdata_cache_path.BaseName().RemoveExtension().AsUTF8Unsafe(); 218 gdata_cache_path.BaseName().RemoveExtension().AsUTF8Unsafe();
204 GDataEntry* entry = NULL; 219 file_system->FindEntryByResourceId(resource_id,
205 file_system->FindEntryByResourceIdSync( 220 base::Bind(&OnFindEntryByResourceId,
206 resource_id, base::Bind(&ReadOnlyFindEntryCallback, &entry)); 221 profile,
207 222 resource_id));
208 std::string file_name; 223 *url = GURL();
209 if (entry && entry->AsGDataFile()) 224 return;
achuithb 2012/06/11 21:48:41 this return seems unnecessary
hshi1 2012/06/11 22:42:21 Done.
210 file_name = entry->AsGDataFile()->file_name();
211
212 *url = gdata::util::GetFileResourceUrl(resource_id, file_name);
213 DVLOG(1) << "ModifyGDataFileResourceUrl " << *url;
214 } 225 }
215 } 226 }
216 227
217 bool IsUnderGDataMountPoint(const FilePath& path) { 228 bool IsUnderGDataMountPoint(const FilePath& path) {
218 return GetGDataMountPointPath() == path || 229 return GetGDataMountPointPath() == path ||
219 GetGDataMountPointPath().IsParent(path); 230 GetGDataMountPointPath().IsParent(path);
220 } 231 }
221 232
222 GDataSearchPathType GetSearchPathStatus(const FilePath& path) { 233 GDataSearchPathType GetSearchPathStatus(const FilePath& path) {
223 std::vector<std::string> components; 234 std::vector<std::string> components;
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 // Assign the extracted extensions to md5 and extra_extension. 408 // Assign the extracted extensions to md5 and extra_extension.
398 int extension_count = extensions.size(); 409 int extension_count = extensions.size();
399 *md5 = (extension_count > 0) ? extensions[extension_count - 1] : 410 *md5 = (extension_count > 0) ? extensions[extension_count - 1] :
400 std::string(); 411 std::string();
401 *extra_extension = (extension_count > 1) ? extensions[extension_count - 2] : 412 *extra_extension = (extension_count > 1) ? extensions[extension_count - 2] :
402 std::string(); 413 std::string();
403 } 414 }
404 415
405 } // namespace util 416 } // namespace util
406 } // namespace gdata 417 } // namespace gdata
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698