1 // Copyright 2018 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/graphics/subtree_paint_property_update_reason.h"
6 #include "third_party/blink/renderer/platform/wtf/text/string_builder.h"
7 
8 namespace blink {
9 namespace {
10 
operator &(unsigned mask,SubtreePaintPropertyUpdateReason reason)11 unsigned operator&(unsigned mask, SubtreePaintPropertyUpdateReason reason) {
12   return mask & static_cast<unsigned>(reason);
13 }
14 
15 }  // namespace
16 
SubtreePaintPropertyUpdateReasonsToString(unsigned bitmask)17 String SubtreePaintPropertyUpdateReasonsToString(unsigned bitmask) {
18   StringBuilder result;
19   bool need_separator = false;
20   auto append = [&result, &need_separator](const char* name) {
21     if (need_separator)
22       result.Append("|");
23     result.Append(name);
24     need_separator = true;
25   };
26 
27   result.Append("(");
28   if (bitmask == static_cast<unsigned>(SubtreePaintPropertyUpdateReason::kNone))
29     append("kNone");
30   if (bitmask & SubtreePaintPropertyUpdateReason::kContainerChainMayChange)
31     append("kContainerChainMayChange");
32   if (bitmask & SubtreePaintPropertyUpdateReason::kFragmentsChanged)
33     append("kFragmentsChanged");
34   if (bitmask & SubtreePaintPropertyUpdateReason::kPreviouslySkipped)
35     append("kPreviouslySkipped");
36   if (bitmask & SubtreePaintPropertyUpdateReason::kPrinting)
37     append("kPrinting");
38   if (bitmask & SubtreePaintPropertyUpdateReason::kTransformStyleChanged)
39     append("kTransformStyleChanged");
40   result.Append(")");
41   return result.ToString();
42 }
43 
44 }  // namespace blink
45