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

Unified Diff: ios/chrome/browser/ui/downloads/download_manager_controller.mm

Issue 2835643002: [ObjC ARC] Converts ios/chrome/browser/ui/downloads:downloads to ARC. (Closed)
Patch Set: Fix weaks Created 3 years, 8 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
« no previous file with comments | « ios/chrome/browser/ui/downloads/BUILD.gn ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/chrome/browser/ui/downloads/download_manager_controller.mm
diff --git a/ios/chrome/browser/ui/downloads/download_manager_controller.mm b/ios/chrome/browser/ui/downloads/download_manager_controller.mm
index 4aacf6fe6ff80063b4696038a9283363f4239b1e..537364df6bbd53a4b5b167d38b99a552231b603a 100644
--- a/ios/chrome/browser/ui/downloads/download_manager_controller.mm
+++ b/ios/chrome/browser/ui/downloads/download_manager_controller.mm
@@ -9,11 +9,9 @@
#include "base/files/file_path.h"
#include "base/files/file_util.h"
-#include "base/ios/weak_nsobject.h"
#include "base/location.h"
#include "base/mac/bind_objc_block.h"
-#include "base/mac/objc_property_releaser.h"
-#include "base/mac/scoped_nsobject.h"
+
#include "base/memory/ref_counted.h"
#include "base/metrics/histogram_macros.h"
#include "base/metrics/user_metrics.h"
@@ -50,6 +48,10 @@
#include "ui/base/l10n/l10n_util_mac.h"
#import "ui/gfx/ios/uikit_util.h"
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
using base::UserMetricsAction;
using net::HttpResponseHeaders;
using net::URLFetcher;
@@ -331,7 +333,7 @@ class DownloadHeadDelegate : public URLFetcherDelegate {
};
private:
- DownloadManagerController* owner_; // weak.
+ __weak DownloadManagerController* owner_;
DISALLOW_COPY_AND_ASSIGN(DownloadHeadDelegate);
};
@@ -352,7 +354,7 @@ class DownloadContentDelegate : public URLFetcherDelegate {
};
private:
- DownloadManagerController* owner_; // weak.
+ __weak DownloadManagerController* owner_;
DISALLOW_COPY_AND_ASSIGN(DownloadContentDelegate);
};
@@ -363,7 +365,7 @@ class DownloadContentDelegate : public URLFetcherDelegate {
// Coordinator for displaying the alert informing the user that no application
// on the device can open the file.
- base::scoped_nsobject<AlertCoordinator> _alertCoordinator;
+ AlertCoordinator* _alertCoordinator;
// The size of the file to be downloaded, as determined by the Content-Length
// header field in the initial HEAD request. This is set to |kNoFileSizeGiven|
@@ -382,103 +384,102 @@ class DownloadContentDelegate : public URLFetcherDelegate {
std::unique_ptr<DownloadHeadDelegate> _headFetcherDelegate;
std::unique_ptr<DownloadContentDelegate> _contentFetcherDelegate;
base::FilePath _downloadFilePath;
- base::scoped_nsobject<MDCActivityIndicator> _activityIndicator;
+ MDCActivityIndicator* _activityIndicator;
// Set to YES when a download begins and is used to determine if the
// DownloadFileResult histogram needs to be recorded on -dealloc.
BOOL _recordDownloadResultHistogram;
// Set to YES when a file is downloaded and is used to determine if the
// DownloadedFileAction histogram needs to be recorded on -dealloc.
BOOL _recordFileActionHistogram;
- base::mac::ObjCPropertyReleaser _propertyReleaser_DownloadManagerController;
}
// The container that holds the |documentIcon|, the |progressBar|, the
// |foldIcon|, the |fileTypeLabel|, and the |timeLeftLabel|.
-@property(nonatomic, retain) IBOutlet UIView* documentContainer;
+@property(nonatomic, strong) IBOutlet UIView* documentContainer;
// The progress bar that displays download progress.
-@property(nonatomic, retain) IBOutlet UIView* progressBar;
+@property(nonatomic, strong) IBOutlet UIView* progressBar;
// The image of the document.
-@property(nonatomic, retain) IBOutlet UIImageView* documentIcon;
+@property(nonatomic, strong) IBOutlet UIImageView* documentIcon;
// The image of the document fold.
-@property(nonatomic, retain) IBOutlet UIImageView* foldIcon;
+@property(nonatomic, strong) IBOutlet UIImageView* foldIcon;
// The error image displayed inside the document.
-@property(nonatomic, retain) IBOutlet UIImageView* errorIcon;
+@property(nonatomic, strong) IBOutlet UIImageView* errorIcon;
// The label that displays the file type of the file to be downloaded.
-@property(nonatomic, retain) IBOutlet UILabel* fileTypeLabel;
+@property(nonatomic, strong) IBOutlet UILabel* fileTypeLabel;
// The label that displays the estimate of how much time is still needed to
// finish the file download.
-@property(nonatomic, retain) IBOutlet UILabel* timeLeftLabel;
+@property(nonatomic, strong) IBOutlet UILabel* timeLeftLabel;
// The label that displays the name of the file to be downloaded, as it will
// be saved on the user's device.
-@property(nonatomic, retain) IBOutlet UILabel* fileNameLabel;
+@property(nonatomic, strong) IBOutlet UILabel* fileNameLabel;
// The label that displays the size of the file to be downloaded or the error
// message.
-@property(nonatomic, retain) IBOutlet UILabel* errorOrSizeLabel;
+@property(nonatomic, strong) IBOutlet UILabel* errorOrSizeLabel;
// The label that displays error messages when errors occur.
-@property(nonatomic, retain) IBOutlet UILabel* errorLabel;
+@property(nonatomic, strong) IBOutlet UILabel* errorLabel;
// The container that holds the |downloadButton|, |cancelButton|,
// |openInButton|, and |googleDriveButton|.
-@property(nonatomic, retain) IBOutlet UIView* actionBar;
+@property(nonatomic, strong) IBOutlet UIView* actionBar;
// View that appears at the top of the action bar and acts as a border.
-@property(nonatomic, retain) IBOutlet UIView* actionBarBorder;
+@property(nonatomic, strong) IBOutlet UIView* actionBarBorder;
// The button which starts the file download.
-@property(nonatomic, retain) IBOutlet MDCButton* downloadButton;
+@property(nonatomic, strong) IBOutlet MDCButton* downloadButton;
// The button which switches with the |downloadButton| during a download.
// Pressing it cancels the download.
-@property(nonatomic, retain) IBOutlet MDCButton* cancelButton;
+@property(nonatomic, strong) IBOutlet MDCButton* cancelButton;
// The button that switches with the |cancelButton| when a file download
// completes. Pressing it opens the UIDocumentInteractionController, letting
// the user select another app in which to open the downloaded file.
-@property(nonatomic, retain) IBOutlet MDCButton* openInButton;
+@property(nonatomic, strong) IBOutlet MDCButton* openInButton;
// The button that opens a view controller to allow the user to install
// Google Drive.
-@property(nonatomic, retain) IBOutlet MDCButton* googleDriveButton;
+@property(nonatomic, strong) IBOutlet MDCButton* googleDriveButton;
// The controller that displays the list of other apps that the downloaded file
// can be opened in.
-@property(nonatomic, retain)
+@property(nonatomic, strong)
UIDocumentInteractionController* docInteractionController;
// Contains all the constraints that should be applied only in portrait mode.
-@property(nonatomic, retain) NSArray* portraitConstraintsArray;
+@property(nonatomic, strong) NSArray* portraitConstraintsArray;
// Contains all the constraints that should be applied only in landscape mode.
-@property(nonatomic, retain) NSArray* landscapeConstraintsArray;
+@property(nonatomic, strong) NSArray* landscapeConstraintsArray;
// Contains all the constraints that should be applied only in portrait mode
// when there is only one button showing in the action bar (i.e. the Google
// Drive button is NOT showing).
-@property(nonatomic, retain)
+@property(nonatomic, strong)
NSArray* portraitActionBarOneButtonConstraintsArray;
// Contains all the constraints that should be applied only in portrait mode
// when there are two buttons showing in the action bar (i.e. the Google Drive
// button IS showing).
-@property(nonatomic, retain)
+@property(nonatomic, strong)
NSArray* portraitActionBarTwoButtonConstraintsArray;
// Constraint that positions the file type label vertically in the center of the
// document with an additional offset.
-@property(nonatomic, retain) NSLayoutConstraint* fileTypeLabelCentered;
+@property(nonatomic, strong) NSLayoutConstraint* fileTypeLabelCentered;
// Records the time the download started, to display an estimate of how much
// time is required to finish the download.
-@property(nonatomic, retain) NSDate* downloadStartedTime;
+@property(nonatomic, strong) NSDate* downloadStartedTime;
// Records the fraction (from 0.0 to 1.0) of the file that has been
// downloaded.
@@ -486,7 +487,7 @@ class DownloadContentDelegate : public URLFetcherDelegate {
// Used to get a URL scheme that Drive responds to, to register with the
// InstallationNotifier.
-@property(nonatomic, retain) id<NativeAppMetadata> googleDriveMetadata;
+@property(nonatomic, strong) id<NativeAppMetadata> googleDriveMetadata;
@end
@@ -525,8 +526,6 @@ class DownloadContentDelegate : public URLFetcherDelegate {
self = [super initWithNibName:@"DownloadManagerController" url:url];
if (self) {
_downloadManagerId = g_download_manager_id++;
- _propertyReleaser_DownloadManagerController.Init(
- self, [DownloadManagerController class]);
DCHECK(webState);
_webState = webState;
@@ -617,7 +616,7 @@ class DownloadContentDelegate : public URLFetcherDelegate {
// will be cleaned up during dealloc, but a local copy will be retained by
// the block and won't be deleted until the block completes.
base::FilePath downloadPathCopy = _downloadFilePath;
- web::WebThread::PostBlockingPoolTask(FROM_HERE, base::BindBlock(^{
+ web::WebThread::PostBlockingPoolTask(FROM_HERE, base::BindBlockArc(^{
DeleteFile(downloadPathCopy, false);
}));
}
@@ -629,7 +628,6 @@ class DownloadContentDelegate : public URLFetcherDelegate {
UMA_HISTOGRAM_ENUMERATION(kUMADownloadedFileAction, NO_ACTION,
DOWNLOADED_FILE_ACTION_COUNT);
}
- [super dealloc];
}
#pragma mark - Layout constraints
@@ -1029,16 +1027,16 @@ class DownloadContentDelegate : public URLFetcherDelegate {
}
- (void)initializeActivityIndicator {
- _activityIndicator.reset([[MDCActivityIndicator alloc]
+ _activityIndicator = [[MDCActivityIndicator alloc]
initWithFrame:CGRectMake(0, 0, kActivityIndicatorWidth,
- kActivityIndicatorWidth)]);
+ kActivityIndicatorWidth)];
[_activityIndicator setRadius:AlignValueToPixel(kActivityIndicatorWidth / 2)];
[_activityIndicator setStrokeWidth:4];
[_activityIndicator
setCycleColors:@[ [[MDCPalette cr_bluePalette] tint500] ]];
[_activityIndicator setTranslatesAutoresizingMaskIntoConstraints:NO];
[_documentContainer addSubview:_activityIndicator];
- _activityIndicator.get().center = _documentContainer.center;
+ _activityIndicator.center = _documentContainer.center;
[NSLayoutConstraint activateConstraints:@[
[[_activityIndicator centerYAnchor]
constraintEqualToAnchor:_documentContainer.centerYAnchor],
@@ -1063,10 +1061,10 @@ class DownloadContentDelegate : public URLFetcherDelegate {
NSString* message =
l10n_util::GetNSString(IDS_IOS_DOWNLOAD_MANAGER_NO_APP_MESSAGE);
- _alertCoordinator.reset([[AlertCoordinator alloc]
- initWithBaseViewController:topViewController
- title:title
- message:message]);
+ _alertCoordinator =
+ [[AlertCoordinator alloc] initWithBaseViewController:topViewController
+ title:title
+ message:message];
// |googleDriveMetadata| contains the information necessary to either launch
// the Google Drive app or navigate to its StoreKit page. If the metadata is
@@ -1075,7 +1073,7 @@ class DownloadContentDelegate : public URLFetcherDelegate {
if (self.googleDriveMetadata && tabHelper) {
NSString* googleDriveButtonTitle =
l10n_util::GetNSString(IDS_IOS_DOWNLOAD_MANAGER_UPLOAD_TO_GOOGLE_DRIVE);
- base::WeakNSObject<DownloadManagerController> weakSelf(self);
+ __weak DownloadManagerController* weakSelf = self;
[_alertCoordinator addItemWithTitle:googleDriveButtonTitle
action:^{
[weakSelf openGoogleDriveInAppStore];
@@ -1238,16 +1236,16 @@ class DownloadContentDelegate : public URLFetcherDelegate {
[self displayError];
return;
}
- base::WeakNSObject<DownloadManagerController> weakSelf(self);
+ __weak DownloadManagerController* weakSelf = self;
base::PostTaskAndReplyWithResult(
web::WebThread::GetBlockingPool()
->GetTaskRunnerWithShutdownBehavior(
base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)
.get(),
- FROM_HERE, base::BindBlock(^{
+ FROM_HERE, base::BindBlockArc(^{
return CreateDirectory(downloadsDirectoryPath);
}),
- base::BindBlock(^(bool directoryCreated) {
+ base::BindBlockArc(^(bool directoryCreated) {
[weakSelf finishStartingContentDownload:directoryCreated];
}));
}
@@ -1299,9 +1297,9 @@ class DownloadContentDelegate : public URLFetcherDelegate {
CGRectGetMaxY(documentIconFrame) - newProgressFrame.size.height;
if (animated &&
newProgressFrame.size.height - oldProgressFrame.size.height > 1) {
- base::WeakNSObject<UIView> weakProgressBar(_progressBar);
+ __weak UIView* weakProgressBar = _progressBar;
if (completionAnimation) {
- base::WeakNSObject<DownloadManagerController> weakSelf(self);
+ __weak DownloadManagerController* weakSelf = self;
[UIView animateWithDuration:kProgressBarAnimationDuration
animations:^{
[weakProgressBar setFrame:newProgressFrame];
@@ -1361,7 +1359,7 @@ class DownloadContentDelegate : public URLFetcherDelegate {
[_documentContainer.layer addAnimation:animation
forKey:kDocumentPopAnimationKey];
- base::WeakNSObject<UIImageView> weakFoldIcon(_foldIcon);
+ __weak UIImageView* weakFoldIcon = _foldIcon;
[UIView transitionWithView:_foldIcon
duration:kDownloadCompleteAnimationDuration
options:UIViewAnimationOptionTransitionCrossDissolve
@@ -1488,7 +1486,7 @@ class DownloadContentDelegate : public URLFetcherDelegate {
if (_totalFileSize == kNoFileSizeGiven) {
[_activityIndicator stopAnimating];
- _activityIndicator.reset();
+ _activityIndicator = nil;
// Display the file size.
NSError* error = nil;
@@ -1607,7 +1605,7 @@ class DownloadContentDelegate : public URLFetcherDelegate {
+ (void)clearDownloadsDirectory {
web::WebThread::PostBlockingPoolTask(
- FROM_HERE, base::BindBlock(^{
+ FROM_HERE, base::BindBlockArc(^{
base::FilePath downloadsDirectory;
if (![DownloadManagerController
fetchDownloadsDirectoryFilePath:&downloadsDirectory]) {
« no previous file with comments | « ios/chrome/browser/ui/downloads/BUILD.gn ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698