Changeset 82970 in webkit
- Timestamp:
- Apr 5, 2011 1:02:42 PM (13 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r82966 r82970 1 2011-04-05 Anders Carlsson <andersca@apple.com> 2 3 Reviewed by Oliver Hunt. 4 5 Invalidate callbacks if the WebPageProxy is no longer valid 6 https://bugs.webkit.org/show_bug.cgi?id=57873 7 <rdar://problem/9059717> 8 9 Audit all function calls that take callbacks and make sure to invalidate the callbacks 10 if the web page is no longer valid. 11 12 * UIProcess/WebPageProxy.cpp: 13 (WebKit::WebPageProxy::runJavaScriptInMainFrame): 14 (WebKit::WebPageProxy::getRenderTreeExternalRepresentation): 15 (WebKit::WebPageProxy::getSourceForFrame): 16 (WebKit::WebPageProxy::getContentsAsString): 17 (WebKit::WebPageProxy::getSelectionOrContentsAsString): 18 (WebKit::WebPageProxy::getMainResourceDataOfFrame): 19 (WebKit::WebPageProxy::getResourceDataFromFrame): 20 (WebKit::WebPageProxy::getWebArchiveOfFrame): 21 (WebKit::WebPageProxy::forceRepaint): 22 (WebKit::WebPageProxy::computePagesForPrinting): 23 (WebKit::WebPageProxy::drawRectToPDF): 24 (WebKit::WebPageProxy::drawPagesToPDF): 25 1 26 2011-04-05 Adam Roben <aroben@apple.com> 2 27 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r82894 r82970 1109 1109 { 1110 1110 RefPtr<ScriptValueCallback> callback = prpCallback; 1111 if (!isValid()) { 1112 callback->invalidate(); 1113 return; 1114 } 1115 1111 1116 uint64_t callbackID = callback->callbackID(); 1112 1117 m_scriptValueCallbacks.set(callbackID, callback.get()); … … 1117 1122 { 1118 1123 RefPtr<StringCallback> callback = prpCallback; 1124 if (!isValid()) { 1125 callback->invalidate(); 1126 return; 1127 } 1128 1119 1129 uint64_t callbackID = callback->callbackID(); 1120 1130 m_stringCallbacks.set(callbackID, callback.get()); … … 1125 1135 { 1126 1136 RefPtr<StringCallback> callback = prpCallback; 1137 if (!isValid()) { 1138 callback->invalidate(); 1139 return; 1140 } 1141 1127 1142 uint64_t callbackID = callback->callbackID(); 1128 1143 m_loadDependentStringCallbackIDs.add(callbackID); … … 1134 1149 { 1135 1150 RefPtr<StringCallback> callback = prpCallback; 1151 if (!isValid()) { 1152 callback->invalidate(); 1153 return; 1154 } 1155 1136 1156 uint64_t callbackID = callback->callbackID(); 1137 1157 m_loadDependentStringCallbackIDs.add(callbackID); … … 1143 1163 { 1144 1164 RefPtr<StringCallback> callback = prpCallback; 1165 if (!isValid()) { 1166 callback->invalidate(); 1167 return; 1168 } 1169 1145 1170 uint64_t callbackID = callback->callbackID(); 1146 1171 m_stringCallbacks.set(callbackID, callback.get()); … … 1151 1176 { 1152 1177 RefPtr<DataCallback> callback = prpCallback; 1178 if (!isValid()) { 1179 callback->invalidate(); 1180 return; 1181 } 1182 1153 1183 uint64_t callbackID = callback->callbackID(); 1154 1184 m_dataCallbacks.set(callbackID, callback.get()); … … 1159 1189 { 1160 1190 RefPtr<DataCallback> callback = prpCallback; 1191 if (!isValid()) { 1192 callback->invalidate(); 1193 return; 1194 } 1195 1161 1196 uint64_t callbackID = callback->callbackID(); 1162 1197 m_dataCallbacks.set(callbackID, callback.get()); … … 1167 1202 { 1168 1203 RefPtr<DataCallback> callback = prpCallback; 1204 if (!isValid()) { 1205 callback->invalidate(); 1206 return; 1207 } 1208 1169 1209 uint64_t callbackID = callback->callbackID(); 1170 1210 m_dataCallbacks.set(callbackID, callback.get()); … … 1175 1215 { 1176 1216 RefPtr<VoidCallback> callback = prpCallback; 1177 1178 1217 if (!isValid()) { 1179 1218 callback->invalidate(); … … 2777 2816 } 2778 2817 2779 void WebPageProxy::computePagesForPrinting(WebFrameProxy* frame, const PrintInfo& printInfo, PassRefPtr<ComputedPagesCallback> callback) 2780 { 2818 void WebPageProxy::computePagesForPrinting(WebFrameProxy* frame, const PrintInfo& printInfo, PassRefPtr<ComputedPagesCallback> prpCallback) 2819 { 2820 RefPtr<ComputedPagesCallback> callback = prpCallback; 2821 if (!isValid()) { 2822 callback->invalidate(); 2823 return; 2824 } 2825 2781 2826 uint64_t callbackID = callback->callbackID(); 2782 2827 m_computedPagesCallbacks.set(callbackID, callback.get()); … … 2786 2831 2787 2832 #if PLATFORM(MAC) || PLATFORM(WIN) 2788 void WebPageProxy::drawRectToPDF(WebFrameProxy* frame, const IntRect& rect, PassRefPtr<DataCallback> callback) 2789 { 2833 void WebPageProxy::drawRectToPDF(WebFrameProxy* frame, const IntRect& rect, PassRefPtr<DataCallback> prpCallback) 2834 { 2835 RefPtr<DataCallback> callback = prpCallback; 2836 if (!isValid()) { 2837 callback->invalidate(); 2838 return; 2839 } 2840 2790 2841 uint64_t callbackID = callback->callbackID(); 2791 2842 m_dataCallbacks.set(callbackID, callback.get()); … … 2793 2844 } 2794 2845 2795 void WebPageProxy::drawPagesToPDF(WebFrameProxy* frame, uint32_t first, uint32_t count, PassRefPtr<DataCallback> callback) 2796 { 2846 void WebPageProxy::drawPagesToPDF(WebFrameProxy* frame, uint32_t first, uint32_t count, PassRefPtr<DataCallback> prpCallback) 2847 { 2848 RefPtr<DataCallback> callback = prpCallback; 2849 if (!isValid()) { 2850 callback->invalidate(); 2851 return; 2852 } 2853 2797 2854 uint64_t callbackID = callback->callbackID(); 2798 2855 m_dataCallbacks.set(callbackID, callback.get());
Note: See TracChangeset
for help on using the changeset viewer.