OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 #import "ios/net/crn_http_protocol_handler.h" | 5 #import "ios/net/crn_http_protocol_handler.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <utility> | 10 #include <utility> |
(...skipping 22 matching lines...) Expand all Loading... |
33 #include "net/base/load_flags.h" | 33 #include "net/base/load_flags.h" |
34 #import "net/base/mac/url_conversions.h" | 34 #import "net/base/mac/url_conversions.h" |
35 #include "net/base/net_errors.h" | 35 #include "net/base/net_errors.h" |
36 #include "net/base/upload_bytes_element_reader.h" | 36 #include "net/base/upload_bytes_element_reader.h" |
37 #include "net/http/http_request_headers.h" | 37 #include "net/http/http_request_headers.h" |
38 #include "net/url_request/redirect_info.h" | 38 #include "net/url_request/redirect_info.h" |
39 #include "net/url_request/url_request.h" | 39 #include "net/url_request/url_request.h" |
40 #include "net/url_request/url_request_context.h" | 40 #include "net/url_request/url_request_context.h" |
41 #include "net/url_request/url_request_context_getter.h" | 41 #include "net/url_request/url_request_context_getter.h" |
42 | 42 |
| 43 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 44 #error "This file requires ARC support." |
| 45 #endif |
| 46 |
43 namespace net { | 47 namespace net { |
44 class HttpProtocolHandlerCore; | 48 class HttpProtocolHandlerCore; |
45 } | 49 } |
46 | 50 |
47 namespace { | 51 namespace { |
48 | 52 |
49 // Size of the buffer used to read the net::URLRequest. | 53 // Size of the buffer used to read the net::URLRequest. |
50 const int kIOBufferSize = 4096; | 54 const int kIOBufferSize = 4096; |
51 | 55 |
52 // Global instance of the HTTPProtocolHandlerDelegate. | 56 // Global instance of the HTTPProtocolHandlerDelegate. |
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
544 } | 548 } |
545 | 549 |
546 if (tracker_) | 550 if (tracker_) |
547 tracker_->CaptureReceivedBytes(request, total_byte_read); | 551 tracker_->CaptureReceivedBytes(request, total_byte_read); |
548 | 552 |
549 // Notify the client. | 553 // Notify the client. |
550 if (bytes_read == net::OK || bytes_read == net::ERR_IO_PENDING) { | 554 if (bytes_read == net::OK || bytes_read == net::ERR_IO_PENDING) { |
551 if ([data length] > 0) { | 555 if ([data length] > 0) { |
552 // If the data is not encoded in UTF8, the NSString is nil. | 556 // If the data is not encoded in UTF8, the NSString is nil. |
553 DVLOG(3) << "To client:" << std::endl | 557 DVLOG(3) << "To client:" << std::endl |
554 << base::SysNSStringToUTF8([[[NSString alloc] | 558 << base::SysNSStringToUTF8([[NSString alloc] |
555 initWithData:data | 559 initWithData:data |
556 encoding:NSUTF8StringEncoding] autorelease]); | 560 encoding:NSUTF8StringEncoding]); |
557 [top_level_client_ didLoadData:data]; | 561 [top_level_client_ didLoadData:data]; |
558 } | 562 } |
559 if (bytes_read == 0) { | 563 if (bytes_read == 0) { |
560 DCHECK_EQ(net_request_, request); | 564 DCHECK_EQ(net_request_, request); |
561 // There is nothing more to read. | 565 // There is nothing more to read. |
562 StopNetRequest(); | 566 StopNetRequest(); |
563 [top_level_client_ didFinishLoading]; | 567 [top_level_client_ didFinishLoading]; |
564 } | 568 } |
565 } else { | 569 } else { |
566 // Request failed (not canceled). | 570 // Request failed (not canceled). |
(...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1057 // (CRNHTTPProtocolHandler) because it is convenient. | 1061 // (CRNHTTPProtocolHandler) because it is convenient. |
1058 @implementation CRNPauseableHTTPProtocolHandler { | 1062 @implementation CRNPauseableHTTPProtocolHandler { |
1059 BOOL _started; | 1063 BOOL _started; |
1060 dispatch_queue_t _queue; | 1064 dispatch_queue_t _queue; |
1061 } | 1065 } |
1062 | 1066 |
1063 #pragma mark NSURLProtocol methods | 1067 #pragma mark NSURLProtocol methods |
1064 | 1068 |
1065 - (void)dealloc { | 1069 - (void)dealloc { |
1066 [self scheduleCancelRequest]; | 1070 [self scheduleCancelRequest]; |
1067 [super dealloc]; | |
1068 } | 1071 } |
1069 | 1072 |
1070 #pragma mark NSURLProtocol overrides. | 1073 #pragma mark NSURLProtocol overrides. |
1071 | 1074 |
1072 - (void)startLoading { | 1075 - (void)startLoading { |
1073 if (_started) { | 1076 if (_started) { |
1074 [[self getProtocolHandlerProxy] resume]; | 1077 [[self getProtocolHandlerProxy] resume]; |
1075 return; | 1078 return; |
1076 } | 1079 } |
1077 | 1080 |
(...skipping 17 matching lines...) Expand all Loading... |
1095 [[DeferredCancellation alloc] initWithCore:[self getCore]]; | 1098 [[DeferredCancellation alloc] initWithCore:[self getCore]]; |
1096 NSArray* modes = @[ [[NSRunLoop currentRunLoop] currentMode] ]; | 1099 NSArray* modes = @[ [[NSRunLoop currentRunLoop] currentMode] ]; |
1097 [cancellation performSelector:@selector(cancel) | 1100 [cancellation performSelector:@selector(cancel) |
1098 onThread:[self getClientThread] | 1101 onThread:[self getClientThread] |
1099 withObject:nil | 1102 withObject:nil |
1100 waitUntilDone:NO | 1103 waitUntilDone:NO |
1101 modes:modes]; | 1104 modes:modes]; |
1102 } | 1105 } |
1103 | 1106 |
1104 @end | 1107 @end |
OLD | NEW |