2011-02-04  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        PluginDocuments don't create widgets for plugins on back/forward
        https://bugs.webkit.org/show_bug.cgi?id=53474

        Test that plugin loads when in a plugin document on back-forward.

        * plugins/plugin-document-back-forward-expected.txt: Added.
        * plugins/plugin-document-back-forward.html: Added.
2011-02-04  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        PluginDocuments don't create widgets for plugins on back/forward
        https://bugs.webkit.org/show_bug.cgi?id=53474

        Long ago, PluginDocument always caused the HTMLEmbedElement to create
        its widget synchronously during a post-layout task.  Recently, however,
        some changes to the HistroyController caused layout on back/forward to
        become slightly more complicated (and added an extra level of recursion
        to layout).  This extra level of recursion triggered the "I've recursed
        too many times" condition in the post-layout task queue, causing the
        FrameView to run the remainder of the tasks asynchronously.
        Unfortunately, that broke PluginDocument because it needs its the
        HTMLEmbedElement's updateWidget task to run synchronously.

        This patch adds a mechanism for "kicking off" the pending post-layout
        tasks synchronously (instead of waiting for the timer to fire).
        PluginDocument then uses that facility to ensure that the
        HTMLEmbedElement's updateWidget task happens.

        Test: plugins/plugin-document-back-forward.html

        * html/PluginDocument.cpp:
        (WebCore::PluginDocumentParser::appendBytes):
        * page/FrameView.cpp:
        (WebCore::FrameView::flushAnyPendingPostLayoutTasks):
        * page/FrameView.h:
2011-02-04  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        PluginDocuments don't create widgets for plugins on back/forward
        https://bugs.webkit.org/show_bug.cgi?id=53474

        Teach the test plugin how to call alert on load.

        * DumpRenderTree/TestNetscapePlugIn/main.cpp:
        (NPP_New):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@77706 268f45cc-cd09-0410-ab3c-d52691b4dbfc
9 files changed