| Index: ios/crnet/CrNet.mm
|
| diff --git a/ios/crnet/CrNet.mm b/ios/crnet/CrNet.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9ea2dd99e39122150cb2d056306c0953f779cffb
|
| --- /dev/null
|
| +++ b/ios/crnet/CrNet.mm
|
| @@ -0,0 +1,132 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#import "ios/crnet/CrNet.h"
|
| +
|
| +#include "base/logging.h"
|
| +#import "ios/net/crn_http_protocol_handler.h"
|
| +#import "ios/crnet/crnet_environment.h"
|
| +
|
| +static CrNetEnvironment* g_chrome_net = NULL;
|
| +
|
| +static BOOL g_spdy_enabled = YES;
|
| +static BOOL g_quic_enabled = NO;
|
| +static NSString *g_user_agent = nil;
|
| +static double g_alternate_protocol_threshold = 1.0;
|
| +static RequestFilterBlock g_request_filter_block = nil;
|
| +
|
| +@implementation CrNet
|
| +
|
| ++ (void)setSpdyEnabled:(BOOL)spdyEnabled {
|
| + g_spdy_enabled = spdyEnabled;
|
| +}
|
| +
|
| ++ (void)setQuicEnabled:(BOOL)quicEnabled {
|
| + g_quic_enabled = quicEnabled;
|
| +}
|
| +
|
| ++ (void)setPartialUserAgent:(NSString *)userAgent {
|
| + g_user_agent = userAgent;
|
| +}
|
| +
|
| ++ (void)setAlternateProtocolThreshold:(double)alternateProtocolThreshold {
|
| + g_alternate_protocol_threshold = alternateProtocolThreshold;
|
| +}
|
| +
|
| ++ (void)installInternal {
|
| + CrNetEnvironment::Initialize();
|
| + std::string partial_user_agent =
|
| + [g_user_agent cStringUsingEncoding:NSASCIIStringEncoding];
|
| + g_chrome_net = new CrNetEnvironment(partial_user_agent);
|
| +
|
| + g_chrome_net->set_spdy_enabled(g_spdy_enabled);
|
| + g_chrome_net->set_quic_enabled(g_quic_enabled);
|
| + g_chrome_net->set_alternate_protocol_threshold(
|
| + g_alternate_protocol_threshold);
|
| +
|
| + g_chrome_net->Install();
|
| + g_chrome_net->SetHTTPProtocolHandlerRegistered(true);
|
| + g_chrome_net->SetRequestFilterBlock(g_request_filter_block);
|
| +}
|
| +
|
| ++ (void)install {
|
| + static dispatch_once_t onceToken;
|
| + dispatch_once(&onceToken, ^{
|
| + [self installInternal];
|
| + });
|
| +}
|
| +
|
| ++ (void)installIntoSessionConfiguration:(NSURLSessionConfiguration*)config {
|
| + g_chrome_net->InstallIntoSessionConfiguration(config);
|
| +}
|
| +
|
| ++ (void)installWithPartialUserAgent:(NSString *)partialUserAgent {
|
| + [self setPartialUserAgent:partialUserAgent];
|
| + [self install];
|
| +}
|
| +
|
| ++ (void)installWithPartialUserAgent:(NSString *)partialUserAgent
|
| + enableDataReductionProxy:(BOOL)enableDataReductionProxy {
|
| + LOG(ERROR) << "enableDataReductionProxy is no longer respected. The "
|
| + << "functionality has been removed from CrNet.";
|
| +
|
| + [self setPartialUserAgent:partialUserAgent];
|
| + [self install];
|
| +}
|
| +
|
| ++ (void)installWithPartialUserAgent:(NSString *)partialUserAgent
|
| + withRequestFilterBlock:(RequestFilterBlock)requestFilterBlock {
|
| + [self setPartialUserAgent:partialUserAgent];
|
| + [self setRequestFilterBlock:requestFilterBlock];
|
| + [self install];
|
| +}
|
| +
|
| ++ (void)setRequestFilterBlock:(RequestFilterBlock)block {
|
| + if (g_chrome_net)
|
| + g_chrome_net->SetRequestFilterBlock(block);
|
| + else
|
| + g_request_filter_block = block;
|
| +}
|
| +
|
| ++ (void)uninstall {
|
| + if (g_chrome_net) {
|
| + g_chrome_net->SetHTTPProtocolHandlerRegistered(false);
|
| + }
|
| +}
|
| +
|
| ++ (void)startNetLogToFile:(NSString *)fileName logBytes:(BOOL)logBytes {
|
| + if (g_chrome_net && [fileName length]) {
|
| + g_chrome_net->StartNetLog([fileName UTF8String], logBytes);
|
| + }
|
| +}
|
| +
|
| ++ (void)stopNetLog {
|
| + if (g_chrome_net) {
|
| + return g_chrome_net->StopNetLog();
|
| + }
|
| +}
|
| +
|
| ++ (NSString *)userAgent {
|
| + if (!g_chrome_net) {
|
| + return nil;
|
| + }
|
| +
|
| + std::string user_agent = g_chrome_net->user_agent();
|
| + return [NSString stringWithCString:user_agent.c_str()
|
| + encoding:[NSString defaultCStringEncoding]];
|
| +}
|
| +
|
| ++ (void)closeAllSpdySessions {
|
| + if (g_chrome_net) {
|
| + return g_chrome_net->CloseAllSpdySessions();
|
| + }
|
| +}
|
| +
|
| ++ (void)clearCacheWithCompletionCallback:(ClearCacheCallback)clearCacheCallback {
|
| + if (g_chrome_net) {
|
| + g_chrome_net->ClearCache(clearCacheCallback);
|
| + }
|
| +}
|
| +
|
| +@end
|
|
|