Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Side by Side Diff: components/cronet/android/test/mock_url_request_job_factory.cc

Issue 2406273002: [Cronet] Test the libcronet that's shipped, not libcronet_test (Closed)
Patch Set: fix perf test Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "mock_url_request_job_factory.h" 5 #include "mock_url_request_job_factory.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
9 #include "base/memory/ptr_util.h"
9 #include "jni/MockUrlRequestJobFactory_jni.h" 10 #include "jni/MockUrlRequestJobFactory_jni.h"
10 #include "net/test/url_request/ssl_certificate_error_job.h" 11 #include "net/test/url_request/ssl_certificate_error_job.h"
11 #include "net/test/url_request/url_request_failed_job.h" 12 #include "net/test/url_request/url_request_failed_job.h"
12 #include "net/test/url_request/url_request_hanging_read_job.h" 13 #include "net/test/url_request/url_request_hanging_read_job.h"
13 #include "net/test/url_request/url_request_mock_data_job.h" 14 #include "net/test/url_request/url_request_mock_data_job.h"
15 #include "net/url_request/url_request_context.h"
16 #include "net/url_request/url_request_filter.h"
17 #include "net/url_request/url_request_intercepting_job_factory.h"
14 #include "url/gurl.h" 18 #include "url/gurl.h"
15 19
16 using base::android::JavaParamRef; 20 using base::android::JavaParamRef;
17 using base::android::ScopedJavaLocalRef; 21 using base::android::ScopedJavaLocalRef;
18 22
19 namespace cronet { 23 namespace cronet {
20 24
25 // URLRequestJobFactory previously used in URLRequestContext.
26 static const net::URLRequestJobFactory* old_job_factory;
27 // URLRequestJobFactory inserted during tests to intercept URLRequests with
28 // libcronet's URLRequestFilter.
29 static std::unique_ptr<net::URLRequestJobFactory> new_job_factory;
30
21 void AddUrlInterceptors(JNIEnv* env, const JavaParamRef<jclass>& jcaller) { 31 void AddUrlInterceptors(JNIEnv* env, const JavaParamRef<jclass>& jcaller) {
22 net::URLRequestMockDataJob::AddUrlHandler(); 32 net::URLRequestMockDataJob::AddUrlHandler();
23 net::URLRequestFailedJob::AddUrlHandler(); 33 net::URLRequestFailedJob::AddUrlHandler();
24 net::URLRequestHangingReadJob::AddUrlHandler(); 34 net::URLRequestHangingReadJob::AddUrlHandler();
25 net::SSLCertificateErrorJob::AddUrlHandler(); 35 net::SSLCertificateErrorJob::AddUrlHandler();
26 } 36 }
27 37
38 // URL interceptors are registered with the URLRequestFilter in
39 // libcronet_tests.so. However tests are run on libcronet.so. Use the
40 // URLRequestFilter in libcronet_tests.so with the URLRequestContext in
41 // libcronet.so by installing a URLRequestInterceptingJobFactory
42 // that calls into libcronet_tests.so's URLRequestFilter.
43 void AddUrlInterceptorJobFactory(JNIEnv* env,
44 const JavaParamRef<jclass>& jcaller,
45 jlong jrequestContext) {
46 // Intercept |request_context| job creation using URLRequestFilter
47 net::URLRequestContext* request_context =
48 reinterpret_cast<net::URLRequestContext*>(jrequestContext);
49 old_job_factory = request_context->job_factory();
50 new_job_factory.reset(new net::URLRequestInterceptingJobFactory(
51 const_cast<net::URLRequestJobFactory*>(old_job_factory),
52 net::URLRequestFilter::GetInstance()));
53 request_context->set_job_factory(new_job_factory.get());
54 }
55
56 // Put back the old URLRequestJobFactory into the URLRequestContext.
57 void RemoveUrlInterceptorJobFactory(JNIEnv* env,
58 const JavaParamRef<jclass>& jcaller,
59 jlong jrequestContext) {
60 reinterpret_cast<net::URLRequestContext*>(jrequestContext)
61 ->set_job_factory(old_job_factory);
62 new_job_factory.reset();
63 }
64
28 ScopedJavaLocalRef<jstring> GetMockUrlWithFailure( 65 ScopedJavaLocalRef<jstring> GetMockUrlWithFailure(
29 JNIEnv* jenv, 66 JNIEnv* jenv,
30 const JavaParamRef<jclass>& jcaller, 67 const JavaParamRef<jclass>& jcaller,
31 jint jphase, 68 jint jphase,
32 jint jnet_error) { 69 jint jnet_error) {
33 GURL url(net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase( 70 GURL url(net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase(
34 static_cast<net::URLRequestFailedJob::FailurePhase>(jphase), 71 static_cast<net::URLRequestFailedJob::FailurePhase>(jphase),
35 static_cast<int>(jnet_error))); 72 static_cast<int>(jnet_error)));
36 return base::android::ConvertUTF8ToJavaString(jenv, url.spec()); 73 return base::android::ConvertUTF8ToJavaString(jenv, url.spec());
37 } 74 }
(...skipping 28 matching lines...) Expand all
66 const JavaParamRef<jclass>& jcaller) { 103 const JavaParamRef<jclass>& jcaller) {
67 GURL url(net::URLRequestHangingReadJob::GetMockHttpUrl()); 104 GURL url(net::URLRequestHangingReadJob::GetMockHttpUrl());
68 return base::android::ConvertUTF8ToJavaString(jenv, url.spec()); 105 return base::android::ConvertUTF8ToJavaString(jenv, url.spec());
69 } 106 }
70 107
71 bool RegisterMockUrlRequestJobFactory(JNIEnv* env) { 108 bool RegisterMockUrlRequestJobFactory(JNIEnv* env) {
72 return RegisterNativesImpl(env); 109 return RegisterNativesImpl(env);
73 } 110 }
74 111
75 } // namespace cronet 112 } // namespace cronet
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698