From d8543bb6618c17b12da906afa77d216f58cf4058 Mon Sep 17 00:00:00 2001 From: Upstream Date: Mon, 12 Jan 1970 13:46:40 +0000 Subject: external/webkit r30707 --- WebKit/win/WebResource.cpp | 167 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 WebKit/win/WebResource.cpp (limited to 'WebKit/win/WebResource.cpp') diff --git a/WebKit/win/WebResource.cpp b/WebKit/win/WebResource.cpp new file mode 100644 index 0000000..3f708ea --- /dev/null +++ b/WebKit/win/WebResource.cpp @@ -0,0 +1,167 @@ +/* + * Copyright (C) 2007 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 COMPUTER, INC. ``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 COMPUTER, INC. OR + * 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. + */ + +#include "config.h" +#include "WebKitDLL.h" +#include "WebResource.h" + +#include "MemoryStream.h" + +#pragma warning(push, 0) +#include +#pragma warning(pop) + +using namespace WebCore; + +// WebResource --------------------------------------------------------------------- + +WebResource::WebResource(IStream* data, const WebCore::KURL& url, const WebCore::String& mimeType, const WebCore::String& textEncodingName, const WebCore::String& frameName) + : m_refCount(0) + , m_data(data) + , m_url(url) + , m_mimeType(mimeType) + , m_textEncodingName(textEncodingName) + , m_frameName(frameName) +{ + gClassCount++; +} + +WebResource::~WebResource() +{ + gClassCount--; +} + +WebResource* WebResource::createInstance(PassRefPtr data, const WebCore::ResourceResponse& response) +{ + COMPtr memoryStream; + memoryStream.adoptRef(MemoryStream::createInstance(data)); + + WebResource* instance = new WebResource(memoryStream.get(), response.url(), response.mimeType(), response.textEncodingName(), String()); + instance->AddRef(); + return instance; +} + +// IUnknown ------------------------------------------------------------------- + +HRESULT STDMETHODCALLTYPE WebResource::QueryInterface(REFIID riid, void** ppvObject) +{ + *ppvObject = 0; + if (IsEqualGUID(riid, IID_IUnknown)) + *ppvObject = static_cast(this); + else if (IsEqualGUID(riid, IID_IWebResource)) + *ppvObject = static_cast(this); + else + return E_NOINTERFACE; + + AddRef(); + return S_OK; +} + +ULONG STDMETHODCALLTYPE WebResource::AddRef(void) +{ + return ++m_refCount; +} + +ULONG STDMETHODCALLTYPE WebResource::Release(void) +{ + ULONG newRef = --m_refCount; + if (!newRef) + delete(this); + + return newRef; +} + +// WebResource ------------------------------------------------------------------ + +HRESULT STDMETHODCALLTYPE WebResource::initWithData( + /* [in] */ IStream *data, + /* [in] */ BSTR url, + /* [in] */ BSTR mimeType, + /* [in] */ BSTR textEncodingName, + /* [in] */ BSTR frameName) +{ + m_data = data; + m_url = KURL(String(url)); + m_mimeType = String(mimeType); + m_textEncodingName = String(textEncodingName); + m_frameName = String(frameName); + + return S_OK; +} + + +HRESULT STDMETHODCALLTYPE WebResource::data( + /* [retval][out] */ IStream **data) +{ + return m_data.copyRefTo(data); +} + +HRESULT STDMETHODCALLTYPE WebResource::URL( + /* [retval][out] */ BSTR *url) +{ + if (!url) { + ASSERT_NOT_REACHED(); + return E_POINTER; + } + + *url = BString(String(m_url.string())).release(); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE WebResource::MIMEType( + /* [retval][out] */ BSTR *mime) +{ + if (!mime) { + ASSERT_NOT_REACHED(); + return E_POINTER; + } + + *mime = BString(m_mimeType).release(); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE WebResource::textEncodingName( + /* [retval][out] */ BSTR *encodingName) +{ + if (!encodingName) { + ASSERT_NOT_REACHED(); + return E_POINTER; + } + + *encodingName = BString(m_textEncodingName).release(); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE WebResource::frameName( + /* [retval][out] */ BSTR *name) +{ + if (!name) { + ASSERT_NOT_REACHED(); + return E_POINTER; + } + + *name = BString(m_frameName).release(); + return S_OK; +} -- cgit v1.1