blob: e72b710ab907f268a48636e442c1eb42156c0ae1 [file] [log] [blame]
// Copyright (c) 2013 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_ERROR_PAGE_COMMON_NET_ERROR_INFO_H_
#define COMPONENTS_ERROR_PAGE_COMMON_NET_ERROR_INFO_H_
namespace error_page {
// Network error page events. Used for UMA statistics.
enum NetworkErrorPageEvent {
NETWORK_ERROR_PAGE_SHOWN = 0, // Error pages shown.
NETWORK_ERROR_PAGE_RELOAD_BUTTON_SHOWN = 1, // Reload buttons shown.
NETWORK_ERROR_PAGE_RELOAD_BUTTON_CLICKED = 2, // Reload button clicked.
NETWORK_ERROR_PAGE_RELOAD_BUTTON_ERROR = 3, // Reload button clicked
// -> error.
// Same for the "Show saved copy" button.
NETWORK_ERROR_PAGE_SHOW_SAVED_COPY_BUTTON_SHOWN = 4,
NETWORK_ERROR_PAGE_SHOW_SAVED_COPY_BUTTON_CLICKED = 5,
NETWORK_ERROR_PAGE_SHOW_SAVED_COPY_BUTTON_ERROR = 6,
NETWORK_ERROR_PAGE_MORE_BUTTON_CLICKED = 7, // More button clicked.
NETWORK_ERROR_PAGE_BROWSER_INITIATED_RELOAD = 8, // Reload from browser.
// Keep track of which button the user chooses when both are shown.
NETWORK_ERROR_PAGE_BOTH_BUTTONS_SHOWN = 9,
NETWORK_ERROR_PAGE_BOTH_BUTTONS_RELOAD_CLICKED = 10,
NETWORK_ERROR_PAGE_BOTH_BUTTONS_SHOWN_SAVED_COPY_CLICKED = 11,
NETWORK_ERROR_EASTER_EGG_ACTIVATED = 12, // Easter egg activated.
// For "Google cached copy" button experiment.
NETWORK_ERROR_PAGE_CACHED_COPY_BUTTON_SHOWN = 13,
NETWORK_ERROR_PAGE_CACHED_COPY_BUTTON_CLICKED = 14,
// Obsolete. No longer experimenting with the label.
// NETWORK_ERROR_PAGE_CACHED_PAGE_BUTTON_SHOWN = 15,
// NETWORK_ERROR_PAGE_CACHED_PAGE_BUTTON_CLICKED = 16,
NETWORK_ERROR_DIAGNOSE_BUTTON_CLICKED = 17, // Diagnose button clicked.
// For the button to show all offline pages.
// Obsolete. No longer showing this.
// NETWORK_ERROR_PAGE_SHOW_OFFLINE_PAGES_BUTTON_SHOWN = 18,
// NETWORK_ERROR_PAGE_SHOW_OFFLINE_PAGES_BUTTON_CLICKED = 19,
// For the button to show offline copy.
// Obsolete. No longer showing this.
// NETWORK_ERROR_PAGE_SHOW_OFFLINE_COPY_BUTTON_SHOWN = 20,
// NETWORK_ERROR_PAGE_SHOW_OFFLINE_COPY_BUTTON_CLICKED = 21,
NETWORK_ERROR_PAGE_DOWNLOAD_BUTTON_SHOWN = 22,
NETWORK_ERROR_PAGE_DOWNLOAD_BUTTON_CLICKED = 23,
NETWORK_ERROR_PAGE_EVENT_MAX,
};
// The status of a DNS probe.
//
// The DNS_PROBE_FINISHED_* values are used in histograms, so:
// 1. FINISHED_UNKNOWN must remain the first FINISHED_* value.
// 2. FINISHED_* values must not be rearranged relative to FINISHED_UNKNOWN.
// 3. New FINISHED_* values must be inserted at the end.
// 4. New non-FINISHED_* values cannot be inserted.
enum DnsProbeStatus {
// A DNS probe may be run for this error page. (This status is only used on
// the renderer side before it's received a status update from the browser.)
DNS_PROBE_POSSIBLE,
// A DNS probe will not be run for this error page. (This happens if the
// user has the "Use web service to resolve navigation errors" preference
// turned off, or if probes are disabled by the field trial.)
DNS_PROBE_NOT_RUN,
// A DNS probe has been started for this error page. The renderer should
// expect to receive another IPC with one of the FINISHED statuses once the
// probe has finished (as long as the error page is still loaded).
DNS_PROBE_STARTED,
// A DNS probe has finished with one of the following results:
// The probe was inconclusive.
DNS_PROBE_FINISHED_INCONCLUSIVE,
// There's no internet connection.
DNS_PROBE_FINISHED_NO_INTERNET,
// The DNS configuration is wrong, or the servers are down or broken.
DNS_PROBE_FINISHED_BAD_CONFIG,
// The DNS servers are working fine, so the domain must not exist.
DNS_PROBE_FINISHED_NXDOMAIN,
DNS_PROBE_MAX
};
// Returns a string representing |status|. It should be simply the name of
// the value as a string, but don't rely on that. This is presented to the
// user as part of the DNS error page (as the error code, at the bottom),
// and is also used in some verbose log messages.
//
// The function will NOTREACHED() and return an empty string if given an int
// that does not match a value in DnsProbeStatus (or if it is DNS_PROBE_MAX,
// which is not a real status).
const char* DnsProbeStatusToString(int status);
// Returns true if |status| is one of the DNS_PROBE_FINISHED_* statuses.
bool DnsProbeStatusIsFinished(DnsProbeStatus status);
// Record specific error page events.
void RecordEvent(NetworkErrorPageEvent event);
} // namespace error_page
#endif // COMPONENTS_ERROR_PAGE_COMMON_NET_ERROR_INFO_H_