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 |