diff options
| -rw-r--r-- | Source/WebCore/plugins/PluginQuirkSet.h | 3 | ||||
| -rw-r--r-- | Source/WebCore/plugins/win/PluginPackageWin.cpp | 6 | ||||
| -rw-r--r-- | Source/WebCore/plugins/win/PluginViewWin.cpp | 2 |
3 files changed, 10 insertions, 1 deletions
diff --git a/Source/WebCore/plugins/PluginQuirkSet.h b/Source/WebCore/plugins/PluginQuirkSet.h index 7e296dc25..37068c9c1 100644 --- a/Source/WebCore/plugins/PluginQuirkSet.h +++ b/Source/WebCore/plugins/PluginQuirkSet.h @@ -49,7 +49,8 @@ namespace WebCore { PluginQuirkRequiresDefaultScreenDepth = 1 << 13, PluginQuirkDontCallSetWindowMoreThanOnce = 1 << 14, PluginQuirkIgnoreRightClickInWindowlessMode = 1 << 15, - PluginQuirkWantsChromeUserAgent = 1 << 16 + PluginQuirkWantsChromeUserAgent = 1 << 16, + PluginQuirkNeedsSetWindowTwice = 1 << 17 }; class PluginQuirkSet { diff --git a/Source/WebCore/plugins/win/PluginPackageWin.cpp b/Source/WebCore/plugins/win/PluginPackageWin.cpp index ab8459f75..988fbfeef 100644 --- a/Source/WebCore/plugins/win/PluginPackageWin.cpp +++ b/Source/WebCore/plugins/win/PluginPackageWin.cpp @@ -162,6 +162,12 @@ void PluginPackage::determineQuirks(const String& mimeType) if (compareFileVersion(lastKnownUnloadableRealPlayerVersion) > 0) m_quirks.add(PluginQuirkDontUnloadPlugin); } + + // The Adobe Acrobat plugin only displays the pdf correctly on the first load if set window is + // called on it twice in a row. + if (name() == "Adobe Acrobat") + m_quirks.add(PluginQuirkNeedsSetWindowTwice); + } bool PluginPackage::fetchInfo() diff --git a/Source/WebCore/plugins/win/PluginViewWin.cpp b/Source/WebCore/plugins/win/PluginViewWin.cpp index fd03ac7fa..3fa897db8 100644 --- a/Source/WebCore/plugins/win/PluginViewWin.cpp +++ b/Source/WebCore/plugins/win/PluginViewWin.cpp @@ -865,6 +865,8 @@ void PluginView::setNPWindowRect(const IntRect& rect) JSC::JSLock::DropAllLocks dropAllLocks(JSDOMWindowBase::commonVM()); setCallingPlugin(true); m_plugin->pluginFuncs()->setwindow(m_instance, &m_npWindow); + if (m_plugin->quirks().contains(PluginQuirkNeedsSetWindowTwice)) + m_plugin->pluginFuncs()->setwindow(m_instance, &m_npWindow); setCallingPlugin(false); m_haveCalledSetWindow = true; |
