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

Unified Diff: ios/net/clients/crn_forwarding_network_client_factory.mm

Issue 994823004: [iOS] Upstream //ios/net (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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/net/clients/crn_forwarding_network_client_factory.mm
diff --git a/ios/net/clients/crn_forwarding_network_client_factory.mm b/ios/net/clients/crn_forwarding_network_client_factory.mm
new file mode 100644
index 0000000000000000000000000000000000000000..f2c16d3863ad3f4632660766dadc05a50e50bdcd
--- /dev/null
+++ b/ios/net/clients/crn_forwarding_network_client_factory.mm
@@ -0,0 +1,102 @@
+// 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/net/clients/crn_forwarding_network_client_factory.h"
+
+#include "base/mac/scoped_nsobject.h"
+#include "base/memory/weak_ptr.h"
+#import "ios/net/clients/crn_forwarding_network_client.h"
+
+@implementation CRNForwardingNetworkClientFactory
+
+// Init just sanity checks that the factory class has sane ordering rules.
+- (instancetype)init {
+ if ((self = [super init])) {
+ // Type checks.
+ DCHECK(![[self class] mustApplyBefore] ||
+ [[[self class] mustApplyBefore]
+ isSubclassOfClass:[CRNForwardingNetworkClientFactory class]]);
+ DCHECK(![[self class] mustApplyAfter] ||
+ [[[self class] mustApplyAfter]
+ isSubclassOfClass:[CRNForwardingNetworkClientFactory class]]);
+ // Order check.
+ DCHECK([[self class] orderedOK]);
+ }
+ return self;
+}
+
+- (CRNForwardingNetworkClient*)clientHandlingAnyRequest {
+ return nil;
+}
+
+- (CRNForwardingNetworkClient*)
+ clientHandlingRequest:(const net::URLRequest&)request {
+ return nil;
+}
+
+- (CRNForwardingNetworkClient*)
+ clientHandlingResponse:(NSURLResponse*)response
+ request:(const net::URLRequest&)request {
+ return nil;
+}
+
+- (CRNForwardingNetworkClient*)
+ clientHandlingRedirect:(const net::URLRequest&)request
+ url:(const GURL&)url
+ response:(NSURLResponse*)response {
+ return nil;
+}
+
+- (Class)clientClass {
+ return nil;
+}
+
++ (Class)mustApplyBefore {
+ return nil;
+}
+
++ (Class)mustApplyAfter {
+ return nil;
+}
+
+- (BOOL)requiresOrdering {
+ return [[self class] mustApplyAfter] || [[self class] mustApplyBefore];
+}
+
+// Verify that the ordering is sensible. If the calling class encounters itself
+// walking dependencies in either direction, it's broken. If any of the classes
+// it must appear after are also classes it must appear before, it's broken.
++ (BOOL)orderedOK {
+ Class precursor = [self class];
+ NSMutableArray* precursors = [NSMutableArray array];
+ while ((precursor = [precursor mustApplyAfter])) {
+ if (precursor == [self class])
+ return NO;
+ [precursors addObject:precursor];
+ }
+ id successor = [self class];
+ while ((successor = [successor mustApplyBefore])) {
+ if (successor == [self class])
+ return NO;
+ if ([precursors indexOfObject:successor] != NSNotFound)
+ return NO;
+ }
+ return YES;
+}
+
+- (NSComparisonResult)
+ orderRelativeTo:(CRNForwardingNetworkClientFactory*)factory {
+ NSComparisonResult result = NSOrderedSame;
+ if ([[self class] mustApplyBefore] == [factory class] ||
+ [[factory class] mustApplyAfter] == [self class]) {
+ result = NSOrderedAscending;
+ }
+ if ([[self class] mustApplyAfter] == [factory class] ||
+ [[factory class] mustApplyBefore] == [self class]) {
+ result = NSOrderedDescending;
+ }
+ return result;
+}
+
+@end

Powered by Google App Engine
This is Rietveld 408576698