| Index: components/network_hints/renderer/renderer_preconnect.h
|
| diff --git a/components/network_hints/renderer/renderer_preconnect.h b/components/network_hints/renderer/renderer_preconnect.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ae7d3d111a9ab3191c864ecf181570f9224c6e94
|
| --- /dev/null
|
| +++ b/components/network_hints/renderer/renderer_preconnect.h
|
| @@ -0,0 +1,56 @@
|
| +// Copyright 2015 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.
|
| +
|
| +// A RendererPreconnect instance is maintained for each RenderThread.
|
| +// URL strings are typically added to the embedded queue during rendering.
|
| +// The first addition to the queue (transitioning from empty to having
|
| +// some names) causes a processing task to be added to the Renderer Thread.
|
| +// The processing task gathers all buffered URLs, and send them via IPC
|
| +// to the browser.
|
| +// This class counts repeated requests for the same URL and requests that
|
| +// number of connections be preconnected. If multiple requests are sent
|
| +// separately the net stack will just keep re-using the first pending
|
| +// connection so we allow for the time between the parsing of the tags and
|
| +// when the task is scheduled to accumulate multiple requests.
|
| +
|
| +#ifndef COMPONENTS_NETWORK_HINTS_RENDERER_RENDERER_PRECONNECT_H_
|
| +#define COMPONENTS_NETWORK_HINTS_RENDERER_RENDERER_PRECONNECT_H_
|
| +
|
| +#include <map>
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/memory/weak_ptr.h"
|
| +#include "url/gurl.h"
|
| +
|
| +namespace network_hints {
|
| +
|
| +// An internal interface to the network_hints component for efficiently sending
|
| +// DNS prefetch requests to the net stack.
|
| +class RendererPreconnect {
|
| + public:
|
| + RendererPreconnect();
|
| + ~RendererPreconnect();
|
| +
|
| + // Push a name into the queue to be preconnected.
|
| + void Preconnect(const GURL &url);
|
| +
|
| + // SubmitPreconnect processes the buffered URLs, and submits them for
|
| + // preconnecting. Multiple requests for the same URL will increase the number
|
| + // of connections requested.
|
| + void SubmitPreconnect();
|
| +
|
| + private:
|
| + // url_request_count_map_ contains (for each URL) a count for the number of
|
| + // times it was requested.
|
| + typedef std::map<GURL, int> UrlRequestCountMap;
|
| + UrlRequestCountMap url_request_count_map_;
|
| +
|
| + base::WeakPtrFactory<RendererPreconnect> weak_factory_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(RendererPreconnect);
|
| +}; // class RendererPreconnect
|
| +
|
| +} // namespace network_hints
|
| +
|
| +#endif // COMPONENTS_NETWORK_HINTS_RENDERER_RENDERER_PRECONNECT_H_
|
|
|