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_BROWSER_INTERCEPTED_REQUEST_DATA_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ANDROID_WEBVIEW_BROWSER_INTERCEPTED_REQUEST_DATA_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/android/jni_android.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net { 146d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)class HttpResponseHeaders; 156d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)class NetworkDelegate; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class URLRequest; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class URLRequestJob; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace android_webview { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class InputStream; 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This class represents the Java-side data that is to be used to complete a 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// particular URLRequest. 266d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)class AwWebResourceResponse { 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 286d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) virtual ~AwWebResourceResponse() {} 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual scoped_ptr<InputStream> GetInputStream(JNIEnv* env) const = 0; 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool GetMimeType(JNIEnv* env, std::string* mime_type) const = 0; 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool GetCharset(JNIEnv* env, std::string* charset) const = 0; 336d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) virtual bool GetStatusInfo(JNIEnv* env, 346d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) int* status_code, 356d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) std::string* reason_phrase) const = 0; 366d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // If true is returned then |headers| contain the headers, if false is 376d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // returned |headers| were not updated. 386d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) virtual bool GetResponseHeaders( 396d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) JNIEnv* env, 406d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) net::HttpResponseHeaders* headers) const = 0; 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This creates a URLRequestJob for the |request| wich will read data from 436d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // the |aw_web_resource_response| structure (instead of going to the network 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // or to the cache). 456d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // The newly created job takes ownership of |aw_web_resource_response|. 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static net::URLRequestJob* CreateJobFor( 476d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) scoped_ptr<AwWebResourceResponse> aw_web_resource_response, 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::URLRequest* request, 49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) net::NetworkDelegate* network_delegate); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 526d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) AwWebResourceResponse() {} 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 556d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AwWebResourceResponse); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace android_webview 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // ANDROID_WEBVIEW_BROWSER_INTERCEPTED_REQUEST_DATA_H_ 61