tdf#124981: Fix a few object leaks
The pointer to the DocumentViewController object in the Document class
can be a weak property. This avoids a circular reference.
When the DocumentViewController is being dismissed, remove the script
message handlers and remove the view from its superview. Also, set the
webView property to nil.
diff --git a/ios/Mobile/Document.h b/ios/Mobile/Document.h
index 004bcce..a843dc7 100644
--- a/ios/Mobile/Document.h
+++ b/ios/Mobile/Document.h
@@ -20,7 +20,7 @@
int fakeClientFd;
}
@property (strong) DocumentViewController *viewController;
@property (weak) DocumentViewController *viewController;
- (void)send2JS:(const char*)buffer length:(int)length;
diff --git a/ios/Mobile/DocumentViewController.mm b/ios/Mobile/DocumentViewController.mm
index 1d70b28..76e64d0 100644
--- a/ios/Mobile/DocumentViewController.mm
+++ b/ios/Mobile/DocumentViewController.mm
@@ -84,6 +84,12 @@
[self dismissViewControllerAnimated:YES completion:^ {
[self.document closeWithCompletionHandler:^(BOOL success){
LOG_TRC("close completion handler gets " << (success?"YES":"NO"));
[self.webView.configuration.userContentController removeScriptMessageHandlerForName:@"debug"];
[self.webView.configuration.userContentController removeScriptMessageHandlerForName:@"lool"];
[self.webView.configuration.userContentController removeScriptMessageHandlerForName:@"error"];
self.webView.configuration.userContentController = nil;
[self.webView removeFromSuperview];
self.webView = nil;
}];
}];
}