[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-10851-g50815da
andersca at apple.com
andersca at apple.com
Wed Dec 22 18:38:24 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit a2bccde1d98e593f15f02e9f9f7e265b07335d3d
Author: andersca at apple.com <andersca at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Dec 15 01:06:05 2010 +0000
Cannot type into plugin edit field
https://bugs.webkit.org/show_bug.cgi?id=51074
<rdar://problem/8483741>
Reviewed by Sam Weinig.
Add a PrognameShouldBeWebKitPluginHost quirk, since it turns out Flash Player calls getprogname() and checks
if the return value is "WebKitPluginHost" in order to determine when to handle NPCocoaEventKeyDown events.
* PluginProcess/PluginProcess.cpp:
(WebKit::PluginProcess::netscapePluginModule):
If the plug-in module has the PrognameShouldBeWebKitPluginHost quirk, call setprocname("WebKitPluginHost").
* Shared/Plugins/Netscape/NetscapePluginModule.cpp:
(WebKit::NetscapePluginModule::load):
Call determineQuirks()
* Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm:
(WebKit::NetscapePluginModule::determineQuirks):
Add the PrognameShouldBeWebKitPluginHost quirk for Flash.
* Shared/Plugins/Netscape/win/NetscapePluginModuleWin.cpp:
(WebKit::NetscapePluginModule::determineQuirks):
* Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:
(WebKit::NetscapePluginModule::determineQuirks):
Add stubs.
* Shared/Plugins/PluginQuirks.h:
Add new PluginQuirks file.
* WebKit2.xcodeproj/project.pbxproj:
Add PluginQuirks.h
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@74077 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 8286fb8..42fd943 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -2,6 +2,41 @@
Reviewed by Sam Weinig.
+ Cannot type into plugin edit field
+ https://bugs.webkit.org/show_bug.cgi?id=51074
+ <rdar://problem/8483741>
+
+ Add a PrognameShouldBeWebKitPluginHost quirk, since it turns out Flash Player calls getprogname() and checks
+ if the return value is "WebKitPluginHost" in order to determine when to handle NPCocoaEventKeyDown events.
+
+ * PluginProcess/PluginProcess.cpp:
+ (WebKit::PluginProcess::netscapePluginModule):
+ If the plug-in module has the PrognameShouldBeWebKitPluginHost quirk, call setprocname("WebKitPluginHost").
+
+ * Shared/Plugins/Netscape/NetscapePluginModule.cpp:
+ (WebKit::NetscapePluginModule::load):
+ Call determineQuirks()
+
+ * Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm:
+ (WebKit::NetscapePluginModule::determineQuirks):
+ Add the PrognameShouldBeWebKitPluginHost quirk for Flash.
+
+ * Shared/Plugins/Netscape/win/NetscapePluginModuleWin.cpp:
+ (WebKit::NetscapePluginModule::determineQuirks):
+ * Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:
+ (WebKit::NetscapePluginModule::determineQuirks):
+ Add stubs.
+
+ * Shared/Plugins/PluginQuirks.h:
+ Add new PluginQuirks file.
+
+ * WebKit2.xcodeproj/project.pbxproj:
+ Add PluginQuirks.h
+
+2010-12-14 Anders Carlsson <andersca at apple.com>
+
+ Reviewed by Sam Weinig.
+
Add a NetscapePluginModuleX11 and move the Qt implementation of PluginInfoStore::getPluginInfo there
https://bugs.webkit.org/show_bug.cgi?id=51066
diff --git a/WebKit2/PluginProcess/PluginProcess.cpp b/WebKit2/PluginProcess/PluginProcess.cpp
index 506bb7d..6c19c21 100644
--- a/WebKit2/PluginProcess/PluginProcess.cpp
+++ b/WebKit2/PluginProcess/PluginProcess.cpp
@@ -81,6 +81,13 @@ NetscapePluginModule* PluginProcess::netscapePluginModule()
if (!m_pluginModule) {
ASSERT(!m_pluginPath.isNull());
m_pluginModule = NetscapePluginModule::getOrCreate(m_pluginPath);
+
+#if PLATFORM(MAC)
+ if (m_pluginModule) {
+ if (m_pluginModule->pluginQuirks().contains(PluginQuirks::PrognameShouldBeWebKitPluginHost))
+ setprogname("WebKitPluginHost");
+ }
+#endif
}
return m_pluginModule.get();
diff --git a/WebKit2/Shared/Plugins/Netscape/NetscapePluginModule.cpp b/WebKit2/Shared/Plugins/Netscape/NetscapePluginModule.cpp
index 6c14c4d..fec00b3 100644
--- a/WebKit2/Shared/Plugins/Netscape/NetscapePluginModule.cpp
+++ b/WebKit2/Shared/Plugins/Netscape/NetscapePluginModule.cpp
@@ -122,6 +122,8 @@ bool NetscapePluginModule::load()
ASSERT(initializedNetscapePluginModules().find(this) == notFound);
initializedNetscapePluginModules().append(this);
+ determineQuirks();
+
return true;
}
diff --git a/WebKit2/Shared/Plugins/Netscape/NetscapePluginModule.h b/WebKit2/Shared/Plugins/Netscape/NetscapePluginModule.h
index 0988821..a245b11 100644
--- a/WebKit2/Shared/Plugins/Netscape/NetscapePluginModule.h
+++ b/WebKit2/Shared/Plugins/Netscape/NetscapePluginModule.h
@@ -27,6 +27,7 @@
#define NetscapePluginModule_h
#include "Module.h"
+#include "PluginQuirks.h"
#include <WebCore/npfunctions.h>
#include <wtf/RefCounted.h>
#include <wtf/text/WTFString.h>
@@ -50,9 +51,13 @@ public:
static bool getPluginInfo(const String& pluginPath, PluginInfoStore::Plugin&);
+ const PluginQuirks& pluginQuirks() const { return m_pluginQuirks; }
+
private:
explicit NetscapePluginModule(const String& pluginPath);
+ void determineQuirks();
+
bool tryLoad();
bool load();
void unload();
@@ -63,6 +68,8 @@ private:
bool m_isInitialized;
unsigned m_pluginCount;
+ PluginQuirks m_pluginQuirks;
+
NPP_ShutdownProcPtr m_shutdownProcPtr;
NPPluginFuncs m_pluginFuncs;
diff --git a/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm b/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm
index c4f1a5e..7062b0b 100644
--- a/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm
+++ b/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm
@@ -323,4 +323,16 @@ bool NetscapePluginModule::getPluginInfo(const String& pluginPath, PluginInfoSto
return true;
}
+void NetscapePluginModule::determineQuirks()
+{
+ PluginInfoStore::Plugin plugin;
+ if (!getPluginInfo(m_pluginPath, plugin))
+ return;
+
+ if (plugin.bundleIdentifier == "com.macromedia.Flash Player.plugin") {
+ // Flash requires that the return value of getprocname() be "WebKitPluginHost".
+ m_pluginQuirks.add(PluginQuirks::PrognameShouldBeWebKitPluginHost);
+ }
+}
+
} // namespace WebKit
diff --git a/WebKit2/Shared/Plugins/Netscape/win/NetscapePluginModuleWin.cpp b/WebKit2/Shared/Plugins/Netscape/win/NetscapePluginModuleWin.cpp
index 6684ecf..f969ba4 100644
--- a/WebKit2/Shared/Plugins/Netscape/win/NetscapePluginModuleWin.cpp
+++ b/WebKit2/Shared/Plugins/Netscape/win/NetscapePluginModuleWin.cpp
@@ -113,5 +113,9 @@ bool NetscapePluginModule::getPluginInfo(const String& pluginPath, PluginInfoSto
return true;
}
+void NetscapePluginModule::determineQuirks()
+{
+}
+
} // namespace WebKit
diff --git a/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp b/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp
index 20357ae..a02cdad 100644
--- a/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp
+++ b/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp
@@ -64,4 +64,8 @@ bool NetscapePluginModule::getPluginInfo(const String& pluginPath, PluginInfoSto
return true;
}
+void NetscapePluginModule::determineQuirks()
+{
+}
+
} // namespace WebKit
diff --git a/WebKit2/Shared/Plugins/PluginQuirks.h b/WebKit2/Shared/Plugins/PluginQuirks.h
new file mode 100644
index 0000000..8dd3a74
--- /dev/null
+++ b/WebKit2/Shared/Plugins/PluginQuirks.h
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef PluginQuirks_h
+#define PluginQuirks_h
+
+namespace WebKit {
+
+class PluginQuirks {
+public:
+ enum PluginQuirk {
+ // Mac specific quirks:
+#if PLATFORM(MAC)
+ // The plug-in wants the call to getprogame() to return "WebKitPluginHost".
+ // Adobe Flash Will not handle key down events otherwise.
+ PrognameShouldBeWebKitPluginHost,
+#endif
+
+ NumPluginQuirks
+ };
+
+ PluginQuirks()
+ : m_quirks(0)
+ {
+ COMPILE_ASSERT(sizeof(m_quirks) * 8 >= NumPluginQuirks, not_enough_room_for_quirks);
+ }
+
+ void add(PluginQuirk quirk)
+ {
+ ASSERT(quirk >= 0);
+ ASSERT(quirk < NumPluginQuirks);
+
+ m_quirks |= (1 << quirk);
+ }
+
+ bool contains(PluginQuirk quirk) const
+ {
+ return m_quirks & (1 << quirk);
+ }
+
+private:
+ uint32_t m_quirks;
+};
+
+} // namespace WebKit
+
+#endif // PluginQuirkSet_h
diff --git a/WebKit2/WebKit2.xcodeproj/project.pbxproj b/WebKit2/WebKit2.xcodeproj/project.pbxproj
index 88dad9b..dffa5c9 100644
--- a/WebKit2/WebKit2.xcodeproj/project.pbxproj
+++ b/WebKit2/WebKit2.xcodeproj/project.pbxproj
@@ -113,6 +113,7 @@
1A4A9C5512B816CF008FE984 /* NetscapePluginModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A4A9C5312B816CF008FE984 /* NetscapePluginModule.cpp */; };
1A4A9C5612B816CF008FE984 /* NetscapePluginModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4A9C5412B816CF008FE984 /* NetscapePluginModule.h */; };
1A4A9C9A12B821CD008FE984 /* NetscapePluginModuleMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A4A9C9912B821CD008FE984 /* NetscapePluginModuleMac.mm */; };
+ 1A4A9F3312B844E2008FE984 /* PluginQuirks.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4A9F3112B844E2008FE984 /* PluginQuirks.h */; };
1A50DB66110A3D57000D3FE5 /* WebProcess.app in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1A50DB1E110A3BDC000D3FE5 /* WebProcess.app */; };
1A594ABA112A1FB6009DE7C7 /* WebUIClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A594AB8112A1FB6009DE7C7 /* WebUIClient.cpp */; };
1A594ABB112A1FB6009DE7C7 /* WebUIClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A594AB9112A1FB6009DE7C7 /* WebUIClient.h */; };
@@ -746,6 +747,7 @@
1A4A9C5312B816CF008FE984 /* NetscapePluginModule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetscapePluginModule.cpp; sourceTree = "<group>"; };
1A4A9C5412B816CF008FE984 /* NetscapePluginModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetscapePluginModule.h; sourceTree = "<group>"; };
1A4A9C9912B821CD008FE984 /* NetscapePluginModuleMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NetscapePluginModuleMac.mm; sourceTree = "<group>"; };
+ 1A4A9F3112B844E2008FE984 /* PluginQuirks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginQuirks.h; sourceTree = "<group>"; };
1A4F976A100E7B6600637A18 /* Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = "<group>"; };
1A4F976B100E7B6600637A18 /* DebugRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = "<group>"; };
1A4F976C100E7B6600637A18 /* FeatureDefines.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FeatureDefines.xcconfig; sourceTree = "<group>"; };
@@ -1629,6 +1631,7 @@
1A4A9C5212B816CF008FE984 /* Netscape */,
1A2D90D11281C966001EB962 /* PluginProcessCreationParameters.cpp */,
1A2D90D01281C966001EB962 /* PluginProcessCreationParameters.h */,
+ 1A4A9F3112B844E2008FE984 /* PluginQuirks.h */,
1A2D848A127F6A49001EB962 /* NPIdentifierData.cpp */,
1A2D8489127F6A49001EB962 /* NPIdentifierData.h */,
1A1FA35C127A45BF0050E709 /* NPObjectMessageReceiver.cpp */,
@@ -2717,6 +2720,7 @@
F62A76B912B1B25F0005F1B6 /* WebDatabaseManagerProxyMessages.h in Headers */,
1A4A9AA812B7E796008FE984 /* WKTextInputWindowController.h in Headers */,
1A4A9C5612B816CF008FE984 /* NetscapePluginModule.h in Headers */,
+ 1A4A9F3312B844E2008FE984 /* PluginQuirks.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list