1// Copyright (c) 2014 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_RENDERER_PREFETCH_HELPER_H_ 6#define CHROME_RENDERER_PREFETCH_HELPER_H_ 7 8#include <set> 9 10#include "content/public/renderer/render_frame_observer.h" 11#include "third_party/WebKit/public/platform/WebURLLoader.h" 12#include "third_party/WebKit/public/platform/WebURLLoaderClient.h" 13#include "url/gurl.h" 14 15namespace prefetch { 16 17// Helper class initiating prefetches on behalf of a RenderFrame. 18class PrefetchHelper : public content::RenderFrameObserver, 19 public blink::WebURLLoaderClient { 20 public: 21 explicit PrefetchHelper(content::RenderFrame* render_frame); 22 virtual ~PrefetchHelper(); 23 24 // blink::WebURLLoaderClient implementation 25 virtual void didFinishLoading(blink::WebURLLoader* loader, 26 double finishTime, 27 int64_t totalEncodedDataLength) OVERRIDE; 28 virtual void didFail(blink::WebURLLoader* loader, 29 const blink::WebURLError& error) OVERRIDE; 30 31 private: 32 // RenderViewObserver implementation 33 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 34 35 void OnPrefetch(const GURL& url); 36 37 std::set<blink::WebURLLoader*> loader_set_; 38 39 DISALLOW_COPY_AND_ASSIGN(PrefetchHelper); 40}; 41 42} // namespace prefetch 43 44#endif // CHROME_RENDERER_PREFETCH_HELPER_H_ 45