Commit d3a95787 authored by michaeldo's avatar michaeldo Committed by Commit bot

Remove CRWNetworkActivityIndicatorManager.

This class was moved to  renamed clone of
ios/chrome/browser/ui/network_activity_indicator_manager.* since
//ios/web should not be managing the system wide network activity
indicator’s UI state.

BUG=620887

Review-Url: https://codereview.chromium.org/2566493003
Cr-Commit-Position: refs/heads/master@{#439148}
parent 87ea0515
......@@ -4,6 +4,17 @@
import("//build/config/ios/rules.gni")
source_set("ui_arc") {
sources = [
"network_activity_indicator_manager.h",
"network_activity_indicator_manager.mm",
]
deps = [
"//base",
]
configs += [ "//build/config/compiler:enable_arc" ]
}
source_set("ui") {
configs += [ "//build/config/compiler:enable_arc" ]
sources = [
......@@ -23,8 +34,6 @@ source_set("ui") {
"image_util.mm",
"native_content_controller.h",
"native_content_controller.mm",
"network_activity_indicator_manager.h",
"network_activity_indicator_manager.mm",
"orientation_limiting_navigation_controller.h",
"orientation_limiting_navigation_controller.mm",
"prerender_final_status.h",
......@@ -55,7 +64,13 @@ source_set("ui") {
"//ui/base",
"//ui/gfx",
]
allow_circular_includes_from = [ "//ios/chrome/browser/ui/commands" ]
public_deps = [
":ui_arc",
]
allow_circular_includes_from = [
":ui_arc",
"//ios/chrome/browser/ui/commands",
]
libs = [
"Accelerate.framework",
"CoreGraphics.framework",
......
......@@ -319,8 +319,6 @@ source_set("core") {
]
sources = [
"crw_network_activity_indicator_manager.h",
"crw_network_activity_indicator_manager.mm",
"history_state_util.cc",
"history_state_util.h",
]
......@@ -509,7 +507,6 @@ test("ios_web_unittests") {
"active_state_manager_impl_unittest.mm",
"alloc_with_zone_interceptor_unittest.mm",
"browser_state_unittest.cc",
"crw_network_activity_indicator_manager_unittest.mm",
"history_state_util_unittest.mm",
"navigation/crw_session_controller_unittest.mm",
"navigation/crw_session_entry_unittest.mm",
......
// 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.
#ifndef IOS_WEB_CRW_NETWORK_ACTIVITY_INDICATOR_MANAGER_H_
#define IOS_WEB_CRW_NETWORK_ACTIVITY_INDICATOR_MANAGER_H_
#import <Foundation/Foundation.h>
// This class controls access to the network activity indicator across the
// app. It provides a simple interface for clients to indicate they are
// starting a network task and they would like the indicator shown, and to
// indicate they have finished a network task.
//
// Clients are required to pass an NSString* to each method to identify
// themselves. Separating clients into groups prevents a client from "stopping"
// requests from other clients on accident, and makes those bugs easier to
// track down. Specifically, the manager will immediately fail if the number
// of tasks stopped for a group ever exceeds the number of tasks started for
// that group. Clients are responsible for namespacing their group strings
// properly. All methods must be called on the UI thread.
@interface CRWNetworkActivityIndicatorManager : NSObject
// Returns the singleton CRWNetworkActivityIndicatorManager.
+ (CRWNetworkActivityIndicatorManager*)sharedInstance;
// Begins a single network task. The network activity indicator is guaranteed
// to be shown after this finishes (if it isn't already). |group| must be
// non-nil.
- (void)startNetworkTaskForGroup:(NSString*)group;
// Stops a single network task. The network activity indicator may or may not
// stop being shown once this finishes, depending on whether there are other
// unstopped tasks or not. |group| must be non-nil, and have at least one
// unstopped task.
- (void)stopNetworkTaskForGroup:(NSString*)group;
// A convenience method for starting multiple network tasks at once. |group|
// must be non-nil. |numTasks| must be greater than 0.
- (void)startNetworkTasks:(NSUInteger)numTasks forGroup:(NSString*)group;
// A convenience method for stopping multiple network tasks at once. |group|
// must be non-nil. |numTasks| must be greater than 0, and |numTasks| must be
// less than or equal to the number of unstopped tasks in |group|.
- (void)stopNetworkTasks:(NSUInteger)numTasks forGroup:(NSString*)group;
// A convenience method for stopping all network tasks for a group. |group|
// must be non-nil. Can be called on any group at any time, regardless of
// whether the group has any unstopped network tasks or not. Returns the number
// of tasks stopped by this call.
- (NSUInteger)clearNetworkTasksForGroup:(NSString*)group;
// Returns the number of unstopped network tasks for |group|. |group| must be
// non-nil. Can be called on any group at any time, regardless of whether the
// group has any unstopped network tasks or not.
- (NSUInteger)numNetworkTasksForGroup:(NSString*)group;
// Returns the total number of unstopped network tasks, across all groups. This
// method was added for testing only. Clients should never depend on this, and
// should instead only be concerned with the number of unstopped network tasks
// for the groups they control, which can be queried using
// |-numNetworkTasksForGroup:|.
- (NSUInteger)numTotalNetworkTasks;
@end
#endif // IOS_WEB_CRW_NETWORK_ACTIVITY_INDICATOR_MANAGER_H_
// 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/web/crw_network_activity_indicator_manager.h"
#import <UIKit/UIKit.h>
#include "base/logging.h"
#include "base/mac/scoped_nsobject.h"
#include "base/threading/thread_checker.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
@interface CRWNetworkActivityIndicatorManager () {
base::scoped_nsobject<NSMutableDictionary> _groupCounts;
NSUInteger _totalCount;
base::ThreadChecker _threadChecker;
}
@end
@implementation CRWNetworkActivityIndicatorManager
+ (CRWNetworkActivityIndicatorManager*)sharedInstance {
static CRWNetworkActivityIndicatorManager* instance =
[[CRWNetworkActivityIndicatorManager alloc] init];
return instance;
}
- (instancetype)init {
self = [super init];
if (self) {
_groupCounts.reset([[NSMutableDictionary alloc] init]);
_totalCount = 0;
}
return self;
}
- (void)startNetworkTaskForGroup:(NSString*)group {
[self startNetworkTasks:1 forGroup:group];
}
- (void)stopNetworkTaskForGroup:(NSString*)group {
[self stopNetworkTasks:1 forGroup:group];
}
- (void)startNetworkTasks:(NSUInteger)numTasks forGroup:(NSString*)group {
DCHECK(_threadChecker.CalledOnValidThread());
DCHECK(group);
DCHECK_GT(numTasks, 0U);
NSUInteger count = 0;
NSNumber* number = [_groupCounts objectForKey:group];
if (number) {
count = [number unsignedIntegerValue];
DCHECK_GT(count, 0U);
}
count += numTasks;
[_groupCounts setObject:@(count) forKey:group];
_totalCount += numTasks;
if (_totalCount == numTasks) {
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
}
}
- (void)stopNetworkTasks:(NSUInteger)numTasks forGroup:(NSString*)group {
DCHECK(_threadChecker.CalledOnValidThread());
DCHECK(group);
DCHECK_GT(numTasks, 0U);
NSNumber* number = [_groupCounts objectForKey:group];
DCHECK(number);
NSUInteger count = [number unsignedIntegerValue];
DCHECK(count >= numTasks);
count -= numTasks;
if (count == 0) {
[_groupCounts removeObjectForKey:group];
} else {
[_groupCounts setObject:@(count) forKey:group];
}
_totalCount -= numTasks;
if (_totalCount == 0) {
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
}
}
- (NSUInteger)clearNetworkTasksForGroup:(NSString*)group {
DCHECK(_threadChecker.CalledOnValidThread());
DCHECK(group);
NSNumber* number = [_groupCounts objectForKey:group];
if (!number) {
return 0;
}
NSUInteger count = [number unsignedIntegerValue];
DCHECK_GT(count, 0U);
[self stopNetworkTasks:count forGroup:group];
return count;
}
- (NSUInteger)numNetworkTasksForGroup:(NSString*)group {
DCHECK(_threadChecker.CalledOnValidThread());
DCHECK(group);
NSNumber* number = [_groupCounts objectForKey:group];
if (!number) {
return 0;
}
return [number unsignedIntegerValue];
}
- (NSUInteger)numTotalNetworkTasks {
DCHECK(_threadChecker.CalledOnValidThread());
return _totalCount;
}
@end
// 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/web/crw_network_activity_indicator_manager.h"
#import <UIKit/UIKit.h>
#include "base/mac/scoped_nsobject.h"
#include "testing/gtest_mac.h"
#include "testing/platform_test.h"
namespace {
NSString* const kNetworkActivityKeyOne =
@"CRWNetworkActivityIndicatorManagerTest.NetworkActivityIndicatorKeyOne";
NSString* const kNetworkActivityKeyTwo =
@"CRWNetworkActivityIndicatorManagerTest.NetworkActivityIndicatorKeyTwo";
class CRWNetworkActivityIndicatorManagerTest : public PlatformTest {
public:
CRWNetworkActivityIndicatorManagerTest()
: manager_([[CRWNetworkActivityIndicatorManager alloc] init]) {}
protected:
void ExpectNetworkActivity(NSUInteger groupOneCount,
NSUInteger groupTwoCount) {
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyOne],
groupOneCount);
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyTwo],
groupTwoCount);
EXPECT_EQ([manager_ numTotalNetworkTasks], groupOneCount + groupTwoCount);
if (groupOneCount + groupTwoCount > 0U) {
EXPECT_TRUE(
[[UIApplication sharedApplication]
isNetworkActivityIndicatorVisible]);
} else {
EXPECT_FALSE(
[[UIApplication sharedApplication]
isNetworkActivityIndicatorVisible]);
}
}
base::scoped_nsobject<CRWNetworkActivityIndicatorManager> manager_;
};
TEST_F(CRWNetworkActivityIndicatorManagerTest, TestNumNetworkTasksForGroup) {
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyOne], 0U);
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyTwo], 0U);
[manager_ startNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyOne], 2U);
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyTwo], 0U);
[manager_ startNetworkTasks:3U forGroup:kNetworkActivityKeyTwo];
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyOne], 2U);
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyTwo], 3U);
[manager_ stopNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyOne], 0U);
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyTwo], 3U);
[manager_ stopNetworkTasks:3U forGroup:kNetworkActivityKeyTwo];
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyOne], 0U);
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyTwo], 0U);
}
TEST_F(CRWNetworkActivityIndicatorManagerTest, TestNumTotalNetworkTasks) {
EXPECT_EQ([manager_ numTotalNetworkTasks], 0U);
[manager_ startNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
EXPECT_EQ([manager_ numTotalNetworkTasks], 2U);
[manager_ startNetworkTasks:3U forGroup:kNetworkActivityKeyTwo];
EXPECT_EQ([manager_ numTotalNetworkTasks], 5U);
[manager_ stopNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
EXPECT_EQ([manager_ numTotalNetworkTasks], 3U);
[manager_ stopNetworkTasks:3U forGroup:kNetworkActivityKeyTwo];
EXPECT_EQ([manager_ numTotalNetworkTasks], 0U);
}
TEST_F(CRWNetworkActivityIndicatorManagerTest,
StartStopNetworkTaskForOneGroup) {
ExpectNetworkActivity(0U, 0U);
[manager_ startNetworkTaskForGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(1U, 0U);
[manager_ stopNetworkTaskForGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(0U, 0U);
}
TEST_F(CRWNetworkActivityIndicatorManagerTest,
StartStopNetworkTaskForTwoGroups) {
ExpectNetworkActivity(0U, 0U);
[manager_ startNetworkTaskForGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(1U, 0U);
[manager_ startNetworkTaskForGroup:kNetworkActivityKeyTwo];
ExpectNetworkActivity(1U, 1U);
[manager_ stopNetworkTaskForGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(0U, 1U);
[manager_ stopNetworkTaskForGroup:kNetworkActivityKeyTwo];
ExpectNetworkActivity(0U, 0U);
}
TEST_F(CRWNetworkActivityIndicatorManagerTest,
StartStopNetworkTasksForOneGroup) {
ExpectNetworkActivity(0U, 0U);
[manager_ startNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(2U, 0U);
[manager_ stopNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(0U, 0U);
}
TEST_F(CRWNetworkActivityIndicatorManagerTest,
StartStopNetworkTasksForTwoGroups) {
ExpectNetworkActivity(0U, 0U);
[manager_ startNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(2U, 0U);
[manager_ startNetworkTasks:3U forGroup:kNetworkActivityKeyTwo];
ExpectNetworkActivity(2U, 3U);
[manager_ stopNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(0U, 3U);
[manager_ stopNetworkTasks:3U forGroup:kNetworkActivityKeyTwo];
ExpectNetworkActivity(0U, 0U);
}
TEST_F(CRWNetworkActivityIndicatorManagerTest, ClearNetworkTasksForGroup) {
ExpectNetworkActivity(0U, 0U);
[manager_ startNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(2U, 0U);
[manager_ clearNetworkTasksForGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(0U, 0U);
}
TEST_F(CRWNetworkActivityIndicatorManagerTest,
ClearNetworkTasksForUnusedGroup) {
ExpectNetworkActivity(0U, 0U);
[manager_ clearNetworkTasksForGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(0U, 0U);
}
TEST_F(CRWNetworkActivityIndicatorManagerTest, StartStopNetworkTasksInChunks) {
ExpectNetworkActivity(0U, 0U);
[manager_ startNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(2U, 0U);
[manager_ startNetworkTasks:3U forGroup:kNetworkActivityKeyTwo];
ExpectNetworkActivity(2U, 3U);
[manager_ startNetworkTasks:7U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(9U, 3U);
[manager_ startNetworkTaskForGroup:kNetworkActivityKeyTwo];
ExpectNetworkActivity(9U, 4U);
[manager_ stopNetworkTasks:4U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(5U, 4U);
[manager_ stopNetworkTasks:2U forGroup:kNetworkActivityKeyTwo];
ExpectNetworkActivity(5U, 2U);
[manager_ stopNetworkTasks:5U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(0U, 2U);
[manager_ clearNetworkTasksForGroup:kNetworkActivityKeyTwo];
ExpectNetworkActivity(0U, 0U);
}
} // namespace
......@@ -329,10 +329,6 @@ class RequestTrackerImpl
// only from the IO thread.
NSString* UnsafeDescription();
// Generates a string unique to this RequestTrackerImpl to use with the
// CRWNetworkActivityIndicatorManager.
NSString* GetNetworkActivityKey();
#pragma mark Non thread-safe fields, only accessed from the main thread.
// The RequestTrackerImpl delegate. All changes and access to this object
// should be done on the main thread.
......
......@@ -20,7 +20,6 @@
#include "base/synchronization/lock.h"
#import "ios/net/clients/crn_forwarding_network_client.h"
#import "ios/net/clients/crn_forwarding_network_client_factory.h"
#import "ios/web/crw_network_activity_indicator_manager.h"
#import "ios/web/history_state_util.h"
#import "ios/web/net/crw_request_tracker_delegate.h"
#include "ios/web/public/browser_state.h"
......@@ -480,16 +479,6 @@ void RequestTrackerImpl::StartRequest(net::URLRequest* request) {
DCHECK(!counts_by_request_.count(request));
DCHECK_EQ(is_for_static_file_requests_, request->url().SchemeIsFile());
bool addedRequest = live_requests_.insert(request).second;
if (!is_for_static_file_requests_ && addedRequest) {
NSString* networkActivityKey = GetNetworkActivityKey();
web::WebThread::PostTask(
web::WebThread::UI, FROM_HERE, base::BindBlockArc(^{
[[CRWNetworkActivityIndicatorManager sharedInstance]
startNetworkTaskForGroup:networkActivityKey];
}));
}
if (new_estimate_round_) {
// Starting a new estimate round. Ignore the previous requests for the
// calculation.
......@@ -560,16 +549,6 @@ void RequestTrackerImpl::CaptureReceivedBytes(const net::URLRequest* request,
void RequestTrackerImpl::StopRequest(net::URLRequest* request) {
DCHECK_CURRENTLY_ON(web::WebThread::IO);
int removedRequests = live_requests_.erase(request);
if (!is_for_static_file_requests_ && removedRequests > 0) {
NSString* networkActivityKey = GetNetworkActivityKey();
web::WebThread::PostTask(
web::WebThread::UI, FROM_HERE, base::BindBlockArc(^{
[[CRWNetworkActivityIndicatorManager sharedInstance]
stopNetworkTaskForGroup:networkActivityKey];
}));
}
if (counts_by_request_.count(request)) {
StopRedirectedRequest(request);
Notify();
......@@ -579,16 +558,6 @@ void RequestTrackerImpl::StopRequest(net::URLRequest* request) {
void RequestTrackerImpl::StopRedirectedRequest(net::URLRequest* request) {
DCHECK_CURRENTLY_ON(web::WebThread::IO);
int removedRequests = live_requests_.erase(request);
if (!is_for_static_file_requests_ && removedRequests > 0) {
NSString* networkActivityKey = GetNetworkActivityKey();
web::WebThread::PostTask(
web::WebThread::UI, FROM_HERE, base::BindBlockArc(^{
[[CRWNetworkActivityIndicatorManager sharedInstance]
stopNetworkTaskForGroup:networkActivityKey];
}));
}
if (counts_by_request_.count(request)) {
TrackerCounts* counts = counts_by_request_[request];
DCHECK(!counts->done);
......@@ -1274,12 +1243,6 @@ NSString* RequestTrackerImpl::UnsafeDescription() {
[urls componentsJoinedByString:@"\n"]];
}
NSString* RequestTrackerImpl::GetNetworkActivityKey() {
return [NSString
stringWithFormat:@"RequestTrackerImpl.NetworkActivityIndicatorKey.%@",
request_group_id_.get()];
}
void RequestTrackerImpl::CancelRequests() {
DCHECK_CURRENTLY_ON(web::WebThread::IO);
std::set<net::URLRequest*>::iterator it;
......@@ -1292,16 +1255,7 @@ void RequestTrackerImpl::CancelRequests() {
for (it = live_requests_.begin(); it != live_requests_.end(); ++it)
(*it)->Cancel();
int removedRequests = live_requests_.size();
live_requests_.clear();
if (!is_for_static_file_requests_ && removedRequests > 0) {
NSString* networkActivityKey = GetNetworkActivityKey();
web::WebThread::PostTask(
web::WebThread::UI, FROM_HERE, base::BindBlockArc(^{
[[CRWNetworkActivityIndicatorManager sharedInstance]
clearNetworkTasksForGroup:networkActivityKey];
}));
}
}
void RequestTrackerImpl::SetCertificatePolicyCacheForTest(
......
......@@ -10,7 +10,6 @@
#include "base/macros.h"
#include "base/metrics/histogram.h"
#include "base/strings/sys_string_conversions.h"
#import "ios/web/crw_network_activity_indicator_manager.h"
#include "net/http/http_response_headers.h"
#include "net/url_request/url_fetcher.h"
#include "net/url_request/url_fetcher_delegate.h"
......@@ -54,9 +53,6 @@ enum DownloadPassKitResult {
// NSData and passes the result to |_completionHandler|.
- (void)didFinishDownload;
// Returns key for CRWNetworkActivityIndicatorManager.
- (NSString*)networkActivityKey;
// Reports Download.IOSDownloadPassKitResult UMA metric.
- (void)reportUMAPassKitResult:(DownloadPassKitResult)result;
......@@ -64,9 +60,6 @@ enum DownloadPassKitResult {
namespace {
// Unique ID for CRWNetworkActivityIndicatorManager.
int g_pass_kit_downloader_class_id = 0;
// A delegate for the URLFetcher to tell the CRWPassKitDownloader that the
// download is complete.
class PassKitFetcherDelegate : public URLFetcherDelegate {
......@@ -98,9 +91,6 @@ class PassKitFetcherDelegate : public URLFetcherDelegate {
// Context getter which is passed to the URLFetcher, as required by
// URLFetcher API.
scoped_refptr<URLRequestContextGetter> _requestContextGetter;
// Network activity ID for this instance of CRWPassKitDownloader.
int _passKitDownloaderID;
}
#pragma mark - Public Methods
......@@ -114,7 +104,6 @@ class PassKitFetcherDelegate : public URLFetcherDelegate {
_completionHandler.reset([handler copy]);
_fetcherDelegate.reset(new PassKitFetcherDelegate(self));
_requestContextGetter = getter;
_passKitDownloaderID = g_pass_kit_downloader_class_id++;
}
return self;
}
......@@ -124,11 +113,6 @@ class PassKitFetcherDelegate : public URLFetcherDelegate {
return nil;
}
- (void)dealloc {
[[CRWNetworkActivityIndicatorManager sharedInstance]
clearNetworkTasksForGroup:[self networkActivityKey]];
}
- (BOOL)isMIMETypePassKitType:(NSString*)MIMEType {
return [MIMEType isEqualToString:@"application/vnd.apple.pkpass"];
}
......@@ -136,30 +120,16 @@ class PassKitFetcherDelegate : public URLFetcherDelegate {
- (void)downloadPassKitFileWithURL:(const GURL&)URL {
_fetcher = URLFetcher::Create(URL, URLFetcher::GET, _fetcherDelegate.get());
_fetcher->SetRequestContext(_requestContextGetter.get());
CRWNetworkActivityIndicatorManager* sharedManager =
[CRWNetworkActivityIndicatorManager sharedInstance];
// Verifies that there are not any network tasks associated with this instance
// before starting another task, so that this method is idempotent.
if (![sharedManager numNetworkTasksForGroup:[self networkActivityKey]])
[sharedManager startNetworkTaskForGroup:[self networkActivityKey]];
_fetcher->Start();
}
- (void)cancelPendingDownload {
_fetcher.reset();
CRWNetworkActivityIndicatorManager* sharedManager =
[CRWNetworkActivityIndicatorManager sharedInstance];
// Verifies that there is a network task associated with this instance
// before stopping a task, so that this method is idempotent.
if ([sharedManager numNetworkTasksForGroup:[self networkActivityKey]])
[sharedManager stopNetworkTaskForGroup:[self networkActivityKey]];
}
#pragma mark - Private Methods
- (void)didFinishDownload {
[[CRWNetworkActivityIndicatorManager sharedInstance]
stopNetworkTaskForGroup:[self networkActivityKey]];
int responseCode = _fetcher->GetResponseCode();
std::string response;
// If the download failed, pass nil to |_completionHandler| and log which
......@@ -191,12 +161,6 @@ class PassKitFetcherDelegate : public URLFetcherDelegate {
_completionHandler.get()(data);
}
- (NSString*)networkActivityKey {
return [NSString
stringWithFormat:@"PassKitDownloader.NetworkActivityIndicatorKey.%d",
_passKitDownloaderID];
}
- (void)reportUMAPassKitResult:(DownloadPassKitResult)result {
UMA_HISTOGRAM_ENUMERATION(kUMADownloadPassKitResult, result,
DOWNLOAD_PASS_KIT_RESULT_COUNT);
......
......@@ -80,9 +80,6 @@ TEST_F(CRWPassKitDownloaderTest, TestDownloadPassKitSuccess) {
GURL test_url(kTestUrlString);
[downloader_ downloadPassKitFileWithURL:test_url];
UIApplication* shared_app = [UIApplication sharedApplication];
EXPECT_TRUE([shared_app isNetworkActivityIndicatorVisible]);
net::TestURLFetcher* fetcher = fetcher_factory_->GetFetcherByID(0);
ASSERT_TRUE(fetcher);
ASSERT_EQ(test_url, fetcher->GetOriginalURL());
......@@ -90,7 +87,6 @@ TEST_F(CRWPassKitDownloaderTest, TestDownloadPassKitSuccess) {
fetcher->SetResponseString(kExpectedString);
fetcher->delegate()->OnURLFetchComplete(fetcher);
EXPECT_FALSE([shared_app isNetworkActivityIndicatorVisible]);
EXPECT_TRUE(completion_handler_success_);
}
......@@ -100,9 +96,6 @@ TEST_F(CRWPassKitDownloaderTest, TestDownloadPassKitBadErrorCodeFailure) {
GURL test_url(kTestUrlString);
[downloader_ downloadPassKitFileWithURL:test_url];
UIApplication* shared_app = [UIApplication sharedApplication];
EXPECT_TRUE([shared_app isNetworkActivityIndicatorVisible]);
net::TestURLFetcher* fetcher = fetcher_factory_->GetFetcherByID(0);
ASSERT_TRUE(fetcher);
ASSERT_EQ(test_url, fetcher->GetOriginalURL());
......@@ -110,7 +103,6 @@ TEST_F(CRWPassKitDownloaderTest, TestDownloadPassKitBadErrorCodeFailure) {
fetcher->SetResponseString(kExpectedString);
fetcher->delegate()->OnURLFetchComplete(fetcher);
EXPECT_FALSE([shared_app isNetworkActivityIndicatorVisible]);
EXPECT_FALSE(completion_handler_success_);
}
......@@ -120,9 +112,6 @@ TEST_F(CRWPassKitDownloaderTest, TestDownloadPassKitStatusFailedFailure) {
GURL test_url(kTestUrlString);
[downloader_ downloadPassKitFileWithURL:test_url];
UIApplication* shared_app = [UIApplication sharedApplication];
EXPECT_TRUE([shared_app isNetworkActivityIndicatorVisible]);
net::TestURLFetcher* fetcher = fetcher_factory_->GetFetcherByID(0);
ASSERT_TRUE(fetcher);
ASSERT_EQ(test_url, fetcher->GetOriginalURL());
......@@ -131,7 +120,6 @@ TEST_F(CRWPassKitDownloaderTest, TestDownloadPassKitStatusFailedFailure) {
fetcher->SetResponseString(kExpectedString);
fetcher->delegate()->OnURLFetchComplete(fetcher);
EXPECT_FALSE([shared_app isNetworkActivityIndicatorVisible]);
EXPECT_FALSE(completion_handler_success_);
}
......@@ -141,16 +129,12 @@ TEST_F(CRWPassKitDownloaderTest, TestDownloadPassKitNoResponseFailure) {
GURL test_url(kTestUrlString);
[downloader_ downloadPassKitFileWithURL:test_url];
UIApplication* shared_app = [UIApplication sharedApplication];
EXPECT_TRUE([shared_app isNetworkActivityIndicatorVisible]);
net::TestURLFetcher* fetcher = fetcher_factory_->GetFetcherByID(0);
ASSERT_TRUE(fetcher);
ASSERT_EQ(test_url, fetcher->GetOriginalURL());
SetUpFetcher(fetcher, URLRequestStatus(), 200, kPassKitMimeType);
fetcher->delegate()->OnURLFetchComplete(fetcher);
EXPECT_FALSE([shared_app isNetworkActivityIndicatorVisible]);
EXPECT_FALSE(completion_handler_success_);
}
......
......@@ -39,7 +39,6 @@
#include "components/url_formatter/url_formatter.h"
#import "ios/net/http_response_headers_util.h"
#import "ios/net/nsurlrequest_util.h"
#import "ios/web/crw_network_activity_indicator_manager.h"
#import "ios/web/history_state_util.h"
#include "ios/web/interstitials/web_interstitial_impl.h"
#import "ios/web/navigation/crw_session_certificate_policy_manager.h"
......@@ -490,8 +489,6 @@ NSError* WKWebViewErrorWithSource(NSError* error, WKWebViewErrorSource source) {
@property(nonatomic, readwrite) id<CRWNativeContent> nativeController;
// Returns NavigationManager's session controller.
@property(nonatomic, readonly) CRWSessionController* sessionController;
// Activity indicator group ID for this web controller.
@property(nonatomic, readonly) NSString* activityIndicatorGroupID;
// Dictionary where keys are the names of WKWebView properties and values are
// selector names which should be called when a corresponding property has
// changed. e.g. @{ @"URL" : @"webViewURLDidChange" } means that
......@@ -542,10 +539,6 @@ NSError* WKWebViewErrorWithSource(NSError* error, WKWebViewErrorSource source) {
- (void)clearTransientContentView;
// Returns a lazily created CRWTouchTrackingRecognizer.
- (CRWTouchTrackingRecognizer*)touchTrackingRecognizer;
// Adds an activity indicator tasks for this web controller.
- (void)addActivityIndicatorTask;
// Clears all activity indicator tasks for this web controller.
- (void)clearActivityIndicatorTasks;
// Shows placeholder overlay.
- (void)addPlaceholderOverlay;
// Removes placeholder overlay.
......@@ -1174,12 +1167,6 @@ const NSTimeInterval kSnapshotOverlayTransition = 0.5;
[self setNativeControllerWebUsageEnabled:_webUsageEnabled];
}
- (NSString*)activityIndicatorGroupID {
return [NSString
stringWithFormat:@"WebController.NetworkActivityIndicatorKey.%@",
self.webStateImpl->GetRequestGroupID()];
}
- (NSDictionary*)WKWebViewObservers {
return @{
@"certificateChain" : @"webViewSecurityFeaturesDidChange",
......@@ -3943,16 +3930,6 @@ const NSTimeInterval kSnapshotOverlayTransition = 0.5;
kMaximumDelayForUserInteractionInSeconds);
}
- (void)addActivityIndicatorTask {
[[CRWNetworkActivityIndicatorManager sharedInstance]
startNetworkTaskForGroup:[self activityIndicatorGroupID]];
}
- (void)clearActivityIndicatorTasks {
[[CRWNetworkActivityIndicatorManager sharedInstance]
clearNetworkTasksForGroup:[self activityIndicatorGroupID]];
}
#pragma mark Placeholder Overlay Methods
- (void)addPlaceholderOverlay {
......@@ -4784,7 +4761,6 @@ const NSTimeInterval kSnapshotOverlayTransition = 0.5;
for (NSString* keyPath in self.WKWebViewObservers) {
[_webView removeObserver:self forKeyPath:keyPath];
}
[self clearActivityIndicatorTasks];
_webView.reset([webView retain]);
......@@ -5433,13 +5409,7 @@ const NSTimeInterval kSnapshotOverlayTransition = 0.5;
}
- (void)webViewLoadingStateDidChange {
if ([_webView isLoading]) {
[self addActivityIndicatorTask];
return;
}
[self clearActivityIndicatorTasks];
if (![self isCurrentNavigationBackForward]) {
if ([_webView isLoading] || ![self isCurrentNavigationBackForward]) {
return;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment