| Index: chrome/installer/mac/app/OmahaXMLParser.m
|
| diff --git a/chrome/installer/mac/app/OmahaXMLParser.m b/chrome/installer/mac/app/OmahaXMLParser.m
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4986e0040145c7901928ec2e54fdc24097817841
|
| --- /dev/null
|
| +++ b/chrome/installer/mac/app/OmahaXMLParser.m
|
| @@ -0,0 +1,54 @@
|
| +// Copyright 2016 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 "OmahaXMLParser.h"
|
| +
|
| +@implementation OmahaXMLParser
|
| +
|
| +- (NSMutableArray*)chromeIncompleteDownloadURLs {
|
| + return chromeIncompleteDownloadURLs_;
|
| +}
|
| +
|
| +- (NSString*)chromeImageFilename {
|
| + return chromeImageFilename_;
|
| +}
|
| +
|
| +// Sets up instance of NSXMLParser and calls on delegate methods to do actual
|
| +// parsing work.
|
| +- (NSArray*)parseXML:(NSData*)omahaResponseXML error:(NSError**)error {
|
| + NSXMLParser* parser = [[NSXMLParser alloc] initWithData:omahaResponseXML];
|
| + [parser setDelegate:self];
|
| + BOOL success = [parser parse];
|
| + if (!success) {
|
| + *error = [parser parserError];
|
| + }
|
| +
|
| + return chromeIncompleteDownloadURLs_;
|
| +}
|
| +
|
| +// Method implementation for XMLParserDelegate.
|
| +// Searches the XML data for the tag "URL" and the subsequent "codebase"
|
| +// attribute that indicates a URL follows. Copies each URL into an array.
|
| +// Note that the URLs in the XML file are incomplete. They need the filename
|
| +// appended to end. The second if statement checks for the tag "package" which
|
| +// contains the filename we need to complete the URLs.
|
| +- (void)parser:(NSXMLParser*)parser
|
| + didStartElement:(NSString*)elementName
|
| + namespaceURI:(NSString*)namespaceURI
|
| + qualifiedName:(NSString*)qName
|
| + attributes:(NSDictionary*)attributeDict {
|
| + if ([elementName isEqualToString:@"url"]) {
|
| + if (!chromeIncompleteDownloadURLs_) {
|
| + chromeIncompleteDownloadURLs_ = [[NSMutableArray alloc] init];
|
| + }
|
| + NSString* extractedURL = [attributeDict objectForKey:@"codebase"];
|
| + [chromeIncompleteDownloadURLs_ addObject:extractedURL];
|
| + }
|
| + if ([elementName isEqualToString:@"package"]) {
|
| + chromeImageFilename_ = [[NSString alloc]
|
| + initWithFormat:@"%@", [attributeDict objectForKey:@"name"]];
|
| + }
|
| +}
|
| +
|
| +@end
|
|
|