Changeset 49067 in webkit
- Timestamp:
- Oct 3, 2009 5:17:08 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r49064 r49067 1 2009-10-03 Adam Barth <abarth@webkit.org> 2 3 Reviewed by Sam Weinig. 4 5 Factor back-forward list methods out of FrameLoader 6 https://bugs.webkit.org/show_bug.cgi?id=30037 7 8 This change moves these back-forward related methods from FrameLoader 9 to Page. It's possible we should move these methods into some kind of 10 "page controller" object, but we can figure that out in a future patch. 11 12 * loader/FrameLoader.cpp: 13 * loader/FrameLoader.h: 14 * loader/RedirectScheduler.cpp: 15 (WebCore::RedirectScheduler::timerFired): 16 * page/ContextMenuController.cpp: 17 (WebCore::ContextMenuController::contextMenuItemSelected): 18 * page/DOMWindow.cpp: 19 (WebCore::DOMWindow::close): 20 * page/History.cpp: 21 (WebCore::History::length): 22 * page/Page.cpp: 23 (WebCore::Page::canGoBackOrForward): 24 (WebCore::Page::goBackOrForward): 25 (WebCore::Page::getHistoryLength): 26 * page/Page.h: 27 * platform/ContextMenu.cpp: 28 (WebCore::ContextMenu::populate): 29 (WebCore::ContextMenu::checkOrEnableIfNeeded): 30 1 31 2009-10-02 Pavel Feldman <pfeldman@chromium.org> 2 32 -
trunk/WebCore/loader/FrameLoader.cpp
r49059 r49067 1271 1271 } 1272 1272 1273 void FrameLoader::goBackOrForward(int distance)1274 {1275 if (distance == 0)1276 return;1277 1278 Page* page = m_frame->page();1279 if (!page)1280 return;1281 BackForwardList* list = page->backForwardList();1282 if (!list)1283 return;1284 1285 HistoryItem* item = list->itemAtIndex(distance);1286 if (!item) {1287 if (distance > 0) {1288 int forwardListCount = list->forwardListCount();1289 if (forwardListCount > 0)1290 item = list->itemAtIndex(forwardListCount);1291 } else {1292 int backListCount = list->backListCount();1293 if (backListCount > 0)1294 item = list->itemAtIndex(-backListCount);1295 }1296 }1297 1298 ASSERT(item); // we should not reach this line with an empty back/forward list1299 if (item)1300 page->goToItem(item, FrameLoadTypeIndexedBackForward);1301 }1302 1303 1273 void FrameLoader::loadURLIntoChildFrame(const KURL& url, const String& referer, Frame* childFrame) 1304 1274 { … … 3956 3926 3957 3927 return false; 3958 }3959 3960 bool FrameLoader::canGoBackOrForward(int distance) const3961 {3962 if (Page* page = m_frame->page()) {3963 if (distance == 0)3964 return true;3965 if (distance > 0 && distance <= page->backForwardList()->forwardListCount())3966 return true;3967 if (distance < 0 && -distance <= page->backForwardList()->backListCount())3968 return true;3969 }3970 return false;3971 }3972 3973 int FrameLoader::getHistoryLength()3974 {3975 if (Page* page = m_frame->page())3976 return page->backForwardList()->backListCount() + 1;3977 return 0;3978 3928 } 3979 3929 -
trunk/WebCore/loader/FrameLoader.h
r49059 r49067 239 239 KURL baseURL() const; 240 240 241 bool canGoBackOrForward(int distance) const;242 void goBackOrForward(int distance);243 int getHistoryLength();244 245 241 void begin(); 246 242 void begin(const KURL&, bool dispatchWindowObjectAvailable = true, SecurityOrigin* forcedSecurityOrigin = 0); -
trunk/WebCore/loader/RedirectScheduler.cpp
r49013 r49067 283 283 // go(i!=0) from a frame navigates into the history of the frame only, 284 284 // in both IE and NS (but not in Mozilla). We can't easily do that. 285 if ( loader->canGoBackOrForward(redirection->historySteps))286 loader->goBackOrForward(redirection->historySteps);285 if (m_frame->page()->canGoBackOrForward(redirection->historySteps)) 286 m_frame->page()->goBackOrForward(redirection->historySteps); 287 287 return; 288 288 case ScheduledRedirection::formSubmission: -
trunk/WebCore/page/ContextMenuController.cpp
r48430 r49067 167 167 break; 168 168 case ContextMenuItemTagGoBack: 169 frame->loader()->goBackOrForward(-1); 169 if (Page* page = frame->page()) 170 page->goBackOrForward(-1); 170 171 break; 171 172 case ContextMenuItemTagGoForward: 172 frame->loader()->goBackOrForward(1); 173 if (Page* page = frame->page()) 174 page->goBackOrForward(1); 173 175 break; 174 176 case ContextMenuItemTagStop: -
trunk/WebCore/page/DOMWindow.cpp
r49043 r49067 744 744 745 745 if (m_frame->loader()->openedByDOM() 746 || m_frame->loader()->getHistoryLength() <= 1746 || page->getHistoryLength() <= 1 747 747 || allowScriptsToCloseWindows) 748 748 m_frame->scheduleClose(); -
trunk/WebCore/page/History.cpp
r48994 r49067 51 51 if (!m_frame) 52 52 return 0; 53 return m_frame->loader()->getHistoryLength(); 53 if (!m_frame->page()) 54 return 0; 55 return m_frame->page()->getHistoryLength(); 54 56 } 55 57 -
trunk/WebCore/page/Page.cpp
r48748 r49067 229 229 } 230 230 231 bool Page::canGoBackOrForward(int distance) const 232 { 233 if (distance == 0) 234 return true; 235 if (distance > 0 && distance <= m_backForwardList->forwardListCount()) 236 return true; 237 if (distance < 0 && -distance <= m_backForwardList->backListCount()) 238 return true; 239 return false; 240 } 241 242 void Page::goBackOrForward(int distance) 243 { 244 if (distance == 0) 245 return; 246 247 HistoryItem* item = m_backForwardList->itemAtIndex(distance); 248 if (!item) { 249 if (distance > 0) { 250 int forwardListCount = m_backForwardList->forwardListCount(); 251 if (forwardListCount > 0) 252 item = m_backForwardList->itemAtIndex(forwardListCount); 253 } else { 254 int backListCount = m_backForwardList->backListCount(); 255 if (backListCount > 0) 256 item = m_backForwardList->itemAtIndex(-backListCount); 257 } 258 } 259 260 ASSERT(item); // we should not reach this line with an empty back/forward list 261 if (item) 262 goToItem(item, FrameLoadTypeIndexedBackForward); 263 } 264 231 265 void Page::goToItem(HistoryItem* item, FrameLoadType type) 232 266 { … … 246 280 m_mainFrame->loader()->stopAllLoaders(databasePolicy); 247 281 m_mainFrame->loader()->goToItem(item, type); 282 } 283 284 int Page::getHistoryLength() 285 { 286 return m_backForwardList->backListCount() + 1; 248 287 } 249 288 -
trunk/WebCore/page/Page.h
r48748 r49067 112 112 bool goBack(); 113 113 bool goForward(); 114 bool canGoBackOrForward(int distance) const; 115 void goBackOrForward(int distance); 114 116 void goToItem(HistoryItem*, FrameLoadType); 117 int getHistoryLength(); 115 118 116 119 HistoryItem* globalHistoryItem() const { return m_globalHistoryItem.get(); } -
trunk/WebCore/platform/ContextMenu.cpp
r48430 r49067 362 362 appendItem(ReloadItem); 363 363 #else 364 if ( loader->canGoBackOrForward(-1))364 if (frame->page() && frame->page()->canGoBackOrForward(-1)) 365 365 appendItem(BackItem); 366 366 367 if ( loader->canGoBackOrForward(1))367 if (frame->page() && frame->page()->canGoBackOrForward(1)) 368 368 appendItem(ForwardItem); 369 369 … … 722 722 #if PLATFORM(GTK) 723 723 case ContextMenuItemTagGoBack: 724 shouldEnable = frame-> loader()->canGoBackOrForward(-1);724 shouldEnable = frame->page() && frame->page()->canGoBackOrForward(-1); 725 725 break; 726 726 case ContextMenuItemTagGoForward: 727 shouldEnable = frame-> loader()->canGoBackOrForward(1);727 shouldEnable = frame->page() && frame->page()->canGoBackOrForward(1); 728 728 break; 729 729 case ContextMenuItemTagStop: -
trunk/WebKit/gtk/ChangeLog
r48998 r49067 1 2009-10-03 Adam Barth <abarth@webkit.org> 2 3 Reviewed by Sam Weinig. 4 5 Factor PageController out of FrameLoader and Page 6 https://bugs.webkit.org/show_bug.cgi?id=30037 7 8 * webkit/webkitwebview.cpp: 9 (webkit_web_view_can_go_back_or_forward): 10 1 11 2009-10-01 Xan Lopez <xlopez@igalia.com> 2 12 -
trunk/WebKit/gtk/webkit/webkitwebview.cpp
r48877 r49067 2880 2880 g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); 2881 2881 2882 Frame* frame = core(webView)->mainFrame(); 2883 return frame->loader()->canGoBackOrForward(steps); 2882 return core(webView)->goBackOrForward(steps); 2884 2883 } 2885 2884
Note: See TracChangeset
for help on using the changeset viewer.