Title: [190547] trunk/Source
- Revision
- 190547
- Author
- [email protected]
- Date
- 2015-10-03 19:38:19 -0700 (Sat, 03 Oct 2015)
Log Message
"Plug-in is blocked" message doesn't draw correctly
https://bugs.webkit.org/show_bug.cgi?id=149741
<rdar://problem/22920949>
Patch by Conrad Shultz and Ricky Mondello.
Patch by Ricky Mondello <[email protected]> on 2015-10-03
Reviewed by Anders Carlsson.
Source/WebCore:
No new tests are added.
Add PluginData API to check whether a MIME type is supported, regardless of plug-in visibility.
* plugins/PluginData.cpp:
(WebCore::PluginData::getWebVisibleMimesAndPluginIndices): Adopt getMimesAndPluginIndiciesForPlugins.
(WebCore::PluginData::getMimesAndPluginIndices): Added.
(WebCore::PluginData::getMimesAndPluginIndiciesForPlugins): Essentially factored out of
getWebVisibleMimesAndPluginIndices.
(WebCore::PluginData::supportsMimeType): Added. Somewhat similar to preexisting supportsWebVisibleMimeType.
* plugins/PluginData.h: Declare supportsMimeType.
Source/WebKit2:
If a WebKit client sets plug-in X to not be visible to the web, that doesn't mean we shouldn't consult
that plug-in when determining what kind of object type an object is. Properly classifying a non-web-visible
Netscape plug-in as such allows its bounds to properly measured, allowing it to be drawn properly.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::objectContentType): Use PluginData's supportsMimeType, rather than its
supportsWebVisibleMimeType, when determining the ObjectContentType for a MIME type on a url.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (190546 => 190547)
--- trunk/Source/WebCore/ChangeLog 2015-10-04 01:45:21 UTC (rev 190546)
+++ trunk/Source/WebCore/ChangeLog 2015-10-04 02:38:19 UTC (rev 190547)
@@ -1,3 +1,25 @@
+2015-10-03 Ricky Mondello <[email protected]>
+
+ "Plug-in is blocked" message doesn't draw correctly
+ https://bugs.webkit.org/show_bug.cgi?id=149741
+ <rdar://problem/22920949>
+
+ Patch by Conrad Shultz and Ricky Mondello.
+
+ Reviewed by Anders Carlsson.
+
+ No new tests are added.
+
+ Add PluginData API to check whether a MIME type is supported, regardless of plug-in visibility.
+
+ * plugins/PluginData.cpp:
+ (WebCore::PluginData::getWebVisibleMimesAndPluginIndices): Adopt getMimesAndPluginIndiciesForPlugins.
+ (WebCore::PluginData::getMimesAndPluginIndices): Added.
+ (WebCore::PluginData::getMimesAndPluginIndiciesForPlugins): Essentially factored out of
+ getWebVisibleMimesAndPluginIndices.
+ (WebCore::PluginData::supportsMimeType): Added. Somewhat similar to preexisting supportsWebVisibleMimeType.
+ * plugins/PluginData.h: Declare supportsMimeType.
+
2015-10-02 Antti Koivisto <[email protected]>
Inserting a child to a slot assigned node doesn't trigger repaint
Modified: trunk/Source/WebCore/plugins/PluginData.cpp (190546 => 190547)
--- trunk/Source/WebCore/plugins/PluginData.cpp 2015-10-04 01:45:21 UTC (rev 190546)
+++ trunk/Source/WebCore/plugins/PluginData.cpp 2015-10-04 02:38:19 UTC (rev 190547)
@@ -46,10 +46,19 @@
void PluginData::getWebVisibleMimesAndPluginIndices(Vector<MimeClassInfo>& mimes, Vector<size_t>& mimePluginIndices) const
{
+ getMimesAndPluginIndiciesForPlugins(webVisiblePlugins(), mimes, mimePluginIndices);
+}
+
+void PluginData::getMimesAndPluginIndices(Vector<MimeClassInfo>& mimes, Vector<size_t>& mimePluginIndices) const
+{
+ getMimesAndPluginIndiciesForPlugins(plugins(), mimes, mimePluginIndices);
+}
+
+void PluginData::getMimesAndPluginIndiciesForPlugins(const Vector<PluginInfo>& plugins, Vector<MimeClassInfo>& mimes, Vector<size_t>& mimePluginIndices) const
+{
ASSERT_ARG(mimes, mimes.isEmpty());
ASSERT_ARG(mimePluginIndices, mimePluginIndices.isEmpty());
- const Vector<PluginInfo>& plugins = webVisiblePlugins();
for (unsigned i = 0; i < plugins.size(); ++i) {
const PluginInfo& plugin = plugins[i];
for (auto& mime : plugin.mimes) {
@@ -108,6 +117,20 @@
return String();
}
+bool PluginData::supportsMimeType(const String& mimeType, const AllowedPluginTypes allowedPluginTypes) const
+{
+ Vector<MimeClassInfo> mimes;
+ Vector<size_t> mimePluginIndices;
+ const Vector<PluginInfo>& plugins = this->plugins();
+ getMimesAndPluginIndices(mimes, mimePluginIndices);
+
+ for (unsigned i = 0; i < mimes.size(); ++i) {
+ if (mimes[i].type == mimeType && (allowedPluginTypes == AllPlugins || plugins[mimePluginIndices[i]].isApplicationPlugin))
+ return true;
+ }
+ return false;
+}
+
void PluginData::refresh()
{
platformStrategies()->pluginStrategy()->refreshPlugins();
Modified: trunk/Source/WebCore/plugins/PluginData.h (190546 => 190547)
--- trunk/Source/WebCore/plugins/PluginData.h 2015-10-04 01:45:21 UTC (rev 190546)
+++ trunk/Source/WebCore/plugins/PluginData.h 2015-10-04 02:38:19 UTC (rev 190547)
@@ -100,12 +100,16 @@
String pluginNameForWebVisibleMimeType(const String& mimeType) const;
String pluginFileForWebVisibleMimeType(const String& mimeType) const;
+ WEBCORE_EXPORT bool supportsMimeType(const String& mimeType, const AllowedPluginTypes) const;
+
static void refresh();
private:
explicit PluginData(const Page*);
void initPlugins();
bool getPluginInfoForWebVisibleMimeType(const String& mimeType, PluginInfo&) const;
+ void getMimesAndPluginIndices(Vector<MimeClassInfo>&, Vector<size_t>&) const;
+ void getMimesAndPluginIndiciesForPlugins(const Vector<PluginInfo>&, Vector<MimeClassInfo>&, Vector<size_t>&) const;
protected:
#if defined ENABLE_WEB_REPLAY && ENABLE_WEB_REPLAY
Modified: trunk/Source/WebKit2/ChangeLog (190546 => 190547)
--- trunk/Source/WebKit2/ChangeLog 2015-10-04 01:45:21 UTC (rev 190546)
+++ trunk/Source/WebKit2/ChangeLog 2015-10-04 02:38:19 UTC (rev 190547)
@@ -1,3 +1,21 @@
+2015-10-03 Ricky Mondello <[email protected]>
+
+ "Plug-in is blocked" message doesn't draw correctly
+ https://bugs.webkit.org/show_bug.cgi?id=149741
+ <rdar://problem/22920949>
+
+ Patch by Conrad Shultz and Ricky Mondello.
+
+ Reviewed by Anders Carlsson.
+
+ If a WebKit client sets plug-in X to not be visible to the web, that doesn't mean we shouldn't consult
+ that plug-in when determining what kind of object type an object is. Properly classifying a non-web-visible
+ Netscape plug-in as such allows its bounds to properly measured, allowing it to be drawn properly.
+
+ * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+ (WebKit::WebFrameLoaderClient::objectContentType): Use PluginData's supportsMimeType, rather than its
+ supportsWebVisibleMimeType, when determining the ObjectContentType for a MIME type on a url.
+
2015-10-02 Enrica Casucci <[email protected]>
Text selection is inaccurate in Wikipedia pages when starting navigation from wikipedia.org.
Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (190546 => 190547)
--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2015-10-04 01:45:21 UTC (rev 190546)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2015-10-04 02:38:19 UTC (rev 190547)
@@ -1534,9 +1534,9 @@
bool plugInSupportsMIMEType = false;
if (WebPage* webPage = m_frame->page()) {
const PluginData& pluginData = webPage->corePage()->pluginData();
- if (pluginData.supportsWebVisibleMimeType(mimeType, PluginData::AllPlugins) && webFrame()->coreFrame()->loader().subframeLoader().allowPlugins())
+ if (pluginData.supportsMimeType(mimeType, PluginData::AllPlugins) && webFrame()->coreFrame()->loader().subframeLoader().allowPlugins())
plugInSupportsMIMEType = true;
- else if (pluginData.supportsWebVisibleMimeType(mimeType, PluginData::OnlyApplicationPlugins))
+ else if (pluginData.supportsMimeType(mimeType, PluginData::OnlyApplicationPlugins))
plugInSupportsMIMEType = true;
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes