<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[197409] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/197409">197409</a></dd>
<dt>Author</dt> <dd>akling@apple.com</dd>
<dt>Date</dt> <dd>2016-03-01 13:20:46 -0800 (Tue, 01 Mar 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>REGRESSION (<a href="http://trac.webkit.org/projects/webkit/changeset/154616">r154616</a>): Accelerated drawing is off during the initial load
&lt;https://webkit.org/b/123812&gt;

Reviewed by Tim Horton.

Source/WebCore:

Robustify the hey-the-Settings-changed callbacks in Page to handle document-less frames.
This is needed because now Settings are changed even before the main Frame has a Document.

* page/Page.cpp:
(WebCore::networkStateChanged):
(WebCore::Page::updateStyleForAllPagesAfterGlobalChangeInEnvironment):
(WebCore::Page::takeAnyMediaCanStartListener):
(WebCore::Page::setMediaVolume):
(WebCore::Page::setPageScaleFactor):
(WebCore::Page::invalidateStylesForAllLinks):
(WebCore::Page::invalidateStylesForLink):
(WebCore::Page::dnsPrefetchingStateChanged):
(WebCore::Page::storageBlockingStateChanged):
(WebCore::Page::setMuted):
(WebCore::Page::captionPreferencesChanged):
(WebCore::Page::setSessionID):
(WebCore::Page::setPlaybackTarget):
(WebCore::Page::playbackTargetAvailabilityDidChange):
(WebCore::Page::setShouldPlayToPlaybackTarget):
* page/Settings.cpp:
(WebCore::setImageLoadingSettings):

Source/WebKit2:

Load preferences before instantiating the first DrawingArea. This ensures that we do the
initial paint using accelerated drawing, and avoids allocating persistent data structures
only needed by the software rendering path.

* WebProcess/WebPage/WebPage.cpp:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorepagePagecpp">trunk/Source/WebCore/page/Page.cpp</a></li>
<li><a href="#trunkSourceWebCorepageSettingscpp">trunk/Source/WebCore/page/Settings.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (197408 => 197409)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-03-01 21:18:42 UTC (rev 197408)
+++ trunk/Source/WebCore/ChangeLog        2016-03-01 21:20:46 UTC (rev 197409)
</span><span class="lines">@@ -1,3 +1,32 @@
</span><ins>+2016-03-01  Andreas Kling  &lt;akling@apple.com&gt;
+
+        REGRESSION (r154616): Accelerated drawing is off during the initial load
+        &lt;https://webkit.org/b/123812&gt;
+
+        Reviewed by Tim Horton.
+
+        Robustify the hey-the-Settings-changed callbacks in Page to handle document-less frames.
+        This is needed because now Settings are changed even before the main Frame has a Document.
+
+        * page/Page.cpp:
+        (WebCore::networkStateChanged):
+        (WebCore::Page::updateStyleForAllPagesAfterGlobalChangeInEnvironment):
+        (WebCore::Page::takeAnyMediaCanStartListener):
+        (WebCore::Page::setMediaVolume):
+        (WebCore::Page::setPageScaleFactor):
+        (WebCore::Page::invalidateStylesForAllLinks):
+        (WebCore::Page::invalidateStylesForLink):
+        (WebCore::Page::dnsPrefetchingStateChanged):
+        (WebCore::Page::storageBlockingStateChanged):
+        (WebCore::Page::setMuted):
+        (WebCore::Page::captionPreferencesChanged):
+        (WebCore::Page::setSessionID):
+        (WebCore::Page::setPlaybackTarget):
+        (WebCore::Page::playbackTargetAvailabilityDidChange):
+        (WebCore::Page::setShouldPlayToPlaybackTarget):
+        * page/Settings.cpp:
+        (WebCore::setImageLoadingSettings):
+
</ins><span class="cx"> 2016-03-01  Commit Queue  &lt;commit-queue@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r197056.
</span></span></pre></div>
<a id="trunkSourceWebCorepagePagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Page.cpp (197408 => 197409)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Page.cpp        2016-03-01 21:18:42 UTC (rev 197408)
+++ trunk/Source/WebCore/page/Page.cpp        2016-03-01 21:20:46 UTC (rev 197409)
</span><span class="lines">@@ -146,8 +146,11 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     AtomicString eventName = isOnLine ? eventNames().onlineEvent : eventNames().offlineEvent;
</span><del>-    for (auto&amp; frame : frames)
</del><ins>+    for (auto&amp; frame : frames) {
+        if (!frame-&gt;document())
+            continue;
</ins><span class="cx">         frame-&gt;document()-&gt;dispatchWindowEvent(Event::create(eventName, false, false));
</span><ins>+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static const ViewState::Flags PageInitialViewState = ViewState::IsVisible | ViewState::IsInWindow;
</span><span class="lines">@@ -482,6 +485,8 @@
</span><span class="cx">             // If a change in the global environment has occurred, we need to
</span><span class="cx">             // make sure all the properties a recomputed, therefore we invalidate
</span><span class="cx">             // the properties cache.
</span><ins>+            if (!frame-&gt;document())
+                continue;
</ins><span class="cx">             if (StyleResolver* styleResolver = frame-&gt;document()-&gt;styleResolverIfExists())
</span><span class="cx">                 styleResolver-&gt;invalidateMatchedPropertiesCache();
</span><span class="cx">             frame-&gt;document()-&gt;scheduleForcedStyleRecalc();
</span><span class="lines">@@ -545,6 +550,8 @@
</span><span class="cx"> inline MediaCanStartListener* Page::takeAnyMediaCanStartListener()
</span><span class="cx"> {
</span><span class="cx">     for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
</span><ins>+        if (!frame-&gt;document())
+            continue;
</ins><span class="cx">         if (MediaCanStartListener* listener = frame-&gt;document()-&gt;takeAnyMediaCanStartListener())
</span><span class="cx">             return listener;
</span><span class="cx">     }
</span><span class="lines">@@ -767,6 +774,8 @@
</span><span class="cx"> 
</span><span class="cx">     m_mediaVolume = volume;
</span><span class="cx">     for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
</span><ins>+        if (!frame-&gt;document())
+            continue;
</ins><span class="cx">         frame-&gt;document()-&gt;mediaVolumeDidChange();
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -799,8 +808,11 @@
</span><span class="cx">         }
</span><span class="cx"> #if ENABLE(MEDIA_CONTROLS_SCRIPT)
</span><span class="cx">         if (inStableState) {
</span><del>-            for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext())
</del><ins>+            for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
+                if (!frame-&gt;document())
+                    continue;
</ins><span class="cx">                 frame-&gt;document()-&gt;pageScaleFactorChangedAndStable();
</span><ins>+            }
</ins><span class="cx">         }
</span><span class="cx"> #endif
</span><span class="cx">         return;
</span><span class="lines">@@ -837,8 +849,11 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_CONTROLS_SCRIPT)
</span><span class="cx">     if (inStableState) {
</span><del>-        for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext())
</del><ins>+        for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
+            if (!frame-&gt;document())
+                continue;
</ins><span class="cx">             frame-&gt;document()-&gt;pageScaleFactorChangedAndStable();
</span><ins>+        }
</ins><span class="cx">     }
</span><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(inStableState);
</span><span class="lines">@@ -1097,14 +1112,20 @@
</span><span class="cx"> 
</span><span class="cx"> void Page::invalidateStylesForAllLinks()
</span><span class="cx"> {
</span><del>-    for (Frame* frame = m_mainFrame.get(); frame; frame = frame-&gt;tree().traverseNext())
</del><ins>+    for (Frame* frame = m_mainFrame.get(); frame; frame = frame-&gt;tree().traverseNext()) {
+        if (!frame-&gt;document())
+            continue;
</ins><span class="cx">         frame-&gt;document()-&gt;visitedLinkState().invalidateStyleForAllLinks();
</span><ins>+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Page::invalidateStylesForLink(LinkHash linkHash)
</span><span class="cx"> {
</span><del>-    for (Frame* frame = m_mainFrame.get(); frame; frame = frame-&gt;tree().traverseNext())
</del><ins>+    for (Frame* frame = m_mainFrame.get(); frame; frame = frame-&gt;tree().traverseNext()) {
+        if (!frame-&gt;document())
+            continue;
</ins><span class="cx">         frame-&gt;document()-&gt;visitedLinkState().invalidateStyleForLink(linkHash);
</span><ins>+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Page::setDebugger(JSC::Debugger* debugger)
</span><span class="lines">@@ -1224,8 +1245,11 @@
</span><span class="cx"> 
</span><span class="cx"> void Page::dnsPrefetchingStateChanged()
</span><span class="cx"> {
</span><del>-    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext())
</del><ins>+    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
+        if (!frame-&gt;document())
+            continue;
</ins><span class="cx">         frame-&gt;document()-&gt;initDNSPrefetch();
</span><ins>+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Vector&lt;Ref&lt;PluginViewBase&gt;&gt; Page::pluginViews()
</span><span class="lines">@@ -1248,8 +1272,11 @@
</span><span class="cx"> 
</span><span class="cx"> void Page::storageBlockingStateChanged()
</span><span class="cx"> {
</span><del>-    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext())
</del><ins>+    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
+        if (!frame-&gt;document())
+            continue;
</ins><span class="cx">         frame-&gt;document()-&gt;storageBlockingStateDidChange();
</span><ins>+    }
</ins><span class="cx"> 
</span><span class="cx">     // Collect the PluginViews in to a vector to ensure that action the plug-in takes
</span><span class="cx">     // from below storageBlockingStateChanged does not affect their lifetime.
</span><span class="lines">@@ -1288,8 +1315,11 @@
</span><span class="cx"> 
</span><span class="cx">     m_muted = muted;
</span><span class="cx"> 
</span><del>-    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext())
</del><ins>+    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
+        if (!frame-&gt;document())
+            continue;
</ins><span class="cx">         frame-&gt;document()-&gt;pageMutedStateDidChange();
</span><ins>+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_SESSION)
</span><span class="lines">@@ -1713,8 +1743,11 @@
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><span class="cx"> void Page::captionPreferencesChanged()
</span><span class="cx"> {
</span><del>-    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext())
</del><ins>+    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
+        if (!frame-&gt;document())
+            continue;
</ins><span class="cx">         frame-&gt;document()-&gt;captionPreferencesChanged();
</span><ins>+    }
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -1796,8 +1829,11 @@
</span><span class="cx">     if (!privateBrowsingStateChanged)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext())
</del><ins>+    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
+        if (!frame-&gt;document())
+            continue;
</ins><span class="cx">         frame-&gt;document()-&gt;privateBrowsingStateDidChange();
</span><ins>+    }
</ins><span class="cx"> 
</span><span class="cx">     // Collect the PluginViews in to a vector to ensure that action the plug-in takes
</span><span class="cx">     // from below privateBrowsingStateChanged does not affect their lifetime.
</span><span class="lines">@@ -1846,20 +1882,29 @@
</span><span class="cx"> 
</span><span class="cx"> void Page::setPlaybackTarget(uint64_t contextId, Ref&lt;MediaPlaybackTarget&gt;&amp;&amp; target)
</span><span class="cx"> {
</span><del>-    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext())
</del><ins>+    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
+        if (!frame-&gt;document())
+            continue;
</ins><span class="cx">         frame-&gt;document()-&gt;setPlaybackTarget(contextId, target.copyRef());
</span><ins>+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Page::playbackTargetAvailabilityDidChange(uint64_t contextId, bool available)
</span><span class="cx"> {
</span><del>-    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext())
</del><ins>+    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
+        if (!frame-&gt;document())
+            continue;
</ins><span class="cx">         frame-&gt;document()-&gt;playbackTargetAvailabilityDidChange(contextId, available);
</span><ins>+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Page::setShouldPlayToPlaybackTarget(uint64_t clientId, bool shouldPlay)
</span><span class="cx"> {
</span><del>-    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext())
</del><ins>+    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
+        if (!frame-&gt;document())
+            continue;
</ins><span class="cx">         frame-&gt;document()-&gt;setShouldPlayToPlaybackTarget(clientId, shouldPlay);
</span><ins>+    }
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorepageSettingscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Settings.cpp (197408 => 197409)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Settings.cpp        2016-03-01 21:18:42 UTC (rev 197408)
+++ trunk/Source/WebCore/page/Settings.cpp        2016-03-01 21:20:46 UTC (rev 197409)
</span><span class="lines">@@ -61,6 +61,8 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     for (Frame* frame = &amp;page-&gt;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
</span><ins>+        if (!frame-&gt;document())
+            continue;
</ins><span class="cx">         frame-&gt;document()-&gt;cachedResourceLoader().setImagesEnabled(page-&gt;settings().areImagesEnabled());
</span><span class="cx">         frame-&gt;document()-&gt;cachedResourceLoader().setAutoLoadImages(page-&gt;settings().loadsImagesAutomatically());
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (197408 => 197409)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-03-01 21:18:42 UTC (rev 197408)
+++ trunk/Source/WebKit2/ChangeLog        2016-03-01 21:20:46 UTC (rev 197409)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2016-03-01  Andreas Kling  &lt;akling@apple.com&gt;
+
+        REGRESSION (r154616): Accelerated drawing is off during the initial load
+        &lt;https://webkit.org/b/123812&gt;
+
+        Reviewed by Tim Horton.
+
+        Load preferences before instantiating the first DrawingArea. This ensures that we do the
+        initial paint using accelerated drawing, and avoids allocating persistent data structures
+        only needed by the software rendering path.
+
+        * WebProcess/WebPage/WebPage.cpp:
+
</ins><span class="cx"> 2016-03-01  Alex Christensen  &lt;achristensen@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Fix tests when using NetworkSession
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (197408 => 197409)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2016-03-01 21:18:42 UTC (rev 197408)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2016-03-01 21:20:46 UTC (rev 197409)
</span><span class="lines">@@ -404,6 +404,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     m_page = std::make_unique&lt;Page&gt;(pageConfiguration);
</span><ins>+    updatePreferences(parameters.store);
</ins><span class="cx"> 
</span><span class="cx">     m_drawingArea = DrawingArea::create(*this, parameters);
</span><span class="cx">     m_drawingArea-&gt;setPaintingEnabled(false);
</span><span class="lines">@@ -451,7 +452,6 @@
</span><span class="cx">     m_page-&gt;setTextAutosizingWidth(parameters.textAutosizingWidth);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    updatePreferences(parameters.store);
</del><span class="cx">     platformInitialize();
</span><span class="cx"> 
</span><span class="cx">     setUseFixedLayout(parameters.useFixedLayout);
</span></span></pre>
</div>
</div>

</body>
</html>