Changeset 31877 in webkit
- Timestamp:
- Apr 14, 2008 1:06:02 PM (16 years ago)
- Location:
- trunk
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r31876 r31877 1 2008-04-14 Holger Freyther <zecke@selfish.org> 2 3 Reviewed by Alp Toker. 4 5 https://bugs.webkit.org/show_bug.cgi?id=18411 6 Enable Page caching and create FrameViews on the fly 7 8 Create the FrameView on the fly and cache pages 9 10 - Keep a copy of the GtkAdjustment to be able to reuse it for the 11 FrameViews 12 - Do not initially create a FrameView and update the WebKit code to 13 cope with not having a view. 14 - Cache seven pages by default. 15 16 * platform/gtk/ScrollViewGtk.cpp: 17 (WebCore::ScrollView::setGtkAdjustments): 18 1 19 2008-04-14 David Hyatt <hyatt@apple.com> 2 20 -
trunk/WebCore/platform/gtk/ScrollViewGtk.cpp
r31235 r31877 288 288 m_data->setHasHorizontalScrollbar(false); 289 289 290 #if GLIB_CHECK_VERSION(2,10,0)291 g_object_ref_sink(m_data->horizontalAdjustment);292 g_object_ref_sink(m_data->verticalAdjustment);293 #else294 290 g_object_ref(m_data->horizontalAdjustment); 295 gtk_object_sink(GTK_OBJECT(m_data->horizontalAdjustment));296 291 g_object_ref(m_data->verticalAdjustment); 297 gtk_object_sink(GTK_OBJECT(m_data->verticalAdjustment));298 #endif299 292 } 300 293 -
trunk/WebKit/gtk/ChangeLog
r31790 r31877 1 2008-04-14 Holger Freyther <zecke@selfish.org> 2 3 Reviewed by Alp Toker. 4 5 https://bugs.webkit.org/show_bug.cgi?id=18411 6 Enable Page caching and create FrameViews on the fly 7 8 Create the FrameView on the fly and cache pages 9 10 - Keep a copy of the GtkAdjustment to be able to reuse it for the 11 FrameViews 12 - Do not initially create a FrameView and update the WebKit code to 13 cope with not having a view. 14 - Cache seven pages by default. 15 16 * WebCoreSupport/FrameLoaderClientGtk.cpp: 17 (WebKit::FrameLoaderClient::createFrame): 18 (WebKit::FrameLoaderClient::canCachePage): 19 (WebKit::FrameLoaderClient::savePlatformDataToCachedPage): 20 (WebKit::FrameLoaderClient::transitionToCommittedFromCachedPage): 21 (WebKit::FrameLoaderClient::transitionToCommittedForNewPage): 22 * webkit/webkitprivate.cpp: 23 (webkit_init): 24 * webkit/webkitprivate.h: 25 * webkit/webkitwebframe.cpp: 26 * webkit/webkitwebview.cpp: 27 1 28 2008-04-10 Mario Bensi <mbensi@pleyo.com> 2 29 -
trunk/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp
r31283 r31877 36 36 #include "PlatformString.h" 37 37 #include "PluginDatabase.h" 38 #include "RenderPart.h" 38 39 #include "ResourceRequest.h" 39 40 #include "CString.h" … … 285 286 return 0; 286 287 287 // Propagate the marginwidth/height and scrolling modes to the view.288 if (ownerElement->hasTagName(HTMLNames::frameTag) || ownerElement->hasTagName(HTMLNames::iframeTag)) {289 HTMLFrameElement* frameElt = static_cast<HTMLFrameElement*>(ownerElement);290 if (frameElt->scrollingMode() == ScrollbarAlwaysOff)291 childFrame->view()->setScrollbarsMode(ScrollbarAlwaysOff);292 int marginWidth = frameElt->getMarginWidth();293 int marginHeight = frameElt->getMarginHeight();294 if (marginWidth != -1)295 childFrame->view()->setMarginWidth(marginWidth);296 if (marginHeight != -1)297 childFrame->view()->setMarginHeight(marginHeight);298 }299 300 288 return childFrame.release(); 301 289 } … … 709 697 bool FrameLoaderClient::canCachePage() const 710 698 { 711 notImplemented(); 712 return false; 699 return true; 713 700 } 714 701 … … 741 728 void FrameLoaderClient::savePlatformDataToCachedPage(CachedPage*) 742 729 { 743 notImplemented();744 730 } 745 731 746 732 void FrameLoaderClient::transitionToCommittedFromCachedPage(CachedPage*) 747 733 { 748 notImplemented();749 734 } 750 735 751 736 void FrameLoaderClient::transitionToCommittedForNewPage() 752 737 { 753 notImplemented(); 754 } 755 756 } 738 Frame* frame = core(m_frame); 739 ASSERT(frame); 740 741 Page* page = frame->page(); 742 ASSERT(page); 743 744 WebKitWebView* containingWindow = getViewFromFrame(m_frame); 745 bool isMainFrame = frame == page->mainFrame(); 746 frame->setView(0); 747 748 FrameView* frameView; 749 if (isMainFrame) { 750 IntSize size = IntSize(GTK_WIDGET(containingWindow)->allocation.width, 751 GTK_WIDGET(containingWindow)->allocation.height); 752 frameView = new FrameView(frame, size); 753 WebKitWebViewPrivate* priv = WEBKIT_WEB_VIEW_GET_PRIVATE(containingWindow); 754 frameView->setGtkAdjustments(priv->horizontalAdjustment, priv->verticalAdjustment); 755 } else 756 frameView = new FrameView(frame); 757 758 frame->setView(frameView); 759 // FrameViews are created with a ref count of 1. Release this ref since we've assigned it to frame. 760 frameView->deref(); 761 frameView->setContainingWindow(GTK_WIDGET(containingWindow)); 762 763 if (frame->ownerRenderer()) 764 frame->ownerRenderer()->setWidget(frameView); 765 766 if (!frame->ownerElement()) 767 return; 768 769 HTMLFrameOwnerElement* ownerElement = frame->ownerElement(); 770 if (ownerElement->hasTagName(HTMLNames::frameTag) || ownerElement->hasTagName(HTMLNames::iframeTag)) { 771 HTMLFrameElement* frameElt = static_cast<HTMLFrameElement*>(ownerElement); 772 if (frameElt->scrollingMode() == ScrollbarAlwaysOff) 773 frameView->setScrollbarsMode(ScrollbarAlwaysOff); 774 int marginWidth = frameElt->getMarginWidth(); 775 int marginHeight = frameElt->getMarginHeight(); 776 if (marginWidth != -1) 777 frameView->setMarginWidth(marginWidth); 778 if (marginHeight != -1) 779 frameView->setMarginHeight(marginHeight); 780 } 781 } 782 783 } -
trunk/WebKit/gtk/webkit/webkitprivate.cpp
r31730 r31877 26 26 #include "Logging.h" 27 27 #include "NotImplemented.h" 28 #include "PageCache.h" 28 29 #include "Pasteboard.h" 29 30 #include "PasteboardHelperGtk.h" … … 94 95 WebCore::InitializeLoggingChannelsIfNecessary(); 95 96 97 // FIXME: Expose this with an API 98 WebCore::pageCache()->setCapacity(7); 99 96 100 #if ENABLE(DATABASE) 97 101 // FIXME: It should be possible for client applications to override this default location -
trunk/WebKit/gtk/webkit/webkitprivate.h
r31480 r31877 86 86 87 87 gboolean transparent; 88 89 GtkAdjustment* horizontalAdjustment; 90 GtkAdjustment* verticalAdjustment; 88 91 }; 89 92 -
trunk/WebKit/gtk/webkit/webkitwebframe.cpp
r31123 r31877 218 218 WebKitWebViewPrivate* viewPriv = WEBKIT_WEB_VIEW_GET_PRIVATE(webView); 219 219 220 priv->webView = webView; 220 221 priv->client = new WebKit::FrameLoaderClient(frame); 221 222 priv->coreFrame = new Frame(viewPriv->corePage, 0, priv->client); 222 223 FrameView* frameView = new FrameView(priv->coreFrame.get());224 frameView->setContainingWindow(GTK_WIDGET(webView));225 frameView->setGtkAdjustments(GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)),226 GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)));227 priv->coreFrame->setView(frameView);228 frameView->deref();229 223 priv->coreFrame->init(); 230 priv->webView = webView;231 224 232 225 return frame; … … 239 232 WebKitWebViewPrivate* viewPriv = WEBKIT_WEB_VIEW_GET_PRIVATE(webView); 240 233 234 priv->webView = webView; 241 235 priv->client = new WebKit::FrameLoaderClient(frame); 242 236 priv->coreFrame = new Frame(viewPriv->corePage, element, priv->client); 243 244 FrameView* frameView = new FrameView(priv->coreFrame.get());245 frameView->setContainingWindow(GTK_WIDGET(webView));246 priv->coreFrame->setView(frameView);247 frameView->deref();248 237 priv->coreFrame->init(); 249 priv->webView = webView;250 238 251 239 return frame; … … 489 477 FrameView* view = coreFrame->view(); 490 478 491 if (view ->layoutPending())479 if (view && view->layoutPending()) 492 480 view->layout(); 493 481 -
trunk/WebKit/gtk/webkit/webkitwebview.cpp
r31676 r31877 115 115 page->contextMenuController()->clearContextMenu(); 116 116 Frame* focusedFrame = page->focusController()->focusedOrMainFrame(); 117 118 if (!focusedFrame->view()) 119 return FALSE; 120 117 121 focusedFrame->view()->setCursor(pointerCursor()); 118 122 bool handledEvent = focusedFrame->eventHandler()->sendContextMenuEvent(event); … … 152 156 Page* page = core(WEBKIT_WEB_VIEW(widget)); 153 157 FrameView* view = page->mainFrame()->view(); 158 if (!view) 159 return FALSE; 160 154 161 Position start = page->mainFrame()->selectionController()->selection().start(); 155 162 Position end = page->mainFrame()->selectionController()->selection().end(); … … 252 259 GraphicsContext ctx(cr); 253 260 ctx.setGdkExposeEvent(event); 254 if (frame->renderer() ) {261 if (frame->renderer() && frame->view()) { 255 262 frame->view()->layoutIfNeededRecursive(); 256 263 … … 275 282 Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); 276 283 PlatformKeyboardEvent keyboardEvent(event); 284 285 if (!frame->view()) 286 return FALSE; 277 287 278 288 if (frame->eventHandler()->keyEvent(keyboardEvent)) … … 318 328 319 329 Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); 330 if (!frame->view()) 331 return FALSE; 332 320 333 PlatformKeyboardEvent keyboardEvent(event); 321 334 … … 338 351 if (event->button == 3) 339 352 return webkit_web_view_forward_context_menu_event(webView, PlatformMouseEvent(event)); 353 354 if (!frame->view()) 355 return FALSE; 340 356 341 357 return frame->eventHandler()->handleMousePressEvent(PlatformMouseEvent(event)); … … 357 373 } 358 374 375 if (!focusedFrame->view()) 376 return FALSE; 377 359 378 return focusedFrame->eventHandler()->handleMouseReleaseEvent(PlatformMouseEvent(event)); 360 379 } … … 365 384 366 385 Frame* frame = core(webView)->mainFrame(); 386 if (!frame->view()) 387 return FALSE; 388 367 389 return frame->eventHandler()->mouseMoved(PlatformMouseEvent(event)); 368 390 } … … 373 395 374 396 Frame* frame = core(webView)->mainFrame(); 397 if (!frame->view()) 398 return FALSE; 399 375 400 PlatformWheelEvent wheelEvent(event); 376 401 return frame->eventHandler()->handleWheelEvent(wheelEvent); … … 384 409 385 410 Frame* frame = core(webView)->mainFrame(); 411 if (!frame->view()) 412 return; 413 386 414 frame->view()->resize(allocation->width, allocation->height); 387 415 frame->forceLayout(); … … 439 467 { 440 468 FrameView* view = core(webkit_web_view_get_main_frame(webView))->view(); 469 470 if (hadj) 471 g_object_ref(hadj); 472 if (vadj) 473 g_object_ref(vadj); 474 475 WebKitWebViewPrivate* priv = webView->priv; 476 477 if (priv->horizontalAdjustment) 478 g_object_unref(priv->horizontalAdjustment); 479 if (priv->verticalAdjustment) 480 g_object_unref(priv->verticalAdjustment); 481 482 priv->horizontalAdjustment = hadj; 483 priv->verticalAdjustment = vadj; 484 485 if (!view) 486 return; 487 441 488 view->setGtkAdjustments(hadj, vadj); 442 489 } … … 632 679 delete priv->corePage; 633 680 681 if (priv->horizontalAdjustment) 682 g_object_unref(priv->horizontalAdjustment); 683 if (priv->verticalAdjustment) 684 g_object_unref(priv->verticalAdjustment); 634 685 g_object_unref(priv->backForwardList); 635 686 g_object_unref(priv->webSettings); … … 1249 1300 priv->corePage = new Page(new WebKit::ChromeClient(webView), new WebKit::ContextMenuClient, new WebKit::EditorClient(webView), new WebKit::DragClient, new WebKit::InspectorClient); 1250 1301 1302 priv->horizontalAdjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); 1303 priv->verticalAdjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); 1304 1305 #if GLIB_CHECK_VERSION(2,10,0) 1306 g_object_ref_sink(priv->horizontalAdjustment); 1307 g_object_ref_sink(priv->verticalAdjustment); 1308 #else 1309 g_object_ref(priv->horizontalAdjustment); 1310 gtk_object_sink(GTK_OBJECT(priv->horizontalAdjustment)); 1311 g_object_ref(priv->verticalAdjustment); 1312 gtk_object_sink(GTK_OBJECT(priv->verticalAdjustment)); 1313 #endif 1314 1251 1315 GTK_WIDGET_SET_FLAGS(webView, GTK_CAN_FOCUS); 1252 1316 priv->mainFrame = WEBKIT_WEB_FRAME(webkit_web_frame_new(webView));
Note: See TracChangeset
for help on using the changeset viewer.