blob: 76f7785ae06a260085906affae6da2a8f2462a5b [file] [log] [blame]
// Copyright 2017 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.
module prefs.mojom;
import "mojo/common/file_path.mojom";
import "mojo/common/string16.mojom";
import "services/preferences/public/interfaces/tracked_preference_validation_delegate.mojom";
union PersistentPrefStoreConfiguration {
SimplePersistentPrefStoreConfiguration simple_configuration;
TrackedPersistentPrefStoreConfiguration tracked_configuration;
};
struct SimplePersistentPrefStoreConfiguration {
mojo.common.mojom.FilePath pref_filename;
};
// These parameters are passed to prefs::CreateTrackedPersistentPrefStore() in
// services/preferences/persistent_pref_store_factory.cc.
struct TrackedPersistentPrefStoreConfiguration {
mojo.common.mojom.FilePath unprotected_pref_filename;
mojo.common.mojom.FilePath protected_pref_filename;
array<TrackedPreferenceMetadata> tracking_configuration;
uint64 reporting_ids_count;
string seed;
string legacy_device_id;
string registry_seed;
mojo.common.mojom.String16 registry_path;
TrackedPreferenceValidationDelegate? validation_delegate;
ResetOnLoadObserver? reset_on_load_observer;
};
struct TrackedPreferenceMetadata {
enum EnforcementLevel { NO_ENFORCEMENT, ENFORCE_ON_LOAD };
enum PrefTrackingStrategy {
// Atomic preferences are tracked as a whole.
ATOMIC,
// Split preferences are dictionaries for which each top-level entry is
// tracked independently. Note: preferences using this strategy must be kept
// in sync with TrackedSplitPreferences in histograms.xml.
SPLIT,
};
enum ValueType {
IMPERSONAL,
// The preference value may contain personal information.
PERSONAL,
};
uint64 reporting_id;
string name;
EnforcementLevel enforcement_level;
PrefTrackingStrategy strategy;
ValueType value_type;
};
interface ResetOnLoadObserver {
OnResetOnLoad();
};