+2012-01-08 Dan Bernstein <mitz@apple.com>
+
+ REGRESSION (r103859): WKViews leak
+ https://bugs.webkit.org/show_bug.cgi?id=75805
+
+ The flags changed event monitor added in r103859 was retaining the WKView (as it references
+ self in the handler block), causing it to leak.
+
+ * UIProcess/API/mac/WKView.mm:
+ (-[WKView dealloc]): Moved call to remove the flags changed event monitor from here...
+ (-[WKView viewDidMoveToWindow]): ...to here. Moved call to add the flags changed event
+ monitor to here from...
+ (-[WKView initWithFrame:contextRef:pageGroupRef:]): ...here.
+
2012-01-06 Mark Rowe <mrowe@apple.com>
REGRESSION (WebKit2): Save as PDF no longer generates links to URLs
- (void)dealloc
{
_data->_page->close();
- [NSEvent removeMonitor:_data->_flagsChangedEventMonitor];
ASSERT(!_data->_inSecureInputState);
_data->_page->viewStateDidChange(WebPageProxy::ViewIsVisible | WebPageProxy::ViewIsInWindow);
[self _updateWindowVisibility];
[self _updateWindowAndViewFrames];
-
- [self _accessibilityRegisterUIProcessTokens];
+
+ _data->_flagsChangedEventMonitor = [NSEvent addLocalMonitorForEventsMatchingMask:NSFlagsChangedMask handler:^(NSEvent *flagsChangedEvent) {
+ [self _postFakeMouseMovedEventForFlagsChangedEvent:flagsChangedEvent];
+ return flagsChangedEvent;
+ }];
+
+ [self _accessibilityRegisterUIProcessTokens];
} else {
_data->_page->viewStateDidChange(WebPageProxy::ViewIsVisible);
_data->_page->viewStateDidChange(WebPageProxy::ViewWindowIsActive | WebPageProxy::ViewIsInWindow);
+ [NSEvent removeMonitor:_data->_flagsChangedEventMonitor];
+ _data->_flagsChangedEventMonitor = nil;
+
#if ENABLE(GESTURE_EVENTS)
if (_data->_endGestureMonitor) {
[NSEvent removeMonitor:_data->_endGestureMonitor];
#endif
_data->_mouseDownEvent = nil;
_data->_ignoringMouseDraggedEvents = NO;
- _data->_flagsChangedEventMonitor = [NSEvent addLocalMonitorForEventsMatchingMask:NSFlagsChangedMask handler:^(NSEvent *flagsChangedEvent) {
- [self _postFakeMouseMovedEventForFlagsChangedEvent:flagsChangedEvent];
- return flagsChangedEvent;
- }];
[self _registerDraggedTypes];