Changeset 155153 in webkit
- Timestamp:
- Sep 5, 2013, 3:06:31 PM (12 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r155144 r155153 1 2013-09-05 Alexey Proskuryakov <ap@apple.com> 2 3 WKFullScreenWindowController extends lifetime of WKView, deleting it at a wrong time 4 https://bugs.webkit.org/show_bug.cgi?id=120792 5 <rdar://problem/14884666> 6 7 Reviewed by Jer Noble. 8 9 * UIProcess/API/mac/WKView.mm: (-[WKView fullScreenWindowController]): 10 Use a newly minted initializer for the controller. 11 12 * UIProcess/mac/WKFullScreenWindowController.h: Removed unused web view accessors. 13 Changed the class to take web view at initialization time. 14 15 * UIProcess/mac/WKFullScreenWindowController.mm: 16 (-[WKFullScreenWindowController initWithWindow:webView:]): Initialize the controller 17 inone step. 18 (-[WKFullScreenWindowController dealloc]): WebView is now a raw pointer, no need 19 to zero it. 20 (-[WKFullScreenWindowController close]): Make sure to not leave a dangling WKView 21 pointer (this method is indirectly but inevitably called when WKView is deallocated). 22 1 23 2013-09-05 Anders Carlsson <andersca@apple.com> 2 24 -
trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm
r154949 r155153 2938 2938 - (WKFullScreenWindowController*)fullScreenWindowController 2939 2939 { 2940 if (!_data->_fullScreenWindowController) { 2941 _data->_fullScreenWindowController = adoptNS([[WKFullScreenWindowController alloc] initWithWindow:[self createFullScreenWindow]]); 2942 [_data->_fullScreenWindowController.get() setWebView:self]; 2943 } 2940 if (!_data->_fullScreenWindowController) 2941 _data->_fullScreenWindowController = adoptNS([[WKFullScreenWindowController alloc] initWithWindow:[self createFullScreenWindow] webView:self]); 2942 2944 2943 return _data->_fullScreenWindowController.get(); 2945 2944 } -
trunk/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.h
r147013 r155153 47 47 @interface WKFullScreenWindowController : NSWindowController<NSWindowDelegate> { 48 48 @private 49 WKView *_webView; 49 WKView *_webView; // Cannot be retained, see <rdar://problem/14884666>. 50 50 RetainPtr<WebCoreFullScreenPlaceholderView> _webViewPlaceholder; 51 51 RetainPtr<WebWindowScaleAnimation> _scaleAnimation; … … 61 61 } 62 62 63 - (WKView*)webView; 64 - (void)setWebView:(WKView*)webView; 63 - (id)initWithWindow:(NSWindow *)window webView:(WKView *)webView; 65 64 66 65 - (WebCoreFullScreenPlaceholderView*)webViewPlaceholder; -
trunk/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm
r153402 r155153 90 90 #pragma mark - 91 91 #pragma mark Initialization 92 - (id)initWithWindow:(NSWindow *)window 92 - (id)initWithWindow:(NSWindow *)window webView:(WKView *)webView 93 93 { 94 94 self = [super initWithWindow:window]; … … 98 98 [window setCollectionBehavior:([window collectionBehavior] | NSWindowCollectionBehaviorFullScreenPrimary)]; 99 99 [self windowDidLoad]; 100 _webView = webView; 100 101 101 102 return self; … … 104 105 - (void)dealloc 105 106 { 106 [self setWebView:nil];107 107 [[self window] setDelegate:nil]; 108 108 … … 122 122 #pragma mark - 123 123 #pragma mark Accessors 124 125 - (WKView*)webView126 {127 return _webView;128 }129 130 - (void)setWebView:(WKView *)webView131 {132 [webView retain];133 [_webView release];134 _webView = webView;135 }136 124 137 125 - (BOOL)isFullScreen … … 444 432 [self finishedExitFullScreenAnimation:YES]; 445 433 434 _webView = nil; 435 446 436 [super close]; 447 437 }
Note:
See TracChangeset
for help on using the changeset viewer.