diff options
30 files changed, 718 insertions, 229 deletions
diff --git a/src/3rdparty/webkit/.tag b/src/3rdparty/webkit/.tag index 14af7e9..9d754a4 100644 --- a/src/3rdparty/webkit/.tag +++ b/src/3rdparty/webkit/.tag @@ -1 +1 @@ -5cf023650a8da206a8cf3130e9d4820b95e1bc7c +3d774b9df1f963452b1cfe34f9fafad0d399372a diff --git a/src/3rdparty/webkit/ChangeLog b/src/3rdparty/webkit/ChangeLog index 70eff7d..a0cf2d0 100644 --- a/src/3rdparty/webkit/ChangeLog +++ b/src/3rdparty/webkit/ChangeLog @@ -1,3 +1,12 @@ +2010-05-12 Laszlo Gombos <laszlo.1.gombos@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Detect debug mode consistently + https://bugs.webkit.org/show_bug.cgi?id=38863 + + * WebKit.pri: + 2010-04-09 Simon Hausmann <simon.hausmann@nokia.com> Unreviewed crash fix. diff --git a/src/3rdparty/webkit/JavaScriptCore/ChangeLog b/src/3rdparty/webkit/JavaScriptCore/ChangeLog index 1610036..a3e6586 100644 --- a/src/3rdparty/webkit/JavaScriptCore/ChangeLog +++ b/src/3rdparty/webkit/JavaScriptCore/ChangeLog @@ -1,3 +1,15 @@ +2010-05-12 Laszlo Gombos <laszlo.1.gombos@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Detect debug mode consistently + https://bugs.webkit.org/show_bug.cgi?id=38863 + + * JavaScriptCore.pri: + * JavaScriptCore.pro: + * jsc.pro: + * qt/api/QtScript.pro: + 2010-05-10 Laszlo Gombos <laszlo.1.gombos@nokia.com> Reviewed by Darin Adler. diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri index b7f6665..b3f74a9 100644 --- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri +++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri @@ -1,6 +1,6 @@ # JavaScriptCore - Qt4 build info VPATH += $$PWD -CONFIG(debug, debug|release) { +!CONFIG(release, debug|release) { # Output in JavaScriptCore/<config> JAVASCRIPTCORE_DESTDIR = debug # Use a config-specific target to prevent parallel builds file clashes on Mac diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro index 8e086b3..22fcc91 100644 --- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro +++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro @@ -21,7 +21,7 @@ CONFIG(QTDIR_build) { # This line was extracted from qbase.pri instead of including the whole file win32|mac:!macx-xcode:CONFIG += debug_and_release } else { - CONFIG(debug, debug|release) { + !CONFIG(release, debug|release) { OBJECTS_DIR = obj/debug } else { # Release OBJECTS_DIR = obj/release diff --git a/src/3rdparty/webkit/JavaScriptCore/qt/api/QtScript.pro b/src/3rdparty/webkit/JavaScriptCore/qt/api/QtScript.pro index 88629c7..3c2691e 100644 --- a/src/3rdparty/webkit/JavaScriptCore/qt/api/QtScript.pro +++ b/src/3rdparty/webkit/JavaScriptCore/qt/api/QtScript.pro @@ -7,7 +7,7 @@ INCLUDEPATH += $$PWD CONFIG += building-libs isEmpty(JSC_GENERATED_SOURCES_DIR):JSC_GENERATED_SOURCES_DIR = ../../generated -CONFIG(debug, debug|release) { +!CONFIG(release, debug|release) { OBJECTS_DIR = obj/debug } else { # Release OBJECTS_DIR = obj/release diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION index b8bac54..a440c03 100644 --- a/src/3rdparty/webkit/VERSION +++ b/src/3rdparty/webkit/VERSION @@ -4,4 +4,4 @@ This is a snapshot of the Qt port of WebKit from and has the sha1 checksum - 57d10d5c05e59bbf7de8189ff47dd18d1be996dc + 5cf023650a8da206a8cf3130e9d4820b95e1bc7c diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog index 76b4eff..93d00e4 100644 --- a/src/3rdparty/webkit/WebCore/ChangeLog +++ b/src/3rdparty/webkit/WebCore/ChangeLog @@ -1,3 +1,46 @@ +2010-05-12 Laszlo Gombos <laszlo.1.gombos@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Detect debug mode consistently + https://bugs.webkit.org/show_bug.cgi?id=38863 + + No new tests as there is no new functionality. + + * WebCore.pro: + +2010-05-14 Andreas Kling <andreas.kling@nokia.com> + + Reviewed by Darin Adler. + + Ignore invalid values for various CanvasRenderingContext2D properties + (lineWidth, miterLimit, shadowOffsetX, shadowOffsetY and shadowBlur) + + https://bugs.webkit.org/show_bug.cgi?id=38841 + + Test: fast/canvas/canvas-invalid-values.html + + * html/canvas/CanvasRenderingContext2D.cpp: + (WebCore::CanvasRenderingContext2D::setLineWidth): + (WebCore::CanvasRenderingContext2D::setMiterLimit): + (WebCore::CanvasRenderingContext2D::setShadowOffsetX): + (WebCore::CanvasRenderingContext2D::setShadowOffsetY): + (WebCore::CanvasRenderingContext2D::setShadowBlur): + +2010-05-12 Noam Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] GraphicsLayer: depth-test causes flicker in certain situations + + This patch removes the simplistic 2D depth test as it leads to flickering side effects. + https://bugs.webkit.org/show_bug.cgi?id=38370 + + Tested by http://webkit.org/blog-files/3d-transforms/morphing-cubes.html + + * platform/graphics/qt/GraphicsLayerQt.cpp: + (WebCore::GraphicsLayerQtImpl::updateTransform): + 2010-04-29 James Robinson <jamesr@chromium.org> Reviewed by Simon Fraser. diff --git a/src/3rdparty/webkit/WebCore/WebCore.pro b/src/3rdparty/webkit/WebCore/WebCore.pro index 254d17b..689c5ff 100644 --- a/src/3rdparty/webkit/WebCore/WebCore.pro +++ b/src/3rdparty/webkit/WebCore/WebCore.pro @@ -59,7 +59,7 @@ CONFIG(standalone_package) { isEmpty(WC_GENERATED_SOURCES_DIR):WC_GENERATED_SOURCES_DIR = generated isEmpty(JSC_GENERATED_SOURCES_DIR):JSC_GENERATED_SOURCES_DIR = ../JavaScriptCore/generated - CONFIG(debug, debug|release) { + !CONFIG(release, debug|release) { OBJECTS_DIR = obj/debug } else { # Release OBJECTS_DIR = obj/release diff --git a/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.cpp b/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.cpp index 8add19c..823ab59 100644 --- a/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.cpp +++ b/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.cpp @@ -209,7 +209,7 @@ float CanvasRenderingContext2D::lineWidth() const void CanvasRenderingContext2D::setLineWidth(float width) { - if (!(width > 0)) + if (!(isfinite(width) && width > 0)) return; state().m_lineWidth = width; GraphicsContext* c = drawingContext(); @@ -259,7 +259,7 @@ float CanvasRenderingContext2D::miterLimit() const void CanvasRenderingContext2D::setMiterLimit(float limit) { - if (!(limit > 0)) + if (!(isfinite(limit) && limit > 0)) return; state().m_miterLimit = limit; GraphicsContext* c = drawingContext(); @@ -275,6 +275,8 @@ float CanvasRenderingContext2D::shadowOffsetX() const void CanvasRenderingContext2D::setShadowOffsetX(float x) { + if (!isfinite(x)) + return; state().m_shadowOffset.setWidth(x); applyShadow(); } @@ -286,6 +288,8 @@ float CanvasRenderingContext2D::shadowOffsetY() const void CanvasRenderingContext2D::setShadowOffsetY(float y) { + if (!isfinite(y)) + return; state().m_shadowOffset.setHeight(y); applyShadow(); } @@ -297,6 +301,8 @@ float CanvasRenderingContext2D::shadowBlur() const void CanvasRenderingContext2D::setShadowBlur(float blur) { + if (!(isfinite(blur) && blur >= 0)) + return; state().m_shadowBlur = blur; applyShadow(); } diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp index 1c4c275..d9394e1 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp @@ -357,14 +357,6 @@ void GraphicsLayerQtImpl::updateTransform() return; } - // Simplistic depth test - we stack the item behind its parent if its computed z is lower than the parent's computed z at the item's center point. - if (parent) { - const QPointF centerPointMappedToRoot = rootLayer()->mapFromItem(this, m_size.width() / 2, m_size.height() / 2); - setFlag(ItemStacksBehindParent, - m_transformRelativeToRootLayer.mapPoint(FloatPoint3D(centerPointMappedToRoot.x(), centerPointMappedToRoot.y(), 0)).z() < - parent->m_transformRelativeToRootLayer.mapPoint(FloatPoint3D(centerPointMappedToRoot.x(), centerPointMappedToRoot.y(), 0)).z()); - } - // The item is front-facing or backface-visibility is on. setVisible(true); diff --git a/src/3rdparty/webkit/WebKit.pri b/src/3rdparty/webkit/WebKit.pri index e737039..a3ccd9d 100644 --- a/src/3rdparty/webkit/WebKit.pri +++ b/src/3rdparty/webkit/WebKit.pri @@ -22,7 +22,7 @@ building-libs { QMAKE_FRAMEWORKPATH = $$OUTPUT_DIR/lib $$QMAKE_FRAMEWORKPATH } else { win32-*|wince* { - CONFIG(debug, debug|release):build_pass: QTWEBKITLIBNAME = $${QTWEBKITLIBNAME}d + !CONFIG(release, debug|release):build_pass: QTWEBKITLIBNAME = $${QTWEBKITLIBNAME}d QTWEBKITLIBNAME = $${QTWEBKITLIBNAME}$${QT_MAJOR_VERSION} win32-g++: LIBS += -l$$QTWEBKITLIBNAME else: LIBS += $${QTWEBKITLIBNAME}.lib diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp index 4e8fd30..ba039c7 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp @@ -39,8 +39,10 @@ using namespace WebCore; access on a local computer through JavaScript. QWebDatabase is the C++ interface to these databases. - To get access to all databases defined by a security origin, use QWebSecurityOrigin::databases(). - Each database has an internal name(), as well as a user-friendly name, provided by displayName(). + Databases are grouped together in security origins. To get access to all databases defined by + a security origin, use QWebSecurityOrigin::databases(). Each database has an internal name(), + as well as a user-friendly name, provided by displayName(). These names are specified when + creating the database in the JavaScript code. WebKit uses SQLite to create and access the local SQL databases. The location of the database file in the local file system is returned by fileName(). You can access the database directly @@ -49,7 +51,7 @@ using namespace WebCore; For each database the web site can define an expectedSize(). The current size of the database in bytes is returned by size(). - For more information refer to the \l{http://dev.w3.org/html5/webdatabase/}{HTML 5 Draft Standard}. + For more information refer to the \l{http://dev.w3.org/html5/webdatabase/}{HTML5 Web SQL Database Draft Standard}. \sa QWebSecurityOrigin */ @@ -80,7 +82,7 @@ QString QWebDatabase::name() const } /*! - Returns the name of the database as seen by the user. + Returns the name of the database in a format that is suitable for display to the user. */ QString QWebDatabase::displayName() const { diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp index 955206d..69146a2 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp @@ -84,13 +84,27 @@ public: \snippet webkitsnippets/webelement/main.cpp Traversing with QWebElement + Individual elements can be inspected or changed using methods such as attribute() + or setAttribute(). For examle, to capture the user's input in a text field for later + use (auto-completion), a browser could do something like this: + + \snippet webkitsnippets/webelement/main.cpp autocomplete1 + + When the same page is later revisited, the browser can fill in the text field automatically + by modifying the value attribute of the input element: + + \snippet webkitsnippets/webelement/main.cpp autocomplete2 + + Another use case is to emulate a click event on an element. The following + code snippet demonstrates how to call the JavaScript DOM method click() of + a submit button: + + \snippet webkitsnippets/webelement/main.cpp Calling a DOM element method + The underlying content of QWebElement is explicitly shared. Creating a copy of a QWebElement does not create a copy of the content. Instead, both instances point to the same element. - The element's attributes can be read using attribute() and modified with - setAttribute(). - The contents of child elements can be converted to plain text with toPlainText(); to XHTML using toInnerXml(). To include the element's tag in the output, use toOuterXml(). diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp index 394ea17..44cc3b5 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp @@ -552,8 +552,10 @@ void QWebFramePrivate::renderRelativeCoords(GraphicsContext* context, QWebFrame: can connect to the web page's \l{QWebPage::}{frameCreated()} signal to be notified when a new frame is created. - The hitTestContent() function can be used to programmatically examine the - contents of a frame. + There are multiple ways to programmatically examine the contents of a frame. + The hitTestContent() function can be used to find elements by coordinate. + For access to the underlying DOM tree, there is documentElement(), + findAllElements() and findFirstElement(). A QWebFrame can be printed onto a QPrinter using the print() function. This function is marked as a slot and can be conveniently connected to @@ -781,6 +783,10 @@ static inline QUrl ensureAbsoluteUrl(const QUrl &url) \property QWebFrame::url \brief the url of the frame currently viewed + Setting this property clears the view and loads the URL. + + By default, this property contains an empty, invalid URL. + \sa urlChanged() */ diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebhistoryinterface.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebhistoryinterface.cpp index 80567d1..61cf5af 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebhistoryinterface.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebhistoryinterface.cpp @@ -41,7 +41,7 @@ static void gCleanupInterface() /*! Sets a new default interface, \a defaultInterface, that will be used by all of WebKit - for managing history. + to keep track of visited links. If an interface without a parent has already been set, the old interface will be deleted. When the application exists QWebHistoryInterface will automatically delete the @@ -68,8 +68,9 @@ void QWebHistoryInterface::setDefaultInterface(QWebHistoryInterface* defaultInte } /*! - Returns the default interface that will be used by WebKit. If no - default interface has been set, QtWebkit will not track history. + Returns the default interface that will be used by WebKit. If no default interface has been set, + Webkit will not keep track of visited links and a null pointer will be returned. + \sa setDefaultInterface */ QWebHistoryInterface* QWebHistoryInterface::defaultInterface() { @@ -84,11 +85,15 @@ QWebHistoryInterface* QWebHistoryInterface::defaultInterface() \inmodule QtWebKit The QWebHistoryInterface is an interface that can be used to - implement link history. It contains two pure virtual methods that - are called by the WebKit engine. addHistoryEntry() is used to add - pages that have been visited to the interface, while - historyContains() is used to query whether this page has been - visited by the user. + keep track of visited links. It contains two pure virtual methods that + are called by the WebKit engine: addHistoryEntry() is used to add + urls that have been visited to the interface, while + historyContains() is used to query whether the given url has been + visited by the user. By default the QWebHistoryInterface is not set, so WebKit does not keep + track of visited links. + + \note The history tracked by QWebHistoryInterface is not specific to an instance of QWebPage + but applies to all pages. */ /*! @@ -100,7 +105,7 @@ QWebHistoryInterface::QWebHistoryInterface(QObject* parent) } /*! - Destructor. If this is currently the default interface it will be unset. + Destroys the interface. If this is currently the default interface it will be unset. */ QWebHistoryInterface::~QWebHistoryInterface() { diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebinspector.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebinspector.cpp index c0e5277..802ea98 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebinspector.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebinspector.cpp @@ -31,17 +31,23 @@ /*! \class QWebInspector \since 4.6 + \inmodule QtWebKit \brief The QWebInspector class allows the placement and control of a QWebPage's inspector. - The inspector allows you to see a page current hierarchy and loading - statistics. + The inspector can display a page's hierarchy, its loading statistics and + the current state of its individual elements. It is mostly used by web + developers. - The QWebPage to be inspected is determined with the setPage() method. + The QWebPage to be inspected must be specified using the setPage() method. A typical use of QWebInspector follows: \snippet webkitsnippets/qtwebkit_qwebinspector_snippet.cpp 0 + A QWebInspector can be made visible either programmatically using + setVisible(), or by the user through the attached QWebPage's context + menu. + \note A QWebInspector will display a blank widget if either: \list \o page() is null @@ -61,17 +67,16 @@ \section1 Inspector configuration persistence The inspector allows the user to configure some options through its - interface (e.g. the resource tracking "Always enable" option). - These settings are persisted automatically by QtWebKit using QSettings. - - However since the QSettings object is instantiated using the empty - constructor, QCoreApplication::setOrganizationName() and - QCoreApplication::setApplicationName() must be called within your - application to enable the persistence of these options. + user interface (e.g. the resource tracking "Always enable" option). + These settings will be persisted automatically by QtWebKit only if + your application previously called QCoreApplication::setOrganizationName() + and QCoreApplication::setApplicationName(). + See QSettings's default constructor documentation for an explanation + of why this is necessary. */ /*! - Constructs an empty QWebInspector with parent \a parent. + Constructs an unbound QWebInspector with \a parent as its parent. */ QWebInspector::QWebInspector(QWidget* parent) : QWidget(parent) @@ -89,16 +94,16 @@ QWebInspector::~QWebInspector() } /*! - Sets the QWebPage to be inspected. - - There can only be one QWebInspector associated with a QWebPage - and vices versa. + Bind this inspector to the QWebPage to be inspected. - Calling with \a page as null will break the current association, if any. - - If \a page is already associated to another QWebInspector, the association - will be replaced and the previous QWebInspector will have no page - associated. + \bold {Notes:} + \list + \o There can only be one QWebInspector associated with a QWebPage + and vice versa. + \o Calling this method with a null \a page will break the current association, if any. + \o If \a page is already associated to another QWebInspector, the association + will be replaced and the previous QWebInspector will become unbound + \endlist \sa page() */ diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebkitversion.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebkitversion.cpp index 062839f..181913b 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebkitversion.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebkitversion.cpp @@ -22,11 +22,21 @@ #include <WebKitVersion.h> /*! - + \relates QWebPage + \since 4.6 Returns the version number of WebKit at run-time as a string (for - example, "531.3"). This is the version of WebKit the application - was compiled against. + example, "531.3"). + + This version is commonly used in WebKit based browsers as part + of the user agent string. Web servers and JavaScript might use + it to identify the presence of certain WebKit engine features + and behaviour. + The evolution of this version is bound to the releases of Apple's + Safari browser. For a version specific to the QtWebKit library, + see QTWEBKIT_VERSION + + \sa QWebPage::userAgentForUrl() */ QString qWebKitVersion() { @@ -34,11 +44,13 @@ QString qWebKitVersion() } /*! - + \relates QWebPage + \since 4.6 Returns the 'major' version number of WebKit at run-time as an integer (for example, 531). This is the version of WebKit the application was compiled against. + \sa qWebKitVersion() */ int qWebKitMajorVersion() { @@ -46,13 +58,57 @@ int qWebKitMajorVersion() } /*! - + \relates QWebPage + \since 4.6 Returns the 'minor' version number of WebKit at run-time as an integer (for example, 3). This is the version of WebKit the application was compiled against. + \sa qWebKitVersion() */ int qWebKitMinorVersion() { return WEBKIT_MINOR_VERSION; } + +/*! + \macro QTWEBKIT_VERSION + \relates QWebPage + + This macro expands a numeric value of the form 0xMMNNPP (MM = + major, NN = minor, PP = patch) that specifies QtWebKit's version + number. For example, if you compile your application against QtWebKit + 2.1.2, the QTWEBKIT_VERSION macro will expand to 0x020102. + + You can use QTWEBKIT_VERSION to use the latest QtWebKit API where + available. + + \sa QT_VERSION +*/ + +/*! + \macro QTWEBKIT_VERSION_STR + \relates QWebPage + + This macro expands to a string that specifies QtWebKit's version number + (for example, "2.1.2"). This is the version against which the + application is compiled. + + \sa QTWEBKIT_VERSION +*/ + +/*! + \macro QTWEBKIT_VERSION_CHECK + \relates QWebPage + + Turns the major, minor and patch numbers of a version into an + integer, 0xMMNNPP (MM = major, NN = minor, PP = patch). This can + be compared with another similarly processed version id, for example + in a preprocessor statement: + + \code + #if QTWEBKIT_VERSION >= QTWEBKIT_VERSION_CHECK(2, 1, 0) + // code to use API new in QtWebKit 2.1.0 + #endif + \endcode +*/ diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp index e9ebce5..c5f508f 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp @@ -1627,7 +1627,7 @@ InspectorController* QWebPagePrivate::inspectorController() /*! \enum QWebPage::FindFlag - This enum describes the options available to QWebPage's findText() function. The options + This enum describes the options available to the findText() function. The options can be OR-ed together from the following list: \value FindBackward Searches backwards instead of forwards. @@ -1648,6 +1648,8 @@ InspectorController* QWebPagePrivate::inspectorController() \value DelegateExternalLinks When activating links that point to documents not stored on the local filesystem or an equivalent - such as the Qt resource system - then linkClicked() is emitted. \value DelegateAllLinks Whenever a link is activated the linkClicked() signal is emitted. + + \sa QWebPage::linkDelegationPolicy */ /*! @@ -1662,6 +1664,8 @@ InspectorController* QWebPagePrivate::inspectorController() \value NavigationTypeReload The user activated the reload action. \value NavigationTypeFormResubmitted An HTML form was submitted a second time. \value NavigationTypeOther A navigation to another document using a method not listed above. + + \sa acceptNavigationRequest() */ /*! @@ -1671,7 +1675,7 @@ InspectorController* QWebPagePrivate::inspectorController() Actions only have an effect when they are applicable. The availability of actions can be be determined by checking \l{QAction::}{isEnabled()} on the - action returned by \l{QWebPage::}{action()}. + action returned by action(). One method of enabling the text editing, cursor movement, and text selection actions is by setting \l contentEditable to true. @@ -1753,6 +1757,8 @@ InspectorController* QWebPagePrivate::inspectorController() /*! \enum QWebPage::WebWindowType + This enum describes the types of window that can be created by the createWindow() function. + \value WebBrowserWindow The window is a regular web browser window. \value WebModalDialog The window acts as modal dialog. */ @@ -1769,11 +1775,13 @@ InspectorController* QWebPagePrivate::inspectorController() to provide functionality like QWebView in a widget-less environment. QWebPage's API is very similar to QWebView, as you are still provided with - common functions like action() (known as \l{QWebView::}{pageAction()} in - QWebView), triggerAction(), findText() and settings(). More QWebView-like - functions can be found in the main frame of QWebPage, obtained via - QWebPage::mainFrame(). For example, the load(), setUrl() and setHtml() - unctions for QWebPage can be accessed using QWebFrame. + common functions like action() (known as + \l{QWebView::pageAction()}{pageAction}() in QWebView), triggerAction(), + findText() and settings(). More QWebView-like functions can be found in the + main frame of QWebPage, obtained via the mainFrame() function. For example, + the \l{QWebFrame::load()}{load}(), \l{QWebFrame::setUrl()}{setUrl}() and + \l{QWebFrame::setHtml()}{setHtml}() functions for QWebPage can be accessed + using QWebFrame. The loadStarted() signal is emitted when the page begins to load.The loadProgress() signal, on the other hand, is emitted whenever an element @@ -1877,7 +1885,8 @@ QWebFrame *QWebPage::currentFrame() const /*! \since 4.6 - Returns the frame at the given point \a pos. + Returns the frame at the given point \a pos, or 0 if there is no frame at + that position. \sa mainFrame(), currentFrame() */ @@ -1996,7 +2005,7 @@ bool QWebPage::javaScriptConfirm(QWebFrame *frame, const QString& msg) result should be written to \a result and true should be returned. If the prompt was not cancelled by the user, the implementation should return true and the result string must not be null. - The default implementation uses QInputDialog::getText. + The default implementation uses QInputDialog::getText(). */ bool QWebPage::javaScriptPrompt(QWebFrame *frame, const QString& msg, const QString& defaultValue, QString* result) { @@ -2210,6 +2219,8 @@ QSize QWebPage::viewportSize() const By default, for a newly-created Web page, this property contains a size with zero width and height. + + \sa QWebFrame::render(), preferredContentsSize */ void QWebPage::setViewportSize(const QSize &size) const { @@ -2238,11 +2249,12 @@ QSize QWebPage::preferredContentsSize() const /*! \property QWebPage::preferredContentsSize \since 4.6 - \brief the size of the fixed layout + \brief the preferred size of the contents - The size affects the layout of the page in the viewport. If set to a fixed size of - 1024x768 for example then webkit will layout the page as if the viewport were that size - rather than something different. + If this property is set to a valid size, it is used to lay out the page. + If it is not set (the default), the viewport size is used instead. + + \sa viewportSize */ void QWebPage::setPreferredContentsSize(const QSize &size) const { @@ -2590,9 +2602,11 @@ QAction *QWebPage::action(WebAction action) const /*! \property QWebPage::modified - \brief whether the page contains unsubmitted form data + \brief whether the page contains unsubmitted form data, or the contents have been changed. By default, this property is false. + + \sa contentsChanged(), contentEditable, undoStack() */ bool QWebPage::isModified() const { @@ -2608,6 +2622,8 @@ bool QWebPage::isModified() const #ifndef QT_NO_UNDOSTACK /*! Returns a pointer to the undo stack used for editable content. + + \sa modified */ QUndoStack *QWebPage::undoStack() const { @@ -2730,7 +2746,7 @@ bool QWebPage::event(QEvent *ev) } /*! - Similar to QWidget::focusNextPrevChild it focuses the next focusable web element + Similar to QWidget::focusNextPrevChild() it focuses the next focusable web element if \a next is true; otherwise the previous element is focused. Returns true if it can find a new focusable element, or false if it can't. @@ -2757,6 +2773,8 @@ bool QWebPage::focusNextPrevChild(bool next) If this property is enabled the contents of the page can be edited by the user through a visible cursor. If disabled (the default) only HTML elements in the web page with their \c{contenteditable} attribute set are editable. + + \sa modified, contentsChanged(), WebAction */ void QWebPage::setContentEditable(bool editable) { @@ -2926,17 +2944,21 @@ void QWebPage::updatePositionDependentActions(const QPoint &pos) as a result of the user clicking on a "file upload" button in a HTML form where multiple file selection is allowed. - \omitvalue ErrorPageExtension (introduced in Qt 4.6) + \value ErrorPageExtension Whether the web page can provide an error page when loading fails. + (introduced in Qt 4.6) + + \sa ChooseMultipleFilesExtensionOption, ChooseMultipleFilesExtensionReturn, ErrorPageExtensionOption, ErrorPageExtensionReturn */ /*! \enum QWebPage::ErrorDomain \since 4.6 - \internal - \value QtNetwork - \value Http - \value WebKit + This enum describes the domain of an ErrorPageExtensionOption object (i.e. the layer in which the error occurred). + + \value QtNetwork The error occurred in the QtNetwork layer; the error code is of type QNetworkReply::NetworkError. + \value Http The error occurred in the HTTP layer; the error code is a HTTP status code (see QNetworkRequest::HttpStatusCodeAttribute). + \value WebKit The error is an internal WebKit error. */ /*! @@ -2946,7 +2968,18 @@ void QWebPage::updatePositionDependentActions(const QPoint &pos) \inmodule QtWebKit - \sa QWebPage::extension() + \sa QWebPage::extension() QWebPage::ExtensionReturn +*/ + + +/*! + \class QWebPage::ExtensionReturn + \since 4.4 + \brief The ExtensionReturn class provides an output result from a QWebPage's extension. + + \inmodule QtWebKit + + \sa QWebPage::extension() QWebPage::ExtensionOption */ /*! @@ -2957,12 +2990,38 @@ void QWebPage::updatePositionDependentActions(const QPoint &pos) \inmodule QtWebKit - The ErrorPageExtensionOption class holds the \a url for which an error occoured as well as + The ErrorPageExtensionOption class holds the \a url for which an error occurred as well as the associated \a frame. The error itself is reported by an error \a domain, the \a error code as well as \a errorString. - \sa QWebPage::ErrorPageExtensionReturn + \sa QWebPage::extension() QWebPage::ErrorPageExtensionReturn +*/ + +/*! + \variable QWebPage::ErrorPageExtensionOption::url + \brief the url for which an error occurred +*/ + +/*! + \variable QWebPage::ErrorPageExtensionOption::frame + \brief the frame associated with the error +*/ + +/*! + \variable QWebPage::ErrorPageExtensionOption::domain + \brief the domain that reported the error +*/ + +/*! + \variable QWebPage::ErrorPageExtensionOption::error + \brief the error code. Interpretation of the value depends on the \a domain + \sa QWebPage::ErrorDomain +*/ + +/*! + \variable QWebPage::ErrorPageExtensionOption::errorString + \brief a string that describes the error */ /*! @@ -2983,7 +3042,7 @@ void QWebPage::updatePositionDependentActions(const QPoint &pos) External objects such as stylesheets or images referenced in the HTML are located relative to \a baseUrl. - \sa QWebPage::ErrorPageExtensionOption, QString::toUtf8() + \sa QWebPage::extension() QWebPage::ErrorPageExtensionOption, QString::toUtf8() */ /*! @@ -2992,6 +3051,29 @@ void QWebPage::updatePositionDependentActions(const QPoint &pos) Constructs a new error page object. */ + +/*! + \variable QWebPage::ErrorPageExtensionReturn::contentType + \brief the error page's content type +*/ + +/*! + \variable QWebPage::ErrorPageExtensionReturn::encoding + \brief the error page encoding +*/ + +/*! + \variable QWebPage::ErrorPageExtensionReturn::baseUrl + \brief the base url + + External objects such as stylesheets or images referenced in the HTML are located relative to this url. +*/ + +/*! + \variable QWebPage::ErrorPageExtensionReturn::content + \brief the HTML content of the error page +*/ + /*! \class QWebPage::ChooseMultipleFilesExtensionOption \since 4.5 @@ -3003,7 +3085,22 @@ void QWebPage::updatePositionDependentActions(const QPoint &pos) The ChooseMultipleFilesExtensionOption class holds the frame originating the request and the suggested filenames which might be provided. - \sa QWebPage::chooseFile(), QWebPage::ChooseMultipleFilesExtensionReturn + \sa QWebPage::extension() QWebPage::chooseFile(), QWebPage::ChooseMultipleFilesExtensionReturn +*/ + +/*! + \variable QWebPage::ChooseMultipleFilesExtensionOption::parentFrame + \brief The frame in which the request originated +*/ + +/*! + \variable QWebPage::ChooseMultipleFilesExtensionOption::suggestedFileNames + \brief The suggested filenames +*/ + +/*! + \variable QWebPage::ChooseMultipleFilesExtensionReturn::fileNames + \brief The selected filenames */ /*! @@ -3017,14 +3114,17 @@ void QWebPage::updatePositionDependentActions(const QPoint &pos) The ChooseMultipleFilesExtensionReturn class holds the filenames selected by the user when the extension is invoked. - \sa QWebPage::ChooseMultipleFilesExtensionOption + \sa QWebPage::extension() QWebPage::ChooseMultipleFilesExtensionOption */ /*! This virtual function can be reimplemented in a QWebPage subclass to provide support for extensions. The \a option argument is provided as input to the extension; the output results can be stored in \a output. - The behavior of this function is determined by \a extension. + The behavior of this function is determined by \a extension. The \a option + and \a output values are typically casted to the corresponding types (for + example, ChooseMultipleFilesExtensionOption and + ChooseMultipleFilesExtensionReturn for ChooseMultipleFilesExtension). You can call supportsExtension() to check if an extension is supported by the page. @@ -3116,6 +3216,8 @@ QWebSettings *QWebPage::settings() const A suggested filename may be provided in \a suggestedFile. The frame originating the request is provided as \a parentFrame. + + \sa ChooseMultipleFilesExtension */ QString QWebPage::chooseFile(QWebFrame *parentFrame, const QString& suggestedFile) { @@ -3369,6 +3471,15 @@ QString QWebPage::userAgentForUrl(const QUrl&) const case QSysInfo::SV_9_4: firstPartTemp += QString::fromLatin1("/9.4"); break; + case QSysInfo::SV_SF_2: + firstPartTemp += QString::fromLatin1("^2"); + break; + case QSysInfo::SV_SF_3: + firstPartTemp += QString::fromLatin1("^3"); + break; + case QSysInfo::SV_SF_4: + firstPartTemp += QString::fromLatin1("^4"); + break; default: firstPartTemp += QString::fromLatin1("/Unknown"); } @@ -3479,7 +3590,7 @@ quint64 QWebPage::totalBytes() const /*! Returns the number of bytes that were received from the network to render the current page. - \sa totalBytes() + \sa totalBytes(), loadProgress() */ quint64 QWebPage::bytesReceived() const { @@ -3511,7 +3622,7 @@ quint64 QWebPage::bytesReceived() const This signal is emitted when a load of the page is finished. \a ok will indicate whether the load was successful or any error occurred. - \sa loadStarted() + \sa loadStarted(), ErrorPageExtension */ /*! @@ -3538,12 +3649,15 @@ quint64 QWebPage::bytesReceived() const \fn void QWebPage::frameCreated(QWebFrame *frame) This signal is emitted whenever the page creates a new \a frame. + + \sa currentFrame() */ /*! \fn void QWebPage::selectionChanged() - This signal is emitted whenever the selection changes. + This signal is emitted whenever the selection changes, either interactively + or programmatically (e.g. by calling triggerAction() with a selection action). \sa selectedText() */ @@ -3555,7 +3669,7 @@ quint64 QWebPage::bytesReceived() const This signal is emitted whenever the text in form elements changes as well as other editable content. - \sa contentEditable, QWebFrame::toHtml(), QWebFrame::toPlainText() + \sa contentEditable, modified, QWebFrame::toHtml(), QWebFrame::toPlainText() */ /*! @@ -3631,9 +3745,9 @@ quint64 QWebPage::bytesReceived() const \fn void QWebPage::microFocusChanged() This signal is emitted when for example the position of the cursor in an editable form - element changes. It is used inform input methods about the new on-screen position where - the user is able to enter text. This signal is usually connected to QWidget's updateMicroFocus() - slot. + element changes. It is used to inform input methods about the new on-screen position where + the user is able to enter text. This signal is usually connected to the + QWidget::updateMicroFocus() slot. */ /*! @@ -3674,6 +3788,8 @@ quint64 QWebPage::bytesReceived() const This signal is emitted whenever the web site shown in \a frame is asking to store data to the database \a databaseName and the quota allocated to that web site is exceeded. + + \sa QWebDatabase */ /*! diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp index 8ff13b1..f715430 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp @@ -23,25 +23,40 @@ /*! \class QWebPluginFactory \since 4.4 - \brief The QWebPluginFactory class creates plugins to be embedded into web - pages. + \brief The QWebPluginFactory class is used to embed custom data types in web pages. \inmodule QtWebKit - QWebPluginFactory is a factory for creating plugins for QWebPage. A plugin - factory can be installed on a QWebPage using QWebPage::setPluginFactory(). + The HTML \c{<object>} tag is used to embed arbitrary content into a web page, + for example: + + \code + <object type="application/x-pdf" data="http://qt.nokia.com/document.pdf" width="500" height="400"></object> + \endcode + + QtWebkit will natively handle the most basic data types like \c{text/html} and + \c{image/jpeg}, but for any advanced or custom data types you will need to + provide a handler yourself. + + QWebPluginFactory is a factory for creating plugins for QWebPage, where each + plugin provides support for one or more data types. A plugin factory can be + installed on a QWebPage using QWebPage::setPluginFactory(). \note The plugin factory is only used if plugins are enabled through QWebSettings. - You can provide a QWebPluginFactory by implementing the plugins() and the - create() method. For plugins() it is necessary to describe the plugins the + You provide a QWebPluginFactory by implementing the plugins() and the + create() methods. For plugins() it is necessary to describe the plugins the factory can create, including a description and the supported MIME types. The MIME types each plugin can handle should match the ones specified in - in the HTML \c{<object>} tag. + in the HTML \c{<object>} tag of your content. The create() method is called if the requested MIME type is supported. The implementation has to return a new instance of the plugin requested for the given MIME type and the specified URL. + + The plugins themselves are subclasses of QObject, but currently only plugins + based on either QWidget or QGraphicsWidget are supported. + */ @@ -183,6 +198,7 @@ void QWebPluginFactory::refreshPlugins() /*! \enum QWebPluginFactory::Extension + \internal This enum describes the types of extensions that the plugin factory can support. Before using these extensions, you should verify that the extension is supported by calling supportsExtension(). @@ -192,6 +208,7 @@ void QWebPluginFactory::refreshPlugins() /*! \class QWebPluginFactory::ExtensionOption + \internal \since 4.4 \brief The ExtensionOption class provides an extended input argument to QWebPluginFactory's extension support. @@ -202,6 +219,7 @@ void QWebPluginFactory::refreshPlugins() /*! \class QWebPluginFactory::ExtensionReturn + \internal \since 4.4 \brief The ExtensionOption class provides an extended output argument to QWebPluginFactory's extension support. @@ -214,6 +232,8 @@ void QWebPluginFactory::refreshPlugins() This virtual function can be reimplemented in a QWebPluginFactory subclass to provide support for extensions. The \a option argument is provided as input to the extension; the output results can be stored in \a output. + \internal + The behaviour of this function is determined by \a extension. You can call supportsExtension() to check if an extension is supported by the factory. @@ -233,6 +253,8 @@ bool QWebPluginFactory::extension(Extension extension, const ExtensionOption *op /*! This virtual function returns true if the plugin factory supports \a extension; otherwise false is returned. + \internal + \sa extension() */ bool QWebPluginFactory::supportsExtension(Extension extension) const diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.cpp index 6c26bd7..7179eaa 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.cpp @@ -63,6 +63,16 @@ void QWEBKIT_EXPORT qt_drt_setDomainRelaxationForbiddenForURLScheme(bool forbidd \c{http://www.malicious.com/evil.html} from accessing \c{http://www.example.com/}'s resources, because they are of a different security origin. + By default local schemes like \c{file://} and \c{qrc://} are concidered to be in the same + security origin, and can access each other's resources. You can add additional local schemes + by using QWebSecurityOrigin::addLocalScheme(), or override the default same-origin behavior + by setting QWebSettings::LocalContentCanAccessFileUrls to \c{false}. + + \note Local resources are by default restricted from accessing remote content, which + means your \c{file://} will not be able to access \c{http://domain.com/foo.html}. You + can relax this restriction by setting QWebSettings::LocalContentCanAccessRemoteUrls to + \c{true}. + Call QWebFrame::securityOrigin() to get the QWebSecurityOrigin for a frame in a web page, and use host(), scheme() and port() to identify the security origin. @@ -219,7 +229,11 @@ QList<QWebDatabase> QWebSecurityOrigin::databases() const \since 4.6 Adds the given \a scheme to the list of schemes that are considered equivalent - to the \c file: scheme. They are not subject to cross domain restrictions. + to the \c file: scheme. + + Cross domain restrictions depend on the two web settings QWebSettings::LocalContentCanAccessFileUrls + and QWebSettings::LocalContentCanAccessFileUrls. By default all local schemes are concidered to be + in the same security origin, and local schemes can not access remote content. */ void QWebSecurityOrigin::addLocalScheme(const QString& scheme) { @@ -231,6 +245,9 @@ void QWebSecurityOrigin::addLocalScheme(const QString& scheme) Removes the given \a scheme from the list of local schemes. + \note You can not remove the \c{file://} scheme from the list + of local schemes. + \sa addLocalScheme() */ void QWebSecurityOrigin::removeLocalScheme(const QString& scheme) @@ -240,7 +257,10 @@ void QWebSecurityOrigin::removeLocalScheme(const QString& scheme) /*! \since 4.6 - Returns a list of all the schemes that were set by the application as local schemes, + Returns a list of all the schemes concidered to be local. + + By default this is \c{file://} and \c{qrc://}. + \sa addLocalScheme(), removeLocalScheme() */ QStringList QWebSecurityOrigin::localSchemes() diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp index ae7f6a8..115f9fc 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp @@ -289,8 +289,8 @@ QWebSettings* QWebSettings::globalSettings() function. The \l{QWebSettings::WebAttribute}{WebAttribute} enum further describes each attribute. - QWebSettings also configures global properties such as the Web page memory - cache and the Web page icon database, local database storage and offline + QWebSettings also configures global properties such as the web page memory + cache, icon database, local database storage and offline applications storage. \section1 Enabling Plugins @@ -299,8 +299,8 @@ QWebSettings* QWebSettings::globalSettings() \l{QWebSettings::PluginsEnabled}{PluginsEnabled} attribute. For many applications, this attribute is enabled for all pages by setting it on the \l{globalSettings()}{global settings object}. QtWebKit will always ignore this setting - \when processing Qt plugins. The decision to allow a Qt plugin is made by the client - \in its reimplementation of QWebPage::createPlugin. + when processing Qt plugins. The decision to allow a Qt plugin is made by the client + in its reimplementation of QWebPage::createPlugin(). \section1 Web Application Support @@ -339,7 +339,7 @@ QWebSettings* QWebSettings::globalSettings() \value MinimumFontSize The hard minimum font size. \value MinimumLogicalFontSize The minimum logical font size that is applied - after zooming with QWebFrame's textSizeMultiplier(). + when zooming out with QWebFrame::setTextSizeMultiplier(). \value DefaultFontSize The default font size for regular text. \value DefaultFixedFontSize The default font size for fixed-pitch text. */ @@ -361,66 +361,74 @@ QWebSettings* QWebSettings::globalSettings() This enum describes various attributes that are configurable through QWebSettings. \value AutoLoadImages Specifies whether images are automatically loaded in - web pages. + web pages. This is enabled by default. \value DnsPrefetchEnabled Specifies whether QtWebkit will try to pre-fetch DNS entries to - speed up browsing. This only works as a global attribute. Only for Qt 4.6 and later. + speed up browsing. This only works as a global attribute. Only for Qt 4.6 and later. This is disabled by default. \value JavascriptEnabled Enables or disables the running of JavaScript - programs. + programs. This is enabled by default \value JavaEnabled Enables or disables Java applets. Currently Java applets are not supported. - \value PluginsEnabled Enables or disables plugins in Web pages. Qt plugins - with a mimetype such as "application/x-qt-plugin" are not affected by this setting. + \value PluginsEnabled Enables or disables plugins in Web pages (e.g. using NPAPI). Qt plugins + with a mimetype such as "application/x-qt-plugin" are not affected by this setting. This is disabled by default. \value PrivateBrowsingEnabled Private browsing prevents WebKit from - recording visited pages in the history and storing web page icons. + recording visited pages in the history and storing web page icons. This is disabled by default. \value JavascriptCanOpenWindows Specifies whether JavaScript programs - can open new windows. + can open new windows. This is disabled by default. \value JavascriptCanAccessClipboard Specifies whether JavaScript programs - can read or write to the clipboard. + can read or write to the clipboard. This is disabled by default. \value DeveloperExtrasEnabled Enables extra tools for Web developers. Currently this enables the "Inspect" element in the context menu as - well as the use of QWebInspector which controls the WebKit WebInspector - for web site debugging. + well as the use of QWebInspector which controls the web inspector + for web site debugging. This is disabled by default. \value SpatialNavigationEnabled Enables or disables the Spatial Navigation feature, which consists in the ability to navigate between focusable elements in a Web page, such as hyperlinks and form controls, by using - Left, Right, Up and Down arrow keys. For example, if an user presses the + Left, Right, Up and Down arrow keys. For example, if a user presses the Right key, heuristics determine whether there is an element he might be - trying to reach towards the right, and if there are multiple elements, - which element he probably wants. + trying to reach towards the right and which element he probably wants. + This is disabled by default. \value LinksIncludedInFocusChain Specifies whether hyperlinks should be - included in the keyboard focus chain. - \value ZoomTextOnly Specifies whether the zoom factor on a frame applies to - only the text or all content. + included in the keyboard focus chain. This is enabled by default. + \value ZoomTextOnly Specifies whether the zoom factor on a frame applies + only to the text or to all content. This is disabled by default. \value PrintElementBackgrounds Specifies whether the background color and images - are also drawn when the page is printed. + are also drawn when the page is printed. This is enabled by default. \value OfflineStorageDatabaseEnabled Specifies whether support for the HTML 5 - offline storage feature is enabled or not. Disabled by default. + offline storage feature is enabled or not. This is disabled by default. \value OfflineWebApplicationCacheEnabled Specifies whether support for the HTML 5 - web application cache feature is enabled or not. Disabled by default. + web application cache feature is enabled or not. This is disabled by default. \value LocalStorageEnabled Specifies whether support for the HTML 5 - local storage feature is enabled or not. Disabled by default. + local storage feature is enabled or not. This is disabled by default. \value LocalStorageDatabaseEnabled \e{This enum value is deprecated.} Use QWebSettings::LocalStorageEnabled instead. - \value LocalContentCanAccessRemoteUrls Specifies whether locally loaded documents are allowed to access remote urls. - \value LocalContentCanAccessFileUrls Specifies whether locally loaded documents are allowed to access other local urls. - \value XSSAuditorEnabled Specifies whether load requests should be monitored for cross-site scripting attempts. + \value LocalContentCanAccessRemoteUrls Specifies whether locally loaded documents are + allowed to access remote urls. This is disabled by default. For more information + about security origins and local vs. remote content see QWebSecurityOrigin. + \value LocalContentCanAccessFileUrls Specifies whether locally loaded documents are + allowed to access other local urls. This is enabled by default. For more information + about security origins and local vs. remote content see QWebSecurityOrigin. + \value XSSAuditingEnabled Specifies whether load requests should be monitored for cross-site + scripting attempts. Suspicious scripts will be blocked and reported in the inspector's + JavaScript console. Enabling this feature might have an impact on performance + and it is disabled by default. \value AcceleratedCompositingEnabled This feature, when used in conjunction with QGraphicsWebView, accelerates animations of web content. CSS animations of the transform and opacity properties will be rendered by composing the cached content of the animated elements. - This feature is enabled by default + This is enabled by default. \value TiledBackingStoreEnabled This setting enables the tiled backing store feature for a QGraphicsWebView. With the tiled backing store enabled, the web page contents in and around the current visible area is speculatively cached to bitmap tiles. The tiles are automatically kept in sync with the web page as it changes. Enabling tiling can significantly speed up painting heavy operations like scrolling. Enabling the feature increases memory consumption. It does not work well with contents using CSS fixed positioning (see also \l{QGraphicsWebView::}{resizesToContents} property). - \l{QGraphicsWebView::}{tiledBackingStoreFrozen} property allows application to temporarily freeze the contents of the backing store. + \l{QGraphicsWebView::}{tiledBackingStoreFrozen} property allows application to temporarily + freeze the contents of the backing store. This is disabled by default. \value FrameFlatteningEnabled With this setting each subframe is expanded to its contents. On touch devices, it is desired to not have any scrollable sub parts of the page as it results in a confusing user experience, with scrolling sometimes scrolling sub parts and at other times scrolling the page itself. For this reason iframes and framesets are barely usable on touch devices. This will flatten all the frames to become one scrollable page. - Disabled by default. + This is disabled by default. */ /*! @@ -525,7 +533,8 @@ void QWebSettings::resetFontSize(FontSize type) with UTF-8 and Base64 encoded data, such as: "data:text/css;charset=utf-8;base64,cCB7IGJhY2tncm91bmQtY29sb3I6IHJlZCB9Ow==" - NOTE: In case the base 64 data is not valid the style will not be applied. + + \note If the base64 data is not valid, the style will not be applied. \sa userStyleSheetUrl() */ @@ -576,9 +585,11 @@ QString QWebSettings::defaultTextEncoding() const Sets the path of the icon database to \a path. The icon database is used to store "favicons" associated with web sites. - \a path must point to an existing directory where the icons are stored. + \a path must point to an existing directory. Setting an empty path disables the icon database. + + \sa iconDatabasePath(), clearIconDatabase() */ void QWebSettings::setIconDatabasePath(const QString& path) { @@ -621,7 +632,7 @@ void QWebSettings::clearIconDatabase() /*! Returns the web site's icon for \a url. - If the web site does not specify an icon, or the icon is not in the + If the web site does not specify an icon \bold OR if the icon is not in the database, a null QIcon is returned. \note The returned icon's size is arbitrary. @@ -658,7 +669,7 @@ QWebPluginDatabase *QWebSettings::pluginDatabase() Sets \a graphic to be drawn when QtWebKit needs to draw an image of the given \a type. - For example, when an image cannot be loaded the pixmap specified by + For example, when an image cannot be loaded, the pixmap specified by \l{QWebSettings::WebGraphic}{MissingImageGraphic} is drawn instead. \sa webGraphic() @@ -676,9 +687,6 @@ void QWebSettings::setWebGraphic(WebGraphic type, const QPixmap& graphic) Returns a previously set pixmap used to draw replacement graphics of the specified \a type. - For example, when an image cannot be loaded the pixmap specified by - \l{QWebSettings::WebGraphic}{MissingImageGraphic} is drawn instead. - \sa setWebGraphic() */ QPixmap QWebSettings::webGraphic(WebGraphic type) @@ -719,8 +727,7 @@ void QWebSettings::clearMemoryCaches() Sets the maximum number of pages to hold in the memory page cache to \a pages. The Page Cache allows for a nicer user experience when navigating forth or back - to pages in the forward/back history, by pausing and resuming up to \a pages - per page group. + to pages in the forward/back history, by pausing and resuming up to \a pages. For more information about the feature, please refer to: @@ -792,8 +799,8 @@ QString QWebSettings::fontFamily(FontFamily which) const } /*! - Resets the actual font family to the default font family, specified by - \a which. + Resets the actual font family specified by \a which to the one set + in the global QWebSettings instance. This function has no effect on the global QWebSettings instance. */ @@ -835,7 +842,9 @@ bool QWebSettings::testAttribute(WebAttribute attr) const /*! \fn void QWebSettings::resetAttribute(WebAttribute attribute) - Resets the setting of \a attribute. + Resets the setting of \a attribute to the value specified in the + global QWebSettings instance. + This function has no effect on the global QWebSettings instance. \sa globalSettings() @@ -851,12 +860,15 @@ void QWebSettings::resetAttribute(WebAttribute attr) /*! \since 4.5 - Sets the path for HTML5 offline storage to \a path. + Sets \a path as the save location for HTML5 client-side database storage data. - \a path must point to an existing directory where the databases are stored. + \a path must point to an existing directory. Setting an empty path disables the feature. + Support for client-side databases can enabled by setting the + \l{QWebSettings::OfflineStorageDatabaseEnabled}{OfflineStorageDatabaseEnabled} attribute. + \sa offlineStoragePath() */ void QWebSettings::setOfflineStoragePath(const QString& path) @@ -869,7 +881,7 @@ void QWebSettings::setOfflineStoragePath(const QString& path) /*! \since 4.5 - Returns the path of the HTML5 offline storage or an empty string if the + Returns the path of the HTML5 client-side database storage or an empty string if the feature is disabled. \sa setOfflineStoragePath() @@ -906,22 +918,24 @@ qint64 QWebSettings::offlineStorageDefaultQuota() /*! \since 4.6 - \relates QWebSettings Sets the path for HTML5 offline web application cache storage to \a path. An application cache acts like an HTTP cache in some sense. For documents - that use the application cache via JavaScript, the loader mechinery will + that use the application cache via JavaScript, the loader engine will first ask the application cache for the contents, before hitting the network. The feature is described in details at: http://dev.w3.org/html5/spec/Overview.html#appcache - \a path must point to an existing directory where the cache is stored. + \a path must point to an existing directory. Setting an empty path disables the feature. + Support for offline web application cache storage can enabled by setting the + \l{QWebSettings::OfflineWebApplicationCacheEnabled}{OfflineWebApplicationCacheEnabled} attribute. + \sa offlineWebApplicationCachePath() */ void QWebSettings::setOfflineWebApplicationCachePath(const QString& path) @@ -933,7 +947,6 @@ void QWebSettings::setOfflineWebApplicationCachePath(const QString& path) /*! \since 4.6 - \relates QWebSettings Returns the path of the HTML5 offline web application cache storage or an empty string if the feature is disabled. @@ -980,7 +993,6 @@ qint64 QWebSettings::offlineWebApplicationCacheQuota() /*! \since 4.6 - \relates QWebSettings Sets the path for HTML5 local storage to \a path. @@ -1025,7 +1037,6 @@ QUrl QWebSettings::inspectorUrl() const /*! \since 4.6 - \relates QWebSettings Returns the path for HTML5 local storage. @@ -1038,13 +1049,14 @@ QString QWebSettings::localStoragePath() const /*! \since 4.6 - \relates QWebSettings - Enables WebKit persistent data and sets the path to \a path. - If the \a path is empty the path for persistent data is set to the - user-specific data location specified by - \l{QDesktopServices::DataLocation}{DataLocation}. - + Enables WebKit data persistence and sets the path to \a path. + If \a path is empty, the user-specific data location specified by + \l{QDesktopServices::DataLocation}{DataLocation} will be used instead. + + This method will simultaneously set and enable the iconDatabasePath(), + localStoragePath(), offlineStoragePath() and offlineWebApplicationCachePath(). + \sa localStoragePath() */ void QWebSettings::enablePersistentStorage(const QString& path) diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h index d2e536e..3592e2c 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h @@ -63,7 +63,7 @@ public: OfflineStorageDatabaseEnabled, OfflineWebApplicationCacheEnabled, LocalStorageEnabled, -#ifdef QT_DEPRECATED +#if defined(QT_DEPRECATED) || defined(qdoc) LocalStorageDatabaseEnabled = LocalStorageEnabled, #endif LocalContentCanAccessRemoteUrls, diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog index 6ddaa2b..efc8f27 100644 --- a/src/3rdparty/webkit/WebKit/qt/ChangeLog +++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog @@ -1,3 +1,102 @@ +2010-05-14 Kent Hansen <kent.hansen@nokia.com>, Jocelyn Turcotte <jocelyn.turcotte@nokia.com>, Tor Arne Vestbø <tor.arne.vestbo@nokia.com>, Henry Haverinen <henry.haverinen@nokia.com>, Jedrzej Nowacki <jedrzej.nowacki@nokia.com>, Andreas Kling <andreas.kling@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Merge overhaul of the QtWebKit API documentation + + Numerous improvements in wording, qdoc warning fixes and + clarifications, done in a team work effort. + + No functional changes. + + * Api/qwebdatabase.cpp: + * Api/qwebelement.cpp: + * Api/qwebframe.cpp: + * Api/qwebhistoryinterface.cpp: + * Api/qwebinspector.cpp: + * Api/qwebkitversion.cpp: + * Api/qwebpage.cpp: + * Api/qwebpluginfactory.cpp: + * Api/qwebsecurityorigin.cpp: + * Api/qwebsettings.cpp: + * Api/qwebsettings.h: + * docs/qtwebkit.qdoc: + * docs/webkitsnippets/qtwebkit_qwebinspector_snippet.cpp: + (wrapInFunction): + * docs/webkitsnippets/webelement/main.cpp: + (findButtonAndClick): + (autocomplete1): + (autocomplete2): + (main): + +2010-05-14 Martin Smith <msmith@trolltech.com> + + Reviewed by Simon Hausmann. + + Documentation: Fix overview grouping. + + * docs/qtwebkit.qdoc: + +2010-05-14 Benjamin Poulain <benjamin.poulain@nokia.com> + + Reviewed by Laszlo Gombos. + + [QT] Update the Symbian version for the user agent + https://bugs.webkit.org/show_bug.cgi?id=38389 + + Update the user agent for Symbian^2 to Symbian^4 + + * Api/qwebpage.cpp: + (QWebPage::userAgentForUrl): + +2010-05-11 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Kenneth Christiansen. + + [Qt] emit initialLayoutCompleted signal from FrameLoaderClientQt::dispatchDidFirstVisuallyNonEmptyLayout + https://bugs.webkit.org/show_bug.cgi?id=38921 + + Emit initialLayoutCompleted signal from FrameLoaderClientQt::dispatchDidFirstVisuallyNonEmptyLayout + instead of FrameLoaderClientQt::dispatchDidFirstLayout , because the former ensures that a + visual content layed out on the frame. + + It matches to QWebFrame::initialLayoutCompleted signal documentation at: + + "... This is the first time you will see contents displayed on the frame ..." + + * WebCoreSupport/FrameLoaderClientQt.cpp: + (WebCore::FrameLoaderClientQt::dispatchDidFirstLayout): + (WebCore::FrameLoaderClientQt::dispatchDidFirstVisuallyNonEmptyLayout): + +2010-05-11 Kenneth Rohde Christiansen <kenneth@webkit.org> + + Reviewed by Laszlo Gombos. + + [Qt] REGRESSION(r58497) tst_QGraphicsWebView::crashOnViewlessWebPages() is failing + https://bugs.webkit.org/show_bug.cgi?id=38655 + + Fix double free by moving the connect till after the resize. + + The bug is causes by the fact that a resize of an empty page causes a + layout, thus deleting the qgraphicswebview before setHtml is called, + which then deletes it again, causing a double free. + + * tests/qgraphicswebview/tst_qgraphicswebview.cpp: + (tst_QGraphicsWebView::crashOnViewlessWebPages): + +2010-05-11 Diego Gonzalez <diegohcg@webkit.org> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] tst_QWebPage::inputMethods failing on Maemo5 + https://bugs.webkit.org/show_bug.cgi?id=38685 + + Check if the SIP (Software Input Panel) is triggered, which normally + happens on mobile platforms, when a user input form receives a mouse click. + + * tests/qwebpage/tst_qwebpage.cpp: + (tst_QWebPage::inputMethods): + 2010-05-09 Noam Rosenthal <noam.rosenthal@nokia.com> Reviewed by Kenneth Rohde Christiansen. diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp index 4ad008b..686bfcc 100644 --- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp +++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp @@ -414,13 +414,13 @@ void FrameLoaderClientQt::dispatchDidFinishLoad() void FrameLoaderClientQt::dispatchDidFirstLayout() { - if (m_webFrame) - emit m_webFrame->initialLayoutCompleted(); + notImplemented(); } void FrameLoaderClientQt::dispatchDidFirstVisuallyNonEmptyLayout() { - notImplemented(); + if (m_webFrame) + emit m_webFrame->initialLayoutCompleted(); } void FrameLoaderClientQt::dispatchShow() diff --git a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc index 96eb16e..c6dd550 100644 --- a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc +++ b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc @@ -7,63 +7,9 @@ \ingroup modules \ingroup technology-apis - \brief The QtWebKit module provides a web browser engine and + \brief The QtWebKit module provides a web browser engine as well as classes to render and interact with web content. - To include the definitions of the module's classes, use the - following directive: - - \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 1 - - To link against the module, add this line to your \l qmake \c - .pro file: - - \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 0 - - \section1 License Information - - This is a snapshot of the Qt port of WebKit. The exact version information - can be found in the \c{src/3rdparty/webkit/VERSION} file supplied with Qt. - - Qt Commercial Edition licensees that wish to distribute applications that - use the QtWebKit module need to be aware of their obligations under the - GNU Library General Public License (LGPL). - - Developers using the Open Source Edition can choose to redistribute - the module under the appropriate version of the GNU LGPL. - - \legalese - WebKit is licensed under the GNU Library General Public License. - Individual contributor names and copyright dates can be found - inline in the code. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - \endlegalese -*/ - -/*! - \page webintegration.html - \title Integrating Web Content with QtWebKit - \since 4.4 - - \ingroup frameworks-technologies - - \keyword Browser - \keyword Web Browser - QtWebKit provides a Web browser engine that makes it easy to embed content from the World Wide Web into your Qt application. At the same time Web content can be enhanced with native controls. @@ -85,6 +31,20 @@ QtWebKit is based on the Open Source WebKit engine. More information about WebKit itself can be found on the \l{WebKit Open Source Project} Web site. + \section1 Including In Your Project + + To include the definitions of the module's classes, use the + following directive: + + \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 1 + + To link against the module, add this line to your \l qmake \c + .pro file: + + \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 0 + + \section1 Notes + \note Building the QtWebKit module with debugging symbols is problematic on many platforms due to the size of the WebKit engine. We recommend building the module only in release mode for embedded platforms. @@ -99,10 +59,6 @@ Embedded Linux systems. See the \l{Qt for Embedded Linux Requirements} document for more information. - Topics: - - \tableofcontents - \section1 Architecture The easiest way to render content is through the QWebView class. As a @@ -195,4 +151,39 @@ \o The system \c{/Library/Internet Plug-Ins} directory \endlist \endtable + + + \section1 License Information + + This is a snapshot of the Qt port of WebKit. The exact version information + can be found in the \c{src/3rdparty/webkit/VERSION} file supplied with Qt. + + Qt Commercial Edition licensees that wish to distribute applications that + use the QtWebKit module need to be aware of their obligations under the + GNU Library General Public License (LGPL). + + Developers using the Open Source Edition can choose to redistribute + the module under the appropriate version of the GNU LGPL. + + \legalese + WebKit is licensed under the GNU Library General Public License. + Individual contributor names and copyright dates can be found + inline in the code. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + \endlegalese */ + diff --git a/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_qwebinspector_snippet.cpp b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_qwebinspector_snippet.cpp index a6b6620..07f1d45 100644 --- a/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_qwebinspector_snippet.cpp +++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_qwebinspector_snippet.cpp @@ -9,8 +9,6 @@ void wrapInFunction() QWebInspector *inspector = new QWebInspector; inspector->setPage(page); - - connect(page, SIGNAL(webInspectorTriggered(QWebElement)), inspector, SLOT(show())); //! [0] } diff --git a/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webelement/main.cpp b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webelement/main.cpp index 822b61c..b1781a6 100644 --- a/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webelement/main.cpp +++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webelement/main.cpp @@ -36,6 +36,59 @@ static void traverse() //! [Traversing with QWebElement] } +static void findButtonAndClick() +{ + + frame->setHtml("<form name=\"myform\" action=\"submit_form.asp\" method=\"get\">" + "<input type=\"text\" name=\"myfield\">" + "<input type=\"submit\" value=\"Submit\">" + "</form>"); + +//! [Calling a DOM element method] + + QWebElement document = frame->documentElement(); + /* Assume that the document has the following structure: + + <form name="myform" action="submit_form.asp" method="get"> + <input type="text" name="myfield"> + <input type="submit" value="Submit"> + </form> + + */ + + QWebElement button = document.findFirst("input[type=submit]"); + button.evaluateJavaScript("click()"); + +//! [Calling a DOM element method] + + } + +static void autocomplete1() +{ + QWebElement document = frame->documentElement(); + +//! [autocomplete1] + QWebElement firstTextInput = document.findFirst("input[type=text]"); + QString storedText = firstTextInput.attribute("value"); +//! [autocomplete1] + +} + + +static void autocomplete2() +{ + + QWebElement document = frame->documentElement(); + QString storedText = "text"; + +//! [autocomplete2] + QWebElement firstTextInput = document.findFirst("input[type=text]"); + textInput.setAttribute("value", storedText); +//! [autocomplete2] + +} + + static void findAll() { //! [FindAll] @@ -65,5 +118,8 @@ int main(int argc, char *argv[]) frame = view->page()->mainFrame(); traverse(); findAll(); + findButtonAndClick(); + autocomplete1(); + autocomplete2(); return 0; } diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp index 14f5820..ebe847d 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp +++ b/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp @@ -84,16 +84,19 @@ void tst_QGraphicsWebView::crashOnViewlessWebPages() WebPage* page = new WebPage; webView->setPage(page); page->webView = webView; - connect(page->mainFrame(), SIGNAL(initialLayoutCompleted()), page, SLOT(aborting())); - scene.addItem(webView); view.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); view.resize(600, 480); webView->resize(view.geometry().size()); + QCoreApplication::processEvents(); view.show(); + // Resizing the page will resize and layout the empty "about:blank" + // page, so we first connect the signal afterward. + connect(page->mainFrame(), SIGNAL(initialLayoutCompleted()), page, SLOT(aborting())); + page->mainFrame()->setHtml(QString("data:text/html," "<frameset cols=\"25%,75%\">" "<frame src=\"data:text/html,foo \">" @@ -101,6 +104,7 @@ void tst_QGraphicsWebView::crashOnViewlessWebPages() "</frameset>")); QVERIFY(waitForSignal(page, SIGNAL(loadFinished(bool)))); + delete page; } void tst_QGraphicsWebView::microFocusCoordinates() diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp index 834a394..12fb9b3 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp @@ -26,6 +26,7 @@ #include <QLocale> #include <QMenu> #include <QPushButton> +#include <QStyle> #include <QtTest/QtTest> #include <QTextCharFormat> #include <qgraphicsscene.h> @@ -1367,7 +1368,27 @@ void tst_QWebPage::inputMethods() page->event(&evrel); #if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) - QVERIFY(!viewEventSpy.contains(QEvent::RequestSoftwareInputPanel)); + // This part of the test checks if the SIP (Software Input Panel) is triggered, + // which normally happens on mobile platforms, when a user input form receives + // a mouse click. + int inputPanel = 0; + if (viewType == "QWebView") { + if (QWebView* wv = qobject_cast<QWebView*>(view)) + inputPanel = wv->style()->styleHint(QStyle::SH_RequestSoftwareInputPanel); + } else if (viewType == "QGraphicsWebView") { + if (QGraphicsWebView* wv = qobject_cast<QGraphicsWebView*>(view)) + inputPanel = wv->style()->styleHint(QStyle::SH_RequestSoftwareInputPanel); + } + + // For non-mobile platforms RequestSoftwareInputPanel event is not called + // because there is no SIP (Software Input Panel) triggered. In the case of a + // mobile platform, an input panel, e.g. virtual keyboard, is usually invoked + // and the RequestSoftwareInputPanel event is called. For these two situations + // this part of the test can verified as the checks below. + if (inputPanel) + QVERIFY(viewEventSpy.contains(QEvent::RequestSoftwareInputPanel)); + else + QVERIFY(!viewEventSpy.contains(QEvent::RequestSoftwareInputPanel)); #endif viewEventSpy.clear(); |