12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // 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.
- #ifndef RLZ_LIB_SUPPLEMENTARY_BRANDING_H_
- #define RLZ_LIB_SUPPLEMENTARY_BRANDING_H_
- #include <string>
- #include "base/memory/raw_ptr.h"
- namespace rlz_lib {
- class ScopedRlzValueStoreLock;
- // Segment RLZ persistence based on branding information.
- // All information for a given product is persisted under keys with the either
- // product's name or its access point's name. This assumes that only
- // one instance of the product is installed on the machine, and that only one
- // product brand is associated with it.
- //
- // In some cases, a given product may be using supplementary brands. The RLZ
- // information must be kept separately for each of these brands. To achieve
- // this segmentation, scope all RLZ library calls that deal with supplementary
- // brands within the lifetime of an rlz_lib::ProductBranding instance.
- //
- // For example, to record events for a supplementary brand, do the following:
- //
- // {
- // rlz_lib::SupplementaryBranding branding("AAAA");
- // // This call to RecordProductEvent is scoped to the AAAA brand.
- // rlz_lib::RecordProductEvent(rlz_lib::DESKTOP, rlz_lib::GD_DESKBAND,
- // rlz_lib::INSTALL);
- // }
- //
- // // This call to RecordProductEvent is not scoped to any supplementary brand.
- // rlz_lib::RecordProductEvent(rlz_lib::DESKTOP, rlz_lib::GD_DESKBAND,
- // rlz_lib::INSTALL);
- //
- // In particular, this affects the recording of stateful events and the sending
- // of financial pings. In the former case, a stateful event recorded while
- // scoped to a supplementary brand will be recorded again when scoped to a
- // different supplementary brand (or not scoped at all). In the latter case,
- // the time skip check is specific to each supplementary brand.
- class SupplementaryBranding {
- public:
- explicit SupplementaryBranding(const char* brand);
- ~SupplementaryBranding();
- static const std::string& GetBrand();
- private:
- raw_ptr<ScopedRlzValueStoreLock> lock_;
- };
- } // namespace rlz_lib
- #endif // RLZ_LIB_SUPPLEMENTARY_BRANDING_H_
|