Plenty of what Chrome records is a bare integer: a download stopped for reason
33, a visit arrived by transition 805306374. The meaning lives
in an enum in the Chromium source, and Chrome adds to those enums every few releases.
Every table below is read from the Chromium source at each Chrome release, so it doesn't go stale. To see a whole schema instead, or when a column itself appeared, use The Evolution of Chrome Databases.
Read through Chrome 159. Values Chrome has stopped defining are kept, under each table, because old profiles still hold them.
Pages visited, how Chrome got to each one, and file downloads.
Types of transitions between pages. These are stored in the history database to separate visits, and are reported by the renderer for page navigations. WARNING: don't change these numbers. They are written directly into the history database, so future versions will need the same values to match the enums. A type is made of a core value and a set of qualifiers. A type has one core value and 0 or or more qualifiers.
One number holds two things: the core value is the number AND 255 (0xFF, the low 8 bits), and
every qualifier bit above that also applies. This is much easier to read
in hex, which is how Chromium writes it: a transition of 805306374 is 0x30000006, core 6 with the chain
start (0x10000000) and chain end (0x20000000)
bits set.
| Value | Name in Chromium | What it means |
|---|---|---|
| 0 | PAGE_TRANSITION_LINK | User got to this page by clicking a link on another page. renamed from LINK in Chrome 16 |
| 0 | PAGE_TRANSITION_FIRST same number as PAGE_TRANSITION_LINK a bound, not a value | added in Chrome 62 |
| 1 | PAGE_TRANSITION_TYPED | User got this page by typing the URL in the URL bar. This should not be used for cases where the user selected a choice that didn't look at all like a URL; see GENERATED below. We also use this for other "explicit" navigation actions. renamed from TYPED in Chrome 16 |
| 2 | PAGE_TRANSITION_AUTO_BOOKMARK | User got to this page through a suggestion in the UI, for example) through the destinations page. renamed from AUTO_BOOKMARK in Chrome 16 |
| 3 | PAGE_TRANSITION_AUTO_SUBFRAME | This is a subframe navigation. This is any content that is automatically loaded in a non-toplevel frame. For example, if a page consists of several frames containing ads, those ad URLs will have this transition type. The user may not even realize the content in these pages is a separate frame, so may not care about the URL (see MANUAL below). All Fenced Frame navigations will be of this type because they are considered a non-toplevel navigation that does not generate new navigation entries in the back/forward list. renamed from AUTO_SUBFRAME in Chrome 16 |
| 4 | PAGE_TRANSITION_MANUAL_SUBFRAME | For subframe navigations that are explicitly requested by the user and generate new navigation entries in the back/forward list. These are probably more important than frames that were automatically loaded in the background because the user probably cares about the fact that this link was loaded. renamed from MANUAL_SUBFRAME in Chrome 16 |
| 5 | PAGE_TRANSITION_GENERATED | User got to this page by typing in the URL bar and selecting an entry that did not look like a URL. For example, a match might have the URL of a Google search result page, but appear like "Search Google for ...". These are not quite the same as TYPED navigations because the user didn't type or see the destination URL. See also KEYWORD. renamed from GENERATED in Chrome 16 |
| 6 | PAGE_TRANSITION_AUTO_TOPLEVEL | This is a toplevel navigation. This is any content that is automatically loaded in a toplevel frame. For example, opening a tab to show the ASH screen saver, opening the devtools window, opening the NTP after the safe browsing warning, opening web-based dialog boxes are examples of AUTO_TOPLEVEL navigations. renamed from PAGE_TRANSITION_START_PAGE in Chrome 23 |
| 7 | PAGE_TRANSITION_FORM_SUBMIT | The user filled out values in a form and submitted it. NOTE that in some situations submitting a form does not result in this transition type. This can happen if the form uses script to submit the contents. renamed from FORM_SUBMIT in Chrome 16 |
| 8 | PAGE_TRANSITION_RELOAD | The user "reloaded" the page, either by hitting the reload button or by hitting enter in the address bar. NOTE: This is distinct from the concept of whether a particular load uses "reload semantics" (i.e. bypasses cached data). For this reason, lots of code needs to pass around the concept of whether a load should be treated as a "reload" separately from their tracking of this transition type, which is mainly used for proper scoring for consumers who care about how frequently a user typed/visited a particular URL. SessionRestore and undo tab close use this transition type too. renamed from RELOAD in Chrome 16 |
| 9 | PAGE_TRANSITION_KEYWORD | The url was generated from a replaceable keyword other than the default search provider. If the user types a keyword (which also applies to tab-to-search) in the omnibox this qualifier is applied to the transition type of the generated url. TemplateURLModel then may generate an additional visit with a transition type of KEYWORD_GENERATED against the url 'http://' + keyword. For example, if you do a tab-to-search against wikipedia the generated url has a transition qualifer of KEYWORD, and TemplateURLModel generates a visit for 'wikipedia.org' with a transition type of KEYWORD_GENERATED. renamed from KEYWORD in Chrome 16 |
| 10 | PAGE_TRANSITION_KEYWORD_GENERATED | Corresponds to a visit generated for a keyword. See description of KEYWORD for more details. renamed from LAST_CORE in Chrome 16 |
| 10 | PAGE_TRANSITION_LAST_CORE same number as PAGE_TRANSITION_KEYWORD_GENERATED a bound, not a value | ADDING NEW CORE VALUE? Be sure to update the LAST_CORE and CORE_MASK values below. Also update CoreTransitionString(). added in Chrome 16 |
| 255 | PAGE_TRANSITION_CORE_MASK a bound, not a value | renamed from CORE_MASK in Chrome 16 |
| 8388608 0x00800000 | PAGE_TRANSITION_BLOCKED | A managed user attempted to visit a URL but was blocked. added in Chrome 28 |
| 16777216 0x01000000 | PAGE_TRANSITION_FORWARD_BACK | User used the Forward or Back button to navigate among browsing history. renamed from FORWARD_BACK in Chrome 16 |
| 33554432 0x02000000 | PAGE_TRANSITION_FROM_ADDRESS_BAR | User used the address bar to trigger this navigation. renamed from FROM_ADDRESS_BAR in Chrome 16 |
| 67108864 0x04000000 | PAGE_TRANSITION_HOME_PAGE | User is navigating to the home page. renamed from HOME_PAGE in Chrome 16 |
| 134217728 0x08000000 | PAGE_TRANSITION_FROM_API | The transition originated from an external application; the exact definition of this is embedder dependent. renamed from PAGE_TRANSITION_FROM_INTENT in Chrome 30 |
| 268435456 0x10000000 | PAGE_TRANSITION_CHAIN_START | The beginning of a navigation chain. renamed from CHAIN_START in Chrome 16 |
| 536870912 0x20000000 | PAGE_TRANSITION_CHAIN_END | The last transition in a redirect chain. renamed from CHAIN_END in Chrome 16 |
| 1073741824 0x40000000 | PAGE_TRANSITION_CLIENT_REDIRECT | Redirects caused by JavaScript or a meta refresh tag on the page. renamed from CLIENT_REDIRECT in Chrome 16 |
| 2147483648 0x80000000 | PAGE_TRANSITION_SERVER_REDIRECT | Redirects sent from the server by HTTP headers. It might be nice to break this out into 2 types in the future, permanent or temporary, if we can get that information from WebKit. NavigationHandle::WasServerRedirect() should be used instead. 0x80000000 renamed from SERVER_REDIRECT in Chrome 16 |
| 4294967040 0xFFFFFF00 | PAGE_TRANSITION_QUALIFIER_MASK a bound, not a value | General mask defining the bits used for the qualifiers. 0xFFFFFF00 renamed from QUALIFIER_MASK in Chrome 16 |
27 older values, and names Chrome has changed
| 0 | LINK | User got to this page by clicking a link on another page. renamed to PAGE_TRANSITION_LINK in Chrome 16 |
| 1 | TYPED | User got this page by typing the URL in the URL bar. This should not be used for cases where the user selected a choice that didn't look at all like a URL; see GENERATED below. We also use this for other "explicit" navigation actions. renamed to PAGE_TRANSITION_TYPED in Chrome 16 |
| 2 | AUTO_BOOKMARK | User got to this page through a suggestion in the UI, for example, through the destinations page. renamed to PAGE_TRANSITION_AUTO_BOOKMARK in Chrome 16 |
| 3 | AUTO_SUBFRAME | This is a subframe navigation. This is any content that is automatically loaded in a non-toplevel frame. For example, if a page consists of several frames containing ads, those ad URLs will have this transition type. The user may not even realize the content in these pages is a separate frame, so may not care about the URL (see MANUAL below). renamed to PAGE_TRANSITION_AUTO_SUBFRAME in Chrome 16 |
| 4 | MANUAL_SUBFRAME | For subframe navigations that are explicitly requested by the user and generate new navigation entries in the back/forward list. These are probably more important than frames that were automatically loaded in the background because the user probably cares about the fact that this link was loaded. renamed to PAGE_TRANSITION_MANUAL_SUBFRAME in Chrome 16 |
| 5 | GENERATED | User got to this page by typing in the URL bar and selecting an entry that did not look like a URL. For example, a match might have the URL of a Google search result page, but appear like "Search Google for ...". These are not quite the same as TYPED navigations because the user didn't type or see the destination URL. See also KEYWORD. renamed to PAGE_TRANSITION_GENERATED in Chrome 16 |
| 6 | START_PAGE | The page was specified in the command line or is the start page. renamed to PAGE_TRANSITION_START_PAGE in Chrome 16 |
| 6 | PAGE_TRANSITION_START_PAGE | The page was specified in the command line or is the start page. renamed from START_PAGE in Chrome 16, renamed to PAGE_TRANSITION_AUTO_TOPLEVEL in Chrome 23 |
| 7 | FORM_SUBMIT | The user filled out values in a form and submitted it. NOTE that in some situations submitting a form does not result in this transition type. This can happen if the form uses script to submit the contents. renamed to PAGE_TRANSITION_FORM_SUBMIT in Chrome 16 |
| 8 | RELOAD | The user "reloaded" the page, either by hitting the reload button or by hitting enter in the address bar. NOTE: This is distinct from the concept of whether a particular load uses "reload semantics" (i.e. bypasses cached data). For this reason, lots of code needs to pass around the concept of whether a load should be treated as a "reload" separately from their tracking of this transition type, which is mainly used for proper scoring for consumers who care about how frequently a user typed/visited a particular URL. SessionRestore and undo tab close use this transition type too. renamed to PAGE_TRANSITION_RELOAD in Chrome 16 |
| 9 | KEYWORD | The url was generated from a replaceable keyword other than the default search provider. If the user types a keyword (which also applies to tab-to-search) in the omnibox this qualifier is applied to the transition type of the generated url. TemplateURLModel then may generate an additional visit with a transition type of KEYWORD_GENERATED against the url 'http://' + keyword. For example, if you do a tab-to-search against wikipedia the generated url has a transition qualifer of KEYWORD, and TemplateURLModel generates a visit for 'wikipedia.org' with a transition type of KEYWORD_GENERATED. renamed to PAGE_TRANSITION_KEYWORD in Chrome 16 |
| 10 | KEYWORD_GENERATED | Corresponds to a visit generated for a keyword. See description of KEYWORD for more details. last seen in Chrome 15 |
| 10 | LAST_CORE | ADDING NEW CORE VALUE? Be sure to update the LAST_CORE and CORE_MASK values below. Also update CoreTransitionString(). renamed to PAGE_TRANSITION_KEYWORD_GENERATED in Chrome 16 |
| 255 | CORE_MASK | renamed to PAGE_TRANSITION_CORE_MASK in Chrome 16 |
| 2097152 0x00200000 | PAGE_TRANSITION_FROM_API_3 | Both of these transition types are for experiments to exclude visits from appearing in the omnibox. PAGE_TRANSITION_FROM_API_3 also makes it so the visit does not surface in the history page. Neither transition type is used with TYPED. added in Chrome 87, last seen in Chrome 92 |
| 4194304 0x00400000 | PAGE_TRANSITION_FROM_API_2 | added in Chrome 87, last seen in Chrome 92 |
| 16777216 0x01000000 | FORWARD_BACK | User used the Forward or Back button to navigate among browsing history. added in Chrome 8, renamed to PAGE_TRANSITION_FORWARD_BACK in Chrome 16 |
| 33554432 0x02000000 | FROM_ADDRESS_BAR | User used the address bar to trigger this navigation. added in Chrome 15, renamed to PAGE_TRANSITION_FROM_ADDRESS_BAR in Chrome 16 |
| 67108864 0x04000000 | HOME_PAGE | User is navigating to the home page. added in Chrome 15, renamed to PAGE_TRANSITION_HOME_PAGE in Chrome 16 |
| 134217728 0x08000000 | PAGE_TRANSITION_FROM_INTENT | The transition originated from an incoming intent. (Android only) added in Chrome 25, renamed to PAGE_TRANSITION_FROM_API in Chrome 30 |
| 268435456 0x10000000 | CHAIN_START | The beginning of a navigation chain. renamed to PAGE_TRANSITION_CHAIN_START in Chrome 16 |
| 536870912 0x20000000 | CHAIN_END | The last transition in a redirect chain. renamed to PAGE_TRANSITION_CHAIN_END in Chrome 16 |
| 1073741824 0x40000000 | CLIENT_REDIRECT | Redirects caused by JavaScript or a meta refresh tag on the page. renamed to PAGE_TRANSITION_CLIENT_REDIRECT in Chrome 16 |
| 2147483648 0x80000000 | SERVER_REDIRECT | Redirects sent from the server by HTTP headers. It might be nice to break this out into 2 types in the future, permanent or temporary, if we can get that information from WebKit. renamed to PAGE_TRANSITION_SERVER_REDIRECT in Chrome 16 |
| 3221225472 0xC0000000 | IS_REDIRECT_MASK | Used to test whether a transition involves a redirect. renamed to PAGE_TRANSITION_IS_REDIRECT_MASK in Chrome 16 |
| 3221225472 0xC0000000 | PAGE_TRANSITION_IS_REDIRECT_MASK | Used to test whether a transition involves a redirect. 0xC0000000 renamed from IS_REDIRECT_MASK in Chrome 16, last seen in Chrome 154 |
| 4294967040 0xFFFFFF00 | QUALIFIER_MASK | General mask defining the bits used for the qualifiers. renamed to PAGE_TRANSITION_QUALIFIER_MASK in Chrome 16 |
Read from ui/base/page_transition_types.h
The enumeration of all possible sources of visits is listed below. The source will be propagated along with a URL or a visit item and eventually be stored in the history database, visit_source table specifically. Different from page transition types, they describe the origins of visits. (Warning): Please don't change any existing values while it is ok to add new values when needed.
| Value | Name in Chromium | What it means |
|---|---|---|
| 0 | SOURCE_SYNCED | Synchronized from somewhere else. |
| 1 | SOURCE_BROWSED | User browsed. |
| 2 | SOURCE_EXTENSION | Added by an extension. |
| 3 | SOURCE_FIREFOX_IMPORTED | |
| 4 | SOURCE_IE_IMPORTED | |
| 5 | SOURCE_SAFARI_IMPORTED | |
| 6 | SOURCE_ACTOR | Added by the GLIC actor. added in Chrome 140 |
| 7 | SOURCE_OS_MIGRATION_IMPORTED | added in Chrome 140 |
DownloadState represents the state of a DownloadRow saved into the DownloadDatabase. The values must not be changed as they are saved to disk in the database.
| Value | Name in Chromium | What it means |
|---|---|---|
| -1 | INVALID a bound, not a value | renamed from kStateInvalid in Chrome 42 |
| 0 | IN_PROGRESS | Download is actively progressing. renamed from kStateInProgress in Chrome 42 |
| 1 | COMPLETE | Download is completely finished. renamed from kStateComplete in Chrome 42 |
| 2 | CANCELLED | Download has been cancelled. renamed from kStateCancelled in Chrome 42 |
| 3 | BUG_140687 | renamed from kStateBug140687 in Chrome 42 |
| 4 | INTERRUPTED | This state indicates that the download has been interrupted. renamed from kStateInterrupted in Chrome 42 |
12 older values, and names Chrome has changed
| -1 | kStateInvalid | These constants and the transformation functions below are used to allow DownloadItem::DownloadState and DownloadDangerType to change without breaking the database schema. They guarantee that the values of the |state| field in the database are one of the values returned by StateToInt, and that the values of the |state| field of the DownloadRows returned by QueryDownloads() are one of the values returned by IntToState(). added in Chrome 23, renamed to INVALID in Chrome 42 |
| 0 | IN_PROGRESS | Download is actively progressing. renamed to kStateInProgress in Chrome 23 |
| 0 | kStateInProgress | Download is actively progressing. renamed from IN_PROGRESS in Chrome 23, renamed to IN_PROGRESS in Chrome 42 |
| 1 | COMPLETE | Download is completely finished. renamed to kStateComplete in Chrome 23 |
| 1 | kStateComplete | Download is completely finished. renamed from COMPLETE in Chrome 23, renamed to COMPLETE in Chrome 42 |
| 2 | CANCELLED | Download has been cancelled. renamed to kStateCancelled in Chrome 23 |
| 2 | kStateCancelled | Download has been cancelled. renamed from CANCELLED in Chrome 23, renamed to CANCELLED in Chrome 42 |
| 3 | REMOVING | This state indicates that the download item is about to be destroyed, and observers seeing this state should release all references. renamed to kStateBug140687 in Chrome 23 |
| 3 | kStateBug140687 | renamed from REMOVING in Chrome 23, renamed to BUG_140687 in Chrome 42 |
| 4 | INTERRUPTED | This state indicates that the download has been interrupted. added in Chrome 12, renamed to kStateInterrupted in Chrome 23 |
| 4 | kStateInterrupted | This state indicates that the download has been interrupted. renamed from INTERRUPTED in Chrome 23, renamed to INTERRUPTED in Chrome 42 |
| 5 | MAX_DOWNLOAD_STATE | Maximum value. added in Chrome 13, last seen in Chrome 22 |
Read from components/history/core/browser/download_constants.h
History → downloads.danger_type
DownloadDangerType represents the danger of a DownloadRow into the DownloadDatabase. The values must not be changed as they are saved to disk in the database.
| Value | Name in Chromium | What it means |
|---|---|---|
| -1 | INVALID a bound, not a value | renamed from kDangerTypeInvalid in Chrome 42 |
| 0 | NOT_DANGEROUS | The download is safe. renamed from kDangerTypeNotDangerous in Chrome 42 |
| 1 | DANGEROUS_FILE | A dangerous file to the system (e.g.: a pdf or extension from places other than gallery). renamed from kDangerTypeDangerousFile in Chrome 42 |
| 2 | DANGEROUS_URL | Safebrowsing download service shows this URL leads to malicious file download. renamed from kDangerTypeDangerousUrl in Chrome 42 |
| 3 | DANGEROUS_CONTENT | SafeBrowsing download service shows this file content as being malicious. renamed from kDangerTypeDangerousContent in Chrome 42 |
| 4 | MAYBE_DANGEROUS_CONTENT | The content of this download may be malicious (e.g., extension is exe but SafeBrowsing has not finished checking the content). renamed from kDangerTypeMaybeDangerousContent in Chrome 42 |
| 5 | UNCOMMON_CONTENT | SafeBrowsing download service checked the contents of the download, but didn't have enough data to determine whether it was malicious. renamed from kDangerTypeUncommonContent in Chrome 42 |
| 6 | USER_VALIDATED | The download was evaluated to be one of the other types of danger, but the user told us to go ahead anyway. renamed from kDangerTypeUserValidated in Chrome 42 |
| 7 | DANGEROUS_HOST | SafeBrowsing download service checked the contents of the download and didn't have data on this specific file, but the file was served from a host known to serve mostly malicious content. renamed from kDangerTypeDangerousHost in Chrome 42 |
| 8 | POTENTIALLY_UNWANTED | Applications and extensions that modify browser and/or computer settings renamed from kDangerTypePotentiallyUnwanted in Chrome 42 |
| 9 | ALLOWLISTED_BY_POLICY | Download URL allowed by enterprise policy. renamed from WHITELISTED_BY_POLICY in Chrome 89 |
| 10 | ASYNC_SCANNING | Download is pending a more detailed verdict. added in Chrome 77 |
| 11 | BLOCKED_PASSWORD_PROTECTED | Download is password protected, and should be blocked according to policy. added in Chrome 77 |
| 12 | BLOCKED_TOO_LARGE | Download is too large, and should be blocked according to policy. See the BlockLargeFileTransfer policy for details. added in Chrome 79 |
| 13 | SENSITIVE_CONTENT_WARNING | Download deep scanning identified sensitive content, and recommended warning the user. added in Chrome 79 |
| 14 | SENSITIVE_CONTENT_BLOCK | Download deep scanning identified sensitive content, and recommended blocking the file. added in Chrome 79 |
| 15 | DEEP_SCANNED_SAFE | Download deep scanning identified no problems. added in Chrome 79 |
| 16 | DEEP_SCANNED_OPENED_DANGEROUS | Download deep scanning identified a problem, but the file has already been opened by the user. added in Chrome 79 |
| 17 | PROMPT_FOR_SCANNING | The user is enrolled in Enhanced Safe Browsing or the Advanced Protection Program, and the server has recommended this file be deep scanned. added in Chrome 81 |
| 18 | BLOCKED_UNSUPPORTED_FILETYPE | added in Chrome 82 |
| 19 | DANGEROUS_ACCOUNT_COMPROMISE | SafeBrowsing download service has classified this file as being associated with account compromise through stealing cookies. renamed from DANGEROUS_ACCOUNT_COMRPOMISE in Chrome 125 |
| 20 | DEEP_SCANNED_FAILED | The user has chosen to deep scan this file, but the scan has failed. The safety of this download is unknown. added in Chrome 117 |
| 21 | PROMPT_FOR_LOCAL_PASSWORD_SCANNING | The server has recommend this encrypted archive prompt the user for a pssword to use locally for further scanning. added in Chrome 120 |
| 22 | ASYNC_LOCAL_PASSWORD_SCANNING | Download is pending a more detailed verdict after a prompt to use the password locally for further scanning. added in Chrome 121 |
| 23 | BLOCKED_SCAN_FAILED | Download scan is unsuccessful, and should be blocked according to the policy. added in Chrome 124 |
| 24 | FORCED_SAVE_TO_GDRIVE | added in Chrome 144 |
| 25 | FORCED_SAVE_TO_ONEDRIVE | added in Chrome 146 |
12 older values, and names Chrome has changed
| -1 | kDangerTypeInvalid | renamed to INVALID in Chrome 42 |
| 0 | kDangerTypeNotDangerous | The download is safe. renamed to NOT_DANGEROUS in Chrome 42 |
| 1 | kDangerTypeDangerousFile | A dangerous file to the system (e.g.: a pdf or extension from places other than gallery). renamed to DANGEROUS_FILE in Chrome 42 |
| 2 | kDangerTypeDangerousUrl | Safebrowsing download service shows this URL leads to malicious file download. renamed to DANGEROUS_URL in Chrome 42 |
| 3 | kDangerTypeDangerousContent | SafeBrowsing download service shows this file content as being malicious. renamed to DANGEROUS_CONTENT in Chrome 42 |
| 4 | kDangerTypeMaybeDangerousContent | The content of this download may be malicious (e.g., extension is exe but SafeBrowsing has not finished checking the content). renamed to MAYBE_DANGEROUS_CONTENT in Chrome 42 |
| 5 | kDangerTypeUncommonContent | SafeBrowsing download service checked the contents of the download, but didn't have enough data to determine whether it was malicious. renamed to UNCOMMON_CONTENT in Chrome 42 |
| 6 | kDangerTypeUserValidated | The download was evaluated to be one of the other types of danger, but the user told us to go ahead anyway. renamed to USER_VALIDATED in Chrome 42 |
| 7 | kDangerTypeDangerousHost | SafeBrowsing download service checked the contents of the download and didn't have data on this specific file, but the file was served from a host known to serve mostly malicious content. renamed to DANGEROUS_HOST in Chrome 42 |
| 8 | kDangerTypePotentiallyUnwanted | Applications and extensions that modify browser and/or computer settings added in Chrome 29, renamed to POTENTIALLY_UNWANTED in Chrome 42 |
| 9 | WHITELISTED_BY_POLICY | Download URL whitelisted by enterprise policy. added in Chrome 68, renamed to ALLOWLISTED_BY_POLICY in Chrome 89 |
| 19 | DANGEROUS_ACCOUNT_COMRPOMISE | added in Chrome 92, renamed to DANGEROUS_ACCOUNT_COMPROMISE in Chrome 125 |
Read from components/history/core/browser/download_constants.h
History → downloads.interrupt_reason
These values are persisted to logs. Entries should not be renumbered and numeric values should never be reused.
| Value | Name in Chromium | What it means |
|---|---|---|
| 0 | DOWNLOAD_INTERRUPT_REASON_NONE | |
| 1 | DOWNLOAD_INTERRUPT_REASON_FILE_FAILED | Generic file operation failure. "File Error". |
| 2 | DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED | The file cannot be accessed due to security restrictions. "Access Denied". |
| 3 | DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE | There is not enough room on the drive. "Disk Full". |
| 5 | DOWNLOAD_INTERRUPT_REASON_FILE_NAME_TOO_LONG | The directory or file name is too long. "Path Too Long". |
| 6 | DOWNLOAD_INTERRUPT_REASON_FILE_TOO_LARGE | The file is too large for the file system to handle. "File Too Large". |
| 7 | DOWNLOAD_INTERRUPT_REASON_FILE_VIRUS_INFECTED | The file contains a virus. "Virus". |
| 10 | DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR | The file was in use. Too many files are opened at once. We have run out of memory. "Temporary Problem". |
| 11 | DOWNLOAD_INTERRUPT_REASON_FILE_BLOCKED | The file was blocked due to local policy. "Blocked" |
| 12 | DOWNLOAD_INTERRUPT_REASON_FILE_SECURITY_CHECK_FAILED | An attempt to check the safety of the download failed due to unexpected reasons. See http://crbug.com/153212. |
| 13 | DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT | An attempt was made to seek past the end of a file in opening a file (as part of resuming a previously interrupted download). |
| 14 | DOWNLOAD_INTERRUPT_REASON_FILE_HASH_MISMATCH | The partial file didn't match the expected hash. added in Chrome 51 |
| 15 | DOWNLOAD_INTERRUPT_REASON_FILE_SAME_AS_SOURCE | The source and the target of the download were the same. added in Chrome 60 |
| 20 | DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED | Generic network failure. "Network Error". |
| 21 | DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT | The network operation timed out. "Operation Timed Out". |
| 22 | DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED | The network connection has been lost. "Connection Lost". |
| 23 | DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN | The server has gone down. "Server Down". |
| 24 | DOWNLOAD_INTERRUPT_REASON_NETWORK_INVALID_REQUEST | The network request was invalid. This may be due to the original URL or a redirected URL: - Having an unsupported scheme. - Being an invalid URL. - Being disallowed by policy. added in Chrome 34 |
| 30 | DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED | The server indicates that the operation has failed (generic). "Server Error". |
| 31 | DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE | The server does not support range requests. Internal use only: must restart from the beginning. |
| 33 | DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT | The server does not have the requested data. "Unable to get file". |
| 34 | DOWNLOAD_INTERRUPT_REASON_SERVER_UNAUTHORIZED | Server didn't authorize access to resource. added in Chrome 38 |
| 35 | DOWNLOAD_INTERRUPT_REASON_SERVER_CERT_PROBLEM | Server certificate problem. added in Chrome 38 |
| 36 | DOWNLOAD_INTERRUPT_REASON_SERVER_FORBIDDEN | Server access forbidden. added in Chrome 45 |
| 37 | DOWNLOAD_INTERRUPT_REASON_SERVER_UNREACHABLE | Unexpected server response. This might indicate that the responding server may not be the intended server. added in Chrome 50 |
| 38 | DOWNLOAD_INTERRUPT_REASON_SERVER_CONTENT_LENGTH_MISMATCH | The server sent fewer bytes than the content-length header. It may indicate that the connection was closed prematurely, or the Content-Length header was invalid. The download is only interrupted if strong validators are present. Otherwise, it is treated as finished. added in Chrome 60 |
| 39 | DOWNLOAD_INTERRUPT_REASON_SERVER_CROSS_ORIGIN_REDIRECT | An unexpected cross-origin redirect happened. added in Chrome 69 |
| 40 | DOWNLOAD_INTERRUPT_REASON_USER_CANCELED | The user canceled the download. "Canceled". |
| 41 | DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN | The user shut down the browser. Internal use only: resume pending downloads if possible. |
| 50 | DOWNLOAD_INTERRUPT_REASON_CRASH | The browser crashed. Internal use only: resume pending downloads if possible. |
| 51 | DOWNLOAD_INTERRUPT_REASON_LOCAL_DOWNLOAD_BLOCKED | Local download blocked. For enterprise use; the download will be redirected to cloud storage. added in Chrome 145 |
1 older value, and names Chrome has changed
| 32 | DOWNLOAD_INTERRUPT_REASON_SERVER_PRECONDITION | The download request does not meet the specified precondition. Internal use only: the file has changed on the server. last seen in Chrome 48 |
Read from components/download/public/common/download_interrupt_reasons.h and components/download/public/common/download_interrupt_reason_values.h
History → content_annotations.password_state
Values are persisted; do not reorder or reuse, and only add new values at the end.
| Value | Name in Chromium | What it means |
|---|---|---|
| 0 | kUnknown | added in Chrome 107 |
| 1 | kNoPasswordField | added in Chrome 107 |
| 2 | kHasPasswordField | added in Chrome 107 |
History → context_annotations.page_end_reason
This enum represents how a page load ends. If the action occurs before the page load finishes (or reaches some point like first paint), then we consider the load to be aborted. These values are persisted to logs and the history DB. Entries should not be renumbered and numeric values should never be reused.
| Value | Name in Chromium | What it means |
|---|---|---|
| 0 | END_NONE | Page lifetime has not yet ended (page is still active). Pages that become hidden are logged in END_HIDDEN, so we expect low numbers in this bucket from the end of May 2020. |
| 1 | END_RELOAD | The page was reloaded, possibly by the user. |
| 2 | END_FORWARD_BACK | The page was navigated away from, via a back or forward navigation. |
| 3 | END_CLIENT_REDIRECT | The navigation is replaced with a navigation with the qualifier ui::PAGE_TRANSITION_CLIENT_REDIRECT, which is caused by Javascript, or the meta refresh tag. |
| 4 | END_NEW_NAVIGATION | If the page load is replaced by a new navigation. This includes link clicks, typing in the omnibox (not a reload), and form submissions. |
| 5 | END_STOP | The page load was stopped (e.g. the user presses the stop X button). |
| 6 | END_CLOSE | Page load ended due to closing the tab or browser. |
| 7 | END_PROVISIONAL_LOAD_FAILED | The provisional load for this page load failed before committing. |
| 8 | END_RENDER_PROCESS_GONE | The render process hosting the page terminated unexpectedly. |
| 9 | END_OTHER | We don't know why the page load ended. This is the value we assign to a terminated provisional load if the only signal we get is the load finished without committing, either without error or with net::ERR_ABORTED. |
| 10 | END_HIDDEN | The page became hidden but is still active. Added end of May 2020 for Navigation.PageEndReason2. Deprecated Jan 2021 with Navigation.PageEndReason3. |
| 11 | END_APP_ENTER_BACKGROUND | The page load has not yet ended but we need to flush the metrics because the app has entered the background. |
| 12 | PAGE_END_REASON_COUNT a bound, not a value |
Read from components/page_load_metrics/common/page_end_reason.h
History → context_annotations.browser_type
Values are persisted; do not reorder or reuse, and only add new values at the end.
| Value | Name in Chromium | What it means |
|---|---|---|
| 0 | kUnknown | |
| 1 | kTabbed | |
| 2 | kPopup | |
| 3 | kCustomTab | |
| 4 | kAuthTab | added in Chrome 129 |
History → context_annotations.context_annotation_flags
An enum of bitmasks to help represent the boolean flags of `VisitContextAnnotations` in the database. This avoids having to update the schema every time we add/remove/change a bool context annotation. As these are persisted to the database, entries should not be renumbered and numeric values should never be reused.
A set of bits: any number of these can be on at once.
| Value | Name in Chromium | What it means |
|---|---|---|
| 1 0x01 | kOmniboxUrlCopied | True if the user has cut or copied the omnibox URL to the clipboard for this page load. |
| 2 0x02 | kIsExistingPartOfTabGroup | True if the page was in a tab group when the navigation was committed. |
| 4 0x04 | kIsPlacedInTabGroup | True if the page was NOT part of a tab group when the navigation committed, and IS part of a tab group at the end of the page lifetime. |
| 8 0x08 | kIsExistingBookmark | True if this page was a bookmark when the navigation was committed. |
| 16 0x10 | kIsNewBookmark | True if the page was NOT a bookmark when the navigation was committed and was MADE a bookmark during the page's lifetime. In other words: If `is_existing_bookmark` is true, that implies `is_new_bookmark` is false. |
| 32 0x20 | kIsNtpCustomLink | True if the page has been explicitly added (by the user) to the list of custom links displayed in the NTP. Links added to the NTP by History TopSites don't count for this. Always false on Android, because Android does not have NTP custom links. |
Read from components/history/core/browser/visit_annotations_database.cc
History → clusters_and_visits.interaction_state
Values are persisted; do not reorder or reuse, and only add new values at the end.
| Value | Name in Chromium | What it means |
|---|---|---|
| 0 | kDefault | The default state of visits. Visible in both zero-state and searches. |
| 1 | kHidden | User has marked the visit hidden. Hidden in all surfaces. |
| 2 | kDone | User has dismissed the visit with positive intent. Hidden in the zero-state but still searchable. |
History → cluster_keywords.type
Types are ordered according to preferences. These values are persisted to logs. Entries should not be renumbered and numeric values should never be reused.
| Value | Name in Chromium | What it means |
|---|---|---|
| 0 | kUnknown | |
| 1 | kEntityCategory | |
| 2 | kEntityAlias | |
| 3 | kEntity | |
| 4 | kSearchTerms | |
| 4 | kMaxValue same number as kSearchTerms a bound, not a value |
How each cookie was set, and what it is allowed to do.
See https://tools.ietf.org/html/draft-ietf-httpbis-cookie-same-site-00 and https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis for information about same site cookie restrictions. These values are allowed for the SameSite field of a cookie. They mostly correspond to CookieEffectiveSameSite values. Note: Don't renumber, as these values are persisted to a database and recorded to histograms.
| Value | Name in Chromium | What it means |
|---|---|---|
| -1 | UNSPECIFIED | |
| 0 | NO_RESTRICTION | |
| 1 | LAX_MODE | |
| 2 | STRICT_MODE | |
| 2 | kMaxValue same number as STRICT_MODE a bound, not a value | Keep last, used for histograms. added in Chrome 93 |
2 older values, and names Chrome has changed
| 3 | EXTENDED_MODE | last seen in Chrome 79 |
| 4 | LAX_MODE_ALLOW_UNSAFE | Same as LAX_MODE, except cookie is also sent if the HTTP method is unsafe. Allowed for effective SameSite only. added in Chrome 78, last seen in Chrome 78 |
Read from net/cookies/cookie_constants.h
| Value | Name in Chromium | What it means |
|---|---|---|
| 0 | COOKIE_PRIORITY_LOW | |
| 1 | COOKIE_PRIORITY_MEDIUM | |
| 1 | COOKIE_PRIORITY_DEFAULT same number as COOKIE_PRIORITY_MEDIUM | |
| 2 | COOKIE_PRIORITY_HIGH |
Read from net/cookies/cookie_constants.h
Cookies → cookies.source_scheme
What scheme was used in the setting of a cookie. Do not renumber.
| Value | Name in Chromium | What it means |
|---|---|---|
| 0 | kUnset | |
| 1 | kNonSecure | |
| 2 | kSecure | |
| 2 | kMaxValue same number as kSecure a bound, not a value | Keep as the last value. |
Read from net/cookies/cookie_constants.h
Possible values for the 'source_type' column. Do not reorder or renumber. Used for metrics.
| Value | Name in Chromium | What it means |
|---|---|---|
| 1 | kHTTP | 'http' is used for cookies set via HTTP Response Headers. |
| 2 | kScript | 'script' is used for cookies set via document.cookie. |
| 3 | kOther | 'other' is used for cookies set via browser login, iOS, WebView APIs, Extension APIs, or DevTools. |
| 3 | kMaxValue same number as kOther a bound, not a value | Keep as the last value. |
1 older value, and names Chrome has changed
| 0 | kUnknown | 'unknown' is used for tests or cookies set before this field was added. last seen in Chrome 147 |
Read from net/cookies/cookie_constants.h
Saved logins and what Chrome has learned about them.
Enum to differentiate between HTML form based authentication, and dialogs using basic or digest schemes. Default is kHtml. Only PasswordForms of the same Scheme will be matched/autofilled against each other. This is persisted to disk, do not renumber entries.
| Value | Name in Chromium | What it means |
|---|---|---|
| 0 | kHtml | renamed from SCHEME_HTML in Chrome 76 |
| 0 | kMinValue same number as kHtml a bound, not a value | added in Chrome 87 |
| 1 | kBasic | renamed from SCHEME_BASIC in Chrome 76 |
| 2 | kDigest | renamed from SCHEME_DIGEST in Chrome 76 |
| 3 | kOther | added in Chrome 76 |
| 4 | kUsernameOnly | renamed from SCHEME_LAST in Chrome 76 |
| 4 | kMaxValue same number as kUsernameOnly a bound, not a value | added in Chrome 87 |
7 older values, and names Chrome has changed
| 0 | SCHEME_HTML | renamed to kHtml in Chrome 76 |
| 1 | SCHEME_BASIC | renamed to kBasic in Chrome 76 |
| 2 | SCHEME_DIGEST | renamed to kDigest in Chrome 76 |
| 3 | SCHEME_OTHER | last seen in Chrome 75 |
| 3 | SCHEME_LAST | added in Chrome 37, last seen in Chrome 46 |
| 4 | SCHEME_USERNAME_ONLY | added in Chrome 47, last seen in Chrome 75 |
| 4 | SCHEME_LAST | added in Chrome 47, renamed to kUsernameOnly in Chrome 76 |
Read from components/password_manager/core/browser/password_form.h
Login Data → logins.password_type
Enum to differentiate between manually filled forms, forms with auto- generated passwords, forms generated from the Credential Management API and credentials manually added from setting. Always append new types at the end. This enum is converted to int and stored in password store backends, so it is important to keep each value assigned to the same integer. This might contain non-enum values: coming from clients that have a shorter list of Type.
| Value | Name in Chromium | What it means |
|---|---|---|
| 0 | kMinValue same number as kFormSubmission a bound, not a value | added in Chrome 87 |
| 0 | kFormSubmission | added in Chrome 96 |
| 1 | kGenerated | added in Chrome 76 |
| 2 | kApi | renamed from TYPE_LAST in Chrome 76 |
| 3 | kManuallyAdded | added in Chrome 96 |
| 4 | kImported | added in Chrome 106 |
| 5 | kReceivedViaSharing | added in Chrome 117 |
| 6 | kImportedViaCredentialExchange | added in Chrome 132 |
| 7 | kChangeSubmission | added in Chrome 134 |
| 7 | kMaxValue same number as kChangeSubmission a bound, not a value | added in Chrome 134 |
11 older values, and names Chrome has changed
| 0 | TYPE_MANUAL | renamed to kManual in Chrome 76 |
| 0 | kManual | renamed from TYPE_MANUAL in Chrome 76, last seen in Chrome 95 |
| 1 | TYPE_GENERATED | last seen in Chrome 75 |
| 1 | TYPE_LAST | added in Chrome 34, last seen in Chrome 49 |
| 2 | TYPE_API | added in Chrome 50, last seen in Chrome 75 |
| 2 | TYPE_LAST | added in Chrome 50, renamed to kApi in Chrome 76 |
| 2 | kMaxValue | added in Chrome 87, last seen in Chrome 95 |
| 3 | kMaxValue | added in Chrome 96, last seen in Chrome 105 |
| 4 | kMaxValue | added in Chrome 106, last seen in Chrome 116 |
| 5 | kMaxValue | added in Chrome 117, last seen in Chrome 131 |
| 6 | kMaxValue | added in Chrome 132, last seen in Chrome 133 |
Read from components/password_manager/core/browser/password_form.h
Login Data → logins.generation_upload_status
Enum to keep track of what information has been sent to the server about this form regarding password generation.
| Value | Name in Chromium | What it means |
|---|---|---|
| 0 | kNoSignalSent | renamed from NO_SIGNAL_SENT in Chrome 76 |
| 0 | kMinValue same number as kNoSignalSent a bound, not a value | added in Chrome 87 |
| 1 | kPositiveSignalSent | renamed from POSITIVE_SIGNAL_SENT in Chrome 76 |
| 2 | kNegativeSignalSent | renamed from NEGATIVE_SIGNAL_SENT in Chrome 76 |
| 2 | kMaxValue same number as kNegativeSignalSent a bound, not a value | added in Chrome 87 |
5 older values, and names Chrome has changed
| 0 | NO_SIGNAL_SENT | renamed to kNoSignalSent in Chrome 76 |
| 1 | POSITIVE_SIGNAL_SENT | renamed to kPositiveSignalSent in Chrome 76 |
| 2 | NEGATIVE_SIGNAL_SENT | renamed to kNegativeSignalSent in Chrome 76 |
| 10 | UNKNOWN_STATUS | Reserve a few values for future use. renamed to kUnknownStatus in Chrome 76 |
| 10 | kUnknownStatus | Reserve a few values for future use. renamed from UNKNOWN_STATUS in Chrome 76, last seen in Chrome 86 |
Read from components/password_manager/core/browser/password_form.h
Login Data → compromised_credentials.compromise_type Login Data → insecure_credentials.insecurity_type
These values are persisted to logs. Entries should not be renumbered and numeric values should never be reused.
| Value | Name in Chromium | What it means |
|---|---|---|
| 0 | kLeaked | If the credentials was leaked by a data breach. added in Chrome 90 |
| 1 | kPhished | If the credentials was entered on a phishing site. added in Chrome 90 |
| 2 | kWeak | If the password is weak. added in Chrome 90 |
| 3 | kReused | If the password is reused for other accounts. added in Chrome 90 |
| 3 | kMaxValue same number as kReused a bound, not a value | added in Chrome 90 |
3 older values, and names Chrome has changed
| 0 | kLeaked | If the credentials was leaked by a data breach. last seen in Chrome 88 |
| 1 | kPhished | If the credentials was reused on a phishing site. last seen in Chrome 88 |
| 1 | kMaxValue | last seen in Chrome 88 |
Read from components/password_manager/core/browser/password_form.h
Not every number worth looking up is in a database. This one is kept by hand.
Preferences → browser → clear_data → time_period
What the user picked in the "Clear browsing data" dialog. The companion key
browser.last_clear_browsing_data_time holds when they did it, though it isn't
always present. There's more on using this in
The Chrome history was cleared! Now what?
| Value | What it means |
|---|---|
| 0 | The past hour |
| 1 | The past day |
| 2 | The past week |
| 3 | The past four weeks |
| 4 | The beginning of time |
Where this comes from
Which enum a column holds is the one thing here that's written by hand, because the source
doesn't say. It's worth getting right: downloads.state is the History database's
own DownloadState, not the download component's enum of the same idea. A
download interrupted in Chrome 30 is 4 in the file and
3 in that other enum, because 3 went to the leftovers of a bug. Older
write-ups of this table, including the one this page replaces, have it as 3.
Everything else is read from the Chromium source at each release tag: the values, the comment Chromium keeps on each one, and which release it appeared in. Hindsight decodes these same numbers, and a weekly job compares its tables against this data so a value Chrome has added doesn't sit undecoded.