Index: ios/web/webui/crw_web_ui_page_builder.mm |
diff --git a/ios/web/webui/crw_web_ui_page_builder.mm b/ios/web/webui/crw_web_ui_page_builder.mm |
index 2842b64dbcb1e844addffe74a9847071828338f0..fd44ed6e089a2dbde8426221ecec852f552e2f0f 100644 |
--- a/ios/web/webui/crw_web_ui_page_builder.mm |
+++ b/ios/web/webui/crw_web_ui_page_builder.mm |
@@ -8,12 +8,15 @@ |
#include <string> |
#include <vector> |
-#include "base/ios/weak_nsobject.h" |
#include "base/logging.h" |
#include "base/mac/bundle_locations.h" |
#include "base/mac/scoped_nsobject.h" |
#include "base/strings/sys_string_conversions.h" |
+#if !defined(__has_feature) || !__has_feature(objc_arc) |
+#error "This file requires ARC support." |
+#endif |
+ |
namespace { |
// Prefix for script tags. Used to locate JavaScript subresources. |
NSString* const kJSTagPrefix = @"<script src=\""; |
@@ -92,7 +95,7 @@ NSString* const kWebUIJSURL = @"chrome://resources/js/ios/web_ui.js"; |
@implementation CRWWebUIPageBuilder { |
// Delegate for requesting resources. |
- base::WeakNSProtocol<id<CRWWebUIPageBuilderDelegate>> _delegate; |
+ __weak id<CRWWebUIPageBuilderDelegate> _delegate; |
} |
#pragma mark - Public Methods |
@@ -104,7 +107,7 @@ NSString* const kWebUIJSURL = @"chrome://resources/js/ios/web_ui.js"; |
- (instancetype)initWithDelegate:(id<CRWWebUIPageBuilderDelegate>)delegate { |
if (self = [super init]) { |
- _delegate.reset(delegate); |
+ _delegate = delegate; |
} |
return self; |
} |
@@ -132,10 +135,11 @@ NSString* const kWebUIJSURL = @"chrome://resources/js/ios/web_ui.js"; |
return; |
} |
__block std::map<GURL, std::string> subresources; |
- base::WeakNSObject<CRWWebUIPageBuilder> weakSelf(self); |
+ __weak CRWWebUIPageBuilder* weakSelf = self; |
// Completion handler for subresource loads. |
- __block web::WebUIDelegateCompletion subresourceHandler = nil; |
- subresourceHandler = [[^(NSString* subresource, const GURL& subresourceURL) { |
+ web::WebUIDelegateCompletion subresourceHandler = nil; |
+ __block __weak web::WebUIDelegateCompletion weakSubresourceHandler = nil; |
+ subresourceHandler = [^(NSString* subresource, const GURL& subresourceURL) { |
// Import statements in CSS resources are also loaded. |
if ([self isCSSSubresourceURL:subresourceURL]) { |
NSSet* URLStrings = [weakSelf URLStringsFromCSS:subresource]; |
@@ -146,7 +150,7 @@ NSString* const kWebUIJSURL = @"chrome://resources/js/ios/web_ui.js"; |
sourceURL:subresourceURL]; |
++pendingSubresourceCount; |
[weakSelf fetchResourceWithURL:URL |
- completionHandler:subresourceHandler]; |
+ completionHandler:weakSubresourceHandler]; |
} |
} |
subresources[subresourceURL] = base::SysNSStringToUTF8(subresource); |
@@ -157,7 +161,9 @@ NSString* const kWebUIJSURL = @"chrome://resources/js/ios/web_ui.js"; |
[weakSelf flattenHTML:webUIHTML withSubresources:subresources]; |
completionHandler(webUIHTML); |
} |
- } copy] autorelease]; |
+ } copy]; |
+ |
+ weakSubresourceHandler = subresourceHandler; |
for (NSString* URLString in subresourceURLStrings) { |
// chrome://resources/js/ios/web_ui.js is skipped because it is |