Bug 13315 - Safari displays files instead of passing them off to plugin
Summary: Safari displays files instead of passing them off to plugin
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: Plug-ins (show other bugs)
Version: 420+
Hardware: Macintosh OS X 10.4
: P2 Major
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2007-04-09 14:47 PDT by Jaron Brass
Modified: 2007-12-10 06:34 PST (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jaron Brass 2007-04-09 14:47:39 PDT
Background:
The MassTransit Web Plugin allows users to send files to a Remote Server over LAN/WAN by dragging the files to it.

Steps to Reproduce:
1.  Launch Safari and open URL:  http://masstransit.grouplogic.com
2.  Login with username: "apple"  and password: "p4ssw*rd".
3.  When Prompted, download and install the Plugin.
4.  Re-login after the plugin has been installed with above username and 
     password.  The Plug-in should now appear when you login successfully.
5.  Click on the "Drop Off" tab of the plugin. 
6.  Drag a file (i.e. Text or a PDF file) from the desktop or Finder to 
     the plugin.

Expected Results:
The file drag event should get handled by the MassTransit Web Plugin which then transfers the file over LAN/WAN to designtated Server.

Actual Results:
Safari displays the file within the browser.

Regression:
This problem does not occur in Safari versions prior to Mac OS 10.4.6.  Moreover, in versions 10.4.4 and 10.4.5 MassTransit Plugin did NOT get the drag/drop event where as in 10.4.6 both MassTransit plugin and Safari receive the drag/drop event.  The latest seed build (#8i116) did not get the drag/drop event either.

In Mac OS X 10.4.9, the behavior appears to have become worse. A previous workaround was to place any files to be transferred into a folder, and then drag and drop the folder. On 10.4.9, folders residing on the user's desktop, and then dragged into Safari, will display the folder's contents.

Notes:
To be clear we have supported Drag & Drop to a browser with MassTransit
on the Mac for almost 7 years, and every other major browser supports
this functionality (Safari before it broke, Firefox on Mac and Windows,
IE on Windows (& on Mac before MS killed it)).

Losing support for drag & drop to the browser totally breaks a key
feature of our MassTransit product and we will have to instruct all of
our customers to stop using Safari & use Firefox instead.  Many of these
customers are large corporations with 100s - 1000s of Macs in the print
media space (Disney, Hallmark, Random House, Conde Nast, Gannett, etc.)
so this is going to be a big headache for us & them!  Thus we are happy
to try just about anything you suggest to help resolve this problem &
avoid going down this other path.
Comment 1 Jaron Brass 2007-04-09 14:54:14 PDT
This issue is also open with Apple in RadarWeb, ID 4509932.
Comment 2 Matt Lilek 2007-04-09 15:11:50 PDT
Have you tried this with a nightly build from http://nightly.webkit.org/?
Comment 3 Mark Rowe (bdash) 2007-04-09 16:59:51 PDT
The username/password provided do not work so I have no way of reproducing this bug.  Can you provide a working username/password?
Comment 4 Jaron Brass 2007-04-09 19:11:54 PDT
(In reply to comment #2)
> Have you tried this with a nightly build from http://nightly.webkit.org/?
> 

Matt -- we have tried this against several WebKit nightlies. I couldn't get the WebKit universal binary to run in PPC emulation, so we built our own in Xcode. The issue is still present.

(Our plug-in is still PPC; we require customers using Safari or Firefox on Intel Macs to run their browsers in Rosetta for proper operation.)
Comment 5 Jaron Brass 2007-04-09 19:13:45 PDT
(In reply to comment #3)
> The username/password provided do not work so I have no way of reproducing this
> bug.  Can you provide a working username/password?
> 

Mark - my apologies that the credentials do not work. I've sent a request to our product manager for an update on what works with our public MassTransit server.

In addition, our senior developer has a simulation tool that emulates our plug-in behavior without relying on Safari. I will get a hold of that and pass it along to this list. Thanks.
Comment 6 Jaron Brass 2007-04-16 13:36:16 PDT
(In reply to comment #3)
> The username/password provided do not work so I have no way of reproducing this
> bug.  Can you provide a working username/password?
> 

Mark,

A drag and drop simulation tool has been uploaded to my web site at http://www.jaronbrass.com/webkit/DragDropBugXCode.zip The project should compile in Xcode.

The tool will beep if the plugin handles a drag event and file. If the behavior is what we're experiencing, Safari will display the file instead.
Comment 7 Mark Rowe (bdash) 2007-04-18 22:33:50 PDT
Hrm, the attached project does not compile for me. It generates the following errors (these are just the first few, other similar errors follow):

Source/Web Client/SafariBug/!PowerPlant Overrides/LDragAndDrop.cp:36: error: 'OSErr (* LDropArea::sDragTrackingProc)(DragTrackingMessage, OpaqueWindowPtr*, void*, OpaqueDragRef*)' is not a static member of 'class LDropArea'
Source/Web Client/SafariBug/!PowerPlant Overrides/LDragAndDrop.cp:37: error: 'OSErr (* LDropArea::sDragReceiveProc)(OpaqueWindowPtr*, void*, OpaqueDragRef*)' is not a static member of 'class LDropArea'
Source/Web Client/SafariBug/!PowerPlant Overrides/LDragAndDrop.cp:38: error: conflicting declaration 'TArray<SDropAreaEntry>* LDropArea::sDropAreaList'

Is there something I'm doing wrong here?
Comment 8 Jaron Brass 2007-04-18 22:58:44 PDT
Mark,
I'm sorry it's not compiling for you. I've not seen that error before. The only other I've seen is an error thrown when using an older version of gcc.

In any event, I re-compiled the tool, and I've uploaded it to the following location:
http://www.jaronbrass.com/webkit/MassTransitWebClientX.plugin

Drop it into /Library/Internet Plug-ins, and hopefully it'll work for you. Fingers crossed.

Thanks,
Jaron

(In reply to comment #7)
> Hrm, the attached project does not compile for me. It generates the following
> errors (these are just the first few, other similar errors follow):
> 
> Source/Web Client/SafariBug/!PowerPlant Overrides/LDragAndDrop.cp:36: error:
> 'OSErr (* LDropArea::sDragTrackingProc)(DragTrackingMessage, OpaqueWindowPtr*,
> void*, OpaqueDragRef*)' is not a static member of 'class LDropArea'
> Source/Web Client/SafariBug/!PowerPlant Overrides/LDragAndDrop.cp:37: error:
> 'OSErr (* LDropArea::sDragReceiveProc)(OpaqueWindowPtr*, void*,
> OpaqueDragRef*)' is not a static member of 'class LDropArea'
> Source/Web Client/SafariBug/!PowerPlant Overrides/LDragAndDrop.cp:38: error:
> conflicting declaration 'TArray<SDropAreaEntry>* LDropArea::sDropAreaList'
> 
> Is there something I'm doing wrong here?
> 

Comment 9 Jaron Brass 2007-04-18 23:00:32 PDT
Sorry Mark,

That should be:
http://www.jaronbrass.com/webkit/MassTransitWebClientX.plugin.zip

Thanks,
Jaron

(In reply to comment #8)
> Mark,
> I'm sorry it's not compiling for you. I've not seen that error before. The only
> other I've seen is an error thrown when using an older version of gcc.
> 
> In any event, I re-compiled the tool, and I've uploaded it to the following
> location:
> http://www.jaronbrass.com/webkit/MassTransitWebClientX.plugin
> 
> Drop it into /Library/Internet Plug-ins, and hopefully it'll work for you.
> Fingers crossed.
> 
> Thanks,
> Jaron
> 
> (In reply to comment #7)
> > Hrm, the attached project does not compile for me. It generates the following
> > errors (these are just the first few, other similar errors follow):
> > 
> > Source/Web Client/SafariBug/!PowerPlant Overrides/LDragAndDrop.cp:36: error:
> > 'OSErr (* LDropArea::sDragTrackingProc)(DragTrackingMessage, OpaqueWindowPtr*,
> > void*, OpaqueDragRef*)' is not a static member of 'class LDropArea'
> > Source/Web Client/SafariBug/!PowerPlant Overrides/LDragAndDrop.cp:37: error:
> > 'OSErr (* LDropArea::sDragReceiveProc)(OpaqueWindowPtr*, void*,
> > OpaqueDragRef*)' is not a static member of 'class LDropArea'
> > Source/Web Client/SafariBug/!PowerPlant Overrides/LDragAndDrop.cp:38: error:
> > conflicting declaration 'TArray<SDropAreaEntry>* LDropArea::sDropAreaList'
> > 
> > Is there something I'm doing wrong here?
> > 
> 

Comment 10 Mark Rowe (bdash) 2007-04-18 23:12:03 PDT
Thanks Jaron.  I can definitely confirm the duplicate event handling behaviour you describe.  If I drag a .jpg file into the plugin, it beeps and then navigates to display the image.  If I drag a .plist file, for example, into the plugin, it beeps and the file is also revealed in the Finder.

I've taken the liberty of attaching the prebuilt plugin to the radar at <rdar://problem/4509932>.
Comment 11 Jaron Brass 2007-04-18 23:15:27 PDT
Thank you for doing that, Mark. Hopefully with the WebKit and Apple teams working on this, we'll see resolution soon. We've had this open for awhile, but it hasn't had any traction until recently. I appreciate all of your assistance.

-Jaron

(In reply to comment #10)
> Thanks Jaron.  I can definitely confirm the duplicate event handling behaviour
> you describe.  If I drag a .jpg file into the plugin, it beeps and then
> navigates to display the image.  If I drag a .plist file, for example, into the
> plugin, it beeps and the file is also revealed in the Finder.
> 
> I've taken the liberty of attaching the prebuilt plugin to the radar at
> <rdar://problem/4509932>.
>