15ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark/* 25ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * Copyright (C) 2008 Apple Inc. All Rights Reserved. 35ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * 45ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * Redistribution and use in source and binary forms, with or without 55ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * modification, are permitted provided that the following conditions 65ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * are met: 75ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * 1. Redistributions of source code must retain the above copyright 85ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * notice, this list of conditions and the following disclaimer. 95ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * 2. Redistributions in binary form must reproduce the above copyright 105ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * notice, this list of conditions and the following disclaimer in the 115ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * documentation and/or other materials provided with the distribution. 125ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * 135ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 145ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 155ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 165ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 175ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 185ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 195ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 205ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 215ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 225ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 235ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 245ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark */ 255ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 265ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark#if USE(PLUGIN_HOST_PROCESS) 275ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 285ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark#ifndef HostedNetscapePluginStream_h 295ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark#define HostedNetscapePluginStream_h 305ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 315ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark#include <WebCore/NetscapePlugInStreamLoader.h> 325ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark#include <WebKit/npapi.h> 335ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark#include <wtf/PassRefPtr.h> 345ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark#include <wtf/RefCounted.h> 355ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark#include <wtf/RefPtr.h> 365ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark#include <wtf/RetainPtr.h> 375ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 385ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clarknamespace WebCore { 395ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark class FrameLoader; 405ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark class NetscapePlugInStreamLoader; 415ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark} 425ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 435ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clarknamespace WebKit { 445ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 455ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clarkclass NetscapePluginInstanceProxy; 46231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 475ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clarkclass HostedNetscapePluginStream : public RefCounted<HostedNetscapePluginStream> 485ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark , private WebCore::NetscapePlugInStreamLoaderClient { 495ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clarkpublic: 505ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark static PassRefPtr<HostedNetscapePluginStream> create(NetscapePluginInstanceProxy* instance, uint32_t streamID, NSURLRequest *request) 515ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark { 525ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark return adoptRef(new HostedNetscapePluginStream(instance, streamID, request)); 535ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark } 540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch static PassRefPtr<HostedNetscapePluginStream> create(NetscapePluginInstanceProxy* instance, WebCore::FrameLoader* frameLoader) 550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch { 560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return adoptRef(new HostedNetscapePluginStream(instance, frameLoader)); 570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 58231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 59231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block ~HostedNetscapePluginStream(); 60231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 615ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark uint32_t streamID() const { return m_streamID; } 62231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 635ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark void startStreamWithResponse(NSURLResponse *response); 645ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark void didReceiveData(WebCore::NetscapePlugInStreamLoader*, const char* bytes, int length); 655ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark void didFinishLoading(WebCore::NetscapePlugInStreamLoader*); 660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void didFail(WebCore::NetscapePlugInStreamLoader*, const WebCore::ResourceError&); 670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 685ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark void start(); 695ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark void stop(); 705ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 715ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark void cancelLoad(NPReason reason); 725ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 73d0825bca7fe65beaee391d30da42e937db621564Steve Block static NPReason reasonForError(NSError* error); 74d0825bca7fe65beaee391d30da42e937db621564Steve Block 755ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clarkprivate: 765ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark NSError *errorForReason(NPReason) const; 775ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark void cancelLoad(NSError *); 785ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 795ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark HostedNetscapePluginStream(NetscapePluginInstanceProxy*, uint32_t streamID, NSURLRequest *); 800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch HostedNetscapePluginStream(NetscapePluginInstanceProxy*, WebCore::FrameLoader*); 815ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 825ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark void startStream(NSURL *, long long expectedContentLength, NSDate *lastModifiedDate, NSString *mimeType, NSData *headers); 835ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 845ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark NSError *pluginCancelledConnectionError() const; 855ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 865ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark // NetscapePlugInStreamLoaderClient methods. 875ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark void didReceiveResponse(WebCore::NetscapePlugInStreamLoader*, const WebCore::ResourceResponse&); 885ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark bool wantsAllStreams() const; 895ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 905ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark RefPtr<NetscapePluginInstanceProxy> m_instance; 915ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark uint32_t m_streamID; 925ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark bool m_isTerminated; 935ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark RetainPtr<NSMutableURLRequest> m_request; 945ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 955ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark RetainPtr<NSURL> m_requestURL; 965ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark RetainPtr<NSURL> m_responseURL; 975ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark RetainPtr<NSString> m_mimeType; 985ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 995ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark WebCore::FrameLoader* m_frameLoader; 1005ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark RefPtr<WebCore::NetscapePlugInStreamLoader> m_loader; 1015ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark}; 1025ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 1035ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark} 1045ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 1055ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark#endif // HostedNetscapePluginStream_h 1065ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark#endif // USE(PLUGIN_HOST_PROCESS) 107