|  | // Copyright 2016 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "base/task_scheduler/task_traits.h" | 
|  |  | 
|  | #include <stddef.h> | 
|  |  | 
|  | #include <ostream> | 
|  |  | 
|  | namespace base { | 
|  |  | 
|  | // Do not rely on defaults hard-coded below beyond the guarantees described in | 
|  | // the header; anything else is subject to change. Tasks should explicitly | 
|  | // request defaults if the behavior is critical to the task. | 
|  | TaskTraits::TaskTraits() | 
|  | : with_file_io_(false), | 
|  | priority_(TaskPriority::BACKGROUND), | 
|  | shutdown_behavior_(TaskShutdownBehavior::SKIP_ON_SHUTDOWN) {} | 
|  |  | 
|  | TaskTraits::~TaskTraits() = default; | 
|  |  | 
|  | TaskTraits& TaskTraits::WithFileIO() { | 
|  | with_file_io_ = true; | 
|  | return *this; | 
|  | } | 
|  |  | 
|  | TaskTraits& TaskTraits::WithPriority(TaskPriority priority) { | 
|  | priority_ = priority; | 
|  | return *this; | 
|  | } | 
|  |  | 
|  | TaskTraits& TaskTraits::WithShutdownBehavior( | 
|  | TaskShutdownBehavior shutdown_behavior) { | 
|  | shutdown_behavior_ = shutdown_behavior; | 
|  | return *this; | 
|  | } | 
|  |  | 
|  | std::ostream& operator<<(std::ostream& os, const TaskPriority& task_priority) { | 
|  | switch (task_priority) { | 
|  | case TaskPriority::BACKGROUND: | 
|  | os << "BACKGROUND"; | 
|  | break; | 
|  | case TaskPriority::USER_VISIBLE: | 
|  | os << "USER_VISIBLE"; | 
|  | break; | 
|  | case TaskPriority::USER_BLOCKING: | 
|  | os << "USER_BLOCKING"; | 
|  | break; | 
|  | } | 
|  | return os; | 
|  | } | 
|  |  | 
|  | std::ostream& operator<<(std::ostream& os, | 
|  | const TaskShutdownBehavior& shutdown_behavior) { | 
|  | switch (shutdown_behavior) { | 
|  | case TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN: | 
|  | os << "CONTINUE_ON_SHUTDOWN"; | 
|  | break; | 
|  | case TaskShutdownBehavior::SKIP_ON_SHUTDOWN: | 
|  | os << "SKIP_ON_SHUTDOWN"; | 
|  | break; | 
|  | case TaskShutdownBehavior::BLOCK_SHUTDOWN: | 
|  | os << "BLOCK_SHUTDOWN"; | 
|  | break; | 
|  | } | 
|  | return os; | 
|  | } | 
|  |  | 
|  | }  // namespace base |