Changeset 168668 in webkit
- Timestamp:
- May 12, 2014 7:25:28 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 7 added
- 31 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r168667 r168668 1 2014-05-06 Jon Honeycutt <jhoneycutt@apple.com> 2 3 Don't dispatch 'beforeload' event inside FrameView::layout() 4 5 https://bugs.webkit.org/show_bug.cgi?id=132621 6 <rdar://problem/15661470> 7 8 This merges Blink revision 162073 with minor renaming and style 9 changes. From that commit: 10 11 Executing JavaScript code inside FrameView::layout() is problematic. 12 e.g. an assertion failure tested in fast/events/beforeload-assertion.html. 13 We should avoid it. 14 15 This CL makes 'beforeload' event dispatching for plugins and iframes asynchronous, 16 except plugin access from JavaScript code (HTMLPlugInElement:: 17 renderWidgetForJSBindings). 18 19 Reviewed by Brent Fulgham. 20 21 * compositing/plugins/composited-plugin.html: 22 * compositing/plugins/no-backing-store.html: 23 * fast/dom/beforeload/flash-before-load.html: 24 * fast/events/beforeload-assertion-expected.txt: Added. 25 * fast/events/beforeload-assertion.html: Added. 26 * fast/events/beforeload-iframe-crash-expected.txt: Added. 27 * fast/events/beforeload-iframe-crash.html: Added. 28 * fast/events/beforeload-input-time-crash-expected.txt: Added. 29 * fast/events/beforeload-input-time-crash.html: Added. 30 * http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-data.html: 31 * http/tests/security/contentSecurityPolicy/1.1/plugintypes-nourl-blocked.html: 32 * http/tests/security/contentSecurityPolicy/object-src-no-url-allowed.html: 33 * http/tests/security/contentSecurityPolicy/object-src-no-url-blocked.html: 34 * http/tests/security/contentSecurityPolicy/object-src-none-allowed.html: 35 * http/tests/security/contentSecurityPolicy/object-src-none-blocked.html: 36 * http/tests/security/contentSecurityPolicy/resources/multiple-iframe-plugin-test.js: 37 (testImpl.iframe.onload): 38 (testImpl): 39 * http/tests/security/mixedContent/insecure-plugin-in-iframe.html: 40 * platform/mac/plugins/supports-carbon-event-model.html: 41 * plugins/get-user-agent-with-null-npp-from-npp-new.html: 42 * plugins/mouse-click-plugin-clears-selection.html: 43 * plugins/netscape-plugin-map-data-to-src.html: 44 * plugins/no-mime-with-valid-extension.html: 45 * plugins/plugin-initiate-popup-window.html: 46 * plugins/windowless_plugin_paint_test.html: 47 * resources/plugin.js: Added. 48 (runAfterPluginLoad): 49 1 50 2014-05-12 Roger Fong <roger_fong@apple.com> 2 51 -
trunk/LayoutTests/compositing/plugins/composited-plugin.html
r62857 r168668 2 2 <html> 3 3 <body> 4 <script src="../../resources/plugin.js"></script> 5 <script>runAfterPluginLoad(null, NotifyDone);</script> 4 6 <embed type="application/x-webkit-test-netscape" drawingmodel="coreanimation"> 5 7 </body> -
trunk/LayoutTests/compositing/plugins/no-backing-store.html
r130689 r168668 7 7 } 8 8 </style> 9 <script src="../../resources/plugin.js"></script> 9 10 <script type="text/javascript" charset="utf-8"> 10 if (window.testRunner) {11 if (window.testRunner) 11 12 testRunner.dumpAsText(); 12 testRunner.waitUntilDone(); 13 }13 14 runAfterPluginLoad(doTest, DoNotNotifyDone); 14 15 15 16 function doTest() … … 23 24 }, 0) 24 25 } 25 window.addEventListener('load', doTest, false);26 26 </script> 27 27 </head> -
trunk/LayoutTests/fast/dom/beforeload/flash-before-load.html
r120792 r168668 5 5 <body> 6 6 <div id="console"></div> 7 <script src="../../../resources/plugin.js"></script> 7 8 <script> 8 if (window.testRunner) 9 testRunner.dumpAsText(); 9 if (window.testRunner) 10 testRunner.dumpAsText(); 11 12 runAfterPluginLoad(null, NotifyDone); 10 13 </script> 11 14 -
trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-data.html
r125531 r168668 2 2 <html> 3 3 <head> 4 <script src="/js-test-resources/plugin.js"></script> 4 5 <script> 5 if (window.testRunner) { 6 testRunner.dumpAsText(); 7 testRunner.dumpChildFramesAsText(); 8 } 6 if (window.testRunner) { 7 testRunner.dumpAsText(); 8 testRunner.dumpChildFramesAsText(); 9 } 10 11 runAfterPluginLoad(null, NotifyDone); 9 12 </script> 10 13 <script src="/plugins/resources/mock-plugin-logger.js"></script> -
trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-nourl-blocked.html
r125531 r168668 2 2 <html> 3 3 <head> 4 <script src="/js-test-resources/plugin.js"></script> 4 5 <script> 5 if (window.testRunner) 6 testRunner.dumpAsText(); 6 if (window.testRunner) 7 testRunner.dumpAsText(); 8 9 runAfterPluginLoad(null, NotifyDone); 7 10 </script> 8 11 <meta http-equiv="X-WebKit-CSP" content="plugin-types text/plain"> -
trunk/LayoutTests/http/tests/security/contentSecurityPolicy/object-src-no-url-allowed.html
r133095 r168668 2 2 <html> 3 3 <head> 4 <script src="/js-test-resources/plugin.js"></script> 4 5 <script> 5 if (window.testRunner) 6 testRunner.dumpAsText(); 6 if (window.testRunner) 7 testRunner.dumpAsText(); 8 9 runAfterPluginLoad(null, NotifyDone); 7 10 </script> 8 11 <meta http-equiv="Content-Security-Policy" content="object-src 'self'"> -
trunk/LayoutTests/http/tests/security/contentSecurityPolicy/object-src-no-url-blocked.html
r133095 r168668 2 2 <html> 3 3 <head> 4 <script src="/js-test-resources/plugin.js"></script> 4 5 <script> 5 if (window.testRunner) 6 testRunner.dumpAsText(); 6 if (window.testRunner) 7 testRunner.dumpAsText(); 8 9 runAfterPluginLoad(null, NotifyDone); 7 10 </script> 8 11 <meta http-equiv="Content-Security-Policy" content="object-src 'none'"> -
trunk/LayoutTests/http/tests/security/contentSecurityPolicy/object-src-none-allowed.html
r125531 r168668 2 2 <html> 3 3 <head> 4 <script> 5 if (window.testRunner) { 6 testRunner.dumpAsText(); 7 testRunner.dumpChildFramesAsText(); 8 } 9 </script> 4 <script src="/js-test-resources/plugin.js"></script> 10 5 </head> 11 6 <body> 12 7 <iframe src="http://127.0.0.1:8000/security/contentSecurityPolicy/resources/echo-object-data.pl?plugin=data:application/x-webkit-test-netscape,logifloaded&log=PASS!&csp=img-src%20'none'"></iframe> 13 8 </body> 9 <script> 10 if (window.testRunner) { 11 testRunner.dumpAsText(); 12 testRunner.dumpChildFramesAsText(); 13 } 14 15 runAfterPluginLoad(null, NotifyDone, document.getElementsByTagName("iframe")[0]); 16 </script> 14 17 </html> -
trunk/LayoutTests/http/tests/security/contentSecurityPolicy/object-src-none-blocked.html
r125531 r168668 2 2 <html> 3 3 <head> 4 <script> 5 if (window.testRunner) { 6 testRunner.dumpAsText(); 7 testRunner.dumpChildFramesAsText(); 8 } 9 </script> 4 <script src="/js-test-resources/plugin.js"></script> 10 5 </head> 11 6 <body> 12 7 <iframe src="http://127.0.0.1:8000/security/contentSecurityPolicy/resources/echo-object-data.pl?plugin=data:application/x-webkit-test-netscape,logifloaded&log=FAIL&csp=object-src%20'none'"></iframe> 13 8 </body> 9 <script> 10 if (window.testRunner) { 11 testRunner.dumpAsText(); 12 testRunner.dumpChildFramesAsText(); 13 } 14 15 runAfterPluginLoad(null, NotifyDone, document.getElementsByTagName("iframe")[0]); 16 </script> 14 17 </html> -
trunk/LayoutTests/http/tests/security/contentSecurityPolicy/resources/multiple-iframe-plugin-test.js
r133095 r168668 39 39 iframe.src += "&type=application/x-webkit-test-netscape"; 40 40 41 iframe.onload = function() { testImpl(experimental); }; 41 iframe.onload = function() { 42 if (window.internals) 43 internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks(iframe); 44 testImpl(experimental); 45 }; 42 46 document.body.appendChild(iframe); 43 47 } -
trunk/LayoutTests/http/tests/security/mixedContent/insecure-plugin-in-iframe.html
r120174 r168668 4 4 if (window.testRunner) 5 5 testRunner.dumpAsText(); 6 7 onload = function() { 8 if (window.internals) 9 internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks(document.querySelector('iframe')); 10 }; 6 11 </script> 7 12 <p>This test loads a secure iframe that loads an insecure plugin. We should -
trunk/LayoutTests/platform/mac/plugins/supports-carbon-event-model.html
r120417 r168668 1 <script src="../../../resources/plugin.js"></script> 1 2 <script> 2 if (window.testRunner) 3 testRunner.dumpAsText(); 3 if (window.testRunner) 4 testRunner.dumpAsText(); 5 6 runAfterPluginLoad(null, NotifyDone); 4 7 </script> 5 8 -
trunk/LayoutTests/plugins/get-user-agent-with-null-npp-from-npp-new.html
r120417 r168668 2 2 <html> 3 3 <head> 4 <script src="../resources/plugin.js"></script> 4 5 <script> 5 6 if (window.testRunner) 6 7 testRunner.dumpAsText(); 8 runAfterPluginLoad(null, NotifyDone); 7 9 </script> 8 10 </head> -
trunk/LayoutTests/plugins/mouse-click-plugin-clears-selection.html
r120417 r168668 1 1 <html> 2 2 <head> 3 <script src="../resources/plugin.js"></script> 3 4 <script> 4 5 5 function runTest() {6 runAfterPluginLoad(function() { 6 7 inputElement = document.getElementById('frame'); 7 8 inputElement.focus(); … … 15 16 eventSender.mouseUp(); 16 17 } 17 } 18 }, NotifyDone); 18 19 </script> 19 20 </head> 20 <body onload="runTest();">21 <body> 21 22 <embed id="plg" type="application/x-webkit-test-netscape" width="100" height="100" windowedplugin="false"></embed><br> 22 23 <input id="frame" value="hello"/> -
trunk/LayoutTests/plugins/netscape-plugin-map-data-to-src.html
r120417 r168668 1 1 <html> 2 2 <head> 3 <script src="../resources/plugin.js"></script> 3 4 <script> 4 5 if (window.testRunner) 5 6 testRunner.dumpAsText(); 7 runAfterPluginLoad(null, NotifyDone); 6 8 </script> 7 9 <body style="margin:0px;overflow:hidden"> -
trunk/LayoutTests/plugins/no-mime-with-valid-extension.html
r120417 r168668 1 <script src="../resources/plugin.js"></script> 1 2 <script> 2 if (window.testRunner) {3 if (window.testRunner) 3 4 testRunner.dumpAsText(); 4 testRunner.waitUntilDone(); 5 } 5 runAfterPluginLoad(null, NotifyDone); 6 6 </script> 7 7 <p> … … 14 14 <!-- Embed tag with missing type="" parameter --> 15 15 <embed id="plugin" name="plugin" src="resources/test.testnetscape" logSrc="1"> 16 <script>17 if (window.testRunner)18 testRunner.notifyDone();19 </script> -
trunk/LayoutTests/plugins/plugin-initiate-popup-window.html
r120417 r168668 65 65 </script> 66 66 </head> 67 <body onload=" window.setTimeout(test, 0);">67 <body onload="internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks(); test();"> 68 68 <embed type="application/x-webkit-test-netscape" width=100 height=40 evaluatescript="mouse::popup_by_mousedown()" windowedplugin="false"></embed><br> 69 69 <embed type="application/x-webkit-test-netscape" width=100 height=40 evaluatescript="key::popup_by_keydown()" windowedplugin="false"></embed><br> -
trunk/LayoutTests/plugins/windowless_plugin_paint_test.html
r120417 r168668 15 15 // Create the plugin in the middle of the page. 16 16 pluginDiv.innerHTML = "<embed id=\"testPlugin\" type=\"application/x-webkit-test-netscape\" width=\"200\" height=\"200\" onpaintevent=\"didPaint()\" windowedPlugin=\"false\"></embed>"; 17 if (window.internals) 18 internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks(); 17 19 testRunner.displayInvalidatedRegion(); 18 20 } -
trunk/Source/WebCore/ChangeLog
r168666 r168668 1 2014-05-06 Jon Honeycutt <jhoneycutt@apple.com> 2 3 Don't dispatch 'beforeload' event inside FrameView::layout() 4 5 https://bugs.webkit.org/show_bug.cgi?id=132621 6 <rdar://problem/15661470> 7 8 This merges Blink revision 162073 with minor renaming and style 9 changes. From that commit: 10 11 Executing JavaScript code inside FrameView::layout() is problematic. 12 e.g. an assertion failure tested in fast/events/beforeload-assertion.html. 13 We should avoid it. 14 15 This CL makes 'beforeload' event dispatching for plugins and iframes asynchronous, 16 except plugin access from JavaScript code (HTMLPlugInElement:: 17 renderWidgetForJSBindings). 18 19 Reviewed by Brent Fulgham. 20 21 Tests: fast/events/beforeload-assertion.html 22 fast/events/beforeload-iframe-crash.html 23 fast/events/beforeload-input-time-crash.html 24 25 * WebCore.exp.in: 26 * dom/Document.cpp: 27 (WebCore::Document::updateLayoutIgnorePendingStylesheets): 28 * dom/Document.h: 29 * html/HTMLAppletElement.cpp: 30 (WebCore::HTMLAppletElement::renderWidgetForJSBindings): 31 * html/HTMLEmbedElement.cpp: 32 (WebCore::HTMLEmbedElement::renderWidgetForJSBindings): 33 * html/HTMLObjectElement.cpp: 34 (WebCore::HTMLObjectElement::renderWidgetForJSBindings): 35 * page/FrameView.cpp: 36 (WebCore::FrameView::FrameView): 37 (WebCore::FrameView::reset): 38 (WebCore::FrameView::updateEmbeddedObjectsTimerFired): 39 (WebCore::FrameView::flushAnyPendingPostLayoutTasks): 40 (WebCore::FrameView::performPostLayoutTasks): 41 * page/FrameView.h: 42 * testing/Internals.cpp: 43 (WebCore::Internals::updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks): 44 * testing/Internals.h: 45 * testing/Internals.idl: 46 1 47 2014-05-12 Roger Fong <roger_fong@apple.com> 2 48 -
trunk/Source/WebCore/WebCore.exp.in
r168661 r168668 1257 1257 __ZN7WebCore8Document26pageSizeAndMarginsInPixelsEiRNS_7IntSizeERiS3_S3_S3_ 1258 1258 __ZN7WebCore8Document27removeMediaCanStartListenerEPNS_21MediaCanStartListenerE 1259 __ZN7WebCore8Document36updateLayoutIgnorePendingStylesheetsE v1259 __ZN7WebCore8Document36updateLayoutIgnorePendingStylesheetsENS0_18RunPostLayoutTasksE 1260 1260 __ZN7WebCore8Document4headEv 1261 1261 __ZN7WebCore8Document8iconURLsEi … … 1774 1774 __ZNK7WebCore21BackForwardController18canGoBackOrForwardEi 1775 1775 __ZNK7WebCore21BackForwardController9backCountEv 1776 __ZNK7WebCore21HTMLFrameOwnerElement15contentDocumentEv 1776 1777 __ZNK7WebCore21NetworkStorageSession13cookieStorageEv 1777 1778 __ZNK7WebCore21RenderLayerCompositor11scrollLayerEv -
trunk/Source/WebCore/dom/Document.cpp
r168416 r168668 1832 1832 // lets us get reasonable answers. The long term solution to this problem is 1833 1833 // to instead suspend JavaScript execution. 1834 void Document::updateLayoutIgnorePendingStylesheets( )1834 void Document::updateLayoutIgnorePendingStylesheets(Document::RunPostLayoutTasks runPostLayoutTasks) 1835 1835 { 1836 1836 bool oldIgnore = m_ignorePendingStylesheets; 1837 1837 1838 1838 if (!haveStylesheetsLoaded()) { 1839 1839 m_ignorePendingStylesheets = true; … … 1856 1856 1857 1857 updateLayout(); 1858 1859 if (runPostLayoutTasks == RunPostLayoutTasksSynchronously && view()) 1860 view()->flushAnyPendingPostLayoutTasks(); 1858 1861 1859 1862 m_ignorePendingStylesheets = oldIgnore; -
trunk/Source/WebCore/dom/Document.h
r168416 r168668 588 588 bool updateStyleIfNeededForNode(const Node&); 589 589 void updateLayout(); 590 void updateLayoutIgnorePendingStylesheets(); 590 enum RunPostLayoutTasks { 591 RunPostLayoutTasksAsyhnchronously, 592 RunPostLayoutTasksSynchronously, 593 }; 594 void updateLayoutIgnorePendingStylesheets(RunPostLayoutTasks = RunPostLayoutTasksAsyhnchronously); 591 595 PassRef<RenderStyle> styleForElementIgnoringPendingStylesheets(Element*); 592 596 -
trunk/Source/WebCore/html/HTMLAppletElement.cpp
r164441 r168668 89 89 return 0; 90 90 91 document().updateLayoutIgnorePendingStylesheets(); 91 // Needs to load the plugin immediatedly because this function is called 92 // when JavaScript code accesses the plugin. 93 // FIXME: <rdar://16893708> Check if dispatching events here is safe. 94 document().updateLayoutIgnorePendingStylesheets(Document::RunPostLayoutTasksSynchronously); 92 95 return renderWidget(); 93 96 } -
trunk/Source/WebCore/html/HTMLEmbedElement.cpp
r166853 r168668 72 72 { 73 73 FrameView* view = document().view(); 74 if (!view || (!view->isInLayout() && !view->isPainting())) 75 document().updateLayoutIgnorePendingStylesheets(); 74 if (!view || (!view->isInLayout() && !view->isPainting())) { 75 // Needs to load the plugin immediatedly because this function is called 76 // when JavaScript code accesses the plugin. 77 // FIXME: <rdar://16893708> Check if dispatching events here is safe. 78 document().updateLayoutIgnorePendingStylesheets(Document::RunPostLayoutTasksSynchronously); 79 } 76 80 return findWidgetRenderer(this); 77 81 } -
trunk/Source/WebCore/html/HTMLObjectElement.cpp
r167291 r168668 84 84 RenderWidget* HTMLObjectElement::renderWidgetForJSBindings() const 85 85 { 86 document().updateLayoutIgnorePendingStylesheets(); 86 // Needs to load the plugin immediatedly because this function is called 87 // when JavaScript code accesses the plugin. 88 // FIXME: <rdar://16893708> Check if dispatching events here is safe. 89 document().updateLayoutIgnorePendingStylesheets(Document::RunPostLayoutTasksSynchronously); 87 90 return renderWidget(); // This will return 0 if the renderer is not a RenderWidget. 88 91 } -
trunk/Source/WebCore/page/FrameView.cpp
r168664 r168668 161 161 , m_inSynchronousPostLayout(false) 162 162 , m_postLayoutTasksTimer(this, &FrameView::postLayoutTimerFired) 163 , m_updateEmbeddedObjectsTimer(this, &FrameView::updateEmbeddedObjectsTimerFired) 163 164 , m_isTransparent(false) 164 165 , m_baseBackgroundColor(Color::white) … … 251 252 m_nestedLayoutCount = 0; 252 253 m_postLayoutTasksTimer.stop(); 254 m_updateEmbeddedObjectsTimer.stop(); 253 255 m_firstLayout = true; 254 256 m_firstLayoutCallbackPending = false; … … 2743 2745 } 2744 2746 2747 void FrameView::updateEmbeddedObjectsTimerFired(Timer<FrameView>*) 2748 { 2749 RefPtr<FrameView> protect(this); 2750 m_updateEmbeddedObjectsTimer.stop(); 2751 for (unsigned i = 0; i < maxUpdateEmbeddedObjectsIterations; i++) { 2752 if (updateEmbeddedObjects()) 2753 break; 2754 } 2755 } 2756 2745 2757 void FrameView::flushAnyPendingPostLayoutTasks() 2746 2758 { 2747 if ( !m_postLayoutTasksTimer.isActive())2748 return;2749 2750 performPostLayoutTasks();2759 if (m_postLayoutTasksTimer.isActive()) 2760 performPostLayoutTasks(); 2761 if (m_updateEmbeddedObjectsTimer.isActive()) 2762 updateEmbeddedObjectsTimerFired(nullptr); 2751 2763 } 2752 2764 2753 2765 void FrameView::performPostLayoutTasks() 2754 2766 { 2767 // FIXME: We should not run any JavaScript code in this function. 2768 2755 2769 m_postLayoutTasksTimer.stop(); 2756 2770 … … 2783 2797 Ref<FrameView> protect(*this); 2784 2798 2785 for (unsigned i = 0; i < maxUpdateEmbeddedObjectsIterations; i++) { 2786 if (updateEmbeddedObjects()) 2787 break; 2788 } 2799 m_updateEmbeddedObjectsTimer.startOneShot(0); 2789 2800 2790 2801 if (auto* page = frame().page()) { -
trunk/Source/WebCore/page/FrameView.h
r168602 r168668 592 592 void speculativeTilingEnableTimerFired(Timer<FrameView>&); 593 593 594 void updateEmbeddedObjectsTimerFired(Timer<FrameView>*); 594 595 bool updateEmbeddedObjects(); 595 596 void updateEmbeddedObject(RenderEmbeddedObject&); … … 646 647 unsigned m_nestedLayoutCount; 647 648 Timer<FrameView> m_postLayoutTasksTimer; 649 Timer<FrameView> m_updateEmbeddedObjectsTimer; 648 650 bool m_firstLayoutCallbackPending; 649 651 -
trunk/Source/WebCore/testing/Internals.cpp
r168075 r168668 51 51 #include "FrameLoader.h" 52 52 #include "FrameView.h" 53 #include "HTMLIFrameElement.h" 53 54 #include "HTMLInputElement.h" 54 55 #include "HTMLNames.h" … … 1896 1897 } 1897 1898 1899 void Internals::updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks(ExceptionCode& ec) 1900 { 1901 updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks(nullptr, ec); 1902 } 1903 1904 void Internals::updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks(Node* node, ExceptionCode& ec) 1905 { 1906 Document* document; 1907 if (!node) 1908 document = contextDocument(); 1909 else if (node->isDocumentNode()) 1910 document = toDocument(node); 1911 else if (node->hasTagName(HTMLNames::iframeTag)) 1912 document = toHTMLIFrameElement(node)->contentDocument(); 1913 else { 1914 ec = TypeError; 1915 return; 1916 } 1917 1918 document->updateLayoutIgnorePendingStylesheets(Document::RunPostLayoutTasksSynchronously); 1919 } 1920 1898 1921 #if !PLATFORM(IOS) 1899 1922 static const char* cursorTypeToString(Cursor::Type cursorType) -
trunk/Source/WebCore/testing/Internals.h
r167530 r168668 271 271 void startTrackingRepaints(ExceptionCode&); 272 272 void stopTrackingRepaints(ExceptionCode&); 273 void updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks(ExceptionCode&); 274 void updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks(Node*, ExceptionCode&); 273 275 274 276 PassRefPtr<ArrayBuffer> serializeObject(PassRefPtr<SerializedScriptValue>) const; -
trunk/Source/WebCore/testing/Internals.idl
r168302 r168668 232 232 [RaisesException] void stopTrackingRepaints(); 233 233 234 // |node| should be Document, HTMLIFrameElement, or unspecified. 235 // If |node| is an HTMLIFrameElement, it assumes node.contentDocument is 236 // specified without security checks. Unspecified means this document. 237 [RaisesException] void updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks(optional Node node); 238 234 239 // Returns a string with information about the mouse cursor used at the specified client location. 235 240 [RaisesException] DOMString getCurrentCursorInfo();
Note: See TracChangeset
for help on using the changeset viewer.