Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: Source/web/FrameLoaderClientImpl.cpp

Issue 134643030: Prevent frame from being destroyed in middle of notification. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Added protector to another place that can cause frame deletion. Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009, 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2009, 2012 Google Inc. All rights reserved.
3 * Copyright (C) 2011 Apple Inc. All rights reserved. 3 * Copyright (C) 2011 Apple Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 if (RuntimeEnabledFeatures::deviceMotionEnabled()) 120 if (RuntimeEnabledFeatures::deviceMotionEnabled())
121 DeviceMotionController::from(document); 121 DeviceMotionController::from(document);
122 if (RuntimeEnabledFeatures::deviceOrientationEnabled()) 122 if (RuntimeEnabledFeatures::deviceOrientationEnabled())
123 DeviceOrientationController::from(document); 123 DeviceOrientationController::from(document);
124 } 124 }
125 } 125 }
126 } 126 }
127 127
128 void FrameLoaderClientImpl::documentElementAvailable() 128 void FrameLoaderClientImpl::documentElementAvailable()
129 { 129 {
130 RefPtr<WebFrameImpl> protector(m_webFrame);
130 if (m_webFrame->client()) 131 if (m_webFrame->client())
131 m_webFrame->client()->didCreateDocumentElement(m_webFrame); 132 m_webFrame->client()->didCreateDocumentElement(m_webFrame);
132 } 133 }
133 134
134 void FrameLoaderClientImpl::didExhaustMemoryAvailableForScript() 135 void FrameLoaderClientImpl::didExhaustMemoryAvailableForScript()
135 { 136 {
136 if (m_webFrame->client()) 137 if (m_webFrame->client())
137 m_webFrame->client()->didExhaustMemoryAvailableForScript(m_webFrame); 138 m_webFrame->client()->didExhaustMemoryAvailableForScript(m_webFrame);
138 } 139 }
139 140
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 // Called when a particular resource load completes 297 // Called when a particular resource load completes
297 void FrameLoaderClientImpl::dispatchDidFinishLoading(DocumentLoader* loader, 298 void FrameLoaderClientImpl::dispatchDidFinishLoading(DocumentLoader* loader,
298 unsigned long identifier) 299 unsigned long identifier)
299 { 300 {
300 if (m_webFrame->client()) 301 if (m_webFrame->client())
301 m_webFrame->client()->didFinishResourceLoad(m_webFrame, identifier); 302 m_webFrame->client()->didFinishResourceLoad(m_webFrame, identifier);
302 } 303 }
303 304
304 void FrameLoaderClientImpl::dispatchDidFinishDocumentLoad() 305 void FrameLoaderClientImpl::dispatchDidFinishDocumentLoad()
305 { 306 {
307 RefPtr<WebFrameImpl> protector(m_webFrame);
306 if (m_webFrame->client()) 308 if (m_webFrame->client())
307 m_webFrame->client()->didFinishDocumentLoad(m_webFrame); 309 m_webFrame->client()->didFinishDocumentLoad(m_webFrame);
308 } 310 }
309 311
310 void FrameLoaderClientImpl::dispatchDidLoadResourceFromMemoryCache(const Resourc eRequest& request, const ResourceResponse& response) 312 void FrameLoaderClientImpl::dispatchDidLoadResourceFromMemoryCache(const Resourc eRequest& request, const ResourceResponse& response)
311 { 313 {
312 if (m_webFrame->client()) 314 if (m_webFrame->client())
313 m_webFrame->client()->didLoadResourceFromMemoryCache(m_webFrame, Wrapped ResourceRequest(request), WrappedResourceResponse(response)); 315 m_webFrame->client()->didLoadResourceFromMemoryCache(m_webFrame, Wrapped ResourceRequest(request), WrappedResourceResponse(response));
314 } 316 }
315 317
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
745 return m_webFrame->sharedWorkerRepositoryClient(); 747 return m_webFrame->sharedWorkerRepositoryClient();
746 } 748 }
747 749
748 void FrameLoaderClientImpl::didStopAllLoaders() 750 void FrameLoaderClientImpl::didStopAllLoaders()
749 { 751 {
750 if (m_webFrame->client()) 752 if (m_webFrame->client())
751 m_webFrame->client()->didAbortLoading(m_webFrame); 753 m_webFrame->client()->didAbortLoading(m_webFrame);
752 } 754 }
753 755
754 } // namespace blink 756 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698