webresource.cpp

来自「linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自Web」· C++ 代码 · 共 171 行

CPP
171
字号
/* * 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 "MarshallingHelpers.h"#include "MemoryStream.h"#pragma warning(push, 0)#include <WebCore/BString.h>#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++;    gClassNameCount.add("WebResource");}WebResource::~WebResource(){    gClassCount--;    gClassNameCount.remove("WebResource");}WebResource* WebResource::createInstance(PassRefPtr<WebCore::SharedBuffer> data, const WebCore::ResourceResponse& response){    COMPtr<IStream> 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<IUnknown*>(this);    else if (IsEqualGUID(riid, IID_IWebResource))        *ppvObject = static_cast<IWebResource*>(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 = MarshallingHelpers::BSTRToKURL(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;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?