Chromium Code Reviews| Index: chrome/installer/mac/app/Downloader.m |
| diff --git a/chrome/installer/mac/app/Downloader.m b/chrome/installer/mac/app/Downloader.m |
| index 857897ab934878287b7b4e8a1c2d97d1619445b7..69ded228621347092d40766dd8fa07b218ed69e9 100644 |
| --- a/chrome/installer/mac/app/Downloader.m |
| +++ b/chrome/installer/mac/app/Downloader.m |
| @@ -3,14 +3,16 @@ |
| // found in the LICENSE file. |
| #import <Foundation/Foundation.h> |
| +#import <assert.h> |
|
Mark Mentovai
2016/07/19 21:07:40
<assert.h> gets #included, not #imported. We gener
|
| -#import "DownloadDelegate.h" |
| #import "Downloader.h" |
| #import "NetworkCommunication.h" |
| #import "OmahaXMLParser.h" |
| @implementation Downloader |
| +@synthesize delegate = delegate_; |
| + |
| // TODO: make this overrideable with commandline argument? or enviro variable |
| + (NSString*)getDownloadsFilePath { |
| NSArray* downloadPaths = NSSearchPathForDirectoriesInDomains( |
| @@ -59,9 +61,8 @@ |
| // Downloads contents of chromeURL to downloads folders and delegates the work |
| // to the DownloadDelegate class. |
| - (BOOL)writeChromeImageToDownloadsDirectory:(NSURL*)chromeURL { |
| - DownloadDelegate* delegate = [[DownloadDelegate alloc] init]; |
| NetworkCommunication* downloadTask = |
| - [[NetworkCommunication alloc] initWithDelegate:delegate]; |
| + [[NetworkCommunication alloc] initWithDelegate:self]; |
| // TODO: What if file already exists? |
| [downloadTask createRequestWithUrlAsString:[chromeURL absoluteString] |
| @@ -81,4 +82,37 @@ |
| return writeWasSuccessful; |
| } |
| +// Skeleton of delegate method to provide download progress updates. |
| +// TODO: Make use of (totalBytesWritten/totalBytesExpectedToWrite)*100 |
| +// to generate download progress percentage. |
| +- (void)URLSession:(NSURLSession*)session |
| + downloadTask:(NSURLSessionDownloadTask*)downloadTask |
| + didWriteData:(int64_t)bytesWritten |
| + totalBytesWritten:(int64_t)totalBytesWritten |
| + totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite { |
| +} |
| + |
| +// Delegate method to move downloaded disk image to user's Download directory. |
| +- (void)URLSession:(NSURLSession*)session |
| + downloadTask:(NSURLSessionDownloadTask*)downloadTask |
| + didFinishDownloadingToURL:(NSURL*)location { |
| + assert([location isFileURL]); |
| + NSFileManager* manager = [[NSFileManager alloc] init]; |
| + NSURL* downloadsDirectory = |
| + [[NSURL alloc] initFileURLWithPath:[Downloader getDownloadsFilePath]]; |
| + if ([manager fileExistsAtPath:location.path]) { |
| + [manager moveItemAtURL:location toURL:downloadsDirectory error:nil]; |
| + } else { |
| + // TODO: Error Handling |
| + } |
| +} |
| + |
| +- (void)URLSession:(NSURLSession*)session |
| + task:(NSURLSessionTask*)task |
| + didCompleteWithError:(NSError*)error { |
| + // TODO: Error Handling |
| + |
| + [delegate_ unpackDMG]; |
| +} |
| + |
| @end |