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

Side by Side Diff: chrome_frame/npapi_url_request.cc

Issue 6381005: Implement a poor mans redirect handling in ChromeFrame for browsers which don... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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
« no previous file with comments | « chrome_frame/np_browser_functions.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "chrome_frame/npapi_url_request.h" 5 #include "chrome_frame/npapi_url_request.h"
6 6
7 #include "base/string_number_conversions.h" 7 #include "base/string_number_conversions.h"
8 #include "base/threading/platform_thread.h" 8 #include "base/threading/platform_thread.h"
9 #include "chrome_frame/chrome_frame_npapi.h"
9 #include "chrome_frame/np_browser_functions.h" 10 #include "chrome_frame/np_browser_functions.h"
10 #include "chrome_frame/np_utils.h" 11 #include "chrome_frame/np_utils.h"
11 #include "net/base/net_errors.h" 12 #include "net/base/net_errors.h"
12 13
13 class NPAPIUrlRequest : public PluginUrlRequest { 14 class NPAPIUrlRequest : public PluginUrlRequest {
14 public: 15 public:
15 explicit NPAPIUrlRequest(NPP instance); 16 explicit NPAPIUrlRequest(NPP instance);
16 ~NPAPIUrlRequest(); 17 ~NPAPIUrlRequest();
17 18
18 virtual bool Start(); 19 virtual bool Start();
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 return NPERR_NO_ERROR; 364 return NPERR_NO_ERROR;
364 365
365 // This stream is being constructed for a request that has already been 366 // This stream is being constructed for a request that has already been
366 // canceled. Signal its immediate termination. 367 // canceled. Signal its immediate termination.
367 if (net::URLRequestStatus::CANCELED == request->status().status()) { 368 if (net::URLRequestStatus::CANCELED == request->status().status()) {
368 return npapi::DestroyStream(request->instance(), 369 return npapi::DestroyStream(request->instance(),
369 stream, NPRES_USER_BREAK); 370 stream, NPRES_USER_BREAK);
370 } 371 }
371 372
372 DCHECK(request_map_.find(request->id()) != request_map_.end()); 373 DCHECK(request_map_.find(request->id()) != request_map_.end());
374
375 // If the host browser does not support the NPAPI redirect notification
376 // spec, and if the request URL is implicitly redirected, we need to
377 // inform Chrome about the redirect and allow it to follow the redirect.
378 // We achieve this by comparing the URL requested with the URL received in
379 // the response and if they don't match we assume a redirect. This would have
380 // a sideffect that two GET requests would be sent out in this case.
381 if (!BrowserSupportsRedirectNotification()) {
382 if (GURL(request->url().c_str()) != GURL(stream->url)) {
383 DVLOG(1) << "Request URL:"
384 << request->url()
385 << " was redirected to:"
386 << stream->url;
387 delegate_->OnResponseStarted(request->id(), "", "", 0, base::Time(),
388 stream->url, 302);
389 return NPERR_GENERIC_ERROR;
390 }
391 }
373 // We need to return the requested stream mode if we are returning a success 392 // We need to return the requested stream mode if we are returning a success
374 // code. If we don't do this it causes Opera to blow up. 393 // code. If we don't do this it causes Opera to blow up.
375 *stream_type = NP_NORMAL; 394 *stream_type = NP_NORMAL;
376 return request->OnStreamCreated(type, stream); 395 return request->OnStreamCreated(type, stream);
377 } 396 }
378 397
379 int32 NPAPIUrlRequestManager::WriteReady(NPStream* stream) { 398 int32 NPAPIUrlRequestManager::WriteReady(NPStream* stream) {
380 NPAPIUrlRequest* request = RequestFromNotifyData(stream->notifyData); 399 NPAPIUrlRequest* request = RequestFromNotifyData(stream->notifyData);
381 if (!request) 400 if (!request)
382 return 0x7FFFFFFF; 401 return 0x7FFFFFFF;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 } 450 }
432 } 451 }
433 452
434 scoped_refptr<NPAPIUrlRequest> NPAPIUrlRequestManager::LookupRequest( 453 scoped_refptr<NPAPIUrlRequest> NPAPIUrlRequestManager::LookupRequest(
435 int request_id) { 454 int request_id) {
436 RequestMap::iterator index = request_map_.find(request_id); 455 RequestMap::iterator index = request_map_.find(request_id);
437 if (index != request_map_.end()) 456 if (index != request_map_.end())
438 return index->second; 457 return index->second;
439 return NULL; 458 return NULL;
440 } 459 }
OLDNEW
« no previous file with comments | « chrome_frame/np_browser_functions.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698