Changeset 86644 in webkit
- Timestamp:
- May 16, 2011 5:50:20 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r86643 r86644 1 2011-05-16 Ian Henderson <ianh@apple.com> 2 3 Reviewed by Joseph Pecoraro. 4 5 Page::goToItem doesn't work while loading is deferred 6 https://bugs.webkit.org/show_bug.cgi?id=60412 7 8 * loader/navigation-while-deferring-loads-expected.txt: Added. 9 * loader/navigation-while-deferring-loads.html: Added. 10 * platform/gtk/Skipped: 11 * platform/qt/Skipped: 12 * platform/win/Skipped: 13 1 14 2011-05-16 Andrew Scherkus <scherkus@chromium.org> 2 15 -
trunk/LayoutTests/platform/chromium/test_expectations.txt
r86643 r86644 206 206 // Animation API is disabled 207 207 WONTFIX SKIP : animations/animation-api-1.html = FAIL 208 209 // Unskip after implementing LayoutTestController::setDefersLoading and ::goBack. 210 BUGWK60877 SKIP : loader/navigation-while-deferring-loads.html = FAIL 208 211 209 212 // ----------------------------------------------------------------- -
trunk/LayoutTests/platform/gtk/Skipped
r86611 r86644 1422 1422 http/tests/navigation/response204.html 1423 1423 1424 # Unskip after implementing LayoutTestController::setDefersLoading and ::goBack. 1425 loader/navigation-while-deferring-loads.html 1426 1424 1427 # This platform does not support the Page Visibility API. 1425 1428 fast/events/page-visibility-iframe-delete-test.html -
trunk/LayoutTests/platform/qt/Skipped
r86611 r86644 2592 2592 http/tests/inspector/network/x-frame-options-deny.html 2593 2593 2594 # Unskip after implementing LayoutTestController::setDefersLoading and ::goBack. 2595 loader/navigation-while-deferring-loads.html 2596 2594 2597 # [Qt] fast/events/backspace-nagivates-back fails on Qt bots (Mac and Linux) 2595 2598 # https://bugs.webkit.org/show_bug.cgi?id=60311 -
trunk/LayoutTests/platform/win/Skipped
r86507 r86644 1296 1296 fast/events/page-visibility-iframe-propagation-test.html 1297 1297 fast/events/page-visibility-transition-test.html 1298 1299 # Unskip after implementing LayoutTestController::setDefersLoading and ::goBack. 1300 loader/navigation-while-deferring-loads.html -
trunk/Source/WebCore/ChangeLog
r86640 r86644 1 2011-05-16 Ian Henderson <ianh@apple.com> 2 3 Reviewed by Joseph Pecoraro. 4 5 Page::goToItem doesn't work while loading is deferred 6 https://bugs.webkit.org/show_bug.cgi?id=60412 7 8 If goToItem is called while loading is deferred, save the arguments 9 and try again later instead of doing nothing. 10 11 Test: loader/navigation-while-deferring-loads.html 12 13 * loader/FrameLoader.cpp: 14 (WebCore::FrameLoader::setDefersLoading): 15 Pipe the "defersLoading" state into HistoryController. 16 * loader/HistoryController.cpp: 17 (WebCore::HistoryController::HistoryController): 18 (WebCore::HistoryController::goToItem): 19 Save the HistoryItem and FrameLoadType if loading is deferred. 20 (WebCore::HistoryController::setDefersLoading): 21 If we have a saved HistoryItem after resuming, try going to it. 22 * loader/HistoryController.h: 23 * page/Page.cpp: 24 (WebCore::Page::goToItem): 25 No longer bail early if loading is deferred, since HistoryController 26 now handles this case. 27 1 28 2011-05-16 Andrew Wilson <atwilson@chromium.org> 2 29 -
trunk/Source/WebCore/loader/FrameLoader.cpp
r86542 r86644 253 253 if (m_policyDocumentLoader) 254 254 m_policyDocumentLoader->setDefersLoading(defers); 255 history()->setDefersLoading(defers); 255 256 256 257 if (!defers) { -
trunk/Source/WebCore/loader/HistoryController.cpp
r85618 r86644 69 69 : m_frame(frame) 70 70 , m_frameLoadComplete(true) 71 , m_defersLoading(false) 71 72 { 72 73 } … … 249 250 if (!m_frame->loader()->client()->shouldGoToHistoryItem(targetItem)) 250 251 return; 252 if (m_defersLoading) { 253 m_deferredItem = targetItem; 254 m_deferredFrameLoadType = type; 255 return; 256 } 251 257 252 258 // Set the BF cursor before commit, which lets the user quickly click back/forward again. … … 264 270 // Now that all other frames have provisional items, do the actual navigation. 265 271 recursiveGoToItem(targetItem, currentItem.get(), type); 272 } 273 274 void HistoryController::setDefersLoading(bool defer) 275 { 276 m_defersLoading = defer; 277 if (!defer && m_deferredItem) { 278 goToItem(m_deferredItem.get(), m_deferredFrameLoadType); 279 m_deferredItem = 0; 280 } 266 281 } 267 282 -
trunk/Source/WebCore/loader/HistoryController.h
r86325 r86644 85 85 void replaceState(PassRefPtr<SerializedScriptValue>, const String& title, const String& url); 86 86 87 void setDefersLoading(bool); 88 87 89 private: 88 90 friend class Page; … … 111 113 112 114 bool m_frameLoadComplete; 115 116 bool m_defersLoading; 117 RefPtr<HistoryItem> m_deferredItem; 118 FrameLoadType m_deferredFrameLoadType; 113 119 }; 114 120 -
trunk/Source/WebCore/page/Page.cpp
r86391 r86644 339 339 void Page::goToItem(HistoryItem* item, FrameLoadType type) 340 340 { 341 if (defersLoading())342 return;343 344 341 // stopAllLoaders may end up running onload handlers, which could cause further history traversals that may lead to the passed in HistoryItem 345 342 // being deref()-ed. Make sure we can still use it with HistoryController::goToItem later. -
trunk/Tools/ChangeLog
r86624 r86644 1 2011-05-16 Ian Henderson <ianh@apple.com> 2 3 Reviewed by Joseph Pecoraro. 4 5 Page::goToItem doesn't work while loading is deferred 6 https://bugs.webkit.org/show_bug.cgi?id=60412 7 8 Add setDefersLoading and goBack methods to LayoutTestController. We 9 need to use goBack() instead of history.back() because the latter goes 10 through NavigationScheduler, hence doesn't exhibit the bug. 11 12 * DumpRenderTree/LayoutTestController.cpp: 13 (goBackCallback): 14 (setDefersLoadingCallback): 15 (LayoutTestController::staticFunctions): 16 * DumpRenderTree/LayoutTestController.h: 17 * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: 18 (LayoutTestController::goBack): 19 (LayoutTestController::setDefersLoading): 20 * DumpRenderTree/mac/LayoutTestControllerMac.mm: 21 (LayoutTestController::goBack): 22 (LayoutTestController::setDefersLoading): 23 * DumpRenderTree/win/LayoutTestControllerWin.cpp: 24 (LayoutTestController::goBack): 25 (LayoutTestController::setDefersLoading): 26 * DumpRenderTree/wx/LayoutTestControllerWx.cpp: 27 (LayoutTestController::goBack): 28 (LayoutTestController::setDefersLoading): 29 1 30 2011-05-16 Sam Weinig <sam@webkit.org> 2 31 -
trunk/Tools/DumpRenderTree/LayoutTestController.cpp
r86205 r86644 657 657 } 658 658 659 static JSValueRef goBackCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) 660 { 661 LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); 662 controller->goBack(); 663 664 return JSValueMakeUndefined(context); 665 } 666 659 667 static JSValueRef grantDesktopNotificationPermissionCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) 660 668 { … … 1232 1240 LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); 1233 1241 controller->setDeferMainResourceDataLoad(JSValueToBoolean(context, arguments[0])); 1242 1243 return JSValueMakeUndefined(context); 1244 } 1245 1246 static JSValueRef setDefersLoadingCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) 1247 { 1248 if (argumentCount < 1) 1249 return JSValueMakeUndefined(context); 1250 1251 LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); 1252 controller->setDefersLoading(JSValueToBoolean(context, arguments[0])); 1234 1253 1235 1254 return JSValueMakeUndefined(context); … … 2291 2310 { "counterValueForElementById", counterValueForElementByIdCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 2292 2311 { "originsWithApplicationCache", originsWithApplicationCacheCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 2312 { "goBack", goBackCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 2293 2313 { "grantDesktopNotificationPermission", grantDesktopNotificationPermissionCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 2294 2314 { "hasSpellingMarker", hasSpellingMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, … … 2344 2364 { "setDatabaseQuota", setDatabaseQuotaCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 2345 2365 { "setDeferMainResourceDataLoad", setDeferMainResourceDataLoadCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 2366 { "setDefersLoading", setDefersLoadingCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 2346 2367 { "setDomainRelaxationForbiddenForURLScheme", setDomainRelaxationForbiddenForURLSchemeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 2347 2368 { "setEditingBehavior", setEditingBehaviorCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, -
trunk/Tools/DumpRenderTree/LayoutTestController.h
r86205 r86644 64 64 void execCommand(JSStringRef name, JSStringRef value); 65 65 bool findString(JSContextRef, JSStringRef, JSObjectRef optionsArray); 66 void goBack(); 66 67 JSValueRef originsWithApplicationCache(JSContextRef); 67 68 long long applicationCacheDiskUsageForOrigin(JSStringRef name); … … 100 101 void setDatabaseQuota(unsigned long long quota); 101 102 void setDomainRelaxationForbiddenForURLScheme(bool forbidden, JSStringRef scheme); 103 void setDefersLoading(bool); 102 104 void setIconDatabaseEnabled(bool iconDatabaseEnabled); 103 105 void setJavaScriptProfilingEnabled(bool profilingEnabled); -
trunk/Tools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp
r86205 r86644 721 721 } 722 722 723 void LayoutTestController::goBack() 724 { 725 // FIXME: implement to enable loader/navigation-while-deferring-loads.html 726 } 727 728 void LayoutTestController::setDefersLoading(bool) 729 { 730 // FIXME: implement to enable loader/navigation-while-deferring-loads.html 731 } 732 723 733 void LayoutTestController::setAppCacheMaximumSize(unsigned long long size) 724 734 { -
trunk/Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm
r86205 r86644 434 434 } 435 435 436 void LayoutTestController::goBack() 437 { 438 [[mainFrame webView] goBack]; 439 } 440 441 void LayoutTestController::setDefersLoading(bool defers) 442 { 443 [[mainFrame webView] setDefersCallbacks:defers]; 444 } 445 436 446 void LayoutTestController::setDomainRelaxationForbiddenForURLScheme(bool forbidden, JSStringRef scheme) 437 447 { -
trunk/Tools/DumpRenderTree/win/LayoutTestControllerWin.cpp
r86205 r86644 1048 1048 } 1049 1049 1050 void LayoutTestController::goBack() 1051 { 1052 // FIXME: implement to enable loader/navigation-while-deferring-loads.html 1053 } 1054 1055 void LayoutTestController::setDefersLoading(bool) 1056 { 1057 // FIXME: implement to enable loader/navigation-while-deferring-loads.html 1058 } 1059 1050 1060 void LayoutTestController::setDomainRelaxationForbiddenForURLScheme(bool forbidden, JSStringRef scheme) 1051 1061 { -
trunk/Tools/DumpRenderTree/wx/LayoutTestControllerWx.cpp
r86246 r86644 288 288 } 289 289 290 void LayoutTestController::goBack() 291 { 292 // FIXME: implement to enable loader/navigation-while-deferring-loads.html 293 } 294 295 void LayoutTestController::setDefersLoading(bool) 296 { 297 // FIXME: implement to enable loader/navigation-while-deferring-loads.html 298 } 299 290 300 void LayoutTestController::setDomainRelaxationForbiddenForURLScheme(bool, JSStringRef) 291 301 {
Note: See TracChangeset
for help on using the changeset viewer.