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

Side by Side Diff: ios/crnet/crnet_consumer/main.m

Issue 1142383006: CrNet: add pauseable NSURLProtocol and switch to using it (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Documentation and refactors Created 5 years, 6 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
« no previous file with comments | « no previous file | ios/crnet/crnet_environment.mm » ('j') | ios/net/crn_http_protocol_handler.mm » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
droger 2015/06/11 15:45:56 Did you run the formatter on the file?
Elly Fong-Jones 2015/06/12 15:02:59 I just ran 'git cl format' and it looks like it do
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 <Foundation/Foundation.h> 5 #import <Foundation/Foundation.h>
6 #import <UIKit/UIKit.h> 6
7 #import "CrNet.h"
7 8
8 #import "crnet_consumer_app_delegate.h" 9 #import "crnet_consumer_app_delegate.h"
9 10
11 @interface TestDelegate : NSObject <NSURLSessionDelegate,
12 NSURLSessionDataDelegate,
13 NSURLSessionTaskDelegate>
14
15 - (id)initWithSemaphore:(dispatch_semaphore_t)sem;
16
17 @end
18
19 @implementation TestDelegate {
20 dispatch_semaphore_t _sem;
21 }
22
23 - (id)initWithSemaphore:(dispatch_semaphore_t)sem {
24 _sem = sem;
25 return self;
26 }
27
28 - (void)URLSession:(NSURLSession *)session
29 didBecomeInvalidWithError:(NSError *)error {
30 NSLog(@"URLSession didBecomeInvalidWithError %@", error);
31 }
32
33 - (void)URLSession:(NSURLSession *)session
34 task:(NSURLSessionTask *)task
35 didCompleteWithError:(NSError *)error {
36 NSLog(@"URLSessionTask didCompleteWithError %@", error);
37 dispatch_semaphore_signal(_sem);
38 }
39
40 - (void)URLSession:(NSURLSession *)session
41 task:(NSURLSessionTask *)task
42 didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
43 completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disp,
44 NSURLCredential* credential))completionHandler {
45 NSLog(@"URLSessionTask didReceiveChallenge %@", challenge);
46 completionHandler(NSURLSessionAuthChallengeUseCredential, nil);
47 }
48
49 - (void)URLSession:(NSURLSession *)session
50 task:(NSURLSessionTask *)task
51 willPerformHTTPRedirection:(NSHTTPURLResponse *)response
52 newRequest:(NSURLRequest *)request
53 completionHandler:(void (^)(NSURLRequest *))completionHandler {
54 NSLog(@"URLSessionTask willPerformHttpRedirection %@", request);
55 completionHandler(request);
56 }
57
58 - (void)URLSession:(NSURLSession *)session
59 dataTask:(NSURLSessionDataTask *)dataTask
60 didReceiveResponse:(NSURLResponse *)response
61 completionHandler:(void (^)(NSURLSessionResponseDisposition
62 disposition))completionHandler {
63 NSHTTPURLResponse* resp = (NSHTTPURLResponse *)response;
64 NSLog(@"URLSessionDataTask didReceiveResponse status %ld",
65 (long)resp.statusCode);
66 completionHandler(NSURLSessionResponseAllow);
67 }
68
69 - (void)URLSession:(NSURLSession *)session
70 dataTask:(NSURLSessionDataTask *)dataTask
71 didReceiveData:(NSData *)data {
72 NSLog(@"URLSessionDataTask didReceiveData %lu bytes",
73 (unsigned long)data.length);
74 }
75
76 - (void)URLSession:(NSURLSession *)session
77 dataTask:(NSURLSessionDataTask *)dataTask
78 willCacheResponse:(NSCachedURLResponse *)proposedResponse
79 completionHandler:(void (^)(NSCachedURLResponse
80 *cachedResponse))completionHandler {
81 NSLog(@"URLSessionDataTask willCacheResponse %@", proposedResponse);
82 completionHandler(proposedResponse);
83 }
84
85 @end
86
87 void use_crnet(NSURLSessionConfiguration* config) {
88 [CrNet setPartialUserAgent:@"Foo/1.0"];
89 [CrNet install];
90 [CrNet installIntoSessionConfiguration:config];
91 }
92
93 void fetch(NSURLSession* session, NSString* url) {
94 NSURL* testURL = [NSURL URLWithString:url];
95 NSURLSessionDataTask* task = [session dataTaskWithURL:testURL];
96 NSLog(@"fetch: starting %@", url);
97 [task resume];
98 }
99
10 int main(int argc, char *argv[]) { 100 int main(int argc, char *argv[]) {
11 @autoreleasepool { 101 dispatch_semaphore_t sem = dispatch_semaphore_create(0);
12 return UIApplicationMain( 102 TestDelegate* delegate = [[TestDelegate alloc] initWithSemaphore:sem];
13 argc, argv, nil, NSStringFromClass([CrNetConsumerAppDelegate class])); 103 NSURLSessionConfiguration* config =
14 } 104 [NSURLSessionConfiguration ephemeralSessionConfiguration];
105 NSURLSession* session =
106 [NSURLSession sessionWithConfiguration:config
107 delegate:delegate
108 delegateQueue:nil];
109
110 NSLog(@"main: installing crnet");
111 use_crnet(config);
112
113 fetch(session, @"https://www.google.com");
114 fetch(session, @"https://twitter.com");
115 fetch(session, @"https://m.facebook.com");
116 fetch(session, @"https://www.yahoo.com");
117
118 int64_t secs = 1000000000LL;
119 secs *= 5LL;
120 NSLog(@"main: waiting");
121 dispatch_semaphore_wait(sem, dispatch_time(DISPATCH_TIME_NOW, secs));
122 dispatch_semaphore_wait(sem, dispatch_time(DISPATCH_TIME_NOW, secs));
123 dispatch_semaphore_wait(sem, dispatch_time(DISPATCH_TIME_NOW, secs));
124 dispatch_semaphore_wait(sem, dispatch_time(DISPATCH_TIME_NOW, secs));
125 NSLog(@"main: timeout, exiting");
15 } 126 }
OLDNEW
« no previous file with comments | « no previous file | ios/crnet/crnet_environment.mm » ('j') | ios/net/crn_http_protocol_handler.mm » ('J')

Powered by Google App Engine
This is Rietveld 408576698