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())); 3162daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch renderFrameExtras(context, QFlags<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 3452daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid QWebFramePrivate::renderRelativeCoords(GraphicsContext* context, QFlags<QWebFrame::RenderLayer> layers, 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 3592daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (layers & QWebFrame::ContentsLayer) { 360a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch for (int i = 0; i < vector.size(); ++i) { 361a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch const QRect& clipRect = vector.at(i); 362cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 3632fc2651226baac27029e38c9d6ef883fa32084dbSteve Block QRect rect = clipRect.intersected(view->frameRect()); 364cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 365643ca7872b450ea4efacab6188849e5aac2ba161Steve Block context->save(); 366a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch painter->setClipRect(clipRect, Qt::IntersectClip); 367a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 368a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch int x = view->x(); 369a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch int y = view->y(); 370cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 371cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block int scrollX = view->scrollX(); 372cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block int scrollY = view->scrollY(); 373cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 374643ca7872b450ea4efacab6188849e5aac2ba161Steve Block context->translate(x, y); 375cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block rect.translate(-x, -y); 376643ca7872b450ea4efacab6188849e5aac2ba161Steve Block context->translate(-scrollX, -scrollY); 377cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block rect.translate(scrollX, scrollY); 378643ca7872b450ea4efacab6188849e5aac2ba161Steve Block context->clip(view->visibleContentRect()); 379cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 380643ca7872b450ea4efacab6188849e5aac2ba161Steve Block view->paintContents(context, rect); 381cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 382643ca7872b450ea4efacab6188849e5aac2ba161Steve Block context->restore(); 383cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block } 384a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER) 38528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu renderCompositedLayers(context, IntRect(clip.boundingRect())); 386a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#endif 387a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch } 3882daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch renderFrameExtras(context, layers, clip); 3892daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if ENABLE(INSPECTOR) 3902daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (frame->page()->inspectorController()->highlightedNode()) { 3912daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch context->save(); 3922daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch frame->page()->inspectorController()->drawNodeHighlight(*context); 3932daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch context->restore(); 3942daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 3952daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif 3962daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 397cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 3982daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid QWebFramePrivate::renderFrameExtras(GraphicsContext* context, QFlags<QWebFrame::RenderLayer> layers, const QRegion& clip) 3992daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 4002daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!(layers & (QWebFrame::PanIconLayer | QWebFrame::ScrollBarLayer))) 4012daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 4022daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch QPainter* painter = context->platformContext(); 4032daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebCore::FrameView* view = frame->view(); 4042daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch QVector<QRect> vector = clip.rects(); 4052daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch for (int i = 0; i < vector.size(); ++i) { 4062daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch const QRect& clipRect = vector.at(i); 407cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 4082daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch QRect intersectedRect = clipRect.intersected(view->frameRect()); 409cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 4102daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch painter->save(); 4112daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch painter->setClipRect(clipRect, Qt::IntersectClip); 412a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 4132daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch int x = view->x(); 4142daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch int y = view->y(); 415a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 4162daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (layers & QWebFrame::ScrollBarLayer 4172daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch && !view->scrollbarsSuppressed() 4182daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch && (view->horizontalScrollbar() || view->verticalScrollbar())) { 419a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 4202daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch QRect rect = intersectedRect; 4212daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch context->translate(x, y); 4222daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch rect.translate(-x, -y); 4232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch view->paintScrollbars(context, rect); 4242daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch context->translate(-x, -y); 4252daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 426cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 427643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#if ENABLE(PAN_SCROLLING) 4282daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (layers & QWebFrame::PanIconLayer) 4292daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch view->paintPanScrollIcon(context); 430643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 431cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 4322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch painter->restore(); 4338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4362daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid QWebFramePrivate::emitUrlChanged() 4372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 4382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch url = frame->document()->url(); 4392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch emit q->urlChanged(url); 4402daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 4412daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 4422daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid QWebFramePrivate::_q_orientationChanged() 443f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 444f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#if ENABLE(ORIENTATION_EVENTS) && ENABLE(DEVICE_ORIENTATION) 445f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int orientation; 4462daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebCore::Frame* frame = core(q); 447f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 4482daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch switch (m_orientation.reading()->orientation()) { 449f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QtMobility::QOrientationReading::TopUp: 450f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch orientation = 0; 451f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch break; 452f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QtMobility::QOrientationReading::TopDown: 453f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch orientation = 180; 454f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch break; 455f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QtMobility::QOrientationReading::LeftUp: 456f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch orientation = -90; 457f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch break; 458f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QtMobility::QOrientationReading::RightUp: 459f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch orientation = 90; 460f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch break; 461f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QtMobility::QOrientationReading::FaceUp: 462f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QtMobility::QOrientationReading::FaceDown: 463f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch // WebCore unable to handle it 464f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch default: 465f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return; 466f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch } 467f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch frame->sendOrientationChangeEvent(orientation); 468f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#endif 469f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 4708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 4718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \class QWebFrame 4728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.4 4738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief The QWebFrame class represents a frame in a web page. 4748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 475231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block \inmodule QtWebKit 476231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 4778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebFrame represents a frame inside a web page. Each QWebPage 4788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project object contains at least one frame, the main frame, obtained using 4798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebPage::mainFrame(). Additional frames will be created for HTML 4808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \c{<frame>} or \c{<iframe>} elements. 4818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project A frame can be loaded using load() or setUrl(). Alternatively, if you have 4838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project the HTML content readily available, you can use setHtml() instead. 4848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The page() function returns a pointer to the web page object. See 486643ca7872b450ea4efacab6188849e5aac2ba161Steve Block \l{QWebView}{Elements of QWebView} for an explanation of how web 4878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project frames are related to a web page and web view. 4888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch The QWebFrame class also offers methods to retrieve both the URL currently 4900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch loaded by the frame (see url()) as well as the URL originally requested 4910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch to be loaded (see requestedUrl()). These methods make possible the retrieval 4920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch of the URL before and after a DNS resolution or a redirection occurs during 4930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch the load process. The requestedUrl() also matches to the URL added to the 4940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch frame history (\l{QWebHistory}) if load is successful. 4950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The title of an HTML frame can be accessed with the title() property. 4978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Additionally, a frame may also specify an icon, which can be accessed 4988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project using the icon() property. If the title or the icon changes, the 4998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project corresponding titleChanged() and iconChanged() signals will be emitted. 5008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The zoomFactor() property can be used to change the overall size 5018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project of the content displayed in the frame. 5028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebFrame objects are created and controlled by the web page. You 5048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project can connect to the web page's \l{QWebPage::}{frameCreated()} signal 5058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project to be notified when a new frame is created. 5068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5076c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen There are multiple ways to programmatically examine the contents of a frame. 5086c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen The hitTestContent() function can be used to find elements by coordinate. 5096c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen For access to the underlying DOM tree, there is documentElement(), 5106c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen findAllElements() and findFirstElement(). 5118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project A QWebFrame can be printed onto a QPrinter using the print() function. 5138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This function is marked as a slot and can be conveniently connected to 5148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \l{QPrintPreviewDialog}'s \l{QPrintPreviewDialog::}{paintRequested()} 5158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project signal. 5168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa QWebPage 5188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 5198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 520643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/*! 521643ca7872b450ea4efacab6188849e5aac2ba161Steve Block \enum QWebFrame::RenderLayer 522643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 523643ca7872b450ea4efacab6188849e5aac2ba161Steve Block This enum describes the layers available for rendering using \l{QWebFrame::}{render()}. 524643ca7872b450ea4efacab6188849e5aac2ba161Steve Block The layers can be OR-ed together from the following list: 525643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 526643ca7872b450ea4efacab6188849e5aac2ba161Steve Block \value ContentsLayer The web content of the frame 527643ca7872b450ea4efacab6188849e5aac2ba161Steve Block \value ScrollBarLayer The scrollbars of the frame 528643ca7872b450ea4efacab6188849e5aac2ba161Steve Block \value PanIconLayer The icon used when panning the frame 529643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 530643ca7872b450ea4efacab6188849e5aac2ba161Steve Block \value AllLayers Includes all the above layers 531643ca7872b450ea4efacab6188849e5aac2ba161Steve Block*/ 532643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 5338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebFrame::QWebFrame(QWebPage *parent, QWebFrameData *frameData) 5348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : QObject(parent) 5358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , d(new QWebFramePrivate) 5368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 5378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->page = parent; 5380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch d->init(this, frameData); 5398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!frameData->url.isEmpty()) { 5418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::ResourceRequest request(frameData->url, frameData->referrer); 542563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark d->frame->loader()->load(request, frameData->name, false); 5438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 544f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#if ENABLE(ORIENTATION_EVENTS) && ENABLE(DEVICE_ORIENTATION) 5452daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch connect(&d->m_orientation, SIGNAL(readingChanged()), this, SLOT(_q_orientationChanged())); 546f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch d->m_orientation.start(); 547f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#endif 5488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 5498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebFrame::QWebFrame(QWebFrame *parent, QWebFrameData *frameData) 5518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : QObject(parent) 5528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , d(new QWebFramePrivate) 5538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 5548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->page = parent->d->page; 5550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch d->init(this, frameData); 556f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#if ENABLE(ORIENTATION_EVENTS) && ENABLE(DEVICE_ORIENTATION) 5572daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch connect(&d->m_orientation, SIGNAL(readingChanged()), this, SLOT(_q_orientationChanged())); 558f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch d->m_orientation.start(); 559f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#endif 5608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 5618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebFrame::~QWebFrame() 5638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 5648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->frame && d->frame->loader() && d->frame->loader()->client()) 5658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static_cast<FrameLoaderClientQt*>(d->frame->loader()->client())->m_webFrame = 0; 5668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete d; 5688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 5698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 5718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Make \a object available under \a name from within the frame's JavaScript 5728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project context. The \a object will be inserted as a child of the frame's window 5738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project object. 5748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Qt properties will be exposed as JavaScript properties and slots as 5768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project JavaScript methods. 57781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch The interaction between C++ and JavaScript is explained in the documentation of the \l{The QtWebKit Bridge}{QtWebKit bridge}. 5788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project If you want to ensure that your QObjects remain accessible after loading a 5808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project new URL, you should add them in a slot connected to the 5818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project javaScriptWindowObjectCleared() signal. 582563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 5830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch If Javascript is not enabled for this page, then this method does nothing. 5840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 585563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark The \a object will never be explicitly deleted by QtWebKit. 5868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 5878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::addToJavaScriptWindowObject(const QString &name, QObject *object) 5888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 589563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark addToJavaScriptWindowObject(name, object, QScriptEngine::QtOwnership); 590563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 5918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 592563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark/*! 593563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark \fn void QWebFrame::addToJavaScriptWindowObject(const QString &name, QObject *object, QScriptEngine::ValueOwnership own) 594563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark \overload 5958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 596563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark Make \a object available under \a name from within the frame's JavaScript 597563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark context. The \a object will be inserted as a child of the frame's window 598563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark object. 599563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 600563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark Qt properties will be exposed as JavaScript properties and slots as 601563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark JavaScript methods. 60281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch The interaction between C++ and JavaScript is explained in the documentation of the \l{The QtWebKit Bridge}{QtWebKit bridge}. 603563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 604563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark If you want to ensure that your QObjects remain accessible after loading a 605563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark new URL, you should add them in a slot connected to the 606563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark javaScriptWindowObjectCleared() signal. 607563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 6080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch If Javascript is not enabled for this page, then this method does nothing. 6090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 610563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark The ownership of \a object is specified using \a own. 611563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark*/ 612563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid QWebFrame::addToJavaScriptWindowObject(const QString &name, QObject *object, QScriptEngine::ValueOwnership ownership) 613563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 6140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!page()->settings()->testAttribute(QWebSettings::JavascriptEnabled)) 6150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return; 61668513a70bcd92384395513322f1b801e7bf9c729Steve Block#if USE(JSC) 6170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch JSC::JSLock lock(JSC::SilenceAssertionsOnly); 618cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block JSDOMWindow* window = toJSDOMWindow(d->frame, mainThreadNormalWorld()); 619545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch JSC::Bindings::RootObject* root; 620545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch if (ownership == QScriptEngine::QtOwnership) 621545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch root = d->frame->script()->cacheableBindingRootObject(); 622545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch else 623545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch root = d->frame->script()->bindingRootObject(); 624545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 625563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (!window) { 626563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark qDebug() << "Warning: couldn't get window object"; 627563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return; 628563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark } 6294576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (!root) { 6304576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang qDebug() << "Warning: couldn't get root object"; 6314576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return; 6324576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang } 6338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 634563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark JSC::ExecState* exec = window->globalExec(); 635563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 636563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark JSC::JSObject* runtimeObject = 637563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark JSC::Bindings::QtInstance::getQtInstance(object, root, ownership)->createRuntimeObject(exec); 638563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 639563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark JSC::PutPropertySlot slot; 640e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block window->put(exec, JSC::Identifier(exec, reinterpret_cast_ptr<const UChar*>(name.constData()), name.length()), runtimeObject, slot); 64168513a70bcd92384395513322f1b801e7bf9c729Steve Block#elif USE(V8) 64268513a70bcd92384395513322f1b801e7bf9c729Steve Block QScriptEngine* engine = d->frame->script()->qtScriptEngine(); 64368513a70bcd92384395513322f1b801e7bf9c729Steve Block if (!engine) 64468513a70bcd92384395513322f1b801e7bf9c729Steve Block return; 64568513a70bcd92384395513322f1b801e7bf9c729Steve Block QScriptValue v = engine->newQObject(object, ownership); 64668513a70bcd92384395513322f1b801e7bf9c729Steve Block engine->globalObject().property("window").setProperty(name, v); 64768513a70bcd92384395513322f1b801e7bf9c729Steve Block#endif 6488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 6498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 6510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns the frame's content as HTML, enclosed in HTML and BODY tags. 6528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa setHtml(), toPlainText() 6548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 6558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebFrame::toHtml() const 6568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 6578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d->frame->document()) 6588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QString(); 6598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return createMarkup(d->frame->document()); 6608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 6618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 6630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns the content of this frame converted to plain text, completely 6640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch stripped of all HTML formatting. 6658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa toHtml() 6678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 6688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebFrame::toPlainText() const 6698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 6708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->frame->view() && d->frame->view()->layoutPending()) 6718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->frame->view()->layout(); 6728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Element *documentElement = d->frame->document()->documentElement(); 674643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (documentElement) 675643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return documentElement->innerText(); 676643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return QString(); 6778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 6788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 6808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns a dump of the rendering tree. This is mainly useful for debugging 6818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project html. 6828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 6838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebFrame::renderTreeDump() const 6848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 6858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->frame->view() && d->frame->view()->layoutPending()) 6868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->frame->view()->layout(); 6878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 688643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return externalRepresentation(d->frame); 6898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 6908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 6928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \property QWebFrame::title 6938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief the title of the frame as defined by the HTML <title> element 6948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa titleChanged() 6968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 6978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebFrame::title() const 6998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 7008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->frame->document()) 7012daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return d->frame->loader()->documentLoader()->title().string(); 7020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QString(); 7038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 7048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 705635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*! 706635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \since 4.5 707635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \brief Returns the meta data in this frame as a QMultiMap 708635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 709635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project The meta data consists of the name and content attributes of the 710635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project of the \c{<meta>} tags in the HTML document. 711635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 712635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project For example: 713635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 714635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \code 715635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project <html> 716635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project <head> 717635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project <meta name="description" content="This document is a tutorial about Qt development"> 718635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project <meta name="keywords" content="Qt, WebKit, Programming"> 719635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project </head> 720635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project ... 721635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project </html> 722635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \endcode 723635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 724635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Given the above HTML code the metaData() function will return a map with two entries: 725635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \table 726635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \header \o Key 727635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \o Value 728635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \row \o "description" 729635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \o "This document is a tutorial about Qt development" 730635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \row \o "keywords" 731635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \o "Qt, WebKit, Programming" 732635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \endtable 733635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 734635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project This function returns a multi map to support multiple meta tags with the same attribute name. 735635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 736635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectQMultiMap<QString, QString> QWebFrame::metaData() const 737635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 7380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!d->frame->document()) 7390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QMap<QString, QString>(); 740635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 7410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QMultiMap<QString, QString> map; 742635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Document* doc = d->frame->document(); 743635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project RefPtr<NodeList> list = doc->getElementsByTagName("meta"); 744635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project unsigned len = list->length(); 745635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project for (unsigned i = 0; i < len; i++) { 746635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project HTMLMetaElement* meta = static_cast<HTMLMetaElement*>(list->item(i)); 747635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project map.insert(meta->name(), meta->content()); 748635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project } 749635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return map; 750635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 751635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 7522daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochstatic inline void clearCoreFrame(WebCore::Frame* frame) 7532daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 7542daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch frame->loader()->activeDocumentLoader()->writer()->begin(); 7552daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch frame->loader()->activeDocumentLoader()->writer()->end(); 7562daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 7572daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 7582daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochstatic inline bool isCoreFrameClear(WebCore::Frame* frame) 7592daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 7602daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return frame->document()->url().isEmpty(); 7612daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 7622daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 7638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic inline QUrl ensureAbsoluteUrl(const QUrl &url) 7648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 7652bde8e466a4451c7319e3a072d118917957d6554Steve Block if (!url.isValid() || !url.isRelative()) 7668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return url; 7678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 76881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // This contains the URL with absolute path but without 76981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // the query and the fragment part. 77081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch QUrl baseUrl = QUrl::fromLocalFile(QFileInfo(url.toLocalFile()).absoluteFilePath()); 77181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 77281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // The path is removed so the query and the fragment parts are there. 77381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch QString pathRemoved = url.toString(QUrl::RemovePath); 77481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch QUrl toResolve(pathRemoved); 77581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 77681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return baseUrl.resolved(toResolve); 7778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 7788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 7798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 7808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \property QWebFrame::url 7818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief the url of the frame currently viewed 7828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 7836c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen Setting this property clears the view and loads the URL. 7846c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 7856c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen By default, this property contains an empty, invalid URL. 7866c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 7878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa urlChanged() 7888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 7898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 7908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::setUrl(const QUrl &url) 7918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 7922daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch clearCoreFrame(d->frame); 793e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke const QUrl absolute = ensureAbsoluteUrl(url); 7942daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch d->url = absolute; 795e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke load(absolute); 7968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 7978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 7988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQUrl QWebFrame::url() const 7998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 8002daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return d->url; 8018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 8028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 8040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 8050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \property QWebFrame::requestedUrl 8060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch The URL requested to loaded by the frame currently viewed. The URL may differ from 8080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch the one returned by url() if a DNS resolution or a redirection occurs. 8090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \sa url(), setUrl() 8110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 8120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQUrl QWebFrame::requestedUrl() const 8130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 8142bde8e466a4451c7319e3a072d118917957d6554Steve Block return d->frameLoaderClient->lastRequestedUrl(); 8150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 8160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 8170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 8180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \property QWebFrame::baseUrl 8190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \brief the base URL of the frame, can be used to resolve relative URLs 8200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 8210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 8220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQUrl QWebFrame::baseUrl() const 8240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 8252daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (isCoreFrameClear(d->frame)) 8262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return QUrl(d->url).resolved(QUrl()); 8272daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return d->frame->document()->baseURL(); 8280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 8290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 8318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \property QWebFrame::icon 8328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief the icon associated with this frame 8338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa iconChanged(), QWebSettings::iconForUrl() 8358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 8368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQIcon QWebFrame::icon() const 8388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 8392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return QWebSettings::iconForUrl(d->frame->document()->url()); 8408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 8418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 8438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The name of this frame as defined by the parent frame. 8448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 8458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebFrame::frameName() const 8468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 84728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu return d->frame->tree()->uniqueName(); 8488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 8498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 8518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The web page that contains this frame. 852dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 853dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block \sa pageChanged() 8548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 8558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebPage *QWebFrame::page() const 8568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 8578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->page; 8588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 8598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 8618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Loads \a url into this frame. 8628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \note The view remains the same until enough data has arrived to display the new \a url. 8648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa setUrl(), setHtml(), setContent() 8668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 8678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::load(const QUrl &url) 8688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 869e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke // The load() overload ensures that the url is absolute. 870e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke load(QNetworkRequest(url)); 8718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 8728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 8748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Loads a network request, \a req, into this frame, using the method specified in \a 8758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project operation. 8768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \a body is optional and is only used for POST operations. 8788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 879dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block \note The view remains the same until enough data has arrived to display the new content. 8808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa setUrl() 8828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 8838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::load(const QNetworkRequest &req, 8848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QNetworkAccessManager::Operation operation, 8858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const QByteArray &body) 8868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 8878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->parentFrame()) 8888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->page->d->insideOpenCall = true; 8898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QUrl url = ensureAbsoluteUrl(req.url()); 8918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::ResourceRequest request(url); 8938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project switch (operation) { 8958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project case QNetworkAccessManager::HeadOperation: 8968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project request.setHTTPMethod("HEAD"); 8978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 8988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project case QNetworkAccessManager::GetOperation: 8998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project request.setHTTPMethod("GET"); 9008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 9018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project case QNetworkAccessManager::PutOperation: 9028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project request.setHTTPMethod("PUT"); 9038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 9048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project case QNetworkAccessManager::PostOperation: 9058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project request.setHTTPMethod("POST"); 9068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 907643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case QNetworkAccessManager::DeleteOperation: 908643ca7872b450ea4efacab6188849e5aac2ba161Steve Block request.setHTTPMethod("DELETE"); 909643ca7872b450ea4efacab6188849e5aac2ba161Steve Block break; 910f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case QNetworkAccessManager::CustomOperation: 911f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch request.setHTTPMethod(req.attribute(QNetworkRequest::CustomVerbAttribute).toByteArray().constData()); 912f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch break; 9138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project case QNetworkAccessManager::UnknownOperation: 9148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // eh? 9158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 9168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 9178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 918f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch QVariant cacheLoad = req.attribute(QNetworkRequest::CacheLoadControlAttribute); 919f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (cacheLoad.isValid()) { 920f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch bool ok; 921f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch uint cacheLoadValue = cacheLoad.toUInt(&ok); 922f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (ok) 923f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch request.setCachePolicy(cacheLoadControlToCachePolicy(cacheLoadValue)); 924f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch } 925f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 9268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QList<QByteArray> httpHeaders = req.rawHeaderList(); 9278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (int i = 0; i < httpHeaders.size(); ++i) { 9288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const QByteArray &headerName = httpHeaders.at(i); 9298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project request.addHTTPHeaderField(QString::fromLatin1(headerName), QString::fromLatin1(req.rawHeader(headerName))); 9308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 9318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!body.isEmpty()) 9338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project request.setHTTPBody(WebCore::FormData::create(body.constData(), body.size())); 9348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 935563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark d->frame->loader()->load(request, false); 9368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->parentFrame()) 9388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->page->d->insideOpenCall = false; 9398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 9408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 9428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Sets the content of this frame to \a html. \a baseUrl is optional and used to resolve relative 943635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project URLs in the document, such as referenced images or stylesheets. 9448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch The \a html is loaded immediately; external objects are loaded asynchronously. 9460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9470617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen If a script in the \a html runs longer than the default script timeout (currently 10 seconds), 9480617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen for example due to being blocked by a modal JavaScript alert dialog, this method will return 9490617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen as soon as possible after the timeout and any subsequent \a html will be loaded asynchronously. 9500617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 9518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project When using this method WebKit assumes that external resources such as JavaScript programs or style 9528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project sheets are encoded in UTF-8 unless otherwise specified. For example, the encoding of an external 9538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project script can be specified through the charset attribute of the HTML script tag. It is also possible 9548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for the encoding to be specified by web server. 9558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 956db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block This is a convenience function equivalent to setContent(html, "text/html", baseUrl). 957db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 958231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block \note This method will not affect session or global history for the frame. 959231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 960db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block \warning This function works only for HTML, for other mime types (i.e. XHTML, SVG) 961db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block setContent() should be used instead. 962db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 963db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block \sa toHtml(), setContent(), load() 9648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 9658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::setHtml(const QString &html, const QUrl &baseUrl) 9668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 9678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project KURL kurl(baseUrl); 9688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::ResourceRequest request(kurl); 9698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const QByteArray utf8 = html.toUtf8(); 9708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WTF::RefPtr<WebCore::SharedBuffer> data = WebCore::SharedBuffer::create(utf8.constData(), utf8.length()); 971dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WebCore::SubstituteData substituteData(data, WTF::String("text/html"), WTF::String("utf-8"), KURL()); 972563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark d->frame->loader()->load(request, substituteData, false); 9738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 9748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 9768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Sets the content of this frame to the specified content \a data. If the \a mimeType argument 9778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project is empty it is currently assumed that the content is HTML but in future versions we may introduce 9788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project auto-detection. 9798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project External objects referenced in the content are located relative to \a baseUrl. 9818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch The \a data is loaded immediately; external objects are loaded asynchronously. 9830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 984231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block \note This method will not affect session or global history for the frame. 985231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 986231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block \sa toHtml(), setHtml() 9878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 9888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::setContent(const QByteArray &data, const QString &mimeType, const QUrl &baseUrl) 9898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 9908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project KURL kurl(baseUrl); 9918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::ResourceRequest request(kurl); 9928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WTF::RefPtr<WebCore::SharedBuffer> buffer = WebCore::SharedBuffer::create(data.constData(), data.length()); 993dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch QString actualMimeType; 994dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WTF::String encoding; 995dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch if (mimeType.isEmpty()) 9968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actualMimeType = QLatin1String("text/html"); 997dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch else { 998dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch actualMimeType = extractMIMETypeFromMediaType(mimeType); 999dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch encoding = extractCharsetFromMediaType(mimeType); 1000dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch } 1001dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WebCore::SubstituteData substituteData(buffer, WTF::String(actualMimeType), encoding, KURL()); 1002563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark d->frame->loader()->load(request, substituteData, false); 10038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 10048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 10068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the parent frame of this frame, or 0 if the frame is the web pages 10078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project main frame. 10088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This is equivalent to qobject_cast<QWebFrame*>(frame->parent()). 10108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa childFrames() 10128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 10138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebFrame *QWebFrame::parentFrame() const 10148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 10158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->parentFrame(); 10168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 10178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 10198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns a list of all frames that are direct children of this frame. 10208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa parentFrame() 10228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 10238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQList<QWebFrame*> QWebFrame::childFrames() const 10248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 10258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QList<QWebFrame*> rc; 10268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->frame) { 10278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FrameTree *tree = d->frame->tree(); 10288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (Frame *child = tree->firstChild(); child; child = child->tree()->nextSibling()) { 10298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FrameLoader *loader = child->loader(); 103068513a70bcd92384395513322f1b801e7bf9c729Steve Block QWebFrame* webFrame = qobject_cast<QWebFrame*>(loader->networkingContext()->originatingObject()); 103168513a70bcd92384395513322f1b801e7bf9c729Steve Block if (webFrame) 103268513a70bcd92384395513322f1b801e7bf9c729Steve Block rc.append(webFrame); 10338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 10348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 10368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return rc; 10378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 10388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 10408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the scrollbar policy for the scrollbar defined by \a orientation. 10418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 10428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQt::ScrollBarPolicy QWebFrame::scrollBarPolicy(Qt::Orientation orientation) const 10438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 10448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (orientation == Qt::Horizontal) 10458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->horizontalScrollBarPolicy; 10468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->verticalScrollBarPolicy; 10478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 10488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 10508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Sets the scrollbar policy for the scrollbar defined by \a orientation to \a policy. 10518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 10528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::setScrollBarPolicy(Qt::Orientation orientation, Qt::ScrollBarPolicy policy) 10538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 10548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Q_ASSERT((int)ScrollbarAuto == (int)Qt::ScrollBarAsNeeded); 10558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Q_ASSERT((int)ScrollbarAlwaysOff == (int)Qt::ScrollBarAlwaysOff); 10568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Q_ASSERT((int)ScrollbarAlwaysOn == (int)Qt::ScrollBarAlwaysOn); 10578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (orientation == Qt::Horizontal) { 10598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->horizontalScrollBarPolicy = policy; 1060635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project if (d->frame->view()) { 1061dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block d->frame->view()->setHorizontalScrollbarMode((ScrollbarMode)policy, policy != Qt::ScrollBarAsNeeded /* lock */); 1062643ca7872b450ea4efacab6188849e5aac2ba161Steve Block d->frame->view()->updateCanHaveScrollbars(); 1063635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project } 10648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else { 10658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->verticalScrollBarPolicy = policy; 1066635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project if (d->frame->view()) { 1067dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block d->frame->view()->setVerticalScrollbarMode((ScrollbarMode)policy, policy != Qt::ScrollBarAsNeeded /* lock */); 1068643ca7872b450ea4efacab6188849e5aac2ba161Steve Block d->frame->view()->updateCanHaveScrollbars(); 1069635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project } 10708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 10718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 10728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 10748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Sets the current \a value for the scrollbar with orientation \a orientation. 10758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The scrollbar forces the \a value to be within the legal range: minimum <= value <= maximum. 10778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Changing the value also updates the thumb position. 10798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa scrollBarMinimum(), scrollBarMaximum() 10818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 10828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::setScrollBarValue(Qt::Orientation orientation, int value) 10838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 10848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Scrollbar *sb; 10858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project sb = (orientation == Qt::Horizontal) ? d->horizontalScrollBar() : d->verticalScrollBar(); 10868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (sb) { 10878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (value < 0) 10888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value = 0; 10898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else if (value > scrollBarMaximum(orientation)) 10908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value = scrollBarMaximum(orientation); 1091ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch sb->scrollableArea()->scrollToOffsetWithoutAnimation(orientation == Qt::Horizontal ? HorizontalScrollbar : VerticalScrollbar, value); 10928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 10938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 10948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 10968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the current value for the scrollbar with orientation \a orientation, or 0 10978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if no scrollbar is found for \a orientation. 10988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa scrollBarMinimum(), scrollBarMaximum() 11008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 11018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectint QWebFrame::scrollBarValue(Qt::Orientation orientation) const 11028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 11038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Scrollbar *sb; 11048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project sb = (orientation == Qt::Horizontal) ? d->horizontalScrollBar() : d->verticalScrollBar(); 11050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (sb) 11068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return sb->value(); 11078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 11088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 11098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 11118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the maximum value for the scrollbar with orientation \a orientation, or 0 11128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if no scrollbar is found for \a orientation. 11138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa scrollBarMinimum() 11158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 11168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectint QWebFrame::scrollBarMaximum(Qt::Orientation orientation) const 11178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 11188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Scrollbar *sb; 11198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project sb = (orientation == Qt::Horizontal) ? d->horizontalScrollBar() : d->verticalScrollBar(); 11208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (sb) 11218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return sb->maximum(); 11228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 11238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 11248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 11268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the minimum value for the scrollbar with orientation \a orientation. 11278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The minimum value is always 0. 11298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa scrollBarMaximum() 11318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 11328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectint QWebFrame::scrollBarMinimum(Qt::Orientation orientation) const 11338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1134231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block Q_UNUSED(orientation) 11358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 11368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 11378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1139635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \since 4.6 1140635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Returns the geometry for the scrollbar with orientation \a orientation. 1141635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1142635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project If the scrollbar does not exist an empty rect is returned. 1143635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 1144635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectQRect QWebFrame::scrollBarGeometry(Qt::Orientation orientation) const 1145635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 1146635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Scrollbar *sb; 1147635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project sb = (orientation == Qt::Horizontal) ? d->horizontalScrollBar() : d->verticalScrollBar(); 1148635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project if (sb) 1149635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return sb->frameRect(); 1150635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return QRect(); 1151635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 1152635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1153635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*! 11548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.5 11558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Scrolls the frame \a dx pixels to the right and \a dy pixels downward. Both 11568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \a dx and \a dy may be negative. 11570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1158635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \sa QWebFrame::scrollPosition 11598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 11608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1161635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectvoid QWebFrame::scroll(int dx, int dy) 11628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 11638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d->frame->view()) 11648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 11650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->frame->view()->scrollBy(IntSize(dx, dy)); 11678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 11688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1170635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \property QWebFrame::scrollPosition 1171635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \since 4.5 1172635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \brief the position the frame is currently scrolled to. 11738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 11748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1175635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectQPoint QWebFrame::scrollPosition() const 11768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 11778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d->frame->view()) 11780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QPoint(0, 0); 11798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1180635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project IntSize ofs = d->frame->view()->scrollOffset(); 1181635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return QPoint(ofs.width(), ofs.height()); 11828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 11838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1184635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectvoid QWebFrame::setScrollPosition(const QPoint &pos) 11858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1186635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project QPoint current = scrollPosition(); 1187635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int dx = pos.x() - current.x(); 1188635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int dy = pos.y() - current.y(); 11898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project scroll(dx, dy); 11908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 11918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1193692e5dbf12901edacf14812a6fae25462920af42Steve Block \since 4.7 1194692e5dbf12901edacf14812a6fae25462920af42Steve Block Scrolls the frame to the given \a anchor name. 1195692e5dbf12901edacf14812a6fae25462920af42Steve Block*/ 1196692e5dbf12901edacf14812a6fae25462920af42Steve Blockvoid QWebFrame::scrollToAnchor(const QString& anchor) 1197692e5dbf12901edacf14812a6fae25462920af42Steve Block{ 1198692e5dbf12901edacf14812a6fae25462920af42Steve Block FrameView *view = d->frame->view(); 1199692e5dbf12901edacf14812a6fae25462920af42Steve Block if (view) 1200692e5dbf12901edacf14812a6fae25462920af42Steve Block view->scrollToAnchor(anchor); 1201692e5dbf12901edacf14812a6fae25462920af42Steve Block} 1202692e5dbf12901edacf14812a6fae25462920af42Steve Block 1203692e5dbf12901edacf14812a6fae25462920af42Steve Block/*! 1204cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block \since 4.6 1205cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block Render the \a layer of the frame using \a painter clipping to \a clip. 12068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa print() 12088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 12098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1210cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockvoid QWebFrame::render(QPainter* painter, RenderLayer layer, const QRegion& clip) 12118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1212643ca7872b450ea4efacab6188849e5aac2ba161Steve Block GraphicsContext context(painter); 1213643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (context.paintingDisabled() && !context.updatingControlTints()) 1214643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return; 1215643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1216cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if (!clip.isEmpty()) 1217643ca7872b450ea4efacab6188849e5aac2ba161Steve Block d->renderRelativeCoords(&context, layer, clip); 1218cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block else if (d->frame->view()) 1219643ca7872b450ea4efacab6188849e5aac2ba161Steve Block d->renderRelativeCoords(&context, layer, QRegion(d->frame->view()->frameRect())); 1220635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 12218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1222635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*! 1223cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block Render the frame into \a painter clipping to \a clip. 12240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 1225643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid QWebFrame::render(QPainter* painter, const QRegion& clip) 12260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1227643ca7872b450ea4efacab6188849e5aac2ba161Steve Block GraphicsContext context(painter); 1228643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (context.paintingDisabled() && !context.updatingControlTints()) 1229643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return; 1230643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1231643ca7872b450ea4efacab6188849e5aac2ba161Steve Block d->renderRelativeCoords(&context, AllLayers, clip); 12320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 12330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 1235cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block Render the frame into \a painter. 1236635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 1237643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid QWebFrame::render(QPainter* painter) 1238635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 1239cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if (!d->frame->view()) 1240cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block return; 1241cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 1242643ca7872b450ea4efacab6188849e5aac2ba161Steve Block GraphicsContext context(painter); 1243643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (context.paintingDisabled() && !context.updatingControlTints()) 1244643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return; 1245643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1246643ca7872b450ea4efacab6188849e5aac2ba161Steve Block d->renderRelativeCoords(&context, AllLayers, QRegion(d->frame->view()->frameRect())); 12478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 12488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 12508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \property QWebFrame::textSizeMultiplier 12518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief the scaling factor for all text in the frame 12528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \obsolete 12538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Use setZoomFactor instead, in combination with the ZoomTextOnly attribute in 12558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebSettings. 12568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \note Setting this property also enables the ZoomTextOnly attribute in 12588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebSettings. 12598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 12608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1261635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*! 1262635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Sets the value of the multiplier used to scale the text in a Web frame to 1263635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project the \a factor specified. 1264635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 12658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::setTextSizeMultiplier(qreal factor) 12668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 126768513a70bcd92384395513322f1b801e7bf9c729Steve Block page()->settings()->setAttribute(QWebSettings::ZoomTextOnly, true); 12685af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 126968513a70bcd92384395513322f1b801e7bf9c729Steve Block d->frame->setPageAndTextZoomFactors(1, factor); 12708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 12718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1272635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*! 1273635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Returns the value of the multiplier used to scale the text in a Web frame. 1274635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 12758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectqreal QWebFrame::textSizeMultiplier() const 12768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 12776b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner return page()->settings()->testAttribute(QWebSettings::ZoomTextOnly) ? d->frame->textZoomFactor() : d->frame->pageZoomFactor(); 12788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 12798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 12818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \property QWebFrame::zoomFactor 12828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.5 12838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief the zoom factor for the frame 12848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 12858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::setZoomFactor(qreal factor) 12878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 12886b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner if (page()->settings()->testAttribute(QWebSettings::ZoomTextOnly)) 128968513a70bcd92384395513322f1b801e7bf9c729Steve Block d->frame->setTextZoomFactor(factor); 129068513a70bcd92384395513322f1b801e7bf9c729Steve Block else 129168513a70bcd92384395513322f1b801e7bf9c729Steve Block d->frame->setPageZoomFactor(factor); 12928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 12938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectqreal QWebFrame::zoomFactor() const 12958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 12966b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner return page()->settings()->testAttribute(QWebSettings::ZoomTextOnly) ? d->frame->textZoomFactor() : d->frame->pageZoomFactor(); 12978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 12988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 13000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \property QWebFrame::focus 13010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 13020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns true if this frame has keyboard input focus; otherwise, returns false. 13040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 13050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochbool QWebFrame::hasFocus() const 13060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1307231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebCore::Frame* ff = d->frame->page()->focusController()->focusedFrame(); 1308231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return ff && QWebFramePrivate::kit(ff) == this; 13090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 13100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 13120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 13130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Gives keyboard input focus to this frame. 13150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 13160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid QWebFrame::setFocus() 13170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 13180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebFramePrivate::core(this)->page()->focusController()->setFocusedFrame(QWebFramePrivate::core(this)); 13190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 13200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 13228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the position of the frame relative to it's parent frame. 13238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 13248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQPoint QWebFrame::pos() const 13258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 13268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d->frame->view()) 13278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QPoint(); 13288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 13292fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return d->frame->view()->frameRect().location(); 13308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 13318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 13328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 13338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Return the geometry of the frame relative to it's parent frame. 13348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 13358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQRect QWebFrame::geometry() const 13368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 13378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d->frame->view()) 13388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QRect(); 13398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->frame->view()->frameRect(); 13408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 13418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 13428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 13438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \property QWebFrame::contentsSize 13448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief the size of the contents in this frame 1345635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 13460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \sa contentsSizeChanged() 13478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 13488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQSize QWebFrame::contentsSize() const 13498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 13508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FrameView *view = d->frame->view(); 13518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!view) 13528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QSize(); 13538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QSize(view->contentsWidth(), view->contentsHeight()); 13548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 13558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 13568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 13570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 13580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns the document element of this frame. 13600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch The document element provides access to the entire structured 13620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch content of the frame. 13630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 13640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQWebElement QWebFrame::documentElement() const 13650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 13660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebCore::Document *doc = d->frame->document(); 13670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!doc) 13680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QWebElement(); 13690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QWebElement(doc->documentElement()); 13700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 13710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 13730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 13740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns a new list of elements matching the given CSS selector \a selectorQuery. 13750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch If there are no matching elements, an empty list is returned. 13760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \l{http://www.w3.org/TR/REC-CSS2/selector.html#q1}{Standard CSS2 selector} syntax is 13780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch used for the query. 13790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \sa QWebElement::findAll() 13810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 1382cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve BlockQWebElementCollection QWebFrame::findAllElements(const QString &selectorQuery) const 13830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 13840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return documentElement().findAll(selectorQuery); 13850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 13860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 13880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 13890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns the first element in the frame's document that matches the 13900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch given CSS selector \a selectorQuery. If there is no matching element, a 13910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch null element is returned. 13920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \l{http://www.w3.org/TR/REC-CSS2/selector.html#q1}{Standard CSS2 selector} syntax is 13940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch used for the query. 13950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \sa QWebElement::findFirst() 13970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 13980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQWebElement QWebFrame::findFirstElement(const QString &selectorQuery) const 13990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 14000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return documentElement().findFirst(selectorQuery); 14010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 14020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 14048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Performs a hit test on the frame contents at the given position \a pos and returns the hit test result. 14058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 14068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHitTestResult QWebFrame::hitTestContent(const QPoint &pos) const 14078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 14088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d->frame->view() || !d->frame->contentRenderer()) 14098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QWebHitTestResult(); 14108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1411563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark HitTestResult result = d->frame->eventHandler()->hitTestResultAtPoint(d->frame->view()->windowToContents(pos), /*allowShadowContent*/ false, /*ignoreClipping*/ true); 14120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (result.scrollbar()) 14140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QWebHitTestResult(); 14150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QWebHitTestResult(new QWebHitTestResultPrivate(result)); 14178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 14188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! \reimp 14208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 14218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool QWebFrame::event(QEvent *e) 14228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 14238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QObject::event(e); 14248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 14258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef QT_NO_PRINTER 14278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 14288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Prints the frame to the given \a printer. 14298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa render() 14318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 14328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebFrame::print(QPrinter *printer) const 14338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1434563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark QPainter painter; 1435563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (!painter.begin(printer)) 1436563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return; 1437563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 143806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen const qreal zoomFactorX = (qreal)printer->logicalDpiX() / qt_defaultDpi(); 143906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen const qreal zoomFactorY = (qreal)printer->logicalDpiY() / qt_defaultDpi(); 14408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PrintContext printContext(d->frame); 14428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project float pageHeight = 0; 14438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QRect qprinterRect = printer->pageRect(); 14458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project IntRect pageRect(0, 0, 14478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int(qprinterRect.width() / zoomFactorX), 14488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int(qprinterRect.height() / zoomFactorY)); 14498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printContext.begin(pageRect.width()); 14518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch printContext.computePageRects(pageRect, /* headerHeight */ 0, /* footerHeight */ 0, /* userScaleFactor */ 1.0, pageHeight); 14538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int docCopies; 14558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int pageCopies; 14560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (printer->collateCopies()) { 14578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project docCopies = 1; 14588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pageCopies = printer->numCopies(); 14598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else { 14608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project docCopies = printer->numCopies(); 14618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pageCopies = 1; 14628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 14638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int fromPage = printer->fromPage(); 14658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int toPage = printer->toPage(); 14668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool ascending = true; 14678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (fromPage == 0 && toPage == 0) { 14698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project fromPage = 1; 14708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project toPage = printContext.pageCount(); 14718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 14728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // paranoia check 14738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project fromPage = qMax(1, fromPage); 147465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch toPage = qMin(static_cast<int>(printContext.pageCount()), toPage); 1475d0825bca7fe65beaee391d30da42e937db621564Steve Block if (toPage < fromPage) { 1476d0825bca7fe65beaee391d30da42e937db621564Steve Block // if the user entered a page range outside the actual number 1477d0825bca7fe65beaee391d30da42e937db621564Steve Block // of printable pages, just return 1478d0825bca7fe65beaee391d30da42e937db621564Steve Block return; 1479d0825bca7fe65beaee391d30da42e937db621564Steve Block } 14808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (printer->pageOrder() == QPrinter::LastPageFirst) { 14828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int tmp = fromPage; 14838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project fromPage = toPage; 14848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project toPage = tmp; 14858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ascending = false; 14868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 14878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project painter.scale(zoomFactorX, zoomFactorY); 14898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project GraphicsContext ctx(&painter); 14908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (int i = 0; i < docCopies; ++i) { 14928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int page = fromPage; 14938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project while (true) { 14948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (int j = 0; j < pageCopies; ++j) { 14958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (printer->printerState() == QPrinter::Aborted 14968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project || printer->printerState() == QPrinter::Error) { 14978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printContext.end(); 14988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 14998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 15008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printContext.spoolPage(ctx, page - 1, pageRect.width()); 15018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (j < pageCopies - 1) 15028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printer->newPage(); 15038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 15048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (page == toPage) 15068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 15078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (ascending) 15098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ++page; 15108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else 15118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project --page; 15128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printer->newPage(); 15148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 15158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( i < docCopies - 1) 15178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printer->newPage(); 15188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 15198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printContext.end(); 15218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 15228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // QT_NO_PRINTER 15238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1525563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark Evaluates the JavaScript defined by \a scriptSource using this frame as context 1526563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark and returns the result of the last executed statement. 15278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa addToJavaScriptWindowObject(), javaScriptWindowObjectCleared() 15298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 15308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQVariant QWebFrame::evaluateJavaScript(const QString& scriptSource) 15318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 15328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ScriptController *proxy = d->frame->script(); 15338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QVariant rc; 15348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (proxy) { 153568513a70bcd92384395513322f1b801e7bf9c729Steve Block#if USE(JSC) 15360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch int distance = 0; 153768513a70bcd92384395513322f1b801e7bf9c729Steve Block JSC::JSValue v = d->frame->script()->executeScript(ScriptSourceCode(scriptSource)).jsValue(); 153868513a70bcd92384395513322f1b801e7bf9c729Steve Block 1539cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block rc = JSC::Bindings::convertValueToQVariant(proxy->globalObject(mainThreadNormalWorld())->globalExec(), v, QMetaType::Void, &distance); 154068513a70bcd92384395513322f1b801e7bf9c729Steve Block#elif USE(V8) 154168513a70bcd92384395513322f1b801e7bf9c729Steve Block QScriptEngine* engine = d->frame->script()->qtScriptEngine(); 154268513a70bcd92384395513322f1b801e7bf9c729Steve Block if (!engine) 154368513a70bcd92384395513322f1b801e7bf9c729Steve Block return rc; 154468513a70bcd92384395513322f1b801e7bf9c729Steve Block rc = engine->evaluate(scriptSource).toVariant(); 154568513a70bcd92384395513322f1b801e7bf9c729Steve Block#endif 15468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 15478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return rc; 15488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 15498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1550635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*! 1551635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \since 4.5 1552635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1553635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Returns the frame's security origin. 1554635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 1555635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectQWebSecurityOrigin QWebFrame::securityOrigin() const 1556635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 1557635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project QWebFrame* that = const_cast<QWebFrame*>(this); 1558635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project QWebSecurityOriginPrivate* priv = new QWebSecurityOriginPrivate(QWebFramePrivate::core(that)->document()->securityOrigin()); 1559635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return QWebSecurityOrigin(priv); 1560635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 1561635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1562e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockWebCore::Frame* QWebFramePrivate::core(const QWebFrame* webFrame) 15638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 15648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return webFrame->d->frame; 15658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 15668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1567e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockQWebFrame* QWebFramePrivate::kit(const WebCore::Frame* coreFrame) 15688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 156968513a70bcd92384395513322f1b801e7bf9c729Steve Block return qobject_cast<QWebFrame*>(coreFrame->loader()->networkingContext()->originatingObject()); 15708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 15718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 15748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \fn void QWebFrame::javaScriptWindowObjectCleared() 15758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This signal is emitted whenever the global window object of the JavaScript 15778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project environment is cleared, e.g., before starting a new load. 15788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project If you intend to add QObjects to a QWebFrame using 15808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addToJavaScriptWindowObject(), you should add them in a slot connected 15818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project to this signal. This ensures that your objects remain accessible when 15828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project loading new URLs. 15838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 15848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 15868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \fn void QWebFrame::provisionalLoad() 15878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \internal 15888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 15898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 15918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \fn void QWebFrame::titleChanged(const QString &title) 15928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This signal is emitted whenever the title of the frame changes. 15948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The \a title string specifies the new title. 15958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa title() 15978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 15988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 16008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \fn void QWebFrame::urlChanged(const QUrl &url) 16018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This signal is emitted with the URL of the frame when the frame's title is 16038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project received. The new URL is specified by \a url. 16048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa url() 16068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 16078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 16098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \fn void QWebFrame::initialLayoutCompleted() 16108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This signal is emitted when the frame is laid out the first time. 16128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This is the first time you will see contents displayed on the frame. 16138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \note A frame can be laid out multiple times. 16158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 16168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 16188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \fn void QWebFrame::iconChanged() 16198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This signal is emitted when the icon ("favicon") associated with the frame 16218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project has been loaded. 16228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa icon() 16248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 16258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1627635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \fn void QWebFrame::contentsSizeChanged(const QSize &size) 1628635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \since 4.6 16298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch This signal is emitted when the frame's contents size changes 16310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch to \a size. 16328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1633635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \sa contentsSize() 16348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 16358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 16370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \fn void QWebFrame::loadStarted() 16380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 16390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch This signal is emitted when a new load of this frame is started. 16410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \sa loadFinished() 16430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 16440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 16460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \fn void QWebFrame::loadFinished(bool ok) 16470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 16480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch This signal is emitted when a load of this frame is finished. 16500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \a ok will indicate whether the load was successful or any error occurred. 16510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \sa loadStarted() 16530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 16540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 1656dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block \fn void QWebFrame::pageChanged() 1657dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block \since 4.7 1658dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 1659dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block This signal is emitted when this frame has been moved to a different QWebPage. 1660dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 1661dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block \sa page() 1662dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block*/ 1663dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 1664dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block/*! 16658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \class QWebHitTestResult 16668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.4 16678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief The QWebHitTestResult class provides information about the web 16688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project page content after a hit test. 16698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1670231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block \inmodule QtWebKit 1671231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 16728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebHitTestResult is returned by QWebFrame::hitTestContent() to provide 16738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project information about the content of the web page at the specified position. 16748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 16758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 16778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \internal 16788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 16798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHitTestResult::QWebHitTestResult(QWebHitTestResultPrivate *priv) 16808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : d(priv) 16818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 16828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 16838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHitTestResultPrivate::QWebHitTestResultPrivate(const WebCore::HitTestResult &hitTest) 16858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : isContentEditable(false) 16868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , isContentSelected(false) 1687635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project , isScrollBar(false) 16888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 16898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!hitTest.innerNode()) 16908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 16918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pos = hitTest.point(); 16920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebCore::TextDirection dir; 16930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch title = hitTest.title(dir); 16948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project linkText = hitTest.textContent(); 16958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project linkUrl = hitTest.absoluteLinkURL(); 16968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project linkTitle = hitTest.titleDisplayString(); 16978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project alternateText = hitTest.altDisplayString(); 16988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project imageUrl = hitTest.absoluteImageURL(); 1699635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project innerNode = hitTest.innerNode(); 17008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project innerNonSharedNode = hitTest.innerNonSharedNode(); 1701cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block boundingRect = innerNonSharedNode ? innerNonSharedNode->renderer()->absoluteBoundingBoxRect(true) : IntRect(); 17028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::Image *img = hitTest.image(); 17038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (img) { 17048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QPixmap *pix = img->nativeImageForCurrentFrame(); 17058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (pix) 17068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pixmap = *pix; 17078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 17088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::Frame *wframe = hitTest.targetFrame(); 17098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (wframe) 17108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project linkTargetFrame = QWebFramePrivate::kit(wframe); 17110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch linkElement = QWebElement(hitTest.URLElement()); 17128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project isContentEditable = hitTest.isContentEditable(); 17148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project isContentSelected = hitTest.isSelected(); 1715635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project isScrollBar = hitTest.scrollbar(); 17168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (innerNonSharedNode && innerNonSharedNode->document() 17188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project && innerNonSharedNode->document()->frame()) 17198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project frame = QWebFramePrivate::kit(innerNonSharedNode->document()->frame()); 1720635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 17210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch enclosingBlock = QWebElement(WebCore::enclosingBlock(innerNode.get())); 17228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 17238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 17258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Constructs a null hit test result. 17268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 17278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHitTestResult::QWebHitTestResult() 17288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : d(0) 17298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 17308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 17318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 17338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Constructs a hit test result from \a other. 17348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 17358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHitTestResult::QWebHitTestResult(const QWebHitTestResult &other) 17368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : d(0) 17378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 17388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (other.d) 17398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d = new QWebHitTestResultPrivate(*other.d); 17408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 17418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 17438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Assigns the \a other hit test result to this. 17448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 17458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHitTestResult &QWebHitTestResult::operator=(const QWebHitTestResult &other) 17468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 17478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this != &other) { 17488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (other.d) { 17498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 17508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d = new QWebHitTestResultPrivate; 17518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *d = *other.d; 17528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else { 17538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete d; 17548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d = 0; 17558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 17568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 17578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return *this; 17588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 17598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 17618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Destructor. 17628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 17638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHitTestResult::~QWebHitTestResult() 17648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 17658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete d; 17668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 17678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 17698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns true if the hit test result is null; otherwise returns false. 17708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 17718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool QWebHitTestResult::isNull() const 17728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 17738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return !d; 17748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 17758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 17778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the position where the hit test occured. 17788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 17798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQPoint QWebHitTestResult::pos() const 17808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 17818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 17828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QPoint(); 17838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->pos; 17848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 17858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 17878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.5 1788635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Returns the bounding rect of the element. 17898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 17908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQRect QWebHitTestResult::boundingRect() const 17918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 17928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 17938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QRect(); 17948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->boundingRect; 17958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 17968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1798635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project \since 4.6 17990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns the block element that encloses the element hit. 18000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 18010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch A block element is an element that is rendered using the 18020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch CSS "block" style. This includes for example text 18030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch paragraphs. 1804635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 18050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQWebElement QWebHitTestResult::enclosingBlockElement() const 1806635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 1807635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project if (!d) 18080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QWebElement(); 1809635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return d->enclosingBlock; 1810635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 1811635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1812635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*! 18138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the title of the nearest enclosing HTML element. 18148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 18158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebHitTestResult::title() const 18168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 18178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 18188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QString(); 18198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->title; 18208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 18218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 18228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 18238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the text of the link. 18248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 18258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebHitTestResult::linkText() const 18268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 18278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 18288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QString(); 18298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->linkText; 18308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 18318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 18328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 18338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the url to which the link points to. 18348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 18358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQUrl QWebHitTestResult::linkUrl() const 18368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 18378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 18388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QUrl(); 18398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->linkUrl; 18408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 18418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 18428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 18438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the title of the link. 18448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 18458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQUrl QWebHitTestResult::linkTitle() const 18468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 18478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 18488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QUrl(); 18498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->linkTitle; 18508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 18518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 18528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1853563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark \since 4.6 18540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns the element that represents the link. 1855563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 18560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \sa linkTargetFrame() 1857563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark*/ 18580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQWebElement QWebHitTestResult::linkElement() const 1859563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 1860563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (!d) 18610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QWebElement(); 18620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return d->linkElement; 1863563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 1864563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 1865563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark/*! 18668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the frame that will load the link if it is activated. 1867563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 18680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \sa linkElement() 18698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 18708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebFrame *QWebHitTestResult::linkTargetFrame() const 18718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 18728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 18738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 18748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->linkTargetFrame; 18758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 18768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 18778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 18788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the alternate text of the element. This corresponds to the HTML alt attribute. 18798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 18808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebHitTestResult::alternateText() const 18818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 18828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 18838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QString(); 18848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->alternateText; 18858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 18868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 18878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 18888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the url of the image. 18898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 18908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQUrl QWebHitTestResult::imageUrl() const 18918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 18928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 18938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QUrl(); 18948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->imageUrl; 18958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 18968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 18978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 18988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns a QPixmap containing the image. A null pixmap is returned if the 18998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project element being tested is not an image. 19008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 19018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQPixmap QWebHitTestResult::pixmap() const 19028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 19038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 19048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QPixmap(); 19058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->pixmap; 19068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 19078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 19088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 19098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns true if the content is editable by the user; otherwise returns false. 19108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 19118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool QWebHitTestResult::isContentEditable() const 19128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 19138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 19148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 19158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->isContentEditable; 19168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 19178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 19188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 19198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns true if the content tested is part of the selection; otherwise returns false. 19208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 19218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool QWebHitTestResult::isContentSelected() const 19228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 19238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!d) 19248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 19258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->isContentSelected; 19268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 19278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 19288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 19290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 19300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns the underlying DOM element as QWebElement. 19318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 19320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQWebElement QWebHitTestResult::element() const 19338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 19340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!d || !d->innerNonSharedNode || !d->innerNonSharedNode->isElementNode()) 19350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QWebElement(); 19360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 19370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return QWebElement(static_cast<WebCore::Element*>(d->innerNonSharedNode.get())); 19388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 19398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1940635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/*! 19410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Returns the frame the hit test was executed in. 1942635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 19430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQWebFrame *QWebHitTestResult::frame() const 1944635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 1945635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project if (!d) 19460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return 0; 19470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return d->frame; 1948635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 19492daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 19502daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include "moc_qwebframe.cpp" 1951