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

Unified Diff: ios/crnet/CrNet.h

Issue 1125293004: ios: add CrNet (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: ? Created 5 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: ios/crnet/CrNet.h
diff --git a/ios/crnet/CrNet.h b/ios/crnet/CrNet.h
new file mode 100644
index 0000000000000000000000000000000000000000..d516ac048d4dc5f3c730705369dcbc414d34a6e3
--- /dev/null
+++ b/ios/crnet/CrNet.h
@@ -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 <Foundation/Foundation.h>
+
+// A block, that takes a request, and returns YES if the request should
+// be handled.
+typedef BOOL(^RequestFilterBlock)(NSURLRequest *request);
+
+
+// A callback, called when the clearCache message has completed. The |errorCode|
+// is a network stack error code indicating whether the clear request succeeded
+// or not. Even if the request failed, the cache may have been cleared anyway,
+// or it may not have; it is not useful to retry a failing cache-clear attempt.
+// The only real use of |errorCode| is for error reporting and statistics
+// gathering.
+typedef void(^ClearCacheCallback)(int errorCode);
+
+// Interface for installing CrNet.
+@interface CrNet : NSObject
+
+// Sets whether SPDY should be supported by CrNet. This method only has any
+// effect before |install| is called.
++ (void)setSpdyEnabled:(BOOL)spdyEnabled;
+
+// Sets whether QUIC should be supported by CrNet. This method only has any
+// effect before |install| is called.
++ (void)setQuicEnabled:(BOOL)quicEnabled;
+
+// Set the alternate protocol threshold. Servers announce alternate protocols
+// with a probability value; any alternate protocol whose probability value is
+// greater than this value will be used, so |alternateProtocolThreshold| == 0
+// implies any announced alternate protocol will be used, and
+// |alternateProtocolThreshold| == 1 implies no alternate protocol will ever be
+// used. Note that individual alternate protocols must also be individually
+// enabled to be considered; currently the only alternate protocol is QUIC (SPDY
+// is not controlled by this mechanism).
+//
+// For example, imagine your service has two frontends a.service.com and
+// b.service.com, and you would like to divide your users into three classes:
+// Users who use QUIC for both a and b
+// Users who use QUIC for a but not b
+// Users who use QUIC for neither a nor b
+// You can achieve that effect with:
+// a.service.com advertises QUIC with p=0.67
+// b.service.com advertises QUIC with p=0.33
+// alternateProtocolThreshold set to a uniform random number in [0,1]
+// Now equal proportions of users will fall into the three experimental groups.
+//
+// The default for this value is 1.0, i.e. all alternate protocols disabled.
++ (void)setAlternateProtocolThreshold:(double)alternateProtocolThreshold;
+
+// |userAgent| is expected to be of the form Product/Version.
+// Example: Foo/3.0.0.0
+//
+// This method only has any effect before |install| is called.
++ (void)setPartialUserAgent:(NSString *)userAgent;
+
+// Set the block used to determine whether or not CrNet should handle the
+// request. If this is not set, CrNet will handle all requests.
+// Must not be called while requests are in progress. This method can be called
+// either before or after |install|.
++ (void)setRequestFilterBlock:(RequestFilterBlock)block;
+
+// Installs CrNet. Once installed, CrNet intercepts and handles all
+// NSURLConnection and NSURLRequests issued by the app, including UIWebView page
+// loads.
++ (void)install;
+
+// Installs CrNet into an NSURLSession, passed in by the caller. Note that this
+// NSURLSession will share settings with the sharedSession, which the |install|
+// method installs CrNet into. This method must be called after |install|.
++ (void)installIntoSessionConfiguration:(NSURLSessionConfiguration*)config;
+
+// Installs CrNet. This function is a deprecated shortcut for:
+// [CrNet setPartialUserAgent:userAgent];
+// [CrNet install];
+// See the documentation for |setPartialUserAgent| for details about the
+// |userAgent| argument.
++ (void)installWithPartialUserAgent:(NSString *)userAgent
+ __attribute__((deprecated));
+
+// Installs CrNet. This function is a deprecated shortcut for:
+// [CrNet setPartialUserAgent:userAgent];
+// [CrNet install];
+// The |enableDataReductionProxy| argument is ignored since data reduction proxy
+// support is currently missing from CrNet. See |setPartialUserAgent| for
+// details about the |userAgent| argument.
++ (void)installWithPartialUserAgent:(NSString *)userAgent
+ enableDataReductionProxy:(BOOL)enableDataReductionProxy
+ __attribute__((deprecated));
+
+// Installs CrNet. This function is a deprecated shortcut for:
+// [CrNet setPartialUserAgent:userAgent];
+// [CrNet setRequestFilterBlock:block];
+// [CrNet install];
+// See |setPartialUserAgent| and |setRequestFilterBlock| for details about the
+// |userAgent| and |requestFilterBlock| arguments respectively.
++ (void)installWithPartialUserAgent:(NSString *)userAgent
+ withRequestFilterBlock:(RequestFilterBlock)requestFilterBlock
+ __attribute__((deprecated));
+
+// Starts net-internals logging to a file named |fileName| in the application
+// temporary directory. |fileName| must not be empty. Log level is determined
+// by |logBytes| - if YES then LOG_ALL otherwise LOG_ALL_BUT_BYTES. If the file
+// exists it is truncated before starting. If actively logging the call is
+// ignored.
++ (void)startNetLogToFile:(NSString *)fileName logBytes:(BOOL)logBytes;
+
+// Stop net-internals logging and flush file to disk. If a logging session is
+// not in progress this call is ignored.
++ (void)stopNetLog;
+
+// Closes all current SPDY sessions. Do not do this unless you know what
+// you're doing.
+// TODO(alokm): This is a hack. Remove it later.
++ (void)closeAllSpdySessions;
+
+// "Uninstalls" CrNet. This means that CrNet will stop intercepting requests.
+// However, it won't tear down all of the CrNet environment.
++ (void)uninstall;
+
+// Returns the full user-agent that the stack uses.
+// This is the exact string servers will see.
++ (NSString *)userAgent;
+
+// Clears CrNet's http cache. The supplied callback, if not nil, is run on an
+// unspecified thread.
++ (void)clearCacheWithCompletionCallback:(ClearCacheCallback)completionBlock;
+
+@end

Powered by Google App Engine
This is Rietveld 408576698