summaryrefslogtreecommitdiff
path: root/chromium/docs/privacy_budget_code_locations.md
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/docs/privacy_budget_code_locations.md
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-chromium-85-based.tar.gz
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/docs/privacy_budget_code_locations.md')
-rw-r--r--chromium/docs/privacy_budget_code_locations.md68
1 files changed, 68 insertions, 0 deletions
diff --git a/chromium/docs/privacy_budget_code_locations.md b/chromium/docs/privacy_budget_code_locations.md
new file mode 100644
index 00000000000..49655c4334f
--- /dev/null
+++ b/chromium/docs/privacy_budget_code_locations.md
@@ -0,0 +1,68 @@
+# Privacy Budget: Code Locations
+
+Following on from the high level [Privacy
+Budget](https://github.com/bslassey/privacy-budget) explainer, the current
+implementation focuses on measuring the identifiability of various web exposed
+features. Hence the word `Identifiability` occurs often in the code and
+documentation.
+
+This document focuses on code layout for Privacy Budget. Concepts and background
+for the identifiability study are out of scope.
+
+TODO(asanka): Link to study documents once they are checked in.
+
+## Core Metrics and Aggregation
+
+Locations:
+
+* [`third_party/blink/public/common/privacy_budget`](../third_party/blink/public/common/privacy_budget)
+* [`third_party/blink/common/privacy_budget`](../third_party/blink/common/privacy_budget)
+
+Includes:
+
+* Core logic and primitives for constructing identifiability metrics.
+
+ This is what one would use when reporting identifiability study samples.
+ Centralized logic makes it easier to construct consistent and stable samples.
+
+* Per-process aggregation of metrics.
+
+ Aggregation minimizes the amount of information being communicated across
+ process boundaries.
+
+The code in this directory is shared across `//content`, `//chrome`, and
+`//third_party/blink`. Hence its placement in `blink/public/common`.
+
+In addition, this directory also contains logic for per-process aggregation of
+metrics so that they can be efficiently communicated across process boundaries.
+
+## Static study settings
+
+Locations:
+
+* [`chrome/common/privacy_budget`](../chrome/common/privacy_budget)
+
+Logic for accessing per-session settings based on externally supplied field
+trial configurations. The full set of externally controlled settings are
+in
+[`privacy_budget_features.h`](../chrome/common/privacy_budget/privacy_budget_features.h).
+
+At a high level, these settings control such things as:
+
+* Whether the study is active.
+* Which identifiable surfaces should *not* be sampled.
+* Parameters for how surfaces are selected for sampling.
+
+Both the browser and the renderer need to access these settings. The browser
+needs them for filtering and reporting. The renderer needs them to avoid
+sampling surfaces where sampling itself is harmful for performance or stability
+reasons.
+
+## Persistent study state and reporting
+
+Locations:
+* [`chrome/browser/privacy_budget`](../chrome/browser/privacy_budget)
+
+Per-client state is primarily used and exposed by `IdentifiabilityStudyState`
+([Source](../chrome/browser/privacy_budget/identifiability_study_state.h)).
+