1// Copyright (c) 2012 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 ANDROID_WEBVIEW_BROWSER_AW_REQUEST_INTERCEPTOR_H_
6#define ANDROID_WEBVIEW_BROWSER_AW_REQUEST_INTERCEPTOR_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "net/url_request/url_request_job_factory.h"
10
11class GURL;
12
13namespace net {
14class URLRequest;
15class URLRequestContextGetter;
16class URLRequestJob;
17class NetworkDelegate;
18}
19
20namespace android_webview {
21
22class InterceptedRequestData;
23
24// This class allows the Java-side embedder to substitute the default
25// URLRequest of a given request for an alternative job that will read data
26// from a Java stream.
27class AwRequestInterceptor : public net::URLRequestJobFactory::ProtocolHandler {
28 public:
29  AwRequestInterceptor();
30  virtual ~AwRequestInterceptor();
31
32  // net::URLRequestJobFactory::ProtocolHandler override -----------------------
33  virtual net::URLRequestJob* MaybeCreateJob(
34      net::URLRequest* request,
35      net::NetworkDelegate* network_delegate) const OVERRIDE;
36
37 private:
38  scoped_ptr<InterceptedRequestData> QueryForInterceptedRequestData(
39      const GURL& location,
40      net::URLRequest* request) const;
41
42  DISALLOW_COPY_AND_ASSIGN(AwRequestInterceptor);
43};
44
45} // namespace android_webview
46
47#endif  // ANDROID_WEBVIEW_BROWSER_AW_REQUEST_INTERCEPTOR_H_
48