test_task.cc 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // Copyright 2016 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/offline_pages/task/test_task.h"
  5. #include "base/bind.h"
  6. namespace offline_pages {
  7. ConsumedResource::ConsumedResource() {}
  8. ConsumedResource::~ConsumedResource() {}
  9. void ConsumedResource::Step(base::OnceClosure step_callback) {
  10. next_step_ = std::move(step_callback);
  11. }
  12. void ConsumedResource::CompleteStep() {
  13. std::move(next_step_).Run();
  14. }
  15. TestTask::TestTask(ConsumedResource* resource)
  16. : resource_(resource),
  17. state_(TaskState::NOT_STARTED),
  18. leave_early_(false) {}
  19. TestTask::TestTask(ConsumedResource* resource, bool leave_early)
  20. : resource_(resource),
  21. state_(TaskState::NOT_STARTED),
  22. leave_early_(leave_early) {}
  23. TestTask::~TestTask() {}
  24. // Run is Step 1 in our case.
  25. void TestTask::Run() {
  26. state_ = TaskState::STEP_1;
  27. resource_->Step(base::BindOnce(&TestTask::Step2, base::Unretained(this)));
  28. }
  29. void TestTask::Step2() {
  30. if (leave_early_) {
  31. LastStep();
  32. return;
  33. }
  34. state_ = TaskState::STEP_2;
  35. resource_->Step(base::BindOnce(&TestTask::LastStep, base::Unretained(this)));
  36. }
  37. // This is step 3, but we conclude here.
  38. void TestTask::LastStep() {
  39. state_ = TaskState::COMPLETED;
  40. TaskComplete();
  41. }
  42. } // namespace offline_pages