[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677
cblu
cblu at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 05:56:28 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit 6c5a172cb67abdc07b912e1799b7144a9e874be6
Author: cblu <cblu at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Mar 1 22:14:59 2002 +0000
First implementation of WCJavaAppletWidget.
Removed unecessary items from plug-in initialization prototypes.
Added a method getPluginWithFilename to WCPluginDataase to find Java.plugin.
Modified Files:
WebBrowser/Debug/DebugBookmarks.plist
WebCore/src/kdelibs/khtml/rendering/render_applet.cpp
WebCore/src/kwq/KWQKHTMLPart.mm WebCore/src/kwq/Makefile.am
WebCore/src/kwq/WCPlugin.mm WebCore/src/kwq/WCPluginDatabase.h
WebCore/src/kwq/WCPluginDatabase.mm
WebCore/src/kwq/WCPluginWidget.h
WebCore/src/kwq/WCPluginWidget.mm
WebKit/Plugins.subproj/IFPluginView.h
WebKit/Plugins.subproj/IFPluginView.mm
Added Files:
WebCore/src/kwq/WCJavaAppletWidget.h
WebCore/src/kwq/WCJavaAppletWidget.mm
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@681 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/khtml/rendering/render_applet.cpp b/WebCore/khtml/rendering/render_applet.cpp
index 6839272..90b8a1e 100644
--- a/WebCore/khtml/rendering/render_applet.cpp
+++ b/WebCore/khtml/rendering/render_applet.cpp
@@ -35,6 +35,10 @@
#include <java/kjavaappletwidget.h>
#include <misc/htmltags.h>
+#ifdef _KWQ_
+#include <WCJavaAppletWidget.h>
+#endif
+
using namespace khtml;
using namespace DOM;
@@ -45,7 +49,10 @@ RenderApplet::RenderApplet(QScrollView *view,
// init RenderObject attributes
setInline(true);
m_applet = applet;
-
+
+#ifdef _KWQ_
+ setQWidget( new WCJavaAppletWidget(args));
+#else
KJavaAppletContext *context = 0;
KHTMLView *_view = static_cast<KHTMLView*>(view);
if ( _view ) {
@@ -58,6 +65,7 @@ RenderApplet::RenderApplet(QScrollView *view,
setQWidget( new KJavaAppletWidget(context, view->viewport()) );
processArguments(args);
}
+#endif
}
RenderApplet::~RenderApplet()
diff --git a/WebCore/kwq/KWQKHTMLPart.mm b/WebCore/kwq/KWQKHTMLPart.mm
index dbb0e12..1aed205 100644
--- a/WebCore/kwq/KWQKHTMLPart.mm
+++ b/WebCore/kwq/KWQKHTMLPart.mm
@@ -627,7 +627,8 @@ void KHTMLPart::setPluginsEnabled( bool enable )
bool KHTMLPart::pluginsEnabled() const
{
- return [[[NSUserDefaults standardUserDefaults] objectForKey:@"WebKitPluginsEnabled"] boolValue];
+ //return [[[NSUserDefaults standardUserDefaults] objectForKey:@"WebKitPluginsEnabled"] boolValue];
+ return FALSE;
}
@@ -1808,7 +1809,7 @@ bool KHTMLPart::requestObject( khtml::RenderPart *frame, const QString &url, con
// The plugins array is an attempt to avoid multiple creations of the same plug-in.
// FIXME: Can't have multiple plug-ins with the same URL on a page
if(!plugins.contains(url)){
- WCPluginWidget *pluginWidget = new WCPluginWidget(0, completeURL(url).url(), serviceType, args);
+ WCPluginWidget *pluginWidget = new WCPluginWidget(completeURL(url).url(), serviceType, args);
frame->setWidget(pluginWidget);
plugins.append(url);
}
diff --git a/WebCore/kwq/KWQKHTMLPartImpl.mm b/WebCore/kwq/KWQKHTMLPartImpl.mm
index dbb0e12..1aed205 100644
--- a/WebCore/kwq/KWQKHTMLPartImpl.mm
+++ b/WebCore/kwq/KWQKHTMLPartImpl.mm
@@ -627,7 +627,8 @@ void KHTMLPart::setPluginsEnabled( bool enable )
bool KHTMLPart::pluginsEnabled() const
{
- return [[[NSUserDefaults standardUserDefaults] objectForKey:@"WebKitPluginsEnabled"] boolValue];
+ //return [[[NSUserDefaults standardUserDefaults] objectForKey:@"WebKitPluginsEnabled"] boolValue];
+ return FALSE;
}
@@ -1808,7 +1809,7 @@ bool KHTMLPart::requestObject( khtml::RenderPart *frame, const QString &url, con
// The plugins array is an attempt to avoid multiple creations of the same plug-in.
// FIXME: Can't have multiple plug-ins with the same URL on a page
if(!plugins.contains(url)){
- WCPluginWidget *pluginWidget = new WCPluginWidget(0, completeURL(url).url(), serviceType, args);
+ WCPluginWidget *pluginWidget = new WCPluginWidget(completeURL(url).url(), serviceType, args);
frame->setWidget(pluginWidget);
plugins.append(url);
}
diff --git a/WebCore/kwq/Makefile.am b/WebCore/kwq/Makefile.am
index b26d5ee..6298ff1 100644
--- a/WebCore/kwq/Makefile.am
+++ b/WebCore/kwq/Makefile.am
@@ -136,6 +136,7 @@ libkwq_o_SOURCES = \
WCPlugin.mm \
WCPluginDatabase.mm \
WCPluginWidget.mm \
+ WCJavaAppletWidget.mm \
npapi.mm \
$(NULL)
diff --git a/WebCore/kwq/KWQButton.h b/WebCore/kwq/WCJavaAppletWidget.h
similarity index 81%
copy from WebCore/kwq/KWQButton.h
copy to WebCore/kwq/WCJavaAppletWidget.h
index 3b4f19f..740392d 100644
--- a/WebCore/kwq/KWQButton.h
+++ b/WebCore/kwq/WCJavaAppletWidget.h
@@ -23,8 +23,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef QBUTTON_H_
-#define QBUTTON_H_
+#ifndef WCJavaAppletWidget_H_
+#define WCJavaAppletWidget_H_
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -32,10 +32,11 @@
#include "qwidget.h"
#include "qstring.h"
+#include <qmap.h>
-// class QButton ===============================================================
+// class WCJavaAppletWidget ===============================================================
-class QButton : public QWidget {
+class WCJavaAppletWidget : public QWidget {
public:
// typedefs ----------------------------------------------------------------
@@ -45,13 +46,10 @@ public:
// constructors, copy constructors, and destructors ------------------------
- QButton(QWidget *parent=0);
- ~QButton();
+ WCJavaAppletWidget(QMap<QString, QString> args);
+ ~WCJavaAppletWidget();
// member functions --------------------------------------------------------
-
- virtual void setText(const QString &);
- QString text() const;
// operators ---------------------------------------------------------------
@@ -59,11 +57,10 @@ public:
// private ---------------------------------------------------------------------
private:
- // no copying or assignment
- // note that these are "standard" (no pendantic stuff needed)
- QButton(const QButton &);
- QButton &operator=(const QButton &);
+ WCJavaAppletWidget(const WCJavaAppletWidget &);
+ WCJavaAppletWidget &operator=(const WCJavaAppletWidget &);
+
-}; // class QButton ============================================================
+}; // class WCJavaAppletWidget ============================================================
#endif
diff --git a/WebCore/kwq/WCPluginWidget.mm b/WebCore/kwq/WCJavaAppletWidget.mm
similarity index 51%
copy from WebCore/kwq/WCPluginWidget.mm
copy to WebCore/kwq/WCJavaAppletWidget.mm
index f2ef8eb..d56692d 100644
--- a/WebCore/kwq/WCPluginWidget.mm
+++ b/WebCore/kwq/WCJavaAppletWidget.mm
@@ -24,60 +24,53 @@
*/
#import <Foundation/Foundation.h>
-#import <WCPluginWidget.h>
+#import <WCJavaAppletWidget.h>
#import <WCPluginDatabase.h>
+#import <WCPlugin.h>
#import <KWQView.h>
+
#include <kwqdebug.h>
+#include <WCPluginWidget.h>
@interface IFPluginView : NSObject
-- initWithFrame: (NSRect) r widget: (QWidget *)w plugin: (WCPlugin *)plug url: (NSString *)location mime:(NSString *)mime arguments:(NSDictionary *)arguments;
+- initWithFrame: (NSRect) r plugin: (WCPlugin *)plug url: (NSString *)location mime:(NSString *)mime arguments:(NSDictionary *)arguments mode:(uint16)mode;
@end
+WCIFPluginMakeFunc WCIFPluginMake;
-static WCIFPluginMakeFunc WCIFPluginMake = NULL;
-
-void WCSetIFPluginMakeFunc(WCIFPluginMakeFunc func)
-{
- WCIFPluginMake = func;
-}
-
-
-WCPluginWidget::WCPluginWidget(QWidget *parent, const QString &url, const QString &serviceType, const QStringList &args)
+WCJavaAppletWidget::WCJavaAppletWidget(QMap<QString, QString> args)
{
NSMutableDictionary *arguments;
- NSString *arg, *mimeType;
- NSRange r1, r2, r3;
+ NSString *URL, *codebase, *code;
WCPlugin *plugin;
- uint i;
+ QMap<QString, QString>::Iterator it;
+
+ WCIFPluginMake = WCIFPluginMakeFunction();
+
+ plugin = [[WCPluginDatabase installedPlugins] getPluginForFilename:@"Java.plugin"];
+ if(plugin == nil){
+ printf("Could not find Java plugin!\n");
+ return;
+ }
arguments = [NSMutableDictionary dictionaryWithCapacity:10];
- for(i=0; i<args.count(); i++){
- arg = QSTRING_TO_NSSTRING(args[i]);
- r1 = [arg rangeOfString:@"="]; // parse out attributes and values
- r2 = [arg rangeOfString:@"\""];
- r3.location = r2.location + 1;
- r3.length = [arg length] - r2.location - 2; // don't include quotes
- [arguments setObject:[arg substringWithRange:r3] forKey:[arg substringToIndex:r1.location]];
- }
- if(serviceType.isNull()){
- plugin = [[WCPluginDatabase installedPlugins] getPluginForURL:QSTRING_TO_NSSTRING(url)];
- if(plugin != nil){
- mimeType = [plugin mimeTypeForURL:QSTRING_TO_NSSTRING(url)];
+ for( it = args.begin(); it != args.end(); ++it ){
+ [arguments setObject:QSTRING_TO_NSSTRING(it.data()) forKey:QSTRING_TO_NSSTRING(it.key())];
+ if(it.key().contains("codebase", FALSE)){
+ codebase = QSTRING_TO_NSSTRING(it.data());
+ NSLog(codebase);
+ }
+ else if(it.key().contains("code", FALSE)){
+ code = QSTRING_TO_NSSTRING(it.data());
}
- }else{
- plugin = [[WCPluginDatabase installedPlugins] getPluginForMimeType:QSTRING_TO_NSSTRING(serviceType)];
- mimeType = QSTRING_TO_NSSTRING(serviceType);
- }
- if(plugin == nil){
- //FIXME: Error dialog should be shown here
- KWQDebug("Could not find plugin for mime: %s or URL: %s\n", serviceType.latin1(), url.latin1());
- return;
}
- [plugin load];
- setView(WCIFPluginMake(NSMakeRect(0,0,0,0), this, plugin, QSTRING_TO_NSSTRING(url), mimeType, arguments));
+
+ URL = [codebase stringByAppendingPathComponent:code];
+ NSLog(URL);
+ setView(WCIFPluginMake(NSMakeRect(0,0,0,0), plugin, URL, @"application/x-java-applet", arguments, NP_EMBED));
}
-WCPluginWidget::~WCPluginWidget()
+WCJavaAppletWidget::~WCJavaAppletWidget()
{
}
diff --git a/WebCore/kwq/WCPlugin.mm b/WebCore/kwq/WCPlugin.mm
index f8fda2c..3a3530b 100644
--- a/WebCore/kwq/WCPlugin.mm
+++ b/WebCore/kwq/WCPlugin.mm
@@ -84,7 +84,7 @@
- (void)getPluginInfoForResourceFile:(SInt16)resRef
{
Str255 theString;
- char temp[300], description[600]; // I wish I didn't have to use these C strings
+ char temp[255], description[255];
NSMutableArray *mime; // mime is an array containing the mime type, extension(s) and descriptions for that mime type.
NSString *tempString;
uint n, i;
@@ -97,6 +97,11 @@
if(!strcmp(temp, "")) break;
mime = [NSMutableArray arrayWithCapacity:3];
[mimeTypes insertObject:mime atIndex:i];
+ //FIXME: Because our JS engine poops on semi-colons, I'm removing ";version=1.3"
+ //Scott Adler is checking if semi-colons are allowed to be in mime-types
+ if(!strcmp(temp, "application/x-java-applet;version=1.3")){
+ strcpy(temp, "application/x-java-applet");
+ }
tempString = [NSString stringWithCString:temp];
[mime insertObject:tempString atIndex:0]; // mime type
diff --git a/WebCore/kwq/WCPluginDatabase.h b/WebCore/kwq/WCPluginDatabase.h
index a38d9f2..af546ac 100644
--- a/WebCore/kwq/WCPluginDatabase.h
+++ b/WebCore/kwq/WCPluginDatabase.h
@@ -32,7 +32,8 @@
+ (WCPluginDatabase *)installedPlugins;
- (WCPlugin *)getPluginForMimeType:(NSString *)mimeType;
-- (WCPlugin *)getPluginForURL:(NSString *)URL;
+- (WCPlugin *)getPluginForExtension:(NSString *)extension;
+- (WCPlugin *)getPluginForFilename:(NSString *)filename;
- (NSArray *) plugins;
@end
diff --git a/WebCore/kwq/WCPluginDatabase.mm b/WebCore/kwq/WCPluginDatabase.mm
index 0fbb2fa..196e54b 100644
--- a/WebCore/kwq/WCPluginDatabase.mm
+++ b/WebCore/kwq/WCPluginDatabase.mm
@@ -30,8 +30,8 @@
static WCPluginDatabase *__WCPluginDatabase = nil;
-+ (WCPluginDatabase *)installedPlugins {
-
++ (WCPluginDatabase *)installedPlugins
+{
if(!__WCPluginDatabase){
__WCPluginDatabase = [WCPluginDatabase alloc];
__WCPluginDatabase->plugins = findPlugins();
@@ -40,7 +40,8 @@ static WCPluginDatabase *__WCPluginDatabase = nil;
}
// The first plugin with the specified mime type is returned. We may want to tie this to the defaults so that this is configurable.
-- (WCPlugin *)getPluginForMimeType:(NSString *)mimeType{
+- (WCPlugin *)getPluginForMimeType:(NSString *)mimeType
+{
uint i, n;
WCPlugin *plugin;
NSArray *mimeArray;
@@ -57,14 +58,13 @@ static WCPluginDatabase *__WCPluginDatabase = nil;
return nil;
}
-- (WCPlugin *)getPluginForURL:(NSString *)URL{
+- (WCPlugin *)getPluginForExtension:(NSString *)extension
+{
uint i, n;
WCPlugin *plugin;
NSArray *mimeArray;
NSRange hasExtension;
- NSString *extension;
-
- extension = [URL pathExtension];
+
for(i=0; i<[plugins count]; i++){
plugin = [plugins objectAtIndex:i];
mimeArray = [plugin mimeTypes];
@@ -78,9 +78,22 @@ static WCPluginDatabase *__WCPluginDatabase = nil;
return nil;
}
+- (WCPlugin *)getPluginForFilename:(NSString *)filename
+{
+ uint i;
+ WCPlugin *plugin;
+
+ for(i=0; i<[plugins count]; i++){
+ plugin = [plugins objectAtIndex:i];
+ if([[plugin filename] isEqualToString:filename]){
+ return plugin;
+ }
+ }
+ return nil;
+}
-
-- (NSArray *) plugins{
+- (NSArray *) plugins
+{
return plugins;
}
@@ -119,6 +132,7 @@ NSArray *findPlugins(void){
[plugin retain];
[pluginArray addObject:plugin];
KWQDebug("Found plugin: %s\n", [[plugin name] cString]);
+ KWQDebug("%s", [[plugin description] cString]);
}
}
return [pluginArray retain];
diff --git a/WebCore/kwq/WCPluginWidget.h b/WebCore/kwq/WCPluginWidget.h
index 28f4700..f5a8eee 100644
--- a/WebCore/kwq/WCPluginWidget.h
+++ b/WebCore/kwq/WCPluginWidget.h
@@ -34,8 +34,7 @@
#include "qstring.h"
#import <WCPlugin.h>
-
-typedef id (*WCIFPluginMakeFunc)(NSRect rect, QWidget *widget, WCPlugin *plugin, NSString *url, NSString *mimeType, NSDictionary *arguments);
+typedef id (*WCIFPluginMakeFunc)(NSRect rect, WCPlugin *plugin, NSString *url, NSString *mimeType, NSDictionary *arguments, uint16 mode);
void WCSetIFPluginMakeFunc(WCIFPluginMakeFunc func);
// class WCPluginWidget ===============================================================
@@ -50,11 +49,12 @@ public:
// constructors, copy constructors, and destructors ------------------------
- WCPluginWidget(QWidget *parent=0, const QString &url=0, const QString &serviceType=0, const QStringList &args=QStringList());
+ WCPluginWidget(const QString &url=0, const QString &serviceType=0, const QStringList &args=QStringList());
~WCPluginWidget();
// member functions --------------------------------------------------------
+
// operators ---------------------------------------------------------------
// protected -------------------------------------------------------------------
@@ -67,4 +67,6 @@ private:
}; // class WCPluginWidget ============================================================
+void * WCIFPluginMakeFunction();
+
#endif
diff --git a/WebCore/kwq/WCPluginWidget.mm b/WebCore/kwq/WCPluginWidget.mm
index f2ef8eb..995e63e 100644
--- a/WebCore/kwq/WCPluginWidget.mm
+++ b/WebCore/kwq/WCPluginWidget.mm
@@ -30,7 +30,7 @@
#include <kwqdebug.h>
@interface IFPluginView : NSObject
-- initWithFrame: (NSRect) r widget: (QWidget *)w plugin: (WCPlugin *)plug url: (NSString *)location mime:(NSString *)mime arguments:(NSDictionary *)arguments;
+- initWithFrame: (NSRect) r plugin: (WCPlugin *)plug url: (NSString *)location mime:(NSString *)mime arguments:(NSDictionary *)arguments mode:(uint16)mode;
@end
@@ -42,14 +42,15 @@ void WCSetIFPluginMakeFunc(WCIFPluginMakeFunc func)
}
-WCPluginWidget::WCPluginWidget(QWidget *parent, const QString &url, const QString &serviceType, const QStringList &args)
+WCPluginWidget::WCPluginWidget(const QString &url, const QString &serviceType, const QStringList &args)
{
NSMutableDictionary *arguments;
- NSString *arg, *mimeType;
+ NSString *arg, *mimeType, *URL;
NSRange r1, r2, r3;
WCPlugin *plugin;
uint i;
+ URL = QSTRING_TO_NSSTRING(url);
arguments = [NSMutableDictionary dictionaryWithCapacity:10];
for(i=0; i<args.count(); i++){
arg = QSTRING_TO_NSSTRING(args[i]);
@@ -60,9 +61,9 @@ WCPluginWidget::WCPluginWidget(QWidget *parent, const QString &url, const QStrin
[arguments setObject:[arg substringWithRange:r3] forKey:[arg substringToIndex:r1.location]];
}
if(serviceType.isNull()){
- plugin = [[WCPluginDatabase installedPlugins] getPluginForURL:QSTRING_TO_NSSTRING(url)];
+ plugin = [[WCPluginDatabase installedPlugins] getPluginForExtension:[URL pathExtension]];
if(plugin != nil){
- mimeType = [plugin mimeTypeForURL:QSTRING_TO_NSSTRING(url)];
+ mimeType = [plugin mimeTypeForURL:URL];
}
}else{
plugin = [[WCPluginDatabase installedPlugins] getPluginForMimeType:QSTRING_TO_NSSTRING(serviceType)];
@@ -70,11 +71,10 @@ WCPluginWidget::WCPluginWidget(QWidget *parent, const QString &url, const QStrin
}
if(plugin == nil){
//FIXME: Error dialog should be shown here
- KWQDebug("Could not find plugin for mime: %s or URL: %s\n", serviceType.latin1(), url.latin1());
+ printf("Could not find plugin for mime: %s or URL: %s\n", serviceType.latin1(), url.latin1());
return;
}
- [plugin load];
- setView(WCIFPluginMake(NSMakeRect(0,0,0,0), this, plugin, QSTRING_TO_NSSTRING(url), mimeType, arguments));
+ setView(WCIFPluginMake(NSMakeRect(0,0,0,0), plugin, URL, mimeType, arguments, NP_EMBED));
}
WCPluginWidget::~WCPluginWidget()
@@ -82,3 +82,10 @@ WCPluginWidget::~WCPluginWidget()
}
+void * WCIFPluginMakeFunction()
+{
+ return WCIFPluginMake;
+}
+
+
+
diff --git a/WebCore/src/kdelibs/khtml/rendering/render_applet.cpp b/WebCore/src/kdelibs/khtml/rendering/render_applet.cpp
index 6839272..90b8a1e 100644
--- a/WebCore/src/kdelibs/khtml/rendering/render_applet.cpp
+++ b/WebCore/src/kdelibs/khtml/rendering/render_applet.cpp
@@ -35,6 +35,10 @@
#include <java/kjavaappletwidget.h>
#include <misc/htmltags.h>
+#ifdef _KWQ_
+#include <WCJavaAppletWidget.h>
+#endif
+
using namespace khtml;
using namespace DOM;
@@ -45,7 +49,10 @@ RenderApplet::RenderApplet(QScrollView *view,
// init RenderObject attributes
setInline(true);
m_applet = applet;
-
+
+#ifdef _KWQ_
+ setQWidget( new WCJavaAppletWidget(args));
+#else
KJavaAppletContext *context = 0;
KHTMLView *_view = static_cast<KHTMLView*>(view);
if ( _view ) {
@@ -58,6 +65,7 @@ RenderApplet::RenderApplet(QScrollView *view,
setQWidget( new KJavaAppletWidget(context, view->viewport()) );
processArguments(args);
}
+#endif
}
RenderApplet::~RenderApplet()
diff --git a/WebCore/src/kwq/KWQKHTMLPart.mm b/WebCore/src/kwq/KWQKHTMLPart.mm
index dbb0e12..1aed205 100644
--- a/WebCore/src/kwq/KWQKHTMLPart.mm
+++ b/WebCore/src/kwq/KWQKHTMLPart.mm
@@ -627,7 +627,8 @@ void KHTMLPart::setPluginsEnabled( bool enable )
bool KHTMLPart::pluginsEnabled() const
{
- return [[[NSUserDefaults standardUserDefaults] objectForKey:@"WebKitPluginsEnabled"] boolValue];
+ //return [[[NSUserDefaults standardUserDefaults] objectForKey:@"WebKitPluginsEnabled"] boolValue];
+ return FALSE;
}
@@ -1808,7 +1809,7 @@ bool KHTMLPart::requestObject( khtml::RenderPart *frame, const QString &url, con
// The plugins array is an attempt to avoid multiple creations of the same plug-in.
// FIXME: Can't have multiple plug-ins with the same URL on a page
if(!plugins.contains(url)){
- WCPluginWidget *pluginWidget = new WCPluginWidget(0, completeURL(url).url(), serviceType, args);
+ WCPluginWidget *pluginWidget = new WCPluginWidget(completeURL(url).url(), serviceType, args);
frame->setWidget(pluginWidget);
plugins.append(url);
}
diff --git a/WebCore/src/kwq/Makefile.am b/WebCore/src/kwq/Makefile.am
index b26d5ee..6298ff1 100644
--- a/WebCore/src/kwq/Makefile.am
+++ b/WebCore/src/kwq/Makefile.am
@@ -136,6 +136,7 @@ libkwq_o_SOURCES = \
WCPlugin.mm \
WCPluginDatabase.mm \
WCPluginWidget.mm \
+ WCJavaAppletWidget.mm \
npapi.mm \
$(NULL)
diff --git a/WebCore/kwq/KWQButton.h b/WebCore/src/kwq/WCJavaAppletWidget.h
similarity index 81%
copy from WebCore/kwq/KWQButton.h
copy to WebCore/src/kwq/WCJavaAppletWidget.h
index 3b4f19f..740392d 100644
--- a/WebCore/kwq/KWQButton.h
+++ b/WebCore/src/kwq/WCJavaAppletWidget.h
@@ -23,8 +23,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef QBUTTON_H_
-#define QBUTTON_H_
+#ifndef WCJavaAppletWidget_H_
+#define WCJavaAppletWidget_H_
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -32,10 +32,11 @@
#include "qwidget.h"
#include "qstring.h"
+#include <qmap.h>
-// class QButton ===============================================================
+// class WCJavaAppletWidget ===============================================================
-class QButton : public QWidget {
+class WCJavaAppletWidget : public QWidget {
public:
// typedefs ----------------------------------------------------------------
@@ -45,13 +46,10 @@ public:
// constructors, copy constructors, and destructors ------------------------
- QButton(QWidget *parent=0);
- ~QButton();
+ WCJavaAppletWidget(QMap<QString, QString> args);
+ ~WCJavaAppletWidget();
// member functions --------------------------------------------------------
-
- virtual void setText(const QString &);
- QString text() const;
// operators ---------------------------------------------------------------
@@ -59,11 +57,10 @@ public:
// private ---------------------------------------------------------------------
private:
- // no copying or assignment
- // note that these are "standard" (no pendantic stuff needed)
- QButton(const QButton &);
- QButton &operator=(const QButton &);
+ WCJavaAppletWidget(const WCJavaAppletWidget &);
+ WCJavaAppletWidget &operator=(const WCJavaAppletWidget &);
+
-}; // class QButton ============================================================
+}; // class WCJavaAppletWidget ============================================================
#endif
diff --git a/WebCore/kwq/WCPluginWidget.mm b/WebCore/src/kwq/WCJavaAppletWidget.mm
similarity index 51%
copy from WebCore/kwq/WCPluginWidget.mm
copy to WebCore/src/kwq/WCJavaAppletWidget.mm
index f2ef8eb..d56692d 100644
--- a/WebCore/kwq/WCPluginWidget.mm
+++ b/WebCore/src/kwq/WCJavaAppletWidget.mm
@@ -24,60 +24,53 @@
*/
#import <Foundation/Foundation.h>
-#import <WCPluginWidget.h>
+#import <WCJavaAppletWidget.h>
#import <WCPluginDatabase.h>
+#import <WCPlugin.h>
#import <KWQView.h>
+
#include <kwqdebug.h>
+#include <WCPluginWidget.h>
@interface IFPluginView : NSObject
-- initWithFrame: (NSRect) r widget: (QWidget *)w plugin: (WCPlugin *)plug url: (NSString *)location mime:(NSString *)mime arguments:(NSDictionary *)arguments;
+- initWithFrame: (NSRect) r plugin: (WCPlugin *)plug url: (NSString *)location mime:(NSString *)mime arguments:(NSDictionary *)arguments mode:(uint16)mode;
@end
+WCIFPluginMakeFunc WCIFPluginMake;
-static WCIFPluginMakeFunc WCIFPluginMake = NULL;
-
-void WCSetIFPluginMakeFunc(WCIFPluginMakeFunc func)
-{
- WCIFPluginMake = func;
-}
-
-
-WCPluginWidget::WCPluginWidget(QWidget *parent, const QString &url, const QString &serviceType, const QStringList &args)
+WCJavaAppletWidget::WCJavaAppletWidget(QMap<QString, QString> args)
{
NSMutableDictionary *arguments;
- NSString *arg, *mimeType;
- NSRange r1, r2, r3;
+ NSString *URL, *codebase, *code;
WCPlugin *plugin;
- uint i;
+ QMap<QString, QString>::Iterator it;
+
+ WCIFPluginMake = WCIFPluginMakeFunction();
+
+ plugin = [[WCPluginDatabase installedPlugins] getPluginForFilename:@"Java.plugin"];
+ if(plugin == nil){
+ printf("Could not find Java plugin!\n");
+ return;
+ }
arguments = [NSMutableDictionary dictionaryWithCapacity:10];
- for(i=0; i<args.count(); i++){
- arg = QSTRING_TO_NSSTRING(args[i]);
- r1 = [arg rangeOfString:@"="]; // parse out attributes and values
- r2 = [arg rangeOfString:@"\""];
- r3.location = r2.location + 1;
- r3.length = [arg length] - r2.location - 2; // don't include quotes
- [arguments setObject:[arg substringWithRange:r3] forKey:[arg substringToIndex:r1.location]];
- }
- if(serviceType.isNull()){
- plugin = [[WCPluginDatabase installedPlugins] getPluginForURL:QSTRING_TO_NSSTRING(url)];
- if(plugin != nil){
- mimeType = [plugin mimeTypeForURL:QSTRING_TO_NSSTRING(url)];
+ for( it = args.begin(); it != args.end(); ++it ){
+ [arguments setObject:QSTRING_TO_NSSTRING(it.data()) forKey:QSTRING_TO_NSSTRING(it.key())];
+ if(it.key().contains("codebase", FALSE)){
+ codebase = QSTRING_TO_NSSTRING(it.data());
+ NSLog(codebase);
+ }
+ else if(it.key().contains("code", FALSE)){
+ code = QSTRING_TO_NSSTRING(it.data());
}
- }else{
- plugin = [[WCPluginDatabase installedPlugins] getPluginForMimeType:QSTRING_TO_NSSTRING(serviceType)];
- mimeType = QSTRING_TO_NSSTRING(serviceType);
- }
- if(plugin == nil){
- //FIXME: Error dialog should be shown here
- KWQDebug("Could not find plugin for mime: %s or URL: %s\n", serviceType.latin1(), url.latin1());
- return;
}
- [plugin load];
- setView(WCIFPluginMake(NSMakeRect(0,0,0,0), this, plugin, QSTRING_TO_NSSTRING(url), mimeType, arguments));
+
+ URL = [codebase stringByAppendingPathComponent:code];
+ NSLog(URL);
+ setView(WCIFPluginMake(NSMakeRect(0,0,0,0), plugin, URL, @"application/x-java-applet", arguments, NP_EMBED));
}
-WCPluginWidget::~WCPluginWidget()
+WCJavaAppletWidget::~WCJavaAppletWidget()
{
}
diff --git a/WebCore/src/kwq/WCPlugin.mm b/WebCore/src/kwq/WCPlugin.mm
index f8fda2c..3a3530b 100644
--- a/WebCore/src/kwq/WCPlugin.mm
+++ b/WebCore/src/kwq/WCPlugin.mm
@@ -84,7 +84,7 @@
- (void)getPluginInfoForResourceFile:(SInt16)resRef
{
Str255 theString;
- char temp[300], description[600]; // I wish I didn't have to use these C strings
+ char temp[255], description[255];
NSMutableArray *mime; // mime is an array containing the mime type, extension(s) and descriptions for that mime type.
NSString *tempString;
uint n, i;
@@ -97,6 +97,11 @@
if(!strcmp(temp, "")) break;
mime = [NSMutableArray arrayWithCapacity:3];
[mimeTypes insertObject:mime atIndex:i];
+ //FIXME: Because our JS engine poops on semi-colons, I'm removing ";version=1.3"
+ //Scott Adler is checking if semi-colons are allowed to be in mime-types
+ if(!strcmp(temp, "application/x-java-applet;version=1.3")){
+ strcpy(temp, "application/x-java-applet");
+ }
tempString = [NSString stringWithCString:temp];
[mime insertObject:tempString atIndex:0]; // mime type
diff --git a/WebCore/src/kwq/WCPluginDatabase.h b/WebCore/src/kwq/WCPluginDatabase.h
index a38d9f2..af546ac 100644
--- a/WebCore/src/kwq/WCPluginDatabase.h
+++ b/WebCore/src/kwq/WCPluginDatabase.h
@@ -32,7 +32,8 @@
+ (WCPluginDatabase *)installedPlugins;
- (WCPlugin *)getPluginForMimeType:(NSString *)mimeType;
-- (WCPlugin *)getPluginForURL:(NSString *)URL;
+- (WCPlugin *)getPluginForExtension:(NSString *)extension;
+- (WCPlugin *)getPluginForFilename:(NSString *)filename;
- (NSArray *) plugins;
@end
diff --git a/WebCore/src/kwq/WCPluginDatabase.mm b/WebCore/src/kwq/WCPluginDatabase.mm
index 0fbb2fa..196e54b 100644
--- a/WebCore/src/kwq/WCPluginDatabase.mm
+++ b/WebCore/src/kwq/WCPluginDatabase.mm
@@ -30,8 +30,8 @@
static WCPluginDatabase *__WCPluginDatabase = nil;
-+ (WCPluginDatabase *)installedPlugins {
-
++ (WCPluginDatabase *)installedPlugins
+{
if(!__WCPluginDatabase){
__WCPluginDatabase = [WCPluginDatabase alloc];
__WCPluginDatabase->plugins = findPlugins();
@@ -40,7 +40,8 @@ static WCPluginDatabase *__WCPluginDatabase = nil;
}
// The first plugin with the specified mime type is returned. We may want to tie this to the defaults so that this is configurable.
-- (WCPlugin *)getPluginForMimeType:(NSString *)mimeType{
+- (WCPlugin *)getPluginForMimeType:(NSString *)mimeType
+{
uint i, n;
WCPlugin *plugin;
NSArray *mimeArray;
@@ -57,14 +58,13 @@ static WCPluginDatabase *__WCPluginDatabase = nil;
return nil;
}
-- (WCPlugin *)getPluginForURL:(NSString *)URL{
+- (WCPlugin *)getPluginForExtension:(NSString *)extension
+{
uint i, n;
WCPlugin *plugin;
NSArray *mimeArray;
NSRange hasExtension;
- NSString *extension;
-
- extension = [URL pathExtension];
+
for(i=0; i<[plugins count]; i++){
plugin = [plugins objectAtIndex:i];
mimeArray = [plugin mimeTypes];
@@ -78,9 +78,22 @@ static WCPluginDatabase *__WCPluginDatabase = nil;
return nil;
}
+- (WCPlugin *)getPluginForFilename:(NSString *)filename
+{
+ uint i;
+ WCPlugin *plugin;
+
+ for(i=0; i<[plugins count]; i++){
+ plugin = [plugins objectAtIndex:i];
+ if([[plugin filename] isEqualToString:filename]){
+ return plugin;
+ }
+ }
+ return nil;
+}
-
-- (NSArray *) plugins{
+- (NSArray *) plugins
+{
return plugins;
}
@@ -119,6 +132,7 @@ NSArray *findPlugins(void){
[plugin retain];
[pluginArray addObject:plugin];
KWQDebug("Found plugin: %s\n", [[plugin name] cString]);
+ KWQDebug("%s", [[plugin description] cString]);
}
}
return [pluginArray retain];
diff --git a/WebCore/src/kwq/WCPluginWidget.h b/WebCore/src/kwq/WCPluginWidget.h
index 28f4700..f5a8eee 100644
--- a/WebCore/src/kwq/WCPluginWidget.h
+++ b/WebCore/src/kwq/WCPluginWidget.h
@@ -34,8 +34,7 @@
#include "qstring.h"
#import <WCPlugin.h>
-
-typedef id (*WCIFPluginMakeFunc)(NSRect rect, QWidget *widget, WCPlugin *plugin, NSString *url, NSString *mimeType, NSDictionary *arguments);
+typedef id (*WCIFPluginMakeFunc)(NSRect rect, WCPlugin *plugin, NSString *url, NSString *mimeType, NSDictionary *arguments, uint16 mode);
void WCSetIFPluginMakeFunc(WCIFPluginMakeFunc func);
// class WCPluginWidget ===============================================================
@@ -50,11 +49,12 @@ public:
// constructors, copy constructors, and destructors ------------------------
- WCPluginWidget(QWidget *parent=0, const QString &url=0, const QString &serviceType=0, const QStringList &args=QStringList());
+ WCPluginWidget(const QString &url=0, const QString &serviceType=0, const QStringList &args=QStringList());
~WCPluginWidget();
// member functions --------------------------------------------------------
+
// operators ---------------------------------------------------------------
// protected -------------------------------------------------------------------
@@ -67,4 +67,6 @@ private:
}; // class WCPluginWidget ============================================================
+void * WCIFPluginMakeFunction();
+
#endif
diff --git a/WebCore/src/kwq/WCPluginWidget.mm b/WebCore/src/kwq/WCPluginWidget.mm
index f2ef8eb..995e63e 100644
--- a/WebCore/src/kwq/WCPluginWidget.mm
+++ b/WebCore/src/kwq/WCPluginWidget.mm
@@ -30,7 +30,7 @@
#include <kwqdebug.h>
@interface IFPluginView : NSObject
-- initWithFrame: (NSRect) r widget: (QWidget *)w plugin: (WCPlugin *)plug url: (NSString *)location mime:(NSString *)mime arguments:(NSDictionary *)arguments;
+- initWithFrame: (NSRect) r plugin: (WCPlugin *)plug url: (NSString *)location mime:(NSString *)mime arguments:(NSDictionary *)arguments mode:(uint16)mode;
@end
@@ -42,14 +42,15 @@ void WCSetIFPluginMakeFunc(WCIFPluginMakeFunc func)
}
-WCPluginWidget::WCPluginWidget(QWidget *parent, const QString &url, const QString &serviceType, const QStringList &args)
+WCPluginWidget::WCPluginWidget(const QString &url, const QString &serviceType, const QStringList &args)
{
NSMutableDictionary *arguments;
- NSString *arg, *mimeType;
+ NSString *arg, *mimeType, *URL;
NSRange r1, r2, r3;
WCPlugin *plugin;
uint i;
+ URL = QSTRING_TO_NSSTRING(url);
arguments = [NSMutableDictionary dictionaryWithCapacity:10];
for(i=0; i<args.count(); i++){
arg = QSTRING_TO_NSSTRING(args[i]);
@@ -60,9 +61,9 @@ WCPluginWidget::WCPluginWidget(QWidget *parent, const QString &url, const QStrin
[arguments setObject:[arg substringWithRange:r3] forKey:[arg substringToIndex:r1.location]];
}
if(serviceType.isNull()){
- plugin = [[WCPluginDatabase installedPlugins] getPluginForURL:QSTRING_TO_NSSTRING(url)];
+ plugin = [[WCPluginDatabase installedPlugins] getPluginForExtension:[URL pathExtension]];
if(plugin != nil){
- mimeType = [plugin mimeTypeForURL:QSTRING_TO_NSSTRING(url)];
+ mimeType = [plugin mimeTypeForURL:URL];
}
}else{
plugin = [[WCPluginDatabase installedPlugins] getPluginForMimeType:QSTRING_TO_NSSTRING(serviceType)];
@@ -70,11 +71,10 @@ WCPluginWidget::WCPluginWidget(QWidget *parent, const QString &url, const QStrin
}
if(plugin == nil){
//FIXME: Error dialog should be shown here
- KWQDebug("Could not find plugin for mime: %s or URL: %s\n", serviceType.latin1(), url.latin1());
+ printf("Could not find plugin for mime: %s or URL: %s\n", serviceType.latin1(), url.latin1());
return;
}
- [plugin load];
- setView(WCIFPluginMake(NSMakeRect(0,0,0,0), this, plugin, QSTRING_TO_NSSTRING(url), mimeType, arguments));
+ setView(WCIFPluginMake(NSMakeRect(0,0,0,0), plugin, URL, mimeType, arguments, NP_EMBED));
}
WCPluginWidget::~WCPluginWidget()
@@ -82,3 +82,10 @@ WCPluginWidget::~WCPluginWidget()
}
+void * WCIFPluginMakeFunction()
+{
+ return WCIFPluginMake;
+}
+
+
+
diff --git a/WebKit/Plugins.subproj/IFPluginView.h b/WebKit/Plugins.subproj/IFPluginView.h
index 7a1a4de..cfb452e 100644
--- a/WebKit/Plugins.subproj/IFPluginView.h
+++ b/WebKit/Plugins.subproj/IFPluginView.h
@@ -31,7 +31,6 @@ typedef struct _StreamData{
@end
@interface IFPluginView : NSView {
- QWidget *widget;
WCPlugin *plugin;
IFPluginViewNullEventSender *eventSender;
@@ -62,7 +61,7 @@ typedef struct _StreamData{
NPP_SetValueProcPtr NPP_SetValue;
}
-- initWithFrame: (NSRect) r widget: (QWidget *)w plugin: (WCPlugin *)plug url: (NSString *)location mime:(NSString *)mime arguments:(NSDictionary *)arguments;
+- initWithFrame:(NSRect) r plugin:(WCPlugin *)plug url:(NSString *)location mime:(NSString *)mime arguments:(NSDictionary *)arguments mode:(uint16)mode;
-(void)drawRect:(NSRect)rect;
-(void)setWindow;
-(void)viewHasMoved:(NSNotification *)note;
diff --git a/WebKit/Plugins.subproj/IFPluginView.mm b/WebKit/Plugins.subproj/IFPluginView.mm
index 4954b9f..5270a59 100644
--- a/WebKit/Plugins.subproj/IFPluginView.mm
+++ b/WebKit/Plugins.subproj/IFPluginView.mm
@@ -62,9 +62,9 @@ extern "C" {
@implementation IFPluginView
-static id IFPluginMake(NSRect rect, QWidget *widget, WCPlugin *plugin, NSString *url, NSString *mimeType, NSDictionary *arguments)
+static id IFPluginMake(NSRect rect, WCPlugin *plugin, NSString *url, NSString *mimeType, NSDictionary *arguments, uint16 mode)
{
- return [[[IFPluginView alloc] initWithFrame:rect widget:widget plugin:plugin url:url mime:mimeType arguments:arguments] autorelease];
+ return [[[IFPluginView alloc] initWithFrame:rect plugin:plugin url:url mime:mimeType arguments:arguments mode:mode] autorelease];
}
+(void) load
@@ -72,7 +72,7 @@ static id IFPluginMake(NSRect rect, QWidget *widget, WCPlugin *plugin, NSString
WCSetIFPluginMakeFunc(IFPluginMake);
}
-- initWithFrame: (NSRect) r widget: (QWidget *)w plugin: (WCPlugin *)plug url: (NSString *)location mime:(NSString *)mimeType arguments:(NSDictionary *)arguments
+- initWithFrame:(NSRect)r plugin:(WCPlugin *)plug url:(NSString *)location mime:(NSString *)mimeType arguments:(NSDictionary *)arguments mode:(uint16)mode
{
NPError npErr;
char *cMime, *s;
@@ -93,6 +93,8 @@ static id IFPluginMake(NSRect rect, QWidget *widget, WCPlugin *plugin, NSString
[URL retain];
[plugin retain];
+ [plugin load];
+
NPP_New = [plugin NPP_New]; // copy function pointers
NPP_Destroy = [plugin NPP_Destroy];
NPP_SetWindow = [plugin NPP_SetWindow];
@@ -125,7 +127,7 @@ static id IFPluginMake(NSRect rect, QWidget *widget, WCPlugin *plugin, NSString
}
cMime = malloc([mime length]+1);
[mime getCString:cMime];
- npErr = NPP_New(cMime, instance, NP_EMBED, [arguments count], cAttributes, cValues, &saved);
+ npErr = NPP_New(cMime, instance, mode, [arguments count], cAttributes, cValues, &saved);
KWQDebug("NPP_New: %d\n", npErr);
if([attributes containsObject:@"HIDDEN"]){
diff --git a/WebKit/Plugins.subproj/WebPluginView.h b/WebKit/Plugins.subproj/WebPluginView.h
index 7a1a4de..cfb452e 100644
--- a/WebKit/Plugins.subproj/WebPluginView.h
+++ b/WebKit/Plugins.subproj/WebPluginView.h
@@ -31,7 +31,6 @@ typedef struct _StreamData{
@end
@interface IFPluginView : NSView {
- QWidget *widget;
WCPlugin *plugin;
IFPluginViewNullEventSender *eventSender;
@@ -62,7 +61,7 @@ typedef struct _StreamData{
NPP_SetValueProcPtr NPP_SetValue;
}
-- initWithFrame: (NSRect) r widget: (QWidget *)w plugin: (WCPlugin *)plug url: (NSString *)location mime:(NSString *)mime arguments:(NSDictionary *)arguments;
+- initWithFrame:(NSRect) r plugin:(WCPlugin *)plug url:(NSString *)location mime:(NSString *)mime arguments:(NSDictionary *)arguments mode:(uint16)mode;
-(void)drawRect:(NSRect)rect;
-(void)setWindow;
-(void)viewHasMoved:(NSNotification *)note;
diff --git a/WebKit/Plugins.subproj/WebPluginView.m b/WebKit/Plugins.subproj/WebPluginView.m
index 4954b9f..5270a59 100644
--- a/WebKit/Plugins.subproj/WebPluginView.m
+++ b/WebKit/Plugins.subproj/WebPluginView.m
@@ -62,9 +62,9 @@ extern "C" {
@implementation IFPluginView
-static id IFPluginMake(NSRect rect, QWidget *widget, WCPlugin *plugin, NSString *url, NSString *mimeType, NSDictionary *arguments)
+static id IFPluginMake(NSRect rect, WCPlugin *plugin, NSString *url, NSString *mimeType, NSDictionary *arguments, uint16 mode)
{
- return [[[IFPluginView alloc] initWithFrame:rect widget:widget plugin:plugin url:url mime:mimeType arguments:arguments] autorelease];
+ return [[[IFPluginView alloc] initWithFrame:rect plugin:plugin url:url mime:mimeType arguments:arguments mode:mode] autorelease];
}
+(void) load
@@ -72,7 +72,7 @@ static id IFPluginMake(NSRect rect, QWidget *widget, WCPlugin *plugin, NSString
WCSetIFPluginMakeFunc(IFPluginMake);
}
-- initWithFrame: (NSRect) r widget: (QWidget *)w plugin: (WCPlugin *)plug url: (NSString *)location mime:(NSString *)mimeType arguments:(NSDictionary *)arguments
+- initWithFrame:(NSRect)r plugin:(WCPlugin *)plug url:(NSString *)location mime:(NSString *)mimeType arguments:(NSDictionary *)arguments mode:(uint16)mode
{
NPError npErr;
char *cMime, *s;
@@ -93,6 +93,8 @@ static id IFPluginMake(NSRect rect, QWidget *widget, WCPlugin *plugin, NSString
[URL retain];
[plugin retain];
+ [plugin load];
+
NPP_New = [plugin NPP_New]; // copy function pointers
NPP_Destroy = [plugin NPP_Destroy];
NPP_SetWindow = [plugin NPP_SetWindow];
@@ -125,7 +127,7 @@ static id IFPluginMake(NSRect rect, QWidget *widget, WCPlugin *plugin, NSString
}
cMime = malloc([mime length]+1);
[mime getCString:cMime];
- npErr = NPP_New(cMime, instance, NP_EMBED, [arguments count], cAttributes, cValues, &saved);
+ npErr = NPP_New(cMime, instance, mode, [arguments count], cAttributes, cValues, &saved);
KWQDebug("NPP_New: %d\n", npErr);
if([attributes containsObject:@"HIDDEN"]){
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list