// Copyright 2016 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 COMPONENTS_NTP_TILES_METRICS_H_ #define COMPONENTS_NTP_TILES_METRICS_H_ #include #include #include "components/ntp_tiles/ntp_tile.h" #include "url/gurl.h" namespace rappor { class RapporService; } // namespace rappor namespace ntp_tiles { namespace metrics { // The visual type of a most visited tile. // // These values must stay in sync with the MostVisitedTileType enum // in histograms.xml. // // A Java counterpart will be generated for this enum. // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.ntp enum MostVisitedTileType { // The icon or thumbnail hasn't loaded yet. NONE, // The item displays a site's actual favicon or touch icon. ICON_REAL, // The item displays a color derived from the site's favicon or touch icon. ICON_COLOR, // The item displays a default gray box in place of an icon. ICON_DEFAULT, // The number of different tile types that get recorded. Entries below this // are not recorded in UMA. NUM_RECORDED_TILE_TYPES, // The item displays a thumbnail of the page. Used on desktop. THUMBNAIL, // The tile type has not been determined yet. Used on iOS, until we can detect // when all tiles have loaded. UNKNOWN_TILE_TYPE, }; struct TileImpression { TileImpression(NTPTileSource source, MostVisitedTileType type, const GURL& url) : source(source), type(type), url(url) {} NTPTileSource source; MostVisitedTileType type; GURL url; }; // Records an NTP impression, after all tiles have loaded. // Includes the visual types (see above) of all visible tiles. If // |rappor_service| is null, no rappor metrics will be reported. void RecordPageImpression(const std::vector& tiles, rappor::RapporService* rappor_service); // Records a click on a tile. void RecordTileClick(int index, NTPTileSource source, MostVisitedTileType tile_type); } // namespace metrics } // namespace ntp_tiles #endif