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

Side by Side Diff: ios/net/crn_http_protocol_handler_proxy_with_client_thread.mm

Issue 2489533003: [ObjC ARC] Converts ios/net to ARC. (Closed)
Patch Set: Created 4 years, 1 month 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
« no previous file with comments | « ios/net/crn_http_protocol_handler.mm ('k') | ios/net/crn_http_url_response.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_proxy_with_client_thread.h" 5 #import "ios/net/crn_http_protocol_handler_proxy_with_client_thread.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #import "base/mac/scoped_nsobject.h" 10 #import "base/mac/scoped_nsobject.h"
11 #include "base/time/time.h" 11 #include "base/time/time.h"
12 #import "ios/net/protocol_handler_util.h" 12 #import "ios/net/protocol_handler_util.h"
13 #include "net/base/auth.h" 13 #include "net/base/auth.h"
14 #include "net/url_request/url_request.h" 14 #include "net/url_request/url_request.h"
15 15
16 #if !defined(__has_feature) || !__has_feature(objc_arc)
17 #error "This file requires ARC support."
18 #endif
19
16 // When the protocol is invalidated, no synchronization (lock) is needed: 20 // When the protocol is invalidated, no synchronization (lock) is needed:
17 // - The actual calls to the protocol and its invalidation are all done on 21 // - The actual calls to the protocol and its invalidation are all done on
18 // clientThread_ and thus are serialized. 22 // clientThread_ and thus are serialized.
19 // - When a proxy method is called, the protocol is compared to nil. There may 23 // - When a proxy method is called, the protocol is compared to nil. There may
20 // be a conflict at this point, in the case the protocol is being invalidated 24 // be a conflict at this point, in the case the protocol is being invalidated
21 // during this comparison. However, in such a case, the actual value of the 25 // during this comparison. However, in such a case, the actual value of the
22 // pointer does not matter: an invalid pointer will behave as a valid one and 26 // pointer does not matter: an invalid pointer will behave as a valid one and
23 // post a task on the clientThread_, and that task will be handled correctly, 27 // post a task on the clientThread_, and that task will be handled correctly,
24 // as described by the item above. 28 // as described by the item above.
25 29
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 DCHECK(clientThread); 70 DCHECK(clientThread);
67 if ((self = [super init])) { 71 if ((self = [super init])) {
68 _protocol = protocol; 72 _protocol = protocol;
69 _url.reset([[[[protocol request] URL] absoluteString] copy]); 73 _url.reset([[[[protocol request] URL] absoluteString] copy]);
70 _creationTime = base::Time::Now(); 74 _creationTime = base::Time::Now();
71 _clientThread = clientThread; 75 _clientThread = clientThread;
72 // Use the common run loop mode in addition to the client thread mode, in 76 // Use the common run loop mode in addition to the client thread mode, in
73 // hope that our tasks are executed even if the client thread changes mode 77 // hope that our tasks are executed even if the client thread changes mode
74 // later on. 78 // later on.
75 if ([mode isEqualToString:NSRunLoopCommonModes]) 79 if ([mode isEqualToString:NSRunLoopCommonModes])
76 _runLoopModes.reset([@[ NSRunLoopCommonModes ] retain]); 80 _runLoopModes.reset(@[ NSRunLoopCommonModes ]);
77 else 81 else
78 _runLoopModes.reset([@[ mode, NSRunLoopCommonModes ] retain]); 82 _runLoopModes.reset(@[ mode, NSRunLoopCommonModes ]);
79 _queuedInvocations.reset([[NSMutableArray alloc] init]); 83 _queuedInvocations.reset([[NSMutableArray alloc] init]);
80 } 84 }
81 return self; 85 return self;
82 } 86 }
83 87
84 - (void)invalidate { 88 - (void)invalidate {
85 DCHECK([NSThread currentThread] == _clientThread); 89 DCHECK([NSThread currentThread] == _clientThread);
86 _protocol = nil; 90 _protocol = nil;
87 _requestComplete = YES; 91 _requestComplete = YES;
88 // Note that there may still be queued invocations here, if the chrome network 92 // Note that there may still be queued invocations here, if the chrome network
(...skipping 30 matching lines...) Expand all
119 NSMethodSignature* sig = [self methodSignatureForSelector:aSelector]; 123 NSMethodSignature* sig = [self methodSignatureForSelector:aSelector];
120 DCHECK(sig != nil); 124 DCHECK(sig != nil);
121 NSInvocation* inv = [NSInvocation invocationWithMethodSignature:sig]; 125 NSInvocation* inv = [NSInvocation invocationWithMethodSignature:sig];
122 [inv setTarget:self]; 126 [inv setTarget:self];
123 [inv setSelector:aSelector]; 127 [inv setSelector:aSelector];
124 [inv retainArguments]; 128 [inv retainArguments];
125 129
126 size_t arg_index = 2; 130 size_t arg_index = 2;
127 va_list args; 131 va_list args;
128 va_start(args, aSelector); 132 va_start(args, aSelector);
129 NSObject* arg = va_arg(args, NSObject*); 133 __unsafe_unretained NSObject* arg = va_arg(args, NSObject*);
130 while (arg != nil) { 134 while (arg != nil) {
131 [inv setArgument:&arg atIndex:arg_index]; 135 [inv setArgument:&arg atIndex:arg_index];
132 arg = va_arg(args, NSObject*); 136 arg = va_arg(args, NSObject*);
133 arg_index++; 137 arg_index++;
134 } 138 }
135 va_end(args); 139 va_end(args);
136 140
137 DCHECK(arg_index == sig.numberOfArguments); 141 DCHECK(arg_index == sig.numberOfArguments);
138 [self performSelector:@selector(invokeOnClientThread:) 142 [self performSelector:@selector(invokeOnClientThread:)
139 onThread:_clientThread 143 onThread:_clientThread
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 } 261 }
258 262
259 - (void)resume { 263 - (void)resume {
260 DCHECK([NSThread currentThread] == _clientThread); 264 DCHECK([NSThread currentThread] == _clientThread);
261 DCHECK(!_requestComplete || !_protocol); 265 DCHECK(!_requestComplete || !_protocol);
262 _paused = NO; 266 _paused = NO;
263 [self runInvocationQueueOnClientThread]; 267 [self runInvocationQueueOnClientThread];
264 } 268 }
265 269
266 @end 270 @end
OLDNEW
« no previous file with comments | « ios/net/crn_http_protocol_handler.mm ('k') | ios/net/crn_http_url_response.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698