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

Side by Side Diff: webkit/tools/test_shell/simple_resource_loader_bridge.cc

Issue 9572001: Do cookie checks in NetworkDelegate instead of the URLRequest::Delegate. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix chromeos Created 8 years, 9 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 // This file contains an implementation of the ResourceLoaderBridge class. 5 // This file contains an implementation of the ResourceLoaderBridge class.
6 // The class is implemented using net::URLRequest, meaning it is a "simple" 6 // The class is implemented using net::URLRequest, meaning it is a "simple"
7 // version that directly issues requests. The more complicated one used in the 7 // version that directly issues requests. The more complicated one used in the
8 // browser uses IPC. 8 // browser uses IPC.
9 // 9 //
10 // Because net::URLRequest only provides an asynchronous resource loading API, 10 // Because net::URLRequest only provides an asynchronous resource loading API,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 #include "base/timer.h" 45 #include "base/timer.h"
46 #include "base/threading/thread.h" 46 #include "base/threading/thread.h"
47 #include "base/synchronization/waitable_event.h" 47 #include "base/synchronization/waitable_event.h"
48 #include "net/base/cookie_store.h" 48 #include "net/base/cookie_store.h"
49 #include "net/base/file_stream.h" 49 #include "net/base/file_stream.h"
50 #include "net/base/io_buffer.h" 50 #include "net/base/io_buffer.h"
51 #include "net/base/load_flags.h" 51 #include "net/base/load_flags.h"
52 #include "net/base/mime_util.h" 52 #include "net/base/mime_util.h"
53 #include "net/base/net_errors.h" 53 #include "net/base/net_errors.h"
54 #include "net/base/net_util.h" 54 #include "net/base/net_util.h"
55 #include "net/base/network_delegate.h"
55 #include "net/base/static_cookie_policy.h" 56 #include "net/base/static_cookie_policy.h"
56 #include "net/base/upload_data.h" 57 #include "net/base/upload_data.h"
57 #include "net/http/http_cache.h" 58 #include "net/http/http_cache.h"
58 #include "net/http/http_request_headers.h" 59 #include "net/http/http_request_headers.h"
59 #include "net/http/http_response_headers.h" 60 #include "net/http/http_response_headers.h"
60 #include "net/url_request/url_request.h" 61 #include "net/url_request/url_request.h"
61 #include "net/url_request/url_request_job.h" 62 #include "net/url_request/url_request_job.h"
62 #include "webkit/appcache/appcache_interfaces.h" 63 #include "webkit/appcache/appcache_interfaces.h"
63 #include "webkit/blob/blob_storage_controller.h" 64 #include "webkit/blob/blob_storage_controller.h"
64 #include "webkit/blob/blob_url_request_job.h" 65 #include "webkit/blob/blob_url_request_job.h"
(...skipping 28 matching lines...) Expand all
93 bool in_no_proxy) 94 bool in_no_proxy)
94 : cache_path(in_cache_path), 95 : cache_path(in_cache_path),
95 cache_mode(in_cache_mode), 96 cache_mode(in_cache_mode),
96 no_proxy(in_no_proxy) {} 97 no_proxy(in_no_proxy) {}
97 98
98 FilePath cache_path; 99 FilePath cache_path;
99 net::HttpCache::Mode cache_mode; 100 net::HttpCache::Mode cache_mode;
100 bool no_proxy; 101 bool no_proxy;
101 }; 102 };
102 103
104 //-----------------------------------------------------------------------------
105
106 bool g_accept_all_cookies = false;
107
108 class TestShellNetworkDelegate : public net::NetworkDelegate {
109 public:
110 virtual ~TestShellNetworkDelegate() {}
111
112 private:
113 // net::NetworkDelegate implementation.
114 virtual int OnBeforeURLRequest(net::URLRequest* request,
115 const net::CompletionCallback& callback,
116 GURL* new_url) OVERRIDE {
117 return net::OK;
118 }
119 virtual int OnBeforeSendHeaders(net::URLRequest* request,
120 const net::CompletionCallback& callback,
121 net::HttpRequestHeaders* headers) OVERRIDE {
122 return net::OK;
123 }
124 virtual void OnSendHeaders(net::URLRequest* request,
125 const net::HttpRequestHeaders& headers) OVERRIDE {}
126 virtual int OnHeadersReceived(
127 net::URLRequest* request,
128 const net::CompletionCallback& callback,
129 net::HttpResponseHeaders* original_response_headers,
130 scoped_refptr<net::HttpResponseHeaders>*
131 override_response_headers) OVERRIDE {
132 return net::OK;
133 }
134 virtual void OnBeforeRedirect(net::URLRequest* request,
135 const GURL& new_location) OVERRIDE {}
136 virtual void OnResponseStarted(net::URLRequest* request) OVERRIDE {}
137 virtual void OnRawBytesRead(const net::URLRequest& request,
138 int bytes_read) OVERRIDE {}
139 virtual void OnCompleted(net::URLRequest* request, bool started) OVERRIDE {}
140 virtual void OnURLRequestDestroyed(net::URLRequest* request) OVERRIDE {}
141
142 virtual void OnPACScriptError(int line_number,
143 const string16& error) OVERRIDE {
144 }
145 virtual AuthRequiredResponse OnAuthRequired(
146 net::URLRequest* request,
147 const net::AuthChallengeInfo& auth_info,
148 const AuthCallback& callback,
149 net::AuthCredentials* credentials) OVERRIDE {
150 return AUTH_REQUIRED_RESPONSE_NO_ACTION;
151 }
152 virtual bool CanGetCookies(
153 const net::URLRequest* request,
154 const net::CookieList& cookie_list) OVERRIDE {
155 StaticCookiePolicy::Type policy_type = g_accept_all_cookies ?
156 StaticCookiePolicy::ALLOW_ALL_COOKIES :
157 StaticCookiePolicy::BLOCK_SETTING_THIRD_PARTY_COOKIES;
158
159 StaticCookiePolicy policy(policy_type);
160 int rv = policy.CanGetCookies(
161 request->url(), request->first_party_for_cookies());
162 return rv == net::OK;
163 }
164 virtual bool CanSetCookie(const net::URLRequest* request,
165 const std::string& cookie_line,
166 net::CookieOptions* options) OVERRIDE {
167 StaticCookiePolicy::Type policy_type = g_accept_all_cookies ?
168 StaticCookiePolicy::ALLOW_ALL_COOKIES :
169 StaticCookiePolicy::BLOCK_SETTING_THIRD_PARTY_COOKIES;
170
171 StaticCookiePolicy policy(policy_type);
172 int rv = policy.CanSetCookie(
173 request->url(), request->first_party_for_cookies());
174 return rv == net::OK;
175 }
176 };
177
103 TestShellRequestContextParams* g_request_context_params = NULL; 178 TestShellRequestContextParams* g_request_context_params = NULL;
104 TestShellRequestContext* g_request_context = NULL; 179 TestShellRequestContext* g_request_context = NULL;
180 TestShellNetworkDelegate* g_network_delegate = NULL;
105 base::Thread* g_cache_thread = NULL; 181 base::Thread* g_cache_thread = NULL;
106 bool g_accept_all_cookies = false;
107 182
108 struct FileOverHTTPParams { 183 struct FileOverHTTPParams {
109 FileOverHTTPParams(std::string in_file_path_template, GURL in_http_prefix) 184 FileOverHTTPParams(std::string in_file_path_template, GURL in_http_prefix)
110 : file_path_template(in_file_path_template), 185 : file_path_template(in_file_path_template),
111 http_prefix(in_http_prefix) {} 186 http_prefix(in_http_prefix) {}
112 187
113 std::string file_path_template; 188 std::string file_path_template;
114 GURL http_prefix; 189 GURL http_prefix;
115 }; 190 };
116 191
(...skipping 17 matching lines...) Expand all
134 g_request_context_params->cache_mode, 209 g_request_context_params->cache_mode,
135 g_request_context_params->no_proxy); 210 g_request_context_params->no_proxy);
136 delete g_request_context_params; 211 delete g_request_context_params;
137 g_request_context_params = NULL; 212 g_request_context_params = NULL;
138 } else { 213 } else {
139 g_request_context = new TestShellRequestContext(); 214 g_request_context = new TestShellRequestContext();
140 } 215 }
141 216
142 g_request_context->AddRef(); 217 g_request_context->AddRef();
143 218
219 g_network_delegate = new TestShellNetworkDelegate();
220 g_request_context->set_network_delegate(g_network_delegate);
221
144 SimpleAppCacheSystem::InitializeOnIOThread(g_request_context); 222 SimpleAppCacheSystem::InitializeOnIOThread(g_request_context);
145 SimpleSocketStreamBridge::InitializeOnIOThread(g_request_context); 223 SimpleSocketStreamBridge::InitializeOnIOThread(g_request_context);
146 SimpleFileWriter::InitializeOnIOThread(g_request_context); 224 SimpleFileWriter::InitializeOnIOThread(g_request_context);
147 SimpleFileSystem::InitializeOnIOThread( 225 SimpleFileSystem::InitializeOnIOThread(
148 g_request_context->blob_storage_controller()); 226 g_request_context->blob_storage_controller());
149 TestShellWebBlobRegistryImpl::InitializeOnIOThread( 227 TestShellWebBlobRegistryImpl::InitializeOnIOThread(
150 g_request_context->blob_storage_controller()); 228 g_request_context->blob_storage_controller());
151 } 229 }
152 230
153 virtual void CleanUp() { 231 virtual void CleanUp() {
154 // In reverse order of initialization. 232 // In reverse order of initialization.
155 TestShellWebBlobRegistryImpl::Cleanup(); 233 TestShellWebBlobRegistryImpl::Cleanup();
156 SimpleFileSystem::CleanupOnIOThread(); 234 SimpleFileSystem::CleanupOnIOThread();
157 SimpleFileWriter::CleanupOnIOThread(); 235 SimpleFileWriter::CleanupOnIOThread();
158 SimpleSocketStreamBridge::Cleanup(); 236 SimpleSocketStreamBridge::Cleanup();
159 SimpleAppCacheSystem::CleanupOnIOThread(); 237 SimpleAppCacheSystem::CleanupOnIOThread();
160 238
161 if (g_request_context) { 239 if (g_request_context) {
240 g_request_context->set_network_delegate(NULL);
162 g_request_context->Release(); 241 g_request_context->Release();
163 g_request_context = NULL; 242 g_request_context = NULL;
164 } 243 }
244
245 if (g_network_delegate) {
246 delete g_network_delegate;
247 g_network_delegate = NULL;
248 }
165 } 249 }
166 }; 250 };
167 251
168 IOThread* g_io_thread = NULL; 252 IOThread* g_io_thread = NULL;
169 253
170 //----------------------------------------------------------------------------- 254 //-----------------------------------------------------------------------------
171 255
172 struct RequestParams { 256 struct RequestParams {
173 std::string method; 257 std::string method;
174 GURL url; 258 GURL url;
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 } 553 }
470 } 554 }
471 555
472 virtual void OnSSLCertificateError(net::URLRequest* request, 556 virtual void OnSSLCertificateError(net::URLRequest* request,
473 const net::SSLInfo& ssl_info, 557 const net::SSLInfo& ssl_info,
474 bool fatal) OVERRIDE { 558 bool fatal) OVERRIDE {
475 // Allow all certificate errors. 559 // Allow all certificate errors.
476 request->ContinueDespiteLastError(); 560 request->ContinueDespiteLastError();
477 } 561 }
478 562
479 virtual bool CanGetCookies(
480 const net::URLRequest* request,
481 const net::CookieList& cookie_list) const OVERRIDE {
482 StaticCookiePolicy::Type policy_type = g_accept_all_cookies ?
483 StaticCookiePolicy::ALLOW_ALL_COOKIES :
484 StaticCookiePolicy::BLOCK_SETTING_THIRD_PARTY_COOKIES;
485
486 StaticCookiePolicy policy(policy_type);
487 int rv = policy.CanGetCookies(
488 request->url(), request->first_party_for_cookies());
489 return rv == net::OK;
490 }
491
492 virtual bool CanSetCookie(const net::URLRequest* request,
493 const std::string& cookie_line,
494 net::CookieOptions* options) const OVERRIDE {
495 StaticCookiePolicy::Type policy_type = g_accept_all_cookies ?
496 StaticCookiePolicy::ALLOW_ALL_COOKIES :
497 StaticCookiePolicy::BLOCK_SETTING_THIRD_PARTY_COOKIES;
498
499 StaticCookiePolicy policy(policy_type);
500 int rv = policy.CanSetCookie(
501 request->url(), request->first_party_for_cookies());
502 return rv == net::OK;
503 }
504
505 virtual void OnReadCompleted(net::URLRequest* request, 563 virtual void OnReadCompleted(net::URLRequest* request,
506 int bytes_read) OVERRIDE { 564 int bytes_read) OVERRIDE {
507 if (request->status().is_success() && bytes_read > 0) { 565 if (request->status().is_success() && bytes_read > 0) {
508 OnReceivedData(bytes_read); 566 OnReceivedData(bytes_read);
509 } else { 567 } else {
510 Done(); 568 Done();
511 } 569 }
512 } 570 }
513 571
514 // -------------------------------------------------------------------------- 572 // --------------------------------------------------------------------------
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
917 void SimpleResourceLoaderBridge::Init( 975 void SimpleResourceLoaderBridge::Init(
918 const FilePath& cache_path, 976 const FilePath& cache_path,
919 net::HttpCache::Mode cache_mode, 977 net::HttpCache::Mode cache_mode,
920 bool no_proxy) { 978 bool no_proxy) {
921 // Make sure to stop any existing IO thread since it may be using the 979 // Make sure to stop any existing IO thread since it may be using the
922 // current request context. 980 // current request context.
923 Shutdown(); 981 Shutdown();
924 982
925 DCHECK(!g_request_context_params); 983 DCHECK(!g_request_context_params);
926 DCHECK(!g_request_context); 984 DCHECK(!g_request_context);
985 DCHECK(!g_network_delegate);
927 DCHECK(!g_io_thread); 986 DCHECK(!g_io_thread);
928 987
929 g_request_context_params = new TestShellRequestContextParams( 988 g_request_context_params = new TestShellRequestContextParams(
930 cache_path, cache_mode, no_proxy); 989 cache_path, cache_mode, no_proxy);
931 } 990 }
932 991
933 // static 992 // static
934 void SimpleResourceLoaderBridge::Shutdown() { 993 void SimpleResourceLoaderBridge::Shutdown() {
935 if (g_io_thread) { 994 if (g_io_thread) {
936 delete g_io_thread; 995 delete g_io_thread;
937 g_io_thread = NULL; 996 g_io_thread = NULL;
938 997
939 DCHECK(g_cache_thread); 998 DCHECK(g_cache_thread);
940 delete g_cache_thread; 999 delete g_cache_thread;
941 g_cache_thread = NULL; 1000 g_cache_thread = NULL;
942 1001
943 DCHECK(!g_request_context) << "should have been nulled by thread dtor"; 1002 DCHECK(!g_request_context) << "should have been nulled by thread dtor";
1003 DCHECK(!g_network_delegate) << "should have been nulled by thread dtor";
944 } else { 1004 } else {
945 delete g_request_context_params; 1005 delete g_request_context_params;
946 g_request_context_params = NULL; 1006 g_request_context_params = NULL;
947 1007
948 if (g_file_over_http_params) { 1008 if (g_file_over_http_params) {
949 delete g_file_over_http_params; 1009 delete g_file_over_http_params;
950 g_file_over_http_params = NULL; 1010 g_file_over_http_params = NULL;
951 } 1011 }
952 } 1012 }
953 } 1013 }
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1040 (http_prefix.SchemeIs("http") || http_prefix.SchemeIs("https"))); 1100 (http_prefix.SchemeIs("http") || http_prefix.SchemeIs("https")));
1041 g_file_over_http_params = new FileOverHTTPParams(file_path_template, 1101 g_file_over_http_params = new FileOverHTTPParams(file_path_template,
1042 http_prefix); 1102 http_prefix);
1043 } 1103 }
1044 1104
1045 // static 1105 // static
1046 webkit_glue::ResourceLoaderBridge* SimpleResourceLoaderBridge::Create( 1106 webkit_glue::ResourceLoaderBridge* SimpleResourceLoaderBridge::Create(
1047 const webkit_glue::ResourceLoaderBridge::RequestInfo& request_info) { 1107 const webkit_glue::ResourceLoaderBridge::RequestInfo& request_info) {
1048 return new ResourceLoaderBridgeImpl(request_info); 1108 return new ResourceLoaderBridgeImpl(request_info);
1049 } 1109 }
OLDNEW
« webkit/appcache/appcache_update_job.cc ('K') | « webkit/appcache/appcache_update_job.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698