blob: c0d5d2620a161c020d1ab6e093f68c5f2d9086e5 [file] [log] [blame]
// Copyright 2018 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/chrome/test/fakes/fake_download_manager_tab_helper_delegate.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
using DecidePolicyForDownloadHandler = void (^)(NewDownloadPolicy);
@implementation FakeDownloadManagerTabHelperDelegate {
std::unique_ptr<web::DownloadTask::State> _state;
web::DownloadTask* _decidingPolicyForDownload;
DecidePolicyForDownloadHandler _decidePolicyForDownloadHandler;
}
- (web::DownloadTask::State*)state {
return _state.get();
}
- (web::DownloadTask*)decidingPolicyForDownload {
return _decidingPolicyForDownload;
}
- (BOOL)decidePolicy:(NewDownloadPolicy)policy {
if (!_decidePolicyForDownloadHandler)
return NO;
_decidePolicyForDownloadHandler(policy);
_decidingPolicyForDownload = nil;
_decidePolicyForDownloadHandler = nil;
return YES;
}
- (void)downloadManagerTabHelper:(nonnull DownloadManagerTabHelper*)tabHelper
didCreateDownload:(nonnull web::DownloadTask*)download
webStateIsVisible:(BOOL)webStateIsVisible {
if (webStateIsVisible) {
_state = std::make_unique<web::DownloadTask::State>(download->GetState());
}
}
- (void)downloadManagerTabHelper:(nonnull DownloadManagerTabHelper*)tabHelper
decidePolicyForDownload:(nonnull web::DownloadTask*)download
completionHandler:(nonnull void (^)(NewDownloadPolicy))handler {
_decidingPolicyForDownload = download;
_decidePolicyForDownloadHandler = handler;
}
- (void)downloadManagerTabHelper:(nonnull DownloadManagerTabHelper*)tabHelper
didHideDownload:(nonnull web::DownloadTask*)download {
_state = nullptr;
}
- (void)downloadManagerTabHelper:(nonnull DownloadManagerTabHelper*)tabHelper
didShowDownload:(nonnull web::DownloadTask*)download {
_state = std::make_unique<web::DownloadTask::State>(download->GetState());
}
@end