blob: 009c4942b8be62d4b58e6d3aff742e6ad66a26f2 [file] [log] [blame]
// 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 <utility>
#include <vector>
#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<TileImpression>& 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