| Index: net/url_request/url_request_http_job.cc
|
| diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
|
| index 72fd2a8d19e1db77f50d2b82edd3c73ac088d801..589379a329c305c1c8cfa3aa64e30aa206b49ca5 100644
|
| --- a/net/url_request/url_request_http_job.cc
|
| +++ b/net/url_request/url_request_http_job.cc
|
| @@ -66,6 +66,10 @@ bool IsMethodSafe(const std::string& method) {
|
| method == "TRACE";
|
| }
|
|
|
| +// Logs whether the CookieStore used for this request matches the
|
| +// ChannelIDService used when establishing the connection that this request is
|
| +// sent over. This logging is only done for requests to accounts.google.com, and
|
| +// only for requests where Channel ID was sent when establishing the connection.
|
| void LogChannelIDAndCookieStores(const GURL& url,
|
| const net::URLRequestContext* context,
|
| const net::SSLInfo& ssl_info) {
|
| @@ -74,16 +78,41 @@ void LogChannelIDAndCookieStores(const GURL& url,
|
| // This enum is used for an UMA histogram - don't reuse or renumber entries.
|
| enum {
|
| // Value 0 was removed (CID_EPHEMERAL_COOKIE_EPHEMERAL)
|
| + // ChannelIDStore is ephemeral, but CookieStore is persistent.
|
| CID_EPHEMERAL_COOKIE_PERSISTENT = 1,
|
| + // ChannelIDStore is persistent, but CookieStore is ephemeral.
|
| CID_PERSISTENT_COOKIE_EPHEMERAL = 2,
|
| // Value 3 was removed (CID_PERSISTENT_COOKIE_PERSISTENT)
|
| + // There is no CookieStore for this request.
|
| NO_COOKIE_STORE = 4,
|
| + // There is no ChannelIDStore for this request. This should never happen,
|
| + // because we only log if Channel ID was sent.
|
| NO_CHANNEL_ID_STORE = 5,
|
| + // A case where the CookieStore is persistent and the ChannelIDStore is
|
| + // ephemeral, but it has been identified as not being a problem.
|
| KNOWN_MISMATCH = 6,
|
| + // Both stores are ephemeral, and the ChannelIDService used when
|
| + // establishing the connection is the same one that the CookieStore was
|
| + // created to be used with.
|
| EPHEMERAL_MATCH = 7,
|
| + // Both stores are ephemeral, but a different CookieStore should have been
|
| + // used on this request.
|
| EPHEMERAL_MISMATCH = 8,
|
| + // Both stores are persistent, and the ChannelIDService used when
|
| + // establishing the connection is the same one that the CookieStore was
|
| + // created to be used with.
|
| PERSISTENT_MATCH = 9,
|
| + // Both stores are persistent, but a different CookieStore should have been
|
| + // used on this request.
|
| PERSISTENT_MISMATCH = 10,
|
| + // Both stores are ephemeral, but it was never recorded in the CookieStore
|
| + // which ChannelIDService it was created for, so it is unknown whether the
|
| + // stores match.
|
| + EPHEMERAL_UNKNOWN = 11,
|
| + // Both stores are persistent, but it was never recorded in the CookieStore
|
| + // which ChannelIDService it was created for, so it is unknown whether the
|
| + // stores match.
|
| + PERSISTENT_UNKNOWN = 12,
|
| EPHEMERALITY_MAX
|
| } ephemerality;
|
| const net::HttpNetworkSession::Params* params =
|
| @@ -95,25 +124,31 @@ void LogChannelIDAndCookieStores(const GURL& url,
|
| ephemerality = NO_COOKIE_STORE;
|
| } else if (params->channel_id_service->GetChannelIDStore()->IsEphemeral()) {
|
| if (cookie_store->IsEphemeral()) {
|
| - if (context->channel_id_service() &&
|
| - params->channel_id_service->GetUniqueID() ==
|
| - context->channel_id_service()->GetUniqueID()) {
|
| + if (cookie_store->GetChannelIDServiceID() == -1) {
|
| + ephemerality = EPHEMERAL_UNKNOWN;
|
| + } else if (cookie_store->GetChannelIDServiceID() ==
|
| + params->channel_id_service->GetUniqueID()) {
|
| ephemerality = EPHEMERAL_MATCH;
|
| } else {
|
| + NOTREACHED();
|
| ephemerality = EPHEMERAL_MISMATCH;
|
| }
|
| } else if (context->has_known_mismatched_cookie_store()) {
|
| ephemerality = KNOWN_MISMATCH;
|
| } else {
|
| + NOTREACHED();
|
| ephemerality = CID_EPHEMERAL_COOKIE_PERSISTENT;
|
| }
|
| } else if (cookie_store->IsEphemeral()) {
|
| + NOTREACHED();
|
| ephemerality = CID_PERSISTENT_COOKIE_EPHEMERAL;
|
| - } else if (context->channel_id_service() &&
|
| - params->channel_id_service->GetUniqueID() ==
|
| - context->channel_id_service()->GetUniqueID()) {
|
| + } else if (cookie_store->GetChannelIDServiceID() == -1) {
|
| + ephemerality = PERSISTENT_UNKNOWN;
|
| + } else if (cookie_store->GetChannelIDServiceID() ==
|
| + params->channel_id_service->GetUniqueID()) {
|
| ephemerality = PERSISTENT_MATCH;
|
| } else {
|
| + NOTREACHED();
|
| ephemerality = PERSISTENT_MISMATCH;
|
| }
|
| UMA_HISTOGRAM_ENUMERATION("Net.TokenBinding.StoreEphemerality", ephemerality,
|
|
|