WebKit Contributor Meeting 2012 - LayoutTestController Functions That We Want to Move to Internals


  • Everything that makes many ports skip tests should be considered.
  • Functions that use internal WebKit methods whose only purpose is to support DRT (as opposed as providing public API) should be strongly considered.
  • Functions that rely upon a significant amount of WebKit code may be best to remain in LayoutTestController, so that this code would be tested.

We'll file bugs in Tools/Tests component as we go, too. Meta bug for tracking the ongoing work:

Mac DRT has a StorageTrackerDelegate to test WebStorageManager, but no other port seems to have this. Related LayoutTestController functions that are implemented in Mac only are:

  • deleteAllLocalStorage
  • syncLocalStorage
  • observeStorageTrackerNotifications
  • deleteLocalStorageForOrigin
  • localStorageDiskUsageForOrigin
  • originsWithLocalStorage

(morrita: This set of APIs looks a part of real Mac WebKit API. See:

Animation Controller DRT APIs that can be ported to internals as these APIs depend on core frame pointer. Currently implemented for - Chromium, Gtk, Efl, Qt, Mac, Win

  • pauseAnimationAtTimeOnElementWithId
  • pauseTransitionAtTimeOnElementWithId
  • numberOfActiveAnimations
  • suspendAnimations
  • resumeAnimations

  • setTextDirection - calls a WebKit API on Mac and Chromium, but it seems that other than passing it through to WebCore, it doesn't do much else

The following methods are not implemented in all ports and should be considered for move to Internals:

  • printToPDF - No Implementation, no usage, No Testcase.

(ap) I think that it's implemented in Mac DRT, and it was used when originally added in r35078, but printing/media-queries-print.html test appears to be using another method now.

  • addDisallowedURL - not implemented consistently, and webcore (not browser/app) specific
  • addURLToRedirect
  • addUserScript
  • addUserStyleSheet
  • callShouldCloseOnWebView
  • apiTestNewWindowDataLoadBaseURL - remove? unused.
  • apiTestGoToCurrentBackForwardItem - remove? unused.

  • setCloseRemainingWindowWhenComplete - Any ports doesn't implement this function.
  • setDefersLoading - This method is implemented by QT, EFL ports. And also, this API depends on core page setting method.
  • setEditingBehavior - implemented by almost ports. However, this methods just set a setEditingBehaviorType() method of setting in core page.
  • setFrameFlatteningEnabled - This method just enables a frame flattening option via setting method of core page. (
  • setPrivateBrowsingEnabled - This method just enables/disables via setting method of core page. (
  • setPluginsEnabled - This method just enables/disables via setting method of core page. (

  • allowRoundingHacks

The following methods are specific to Chromium port only and have independent implementation of WorkQueue* in chromium/LayoutTestController.cpp AFAIK These APIs are added to test the queueing of Chromium's UI thread and Worker thread. In each API, WorkQueue is creating a test_shell to execute a task typically by adding to WorkQueue.

  • queueBackNavigation
  • queueForwardNavigation
  • queueLoad
  • queueLoadHTMLString
  • queueLoadingScript
  • queueNonLoadingScript
  • queueReload

  • testOnscreen - no port is using it?
  • testRepaint - only Chromium uses it

  • setCacheModel: Implemented only by GTK which is internally calling WebCore/MemoryCache & WebCore/PageCache API. Rest all port not implemented. Can be considered for moving to Internals.
  • setAutoFilled: Blackberry, GTK, QT, Win & Chromium ports used WebKit interface to set the value finally in HTMLInputElement. Rest port don't implement. Strongly can be considered for moving to Internals.
  • setAuthorAndUserStyleEnabled: EFL, GTK, Blackberry and WX don't implement. QT uses WebKit interface to set the value in WebCore settings object. Chromium & Win set it to their preferences object which sets all preferences in one call. Can be checked for moving to Internals but some reservations because of Win & Chromium ports.
  • setApplicationCacheOriginQuota: Only QT implements it in WebKit interface layer. Rest all port don't have implementation. Strongly can be considered for moving to Internals.
  • setAppCacheMaxSize: Chromium, Win, Blackberrym, Wx has no implementation. GTK, Efl & QT has implementation through WebKit interface layer which hooks into WebCore API. Can be moved to Internals.

Last modified 12 years ago Last modified on May 23, 2012 12:20:03 PM