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

Side by Side Diff: ios/web/crw_network_activity_indicator_manager.mm

Issue 2566493003: Remove CRWNetworkActivityIndicatorManager. (Closed)
Patch Set: Remove duplicate file refs. Created 4 years 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
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import "ios/web/crw_network_activity_indicator_manager.h"
6
7 #import <UIKit/UIKit.h>
8
9 #include "base/logging.h"
10 #include "base/mac/scoped_nsobject.h"
11 #include "base/threading/thread_checker.h"
12
13 #if !defined(__has_feature) || !__has_feature(objc_arc)
14 #error "This file requires ARC support."
15 #endif
16
17 @interface CRWNetworkActivityIndicatorManager () {
18 base::scoped_nsobject<NSMutableDictionary> _groupCounts;
19 NSUInteger _totalCount;
20 base::ThreadChecker _threadChecker;
21 }
22
23 @end
24
25 @implementation CRWNetworkActivityIndicatorManager
26
27 + (CRWNetworkActivityIndicatorManager*)sharedInstance {
28 static CRWNetworkActivityIndicatorManager* instance =
29 [[CRWNetworkActivityIndicatorManager alloc] init];
30 return instance;
31 }
32
33 - (instancetype)init {
34 self = [super init];
35 if (self) {
36 _groupCounts.reset([[NSMutableDictionary alloc] init]);
37 _totalCount = 0;
38 }
39 return self;
40 }
41
42 - (void)startNetworkTaskForGroup:(NSString*)group {
43 [self startNetworkTasks:1 forGroup:group];
44 }
45
46 - (void)stopNetworkTaskForGroup:(NSString*)group {
47 [self stopNetworkTasks:1 forGroup:group];
48 }
49
50 - (void)startNetworkTasks:(NSUInteger)numTasks forGroup:(NSString*)group {
51 DCHECK(_threadChecker.CalledOnValidThread());
52 DCHECK(group);
53 DCHECK_GT(numTasks, 0U);
54 NSUInteger count = 0;
55 NSNumber* number = [_groupCounts objectForKey:group];
56 if (number) {
57 count = [number unsignedIntegerValue];
58 DCHECK_GT(count, 0U);
59 }
60 count += numTasks;
61 [_groupCounts setObject:@(count) forKey:group];
62 _totalCount += numTasks;
63 if (_totalCount == numTasks) {
64 [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
65 }
66 }
67
68 - (void)stopNetworkTasks:(NSUInteger)numTasks forGroup:(NSString*)group {
69 DCHECK(_threadChecker.CalledOnValidThread());
70 DCHECK(group);
71 DCHECK_GT(numTasks, 0U);
72 NSNumber* number = [_groupCounts objectForKey:group];
73 DCHECK(number);
74 NSUInteger count = [number unsignedIntegerValue];
75 DCHECK(count >= numTasks);
76 count -= numTasks;
77 if (count == 0) {
78 [_groupCounts removeObjectForKey:group];
79 } else {
80 [_groupCounts setObject:@(count) forKey:group];
81 }
82 _totalCount -= numTasks;
83 if (_totalCount == 0) {
84 [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
85 }
86 }
87
88 - (NSUInteger)clearNetworkTasksForGroup:(NSString*)group {
89 DCHECK(_threadChecker.CalledOnValidThread());
90 DCHECK(group);
91 NSNumber* number = [_groupCounts objectForKey:group];
92 if (!number) {
93 return 0;
94 }
95 NSUInteger count = [number unsignedIntegerValue];
96 DCHECK_GT(count, 0U);
97 [self stopNetworkTasks:count forGroup:group];
98 return count;
99 }
100
101 - (NSUInteger)numNetworkTasksForGroup:(NSString*)group {
102 DCHECK(_threadChecker.CalledOnValidThread());
103 DCHECK(group);
104 NSNumber* number = [_groupCounts objectForKey:group];
105 if (!number) {
106 return 0;
107 }
108 return [number unsignedIntegerValue];
109 }
110
111 - (NSUInteger)numTotalNetworkTasks {
112 DCHECK(_threadChecker.CalledOnValidThread());
113 return _totalCount;
114 }
115
116 @end
OLDNEW
« no previous file with comments | « ios/web/crw_network_activity_indicator_manager.h ('k') | ios/web/crw_network_activity_indicator_manager_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698