⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 domcoreclasses.cpp

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 CPP
📖 第 1 页 / 共 3 页
字号:
        default:        {            DOMNode* newNode = new DOMNode(n);            hr = newNode->QueryInterface(IID_IDOMNode, (void**)&domNode);        }        break;    }    if (FAILED(hr))        return 0;    return domNode;}// DOMNodeList - IUnknown -----------------------------------------------------HRESULT STDMETHODCALLTYPE DOMNodeList::QueryInterface(REFIID riid, void** ppvObject){    *ppvObject = 0;    if (IsEqualGUID(riid, IID_IDOMNodeList))        *ppvObject = static_cast<IDOMNodeList*>(this);    else        return DOMObject::QueryInterface(riid, ppvObject);    AddRef();    return S_OK;}// IDOMNodeList ---------------------------------------------------------------HRESULT STDMETHODCALLTYPE DOMNodeList::item(     /* [in] */ UINT index,    /* [retval][out] */ IDOMNode **result){    *result = 0;    if (!m_nodeList)        return E_FAIL;    WebCore::Node* itemNode = m_nodeList->item(index);    if (!itemNode)        return E_FAIL;    *result = DOMNode::createInstance(itemNode);    return *result ? S_OK : E_FAIL;}HRESULT STDMETHODCALLTYPE DOMNodeList::length(         /* [retval][out] */ UINT *result){    *result = 0;    if (!m_nodeList)        return E_FAIL;    *result = m_nodeList->length();    return S_OK;}// DOMNodeList - DOMNodeList --------------------------------------------------DOMNodeList::DOMNodeList(WebCore::NodeList* l): m_nodeList(0){    if (l)        l->ref();    m_nodeList = l;}DOMNodeList::~DOMNodeList(){    if (m_nodeList)        m_nodeList->deref();}IDOMNodeList* DOMNodeList::createInstance(WebCore::NodeList* l){    if (!l)        return 0;    IDOMNodeList* domNodeList = 0;    DOMNodeList* newNodeList = new DOMNodeList(l);    if (FAILED(newNodeList->QueryInterface(IID_IDOMNodeList, (void**)&domNodeList)))        return 0;    return domNodeList;}// DOMDocument - IUnknown -----------------------------------------------------HRESULT STDMETHODCALLTYPE DOMDocument::QueryInterface(REFIID riid, void** ppvObject){    *ppvObject = 0;    if (IsEqualGUID(riid, IID_IDOMDocument))        *ppvObject = static_cast<IDOMDocument*>(this);    else if (IsEqualGUID(riid, IID_IDOMViewCSS))        *ppvObject = static_cast<IDOMViewCSS*>(this);    else if (IsEqualGUID(riid, IID_IDOMDocumentEvent))        *ppvObject = static_cast<IDOMDocumentEvent*>(this);    else        return DOMNode::QueryInterface(riid, ppvObject);    AddRef();    return S_OK;}// DOMDocument ----------------------------------------------------------------HRESULT STDMETHODCALLTYPE DOMDocument::doctype(     /* [retval][out] */ IDOMDocumentType** /*result*/){    ASSERT_NOT_REACHED();    return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE DOMDocument::implementation(     /* [retval][out] */ IDOMImplementation** /*result*/){    ASSERT_NOT_REACHED();    return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE DOMDocument::documentElement(     /* [retval][out] */ IDOMElement** result){    *result = DOMElement::createInstance(m_document->documentElement());    return *result ? S_OK : E_FAIL;}HRESULT STDMETHODCALLTYPE DOMDocument::createElement(     /* [in] */ BSTR tagName,    /* [retval][out] */ IDOMElement** result){    if (!m_document)        return E_FAIL;    String tagNameString(tagName);    ExceptionCode ec;    *result = DOMElement::createInstance(m_document->createElement(tagNameString, ec).get());    return *result ? S_OK : E_FAIL;}HRESULT STDMETHODCALLTYPE DOMDocument::createDocumentFragment(     /* [retval][out] */ IDOMDocumentFragment** /*result*/){    ASSERT_NOT_REACHED();    return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE DOMDocument::createTextNode(     /* [in] */ BSTR /*data*/,    /* [retval][out] */ IDOMText** /*result*/){    ASSERT_NOT_REACHED();    return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE DOMDocument::createComment(     /* [in] */ BSTR /*data*/,    /* [retval][out] */ IDOMComment** /*result*/){    ASSERT_NOT_REACHED();    return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE DOMDocument::createCDATASection(     /* [in] */ BSTR /*data*/,    /* [retval][out] */ IDOMCDATASection** /*result*/){    ASSERT_NOT_REACHED();    return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE DOMDocument::createProcessingInstruction(     /* [in] */ BSTR /*target*/,    /* [in] */ BSTR /*data*/,    /* [retval][out] */ IDOMProcessingInstruction** /*result*/){    ASSERT_NOT_REACHED();    return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE DOMDocument::createAttribute(     /* [in] */ BSTR /*name*/,    /* [retval][out] */ IDOMAttr** /*result*/){    ASSERT_NOT_REACHED();    return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE DOMDocument::createEntityReference(     /* [in] */ BSTR /*name*/,    /* [retval][out] */ IDOMEntityReference** /*result*/){    ASSERT_NOT_REACHED();    return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE DOMDocument::getElementsByTagName(     /* [in] */ BSTR tagName,    /* [retval][out] */ IDOMNodeList** result){    if (!m_document)        return E_FAIL;    String tagNameString(tagName);    *result = DOMNodeList::createInstance(m_document->getElementsByTagName(tagNameString).get());    return *result ? S_OK : E_FAIL;}HRESULT STDMETHODCALLTYPE DOMDocument::importNode(     /* [in] */ IDOMNode* /*importedNode*/,    /* [in] */ BOOL /*deep*/,    /* [retval][out] */ IDOMNode** /*result*/){    ASSERT_NOT_REACHED();    return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE DOMDocument::createElementNS(     /* [in] */ BSTR /*namespaceURI*/,    /* [in] */ BSTR /*qualifiedName*/,    /* [retval][out] */ IDOMElement** /*result*/){    ASSERT_NOT_REACHED();    return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE DOMDocument::createAttributeNS(     /* [in] */ BSTR /*namespaceURI*/,    /* [in] */ BSTR /*qualifiedName*/,    /* [retval][out] */ IDOMAttr** /*result*/){    ASSERT_NOT_REACHED();    return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE DOMDocument::getElementsByTagNameNS(     /* [in] */ BSTR namespaceURI,    /* [in] */ BSTR localName,    /* [retval][out] */ IDOMNodeList** result){    if (!m_document)        return E_FAIL;    String namespaceURIString(namespaceURI);    String localNameString(localName);    *result = DOMNodeList::createInstance(m_document->getElementsByTagNameNS(namespaceURIString, localNameString).get());    return *result ? S_OK : E_FAIL;}HRESULT STDMETHODCALLTYPE DOMDocument::getElementById(     /* [in] */ BSTR elementId,    /* [retval][out] */ IDOMElement** result){    if (!m_document)        return E_FAIL;    String idString(elementId);    *result = DOMElement::createInstance(m_document->getElementById(idString));    return *result ? S_OK : E_FAIL;}// DOMDocument - IDOMViewCSS --------------------------------------------------HRESULT STDMETHODCALLTYPE DOMDocument::getComputedStyle(     /* [in] */ IDOMElement* elt,    /* [in] */ BSTR pseudoElt,    /* [retval][out] */ IDOMCSSStyleDeclaration** result){    if (!elt || !result)        return E_POINTER;    COMPtr<DOMElement> domEle;    HRESULT hr = elt->QueryInterface(IID_DOMElement, (void**)&domEle);    if (FAILED(hr))        return hr;    Element* element = domEle->element();    WebCore::DOMWindow* dv = m_document->defaultView();    String pseudoEltString(pseudoElt);        if (!dv)        return E_FAIL;        *result = DOMCSSStyleDeclaration::createInstance(dv->getComputedStyle(element, pseudoEltString.impl()).get());    return *result ? S_OK : E_FAIL;}// DOMDocument - IDOMDocumentEvent --------------------------------------------HRESULT STDMETHODCALLTYPE DOMDocument::createEvent(     /* [in] */ BSTR eventType,    /* [retval][out] */ IDOMEvent **result){    String eventTypeString(eventType, SysStringLen(eventType));    WebCore::ExceptionCode ec = 0;    *result = DOMEvent::createInstance(m_document->createEvent(eventTypeString, ec));    return *result ? S_OK : E_FAIL;}// DOMDocument - DOMDocument --------------------------------------------------DOMDocument::DOMDocument(WebCore::Document* d): DOMNode(d), m_document(d){}DOMDocument::~DOMDocument(){}IDOMDocument* DOMDocument::createInstance(WebCore::Document* d){    if (!d)        return 0;    HRESULT hr;    IDOMDocument* domDocument = 0;    if (d->isHTMLDocument()) {        DOMHTMLDocument* newDocument = new DOMHTMLDocument(d);        hr = newDocument->QueryInterface(IID_IDOMDocument, (void**)&domDocument);    } else {        DOMDocument* newDocument = new DOMDocument(d);        hr = newDocument->QueryInterface(IID_IDOMDocument, (void**)&domDocument);    }    if (FAILED(hr))        return 0;    return domDocument;}// DOMElement - IUnknown ------------------------------------------------------HRESULT STDMETHODCALLTYPE DOMElement::QueryInterface(REFIID riid, void** ppvObject){    *ppvObject = 0;    if (IsEqualGUID(riid, IID_IDOMElement))        *ppvObject = static_cast<IDOMElement*>(this);    else if (IsEqualGUID(riid, IID_DOMElement))        *ppvObject = static_cast<DOMElement*>(this);    else if (IsEqualGUID(riid, IID_IDOMElementPrivate))        *ppvObject = static_cast<IDOMElementPrivate*>(this);    else if (IsEqualGUID(riid, IID_IDOMNodeExtensions))        *ppvObject = static_cast<IDOMNodeExtensions*>(this);    else if (IsEqualGUID(riid, IID_IDOMElementCSSInlineStyle))        *ppvObject = static_cast<IDOMElementCSSInlineStyle*>(this);    else if (IsEqualGUID(riid, IID_IDOMElementExtensions))        *ppvObject = static_cast<IDOMElementExtensions*>(this);    else        return DOMNode::QueryInterface(riid, ppvObject);    AddRef();    return S_OK;}// DOMElement - IDOMNodeExtensions---------------------------------------------HRESULT STDMETHODCALLTYPE DOMElement::boundingBox(     /* [retval][out] */ LPRECT rect){    ::SetRectEmpty(rect);    if (!m_element)        return E_FAIL;    WebCore::RenderObject *renderer = m_element->renderer();    if (renderer) {        IntRect boundsIntRect = renderer->absoluteBoundingBoxRect();        rect->left = boundsIntRect.x();        rect->top = boundsIntRect.y();        rect->right = boundsIntRect.x() + boundsIntRect.width();        rect->bottom = boundsIntRect.y() + boundsIntRect.height();    }    return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::lineBoxRects(     /* [size_is][in] */ RECT* /*rects*/,    /* [in] */ int /*cRects*/){    return E_NOTIMPL;}// IDOMElement ----------------------------------------------------------------HRESULT STDMETHODCALLTYPE DOMElement::tagName(         /* [retval][out] */ BSTR* /*result*/){    ASSERT_NOT_REACHED();    return E_NOTIMPL;}    HRESULT STDMETHODCALLTYPE DOMElement::getAttribute(         /* [in] */ BSTR name,        /* [retval][out] */ BSTR* result){    if (!m_element)        return E_FAIL;    WebCore::String nameString(name, SysStringLen(name));    WebCore::String& attrValueString = (WebCore::String&) m_element->getAttribute(nameString);    *result = SysAllocStringLen(attrValueString.characters(), attrValueString.length());    if (attrValueString.length() && !*result)        return E_OUTOFMEMORY;    return S_OK;}    HRESULT STDMETHODCALLTYPE DOMElement::setAttribute(         /* [in] */ BSTR name,        /* [in] */ BSTR value){    if (!m_element)        return E_FAIL;    WebCore::String nameString(name, SysStringLen(name));    WebCore::String valueString(value, SysStringLen(value));    WebCore::ExceptionCode ec = 0;    m_element->setAttribute(nameString, valueString, ec);    return ec ? E_FAIL : S_OK;}    HRESULT STDMETHODCALLTYPE DOMElement::removeAttribute(         /* [in] */ BSTR /*name*/){    ASSERT_NOT_REACHED();    return E_NOTIMPL;}    HRESULT STDMETHODCALLTYPE DOMElement::getAttributeNode(         /* [in] */ BSTR /*name*/,        /* [retval][out] */ IDOMAttr** /*result*/){    ASSERT_NOT_REACHED();

⌨️ 快捷键说明

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