18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2006, 2007 Apple, Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "WebKitDLL.h" 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "WebHTMLRepresentation.h" 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "WebKit.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "WebFrame.h" 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "WebKitStatisticsPrivate.h" 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <WebCore/BString.h> 34d0825bca7fe65beaee391d30da42e937db621564Steve Block#include <WebCore/Frame.h> 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <WebCore/HTMLInputElement.h> 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <WebCore/TextResourceDecoder.h> 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectusing namespace WebCore; 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// WebHTMLRepresentation ------------------------------------------------------ 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebHTMLRepresentation::WebHTMLRepresentation() 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : m_refCount(0) 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_frame(0) 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebHTMLRepresentationCount++; 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gClassCount++; 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gClassNameCount.add("WebHTMLRepresentation"); 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebHTMLRepresentation::~WebHTMLRepresentation() 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (m_frame) { 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_frame->Release(); 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_frame = 0; 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebHTMLRepresentationCount--; 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gClassCount--; 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gClassNameCount.remove("WebHTMLRepresentation"); 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebHTMLRepresentation* WebHTMLRepresentation::createInstance(WebFrame* frame) 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebHTMLRepresentation* instance = new WebHTMLRepresentation(); 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project instance->m_frame = frame; 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project frame->AddRef(); 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project instance->AddRef(); 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return instance; 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// IUnknown ------------------------------------------------------------------- 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::QueryInterface(REFIID riid, void** ppvObject) 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *ppvObject = 0; 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (IsEqualGUID(riid, IID_IUnknown)) 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *ppvObject = static_cast<IWebHTMLRepresentation*>(this); 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else if (IsEqualGUID(riid, IID_IWebHTMLRepresentation)) 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *ppvObject = static_cast<IWebHTMLRepresentation*>(this); 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else if (IsEqualGUID(riid, IID_IWebDocumentRepresentation)) 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *ppvObject = static_cast<IWebDocumentRepresentation*>(this); 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_NOINTERFACE; 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRef(); 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectULONG STDMETHODCALLTYPE WebHTMLRepresentation::AddRef() 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return ++m_refCount; 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectULONG STDMETHODCALLTYPE WebHTMLRepresentation::Release() 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ULONG newRef = --m_refCount; 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!newRef) 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete(this); 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return newRef; 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// IWebHTMLRepresentation -------------------------------------------------------------------- 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 106d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::supportedMIMETypes( 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [out][in] */ BSTR* /*types*/, 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [out][in] */ int* /*cTypes*/) 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT_NOT_REACHED(); 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_NOTIMPL; 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 114d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::supportedNonImageMIMETypes( 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [out][in] */ BSTR* /*types*/, 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [out][in] */ int* /*cTypes*/) 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT_NOT_REACHED(); 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_NOTIMPL; 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 122d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::supportedImageMIMETypes( 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [out][in] */ BSTR* /*types*/, 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [out][in] */ int* /*cTypes*/) 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT_NOT_REACHED(); 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_NOTIMPL; 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 130d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::attributedStringFromDOMNodes( 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ IDOMNode* /*startNode*/, 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ int /*startOffset*/, 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ IDOMNode* /*endNode*/, 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ int /*endOffset*/, 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ IDataObject** /*attributedString*/) 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT_NOT_REACHED(); 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_NOTIMPL; 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 141d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::elementWithName( 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ BSTR name, 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ IDOMElement* form, 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ IDOMElement** element) 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!m_frame) 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_FAIL; 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_frame->elementWithName(name, form, element); 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 152d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::elementDoesAutoComplete( 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ IDOMElement* element, 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ BOOL* result) 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project BOOL doesAutoComplete; 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project HRESULT hr = m_frame->elementDoesAutoComplete(element, &doesAutoComplete); 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *result = doesAutoComplete ? TRUE : FALSE; 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return hr; 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 162d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::elementIsPassword( 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ IDOMElement* element, 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ BOOL* result) 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isPassword; 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project HRESULT hr = m_frame->elementIsPassword(element, &isPassword); 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *result = isPassword ? TRUE : FALSE; 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return hr; 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 172d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::formForElement( 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ IDOMElement* element, 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ IDOMElement** form) 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!m_frame) 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_FAIL; 1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_frame->formForElement(element, form); 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 182d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::currentForm( 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ IDOMElement** form) 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!m_frame) 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_FAIL; 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_frame->currentForm(form); 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 191d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::controlsInForm( 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ IDOMElement* form, 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [out][in] */ IDOMElement** controls, 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [out][in] */ int* cControls) 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_frame->controlsInForm(form, controls, cControls); 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 199d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::deprecatedSearchForLabels( 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [size_is][in] */ BSTR* labels, 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ int cLabels, 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ IDOMElement* beforeElement, 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ BSTR* result) 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 205d0825bca7fe65beaee391d30da42e937db621564Steve Block return m_frame->searchForLabelsBeforeElement(labels, cLabels, beforeElement, 0, 0, result); 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 208d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::matchLabels( 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [size_is][in] */ BSTR* labels, 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ int cLabels, 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ IDOMElement* againstElement, 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ BSTR* result) 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_frame->matchLabelsAgainstElement(labels, cLabels, againstElement, result); 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 217d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT WebHTMLRepresentation::searchForLabels(BSTR* labels, unsigned cLabels, IDOMElement* beforeElement, unsigned* resultDistance, BOOL* resultIsInCellAbove, BSTR* result) 218d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 219d0825bca7fe65beaee391d30da42e937db621564Steve Block return m_frame->searchForLabelsBeforeElement(labels, cLabels, beforeElement, resultDistance, resultIsInCellAbove, result); 220d0825bca7fe65beaee391d30da42e937db621564Steve Block} 221d0825bca7fe65beaee391d30da42e937db621564Steve Block 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// IWebDocumentRepresentation ---------------------------------------------------------------- 2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 224d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::setDataSource( 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ IWebDataSource* /*dataSource*/) 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT_NOT_REACHED(); 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_NOTIMPL; 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 231d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::receivedData( 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ IStream* /*data*/, 2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ IWebDataSource* /*dataSource*/) 2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT_NOT_REACHED(); 2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_NOTIMPL; 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 239d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::receivedError( 2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ IWebError* /*error*/, 2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ IWebDataSource* /*dataSource*/) 2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT_NOT_REACHED(); 2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_NOTIMPL; 2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 247d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::finishedLoadingWithDataSource( 2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ IWebDataSource* /*dataSource*/) 2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT_NOT_REACHED(); 2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_NOTIMPL; 2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 254d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::canProvideDocumentSource( 2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ BOOL* result) 2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool canProvideSource; 2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project HRESULT hr = this->m_frame->canProvideDocumentSource(&canProvideSource); 2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *result = canProvideSource ? TRUE : FALSE; 2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return hr; 2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 263d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::documentSource( 2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ BSTR* source) 2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!source) 2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_FAIL; 2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *source = 0; 2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project HRESULT hr = S_OK; 2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project COMPtr<IWebDataSource> dataSource; 2748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project hr = m_frame->dataSource(&dataSource); 2758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (FAILED(hr)) 2768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return hr; 2778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project COMPtr<IStream> data; 2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project hr = dataSource->data(&data); 2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (FAILED(hr)) 2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return hr; 2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project STATSTG stat; 2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project hr = data->Stat(&stat, STATFLAG_NONAME); 2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (FAILED(hr)) 2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return hr; 2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (stat.cbSize.HighPart || !stat.cbSize.LowPart) 2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_FAIL; 2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Vector<char> dataBuffer(stat.cbSize.LowPart); 2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ULONG read; 2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project hr = data->Read(dataBuffer.data(), static_cast<ULONG>(dataBuffer.size()), &read); 2958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (FAILED(hr)) 2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return hr; 2978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::Frame* frame = core(m_frame); 2998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!frame) 3008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_FAIL; 3018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::Document* doc = frame->document(); 3038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!doc) 3048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_FAIL; 3058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::TextResourceDecoder* decoder = doc->decoder(); 3078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!decoder) 3088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_FAIL; 3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *source = WebCore::BString(decoder->encoding().decode(dataBuffer.data(), dataBuffer.size())).release(); 3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 3128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 314d0825bca7fe65beaee391d30da42e937db621564Steve BlockHRESULT STDMETHODCALLTYPE WebHTMLRepresentation::title( 3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ BSTR* /*docTitle*/) 3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT_NOT_REACHED(); 3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_NOTIMPL; 3198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 320