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

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

Issue 1817553002: Add host resolver rules experimental flag for Cronet (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: delete registerHostResolverProc and rebase Created 4 years, 5 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "components/cronet/android/test/cronet_test_util.h" 5 #include "components/cronet/android/test/cronet_test_util.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 "components/cronet/android/cronet_url_request_adapter.h" 9 #include "components/cronet/android/cronet_url_request_adapter.h"
10 #include "components/cronet/android/cronet_url_request_context_adapter.h"
11 #include "components/cronet/android/test/native_test_server.h" 10 #include "components/cronet/android/test/native_test_server.h"
12 #include "components/cronet/android/url_request_context_adapter.h"
13 #include "jni/CronetTestUtil_jni.h" 11 #include "jni/CronetTestUtil_jni.h"
14 #include "net/dns/host_resolver_impl.h"
15 #include "net/dns/mock_host_resolver.h"
16 #include "net/url_request/url_request.h" 12 #include "net/url_request/url_request.h"
17 13
18 namespace cronet { 14 namespace cronet {
19 15
20 const char kFakeSdchDomain[] = "fake.sdch.domain";
21 // This must match the certificate used
22 // (quic_test.example.com.crt and quic_test.example.com.key.pkcs8), and
23 // the file served (
24 // components/cronet/android/test/assets/test/quic_data/simple.txt).
25 const char kFakeQuicDomain[] = "test.example.com";
26
27 namespace {
28
29 // Install host resolver rules to map fake domains to |destination|, usually an
30 // IP address.
31 void RegisterHostResolverProcHelper(net::URLRequestContext* url_request_context,
32 const std::string& destination) {
33 net::HostResolverImpl* resolver =
34 static_cast<net::HostResolverImpl*>(url_request_context->host_resolver());
35 scoped_refptr<net::RuleBasedHostResolverProc> proc =
36 new net::RuleBasedHostResolverProc(NULL);
37 proc->AddRule(kFakeSdchDomain, destination);
38 proc->AddRule(kFakeQuicDomain, destination);
39 resolver->set_proc_params_for_test(
40 net::HostResolverImpl::ProcTaskParams(proc.get(), 1u));
41 JNIEnv* env = base::android::AttachCurrentThread();
42 Java_CronetTestUtil_onHostResolverProcRegistered(env);
43 }
44
45 void RegisterHostResolverProcOnNetworkThread(
46 CronetURLRequestContextAdapter* context_adapter,
47 const std::string& destination) {
48 RegisterHostResolverProcHelper(context_adapter->GetURLRequestContext(),
49 destination);
50 }
51
52 // TODO(xunjieli): Delete this once legacy API is removed.
53 void RegisterHostResolverProcOnNetworkThreadLegacyAPI(
54 URLRequestContextAdapter* context_adapter,
55 const std::string& destination) {
56 RegisterHostResolverProcHelper(context_adapter->GetURLRequestContext(),
57 destination);
58 }
59
60 } // namespace
61
62 void RegisterHostResolverProc(JNIEnv* env,
63 const JavaParamRef<jclass>& jcaller,
64 jlong jadapter,
65 jboolean jlegacy_api,
66 const JavaParamRef<jstring>& jdestination) {
67 std::string destination(
68 base::android::ConvertJavaStringToUTF8(env, jdestination));
69 if (jlegacy_api == JNI_TRUE) {
70 URLRequestContextAdapter* context_adapter =
71 reinterpret_cast<URLRequestContextAdapter*>(jadapter);
72 context_adapter->PostTaskToNetworkThread(
73 FROM_HERE, base::Bind(&RegisterHostResolverProcOnNetworkThreadLegacyAPI,
74 base::Unretained(context_adapter), destination));
75 } else {
76 CronetURLRequestContextAdapter* context_adapter =
77 reinterpret_cast<CronetURLRequestContextAdapter*>(jadapter);
78 context_adapter->PostTaskToNetworkThread(
79 FROM_HERE, base::Bind(&RegisterHostResolverProcOnNetworkThread,
80 base::Unretained(context_adapter), destination));
81 }
82 }
83
84 jint GetLoadFlags(JNIEnv* env, 16 jint GetLoadFlags(JNIEnv* env,
85 const JavaParamRef<jclass>& jcaller, 17 const JavaParamRef<jclass>& jcaller,
86 const jlong urlRequest) { 18 const jlong urlRequest) {
87 return reinterpret_cast<CronetURLRequestAdapter*>(urlRequest) 19 return reinterpret_cast<CronetURLRequestAdapter*>(urlRequest)
88 ->GetURLRequestForTesting() 20 ->GetURLRequestForTesting()
89 ->load_flags(); 21 ->load_flags();
90 } 22 }
91 23
92 bool RegisterCronetTestUtil(JNIEnv* env) { 24 bool RegisterCronetTestUtil(JNIEnv* env) {
93 return RegisterNativesImpl(env); 25 return RegisterNativesImpl(env);
94 } 26 }
95 27
96 } // namespace cronet 28 } // namespace cronet
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698