[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