From 6882a04fb36642862b11efe514251d32070c3d65 Mon Sep 17 00:00:00 2001 From: Konstantin Tokarev Date: Thu, 25 Aug 2016 19:20:41 +0300 Subject: Imported QtWebKit TP3 (git b57bc6801f1876c3220d5a4bfea33d620d477443) Change-Id: I3b1d8a2808782c9f34d50240000e20cb38d3680f Reviewed-by: Konstantin Tokarev --- Source/WebCore/plugins/DOMPluginArray.cpp | 72 +++++++++++++++++++------------ 1 file changed, 45 insertions(+), 27 deletions(-) (limited to 'Source/WebCore/plugins/DOMPluginArray.cpp') diff --git a/Source/WebCore/plugins/DOMPluginArray.cpp b/Source/WebCore/plugins/DOMPluginArray.cpp index c8a53a579..383be1646 100644 --- a/Source/WebCore/plugins/DOMPluginArray.cpp +++ b/Source/WebCore/plugins/DOMPluginArray.cpp @@ -1,6 +1,6 @@ /* * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) - * Copyright (C) 2008 Apple Inc. All rights reserved. + * Copyright (C) 2008, 2015 Apple Inc. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -26,6 +26,12 @@ #include "PluginData.h" #include +#if ENABLE(WEB_REPLAY) +#include "Document.h" +#include "WebReplayInputs.h" +#include +#endif + namespace WebCore { DOMPluginArray::DOMPluginArray(Frame* frame) @@ -42,44 +48,39 @@ unsigned DOMPluginArray::length() const PluginData* data = pluginData(); if (!data) return 0; - return data->plugins().size(); + + return data->publiclyVisiblePlugins().size(); } -PassRefPtr DOMPluginArray::item(unsigned index) +RefPtr DOMPluginArray::item(unsigned index) { PluginData* data = pluginData(); if (!data) - return 0; - const Vector& plugins = data->plugins(); + return nullptr; + + const Vector& plugins = data->publiclyVisiblePlugins(); if (index >= plugins.size()) - return 0; - return DOMPlugin::create(data, m_frame, index).get(); + return nullptr; + return DOMPlugin::create(data, m_frame, plugins[index]); } -bool DOMPluginArray::canGetItemsForName(const AtomicString& propertyName) +RefPtr DOMPluginArray::namedItem(const AtomicString& propertyName) { PluginData* data = pluginData(); if (!data) - return 0; - const Vector& plugins = data->plugins(); - for (unsigned i = 0; i < plugins.size(); ++i) { - if (plugins[i].name == propertyName) - return true; + return nullptr; + + for (auto& plugin : data->webVisiblePlugins()) { + if (plugin.name == propertyName) + return DOMPlugin::create(data, m_frame, plugin); } - return false; + return nullptr; } -PassRefPtr DOMPluginArray::namedItem(const AtomicString& propertyName) +Vector DOMPluginArray::supportedPropertyNames() { - PluginData* data = pluginData(); - if (!data) - return 0; - const Vector& plugins = data->plugins(); - for (unsigned i = 0; i < plugins.size(); ++i) { - if (plugins[i].name == propertyName) - return DOMPlugin::create(data, m_frame, i).get(); - } - return 0; + // FIXME: Should be implemented. + return Vector(); } void DOMPluginArray::refresh(bool reload) @@ -90,11 +91,28 @@ void DOMPluginArray::refresh(bool reload) PluginData* DOMPluginArray::pluginData() const { if (!m_frame) - return 0; + return nullptr; + Page* page = m_frame->page(); if (!page) - return 0; - return page->pluginData(); + return nullptr; + + PluginData* pluginData = &page->pluginData(); + +#if ENABLE(WEB_REPLAY) + if (!m_frame->document()) + return pluginData; + + InputCursor& cursor = m_frame->document()->inputCursor(); + if (cursor.isCapturing()) + cursor.appendInput(pluginData); + else if (cursor.isReplaying()) { + if (FetchPluginData* input = cursor.fetchInput()) + pluginData = input->pluginData().get(); + } +#endif + + return pluginData; } } // namespace WebCore -- cgit v1.2.1