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

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

Issue 10352004: gdata: Implement periodic file system update checks. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Add 2 more DCHECKs to make sure we're not starting/stopping timer when it is already started/stoppe… Created 8 years, 7 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
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_files.h" 5 #include "chrome/browser/chromeos/gdata/gdata_files.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "base/platform_file.h" 10 #include "base/platform_file.h"
11 #include "base/stringprintf.h" 11 #include "base/stringprintf.h"
12 #include "base/string_util.h" 12 #include "base/string_util.h"
13 #include "chrome/browser/chromeos/gdata/find_entry_delegate.h" 13 #include "chrome/browser/chromeos/gdata/find_entry_delegate.h"
14 #include "chrome/browser/chromeos/gdata/gdata.pb.h" 14 #include "chrome/browser/chromeos/gdata/gdata.pb.h"
15 #include "chrome/browser/chromeos/gdata/gdata_parser.h" 15 #include "chrome/browser/chromeos/gdata/gdata_parser.h"
16 #include "net/base/escape.h" 16 #include "net/base/escape.h"
17 17
18 namespace gdata { 18 namespace gdata {
19 namespace { 19 namespace {
20 20
21 // Content refresh time.
22 #ifndef NDEBUG
23 const int kRefreshTimeInSec = 10;
24 #else
25 const int kRefreshTimeInSec = 5*60;
26 #endif
27
28 const char kSlash[] = "/"; 21 const char kSlash[] = "/";
29 const char kEscapedSlash[] = "\xE2\x88\x95"; 22 const char kEscapedSlash[] = "\xE2\x88\x95";
30 const FilePath::CharType kGDataRootDirectory[] = FILE_PATH_LITERAL("gdata"); 23 const FilePath::CharType kGDataRootDirectory[] = FILE_PATH_LITERAL("gdata");
31 24
32 std::string CacheSubDirectoryTypeToString( 25 std::string CacheSubDirectoryTypeToString(
33 GDataRootDirectory::CacheSubDirectoryType subdir) { 26 GDataRootDirectory::CacheSubDirectoryType subdir) {
34 switch (subdir) { 27 switch (subdir) {
35 case GDataRootDirectory::CACHE_TYPE_META: return "meta"; 28 case GDataRootDirectory::CACHE_TYPE_META: return "meta";
36 case GDataRootDirectory::CACHE_TYPE_PINNED: return "pinned"; 29 case GDataRootDirectory::CACHE_TYPE_PINNED: return "pinned";
37 case GDataRootDirectory::CACHE_TYPE_OUTGOING: return "outgoing"; 30 case GDataRootDirectory::CACHE_TYPE_OUTGOING: return "outgoing";
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 if (parent_link) 256 if (parent_link)
264 dir->parent_resource_id_ = ExtractResourceId(parent_link->href()); 257 dir->parent_resource_id_ = ExtractResourceId(parent_link->href());
265 258
266 const Link* upload_link = doc->GetLinkByType(Link::RESUMABLE_CREATE_MEDIA); 259 const Link* upload_link = doc->GetLinkByType(Link::RESUMABLE_CREATE_MEDIA);
267 if (upload_link) 260 if (upload_link)
268 dir->upload_url_ = upload_link->href(); 261 dir->upload_url_ = upload_link->href();
269 262
270 return dir; 263 return dir;
271 } 264 }
272 265
273 bool GDataDirectory::NeedsRefresh() const {
274 // Already refreshing by someone else.
275 if (origin_ == REFRESHING)
276 return false;
277
278 // Refresh is needed for content read from disk cache or stale content.
279 if (origin_ == FROM_CACHE)
280 return true;
281
282 if ((base::Time::Now() - refresh_time_).InSeconds() < kRefreshTimeInSec)
283 return false;
284
285 return true;
286 }
287
288 void GDataDirectory::AddEntry(GDataEntry* entry) { 266 void GDataDirectory::AddEntry(GDataEntry* entry) {
289 // The entry name may have been changed due to prior name de-duplication. 267 // The entry name may have been changed due to prior name de-duplication.
290 // We need to first restore the file name based on the title before going 268 // We need to first restore the file name based on the title before going
291 // through name de-duplication again when it is added to another directory. 269 // through name de-duplication again when it is added to another directory.
292 entry->SetFileNameFromTitle(); 270 entry->SetFileNameFromTitle();
293 271
294 // Do file name de-duplication - find files with the same name and 272 // Do file name de-duplication - find files with the same name and
295 // append a name modifier to the name. 273 // append a name modifier to the name.
296 int max_modifier = 1; 274 int max_modifier = 1;
297 FilePath full_file_name(entry->file_name()); 275 FilePath full_file_name(entry->file_name());
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after
822 bool ok = proto->ParseFromString(serialized_proto); 800 bool ok = proto->ParseFromString(serialized_proto);
823 if (ok) { 801 if (ok) {
824 FromProto(*proto.get()); 802 FromProto(*proto.get());
825 set_origin(FROM_CACHE); 803 set_origin(FROM_CACHE);
826 set_refresh_time(base::Time::Now()); 804 set_refresh_time(base::Time::Now());
827 } 805 }
828 return ok; 806 return ok;
829 } 807 }
830 808
831 } // namespace gdata 809 } // namespace gdata
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698