Add status events on <link rel=prerender> elements.
https://bugs.webkit.org/show_bug.cgi?id=96474

Reviewed by Adam Barth.

The new PrerenderStatusEvent is sent to link elements when
prerenders are started by the embedder, and also sent when they
are stopped. Pages using this feature can now serialize launching
prerenders, and track timing performance.

Source/Platform:

* chromium/public/WebPrerender.h:
(WebKit::WebPrerender::WebPrerender):
(WebKit::WebPrerender::operator=):
(WebPrerender):

Source/WebCore:

Tested in a new WebKitUnitTest for the chromium port.

* GNUmakefile.list.am:
* Target.pri:
* WebCore.gypi:
* WebCore.vcproj/WebCore.vcproj:
* WebCore.xcodeproj/project.pbxproj:
* dom/EventNames.h:
(WebCore):
* html/HTMLLinkElement.cpp:
(WebCore):
(WebCore::HTMLLinkElement::didStartLinkPrerender):
(WebCore::HTMLLinkElement::didStopLinkPrerender):
(WebCore::HTMLLinkElement::didSendLoadForLinkPrerender):
(WebCore::HTMLLinkElement::didSendDOMContentLoadedForLinkPrerender):
* html/HTMLLinkElement.h:
(HTMLLinkElement):
* loader/LinkLoader.cpp:
(WebCore::LinkLoader::didStartPrerender):
(WebCore):
(WebCore::LinkLoader::didStopPrerender):
(WebCore::LinkLoader::didSendLoadForPrerender):
(WebCore::LinkLoader::didSendDOMContentLoadedForPrerender):
(WebCore::LinkLoader::loadLink):
* loader/LinkLoader.h:
(LinkLoader):
* loader/LinkLoaderClient.h:
(LinkLoaderClient):
* loader/Prerenderer.cpp:
(WebCore::Prerenderer::render):
* loader/Prerenderer.h:
(WebCore):
(Prerenderer):
* platform/PrerenderClient.h: Copied from Source/WebCore/loader/LinkLoaderClient.h.
(WebCore):
(PrerenderClient):
(WebCore::PrerenderClient::~PrerenderClient):
* platform/PrerenderHandle.h:
(WebCore):
(PrerenderHandle):
* platform/chromium/Prerender.cpp:
(WebCore::Prerender::Prerender):
(WebCore::Prerender::removeClient):
(WebCore):
(WebCore::Prerender::add):
(WebCore::Prerender::cancel):
(WebCore::Prerender::abandon):
(WebCore::Prerender::didStartPrerender):
(WebCore::Prerender::didStopPrerender):
(WebCore::Prerender::didSendLoadForPrerender):
(WebCore::Prerender::didSendDOMContentLoadedForPrerender):
* platform/chromium/Prerender.h:
(WebKit):
(WebCore):
(Prerender):
* platform/chromium/PrerenderHandle.cpp:
(WebCore::PrerenderHandle::create):
(WebCore::PrerenderHandle::PrerenderHandle):
(WebCore::PrerenderHandle::~PrerenderHandle):
(WebCore::PrerenderHandle::removeClient):
(WebCore):
* platform/chromium/support/WebPrerender.cpp:
(WebKit::WebPrerender::toPrerender):
(WebKit):
(WebKit::WebPrerender::assign):
(WebKit::WebPrerender::isNull):
(WebKit::WebPrerender::didStartPrerender):
(WebKit::WebPrerender::didStopPrerender):
(WebKit::WebPrerender::didSendLoadForPrerender):
(WebKit::WebPrerender::didSendDOMContentLoadedForPrerender):

Source/WebKit/chromium:

* WebKit.gyp:
* WebKit.gypi:
* tests/FrameTestHelpers.cpp:
(WebKit::FrameTestHelpers::createWebView):
(FrameTestHelpers):
(WebKit::FrameTestHelpers::createWebViewAndLoad):
* tests/FrameTestHelpers.h:
(FrameTestHelpers):
* tests/PrerenderingTest.cpp: Added.
* tests/data/prerender/multiple_prerenders.html: Added.
* tests/data/prerender/single_prerender.html: Added.


