Home | History | Annotate | Download | only in net
      1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_COMMON_NET_NET_ERROR_INFO_H_
      6 #define CHROME_COMMON_NET_NET_ERROR_INFO_H_
      7 
      8 namespace chrome_common_net {
      9 
     10 // Network error page events.  Used for UMA statistics.
     11 enum NetworkErrorPageEvent {
     12   NETWORK_ERROR_PAGE_SHOWN,                      // Error pages shown.
     13 
     14   NETWORK_ERROR_PAGE_RELOAD_BUTTON_SHOWN,        // Reload buttons shown.
     15   NETWORK_ERROR_PAGE_RELOAD_BUTTON_CLICKED,      // Reload button clicked.
     16   NETWORK_ERROR_PAGE_RELOAD_BUTTON_ERROR,        // Reload button clicked
     17                                                  // -> error.
     18 
     19   NETWORK_ERROR_PAGE_LOAD_STALE_BUTTON_SHOWN,    // Load stale buttons shown.
     20   NETWORK_ERROR_PAGE_LOAD_STALE_BUTTON_CLICKED,  // Load stale button clicked.
     21   NETWORK_ERROR_PAGE_LOAD_STALE_BUTTON_ERROR,    // Load stale buttons -> error.
     22 
     23   NETWORK_ERROR_PAGE_MORE_BUTTON_CLICKED,        // More button clicked.
     24 
     25   NETWORK_ERROR_PAGE_BROWSER_INITIATED_RELOAD,   // Reload from browser.
     26 
     27   NETWORK_ERROR_PAGE_EVENT_MAX,
     28 };
     29 
     30 // The status of a DNS probe that the NetErrorTabHelper may or may not have
     31 // started.
     32 //
     33 // The DNS_PROBE_FINISHED_* values are used in histograms, so:
     34 // 1. FINISHED_UNKNOWN must remain the first FINISHED_* value.
     35 // 2. FINISHED_* values must not be rearranged relative to FINISHED_UNKNOWN.
     36 // 3. New FINISHED_* values must be inserted at the end.
     37 // 4. New non-FINISHED_* values cannot be inserted.
     38 enum DnsProbeStatus {
     39   // A DNS probe may be run for this error page.  (This status is only used on
     40   // the renderer side before it's received a status update from the browser.)
     41   DNS_PROBE_POSSIBLE,
     42 
     43   // A DNS probe will not be run for this error page.  (This happens if the
     44   // user has the "Use web service to resolve navigation errors" preference
     45   // turned off, or if probes are disabled by the field trial.)
     46   DNS_PROBE_NOT_RUN,
     47 
     48   // A DNS probe has been started for this error page.  The renderer should
     49   // expect to receive another IPC with one of the FINISHED statuses once the
     50   // probe has finished (as long as the error page is still loaded).
     51   DNS_PROBE_STARTED,
     52 
     53   // A DNS probe has finished with one of the following results:
     54 
     55   // The probe was inconclusive.
     56   DNS_PROBE_FINISHED_INCONCLUSIVE,
     57 
     58   // There's no internet connection.
     59   DNS_PROBE_FINISHED_NO_INTERNET,
     60 
     61   // The DNS configuration is wrong, or the servers are down or broken.
     62   DNS_PROBE_FINISHED_BAD_CONFIG,
     63 
     64   // The DNS servers are working fine, so the domain must not exist.
     65   DNS_PROBE_FINISHED_NXDOMAIN,
     66 
     67   DNS_PROBE_MAX
     68 };
     69 
     70 // Returns a string representing |status|.  It should be simply the name of
     71 // the value as a string, but don't rely on that.  This is presented to the
     72 // user as part of the DNS error page (as the error code, at the bottom),
     73 // and is also used in some verbose log messages.
     74 //
     75 // |status| is an int because error codes are ints by the time they get to the
     76 // localized error system, and we don't want to require the caller to cast back
     77 // to a probe status.  The function will NOTREACHED() and return an empty
     78 // string if given an int that does not match a value in DnsProbeStatus (or if
     79 // it is DNS_PROBE_MAX, which is not a real status).
     80 const char* DnsProbeStatusToString(int status);
     81 
     82 // Returns true if |status| is one of the DNS_PROBE_FINISHED_* statuses.
     83 bool DnsProbeStatusIsFinished(DnsProbeStatus status);
     84 
     85 // Record specific error page events.
     86 void RecordEvent(NetworkErrorPageEvent event);
     87 
     88 // The error domain used to pass DNS probe statuses to the localized error
     89 // code.
     90 extern const char kDnsProbeErrorDomain[];
     91 
     92 }  // namespace chrome_common_net
     93 
     94 #endif  // CHROME_COMMON_NET_NET_ERROR_INFO_H_
     95