1 // Copyright 2019 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 
5 #include "third_party/blink/renderer/platform/scheduler/public/web_scheduling_priority.h"
6 
7 namespace blink {
8 
9 namespace {
10 
UserBlockingPriorityKeyword()11 const AtomicString& UserBlockingPriorityKeyword() {
12   DEFINE_STATIC_LOCAL(const AtomicString, user_blocking_priority,
13                       ("user-blocking"));
14   return user_blocking_priority;
15 }
16 
UserVisiblePriorityKeyword()17 const AtomicString& UserVisiblePriorityKeyword() {
18   DEFINE_STATIC_LOCAL(const AtomicString, user_visible_priority,
19                       ("user-visible"));
20   return user_visible_priority;
21 }
22 
BackgroundPriorityKeyword()23 const AtomicString& BackgroundPriorityKeyword() {
24   DEFINE_STATIC_LOCAL(const AtomicString, background_priority, ("background"));
25   return background_priority;
26 }
27 
28 }  // namespace
29 
WebSchedulingPriorityToString(WebSchedulingPriority priority)30 AtomicString WebSchedulingPriorityToString(WebSchedulingPriority priority) {
31   switch (priority) {
32     case WebSchedulingPriority::kUserBlockingPriority:
33       return UserBlockingPriorityKeyword();
34     case WebSchedulingPriority::kUserVisiblePriority:
35       return UserVisiblePriorityKeyword();
36     case WebSchedulingPriority::kBackgroundPriority:
37       return BackgroundPriorityKeyword();
38   }
39 
40   NOTREACHED();
41   return g_empty_atom;
42 }
43 
WebSchedulingPriorityFromString(const AtomicString & priority)44 WebSchedulingPriority WebSchedulingPriorityFromString(
45     const AtomicString& priority) {
46   if (priority == UserBlockingPriorityKeyword())
47     return WebSchedulingPriority::kUserBlockingPriority;
48   if (priority == UserVisiblePriorityKeyword())
49     return WebSchedulingPriority::kUserVisiblePriority;
50   if (priority == BackgroundPriorityKeyword())
51     return WebSchedulingPriority::kBackgroundPriority;
52   NOTREACHED();
53   return WebSchedulingPriority::kUserVisiblePriority;
54 }
55 
56 }  // namespace blink
57