// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef EXTENSIONS_BROWSER_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ #define EXTENSIONS_BROWSER_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ namespace extensions::functions { // Short version: // *Never* reorder or delete entries in the |HistogramValue| enumeration. // When creating a new extension function, add a new entry at the end of the // enum, just prior to ENUM_BOUNDARY. // // Long version: // This enumeration is used to associate a unique integer value to each // extension function so that their usage can be recorded in histogram charts. // Given we want the values recorded in the these charts to remain stable over // time for comparison purposes, once an entry has been added to the // enumeration, it should never be removed or moved to another spot in the // enum. // // Here are instructions how to manage entries depending on what you are trying // to achieve. // // 1) Creating a new extension function: // // Add a new entry at the end of the |HistogramValue| enum. The name of the // entry should follow this algorithm: // a) Take the string value passed as first argument to // DECLARE_EXTENSION_FUNCTION. // b) Replace '.' with '_'. // c) Make all letters uppercase. // // Example: "tabs.create" -> TABS_CREATE // // 2) Deleting an existing function: // // Given an existing entry should *never* be removed from this enumeration, // it is recommended to add a "DELETED_" prefix to the existing entry. // // 3) Renaming an existing function: // // There are 2 options, depending if you want to keep accruing data in the // *existing* histogram stream or in a *new* one. // // a) If you want keep recording usages of the extension function in the // *existing* histogram stream, simply rename the enum entry to match // the new extension function name, following the same naming rule as // mentioned in 1). The enum entry will keep the same underlying integer // value, so the same histogram stream will be used for recording // usages. // // b) If you want start recording usages of the extension function to in a // *new* histogram stream, follow the instructions in step 1) and 2) // above. This will effectively deprecate the old histogram stream and // creates a new one for the new function name. // enum HistogramValue { … }; } // namespace extensions::functions #endif // EXTENSIONS_BROWSER_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_