--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginStreamLoaderClient.cpp Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,207 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#include "config.h"
+#include "PluginStreamLoaderClient.h"
+
+#include "Page.h"
+#include "Frame.h"
+#include "FrameLoader.h"
+#include "DocumentLoader.h"
+#include "ProgressTracker.h"
+#include "ResourceRequest.h"
+#include "ResourceResponse.h"
+
+#include "StaticObjectsContainer.h"
+
+#include "PluginSkin.h"
+#include "PluginStream.h"
+#include "PluginHandler.h"
+
+#include "NetScapePlugInStreamLoader.h"
+
+using namespace WebCore;
+
+
+NetscapePlugInStreamLoaderClient* NetscapePlugInStreamLoaderClient::NewL(const String& url, PluginSkin* pluginskin, Frame* frame, void* notifydata)
+{
+ NetscapePlugInStreamLoaderClient* self = new (ELeave) NetscapePlugInStreamLoaderClient();
+ CleanupStack::PushL( self );
+ self->ConstructL( url, pluginskin, frame, notifydata );
+ CleanupStack::Pop();
+ return self;
+}
+
+
+NetscapePlugInStreamLoaderClient* NetscapePlugInStreamLoaderClient::NewL(const ResourceRequest& request, PluginSkin* pluginskin, Frame* frame, void* notifydata)
+{
+ NetscapePlugInStreamLoaderClient* self = new (ELeave) NetscapePlugInStreamLoaderClient();
+ CleanupStack::PushL( self );
+
+ self->ConstructL( request, pluginskin, frame, notifydata );
+
+ CleanupStack::Pop();
+ return self;
+}
+
+void NetscapePlugInStreamLoaderClient::ConstructL(const String& url, PluginSkin* pluginskin, Frame* frame, void* notifydata)
+{
+ m_loader = 0;
+ m_request = 0;
+ m_pluginstream = 0;
+ m_frame = frame;
+ m_pluginstream = new (ELeave) PluginStream(pluginskin, this, notifydata);
+ m_request = new (ELeave) ResourceRequest(m_frame->loader()->completeURL(url));
+
+ if ( !m_frame->loader()->canLoad(m_request->url(), frame->document()) )
+ return;
+
+ if ( m_frame->loader()->shouldHideReferrer(m_request->url(), frame->loader()->outgoingReferrer()) )
+ m_request->clearHTTPReferrer();
+
+
+ m_loader = NetscapePlugInStreamLoader::create(frame,this);
+ if (m_loader)
+ m_loader->setShouldBufferData(false);
+}
+
+void NetscapePlugInStreamLoaderClient::ConstructL(const ResourceRequest& request, PluginSkin* pluginskin, Frame* frame, void* notifydata)
+{
+
+ m_loader = 0;
+ m_request = 0;
+ m_pluginstream = 0;
+ m_frame = frame;
+ m_pluginstream = new (ELeave) PluginStream(pluginskin, this, notifydata);
+ m_request = new (ELeave) ResourceRequest(request.url());
+
+ m_request->setCachePolicy(request.cachePolicy());
+ m_request->setTimeoutInterval(request.timeoutInterval());
+ m_request->setMainDocumentURL(request.mainDocumentURL());
+ m_request->setHTTPMethod(request.httpMethod());
+ m_request->addHTTPHeaderFields(request.httpHeaderFields());
+ m_request->setHTTPContentType(request.httpContentType());
+ m_request->setHTTPReferrer(request.httpReferrer());
+ m_request->setHTTPUserAgent(request.httpUserAgent());
+ m_request->setHTTPAccept(request.httpAccept());
+ m_request->setHTTPBody(request.httpBody());
+ m_request->setAllowHTTPCookies(request.allowHTTPCookies());
+
+
+ if ( !m_frame->loader()->canLoad(m_request->url(), frame->document()) )
+ return;
+
+ if ( m_frame->loader()->shouldHideReferrer(m_request->url(), frame->loader()->outgoingReferrer()) )
+ m_request->clearHTTPReferrer();
+
+
+ m_loader = NetscapePlugInStreamLoader::create(m_frame,this);
+
+}
+
+NetscapePlugInStreamLoaderClient::NetscapePlugInStreamLoaderClient() : m_frame(0), m_loader(0), m_error(KErrNone)
+{
+}
+
+NetscapePlugInStreamLoaderClient::~NetscapePlugInStreamLoaderClient()
+{
+
+ if (m_loader)
+ m_loader->releaseResources();
+
+ delete m_request;
+ delete m_pluginstream;
+
+}
+
+
+void NetscapePlugInStreamLoaderClient::start()
+{
+ if (m_loader) {
+ m_loader->documentLoader()->addSubresourceLoader(m_loader);
+ m_loader->load(*m_request);
+ }
+}
+
+void NetscapePlugInStreamLoaderClient::stop()
+{
+
+ if (m_loader && !m_loader->isDone())
+ m_loader->cancel();
+ }
+
+void NetscapePlugInStreamLoaderClient::cancelWithError(const ResourceError& error)
+{
+ if (m_loader && !m_loader->isDone())
+ m_loader->cancel(error);
+ }
+
+void NetscapePlugInStreamLoaderClient::didReceiveResponse(const ResourceResponse& response)
+{
+ int status = response.httpStatusCode();
+ if (status < 200 || status >= 300) {
+ cancelWithError(ResourceError(String(response.url()), KErrGeneral, String(response.url()), String(response.httpStatusText())));
+ return;
+ }
+
+ if (m_pluginstream) {
+ TRAP(m_error, m_pluginstream->createNPStreamL(response.url().des(), response.mimeType().des(), response.expectedContentLength()));
+ }
+
+}
+
+void NetscapePlugInStreamLoaderClient::didReceiveData(const char* data, int length, long long lengthReceived)
+{
+
+ if (m_pluginstream && m_error == KErrNone) {
+ TRAP(m_error, m_pluginstream->writeStreamL(data, length));
+ }
+
+ if (m_error && m_pluginstream) {
+ m_pluginstream->destroyStream(m_error);
+
+ if (m_loader && !m_loader->isDone()) {
+ m_loader->cancel();
+ }
+ }
+}
+
+void NetscapePlugInStreamLoaderClient::didFinishLoading()
+{
+ if (m_pluginstream) {
+ m_pluginstream->destroyStream(m_error);
+ }
+}
+
+void NetscapePlugInStreamLoaderClient::didFail(const ResourceError& error)
+{
+ if (m_pluginstream) {
+ m_pluginstream->destroyStream(error.errorCode() ? error.errorCode() : KErrCancel);
+ }
+}
+
+void NetscapePlugInStreamLoaderClient::didCancel(const ResourceError& error)
+{
+ if (m_pluginstream) {
+ m_pluginstream->destroyStream(error.errorCode() ? error.errorCode() : KErrCancel);
+ }
+}
+
+
+
+
+
+