16d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef ANDROID_WEBVIEW_NATIVE_INTERCEPTED_REQUEST_DATA_IMPL_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ANDROID_WEBVIEW_NATIVE_INTERCEPTED_REQUEST_DATA_IMPL_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
86d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "android_webview/browser/aw_web_resource_response.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/android/scoped_java_ref.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
136d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)namespace net {
146d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)class HttpResponseHeaders;
156d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)}
166d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace android_webview {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class InputStream;
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
216d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)class AwWebResourceResponseImpl : public AwWebResourceResponse {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // It is expected that |obj| is an instance of the Java-side
246d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  // org.chromium.android_webview.AwWebResourceResponse class.
256d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  AwWebResourceResponseImpl(const base::android::JavaRef<jobject>& obj);
266d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  virtual ~AwWebResourceResponseImpl();
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual scoped_ptr<InputStream> GetInputStream(JNIEnv* env) const OVERRIDE;
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual bool GetMimeType(JNIEnv* env, std::string* mime_type) const OVERRIDE;
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual bool GetCharset(JNIEnv* env, std::string* charset) const OVERRIDE;
316d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  virtual bool GetStatusInfo(JNIEnv* env,
326d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)                             int* status_code,
336d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)                             std::string* reason_phrase) const OVERRIDE;
346d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  virtual bool GetResponseHeaders(
356d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)      JNIEnv* env,
366d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)      net::HttpResponseHeaders* headers) const OVERRIDE;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::android::ScopedJavaGlobalRef<jobject> java_object_;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
416d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(AwWebResourceResponseImpl);
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
446d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)bool RegisterAwWebResourceResponse(JNIEnv* env);
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace android_webview
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // ANDROID_WEBVIEW_NATIVE_INTERCEPTED_REQUEST_DATA_IMPL_H_
49