// Copyright 2020 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_CANVAS_CANVAS2D_IDENTIFIABILITY_STUDY_HELPER_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_CANVAS_CANVAS2D_IDENTIFIABILITY_STUDY_HELPER_H_ #include <stdint.h> #include <array> #include <initializer_list> #include "base/compiler_specific.h" #include "third_party/blink/public/common/privacy_budget/identifiability_study_settings.h" #include "third_party/blink/public/common/privacy_budget/identifiable_surface.h" #include "third_party/blink/public/common/privacy_budget/identifiable_token.h" #include "third_party/blink/public/common/privacy_budget/identifiable_token_builder.h" #include "third_party/blink/renderer/core/execution_context/execution_context.h" #include "third_party/blink/renderer/modules/modules_export.h" #include "third_party/blink/renderer/platform/heap/forward.h" // IWYU pragma: keep (blink::Visitor) #include "third_party/blink/renderer/platform/heap/member.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" // https://github.com/include-what-you-use/include-what-you-use/issues/1546 // IWYU pragma: no_forward_declare WTF::internal::__thisIsHereToForceASemicolonAfterThisMacro // IWYU pragma: no_include "third_party/blink/renderer/platform/heap/visitor.h" namespace blink { // Text operations supported on different canvas types; the intent is to use // these values (and any input supplied to these operations) to build a running // hash that reprensents the sequence of text operations performed on the // canvas. A hash of all other canvas operations is maintained by hashing the // serialized PaintOps produced by the canvas in CanvasResourceProvider. // // If a canvas method to exfiltrate the canvas buffer is called by a script // (getData(), etc.), this hash will be uploaded to UKM along with a hash of the // canvas buffer data. // // **Don't renumber after the privacy budget study has started to ensure // consistency.** enum class CanvasOps { … }; // A helper class to simplify maintaining the current text digest for the canvas // context. An operation count is also maintained to limit the performance // impact of the study. class IdentifiabilityStudyHelper final { … }; } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_MODULES_CANVAS_CANVAS2D_IDENTIFIABILITY_STUDY_HELPER_H_