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

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

Issue 988383002: Upstream various ios/web utilities and helpers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@web-public-upstreaming
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 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 @interface CRWNetworkActivityIndicatorManager () {
14 base::scoped_nsobject<NSMutableDictionary> _groupCounts;
15 NSUInteger _totalCount;
16 base::ThreadChecker _threadChecker;
17 }
18
19 @end
20
21 @implementation CRWNetworkActivityIndicatorManager
22
23 + (CRWNetworkActivityIndicatorManager*)sharedInstance {
24 static CRWNetworkActivityIndicatorManager* instance =
25 [[CRWNetworkActivityIndicatorManager alloc] init];
26 return instance;
27 }
28
29 - (id)init {
Eugene But (OOO till 7-30) 2015/03/09 16:17:42 Optional: s/id/instancetype
30 self = [super init];
31 if (self) {
32 _groupCounts.reset([[NSMutableDictionary alloc] init]);
33 _totalCount = 0;
34 }
35 return self;
36 }
37
38 - (void)startNetworkTaskForGroup:(NSString*)group {
39 [self startNetworkTasks:1 forGroup:group];
40 }
41
42 - (void)stopNetworkTaskForGroup:(NSString*)group {
43 [self stopNetworkTasks:1 forGroup:group];
44 }
45
46 - (void)startNetworkTasks:(NSUInteger)numTasks forGroup:(NSString*)group {
47 DCHECK(_threadChecker.CalledOnValidThread());
48 DCHECK(group);
49 DCHECK_GT(numTasks, 0U);
50 NSUInteger count = 0;
51 NSNumber* number = [_groupCounts objectForKey:group];
52 if (number) {
53 count = [number unsignedIntegerValue];
54 DCHECK_GT(count, 0U);
55 }
56 count += numTasks;
57 [_groupCounts setObject:[NSNumber numberWithUnsignedInteger:count]
Eugene But (OOO till 7-30) 2015/03/09 16:17:42 Optional: @(count)
58 forKey:group];
59 _totalCount += numTasks;
60 if (_totalCount == numTasks) {
61 [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
62 }
63 }
64
65 - (void)stopNetworkTasks:(NSUInteger)numTasks forGroup:(NSString*)group {
66 DCHECK(_threadChecker.CalledOnValidThread());
67 DCHECK(group);
68 DCHECK_GT(numTasks, 0U);
69 NSNumber* number = [_groupCounts objectForKey:group];
70 DCHECK(number);
71 NSUInteger count = [number unsignedIntegerValue];
72 DCHECK(count >= numTasks);
73 count -= numTasks;
74 if (count == 0) {
75 [_groupCounts removeObjectForKey:group];
76 } else {
77 [_groupCounts setObject:[NSNumber numberWithUnsignedInteger:count]
Eugene But (OOO till 7-30) 2015/03/09 16:17:42 Optional: @(count)
78 forKey:group];
79 }
80 _totalCount -= numTasks;
81 if (_totalCount == 0) {
82 [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
83 }
84 }
85
86 - (NSUInteger)clearNetworkTasksForGroup:(NSString*)group {
87 DCHECK(_threadChecker.CalledOnValidThread());
88 DCHECK(group);
89 NSNumber* number = [_groupCounts objectForKey:group];
90 if (!number) {
91 return 0;
92 }
93 NSUInteger count = [number unsignedIntegerValue];
94 DCHECK_GT(count, 0U);
95 [self stopNetworkTasks:count forGroup:group];
96 return count;
97 }
98
99 - (NSUInteger)numNetworkTasksForGroup:(NSString*)group {
100 DCHECK(_threadChecker.CalledOnValidThread());
101 DCHECK(group);
102 NSNumber* number = [_groupCounts objectForKey:group];
103 if (!number) {
104 return 0;
105 }
106 return [number unsignedIntegerValue];
107 }
108
109 - (NSUInteger)numTotalNetworkTasks {
110 DCHECK(_threadChecker.CalledOnValidThread());
111 return _totalCount;
112 }
113
Eugene But (OOO till 7-30) 2015/03/09 16:17:42 Optional: extra endline
114
115 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698