git-svn-id: https://svn.webkit.org/repository/webkit/trunk/Source/Platform/chromium/public@137045 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 file changed
tree: 659832c3595ce4c1a3d989f71b7eef48a1811509
  1. android/
  2. default/
  3. linux/
  4. mac/
  5. win/
  6. Platform.h
  7. WebAnimation.h
  8. WebAnimationCurve.h
  9. WebAnimationDelegate.h
  10. WebAudioBus.h
  11. WebAudioDestinationConsumer.h
  12. WebAudioDevice.h
  13. WebBlobData.h
  14. WebBlobRegistry.h
  15. WebCanvas.h
  16. WebClipboard.h
  17. WebColor.h
  18. WebCommon.h
  19. WebCompositorFrame.h
  20. WebCompositorFrameAck.h
  21. WebCompositorOutputSurface.h
  22. WebCompositorOutputSurfaceClient.h
  23. WebCompositorSoftwareOutputDevice.h
  24. WebCompositorSupport.h
  25. WebCompositorTransferableResourceList.h
  26. WebContentLayer.h
  27. WebContentLayerClient.h
  28. WebCookie.h
  29. WebCookieJar.h
  30. WebCString.h
  31. WebData.h
  32. WebDelegatedRendererLayer.h
  33. WebDragData.h
  34. WebExternalTextureLayer.h
  35. WebExternalTextureLayerClient.h
  36. WebFileInfo.h
  37. WebFileSystem.h
  38. WebFileUtilities.h
  39. WebFilterOperation.h
  40. WebFilterOperations.h
  41. WebFlingAnimator.h
  42. WebFloatAnimationCurve.h
  43. WebFloatKeyframe.h
  44. WebFloatPoint.h
  45. WebFloatQuad.h
  46. WebFloatRect.h
  47. WebGamepad.h
  48. WebGamepads.h
  49. WebGestureCurve.h
  50. WebGestureCurveTarget.h
  51. WebGraphicsContext3D.h
  52. WebGraphicsMemoryAllocation.h
  53. WebGraphicsMemoryStats.h
  54. WebHTTPBody.h
  55. WebHTTPHeaderVisitor.h
  56. WebHTTPLoadInfo.h
  57. WebImage.h
  58. WebImageLayer.h
  59. WebInputHandler.h
  60. WebInputHandlerClient.h
  61. WebIOSurfaceLayer.h
  62. WebLayer.h
  63. WebLayerScrollClient.h
  64. WebLayerTreeView.h
  65. WebLayerTreeViewClient.h
  66. WebLocalizedString.h
  67. WebMediaConstraints.h
  68. WebMediaStreamCenter.h
  69. WebMediaStreamCenterClient.h
  70. WebMediaStreamComponent.h
  71. WebMediaStreamDescriptor.h
  72. WebMediaStreamSource.h
  73. WebMediaStreamSourcesRequest.h
  74. WebMessagePortChannel.h
  75. WebMessagePortChannelClient.h
  76. WebMimeRegistry.h
  77. WebNonCopyable.h
  78. WebPoint.h
  79. WebPrerender.h
  80. WebPrerenderingSupport.h
  81. WebPrivateOwnPtr.h
  82. WebPrivatePtr.h
  83. WebRect.h
  84. WebReferrerPolicy.h
  85. WebRenderingStats.h
  86. WebRTCConfiguration.h
  87. WebRTCDataChannel.h
  88. WebRTCICECandidate.h
  89. WebRTCPeerConnectionHandler.h
  90. WebRTCPeerConnectionHandlerClient.h
  91. WebRTCSessionDescription.h
  92. WebRTCSessionDescriptionRequest.h
  93. WebRTCStatsRequest.h
  94. WebRTCStatsResponse.h
  95. WebRTCVoidRequest.h
  96. WebScreenInfo.h
  97. WebScrollbar.h
  98. WebScrollbarLayer.h
  99. WebScrollbarThemeGeometry.h
  100. WebScrollbarThemePainter.h
  101. WebSharedGraphicsContext3D.h
  102. WebSize.h
  103. WebSocketStreamError.h
  104. WebSocketStreamHandle.h
  105. WebSocketStreamHandleClient.h
  106. WebSolidColorLayer.h
  107. WebStorageArea.h
  108. WebStorageNamespace.h
  109. WebString.h
  110. WebThread.h
  111. WebThreadSafeData.h
  112. WebTransformAnimationCurve.h
  113. WebTransformationMatrix.h
  114. WebTransformKeyframe.h
  115. WebTransformOperations.h
  116. WebURL.h
  117. WebURLError.h
  118. WebURLLoader.h
  119. WebURLLoaderClient.h
  120. WebURLLoadTiming.h
  121. WebURLRequest.h
  122. WebURLResponse.h
  123. WebVector.h
  124. WebVideoFrame.h
  125. WebVideoFrameProvider.h
  126. WebVideoLayer.h
  127. WebWorkerRunLoop.h