| Index: net/socket/client_socket.cc
|
| ===================================================================
|
| --- net/socket/client_socket.cc (revision 0)
|
| +++ net/socket/client_socket.cc (revision 0)
|
| @@ -0,0 +1,69 @@
|
| +// Copyright (c) 2010 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.
|
| +
|
| +#include "net/socket/client_socket.h"
|
| +
|
| +#include "base/histogram.h"
|
| +
|
| +namespace net {
|
| +
|
| +ClientSocket::ClientSocket()
|
| + : was_ever_connected_(false),
|
| + omnibox_speculation_(false),
|
| + subresource_speculation_(false),
|
| + was_used_to_transmit_data_(false) {}
|
| +
|
| +ClientSocket::~ClientSocket() {
|
| + EmitPreconnectionHistograms();
|
| +}
|
| +
|
| +void ClientSocket::EmitPreconnectionHistograms() const {
|
| + DCHECK(!subresource_speculation_ || !omnibox_speculation_);
|
| + // 0 ==> non-speculative, never connected.
|
| + // 1 ==> non-speculative never used (but connected).
|
| + // 2 ==> non-speculative and used.
|
| + // 3 ==> omnibox_speculative never connected.
|
| + // 4 ==> omnibox_speculative never used (but connected).
|
| + // 5 ==> omnibox_speculative and used.
|
| + // 6 ==> subresource_speculative never connected.
|
| + // 7 ==> subresource_speculative never used (but connected).
|
| + // 8 ==> subresource_speculative and used.
|
| + int result;
|
| + if (was_used_to_transmit_data_)
|
| + result = 2;
|
| + else if (was_ever_connected_)
|
| + result = 1;
|
| + else
|
| + result = 0; // Never used, and not really connected.
|
| +
|
| + if (omnibox_speculation_)
|
| + result += 3;
|
| + else if (subresource_speculation_)
|
| + result += 6;
|
| + UMA_HISTOGRAM_ENUMERATION("Net.PreconnectUtilization", result, 9);
|
| +}
|
| +
|
| +void ClientSocket::SetSubresourceSpeculation() {
|
| + if (was_used_to_transmit_data_)
|
| + return;
|
| + subresource_speculation_ = true;
|
| +}
|
| +
|
| +void ClientSocket::SetOmniboxSpeculation() {
|
| + if (was_used_to_transmit_data_)
|
| + return;
|
| + omnibox_speculation_ = true;
|
| +}
|
| +
|
| +void ClientSocket::UpdateConnectivityState(bool is_reused) {
|
| + // Record if this connection has every actually connected successfully.
|
| + // Note that IsConnected() won't be defined at destruction time, so we need
|
| + // to record this data now, while the derived class is present.
|
| + was_ever_connected_ |= IsConnected();
|
| + // A socket is_reused only after it has transmitted some data.
|
| + was_used_to_transmit_data_ |= is_reused;
|
| +}
|
| +
|
| +} // namespace net
|
| +
|
|
|
| Property changes on: net\socket\client_socket.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|