qwebframe.cpp revision 53733164eb6cabab5a1eddcabb42e4ce27eb0e44
18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark Copyright (C) 2008,2009 Nokia Corporation and/or its subsidiary(-ies) 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Copyright (C) 2007 Staikos Computing Services Inc. 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This library is free software; you can redistribute it and/or 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project modify it under the terms of the GNU Library General Public 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project License as published by the Free Software Foundation; either 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project version 2 of the License, or (at your option) any later version. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This library is distributed in the hope that it will be useful, 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project but WITHOUT ANY WARRANTY; without even the implied warranty of 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Library General Public License for more details. 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project You should have received a copy of the GNU Library General Public License 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project along with this library; see the file COPYING.LIB. If not, write to 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Boston, MA 02110-1301, USA. 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "qwebframe.h" 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2468513a70bcd92384395513322f1b801e7bf9c729Steve Block#if USE(JSC) 2553733164eb6cabab5a1eddcabb42e4ce27eb0e44Ben Murdoch#include "BridgeJSC.h" 260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "CallFrame.h" 2768513a70bcd92384395513322f1b801e7bf9c729Steve Block#elif USE(V8) 2868513a70bcd92384395513322f1b801e7bf9c729Steve Block#include "V8Binding.h" 2968513a70bcd92384395513322f1b801e7bf9c729Steve Block#endif 300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "Document.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "DocumentLoader.h" 320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "DragData.h" 330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "Element.h" 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "FocusController.h" 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Frame.h" 360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "FrameLoaderClientQt.h" 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "FrameTree.h" 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "FrameView.h" 3968513a70bcd92384395513322f1b801e7bf9c729Steve Block#if USE(JSC) 400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "GCController.h" 4168513a70bcd92384395513322f1b801e7bf9c729Steve Block#elif USE(V8) 4268513a70bcd92384395513322f1b801e7bf9c729Steve Block#include "V8GCController.h" 4368513a70bcd92384395513322f1b801e7bf9c729Steve Block#endif 440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "GraphicsContext.h" 450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "HTMLMetaElement.h" 460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "HitTestResult.h" 47dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include "HTTPParsers.h" 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "IconDatabase.h" 49635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "InspectorController.h" 5068513a70bcd92384395513322f1b801e7bf9c729Steve Block#if USE(JSC) 510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "JSDOMBinding.h" 520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "JSDOMWindowBase.h" 530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "JSLock.h" 540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "JSObject.h" 5568513a70bcd92384395513322f1b801e7bf9c729Steve Block#elif USE(V8) 5668513a70bcd92384395513322f1b801e7bf9c729Steve Block#include "V8DOMWrapper.h" 5768513a70bcd92384395513322f1b801e7bf9c729Steve Block#include "V8DOMWindowShell.h" 5868513a70bcd92384395513322f1b801e7bf9c729Steve Block#endif 5968513a70bcd92384395513322f1b801e7bf9c729Steve Block#include "NetworkingContext.h" 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "NodeList.h" 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Page.h" 620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "PlatformMouseEvent.h" 630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "PlatformWheelEvent.h" 640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "PrintContext.h" 6568513a70bcd92384395513322f1b801e7bf9c729Steve Block#if USE(JSC) 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "PutPropertySlot.h" 6768513a70bcd92384395513322f1b801e7bf9c729Steve Block#endif 68545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include "RenderLayer.h" 690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "RenderTreeAsText.h" 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "RenderView.h" 710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "ResourceRequest.h" 720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "ScriptController.h" 730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "ScriptSourceCode.h" 740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "ScriptValue.h" 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Scrollbar.h" 765af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke#include "Settings.h" 770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "SelectionController.h" 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "SubstituteData.h" 79643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "SVGSMILElement.h" 80dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "TiledBackingStore.h" 81635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "htmlediting.h" 820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "markup.h" 8368513a70bcd92384395513322f1b801e7bf9c729Steve Block#if USE(JSC) 84635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "qt_instance.h" 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "qt_runtime.h" 8668513a70bcd92384395513322f1b801e7bf9c729Steve Block#endif 870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "qwebelement.h" 880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "qwebframe_p.h" 890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "qwebpage.h" 900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "qwebpage_p.h" 910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "qwebsecurityorigin.h" 920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "qwebsecurityorigin_p.h" 9306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include "qwebscriptworld.h" 9406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include "qwebscriptworld_p.h" 9568513a70bcd92384395513322f1b801e7bf9c729Steve Block#if USE(JSC) 96635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "runtime_object.h" 97635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "runtime_root.h" 9868513a70bcd92384395513322f1b801e7bf9c729Steve Block#endif 99a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#if USE(TEXTURE_MAPPER) 10028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#include "texmap/TextureMapper.h" 101a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "texmap/TextureMapperPlatformLayer.h" 102a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#endif 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "wtf/HashMap.h" 1040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <QMultiMap> 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <qdebug.h> 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <qevent.h> 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <qfileinfo.h> 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <qpainter.h> 1090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <qprinter.h> 1100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <qregion.h> 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <qnetworkrequest.h> 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectusing namespace WebCore; 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// from text/qfont.cpp 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQT_BEGIN_NAMESPACE 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern Q_GUI_EXPORT int qt_defaultDpi(); 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQT_END_NAMESPACE 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1206c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenbool QWEBKIT_EXPORT qtwebkit_webframe_scrollOverflow(QWebFrame* qFrame, int dx, int dy, const QPoint& pos) 121643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 1226c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen WebCore::Frame* frame = QWebFramePrivate::core(qFrame); 123dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (!frame || !frame->document() || !frame->view() || !frame->eventHandler()) 124563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return false; 125563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 126dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block QPoint contentsPos = frame->view()->windowToContents(pos); 127dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block Node* node = frame->document()->elementFromPoint(contentsPos.x(), contentsPos.y()); 128dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (!node) 129643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return false; 130643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 131dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block RenderObject* renderer = node->renderer(); 132dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (!renderer) 133643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return false; 134643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 135dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (renderer->isListBox()) 136563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return false; 137563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 138dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block RenderLayer* renderLayer = renderer->enclosingLayer(); 139dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (!renderLayer) 140563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return false; 141563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 142dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block bool scrolledHorizontal = false; 143dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block bool scrolledVertical = false; 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1456c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen do { 1466c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen if (dx > 0) 1476c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen scrolledHorizontal = renderLayer->scroll(ScrollRight, ScrollByPixel, dx); 1486c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen else if (dx < 0) 1496c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen scrolledHorizontal = renderLayer->scroll(ScrollLeft, ScrollByPixel, qAbs(dx)); 1506c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 1516c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen if (dy > 0) 1526c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen scrolledVertical = renderLayer->scroll(ScrollDown, ScrollByPixel, dy); 1536c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen else if (dy < 0) 1546c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen scrolledVertical = renderLayer->scroll(ScrollUp, ScrollByPixel, qAbs(dy)); 1556c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 1566c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen if (scrolledHorizontal || scrolledVertical) 1576c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen return true; 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1596c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen renderLayer = renderLayer->parent(); 1606c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen } while (renderLayer); 1610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1626c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen return false; 1630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 165cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 166dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block/*! 167dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block \internal 168dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block Scrolls nested frames starting at this frame, \a dx pixels to the right 169dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block and \a dy pixels downward. Both \a dx and \a dy may be negative. First attempts 170dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block to scroll elements with CSS overflow at position pos, followed by this frame. If this 171dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block frame doesn't scroll, attempts to scroll the parent 172dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block*/ 173dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid QWEBKIT_EXPORT qtwebkit_webframe_scrollRecursively(QWebFrame* qFrame, int dx, int dy, const QPoint& pos) 1748a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block{ 175dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (!qFrame) 176dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return; 1778a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 1786c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen if (qtwebkit_webframe_scrollOverflow(qFrame, dx, dy, pos)) 179dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return; 1808a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 181dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block bool scrollHorizontal = false; 182dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block bool scrollVertical = false; 1838a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 184dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block do { 185dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (dx > 0) // scroll right 186dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block scrollHorizontal = qFrame->scrollBarValue(Qt::Horizontal) < qFrame->scrollBarMaximum(Qt::Horizontal); 187dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block else if (dx < 0) // scroll left 188dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block scrollHorizontal = qFrame->scrollBarValue(Qt::Horizontal) > qFrame->scrollBarMinimum(Qt::Horizontal); 189692e5dbf12901edacf14812a6fae25462920af42Steve Block 190dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (dy > 0) // scroll down 191dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block scrollVertical = qFrame->scrollBarValue(Qt::Vertical) < qFrame->scrollBarMaximum(Qt::Vertical); 1926c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen else if (dy < 0) //scroll up 193dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block scrollVertical = qFrame->scrollBarValue(Qt::Vertical) > qFrame->scrollBarMinimum(Qt::Vertical); 194692e5dbf12901edacf14812a6fae25462920af42Steve Block 195dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (scrollHorizontal || scrollVertical) { 196dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block qFrame->scroll(dx, dy); 197dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return; 198dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block } 199d0825bca7fe65beaee391d30da42e937db621564Steve Block 200dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block qFrame = qFrame->parentFrame(); 201dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block } while (qFrame); 202692e5dbf12901edacf14812a6fae25462920af42Steve Block} 203692e5dbf12901edacf14812a6fae25462920af42Steve Block 204f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochstatic inline ResourceRequestCachePolicy cacheLoadControlToCachePolicy(uint cacheLoadControl) 205f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 206f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch switch (cacheLoadControl) { 207f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QNetworkRequest::AlwaysNetwork: 208f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return WebCore::ReloadIgnoringCacheData; 209f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QNetworkRequest::PreferCache: 210f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return WebCore::ReturnCacheDataElseLoad; 211f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QNetworkRequest::AlwaysCache: 212f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return WebCore::ReturnCacheDataDontLoad; 213f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch default: 214f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch break; 215f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch } 216f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return WebCore::UseProtocolCachePolicy; 217f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 218f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 2190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQWebFrameData::QWebFrameData(WebCore::Page* parentPage, WebCore::Frame* parentFrame, 2200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebCore::HTMLFrameOwnerElement* ownerFrameElement, 221dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch const WTF::String& frameName) 2220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch : name(frameName) 2230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch , ownerElement(ownerFrameElement) 2240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch , page(parentPage) 2250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch , allowsScrolling(true) 2260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch , marginWidth(0) 2270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch , marginHeight(0) 2280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project frameLoaderClient = new FrameLoaderClientQt(); 2300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch frame = Frame::create(page, ownerElement, frameLoaderClient); 231635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 232635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // FIXME: All of the below should probably be moved over into WebCore 2330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch frame->tree()->setName(name); 2340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (parentFrame) 2350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch parentFrame->tree()->appendChild(frame); 2360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 2370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid QWebFramePrivate::init(QWebFrame *qframe, QWebFrameData *frameData) 2390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 2400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch q = qframe; 241635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 2420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch allowsScrolling = frameData->allowsScrolling; 2430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch marginWidth = frameData->marginWidth; 2440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch marginHeight = frameData->marginHeight; 2450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch frame = frameData->frame.get(); 2460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch frameLoaderClient = frameData->frameLoaderClient; 2470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch frameLoaderClient->setFrame(qframe, frame); 248635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project frame->init(); 2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 252692e5dbf12901edacf14812a6fae25462920af42Steve Blockvoid QWebFramePrivate::setPage(QWebPage* newPage) 253692e5dbf12901edacf14812a6fae25462920af42Steve Block{ 254692e5dbf12901edacf14812a6fae25462920af42Steve Block if (page == newPage) 255692e5dbf12901edacf14812a6fae25462920af42Steve Block return; 256692e5dbf12901edacf14812a6fae25462920af42Steve Block 257692e5dbf12901edacf14812a6fae25462920af42Steve Block // The QWebFrame is created as a child of QWebPage or a parent QWebFrame. 258692e5dbf12901edacf14812a6fae25462920af42Steve Block // That adds it to QObject's internal children list and ensures it will be 259692e5dbf12901edacf14812a6fae25462920af42Steve Block // deleted when parent QWebPage is deleted. Reparent if needed. 260692e5dbf12901edacf14812a6fae25462920af42Steve Block if (q->parent() == qobject_cast<QObject*>(page)) 261692e5dbf12901edacf14812a6fae25462920af42Steve Block q->setParent(newPage); 262692e5dbf12901edacf14812a6fae25462920af42Steve Block 263692e5dbf12901edacf14812a6fae25462920af42Steve Block page = newPage; 264692e5dbf12901edacf14812a6fae25462920af42Steve Block emit q->pageChanged(); 265692e5dbf12901edacf14812a6fae25462920af42Steve Block} 266692e5dbf12901edacf14812a6fae25462920af42Steve Block 2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebCore::Scrollbar* QWebFramePrivate::horizontalScrollBar() const 2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!frame->view()) 2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 2718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return frame->view()->horizontalScrollbar(); 2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebCore::Scrollbar* QWebFramePrivate::verticalScrollBar() const 2758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!frame->view()) 2778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return frame->view()->verticalScrollbar(); 2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 281dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if ENABLE(TILED_BACKING_STORE) 282dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid QWebFramePrivate::renderFromTiledBackingStore(GraphicsContext* context, const QRegion& clip) 2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 284dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block ASSERT(frame->tiledBackingStore()); 285dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 286635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project if (!frame->view() || !frame->contentRenderer()) 2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 288635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 289635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project QVector<QRect> vector = clip.rects(); 290635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project if (vector.isEmpty()) 291635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return; 292635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 293643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QPainter* painter = context->platformContext(); 294643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 295643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebCore::FrameView* view = frame->view(); 296dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 297dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block int scrollX = view->scrollX(); 298dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block int scrollY = view->scrollY(); 299dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block context->translate(-scrollX, -scrollY); 300643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 301643ca7872b450ea4efacab6188849e5aac2ba161Steve Block for (int i = 0; i < vector.size(); ++i) { 302643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const QRect& clipRect = vector.at(i); 303643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 304643ca7872b450ea4efacab6188849e5aac2ba161Steve Block painter->save(); 305dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 306dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block QRect rect = clipRect.translated(scrollX, scrollY); 307dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block painter->setClipRect(rect, Qt::IntersectClip); 308643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 309dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block frame->tiledBackingStore()->paint(context, rect); 310643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 311643ca7872b450ea4efacab6188849e5aac2ba161Steve Block painter->restore(); 312643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 313a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 31428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER) 31528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu renderCompositedLayers(context, IntRect(clip.boundingRect())); 316a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch renderRelativeCoords(context, (QWebFrame::RenderLayer)(QWebFrame::ScrollBarLayer | QWebFrame::PanIconLayer), clip); 317a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#endif 318643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 319dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 320643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 32128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER) 32228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhuvoid QWebFramePrivate::renderCompositedLayers(GraphicsContext* context, const IntRect& clip) 32328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu{ 32428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu if (!rootGraphicsLayer) 32528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu return; 32628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 32728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu textureMapper->setGraphicsContext(context); 32828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu textureMapper->setImageInterpolationQuality(context->imageInterpolationQuality()); 32928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu textureMapper->setTextDrawingMode(context->textDrawingMode()); 33028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu QPainter* painter = context->platformContext(); 33128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu FrameView* view = frame->view(); 33228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu painter->save(); 33328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu painter->beginNativePainting(); 33428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu TextureMapperContentLayer::PaintOptions options; 33528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu options.visibleRect = clip; 33628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu options.targetRect = view->frameRect(); 33728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu options.viewportSize = view->size(); 33828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu options.opacity = painter->opacity(); 33928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu rootGraphicsLayer->paint(textureMapper.get(), options); 34028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu painter->endNativePainting(); 34128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu painter->restore(); 34228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu} 34328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#endif 34428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 345643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid QWebFramePrivate::renderRelativeCoords(GraphicsContext* context, QWebFrame::RenderLayer layer, const QRegion& clip) 346643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 347643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!frame->view() || !frame->contentRenderer()) 348cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block return; 349635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 350643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QVector<QRect> vector = clip.rects(); 351643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (vector.isEmpty()) 352643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return; 353643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 354643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QPainter* painter = context->platformContext(); 355643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 356cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block WebCore::FrameView* view = frame->view(); 3575ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen view->updateLayoutAndStyleIfNeededRecursive(); 358635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 359a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch if (layer & QWebFrame::ContentsLayer) { 360635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project painter->save(); 361a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch for (int i = 0; i < vector.size(); ++i) { 362a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch const QRect& clipRect = vector.at(i); 363cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 364a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch QRect intersectedRect = clipRect.intersected(view->frameRect()); 365cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 366643ca7872b450ea4efacab6188849e5aac2ba161Steve Block context->save(); 367a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch painter->setClipRect(clipRect, Qt::IntersectClip); 368a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 369a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch int x = view->x(); 370a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch int y = view->y(); 371cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 372cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block int scrollX = view->scrollX(); 373cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block int scrollY = view->scrollY(); 374cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 375cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QRect rect = intersectedRect; 376643ca7872b450ea4efacab6188849e5aac2ba161Steve Block context->translate(x, y); 377cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block rect.translate(-x, -y); 378643ca7872b450ea4efacab6188849e5aac2ba161Steve Block context->translate(-scrollX, -scrollY); 379cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block rect.translate(scrollX, scrollY); 380643ca7872b450ea4efacab6188849e5aac2ba161Steve Block context->clip(view->visibleContentRect()); 381cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 382643ca7872b450ea4efacab6188849e5aac2ba161Steve Block view->paintContents(context, rect); 383cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 384643ca7872b450ea4efacab6188849e5aac2ba161Steve Block context->restore(); 385cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block } 386a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch painter->restore(); 387a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER) 38828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu renderCompositedLayers(context, IntRect(clip.boundingRect())); 389a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#endif 390a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch } 391a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch if (layer & (QWebFrame::PanIconLayer | QWebFrame::ScrollBarLayer)) { 392a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch for (int i = 0; i < vector.size(); ++i) { 393a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch const QRect& clipRect = vector.at(i); 394cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 395a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch QRect intersectedRect = clipRect.intersected(view->frameRect()); 396cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 397a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch painter->save(); 398a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch painter->setClipRect(clipRect, Qt::IntersectClip); 399cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 400a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch int x = view->x(); 401a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch int y = view->y(); 402a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 403a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch if (layer & QWebFrame::ScrollBarLayer 404a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch && !view->scrollbarsSuppressed() 405a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch && (view->horizontalScrollbar() || view->verticalScrollbar())) { 406a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch context->save(); 407a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 408a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch QRect rect = intersectedRect; 409a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch context->translate(x, y); 410a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch rect.translate(-x, -y); 411a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 412a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch view->paintScrollbars(context, rect); 413a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 414a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch context->restore(); 415a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch } 416cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 417643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#if ENABLE(PAN_SCROLLING) 418a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch if (layer & QWebFrame::PanIconLayer) 419a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch view->paintPanScrollIcon(context); 420643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 421cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 422a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch painter->restore(); 423a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch } 4248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 427f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid QWebFrame::orientationChanged() 428f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 429f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#if ENABLE(ORIENTATION_EVENTS) && ENABLE(DEVICE_ORIENTATION) 430f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int orientation; 431f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebCore::Frame* frame = QWebFramePrivate::core(this); 432f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 433f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch switch (d->m_orientation.reading()->orientation()) { 434f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QtMobility::QOrientationReading::TopUp: 435f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch orientation = 0; 436f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch break; 437f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QtMobility::QOrientationReading::TopDown: 438f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch orientation = 180; 439f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch break; 440f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QtMobility::QOrientationReading::LeftUp: 441f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch orientation = -90; 442f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch break; 443f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QtMobility::QOrientationReading::RightUp: 444f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch orientation = 90; 445f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch break; 446f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QtMobility::QOrientationReading::FaceUp: 447f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QtMobility::QOrientationReading::FaceDown: 448f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch // WebCore unable to handle it 449f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch default: 450f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return; 451f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch } 452f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch frame->sendOrientationChangeEvent(orientation); 453f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#endif 454f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 4558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 4568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \class QWebFrame 4578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.4 4588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief The QWebFrame class represents a frame in a web page. 4598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 460231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block \inmodule QtWebKit 461231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 4628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebFrame represents a frame inside a web page. Each QWebPage 4638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project object contains at least one frame, the main frame, obtained using 4648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebPage::mainFrame(). Additional frames will be created for HTML 4658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \c{<frame>} or \c{<iframe>} elements. 4668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project A frame can be loaded using load() or setUrl(). Alternatively, if you have 4688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project the HTML content readily available, you can use setHtml() instead. 4698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The page() function returns a pointer to the web page object. See 471643ca7872b450ea4efacab6188849e5aac2ba161Steve Block \l{QWebView}{Elements of QWebView} for an explanation of how web 4728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project frames are related to a web page and web view. 4738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch The QWebFrame class also offers methods to retrieve both the URL currently 4750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch loaded by the frame (see url()) as well as the URL originally requested 4760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch to be loaded (see requestedUrl()). These methods make possible the retrieval 4770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch of the URL before and after a DNS resolution or a redirection occurs during 4780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch the load process. The requestedUrl() also matches to the URL added to the 4790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch frame history (\l{QWebHistory}) if load is successful. 4800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The title of an HTML frame can be accessed with the title() property. 4828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Additionally, a frame may also specify an icon, which can be accessed 4838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project using the icon() property. If the title or the icon changes, the 4848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project corresponding titleChanged() and iconChanged() signals will be emitted. 4858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The zoomFactor() property can be used to change the overall size 4868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project of the content displayed in the frame. 4878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebFrame objects are created and controlled by the web page. You 4898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project can connect to the web page's \l{QWebPage::}{frameCreated()} signal 4908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project to be notified when a new frame is created. 4918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4926c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen There are multiple ways to programmatically examine the contents of a frame. 4936c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen The hitTestContent() function can be used to find elements by coordinate. 4946c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen For access to the underlying DOM tree, there is documentElement(), 4956c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen findAllElements() and findFirstElement(). 4968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project A QWebFrame can be printed onto a QPrinter using the print() function. 4988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This function is marked as a slot and can be conveniently connected to 4998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \l{QPrintPreviewDialog}'s \l{QPrintPreviewDialog::}{paintRequested()} 5008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project signal. 5018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa QWebPage 5038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 5048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 505643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/*! 506643ca7872b450ea4efacab6188849e5aac2ba161Steve Block \enum QWebFrame::RenderLayer 507643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 508643ca7872b450ea4efacab6188849e5aac2ba161Steve Block This enum describes the layers available for rendering using \l{QWebFrame::}{render()}. 509643ca7872b450ea4efacab6188849e5aac2ba161Steve Block The layers can be OR-ed together from the following list: 510643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 511643ca7872b450ea4efacab6188849e5aac2ba161Steve Block \value ContentsLayer The web content of the frame 512643ca7872b450ea4efacab6188849e5aac2ba161Steve Block \value ScrollBarLayer The scrollbars of the frame 513643ca7872b450ea4efacab6188849e5aac2ba161Steve Block \value PanIconLayer The icon used when panning the frame 514643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 515643ca7872b450ea4efacab6188849e5aac2ba161Steve Block \value AllLayers Includes all the above layers 516643ca7872b450ea4efacab6188849e5aac2ba161Steve Block*/ 517643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 5188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebFrame::QWebFrame(QWebPage *parent, QWebFrameData *frameData) 5198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : QObject(parent) 5208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , d(new QWebFramePrivate) 5218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 5228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->page = parent; 5230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch d->init(this, frameData); 5248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!frameData->url.isEmpty()) { 5268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::ResourceRequest request(frameData->url, frameData->referrer); 527563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark d->frame->loader()->load(request, frameData->name, false); 5288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 529f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#if ENABLE(ORIENTATION_EVENTS) && ENABLE(DEVICE_ORIENTATION) 530f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch connect(&d->m_orientation, SIGNAL(readingChanged()), this, SLOT(orientationChanged())); 531f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch d->m_orientation.start(); 532f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#endif 5338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 5348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebFrame::QWebFrame(QWebFrame *parent, QWebFrameData *frameData) 5368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : QObject(parent) 5378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , d(new QWebFramePrivate) 5388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 5398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->page = parent->d->page; 5400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch d->init(this, frameData); 541f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#if ENABLE(ORIENTATION_EVENTS) && ENABLE(DEVICE_ORIENTATION) 542f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch connect(&d->m_orientation, SIGNAL(readingChanged()), this, SLOT(orientationChanged())); 543f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch d->m_orientation.start(); 544f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#endif 5458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 5468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebFrame::~QWebFrame() 5488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 5498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->frame && d->frame->loader() && d->frame->loader()->client()) 5508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static_cast<FrameLoaderClientQt*>(d->frame->loader()->client())->m_webFrame = 0; 5518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete d; 5538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 5548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 5568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Make \a object available under \a name from within the frame's JavaScript 5578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project context. The \a object will be inserted as a child of the frame's window 5588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project object. 5598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Qt properties will be exposed as JavaScript properties and slots as 5618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project JavaScript methods. 5628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project If you want to ensure that your QObjects remain accessible after loading a 5648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project new URL, you should add them in a slot connected to the 5658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project javaScriptWindowObjectCleared() signal. 566563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 5670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch If Javascript is not enabled for this page, then this method does nothing. 5680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 569563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark The \a object will never be explicitly deleted by QtWebKit. 5708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 5718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::addToJavaScriptWindowObject(const QString &name, QObject *object) 5728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 573563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark addToJavaScriptWindowObject(name, object, QScriptEngine::QtOwnership); 574563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 5758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 576563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark/*! 577563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark \fn void QWebFrame::addToJavaScriptWindowObject(const QString &name, QObject *object, QScriptEngine::ValueOwnership own) 578563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark \overload 5798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 580563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark Make \a object available under \a name from within the frame's JavaScript 581563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark context. The \a object will be inserted as a child of the frame's window 582563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark object. 583563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 584563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark Qt properties will be exposed as JavaScript properties and slots as 585563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark JavaScript methods. 586563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 587563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark If you want to ensure that your QObjects remain accessible after loading a 588563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark new URL, you should add them in a slot connected to the 589563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark javaScriptWindowObjectCleared() signal. 590563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 5910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch If Javascript is not enabled for this page, then this method does nothing. 5920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 593563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark The ownership of \a object is specified using \a own. 594563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark*/ 595563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid QWebFrame::addToJavaScriptWindowObject(const QString &name, QObject *object, QScriptEngine::ValueOwnership ownership) 596563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 5970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!page()->settings()->testAttribute(QWebSettings::JavascriptEnabled)) 5980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return; 59968513a70bcd92384395513322f1b801e7bf9c729Steve Block#if USE(JSC) 6000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch JSC::JSLock lock(JSC::SilenceAssertionsOnly); 601cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block JSDOMWindow* window = toJSDOMWindow(d->frame, mainThreadNormalWorld()); 602545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch JSC::Bindings::RootObject* root; 603545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch if (ownership == QScriptEngine::QtOwnership) 604545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch root = d->frame->script()->cacheableBindingRootObject(); 605545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch else 606545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch root = d->frame->script()->bindingRootObject(); 607545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 608563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (!window) { 609563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark qDebug() << "Warning: couldn't get window object"; 610563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return; 611563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark } 6124576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (!root) { 6134576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang qDebug() << "Warning: couldn't get root object"; 6144576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return; 6154576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang } 6168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 617563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark JSC::ExecState* exec = window->globalExec(); 618563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 619563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark JSC::JSObject* runtimeObject = 620563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark JSC::Bindings::QtInstance::getQtInstance(object, root, ownership)->createRuntimeObject(exec); 621563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 622563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark JSC::PutPropertySlot slot; 623e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block window->put(exec, JSC::Identifier(exec, reinterpret_cast_ptr<const UChar*>(name.constData()), name.length()), runtimeObject, slot); 62468513a70bcd92384395513322f1b801e7bf9c729Steve Block#elif USE(V8) 62568513a70bcd92384395513322f1b801e7bf9c729Steve Block QScriptEngine* engine = d->frame->script()->qtScriptEngine(); 62668513a70bcd92384395513322f1b801e7bf9c729Steve Block if (!engine) 62768513a70bcd92384395513322f1b801e7bf9c729Steve Block return; 62868513a70bcd92384395513322f1b801e7bf9c729Steve Block QScriptValue v = engine->newQObject(object, ownership); 62968513a70bcd92384395513322f1b801e7bf9c729Steve Block engine->globalObject().property("window").setProperty(name, v); 63068513a70bcd92384395513322f1b801e7bf9c729Steve Block#endif 6318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 6328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 6340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns the frame's content as HTML, enclosed in HTML and BODY tags. 6358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa setHtml(), toPlainText() 6378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 6388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebFrame::toHtml() const 6398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 6408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d->frame->document()) 6418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QString(); 6428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return createMarkup(d->frame->document()); 6438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 6448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 6460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns the content of this frame converted to plain text, completely 6470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch stripped of all HTML formatting. 6488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa toHtml() 6508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 6518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebFrame::toPlainText() const 6528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 6538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->frame->view() && d->frame->view()->layoutPending()) 6548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->frame->view()->layout(); 6558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Element *documentElement = d->frame->document()->documentElement(); 657643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (documentElement) 658643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return documentElement->innerText(); 659643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return QString(); 6608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 6618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 6638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns a dump of the rendering tree. This is mainly useful for debugging 6648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project html. 6658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 6668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebFrame::renderTreeDump() const 6678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 6688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->frame->view() && d->frame->view()->layoutPending()) 6698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->frame->view()->layout(); 6708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 671643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return externalRepresentation(d->frame); 6728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 6738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 6758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \property QWebFrame::title 6768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief the title of the frame as defined by the HTML <title> element 6778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa titleChanged() 6798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 6808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebFrame::title() const 6828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 6838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->frame->document()) 6848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->frame->loader()->documentLoader()->title(); 6850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QString(); 6868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 6878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 688635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*! 689635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \since 4.5 690635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \brief Returns the meta data in this frame as a QMultiMap 691635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 692635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project The meta data consists of the name and content attributes of the 693635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project of the \c{<meta>} tags in the HTML document. 694635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 695635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project For example: 696635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 697635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \code 698635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project <html> 699635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project <head> 700635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project <meta name="description" content="This document is a tutorial about Qt development"> 701635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project <meta name="keywords" content="Qt, WebKit, Programming"> 702635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project </head> 703635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project ... 704635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project </html> 705635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \endcode 706635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 707635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Given the above HTML code the metaData() function will return a map with two entries: 708635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \table 709635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \header \o Key 710635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \o Value 711635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \row \o "description" 712635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \o "This document is a tutorial about Qt development" 713635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \row \o "keywords" 714635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \o "Qt, WebKit, Programming" 715635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \endtable 716635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 717635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project This function returns a multi map to support multiple meta tags with the same attribute name. 718635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 719635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectQMultiMap<QString, QString> QWebFrame::metaData() const 720635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 7210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!d->frame->document()) 7220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QMap<QString, QString>(); 723635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 7240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QMultiMap<QString, QString> map; 725635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Document* doc = d->frame->document(); 726635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project RefPtr<NodeList> list = doc->getElementsByTagName("meta"); 727635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project unsigned len = list->length(); 728635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project for (unsigned i = 0; i < len; i++) { 729635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project HTMLMetaElement* meta = static_cast<HTMLMetaElement*>(list->item(i)); 730635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project map.insert(meta->name(), meta->content()); 731635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project } 732635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return map; 733635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 734635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 7358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic inline QUrl ensureAbsoluteUrl(const QUrl &url) 7368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 7378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!url.isRelative()) 7388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return url; 7398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 7408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QUrl::fromLocalFile(QFileInfo(url.toLocalFile()).absoluteFilePath()); 7418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 7428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 7438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 7448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \property QWebFrame::url 7458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief the url of the frame currently viewed 7468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 7476c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen Setting this property clears the view and loads the URL. 7486c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 7496c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen By default, this property contains an empty, invalid URL. 7506c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 7518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa urlChanged() 7528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 7538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 7548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::setUrl(const QUrl &url) 7558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 756e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke const QUrl absolute = ensureAbsoluteUrl(url); 757e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke d->frame->loader()->writer()->begin(absolute); 758dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block d->frame->loader()->writer()->end(); 759e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke load(absolute); 7608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 7618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 7628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQUrl QWebFrame::url() const 7638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 7648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->frame->loader()->url(); 7658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 7668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 7678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 7680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 7690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \property QWebFrame::requestedUrl 7700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch The URL requested to loaded by the frame currently viewed. The URL may differ from 7720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch the one returned by url() if a DNS resolution or a redirection occurs. 7730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \sa url(), setUrl() 7750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 7760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQUrl QWebFrame::requestedUrl() const 7770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 778cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // There are some possible edge cases to be handled here, 779cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // apart from checking if activeDocumentLoader is valid: 780cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // 781cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // * Method can be called while processing an unsucessful load. 782cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // In this case, frameLoaderClient will hold the current error 783cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // (m_loadError), and we will make use of it to recover the 'failingURL'. 784cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // * If the 'failingURL' holds a null'ed string though, we fallback 785cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // to 'outgoingReferrer' (it yet is safer than originalRequest). 786cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block FrameLoader* loader = d->frame->loader(); 787cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block FrameLoaderClientQt* loaderClient = d->frameLoaderClient; 788cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 789cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if (!loader->activeDocumentLoader() 790cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block || !loaderClient->m_loadError.isNull()) { 791cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if (!loaderClient->m_loadError.failingURL().isNull()) 792cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block return QUrl(loaderClient->m_loadError.failingURL()); 793cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block else if (!loader->outgoingReferrer().isEmpty()) 794cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block return QUrl(loader->outgoingReferrer()); 795cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block } 7960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 797cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block return loader->originalRequest().url(); 7980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 7990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 8000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 8010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \property QWebFrame::baseUrl 8020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \brief the base URL of the frame, can be used to resolve relative URLs 8030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 8040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 8050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQUrl QWebFrame::baseUrl() const 8070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 8080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return d->frame->loader()->baseURL(); 8090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 8100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 8128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \property QWebFrame::icon 8138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief the icon associated with this frame 8148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa iconChanged(), QWebSettings::iconForUrl() 8168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 8178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQIcon QWebFrame::icon() const 8198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 8208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QWebSettings::iconForUrl(d->frame->loader()->url()); 8218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 8228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 8248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The name of this frame as defined by the parent frame. 8258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 8268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebFrame::frameName() const 8278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 82828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu return d->frame->tree()->uniqueName(); 8298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 8308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 8328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The web page that contains this frame. 833dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 834dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block \sa pageChanged() 8358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 8368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebPage *QWebFrame::page() const 8378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 8388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->page; 8398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 8408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 8428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Loads \a url into this frame. 8438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \note The view remains the same until enough data has arrived to display the new \a url. 8458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa setUrl(), setHtml(), setContent() 8478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 8488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::load(const QUrl &url) 8498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 850e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke // The load() overload ensures that the url is absolute. 851e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke load(QNetworkRequest(url)); 8528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 8538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 8558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Loads a network request, \a req, into this frame, using the method specified in \a 8568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project operation. 8578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \a body is optional and is only used for POST operations. 8598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 860dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block \note The view remains the same until enough data has arrived to display the new content. 8618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa setUrl() 8638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 8648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::load(const QNetworkRequest &req, 8658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QNetworkAccessManager::Operation operation, 8668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const QByteArray &body) 8678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 8688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->parentFrame()) 8698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->page->d->insideOpenCall = true; 8708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QUrl url = ensureAbsoluteUrl(req.url()); 8728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::ResourceRequest request(url); 8748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project switch (operation) { 8768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project case QNetworkAccessManager::HeadOperation: 8778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project request.setHTTPMethod("HEAD"); 8788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 8798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project case QNetworkAccessManager::GetOperation: 8808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project request.setHTTPMethod("GET"); 8818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 8828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project case QNetworkAccessManager::PutOperation: 8838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project request.setHTTPMethod("PUT"); 8848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 8858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project case QNetworkAccessManager::PostOperation: 8868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project request.setHTTPMethod("POST"); 8878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 888643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case QNetworkAccessManager::DeleteOperation: 889643ca7872b450ea4efacab6188849e5aac2ba161Steve Block request.setHTTPMethod("DELETE"); 890643ca7872b450ea4efacab6188849e5aac2ba161Steve Block break; 891f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0) 892f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QNetworkAccessManager::CustomOperation: 893f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch request.setHTTPMethod(req.attribute(QNetworkRequest::CustomVerbAttribute).toByteArray().constData()); 894f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch break; 895f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#endif 8968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project case QNetworkAccessManager::UnknownOperation: 8978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // eh? 8988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 8998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 9008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 901f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch QVariant cacheLoad = req.attribute(QNetworkRequest::CacheLoadControlAttribute); 902f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (cacheLoad.isValid()) { 903f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch bool ok; 904f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch uint cacheLoadValue = cacheLoad.toUInt(&ok); 905f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (ok) 906f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch request.setCachePolicy(cacheLoadControlToCachePolicy(cacheLoadValue)); 907f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch } 908f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 9098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QList<QByteArray> httpHeaders = req.rawHeaderList(); 9108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (int i = 0; i < httpHeaders.size(); ++i) { 9118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const QByteArray &headerName = httpHeaders.at(i); 9128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project request.addHTTPHeaderField(QString::fromLatin1(headerName), QString::fromLatin1(req.rawHeader(headerName))); 9138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 9148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!body.isEmpty()) 9168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project request.setHTTPBody(WebCore::FormData::create(body.constData(), body.size())); 9178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 918563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark d->frame->loader()->load(request, false); 9198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->parentFrame()) 9218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->page->d->insideOpenCall = false; 9228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 9238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 9258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Sets the content of this frame to \a html. \a baseUrl is optional and used to resolve relative 926635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project URLs in the document, such as referenced images or stylesheets. 9278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch The \a html is loaded immediately; external objects are loaded asynchronously. 9290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9300617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen If a script in the \a html runs longer than the default script timeout (currently 10 seconds), 9310617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen for example due to being blocked by a modal JavaScript alert dialog, this method will return 9320617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen as soon as possible after the timeout and any subsequent \a html will be loaded asynchronously. 9330617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 9348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project When using this method WebKit assumes that external resources such as JavaScript programs or style 9358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project sheets are encoded in UTF-8 unless otherwise specified. For example, the encoding of an external 9368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project script can be specified through the charset attribute of the HTML script tag. It is also possible 9378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for the encoding to be specified by web server. 9388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 939db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block This is a convenience function equivalent to setContent(html, "text/html", baseUrl). 940db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 941231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block \note This method will not affect session or global history for the frame. 942231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 943db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block \warning This function works only for HTML, for other mime types (i.e. XHTML, SVG) 944db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block setContent() should be used instead. 945db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 946db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block \sa toHtml(), setContent(), load() 9478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 9488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::setHtml(const QString &html, const QUrl &baseUrl) 9498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 9508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project KURL kurl(baseUrl); 9518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::ResourceRequest request(kurl); 9528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const QByteArray utf8 = html.toUtf8(); 9538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WTF::RefPtr<WebCore::SharedBuffer> data = WebCore::SharedBuffer::create(utf8.constData(), utf8.length()); 954dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WebCore::SubstituteData substituteData(data, WTF::String("text/html"), WTF::String("utf-8"), KURL()); 955563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark d->frame->loader()->load(request, substituteData, false); 9568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 9578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 9598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Sets the content of this frame to the specified content \a data. If the \a mimeType argument 9608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project is empty it is currently assumed that the content is HTML but in future versions we may introduce 9618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project auto-detection. 9628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project External objects referenced in the content are located relative to \a baseUrl. 9648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch The \a data is loaded immediately; external objects are loaded asynchronously. 9660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 967231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block \note This method will not affect session or global history for the frame. 968231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 969231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block \sa toHtml(), setHtml() 9708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 9718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::setContent(const QByteArray &data, const QString &mimeType, const QUrl &baseUrl) 9728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 9738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project KURL kurl(baseUrl); 9748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::ResourceRequest request(kurl); 9758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WTF::RefPtr<WebCore::SharedBuffer> buffer = WebCore::SharedBuffer::create(data.constData(), data.length()); 976dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch QString actualMimeType; 977dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WTF::String encoding; 978dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch if (mimeType.isEmpty()) 9798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actualMimeType = QLatin1String("text/html"); 980dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch else { 981dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch actualMimeType = extractMIMETypeFromMediaType(mimeType); 982dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch encoding = extractCharsetFromMediaType(mimeType); 983dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch } 984dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WebCore::SubstituteData substituteData(buffer, WTF::String(actualMimeType), encoding, KURL()); 985563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark d->frame->loader()->load(request, substituteData, false); 9868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 9878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 9898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the parent frame of this frame, or 0 if the frame is the web pages 9908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project main frame. 9918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This is equivalent to qobject_cast<QWebFrame*>(frame->parent()). 9938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa childFrames() 9958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 9968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebFrame *QWebFrame::parentFrame() const 9978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 9988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->parentFrame(); 9998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 10008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 10028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns a list of all frames that are direct children of this frame. 10038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa parentFrame() 10058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 10068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQList<QWebFrame*> QWebFrame::childFrames() const 10078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 10088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QList<QWebFrame*> rc; 10098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->frame) { 10108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FrameTree *tree = d->frame->tree(); 10118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (Frame *child = tree->firstChild(); child; child = child->tree()->nextSibling()) { 10128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FrameLoader *loader = child->loader(); 101368513a70bcd92384395513322f1b801e7bf9c729Steve Block QWebFrame* webFrame = qobject_cast<QWebFrame*>(loader->networkingContext()->originatingObject()); 101468513a70bcd92384395513322f1b801e7bf9c729Steve Block if (webFrame) 101568513a70bcd92384395513322f1b801e7bf9c729Steve Block rc.append(webFrame); 10168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 10178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 10198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return rc; 10208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 10218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 10238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the scrollbar policy for the scrollbar defined by \a orientation. 10248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 10258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQt::ScrollBarPolicy QWebFrame::scrollBarPolicy(Qt::Orientation orientation) const 10268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 10278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (orientation == Qt::Horizontal) 10288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->horizontalScrollBarPolicy; 10298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->verticalScrollBarPolicy; 10308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 10318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 10338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Sets the scrollbar policy for the scrollbar defined by \a orientation to \a policy. 10348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 10358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::setScrollBarPolicy(Qt::Orientation orientation, Qt::ScrollBarPolicy policy) 10368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 10378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Q_ASSERT((int)ScrollbarAuto == (int)Qt::ScrollBarAsNeeded); 10388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Q_ASSERT((int)ScrollbarAlwaysOff == (int)Qt::ScrollBarAlwaysOff); 10398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Q_ASSERT((int)ScrollbarAlwaysOn == (int)Qt::ScrollBarAlwaysOn); 10408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (orientation == Qt::Horizontal) { 10428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->horizontalScrollBarPolicy = policy; 1043635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project if (d->frame->view()) { 1044dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block d->frame->view()->setHorizontalScrollbarMode((ScrollbarMode)policy, policy != Qt::ScrollBarAsNeeded /* lock */); 1045643ca7872b450ea4efacab6188849e5aac2ba161Steve Block d->frame->view()->updateCanHaveScrollbars(); 1046635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project } 10478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else { 10488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->verticalScrollBarPolicy = policy; 1049635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project if (d->frame->view()) { 1050dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block d->frame->view()->setVerticalScrollbarMode((ScrollbarMode)policy, policy != Qt::ScrollBarAsNeeded /* lock */); 1051643ca7872b450ea4efacab6188849e5aac2ba161Steve Block d->frame->view()->updateCanHaveScrollbars(); 1052635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project } 10538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 10548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 10558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 10578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Sets the current \a value for the scrollbar with orientation \a orientation. 10588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The scrollbar forces the \a value to be within the legal range: minimum <= value <= maximum. 10608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Changing the value also updates the thumb position. 10628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa scrollBarMinimum(), scrollBarMaximum() 10648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 10658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::setScrollBarValue(Qt::Orientation orientation, int value) 10668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 10678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Scrollbar *sb; 10688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project sb = (orientation == Qt::Horizontal) ? d->horizontalScrollBar() : d->verticalScrollBar(); 10698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (sb) { 10708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (value < 0) 10718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value = 0; 10728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else if (value > scrollBarMaximum(orientation)) 10738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value = scrollBarMaximum(orientation); 1074ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch sb->scrollableArea()->scrollToOffsetWithoutAnimation(orientation == Qt::Horizontal ? HorizontalScrollbar : VerticalScrollbar, value); 10758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 10768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 10778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 10798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the current value for the scrollbar with orientation \a orientation, or 0 10808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if no scrollbar is found for \a orientation. 10818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa scrollBarMinimum(), scrollBarMaximum() 10838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 10848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectint QWebFrame::scrollBarValue(Qt::Orientation orientation) const 10858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 10868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Scrollbar *sb; 10878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project sb = (orientation == Qt::Horizontal) ? d->horizontalScrollBar() : d->verticalScrollBar(); 10880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (sb) 10898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return sb->value(); 10908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 10918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 10928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 10948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the maximum value for the scrollbar with orientation \a orientation, or 0 10958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if no scrollbar is found for \a orientation. 10968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa scrollBarMinimum() 10988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 10998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectint QWebFrame::scrollBarMaximum(Qt::Orientation orientation) const 11008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 11018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Scrollbar *sb; 11028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project sb = (orientation == Qt::Horizontal) ? d->horizontalScrollBar() : d->verticalScrollBar(); 11038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (sb) 11048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return sb->maximum(); 11058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 11068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 11078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 11098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the minimum value for the scrollbar with orientation \a orientation. 11108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The minimum value is always 0. 11128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa scrollBarMaximum() 11148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 11158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectint QWebFrame::scrollBarMinimum(Qt::Orientation orientation) const 11168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1117231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block Q_UNUSED(orientation) 11188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 11198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 11208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1122635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \since 4.6 1123635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Returns the geometry for the scrollbar with orientation \a orientation. 1124635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1125635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project If the scrollbar does not exist an empty rect is returned. 1126635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 1127635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectQRect QWebFrame::scrollBarGeometry(Qt::Orientation orientation) const 1128635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 1129635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Scrollbar *sb; 1130635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project sb = (orientation == Qt::Horizontal) ? d->horizontalScrollBar() : d->verticalScrollBar(); 1131635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project if (sb) 1132635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return sb->frameRect(); 1133635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return QRect(); 1134635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 1135635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1136635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*! 11378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.5 11388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Scrolls the frame \a dx pixels to the right and \a dy pixels downward. Both 11398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \a dx and \a dy may be negative. 11400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1141635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \sa QWebFrame::scrollPosition 11428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 11438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1144635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectvoid QWebFrame::scroll(int dx, int dy) 11458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 11468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d->frame->view()) 11478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 11480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->frame->view()->scrollBy(IntSize(dx, dy)); 11508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 11518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1153635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \property QWebFrame::scrollPosition 1154635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \since 4.5 1155635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \brief the position the frame is currently scrolled to. 11568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 11578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1158635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectQPoint QWebFrame::scrollPosition() const 11598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 11608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d->frame->view()) 11610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QPoint(0, 0); 11628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1163635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project IntSize ofs = d->frame->view()->scrollOffset(); 1164635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return QPoint(ofs.width(), ofs.height()); 11658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 11668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1167635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectvoid QWebFrame::setScrollPosition(const QPoint &pos) 11688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1169635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project QPoint current = scrollPosition(); 1170635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int dx = pos.x() - current.x(); 1171635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int dy = pos.y() - current.y(); 11728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project scroll(dx, dy); 11738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 11748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1176692e5dbf12901edacf14812a6fae25462920af42Steve Block \since 4.7 1177692e5dbf12901edacf14812a6fae25462920af42Steve Block Scrolls the frame to the given \a anchor name. 1178692e5dbf12901edacf14812a6fae25462920af42Steve Block*/ 1179692e5dbf12901edacf14812a6fae25462920af42Steve Blockvoid QWebFrame::scrollToAnchor(const QString& anchor) 1180692e5dbf12901edacf14812a6fae25462920af42Steve Block{ 1181692e5dbf12901edacf14812a6fae25462920af42Steve Block FrameView *view = d->frame->view(); 1182692e5dbf12901edacf14812a6fae25462920af42Steve Block if (view) 1183692e5dbf12901edacf14812a6fae25462920af42Steve Block view->scrollToAnchor(anchor); 1184692e5dbf12901edacf14812a6fae25462920af42Steve Block} 1185692e5dbf12901edacf14812a6fae25462920af42Steve Block 1186692e5dbf12901edacf14812a6fae25462920af42Steve Block/*! 1187cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block \since 4.6 1188cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block Render the \a layer of the frame using \a painter clipping to \a clip. 11898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa print() 11918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 11928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1193cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockvoid QWebFrame::render(QPainter* painter, RenderLayer layer, const QRegion& clip) 11948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1195643ca7872b450ea4efacab6188849e5aac2ba161Steve Block GraphicsContext context(painter); 1196643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (context.paintingDisabled() && !context.updatingControlTints()) 1197643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return; 1198643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1199cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if (!clip.isEmpty()) 1200643ca7872b450ea4efacab6188849e5aac2ba161Steve Block d->renderRelativeCoords(&context, layer, clip); 1201cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block else if (d->frame->view()) 1202643ca7872b450ea4efacab6188849e5aac2ba161Steve Block d->renderRelativeCoords(&context, layer, QRegion(d->frame->view()->frameRect())); 1203635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 12048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1205635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*! 1206cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block Render the frame into \a painter clipping to \a clip. 12070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 1208643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid QWebFrame::render(QPainter* painter, const QRegion& clip) 12090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1210643ca7872b450ea4efacab6188849e5aac2ba161Steve Block GraphicsContext context(painter); 1211643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (context.paintingDisabled() && !context.updatingControlTints()) 1212643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return; 1213643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1214643ca7872b450ea4efacab6188849e5aac2ba161Steve Block d->renderRelativeCoords(&context, AllLayers, clip); 12150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 12160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 1218cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block Render the frame into \a painter. 1219635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 1220643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid QWebFrame::render(QPainter* painter) 1221635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 1222cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if (!d->frame->view()) 1223cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block return; 1224cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 1225643ca7872b450ea4efacab6188849e5aac2ba161Steve Block GraphicsContext context(painter); 1226643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (context.paintingDisabled() && !context.updatingControlTints()) 1227643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return; 1228643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1229643ca7872b450ea4efacab6188849e5aac2ba161Steve Block d->renderRelativeCoords(&context, AllLayers, QRegion(d->frame->view()->frameRect())); 12308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 12318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 12338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \property QWebFrame::textSizeMultiplier 12348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief the scaling factor for all text in the frame 12358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \obsolete 12368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Use setZoomFactor instead, in combination with the ZoomTextOnly attribute in 12388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebSettings. 12398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \note Setting this property also enables the ZoomTextOnly attribute in 12418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebSettings. 12428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 12438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1244635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*! 1245635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Sets the value of the multiplier used to scale the text in a Web frame to 1246635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project the \a factor specified. 1247635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 12488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::setTextSizeMultiplier(qreal factor) 12498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 125068513a70bcd92384395513322f1b801e7bf9c729Steve Block page()->settings()->setAttribute(QWebSettings::ZoomTextOnly, true); 12515af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 125268513a70bcd92384395513322f1b801e7bf9c729Steve Block d->frame->setPageAndTextZoomFactors(1, factor); 12538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 12548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1255635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*! 1256635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Returns the value of the multiplier used to scale the text in a Web frame. 1257635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 12588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectqreal QWebFrame::textSizeMultiplier() const 12598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 12606b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner return page()->settings()->testAttribute(QWebSettings::ZoomTextOnly) ? d->frame->textZoomFactor() : d->frame->pageZoomFactor(); 12618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 12628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 12648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \property QWebFrame::zoomFactor 12658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.5 12668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief the zoom factor for the frame 12678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 12688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::setZoomFactor(qreal factor) 12708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 12716b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner if (page()->settings()->testAttribute(QWebSettings::ZoomTextOnly)) 127268513a70bcd92384395513322f1b801e7bf9c729Steve Block d->frame->setTextZoomFactor(factor); 127368513a70bcd92384395513322f1b801e7bf9c729Steve Block else 127468513a70bcd92384395513322f1b801e7bf9c729Steve Block d->frame->setPageZoomFactor(factor); 12758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 12768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectqreal QWebFrame::zoomFactor() const 12788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 12796b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner return page()->settings()->testAttribute(QWebSettings::ZoomTextOnly) ? d->frame->textZoomFactor() : d->frame->pageZoomFactor(); 12808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 12818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 12830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \property QWebFrame::focus 12840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 12850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns true if this frame has keyboard input focus; otherwise, returns false. 12870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 12880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochbool QWebFrame::hasFocus() const 12890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1290231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebCore::Frame* ff = d->frame->page()->focusController()->focusedFrame(); 1291231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return ff && QWebFramePrivate::kit(ff) == this; 12920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 12930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 12950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 12960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Gives keyboard input focus to this frame. 12980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 12990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid QWebFrame::setFocus() 13000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 13010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebFramePrivate::core(this)->page()->focusController()->setFocusedFrame(QWebFramePrivate::core(this)); 13020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 13030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 13058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the position of the frame relative to it's parent frame. 13068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 13078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQPoint QWebFrame::pos() const 13088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 13098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d->frame->view()) 13108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QPoint(); 13118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 13128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->frame->view()->frameRect().topLeft(); 13138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 13148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 13158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 13168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Return the geometry of the frame relative to it's parent frame. 13178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 13188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQRect QWebFrame::geometry() const 13198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 13208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d->frame->view()) 13218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QRect(); 13228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->frame->view()->frameRect(); 13238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 13248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 13258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 13268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \property QWebFrame::contentsSize 13278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief the size of the contents in this frame 1328635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 13290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \sa contentsSizeChanged() 13308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 13318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQSize QWebFrame::contentsSize() const 13328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 13338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FrameView *view = d->frame->view(); 13348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!view) 13358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QSize(); 13368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QSize(view->contentsWidth(), view->contentsHeight()); 13378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 13388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 13398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 13400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 13410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns the document element of this frame. 13430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch The document element provides access to the entire structured 13450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch content of the frame. 13460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 13470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQWebElement QWebFrame::documentElement() const 13480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 13490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebCore::Document *doc = d->frame->document(); 13500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!doc) 13510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QWebElement(); 13520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QWebElement(doc->documentElement()); 13530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 13540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 13560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 13570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns a new list of elements matching the given CSS selector \a selectorQuery. 13580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch If there are no matching elements, an empty list is returned. 13590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \l{http://www.w3.org/TR/REC-CSS2/selector.html#q1}{Standard CSS2 selector} syntax is 13610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch used for the query. 13620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \sa QWebElement::findAll() 13640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 1365cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve BlockQWebElementCollection QWebFrame::findAllElements(const QString &selectorQuery) const 13660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 13670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return documentElement().findAll(selectorQuery); 13680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 13690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 13710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 13720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns the first element in the frame's document that matches the 13730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch given CSS selector \a selectorQuery. If there is no matching element, a 13740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch null element is returned. 13750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \l{http://www.w3.org/TR/REC-CSS2/selector.html#q1}{Standard CSS2 selector} syntax is 13770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch used for the query. 13780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \sa QWebElement::findFirst() 13800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 13810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQWebElement QWebFrame::findFirstElement(const QString &selectorQuery) const 13820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 13830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return documentElement().findFirst(selectorQuery); 13840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 13850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 13878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Performs a hit test on the frame contents at the given position \a pos and returns the hit test result. 13888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 13898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHitTestResult QWebFrame::hitTestContent(const QPoint &pos) const 13908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 13918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d->frame->view() || !d->frame->contentRenderer()) 13928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QWebHitTestResult(); 13938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1394563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark HitTestResult result = d->frame->eventHandler()->hitTestResultAtPoint(d->frame->view()->windowToContents(pos), /*allowShadowContent*/ false, /*ignoreClipping*/ true); 13950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (result.scrollbar()) 13970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QWebHitTestResult(); 13980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QWebHitTestResult(new QWebHitTestResultPrivate(result)); 14008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 14018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! \reimp 14038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 14048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool QWebFrame::event(QEvent *e) 14058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 14068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QObject::event(e); 14078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 14088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef QT_NO_PRINTER 14108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 14118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Prints the frame to the given \a printer. 14128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa render() 14148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 14158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::print(QPrinter *printer) const 14168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1417563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark QPainter painter; 1418563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (!painter.begin(printer)) 1419563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return; 1420563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 142106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen const qreal zoomFactorX = (qreal)printer->logicalDpiX() / qt_defaultDpi(); 142206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen const qreal zoomFactorY = (qreal)printer->logicalDpiY() / qt_defaultDpi(); 14238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PrintContext printContext(d->frame); 14258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project float pageHeight = 0; 14268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QRect qprinterRect = printer->pageRect(); 14288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project IntRect pageRect(0, 0, 14308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int(qprinterRect.width() / zoomFactorX), 14318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int(qprinterRect.height() / zoomFactorY)); 14328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printContext.begin(pageRect.width()); 14348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch printContext.computePageRects(pageRect, /* headerHeight */ 0, /* footerHeight */ 0, /* userScaleFactor */ 1.0, pageHeight); 14368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int docCopies; 14388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int pageCopies; 14390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (printer->collateCopies()) { 14408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project docCopies = 1; 14418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pageCopies = printer->numCopies(); 14428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else { 14438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project docCopies = printer->numCopies(); 14448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pageCopies = 1; 14458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 14468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int fromPage = printer->fromPage(); 14488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int toPage = printer->toPage(); 14498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool ascending = true; 14508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (fromPage == 0 && toPage == 0) { 14528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project fromPage = 1; 14538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project toPage = printContext.pageCount(); 14548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 14558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // paranoia check 14568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project fromPage = qMax(1, fromPage); 145765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch toPage = qMin(static_cast<int>(printContext.pageCount()), toPage); 1458d0825bca7fe65beaee391d30da42e937db621564Steve Block if (toPage < fromPage) { 1459d0825bca7fe65beaee391d30da42e937db621564Steve Block // if the user entered a page range outside the actual number 1460d0825bca7fe65beaee391d30da42e937db621564Steve Block // of printable pages, just return 1461d0825bca7fe65beaee391d30da42e937db621564Steve Block return; 1462d0825bca7fe65beaee391d30da42e937db621564Steve Block } 14638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (printer->pageOrder() == QPrinter::LastPageFirst) { 14658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int tmp = fromPage; 14668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project fromPage = toPage; 14678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project toPage = tmp; 14688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ascending = false; 14698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 14708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project painter.scale(zoomFactorX, zoomFactorY); 14728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project GraphicsContext ctx(&painter); 14738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (int i = 0; i < docCopies; ++i) { 14758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int page = fromPage; 14768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project while (true) { 14778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (int j = 0; j < pageCopies; ++j) { 14788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (printer->printerState() == QPrinter::Aborted 14798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project || printer->printerState() == QPrinter::Error) { 14808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printContext.end(); 14818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 14828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 14838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printContext.spoolPage(ctx, page - 1, pageRect.width()); 14848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (j < pageCopies - 1) 14858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printer->newPage(); 14868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 14878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (page == toPage) 14898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 14908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (ascending) 14928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ++page; 14938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else 14948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project --page; 14958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printer->newPage(); 14978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 14988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( i < docCopies - 1) 15008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printer->newPage(); 15018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 15028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printContext.end(); 15048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 15058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // QT_NO_PRINTER 15068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1508563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark Evaluates the JavaScript defined by \a scriptSource using this frame as context 1509563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark and returns the result of the last executed statement. 15108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa addToJavaScriptWindowObject(), javaScriptWindowObjectCleared() 15128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 15138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQVariant QWebFrame::evaluateJavaScript(const QString& scriptSource) 15148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 15158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ScriptController *proxy = d->frame->script(); 15168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QVariant rc; 15178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (proxy) { 151868513a70bcd92384395513322f1b801e7bf9c729Steve Block#if USE(JSC) 15190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch int distance = 0; 152068513a70bcd92384395513322f1b801e7bf9c729Steve Block JSC::JSValue v = d->frame->script()->executeScript(ScriptSourceCode(scriptSource)).jsValue(); 152168513a70bcd92384395513322f1b801e7bf9c729Steve Block 1522cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block rc = JSC::Bindings::convertValueToQVariant(proxy->globalObject(mainThreadNormalWorld())->globalExec(), v, QMetaType::Void, &distance); 152368513a70bcd92384395513322f1b801e7bf9c729Steve Block#elif USE(V8) 152468513a70bcd92384395513322f1b801e7bf9c729Steve Block QScriptEngine* engine = d->frame->script()->qtScriptEngine(); 152568513a70bcd92384395513322f1b801e7bf9c729Steve Block if (!engine) 152668513a70bcd92384395513322f1b801e7bf9c729Steve Block return rc; 152768513a70bcd92384395513322f1b801e7bf9c729Steve Block rc = engine->evaluate(scriptSource).toVariant(); 152868513a70bcd92384395513322f1b801e7bf9c729Steve Block#endif 15298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 15308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return rc; 15318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 15328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1533635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*! 1534635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \since 4.5 1535635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1536635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Returns the frame's security origin. 1537635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 1538635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectQWebSecurityOrigin QWebFrame::securityOrigin() const 1539635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 1540635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project QWebFrame* that = const_cast<QWebFrame*>(this); 1541635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project QWebSecurityOriginPrivate* priv = new QWebSecurityOriginPrivate(QWebFramePrivate::core(that)->document()->securityOrigin()); 1542635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return QWebSecurityOrigin(priv); 1543635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 1544635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1545e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockWebCore::Frame* QWebFramePrivate::core(const QWebFrame* webFrame) 15468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 15478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return webFrame->d->frame; 15488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 15498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1550e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockQWebFrame* QWebFramePrivate::kit(const WebCore::Frame* coreFrame) 15518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 155268513a70bcd92384395513322f1b801e7bf9c729Steve Block return qobject_cast<QWebFrame*>(coreFrame->loader()->networkingContext()->originatingObject()); 15538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 15548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 15578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \fn void QWebFrame::javaScriptWindowObjectCleared() 15588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This signal is emitted whenever the global window object of the JavaScript 15608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project environment is cleared, e.g., before starting a new load. 15618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project If you intend to add QObjects to a QWebFrame using 15638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addToJavaScriptWindowObject(), you should add them in a slot connected 15648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project to this signal. This ensures that your objects remain accessible when 15658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project loading new URLs. 15668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 15678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 15698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \fn void QWebFrame::provisionalLoad() 15708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \internal 15718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 15728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 15748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \fn void QWebFrame::titleChanged(const QString &title) 15758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This signal is emitted whenever the title of the frame changes. 15778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The \a title string specifies the new title. 15788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa title() 15808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 15818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 15838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \fn void QWebFrame::urlChanged(const QUrl &url) 15848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This signal is emitted with the URL of the frame when the frame's title is 15868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project received. The new URL is specified by \a url. 15878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa url() 15898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 15908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 15928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \fn void QWebFrame::initialLayoutCompleted() 15938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This signal is emitted when the frame is laid out the first time. 15958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This is the first time you will see contents displayed on the frame. 15968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \note A frame can be laid out multiple times. 15988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 15998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 16018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \fn void QWebFrame::iconChanged() 16028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This signal is emitted when the icon ("favicon") associated with the frame 16048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project has been loaded. 16058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa icon() 16078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 16088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1610635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \fn void QWebFrame::contentsSizeChanged(const QSize &size) 1611635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \since 4.6 16128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch This signal is emitted when the frame's contents size changes 16140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch to \a size. 16158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1616635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \sa contentsSize() 16178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 16188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 16200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \fn void QWebFrame::loadStarted() 16210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 16220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch This signal is emitted when a new load of this frame is started. 16240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \sa loadFinished() 16260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 16270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 16290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \fn void QWebFrame::loadFinished(bool ok) 16300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 16310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch This signal is emitted when a load of this frame is finished. 16330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \a ok will indicate whether the load was successful or any error occurred. 16340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \sa loadStarted() 16360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 16370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 1639dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block \fn void QWebFrame::pageChanged() 1640dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block \since 4.7 1641dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 1642dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block This signal is emitted when this frame has been moved to a different QWebPage. 1643dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 1644dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block \sa page() 1645dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block*/ 1646dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 1647dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block/*! 16488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \class QWebHitTestResult 16498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.4 16508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief The QWebHitTestResult class provides information about the web 16518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project page content after a hit test. 16528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1653231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block \inmodule QtWebKit 1654231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 16558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebHitTestResult is returned by QWebFrame::hitTestContent() to provide 16568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project information about the content of the web page at the specified position. 16578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 16588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 16608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \internal 16618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 16628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHitTestResult::QWebHitTestResult(QWebHitTestResultPrivate *priv) 16638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : d(priv) 16648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 16658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 16668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHitTestResultPrivate::QWebHitTestResultPrivate(const WebCore::HitTestResult &hitTest) 16688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : isContentEditable(false) 16698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , isContentSelected(false) 1670635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project , isScrollBar(false) 16718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 16728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!hitTest.innerNode()) 16738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 16748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pos = hitTest.point(); 16750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebCore::TextDirection dir; 16760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch title = hitTest.title(dir); 16778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project linkText = hitTest.textContent(); 16788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project linkUrl = hitTest.absoluteLinkURL(); 16798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project linkTitle = hitTest.titleDisplayString(); 16808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project alternateText = hitTest.altDisplayString(); 16818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project imageUrl = hitTest.absoluteImageURL(); 1682635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project innerNode = hitTest.innerNode(); 16838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project innerNonSharedNode = hitTest.innerNonSharedNode(); 1684cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block boundingRect = innerNonSharedNode ? innerNonSharedNode->renderer()->absoluteBoundingBoxRect(true) : IntRect(); 16858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::Image *img = hitTest.image(); 16868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (img) { 16878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QPixmap *pix = img->nativeImageForCurrentFrame(); 16888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (pix) 16898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pixmap = *pix; 16908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 16918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::Frame *wframe = hitTest.targetFrame(); 16928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (wframe) 16938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project linkTargetFrame = QWebFramePrivate::kit(wframe); 16940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch linkElement = QWebElement(hitTest.URLElement()); 16958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project isContentEditable = hitTest.isContentEditable(); 16978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project isContentSelected = hitTest.isSelected(); 1698635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project isScrollBar = hitTest.scrollbar(); 16998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (innerNonSharedNode && innerNonSharedNode->document() 17018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project && innerNonSharedNode->document()->frame()) 17028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project frame = QWebFramePrivate::kit(innerNonSharedNode->document()->frame()); 1703635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 17040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch enclosingBlock = QWebElement(WebCore::enclosingBlock(innerNode.get())); 17058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 17068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 17088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Constructs a null hit test result. 17098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 17108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHitTestResult::QWebHitTestResult() 17118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : d(0) 17128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 17138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 17148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 17168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Constructs a hit test result from \a other. 17178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 17188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHitTestResult::QWebHitTestResult(const QWebHitTestResult &other) 17198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : d(0) 17208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 17218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (other.d) 17228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d = new QWebHitTestResultPrivate(*other.d); 17238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 17248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 17268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Assigns the \a other hit test result to this. 17278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 17288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHitTestResult &QWebHitTestResult::operator=(const QWebHitTestResult &other) 17298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 17308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this != &other) { 17318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (other.d) { 17328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 17338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d = new QWebHitTestResultPrivate; 17348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *d = *other.d; 17358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else { 17368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete d; 17378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d = 0; 17388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 17398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 17408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return *this; 17418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 17428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 17448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Destructor. 17458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 17468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHitTestResult::~QWebHitTestResult() 17478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 17488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete d; 17498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 17508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 17528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns true if the hit test result is null; otherwise returns false. 17538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 17548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool QWebHitTestResult::isNull() const 17558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 17568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return !d; 17578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 17588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 17608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the position where the hit test occured. 17618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 17628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQPoint QWebHitTestResult::pos() const 17638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 17648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 17658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QPoint(); 17668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->pos; 17678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 17688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 17708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.5 1771635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Returns the bounding rect of the element. 17728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 17738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQRect QWebHitTestResult::boundingRect() const 17748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 17758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 17768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QRect(); 17778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->boundingRect; 17788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 17798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1781635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \since 4.6 17820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns the block element that encloses the element hit. 17830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 17840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch A block element is an element that is rendered using the 17850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch CSS "block" style. This includes for example text 17860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch paragraphs. 1787635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 17880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQWebElement QWebHitTestResult::enclosingBlockElement() const 1789635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 1790635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project if (!d) 17910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QWebElement(); 1792635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return d->enclosingBlock; 1793635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 1794635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1795635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*! 17968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the title of the nearest enclosing HTML element. 17978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 17988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebHitTestResult::title() const 17998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 18008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 18018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QString(); 18028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->title; 18038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 18048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 18058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 18068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the text of the link. 18078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 18088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebHitTestResult::linkText() const 18098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 18108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 18118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QString(); 18128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->linkText; 18138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 18148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 18158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 18168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the url to which the link points to. 18178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 18188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQUrl QWebHitTestResult::linkUrl() const 18198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 18208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 18218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QUrl(); 18228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->linkUrl; 18238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 18248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 18258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 18268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the title of the link. 18278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 18288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQUrl QWebHitTestResult::linkTitle() const 18298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 18308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 18318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QUrl(); 18328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->linkTitle; 18338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 18348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 18358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1836563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark \since 4.6 18370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns the element that represents the link. 1838563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 18390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \sa linkTargetFrame() 1840563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark*/ 18410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQWebElement QWebHitTestResult::linkElement() const 1842563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 1843563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (!d) 18440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QWebElement(); 18450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return d->linkElement; 1846563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 1847563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 1848563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark/*! 18498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the frame that will load the link if it is activated. 1850563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 18510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \sa linkElement() 18528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 18538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebFrame *QWebHitTestResult::linkTargetFrame() const 18548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 18558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 18568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 18578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->linkTargetFrame; 18588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 18598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 18608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 18618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the alternate text of the element. This corresponds to the HTML alt attribute. 18628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 18638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebHitTestResult::alternateText() const 18648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 18658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 18668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QString(); 18678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->alternateText; 18688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 18698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 18708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 18718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the url of the image. 18728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 18738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQUrl QWebHitTestResult::imageUrl() const 18748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 18758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 18768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QUrl(); 18778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->imageUrl; 18788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 18798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 18808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 18818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns a QPixmap containing the image. A null pixmap is returned if the 18828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project element being tested is not an image. 18838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 18848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQPixmap QWebHitTestResult::pixmap() const 18858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 18868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 18878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QPixmap(); 18888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->pixmap; 18898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 18908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 18918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 18928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns true if the content is editable by the user; otherwise returns false. 18938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 18948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool QWebHitTestResult::isContentEditable() const 18958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 18968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 18978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 18988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->isContentEditable; 18998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 19008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 19018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 19028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns true if the content tested is part of the selection; otherwise returns false. 19038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 19048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool QWebHitTestResult::isContentSelected() const 19058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 19068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 19078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 19088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->isContentSelected; 19098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 19108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 19118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 19120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 19130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns the underlying DOM element as QWebElement. 19148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 19150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQWebElement QWebHitTestResult::element() const 19168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 19170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!d || !d->innerNonSharedNode || !d->innerNonSharedNode->isElementNode()) 19180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QWebElement(); 19190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 19200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QWebElement(static_cast<WebCore::Element*>(d->innerNonSharedNode.get())); 19218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 19228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1923635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*! 19240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns the frame the hit test was executed in. 1925635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 19260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQWebFrame *QWebHitTestResult::frame() const 1927635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 1928635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project if (!d) 19290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return 0; 19300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return d->frame; 1931635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 1932