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

Side by Side Diff: components/drive/change_list_loader.cc

Issue 1546143002: Switch to standard integer types in components/, part 1 of 4. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 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
« no previous file with comments | « components/drive/change_list_loader.h ('k') | components/drive/change_list_loader_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "components/drive/change_list_loader.h" 5 #include "components/drive/change_list_loader.h"
6 6
7 #include <stddef.h>
8
7 #include <set> 9 #include <set>
8 10
9 #include "base/callback.h" 11 #include "base/callback.h"
10 #include "base/callback_helpers.h" 12 #include "base/callback_helpers.h"
13 #include "base/macros.h"
11 #include "base/metrics/histogram.h" 14 #include "base/metrics/histogram.h"
12 #include "base/strings/string_number_conversions.h" 15 #include "base/strings/string_number_conversions.h"
13 #include "base/synchronization/cancellation_flag.h" 16 #include "base/synchronization/cancellation_flag.h"
14 #include "base/thread_task_runner_handle.h" 17 #include "base/thread_task_runner_handle.h"
15 #include "base/time/time.h" 18 #include "base/time/time.h"
16 #include "components/drive/change_list_loader_observer.h" 19 #include "components/drive/change_list_loader_observer.h"
17 #include "components/drive/change_list_processor.h" 20 #include "components/drive/change_list_processor.h"
18 #include "components/drive/event_logger.h" 21 #include "components/drive/event_logger.h"
19 #include "components/drive/file_system_core_util.h" 22 #include "components/drive/file_system_core_util.h"
20 #include "components/drive/job_scheduler.h" 23 #include "components/drive/job_scheduler.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 ScopedVector<ChangeList> change_lists_; 100 ScopedVector<ChangeList> change_lists_;
98 base::TimeTicks start_time_; 101 base::TimeTicks start_time_;
99 base::ThreadChecker thread_checker_; 102 base::ThreadChecker thread_checker_;
100 base::WeakPtrFactory<FullFeedFetcher> weak_ptr_factory_; 103 base::WeakPtrFactory<FullFeedFetcher> weak_ptr_factory_;
101 DISALLOW_COPY_AND_ASSIGN(FullFeedFetcher); 104 DISALLOW_COPY_AND_ASSIGN(FullFeedFetcher);
102 }; 105 };
103 106
104 // Fetches the delta changes since |start_change_id|. 107 // Fetches the delta changes since |start_change_id|.
105 class DeltaFeedFetcher : public ChangeListLoader::FeedFetcher { 108 class DeltaFeedFetcher : public ChangeListLoader::FeedFetcher {
106 public: 109 public:
107 DeltaFeedFetcher(JobScheduler* scheduler, int64 start_change_id) 110 DeltaFeedFetcher(JobScheduler* scheduler, int64_t start_change_id)
108 : scheduler_(scheduler), 111 : scheduler_(scheduler),
109 start_change_id_(start_change_id), 112 start_change_id_(start_change_id),
110 weak_ptr_factory_(this) { 113 weak_ptr_factory_(this) {}
111 }
112 114
113 ~DeltaFeedFetcher() override {} 115 ~DeltaFeedFetcher() override {}
114 116
115 void Run(const FeedFetcherCallback& callback) override { 117 void Run(const FeedFetcherCallback& callback) override {
116 DCHECK(thread_checker_.CalledOnValidThread()); 118 DCHECK(thread_checker_.CalledOnValidThread());
117 DCHECK(!callback.is_null()); 119 DCHECK(!callback.is_null());
118 120
119 scheduler_->GetChangeList( 121 scheduler_->GetChangeList(
120 start_change_id_, 122 start_change_id_,
121 base::Bind(&DeltaFeedFetcher::OnChangeListFetched, 123 base::Bind(&DeltaFeedFetcher::OnChangeListFetched,
(...skipping 25 matching lines...) Expand all
147 return; 149 return;
148 } 150 }
149 151
150 // Note: The fetcher is managed by ChangeListLoader, and the instance 152 // Note: The fetcher is managed by ChangeListLoader, and the instance
151 // will be deleted in the callback. Do not touch the fields after this 153 // will be deleted in the callback. Do not touch the fields after this
152 // invocation. 154 // invocation.
153 callback.Run(FILE_ERROR_OK, change_lists_.Pass()); 155 callback.Run(FILE_ERROR_OK, change_lists_.Pass());
154 } 156 }
155 157
156 JobScheduler* scheduler_; 158 JobScheduler* scheduler_;
157 int64 start_change_id_; 159 int64_t start_change_id_;
158 ScopedVector<ChangeList> change_lists_; 160 ScopedVector<ChangeList> change_lists_;
159 base::ThreadChecker thread_checker_; 161 base::ThreadChecker thread_checker_;
160 base::WeakPtrFactory<DeltaFeedFetcher> weak_ptr_factory_; 162 base::WeakPtrFactory<DeltaFeedFetcher> weak_ptr_factory_;
161 DISALLOW_COPY_AND_ASSIGN(DeltaFeedFetcher); 163 DISALLOW_COPY_AND_ASSIGN(DeltaFeedFetcher);
162 }; 164 };
163 165
164 } // namespace 166 } // namespace
165 167
166 LoaderController::LoaderController() 168 LoaderController::LoaderController()
167 : lock_count_(0), 169 : lock_count_(0),
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 const bool is_initial_load = (!loaded_ && !IsRefreshing()); 373 const bool is_initial_load = (!loaded_ && !IsRefreshing());
372 374
373 // Register the callback function to be called when it is loaded. 375 // Register the callback function to be called when it is loaded.
374 pending_load_callback_.push_back(callback); 376 pending_load_callback_.push_back(callback);
375 377
376 // If loading task is already running, do nothing. 378 // If loading task is already running, do nothing.
377 if (pending_load_callback_.size() > 1) 379 if (pending_load_callback_.size() > 1)
378 return; 380 return;
379 381
380 // Check the current status of local metadata, and start loading if needed. 382 // Check the current status of local metadata, and start loading if needed.
381 int64* local_changestamp = new int64(0); 383 int64_t* local_changestamp = new int64_t(0);
382 base::PostTaskAndReplyWithResult( 384 base::PostTaskAndReplyWithResult(
383 blocking_task_runner_.get(), 385 blocking_task_runner_.get(),
384 FROM_HERE, 386 FROM_HERE,
385 base::Bind(&ResourceMetadata::GetLargestChangestamp, 387 base::Bind(&ResourceMetadata::GetLargestChangestamp,
386 base::Unretained(resource_metadata_), 388 base::Unretained(resource_metadata_),
387 local_changestamp), 389 local_changestamp),
388 base::Bind(&ChangeListLoader::LoadAfterGetLargestChangestamp, 390 base::Bind(&ChangeListLoader::LoadAfterGetLargestChangestamp,
389 weak_ptr_factory_.GetWeakPtr(), 391 weak_ptr_factory_.GetWeakPtr(),
390 is_initial_load, 392 is_initial_load,
391 base::Owned(local_changestamp))); 393 base::Owned(local_changestamp)));
392 } 394 }
393 395
394 void ChangeListLoader::LoadAfterGetLargestChangestamp( 396 void ChangeListLoader::LoadAfterGetLargestChangestamp(
395 bool is_initial_load, 397 bool is_initial_load,
396 const int64* local_changestamp, 398 const int64_t* local_changestamp,
397 FileError error) { 399 FileError error) {
398 DCHECK(thread_checker_.CalledOnValidThread()); 400 DCHECK(thread_checker_.CalledOnValidThread());
399 401
400 if (error != FILE_ERROR_OK) { 402 if (error != FILE_ERROR_OK) {
401 OnChangeListLoadComplete(error); 403 OnChangeListLoadComplete(error);
402 return; 404 return;
403 } 405 }
404 406
405 if (is_initial_load && *local_changestamp > 0) { 407 if (is_initial_load && *local_changestamp > 0) {
406 // The local data is usable. Flush callbacks to tell loading was successful. 408 // The local data is usable. Flush callbacks to tell loading was successful.
407 OnChangeListLoadComplete(FILE_ERROR_OK); 409 OnChangeListLoadComplete(FILE_ERROR_OK);
408 410
409 // Continues to load from server in background. 411 // Continues to load from server in background.
410 // Put dummy callbacks to indicate that fetching is still continuing. 412 // Put dummy callbacks to indicate that fetching is still continuing.
411 pending_load_callback_.push_back( 413 pending_load_callback_.push_back(
412 base::Bind(&util::EmptyFileOperationCallback)); 414 base::Bind(&util::EmptyFileOperationCallback));
413 } 415 }
414 416
415 about_resource_loader_->GetAboutResource( 417 about_resource_loader_->GetAboutResource(
416 base::Bind(&ChangeListLoader::LoadAfterGetAboutResource, 418 base::Bind(&ChangeListLoader::LoadAfterGetAboutResource,
417 weak_ptr_factory_.GetWeakPtr(), 419 weak_ptr_factory_.GetWeakPtr(),
418 *local_changestamp)); 420 *local_changestamp));
419 } 421 }
420 422
421 void ChangeListLoader::LoadAfterGetAboutResource( 423 void ChangeListLoader::LoadAfterGetAboutResource(
422 int64 local_changestamp, 424 int64_t local_changestamp,
423 google_apis::DriveApiErrorCode status, 425 google_apis::DriveApiErrorCode status,
424 scoped_ptr<google_apis::AboutResource> about_resource) { 426 scoped_ptr<google_apis::AboutResource> about_resource) {
425 DCHECK(thread_checker_.CalledOnValidThread()); 427 DCHECK(thread_checker_.CalledOnValidThread());
426 428
427 FileError error = GDataToFileError(status); 429 FileError error = GDataToFileError(status);
428 if (error != FILE_ERROR_OK) { 430 if (error != FILE_ERROR_OK) {
429 OnChangeListLoadComplete(error); 431 OnChangeListLoadComplete(error);
430 return; 432 return;
431 } 433 }
432 434
433 DCHECK(about_resource); 435 DCHECK(about_resource);
434 436
435 int64 remote_changestamp = about_resource->largest_change_id(); 437 int64_t remote_changestamp = about_resource->largest_change_id();
436 int64 start_changestamp = local_changestamp > 0 ? local_changestamp + 1 : 0; 438 int64_t start_changestamp = local_changestamp > 0 ? local_changestamp + 1 : 0;
437 if (local_changestamp >= remote_changestamp) { 439 if (local_changestamp >= remote_changestamp) {
438 if (local_changestamp > remote_changestamp) { 440 if (local_changestamp > remote_changestamp) {
439 LOG(WARNING) << "Local resource metadata is fresher than server, " 441 LOG(WARNING) << "Local resource metadata is fresher than server, "
440 << "local = " << local_changestamp 442 << "local = " << local_changestamp
441 << ", server = " << remote_changestamp; 443 << ", server = " << remote_changestamp;
442 } 444 }
443 445
444 // No changes detected, tell the client that the loading was successful. 446 // No changes detected, tell the client that the loading was successful.
445 OnChangeListLoadComplete(FILE_ERROR_OK); 447 OnChangeListLoadComplete(FILE_ERROR_OK);
446 } else { 448 } else {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 logger_->Log(logging::LOG_ERROR, 484 logger_->Log(logging::LOG_ERROR,
483 "Failed to update the about resource: %s", 485 "Failed to update the about resource: %s",
484 google_apis::DriveApiErrorCodeToString(error).c_str()); 486 google_apis::DriveApiErrorCodeToString(error).c_str());
485 return; 487 return;
486 } 488 }
487 logger_->Log(logging::LOG_INFO, 489 logger_->Log(logging::LOG_INFO,
488 "About resource updated to: %s", 490 "About resource updated to: %s",
489 base::Int64ToString(resource->largest_change_id()).c_str()); 491 base::Int64ToString(resource->largest_change_id()).c_str());
490 } 492 }
491 493
492 void ChangeListLoader::LoadChangeListFromServer(int64 start_changestamp) { 494 void ChangeListLoader::LoadChangeListFromServer(int64_t start_changestamp) {
493 DCHECK(thread_checker_.CalledOnValidThread()); 495 DCHECK(thread_checker_.CalledOnValidThread());
494 DCHECK(!change_feed_fetcher_); 496 DCHECK(!change_feed_fetcher_);
495 DCHECK(about_resource_loader_->cached_about_resource()); 497 DCHECK(about_resource_loader_->cached_about_resource());
496 498
497 bool is_delta_update = start_changestamp != 0; 499 bool is_delta_update = start_changestamp != 0;
498 500
499 // Set up feed fetcher. 501 // Set up feed fetcher.
500 if (is_delta_update) { 502 if (is_delta_update) {
501 change_feed_fetcher_.reset( 503 change_feed_fetcher_.reset(
502 new DeltaFeedFetcher(scheduler_, start_changestamp)); 504 new DeltaFeedFetcher(scheduler_, start_changestamp));
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 578
577 OnChangeListLoadComplete(error); 579 OnChangeListLoadComplete(error);
578 580
579 FOR_EACH_OBSERVER(ChangeListLoaderObserver, 581 FOR_EACH_OBSERVER(ChangeListLoaderObserver,
580 observers_, 582 observers_,
581 OnLoadFromServerComplete()); 583 OnLoadFromServerComplete());
582 } 584 }
583 585
584 } // namespace internal 586 } // namespace internal
585 } // namespace drive 587 } // namespace drive
OLDNEW
« no previous file with comments | « components/drive/change_list_loader.h ('k') | components/drive/change_list_loader_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698