summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/platform/scheduler/main_thread/web_scheduling_priority.cc
blob: d680bb7669a4da9d6197e869ca1bc656a3de04fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// Copyright 2019 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 "third_party/blink/renderer/platform/scheduler/public/web_scheduling_priority.h"

namespace blink {

namespace {

const AtomicString& UserBlockingPriorityKeyword() {
  DEFINE_STATIC_LOCAL(const AtomicString, user_blocking_priority,
                      ("user-blocking"));
  return user_blocking_priority;
}

const AtomicString& UserVisiblePriorityKeyword() {
  DEFINE_STATIC_LOCAL(const AtomicString, user_visible_priority,
                      ("user-visible"));
  return user_visible_priority;
}

const AtomicString& BackgroundPriorityKeyword() {
  DEFINE_STATIC_LOCAL(const AtomicString, background_priority, ("background"));
  return background_priority;
}

}  // namespace

AtomicString WebSchedulingPriorityToString(WebSchedulingPriority priority) {
  switch (priority) {
    case WebSchedulingPriority::kUserBlockingPriority:
      return UserBlockingPriorityKeyword();
    case WebSchedulingPriority::kUserVisiblePriority:
      return UserVisiblePriorityKeyword();
    case WebSchedulingPriority::kBackgroundPriority:
      return BackgroundPriorityKeyword();
  }

  NOTREACHED();
  return g_empty_atom;
}

WebSchedulingPriority WebSchedulingPriorityFromString(
    const AtomicString& priority) {
  if (priority == UserBlockingPriorityKeyword())
    return WebSchedulingPriority::kUserBlockingPriority;
  if (priority == UserVisiblePriorityKeyword())
    return WebSchedulingPriority::kUserVisiblePriority;
  if (priority == BackgroundPriorityKeyword())
    return WebSchedulingPriority::kBackgroundPriority;
  NOTREACHED();
  return WebSchedulingPriority::kUserVisiblePriority;
}

}  // namespace blink