blob: 272ea961d70d09d2b2fdaea2d86a83bc99a4157b [file] [log] [blame]
// 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 COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_METRICS_H_
#define COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_METRICS_H_
#include <ostream>
namespace autofill_assistant {
// A class to generate Autofill Assistant related histograms.
class Metrics {
public:
// The different ways that autofill assistant can stop.
//
// GENERATED_JAVA_ENUM_PACKAGE: (
// org.chromium.chrome.browser.autofill_assistant.metrics)
// GENERATED_JAVA_CLASS_NAME_OVERRIDE: DropOutReason
enum DropOutReason {
AA_START = 0,
AUTOSTART_TIMEOUT = 1,
NO_SCRIPTS = 2,
CUSTOM_TAB_CLOSED = 3,
DECLINED = 4,
SHEET_CLOSED = 5,
SCRIPT_FAILED = 6,
NAVIGATION = 7,
OVERLAY_STOP = 8,
PR_FAILED = 9,
CONTENT_DESTROYED = 10,
RENDER_PROCESS_GONE = 11,
INTERSTITIAL_PAGE = 12,
SCRIPT_SHUTDOWN = 13,
SAFETY_NET_TERMINATE = 14, // This is a "should never happen" entry.
TAB_DETACHED = 15,
TAB_CHANGED = 16,
GET_SCRIPTS_FAILED = 17,
GET_SCRIPTS_UNPARSABLE = 18,
NO_INITIAL_SCRIPTS = 19,
DFM_CANCELLED = 19,
NUM_ENTRIES = 21,
};
static void RecordDropOut(DropOutReason reason);
// Intended for debugging: writes string representation of |reason| to |out|.
friend std::ostream& operator<<(std::ostream& out,
const DropOutReason& reason) {
#ifdef NDEBUG
// Non-debugging builds write the enum number.
out << static_cast<int>(reason);
return out;
#else
// Debugging builds write a string representation of |reason|.
switch (reason) {
case AA_START:
out << "AA_START";
break;
case AUTOSTART_TIMEOUT:
out << "AUTOSTART_TIMEOUT";
break;
case NO_SCRIPTS:
out << "NO_SCRIPTS";
break;
case CUSTOM_TAB_CLOSED:
out << "CUSTOM_TAB_CLOSED";
break;
case DECLINED:
out << "DECLINED";
break;
case SHEET_CLOSED:
out << "SHEET_CLOSED";
break;
case SCRIPT_FAILED:
out << "SCRIPT_FAILED";
break;
case NAVIGATION:
out << "NAVIGATION";
break;
case OVERLAY_STOP:
out << "OVERLAY_STOP";
break;
case PR_FAILED:
out << "PR_FAILED";
break;
case CONTENT_DESTROYED:
out << "CONTENT_DESTROYED";
break;
case RENDER_PROCESS_GONE:
out << "RENDER_PROCESS_GONE";
break;
case INTERSTITIAL_PAGE:
out << "INTERSTITIAL_PAGE";
break;
case SCRIPT_SHUTDOWN:
out << "SCRIPT_SHUTDOWN";
break;
case SAFETY_NET_TERMINATE:
out << "SAFETY_NET_TERMINATE";
break;
case TAB_DETACHED:
out << "TAB_DETACHED";
break;
case TAB_CHANGED:
out << "TAB_CHANGED";
break;
case NUM_ENTRIES:
out << "NUM_ENTRIES";
break;
case GET_SCRIPTS_FAILED:
out << "GET_SCRIPTS_FAILED";
break;
case GET_SCRIPTS_UNPARSABLE:
out << "GET_SCRIPTS_UNPARSEABLE";
break;
case NO_INITIAL_SCRIPTS:
out << "NO_INITIAL_SCRIPTS";
// Intentionally no default case to make compilation fail if a new value
// was added to the enum but not to this list.
}
return out;
#endif // NDEBUG
}
};
} // namespace autofill_assistant
#endif // COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_METRICS_H_