From e09144d9ae2fbebaa5c6a2eeb7975a3a75ddbf0b Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Fri, 24 Apr 2009 12:37:49 +0200 Subject: Updated WebKit from /home/shausman/src/webkit/trunk to origin/qtwebkit-4.5 ( d5ea85e03f22fb6fb87275774a2c53031941017e ) Changes in WebKit since the last update: ++ b/JavaScriptCore/ChangeLog 2009-01-22 Oliver Hunt Reviewed by Geoff Garen. (r39682-r39736) JSFunFuzz: crash on "(function(){({ x2: x }), })()" Automatic semicolon insertion was resulting in this being accepted in the initial nodeless parsing, but subsequent reparsing for code generation would fail, leading to a crash. The solution is to ensure that reparsing a function performs parsing in the same state as the initial parse. We do this by modifying the saved source ranges to include rather than exclude the opening and closing braces. * bytecode/CodeBlock.cpp: (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): add an assertion for successful recompile * parser/Lexer.h: (JSC::Lexer::sourceCode): include rather than exclude braces. * parser/Nodes.h: (JSC::FunctionBodyNode::toSourceString): No need to append braces anymore. 2009-01-21 Alexey Proskuryakov Suggested by Oliver Hunt. Reviewed by Oliver Hunt. https://bugs.webkit.org/show_bug.cgi?id=23456 Function argument names leak * parser/Nodes.cpp: (JSC::FunctionBodyNode::~FunctionBodyNode): Destruct parameter names. 2009-01-22 Beth Dakin Reviewed by Sam Weinig. Fix for https://bugs.webkit.org/show_bug.cgi?id=23461 LayoutTests/ fast/js/numeric-conversion.html is broken, and corresponding The basic problem here is that parseInt(Infinity) should be NaN, but we were returning 0. NaN matches Safari 3.2.1 and Firefox. * runtime/JSGlobalObjectFunctions.cpp: (JSC::globalFuncParseInt): 2009-01-13 Beth Dakin Reviewed by Darin Adler and Oliver Hunt. REGRESSION: Business widget's front side fails to render correctly when flipping widget The problem here is that parseInt was parsing NaN as 0. This patch corrects that by parsing NaN as NaN. This matches our old behavior and Firefox. * runtime/JSGlobalObjectFunctions.cpp: (JSC::globalFuncParseInt): ++ b/LayoutTests/ChangeLog 2009-01-22 Oliver Hunt Reviewed by Geoff Garen. (r39682-r39736) JSFunFuzz: crash on "(function(){({ x2: x }), })()" Add additional reparsing tests. * fast/js/reparsing-semicolon-insertion-expected.txt: * fast/js/resources/reparsing-semicolon-insertion.js: (commaParenTest): (commaParenThrowTest): 2009-01-22 Beth Dakin Reviewed by Sam Weinig. Fix for https://bugs.webkit.org/show_bug.cgi?id=23461 LayoutTests/ fast/js/numeric-conversion.html is broken, and corresponding The basic problem here is that parseInt(Infinity) should be NaN, but we were returning 0. NaN matches Safari 3.2.1 and Firefox. * fast/js/numeric-conversion-expected.txt: * fast/js/resources/numeric-conversion.js: 2009-01-13 Beth Dakin Reviewed by Darin Adler and Oliver Hunt. Updated test and results for REGRESSION: Business widget's front side fails to render correctly when flipping widget parseInt(NaN) should be NaN. * fast/js/numeric-conversion-expected.txt: * fast/js/resources/numeric-conversion.js: ++ b/WebCore/ChangeLog 2009-03-13 Adam Bergkvist Reviewed by Alexey Proskuryakov. https://bugs.webkit.org/show_bug.cgi?id=24349 [QT] HTTP status text is never set Set HTTP status text to the reason phrase attribute of QNetworkReply. * platform/network/qt/QNetworkReplyHandler.cpp: (WebCore::QNetworkReplyHandler::sendResponseIfNeeded): 2009-03-02 Dirk Schulze Reviewed by Holger Freyther. Added putImageData to Qt. Discussed with Ariya Hidayat. [Qt] lacks putImageData support in Canvas https://bugs.webkit.org/show_bug.cgi?id=22186 * platform/graphics/qt/ImageBufferQt.cpp: (WebCore::ImageBuffer::putImageData): 2009-03-01 Larry Ewing Reviewed by Alexey Proskuryakov. https://bugs.webkit.org/show_bug.cgi?id=24080 NPN_GetValue casting to the wrong type and writing outside bounds Make sure to cast the value to the correct type so that only memory owned by the value is written to. * plugins/gtk/PluginViewGtk.cpp (PluginView::getValueStatic): * plugins/qt/PluginViewQt.cpp (PluginView::getValueStatic): * plugins/mac/PluginViewMac.cpp (PluginView::getValueStatic): (PluginView::getValue): 2009-02-27 Adam Treat Reviewed by Eric Seidel. https://bugs.webkit.org/show_bug.cgi?id=24229 If an image has no alpha channel there is no reason to use SourceOver. * platform/graphics/qt/ImageQt.cpp: (WebCore::Image::drawPattern): (WebCore::BitmapImage::draw): 2009-02-27 Zack Rusin Reviewed by Nikolas Zimmermann. Qt: be more reasonable about scrolled lines cMouseWheelPixelsPerLineStep is currently a constant set to 13.3. it doesn't match our metrics meaning that Qt scrolls by ~2 lines by default which is quite irritating. so lets scroll vertically by the Qt set number of lines * Qt default single step scroll * platform/qt/WheelEventQt.cpp: 2009-02-25 Dirk Schulze Reviewed by Oliver Hunt. Ported arcTo to Qt. Qt has no native support for arcTo. This changes calculate the behavior of arcTo and draws it with lineTo and arc. [QT] implement Canvas arcTo https://bugs.webkit.org/show_bug.cgi?id=23873 * platform/graphics/qt/PathQt.cpp: (WebCore::Path::addArcTo): 2009-03-12 Adam Treat Reviewed by Oliver Hunt. https://bugs.webkit.org/show_bug.cgi?id=24498 Fix the Qt port to use the same algorithm for drawing dashed and dotted borders as the other ports. This makes the Qt port pixel-for-pixel perfect compared to border drawing with Apple's canonical mac port and much closer to konqueror and firefox behavior. * platform/graphics/qt/GraphicsContextQt.cpp: (WebCore::GraphicsContext::drawLine): 2009-03-09 Adam Treat Reviewed by George Staikos. https://bugs.webkit.org/show_bug.cgi?id=24463 WebCore::qstring is detaching and copying twice for every single WebCore::TextRun that is processed and drawn. This elevates this method to one of the top-ten most expensive methods in all of QtWebKit according to profiling. This changes the method so that QString only detaches when absolutely necessary. * platform/graphics/qt/FontQt.cpp: (WebCore::qstring): (WebCore::fixSpacing): (WebCore::Font::drawComplexText): (WebCore::Font::floatWidthForComplexText): (WebCore::Font::offsetForPositionForComplexText): (WebCore::Font::selectionRectForComplexText): ++ b/WebKit/qt/ChangeLog 2009-03-02 Benjamin C Meyer Reviewed by George Staikos. https://bugs.webkit.org/show_bug.cgi?id=21230 On X11 match the behavior of Firefox and also copy the url to the clipboard selection when the action Copy Link Location is executed. * Api/qwebpage.cpp: (QWebPage::triggerAction): --- src/3rdparty/webkit/JavaScriptCore/ChangeLog | 57 +++++++++++ .../webkit/JavaScriptCore/bytecode/CodeBlock.cpp | 1 + src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h | 2 +- .../webkit/JavaScriptCore/parser/Nodes.cpp | 2 + src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h | 2 +- .../runtime/JSGlobalObjectFunctions.cpp | 8 +- src/3rdparty/webkit/VERSION | 2 +- src/3rdparty/webkit/WebCore/ChangeLog | 108 +++++++++++++++++++++ .../webkit/WebCore/platform/graphics/qt/FontQt.cpp | 33 ++++--- .../platform/graphics/qt/GraphicsContextQt.cpp | 78 ++++++++++++++- .../WebCore/platform/graphics/qt/ImageBufferQt.cpp | 59 +++++++++-- .../WebCore/platform/graphics/qt/ImageQt.cpp | 5 + .../webkit/WebCore/platform/graphics/qt/PathQt.cpp | 74 +++++++++++++- .../platform/network/qt/QNetworkReplyHandler.cpp | 4 +- .../webkit/WebCore/platform/qt/WheelEventQt.cpp | 13 ++- .../webkit/WebCore/plugins/mac/PluginViewMac.cpp | 6 +- .../webkit/WebCore/plugins/qt/PluginViewQt.cpp | 6 +- src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp | 9 +- src/3rdparty/webkit/WebKit/qt/ChangeLog | 11 +++ 19 files changed, 438 insertions(+), 42 deletions(-) diff --git a/src/3rdparty/webkit/JavaScriptCore/ChangeLog b/src/3rdparty/webkit/JavaScriptCore/ChangeLog index fe85bb9..3321570 100644 --- a/src/3rdparty/webkit/JavaScriptCore/ChangeLog +++ b/src/3rdparty/webkit/JavaScriptCore/ChangeLog @@ -1,3 +1,60 @@ +2009-01-22 Oliver Hunt + + Reviewed by Geoff Garen. + + (r39682-r39736) JSFunFuzz: crash on "(function(){({ x2: x }), })()" + + + Automatic semicolon insertion was resulting in this being accepted in the initial + nodeless parsing, but subsequent reparsing for code generation would fail, leading + to a crash. The solution is to ensure that reparsing a function performs parsing + in the same state as the initial parse. We do this by modifying the saved source + ranges to include rather than exclude the opening and closing braces. + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): add an assertion for successful recompile + * parser/Lexer.h: + (JSC::Lexer::sourceCode): include rather than exclude braces. + * parser/Nodes.h: + (JSC::FunctionBodyNode::toSourceString): No need to append braces anymore. + +2009-01-21 Alexey Proskuryakov + + Suggested by Oliver Hunt. Reviewed by Oliver Hunt. + + https://bugs.webkit.org/show_bug.cgi?id=23456 + Function argument names leak + + * parser/Nodes.cpp: (JSC::FunctionBodyNode::~FunctionBodyNode): Destruct parameter names. + +2009-01-22 Beth Dakin + + Reviewed by Sam Weinig. + + Fix for https://bugs.webkit.org/show_bug.cgi?id=23461 LayoutTests/ + fast/js/numeric-conversion.html is broken, and corresponding + + + The basic problem here is that parseInt(Infinity) should be NaN, + but we were returning 0. NaN matches Safari 3.2.1 and Firefox. + + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::globalFuncParseInt): + +2009-01-13 Beth Dakin + + Reviewed by Darin Adler and Oliver Hunt. + + REGRESSION: Business widget's front side + fails to render correctly when flipping widget + + The problem here is that parseInt was parsing NaN as 0. This patch + corrects that by parsing NaN as NaN. This matches our old behavior + and Firefox. + + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::globalFuncParseInt): + 2009-02-13 Adam Treat Reviewed by George Staikos. diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp index 91fb1c0..9207c8a 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp @@ -1397,6 +1397,7 @@ void CodeBlock::reparseForExceptionInfoIfNecessary(CallFrame* callFrame) case FunctionCode: { FunctionBodyNode* ownerFunctionBodyNode = static_cast(m_ownerNode); RefPtr newFunctionBody = m_globalData->parser->reparse(m_globalData, ownerFunctionBodyNode); + ASSERT(newFunctionBody); newFunctionBody->finishParsing(ownerFunctionBodyNode->copyParameters(), ownerFunctionBodyNode->parameterCount()); CodeBlock& newCodeBlock = newFunctionBody->bytecodeForExceptionInfoReparse(scopeChain); ASSERT(newCodeBlock.m_exceptionInfo); diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h index cb553af..afcf09f 100644 --- a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h +++ b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h @@ -88,7 +88,7 @@ namespace JSC { bool sawError() const { return m_error; } void clear(); - SourceCode sourceCode(int openBrace, int closeBrace, int firstLine) { return SourceCode(m_source->provider(), openBrace + 1, closeBrace, firstLine); } + SourceCode sourceCode(int openBrace, int closeBrace, int firstLine) { return SourceCode(m_source->provider(), openBrace, closeBrace + 1, firstLine); } private: friend class JSGlobalData; diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp index bdc5d2f..201af28 100644 --- a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp @@ -2552,6 +2552,8 @@ FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData, SourceElements* chi FunctionBodyNode::~FunctionBodyNode() { ASSERT(!m_refCount); + for (size_t i = 0; i < m_parameterCount; ++i) + m_parameters[i].~Identifier(); fastFree(m_parameters); } diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h index f8512f7..20885c3 100644 --- a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h +++ b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h @@ -2205,7 +2205,7 @@ namespace JSC { void finishParsing(const SourceCode&, ParameterNode*); void finishParsing(Identifier* parameters, size_t parameterCount); - UString toSourceString() const JSC_FAST_CALL { return UString("{") + source().toString() + UString("}"); } + UString toSourceString() const JSC_FAST_CALL { return source().toString(); } // These objects are ref/deref'd a lot in the scope chain, so this is a faster ref/deref. // If the virtual machine changes so this doesn't happen as much we can change back. diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp index f12d2f3..ecdddcf 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp @@ -302,9 +302,11 @@ JSValuePtr globalFuncParseInt(ExecState* exec, JSObject*, JSValuePtr, const ArgL if (JSImmediate::isImmediate(value)) return value; double d = value->uncheckedGetNumber(); - if (!isfinite(d)) - return JSImmediate::zeroImmediate(); - return jsNumber(exec, floor(d)); + if (isfinite(d)) + return jsNumber(exec, floor(d)); + if (isnan(d) || isinf(d)) + return jsNaN(&exec->globalData()); + return JSImmediate::zeroImmediate(); } return jsNumber(exec, parseInt(value->toString(exec), radix)); diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION index bfaefa2..60c9ba7 100644 --- a/src/3rdparty/webkit/VERSION +++ b/src/3rdparty/webkit/VERSION @@ -8,4 +8,4 @@ The commit imported was from the and has the sha1 checksum - 450331808bfe11b1472c213a8cb311190355c2de + d5ea85e03f22fb6fb87275774a2c53031941017e diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog index 9be6e72..00bd427 100644 --- a/src/3rdparty/webkit/WebCore/ChangeLog +++ b/src/3rdparty/webkit/WebCore/ChangeLog @@ -1,3 +1,111 @@ +2009-03-13 Adam Bergkvist + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=24349 + [QT] HTTP status text is never set + + Set HTTP status text to the reason phrase attribute of QNetworkReply. + + * platform/network/qt/QNetworkReplyHandler.cpp: + (WebCore::QNetworkReplyHandler::sendResponseIfNeeded): + +2009-03-02 Dirk Schulze + + Reviewed by Holger Freyther. + + Added putImageData to Qt. Discussed with Ariya Hidayat. + + [Qt] lacks putImageData support in Canvas + https://bugs.webkit.org/show_bug.cgi?id=22186 + + * platform/graphics/qt/ImageBufferQt.cpp: + (WebCore::ImageBuffer::putImageData): + +2009-03-01 Larry Ewing + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=24080 + NPN_GetValue casting to the wrong type and writing outside bounds + + Make sure to cast the value to the correct type so that only + memory owned by the value is written to. + + * plugins/gtk/PluginViewGtk.cpp (PluginView::getValueStatic): + * plugins/qt/PluginViewQt.cpp (PluginView::getValueStatic): + * plugins/mac/PluginViewMac.cpp (PluginView::getValueStatic): + (PluginView::getValue): + +2009-02-27 Adam Treat + + Reviewed by Eric Seidel. + + https://bugs.webkit.org/show_bug.cgi?id=24229 + If an image has no alpha channel there is no reason to use SourceOver. + + * platform/graphics/qt/ImageQt.cpp: + (WebCore::Image::drawPattern): + (WebCore::BitmapImage::draw): + +2009-02-27 Zack Rusin + + Reviewed by Nikolas Zimmermann. + + Qt: be more reasonable about scrolled lines + + cMouseWheelPixelsPerLineStep is currently a constant set to 13.3. it doesn't + match our metrics meaning that Qt scrolls by ~2 lines by default which is quite + irritating. so lets scroll vertically by the Qt set number of lines * Qt default + single step scroll + + * platform/qt/WheelEventQt.cpp: + +2009-02-25 Dirk Schulze + + Reviewed by Oliver Hunt. + + Ported arcTo to Qt. Qt has no native support for arcTo. This changes + calculate the behavior of arcTo and draws it with lineTo and arc. + + [QT] implement Canvas arcTo + https://bugs.webkit.org/show_bug.cgi?id=23873 + + * platform/graphics/qt/PathQt.cpp: + (WebCore::Path::addArcTo): + +2009-03-12 Adam Treat + + Reviewed by Oliver Hunt. + + https://bugs.webkit.org/show_bug.cgi?id=24498 + Fix the Qt port to use the same algorithm for drawing dashed and dotted + borders as the other ports. This makes the Qt port pixel-for-pixel perfect + compared to border drawing with Apple's canonical mac port and much closer + to konqueror and firefox behavior. + + * platform/graphics/qt/GraphicsContextQt.cpp: + (WebCore::GraphicsContext::drawLine): + +2009-03-09 Adam Treat + + Reviewed by George Staikos. + + https://bugs.webkit.org/show_bug.cgi?id=24463 + WebCore::qstring is detaching and copying twice for every single + WebCore::TextRun that is processed and drawn. This elevates this method + to one of the top-ten most expensive methods in all of QtWebKit according + to profiling. This changes the method so that QString only detaches + when absolutely necessary. + + * platform/graphics/qt/FontQt.cpp: + (WebCore::qstring): + (WebCore::fixSpacing): + (WebCore::Font::drawComplexText): + (WebCore::Font::floatWidthForComplexText): + (WebCore::Font::offsetForPositionForComplexText): + (WebCore::Font::selectionRectForComplexText): + 2009-02-04 Simon Hausmann Unreviewed Qt build fix. diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp index deeea99..4e78083 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp @@ -37,20 +37,27 @@ #if QT_VERSION >= 0x040400 namespace WebCore { -static QString qstring(const TextRun& run) +static const QString qstring(const TextRun& run) { - QString string((QChar *)run.characters(), run.length()); - QChar *uc = string.data(); + //We don't detach + return QString::fromRawData((const QChar *)run.characters(), run.length()); +} + +static const QString fixSpacing(const QString &string) +{ + //Only detach if we're actually changing something + QString possiblyDetached = string; for (int i = 0; i < string.length(); ++i) { - if (Font::treatAsSpace(uc[i].unicode())) - uc[i] = 0x20; - else if (Font::treatAsZeroWidthSpace(uc[i].unicode())) - uc[i] = 0x200c; + const QChar c = string.at(i); + if (c.unicode() != 0x20 && Font::treatAsSpace(c.unicode())) { + possiblyDetached[i] = 0x20; //detach + } else if (c.unicode() != 0x200c && Font::treatAsZeroWidthSpace(c.unicode())) { + possiblyDetached[i] = 0x200c; //detach + } } - return string; + return possiblyDetached; } - static QTextLine setupLayout(QTextLayout* layout, const TextRun& style) { int flags = style.rtl() ? Qt::TextForceRightToLeft : Qt::TextForceLeftToRight; @@ -75,7 +82,7 @@ void Font::drawComplexText(GraphicsContext* ctx, const TextRun& run, const Float Color color = ctx->fillColor(); p->setPen(QColor(color)); - QString string = qstring(run); + const QString string = fixSpacing(qstring(run)); // text shadow IntSize shadowSize; @@ -144,7 +151,7 @@ float Font::floatWidthForComplexText(const TextRun& run) const { if (!run.length()) return 0; - QString string = qstring(run); + const QString string = fixSpacing(qstring(run)); QTextLayout layout(string, font()); QTextLine line = setupLayout(&layout, run); int w = int(line.naturalTextWidth()); @@ -157,7 +164,7 @@ float Font::floatWidthForComplexText(const TextRun& run) const int Font::offsetForPositionForComplexText(const TextRun& run, int position, bool includePartialGlyphs) const { - QString string = qstring(run); + const QString string = fixSpacing(qstring(run)); QTextLayout layout(string, font()); QTextLine line = setupLayout(&layout, run); return line.xToCursor(position); @@ -165,7 +172,7 @@ int Font::offsetForPositionForComplexText(const TextRun& run, int position, bool FloatRect Font::selectionRectForComplexText(const TextRun& run, const IntPoint& pt, int h, int from, int to) const { - QString string = qstring(run); + const QString string = fixSpacing(qstring(run)); QTextLayout layout(string, font()); QTextLine line = setupLayout(&layout, run); diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp index 936c1ea..6c90ea3 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp @@ -470,13 +470,21 @@ void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2) if (paintingDisabled()) return; + StrokeStyle style = strokeStyle(); + Color color = strokeColor(); + if (style == NoStroke || !color.alpha()) + return; + + float width = strokeThickness(); + FloatPoint p1 = point1; FloatPoint p2 = point2; + bool isVerticalLine = (p1.x() == p2.x()); QPainter *p = m_data->p(); const bool antiAlias = p->testRenderHint(QPainter::Antialiasing); p->setRenderHint(QPainter::Antialiasing, m_data->antiAliasingForRectsAndLines); - adjustLineToPixelBoundaries(p1, p2, strokeThickness(), strokeStyle()); + adjustLineToPixelBoundaries(p1, p2, width, style); IntSize shadowSize; int shadowBlur; @@ -489,8 +497,76 @@ void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2) p->restore(); } + int patWidth = 0; + switch (style) { + case NoStroke: + case SolidStroke: + break; + case DottedStroke: + patWidth = (int)width; + break; + case DashedStroke: + patWidth = 3 * (int)width; + break; + } + + if (patWidth) { + p->save(); + + // Do a rect fill of our endpoints. This ensures we always have the + // appearance of being a border. We then draw the actual dotted/dashed line. + if (isVerticalLine) { + p->fillRect(FloatRect(p1.x() - width / 2, p1.y() - width, width, width), color); + p->fillRect(FloatRect(p2.x() - width / 2, p2.y(), width, width), color); + } else { + p->fillRect(FloatRect(p1.x() - width, p1.y() - width / 2, width, width), color); + p->fillRect(FloatRect(p2.x(), p2.y() - width / 2, width, width), color); + } + + // Example: 80 pixels with a width of 30 pixels. + // Remainder is 20. The maximum pixels of line we could paint + // will be 50 pixels. + int distance = (isVerticalLine ? (point2.y() - point1.y()) : (point2.x() - point1.x())) - 2*(int)width; + int remainder = distance % patWidth; + int coverage = distance - remainder; + int numSegments = coverage / patWidth; + + float patternOffset = 0.0f; + // Special case 1px dotted borders for speed. + if (patWidth == 1) + patternOffset = 1.0f; + else { + bool evenNumberOfSegments = numSegments % 2 == 0; + if (remainder) + evenNumberOfSegments = !evenNumberOfSegments; + if (evenNumberOfSegments) { + if (remainder) { + patternOffset += patWidth - remainder; + patternOffset += remainder / 2; + } else + patternOffset = patWidth / 2; + } else { + if (remainder) + patternOffset = (patWidth - remainder)/2; + } + } + + QVector dashes; + dashes << qreal(patWidth) / width << qreal(patWidth) / width; + + QPen pen = p->pen(); + pen.setWidthF(width); + pen.setCapStyle(Qt::FlatCap); + pen.setDashPattern(dashes); + pen.setDashOffset(patternOffset / width); + p->setPen(pen); + } + p->drawLine(p1, p2); + if (patWidth) + p->restore(); + p->setRenderHint(QPainter::Antialiasing, antiAlias); } diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp index d1009b5..29a02d4 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp @@ -1,6 +1,7 @@ /* * Copyright (C) 2006 Nikolas Zimmermann * Copyright (C) 2008 Holger Hans Peter Freyther + * Copyright (C) 2009 Dirk Schulze * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -31,7 +32,6 @@ #include "GraphicsContext.h" #include "ImageData.h" #include "MIMETypeRegistry.h" -#include "NotImplemented.h" #include "StillImageQt.h" #include @@ -111,9 +111,7 @@ PassRefPtr ImageBuffer::getImageData(const IntRect& rect) const endy = m_size.height(); int numRows = endy - originy; - QImage image = m_data.m_pixmap.toImage(); - if (image.format() != QImage::Format_ARGB32) - image = image.convertToFormat(QImage::Format_ARGB32); + QImage image = m_data.m_pixmap.toImage().convertToFormat(QImage::Format_ARGB32); ASSERT(!image.isNull()); unsigned destBytesPerRow = 4 * rect.width(); @@ -134,9 +132,58 @@ PassRefPtr ImageBuffer::getImageData(const IntRect& rect) const return result; } -void ImageBuffer::putImageData(ImageData*, const IntRect&, const IntPoint&) +void ImageBuffer::putImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint) { - notImplemented(); + ASSERT(sourceRect.width() > 0); + ASSERT(sourceRect.height() > 0); + + int originx = sourceRect.x(); + int destx = destPoint.x() + sourceRect.x(); + ASSERT(destx >= 0); + ASSERT(destx < m_size.width()); + ASSERT(originx >= 0); + ASSERT(originx <= sourceRect.right()); + + int endx = destPoint.x() + sourceRect.right(); + ASSERT(endx <= m_size.width()); + + int numColumns = endx - destx; + + int originy = sourceRect.y(); + int desty = destPoint.y() + sourceRect.y(); + ASSERT(desty >= 0); + ASSERT(desty < m_size.height()); + ASSERT(originy >= 0); + ASSERT(originy <= sourceRect.bottom()); + + int endy = destPoint.y() + sourceRect.bottom(); + ASSERT(endy <= m_size.height()); + int numRows = endy - desty; + + unsigned srcBytesPerRow = 4 * source->width(); + + bool isPainting = m_data.m_painter->isActive(); + if (isPainting) + m_data.m_painter->end(); + + QImage image = m_data.m_pixmap.toImage().convertToFormat(QImage::Format_ARGB32); + ASSERT(!image.isNull()); + + unsigned char* srcRows = source->data()->data() + originy * srcBytesPerRow + originx * 4; + for (int y = 0; y < numRows; ++y) { + quint32* scanLine = reinterpret_cast(image.scanLine(y + desty)); + for (int x = 0; x < numColumns; x++) { + int basex = x * 4; + scanLine[x + destx] = reinterpret_cast(srcRows + basex)[0]; + } + + srcRows += srcBytesPerRow; + } + + m_data.m_pixmap = QPixmap::fromImage(image); + + if (isPainting) + m_data.m_painter->begin(&m_data.m_pixmap); } // We get a mimeType here but QImageWriter does not support mimetypes but diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageQt.cpp index be7d1e0..e266c07 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageQt.cpp @@ -109,6 +109,8 @@ void Image::drawPattern(GraphicsContext* ctxt, const FloatRect& tileRect, const ctxt->save(); ctxt->setCompositeOperation(op); QPainter* p = ctxt->platformContext(); + if (!pixmap.hasAlpha() && p->compositionMode() == QPainter::CompositionMode_SourceOver) + p->setCompositionMode(QPainter::CompositionMode_Source); p->setBrushOrigin(phase); p->fillRect(destRect, b); ctxt->restore(); @@ -146,6 +148,9 @@ void BitmapImage::draw(GraphicsContext* ctxt, const FloatRect& dst, QPainter* painter(ctxt->platformContext()); + if (!image->hasAlpha() && painter->compositionMode() == QPainter::CompositionMode_SourceOver) + painter->setCompositionMode(QPainter::CompositionMode_Source); + // Test using example site at // http://www.meyerweb.com/eric/css/edge/complexspiral/demo.html painter->drawPixmap(dst, *image, src); diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp index 90b342e..e68be2b 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp @@ -1,6 +1,7 @@ /* - * Copyright (C) 2006 Zack Rusin - * 2006 Rob Buis + * Copyright (C) 2006 Zack Rusin + * 2006 Rob Buis + * 2009 Dirk Schulze * * All rights reserved. * @@ -139,9 +140,72 @@ void Path::addBezierCurveTo(const FloatPoint& cp1, const FloatPoint& cp2, const void Path::addArcTo(const FloatPoint& p1, const FloatPoint& p2, float radius) { - //FIXME: busted - qWarning("arcTo is busted"); - m_path->arcTo(p1.x(), p1.y(), p2.x(), p2.y(), radius, 90); + FloatPoint p0(m_path->currentPosition()); + + if ((p1.x() == p0.x() && p1.y() == p0.y()) || (p1.x() == p2.x() && p1.y() == p2.y()) || radius == 0.f) { + m_path->lineTo(p1); + return; + } + + FloatPoint p1p0((p0.x() - p1.x()),(p0.y() - p1.y())); + FloatPoint p1p2((p2.x() - p1.x()),(p2.y() - p1.y())); + float p1p0_length = sqrtf(p1p0.x() * p1p0.x() + p1p0.y() * p1p0.y()); + float p1p2_length = sqrtf(p1p2.x() * p1p2.x() + p1p2.y() * p1p2.y()); + + double cos_phi = (p1p0.x() * p1p2.x() + p1p0.y() * p1p2.y()) / (p1p0_length * p1p2_length); + // all points on a line logic + if (cos_phi == -1) { + m_path->lineTo(p1); + return; + } + if (cos_phi == 1) { + // add infinite far away point + unsigned int max_length = 65535; + double factor_max = max_length / p1p0_length; + FloatPoint ep((p0.x() + factor_max * p1p0.x()), (p0.y() + factor_max * p1p0.y())); + m_path->lineTo(ep); + return; + } + + float tangent = radius / tan(acos(cos_phi) / 2); + float factor_p1p0 = tangent / p1p0_length; + FloatPoint t_p1p0((p1.x() + factor_p1p0 * p1p0.x()), (p1.y() + factor_p1p0 * p1p0.y())); + + FloatPoint orth_p1p0(p1p0.y(), -p1p0.x()); + float orth_p1p0_length = sqrt(orth_p1p0.x() * orth_p1p0.x() + orth_p1p0.y() * orth_p1p0.y()); + float factor_ra = radius / orth_p1p0_length; + + // angle between orth_p1p0 and p1p2 to get the right vector orthographic to p1p0 + double cos_alpha = (orth_p1p0.x() * p1p2.x() + orth_p1p0.y() * p1p2.y()) / (orth_p1p0_length * p1p2_length); + if (cos_alpha < 0.f) + orth_p1p0 = FloatPoint(-orth_p1p0.x(), -orth_p1p0.y()); + + FloatPoint p((t_p1p0.x() + factor_ra * orth_p1p0.x()), (t_p1p0.y() + factor_ra * orth_p1p0.y())); + + // calculate angles for addArc + orth_p1p0 = FloatPoint(-orth_p1p0.x(), -orth_p1p0.y()); + float sa = acos(orth_p1p0.x() / orth_p1p0_length); + if (orth_p1p0.y() < 0.f) + sa = 2 * piDouble - sa; + + // anticlockwise logic + bool anticlockwise = false; + + float factor_p1p2 = tangent / p1p2_length; + FloatPoint t_p1p2((p1.x() + factor_p1p2 * p1p2.x()), (p1.y() + factor_p1p2 * p1p2.y())); + FloatPoint orth_p1p2((t_p1p2.x() - p.x()),(t_p1p2.y() - p.y())); + float orth_p1p2_length = sqrtf(orth_p1p2.x() * orth_p1p2.x() + orth_p1p2.y() * orth_p1p2.y()); + float ea = acos(orth_p1p2.x() / orth_p1p2_length); + if (orth_p1p2.y() < 0) + ea = 2 * piDouble - ea; + if ((sa > ea) && ((sa - ea) < piDouble)) + anticlockwise = true; + if ((sa < ea) && ((ea - sa) > piDouble)) + anticlockwise = true; + + m_path->lineTo(t_p1p0); + + addArc(p, radius, sa, ea, anticlockwise); } void Path::closeSubpath() diff --git a/src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp b/src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp index 2de2125..2c730a6 100644 --- a/src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp +++ b/src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp @@ -269,8 +269,10 @@ void QNetworkReplyHandler::sendResponseIfNeeded() const bool isLocalFileReply = (m_reply->url().scheme() == QLatin1String("file")); int statusCode = m_reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); - if (!isLocalFileReply) + if (!isLocalFileReply) { response.setHTTPStatusCode(statusCode); + response.setHTTPStatusText(m_reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toByteArray().constData()); + } else if (m_reply->error() == QNetworkReply::ContentNotFoundError) response.setHTTPStatusCode(404); diff --git a/src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp index cc8acd2..b25ae7a 100644 --- a/src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp @@ -21,7 +21,9 @@ #include "PlatformWheelEvent.h" #include "PlatformMouseEvent.h" +#include "Scrollbar.h" +#include #include namespace WebCore { @@ -54,9 +56,14 @@ PlatformWheelEvent::PlatformWheelEvent(QWheelEvent* e) m_deltaY = (e->delta() / 120); } - // FIXME: retrieve the user setting for the number of lines to scroll on each wheel event - m_deltaX *= horizontalLineMultiplier(); - m_deltaY *= verticalLineMultiplier(); + m_deltaX *= QApplication::wheelScrollLines(); + // use the same single scroll step as QTextEdit (in + // QTextEditPrivate::init [h,v]bar->setSingleStep ) + // and divide by the default WebKit scroll step to + // get the Qt mouse wheel scroll behavior + static const float cDefaultQtScrollStep = 20.f; + m_deltaY *= QApplication::wheelScrollLines() * + (cDefaultQtScrollStep / cMouseWheelPixelsPerLineStep); } #endif // QT_NO_WHEELEVENT diff --git a/src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp b/src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp index 1d7d570..3229922 100644 --- a/src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp @@ -220,11 +220,11 @@ NPError PluginView::getValueStatic(NPNVariable variable, void* value) switch (variable) { case NPNVToolkit: - *((uint32 *)value) = 0; + *static_cast(value) = 0; return NPERR_NO_ERROR; case NPNVjavascriptEnabledBool: - *((uint32 *)value) = true; + *static_cast(value) = true; return NPERR_NO_ERROR; default: @@ -275,7 +275,7 @@ NPError PluginView::getValue(NPNVariable variable, void* value) } case NPNVsupportsCoreGraphicsBool: - *((uint32 *)value) = true; + *static_cast(value) = true; return NPERR_NO_ERROR; default: diff --git a/src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp b/src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp index 5aa8933..c8dd0e5 100644 --- a/src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp @@ -301,15 +301,15 @@ NPError PluginView::getValueStatic(NPNVariable variable, void* value) { switch (variable) { case NPNVToolkit: - *((uint32 *)value) = 0; + *static_cast(value) = 0; return NPERR_NO_ERROR; case NPNVSupportsXEmbedBool: - *((uint32 *)value) = true; + *static_cast(value) = true; return NPERR_NO_ERROR; case NPNVjavascriptEnabledBool: - *((uint32 *)value) = true; + *static_cast(value) = true; return NPERR_NO_ERROR; default: diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp index e17306d..c55b780 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp @@ -1450,9 +1450,16 @@ void QWebPage::triggerAction(WebAction action, bool checked) openNewWindow(url, frame); break; } - case CopyLinkToClipboard: + case CopyLinkToClipboard: { +#if defined(Q_WS_X11) + bool oldSelectionMode = Pasteboard::generalPasteboard()->isSelectionMode(); + Pasteboard::generalPasteboard()->setSelectionMode(true); + editor->copyURL(d->hitTestResult.linkUrl(), d->hitTestResult.linkText()); + Pasteboard::generalPasteboard()->setSelectionMode(oldSelectionMode); +#endif editor->copyURL(d->hitTestResult.linkUrl(), d->hitTestResult.linkText()); break; + } case OpenImageInNewWindow: openNewWindow(d->hitTestResult.imageUrl(), frame); break; diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog index 5a23200..e6c16ec 100644 --- a/src/3rdparty/webkit/WebKit/qt/ChangeLog +++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog @@ -1,3 +1,14 @@ +2009-03-02 Benjamin C Meyer + + Reviewed by George Staikos. + + https://bugs.webkit.org/show_bug.cgi?id=21230 + On X11 match the behavior of Firefox and also copy the url to the + clipboard selection when the action Copy Link Location is executed. + + * Api/qwebpage.cpp: + (QWebPage::triggerAction): + 2009-03-07 Adam Treat Reviewed by Cameron Zwarich. -- cgit v0.12 From 294f32f41da900ad3ae70e1546ea0057f8864d95 Mon Sep 17 00:00:00 2001 From: Frans Englich Date: Fri, 24 Apr 2009 10:23:13 +0200 Subject: Alias for QUtf16Codec is wrong. Requested/spotted by Nokia i18n team/Darpan. Task-number: 252102 Reviewed-by: Denis AutoTest: In this submit. --- src/corelib/codecs/qutfcodec.cpp | 4 +--- tests/auto/qtextcodec/tst_qtextcodec.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp index 281bf75..1ac592e 100644 --- a/src/corelib/codecs/qutfcodec.cpp +++ b/src/corelib/codecs/qutfcodec.cpp @@ -413,9 +413,7 @@ QByteArray QUtf16Codec::name() const QList QUtf16Codec::aliases() const { - QList list; - list << "ISO-10646-UCS-2"; - return list; + return QList(); } int QUtf16BECodec::mibEnum() const diff --git a/tests/auto/qtextcodec/tst_qtextcodec.cpp b/tests/auto/qtextcodec/tst_qtextcodec.cpp index b1bfb86..536b695 100644 --- a/tests/auto/qtextcodec/tst_qtextcodec.cpp +++ b/tests/auto/qtextcodec/tst_qtextcodec.cpp @@ -68,6 +68,7 @@ private slots: void flagEFBFBF() const; void decode0D() const; void codecForIndex() const; + void aliasForUTF16() const; void utf8Codec_data(); void utf8Codec(); @@ -453,6 +454,11 @@ void tst_QTextCodec::codecForIndex() const { } +void tst_QTextCodec::aliasForUTF16() const +{ + QVERIFY(QTextCodec::codecForName("UTF-16")->aliases().isEmpty()); +} + static QString fromInvalidUtf8Sequence(const QByteArray &ba) { return QString().fill(QChar::ReplacementCharacter, ba.size()); -- cgit v0.12 From fbdf2d74f010c85c85af4ee9ea793039cccf2354 Mon Sep 17 00:00:00 2001 From: Frans Englich Date: Fri, 24 Apr 2009 11:39:47 +0200 Subject: Return the correct MIB number for TSCII. When the code was written, IANA hadn't assigned one. Requested/spotted by Nokia i18n team. Task-number: 251790 Reviewed-by: Brad Reviewed-by: Denis AutoTest: In this submit. --- src/corelib/codecs/qtsciicodec.cpp | 3 +-- tests/auto/qtextcodec/tst_qtextcodec.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/corelib/codecs/qtsciicodec.cpp b/src/corelib/codecs/qtsciicodec.cpp index 14d2c9c..0ec0567 100644 --- a/src/corelib/codecs/qtsciicodec.cpp +++ b/src/corelib/codecs/qtsciicodec.cpp @@ -180,8 +180,7 @@ QByteArray QTsciiCodec::name() const */ int QTsciiCodec::mibEnum() const { - /* There is no MIBEnum for TSCII now */ - return -3197; + return 2107; } static const int UnToTsLast = 124; // 125 items -- so the last will be 124 diff --git a/tests/auto/qtextcodec/tst_qtextcodec.cpp b/tests/auto/qtextcodec/tst_qtextcodec.cpp index 536b695..cf4135b 100644 --- a/tests/auto/qtextcodec/tst_qtextcodec.cpp +++ b/tests/auto/qtextcodec/tst_qtextcodec.cpp @@ -69,6 +69,7 @@ private slots: void decode0D() const; void codecForIndex() const; void aliasForUTF16() const; + void mibForTSCII() const; void utf8Codec_data(); void utf8Codec(); @@ -459,6 +460,11 @@ void tst_QTextCodec::aliasForUTF16() const QVERIFY(QTextCodec::codecForName("UTF-16")->aliases().isEmpty()); } +void tst_QTextCodec::mibForTSCII() const +{ + QCOMPARE(QTextCodec::codecForName("TSCII")->mibEnum(), 2107); +} + static QString fromInvalidUtf8Sequence(const QByteArray &ba) { return QString().fill(QChar::ReplacementCharacter, ba.size()); -- cgit v0.12 From 225b516ea21e841ee52d2f3edb426eb781ab0c8d Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Fri, 24 Apr 2009 12:41:02 +0200 Subject: Updated WebKit from /home/shausman/src/webkit/trunk to origin/qtwebkit-4.5 ( 242472777d440a540b4bc944c84eb522388e384e ) Changes in WebKit since the last update: ++ b/ChangeLog 2009-04-24 Simon Hausmann Reviewed by Ariya Hidayat. Added support for generating API docs in the Qt build using "make docs" * WebKit.pro: Include docs.pri for "make docs" target. ++ b/WebKit/qt/ChangeLog 2009-04-24 Simon Hausmann Reviewed by Ariya Hidayat. Added support for generating API docs in the Qt build using "make docs" Added code snippets and overview from the Qt sources references in the API docs. * Api/qwebpage.cpp: Adjust paths to snippets. * Api/qwebview.cpp: Ditto. * docs/docs.pri: Added. * docs/qtwebkit.qdoc: Added. * docs/qtwebkit.qdocconf: Added. * docs/webkitsnippets/qtwebkit_build_snippet.qdoc: Added. * docs/webkitsnippets/qtwebkit_qwebview_snippet.cpp: Added. * docs/webkitsnippets/simple/main.cpp: Added. * docs/webkitsnippets/simple/simple.pro: Added. * docs/webkitsnippets/webpage/main.cpp: Added. * docs/webkitsnippets/webpage/webpage.pro: Added. Moved QtWebKit documentation into the WebKit project under src/3rdparty/webkit This is needed to have "make docs" inside WebKit and allows contributors to the WebKit project to write API docs. I'm doing the change in 4.5 to simplify merging with Qt 4.6. Reviewed-by: Trust me --- doc/src/qtwebkit.qdoc | 189 -------------------- doc/src/snippets/code/doc_src_qtwebkit.qdoc | 8 - .../src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp | 35 ---- doc/src/snippets/webkit/simple/main.cpp | 56 ------ doc/src/snippets/webkit/simple/simple.pro | 2 - doc/src/snippets/webkit/webpage/main.cpp | 62 ------- doc/src/snippets/webkit/webpage/webpage.pro | 3 - src/3rdparty/webkit/ChangeLog | 8 + src/3rdparty/webkit/VERSION | 2 +- src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp | 6 +- src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp | 14 +- src/3rdparty/webkit/WebKit/qt/ChangeLog | 20 +++ src/3rdparty/webkit/WebKit/qt/docs/docs.pri | 15 ++ src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc | 189 ++++++++++++++++++++ .../webkit/WebKit/qt/docs/qtwebkit.qdocconf | 195 +++++++++++++++++++++ .../webkitsnippets/qtwebkit_build_snippet.qdoc | 8 + .../webkitsnippets/qtwebkit_qwebview_snippet.cpp | 35 ++++ .../WebKit/qt/docs/webkitsnippets/simple/main.cpp | 34 ++++ .../qt/docs/webkitsnippets/simple/simple.pro | 2 + .../WebKit/qt/docs/webkitsnippets/webpage/main.cpp | 81 +++++++++ .../qt/docs/webkitsnippets/webpage/webpage.pro | 3 + tools/qdoc3/test/qt-build-docs.qdocconf | 3 +- tools/qdoc3/test/qt-inc.qdocconf | 3 +- tools/qdoc3/test/qt.qdocconf | 3 +- 24 files changed, 607 insertions(+), 369 deletions(-) delete mode 100644 doc/src/qtwebkit.qdoc delete mode 100644 doc/src/snippets/code/doc_src_qtwebkit.qdoc delete mode 100644 doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp delete mode 100644 doc/src/snippets/webkit/simple/main.cpp delete mode 100644 doc/src/snippets/webkit/simple/simple.pro delete mode 100644 doc/src/snippets/webkit/webpage/main.cpp delete mode 100644 doc/src/snippets/webkit/webpage/webpage.pro create mode 100644 src/3rdparty/webkit/WebKit/qt/docs/docs.pri create mode 100644 src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc create mode 100644 src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdocconf create mode 100644 src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_build_snippet.qdoc create mode 100644 src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_qwebview_snippet.cpp create mode 100644 src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/main.cpp create mode 100644 src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/simple.pro create mode 100644 src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/main.cpp create mode 100644 src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/webpage.pro diff --git a/doc/src/qtwebkit.qdoc b/doc/src/qtwebkit.qdoc deleted file mode 100644 index 0092950..0000000 --- a/doc/src/qtwebkit.qdoc +++ /dev/null @@ -1,189 +0,0 @@ -/*! - \module QtWebKit - \title QtWebKit Module - \contentspage Qt's Modules - \previouspage QtSvg - \nextpage QtXml - \ingroup architecture - \ingroup modules - \brief An introduction to the QtWebKit module. - - \keyword Browser - \keyword Web Browser - - \since 4.4 - - 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. - - QtWebKit provides facilities for rendering of HyperText Markup Language - (HTML), Extensible HyperText Markup Language (XHTML) and Scalable Vector - Graphics (SVG) documents, styled using Cascading Style Sheets (CSS) and - scripted with JavaScript. - - A bridge between the JavaScript execution environment and the Qt object - model makes it possible for custom QObjects to be scripted. Integration - with the Qt networking module enables Web pages to be transparently loaded - from Web servers, the local file system or even the Qt resource system. - - In addition to providing pure rendering features, HTML documents can be - made fully editable to the user through the use of the \c{contenteditable} - attribute on HTML elements. - - 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. - - The QtWebKit module is part of the \l{Qt Full Framework Edition}, and the - \l{Open Source Versions of Qt}. - - \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 in release mode only for embedded platforms. - - \note Web site icons, also known as "FavIcons", are currently not supported - on Windows. We plan to address this in a future release. - - \note WebKit has certain minimum requirements that must be met on - Embedded Linux systems. See the \l{Qt for Embedded Linux Requirements} - document for more information. - - Topics: - - \tableofcontents - - \section1 Configuring the Build Process - - Applications that use QtWebKit's classes need to be configured to be built - against the QtWebKit module. The following declaration in a \c qmake - project file ensures that an application is compiled and linked - appropriately: - - \snippet doc/src/snippets/code/doc_src_qtwebkit.qdoc 0 - - This line is necessary because only the QtCore and QtGui modules are used - in the default build process. - - To include the definitions of the module's classes, use the following - directive: - - \snippet doc/src/snippets/code/doc_src_qtwebkit.qdoc 1 - - \section1 Architecture - - The easiest way to render content is through the QWebView class. As a - widget it can be embedded into your forms or a graphics view, and it - provides convenience functions for downloading and rendering web sites. - - \snippet snippets/webkit/simple/main.cpp Using QWebView - - QWebView acts as a view onto Web pages, each of which is represented by an - instance of the QWebPage class. QWebPage provides access to the document - structure in a page, describing features such as frames, the navigation - history, and the undo/redo stack for editable content. - - HTML documents can be nested using frames in a frameset. An individual - frame in HTML is represented using the QWebFrame class. It includes the - bridge to the JavaScript window object and can be painted using QPainter. - Each QWebPage has one QWebFrame object as its main frame. - - Individual browser features, defaults and other settings can be configured - through the QWebSettings class. It is possible to provide defaults for all - QWebPage instances through the default settings. Individual attributes - can be overidden by the page specific settings object. - - \section1 Netscape Plugin Support - - Since WebKit supports the Netscape Plugin API, Qt applications can display - Web pages that embed common plugins, as long as the user has the appropriate - binary files for those plugins installed. - - The following locations are searched for plugins: - - \table - \header \o Linux/Unix \o Windows - \row \o{1,3} - \list - \o \c{.mozilla/plugins} in the user's home directory - \o \c{.netscape/plugins} in the user's home directory - \o System locations, such as - \list - \o \c{/usr/lib/browser/plugins} - \o \c{/usr/local/lib/mozilla/plugins} - \o \c{/usr/lib/firefox/plugins} - \o \c{/usr/lib64/browser-plugins} - \o \c{/usr/lib/browser-plugins} - \o \c{/usr/lib/mozilla/plugins} - \o \c{/usr/local/netscape/plugins} - \o \c{/opt/mozilla/plugins} - \o \c{/opt/mozilla/lib/plugins} - \o \c{/opt/netscape/plugins} - \o \c{/opt/netscape/communicator/plugins} - \o \c{/usr/lib/netscape/plugins} - \o \c{/usr/lib/netscape/plugins-libc5} - \o \c{/usr/lib/netscape/plugins-libc6} - \o \c{/usr/lib64/netscape/plugins} - \o \c{/usr/lib64/mozilla/plugins} - \endlist - \o Locations specified by environment variables: - \list - \o \c{$MOZILLA_HOME/plugins} - \o \c{$MOZ_PLUGIN_PATH} - \o \c{$QTWEBKIT_PLUGIN_PATH} - \endlist - \endlist - - \o - \list - \o The user's \c{Application Data\Mozilla\plugins} directory - \o Standard system locations of plugins for Quicktime, Flash, etc. - \endlist - - \row - \raw HTML - Mac OS X - \endraw - \row - \o - \list - \o \c{Library/Internet Plug-Ins} in the user's home directory - \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 Lesser General Public License (LGPL). - - Developers using the Open Source Edition can choose to redistribute - the module under the appropriate version of the GNU LGPL; version 2.1 - for applications and libraries licensed under the GNU GPL version 2, - or version 3 for applications and libraries licensed under the GNU - GPL version 2. - - \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/doc/src/snippets/code/doc_src_qtwebkit.qdoc b/doc/src/snippets/code/doc_src_qtwebkit.qdoc deleted file mode 100644 index d4fc2bd..0000000 --- a/doc/src/snippets/code/doc_src_qtwebkit.qdoc +++ /dev/null @@ -1,8 +0,0 @@ -//! [0] -QT += webkit -//! [0] - - -//! [1] -#include -//! [1] diff --git a/doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp b/doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp deleted file mode 100644 index f04cd29..0000000 --- a/doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp +++ /dev/null @@ -1,35 +0,0 @@ - -void wrapInFunction() -{ - -//! [0] - view->page()->history(); -//! [0] - - -//! [1] - view->page()->settings(); -//! [1] - - -//! [2] - view->triggerAction(QWebPage::Copy); -//! [2] - - -//! [3] - view->page()->triggerPageAction(QWebPage::Stop); -//! [3] - - -//! [4] - view->page()->triggerPageAction(QWebPage::GoBack); -//! [4] - - -//! [5] - view->page()->triggerPageAction(QWebPage::GoForward); -//! [5] - -} - diff --git a/doc/src/snippets/webkit/simple/main.cpp b/doc/src/snippets/webkit/simple/main.cpp deleted file mode 100644 index a6a4fc2..0000000 --- a/doc/src/snippets/webkit/simple/main.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** Contact: Qt Software Information (qt-info@nokia.com) -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the either Technology Preview License Agreement or the -** Beta Release License Agreement. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include -#include - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - QWidget *parent = 0; -//! [Using QWebView] - QWebView *view = new QWebView(parent); - view->load(QUrl("http://qtsoftware.com/")); - view->show(); -//! [Using QWebView] - return app.exec(); -} diff --git a/doc/src/snippets/webkit/simple/simple.pro b/doc/src/snippets/webkit/simple/simple.pro deleted file mode 100644 index 61cd3bf..0000000 --- a/doc/src/snippets/webkit/simple/simple.pro +++ /dev/null @@ -1,2 +0,0 @@ -QT += webkit -SOURCES = main.cpp diff --git a/doc/src/snippets/webkit/webpage/main.cpp b/doc/src/snippets/webkit/webpage/main.cpp deleted file mode 100644 index b433ac2..0000000 --- a/doc/src/snippets/webkit/webpage/main.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include -#include -#include - -//! [0] -class Thumbnailer : public QObject -{ - Q_OBJECT - -public: - Thumbnailer(const QUrl &url); - -signals: - void finished(); - -private slots: - void render(); - -private: - QWebPage page; - -}; -//! [0] - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - Thumbnailer thumbnail(QUrl("http://qtsoftware.com")); - - QObject::connect(&thumbnail, SIGNAL(finished()), - &app, SLOT(quit())); - - return app.exec(); -} - -//! [1] -Thumbnailer::Thumbnailer(const QUrl &url) -{ - page.mainFrame()->load(url); - connect(&page, SIGNAL(loadFinished(bool)), - this, SLOT(render())); -} -//! [1] - -//! [2] -void Thumbnailer::render() -{ - page.setViewportSize(page.mainFrame()->contentsSize()); - QImage image(page.viewportSize(), QImage::Format_ARGB32); - QPainter painter(&image); - - page.mainFrame()->render(&painter); - painter.end(); - - QImage thumbnail = image.scaled(400, 400); - thumbnail.save("thumbnail.png"); - - emit finished(); -} -//! [2] -#include "main.moc" diff --git a/doc/src/snippets/webkit/webpage/webpage.pro b/doc/src/snippets/webkit/webpage/webpage.pro deleted file mode 100644 index fcad03b..0000000 --- a/doc/src/snippets/webkit/webpage/webpage.pro +++ /dev/null @@ -1,3 +0,0 @@ -CONFIG += console -QT += webkit -SOURCES = main.cpp \ No newline at end of file diff --git a/src/3rdparty/webkit/ChangeLog b/src/3rdparty/webkit/ChangeLog index ec8242d..76cfc80 100644 --- a/src/3rdparty/webkit/ChangeLog +++ b/src/3rdparty/webkit/ChangeLog @@ -1,3 +1,11 @@ +2009-04-24 Simon Hausmann + + Reviewed by Ariya Hidayat. + + Added support for generating API docs in the Qt build using "make docs" + + * WebKit.pro: Include docs.pri for "make docs" target. + 2008-12-19 Marco Barisione Reviewed by Holger Freyther. diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION index 60c9ba7..250eb90 100644 --- a/src/3rdparty/webkit/VERSION +++ b/src/3rdparty/webkit/VERSION @@ -8,4 +8,4 @@ The commit imported was from the and has the sha1 checksum - d5ea85e03f22fb6fb87275774a2c53031941017e + 242472777d440a540b4bc944c84eb522388e384e diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp index c55b780..4828543 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp @@ -1198,18 +1198,18 @@ QVariant QWebPage::inputMethodQuery(Qt::InputMethodQuery property) const Suppose we have a \c Thumbnail class as follows: - \snippet doc/src/snippets/webkit/webpage/main.cpp 0 + \snippet webkitsnippets/webpage/main.cpp 0 The \c Thumbnail's constructor takes in a \a url. We connect our QWebPage object's \l{QWebPage::}{loadFinished()} signal to our private slot, \c render(). - \snippet doc/src/snippets/webkit/webpage/main.cpp 1 + \snippet webkitsnippets/webpage/main.cpp 1 The \c render() function shows how we can paint a thumbnail using a QWebPage object. - \snippet doc/src/snippets/webkit/webpage/main.cpp 2 + \snippet webkitsnippets/webpage/main.cpp 2 We begin by setting the \l{QWebPage::viewportSize()}{viewportSize} and then we instantiate a QImage object, \c image, with the same size as our diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp index a843eba..9753f4f 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp @@ -86,7 +86,7 @@ public: Qt Widgets, the show() function must be invoked in order to display QWebView. The snippet below illustrates this: - \snippet doc/src/snippets/webkit/simple/main.cpp Using QWebView + \snippet webkitsnippets/simple/main.cpp Using QWebView Alternatively, setUrl() can also be used to load a web site. If you have the HTML content readily available, you can use setHtml() instead. @@ -325,7 +325,7 @@ void QWebView::setContent(const QByteArray &data, const QString &mimeType, const It is equivalent to - \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 0 + \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 0 */ QWebHistory *QWebView::history() const { @@ -337,7 +337,7 @@ QWebHistory *QWebView::history() const It is equivalent to - \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 1 + \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 1 \sa QWebSettings::globalSettings() */ @@ -429,7 +429,7 @@ QAction *QWebView::pageAction(QWebPage::WebAction action) const The following example triggers the copy action and therefore copies any selected text to the clipboard. - \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 2 + \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 2 \sa pageAction() */ @@ -606,7 +606,7 @@ void QWebView::print(QPrinter *printer) const It is equivalent to - \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 3 + \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 3 \sa reload(), pageAction(), loadFinished() */ @@ -622,7 +622,7 @@ void QWebView::stop() It is equivalent to - \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 4 + \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 4 \sa forward(), pageAction() */ @@ -638,7 +638,7 @@ void QWebView::back() It is equivalent to - \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 5 + \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 5 \sa back(), pageAction() */ diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog index e6c16ec..640f652 100644 --- a/src/3rdparty/webkit/WebKit/qt/ChangeLog +++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog @@ -1,3 +1,23 @@ +2009-04-24 Simon Hausmann + + Reviewed by Ariya Hidayat. + + Added support for generating API docs in the Qt build using "make docs" + + Added code snippets and overview from the Qt sources references in the API docs. + + * Api/qwebpage.cpp: Adjust paths to snippets. + * Api/qwebview.cpp: Ditto. + * docs/docs.pri: Added. + * docs/qtwebkit.qdoc: Added. + * docs/qtwebkit.qdocconf: Added. + * docs/webkitsnippets/qtwebkit_build_snippet.qdoc: Added. + * docs/webkitsnippets/qtwebkit_qwebview_snippet.cpp: Added. + * docs/webkitsnippets/simple/main.cpp: Added. + * docs/webkitsnippets/simple/simple.pro: Added. + * docs/webkitsnippets/webpage/main.cpp: Added. + * docs/webkitsnippets/webpage/webpage.pro: Added. + 2009-03-02 Benjamin C Meyer Reviewed by George Staikos. diff --git a/src/3rdparty/webkit/WebKit/qt/docs/docs.pri b/src/3rdparty/webkit/WebKit/qt/docs/docs.pri new file mode 100644 index 0000000..4a8c165 --- /dev/null +++ b/src/3rdparty/webkit/WebKit/qt/docs/docs.pri @@ -0,0 +1,15 @@ +include(../../../WebKit.pri) + +unix { + QDOC = SRCDIR=$$PWD/../../.. OUTPUT_DIR=$$OUTPUT_DIR $$(QTDIR)/tools/qdoc3/qdoc3 +} else { + QDOC = $$(QTDIR)\tools\qdoc3\release\qdoc3.exe +} + +unix { +docs.commands = $$QDOC $$PWD/qtwebkit.qdocconf +} else { +docs.commands = \"$$QDOC $$PWD/qtwebkit.qdocconf\" +} + +QMAKE_EXTRA_TARGETS += docs diff --git a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc new file mode 100644 index 0000000..06305e0 --- /dev/null +++ b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc @@ -0,0 +1,189 @@ +/*! + \module QtWebKit + \title QtWebKit Module + \contentspage Qt's Modules + \previouspage QtSvg + \nextpage QtXml + \ingroup architecture + \ingroup modules + \brief An introduction to the QtWebKit module. + + \keyword Browser + \keyword Web Browser + + \since 4.4 + + 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. + + QtWebKit provides facilities for rendering of HyperText Markup Language + (HTML), Extensible HyperText Markup Language (XHTML) and Scalable Vector + Graphics (SVG) documents, styled using Cascading Style Sheets (CSS) and + scripted with JavaScript. + + A bridge between the JavaScript execution environment and the Qt object + model makes it possible for custom QObjects to be scripted. Integration + with the Qt networking module enables Web pages to be transparently loaded + from Web servers, the local file system or even the Qt resource system. + + In addition to providing pure rendering features, HTML documents can be + made fully editable to the user through the use of the \c{contenteditable} + attribute on HTML elements. + + 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. + + The QtWebKit module is part of the \l{Qt Full Framework Edition}, and the + \l{Open Source Versions of Qt}. + + \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 in release mode only for embedded platforms. + + \note Web site icons, also known as "FavIcons", are currently not supported + on Windows. We plan to address this in a future release. + + \note WebKit has certain minimum requirements that must be met on + Embedded Linux systems. See the \l{Qt for Embedded Linux Requirements} + document for more information. + + Topics: + + \tableofcontents + + \section1 Configuring the Build Process + + Applications that use QtWebKit's classes need to be configured to be built + against the QtWebKit module. The following declaration in a \c qmake + project file ensures that an application is compiled and linked + appropriately: + + \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 0 + + This line is necessary because only the QtCore and QtGui modules are used + in the default build process. + + To include the definitions of the module's classes, use the following + directive: + + \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 1 + + \section1 Architecture + + The easiest way to render content is through the QWebView class. As a + widget it can be embedded into your forms or a graphics view, and it + provides convenience functions for downloading and rendering web sites. + + \snippet webkitsnippets/simple/main.cpp Using QWebView + + QWebView acts as a view onto Web pages, each of which is represented by an + instance of the QWebPage class. QWebPage provides access to the document + structure in a page, describing features such as frames, the navigation + history, and the undo/redo stack for editable content. + + HTML documents can be nested using frames in a frameset. An individual + frame in HTML is represented using the QWebFrame class. It includes the + bridge to the JavaScript window object and can be painted using QPainter. + Each QWebPage has one QWebFrame object as its main frame. + + Individual browser features, defaults and other settings can be configured + through the QWebSettings class. It is possible to provide defaults for all + QWebPage instances through the default settings. Individual attributes + can be overidden by the page specific settings object. + + \section1 Netscape Plugin Support + + Since WebKit supports the Netscape Plugin API, Qt applications can display + Web pages that embed common plugins, as long as the user has the appropriate + binary files for those plugins installed. + + The following locations are searched for plugins: + + \table + \header \o Linux/Unix \o Windows + \row \o{1,3} + \list + \o \c{.mozilla/plugins} in the user's home directory + \o \c{.netscape/plugins} in the user's home directory + \o System locations, such as + \list + \o \c{/usr/lib/browser/plugins} + \o \c{/usr/local/lib/mozilla/plugins} + \o \c{/usr/lib/firefox/plugins} + \o \c{/usr/lib64/browser-plugins} + \o \c{/usr/lib/browser-plugins} + \o \c{/usr/lib/mozilla/plugins} + \o \c{/usr/local/netscape/plugins} + \o \c{/opt/mozilla/plugins} + \o \c{/opt/mozilla/lib/plugins} + \o \c{/opt/netscape/plugins} + \o \c{/opt/netscape/communicator/plugins} + \o \c{/usr/lib/netscape/plugins} + \o \c{/usr/lib/netscape/plugins-libc5} + \o \c{/usr/lib/netscape/plugins-libc6} + \o \c{/usr/lib64/netscape/plugins} + \o \c{/usr/lib64/mozilla/plugins} + \endlist + \o Locations specified by environment variables: + \list + \o \c{$MOZILLA_HOME/plugins} + \o \c{$MOZ_PLUGIN_PATH} + \o \c{$QTWEBKIT_PLUGIN_PATH} + \endlist + \endlist + + \o + \list + \o The user's \c{Application Data\Mozilla\plugins} directory + \o Standard system locations of plugins for Quicktime, Flash, etc. + \endlist + + \row + \raw HTML + Mac OS X + \endraw + \row + \o + \list + \o \c{Library/Internet Plug-Ins} in the user's home directory + \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 Lesser General Public License (LGPL). + + Developers using the Open Source Edition can choose to redistribute + the module under the appropriate version of the GNU LGPL; version 2.1 + for applications and libraries licensed under the GNU GPL version 2, + or version 3 for applications and libraries licensed under the GNU + GPL version 2. + + \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/qtwebkit.qdocconf b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdocconf new file mode 100644 index 0000000..e60e586 --- /dev/null +++ b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdocconf @@ -0,0 +1,195 @@ +# Run qdoc from the directory that contains this file. + +project = qtwebkit +description = "Qt WebKit API Documentation" + +headerdirs = $SRCDIR/WebKit/qt/Api +sourcedirs = $SRCDIR/WebKit/qt/Api $SRCDIR/WebKit/qt/docs +outputdir = $OUTPUT_DIR/doc/html +outputformats = HTML +sources.fileextensions = "*.cpp *.doc *.qdoc *.h" +exampledirs = $SRCDIR/WebKit/qt/docs + +indexes = $QTDIR/doc/html/qt.index + +# macros.qdocconf + +macro.aring.HTML = "å" +macro.Auml.HTML = "Ä" +macro.author = "\\bold{Author:}" +macro.br.HTML = "
" +macro.BR.HTML = "
" +macro.aacute.HTML = "á" +macro.eacute.HTML = "é" +macro.iacute.HTML = "í" +macro.gui = "\\bold" +macro.hr.HTML = "
" +macro.key = "\\bold" +macro.menu = "\\bold" +macro.note = "\\bold{Note:}" +macro.oslash.HTML = "ø" +macro.ouml.HTML = "ö" +macro.QA = "\\e{Qt Assistant}" +macro.QD = "\\e{Qt Designer}" +macro.QL = "\\e{Qt Linguist}" +macro.param = "\\e" +macro.raisedaster.HTML = "*" +macro.reg.HTML = "®" +macro.return = "Returns" +macro.starslash = "\\c{*/}" +macro.uuml.HTML = "ü" +macro.mdash.HTML = "—" + +# compat.qdocconf + +alias.i = e +alias.include = input + +macro.0 = "\\\\0" +macro.b = "\\\\b" +macro.n = "\\\\n" +macro.r = "\\\\r" +macro.i = "\\o" +macro.i11 = "\\o{1,1}" +macro.i12 = "\\o{1,2}" +macro.i13 = "\\o{1,3}" +macro.i14 = "\\o{1,4}" +macro.i15 = "\\o{1,5}" +macro.i16 = "\\o{1,6}" +macro.i17 = "\\o{1,7}" +macro.i18 = "\\o{1,8}" +macro.i19 = "\\o{1,9}" +macro.i21 = "\\o{2,1}" +macro.i31 = "\\o{3,1}" +macro.i41 = "\\o{4,1}" +macro.i51 = "\\o{5,1}" +macro.i61 = "\\o{6,1}" +macro.i71 = "\\o{7,1}" +macro.i81 = "\\o{8,1}" +macro.i91 = "\\o{9,1}" +macro.img = "\\image" +macro.endquote = "\\endquotation" + +spurious = "Missing comma in .*" \ + "Missing pattern .*" + +# Doxygen compatibility commands + +macro.see = "\\sa" +macro.function = "\\fn" + +# qt-cpp-ignore.qdocconf + +Cpp.ignoretokens = QAXFACTORY_EXPORT \ + QDESIGNER_COMPONENTS_LIBRARY \ + QDESIGNER_EXTENSION_LIBRARY \ + QDESIGNER_SDK_LIBRARY \ + QDESIGNER_SHARED_LIBRARY \ + QDESIGNER_UILIB_LIBRARY \ + QM_EXPORT_CANVAS \ + QM_EXPORT_DNS \ + QM_EXPORT_DOM \ + QM_EXPORT_FTP \ + QM_EXPORT_HTTP \ + QM_EXPORT_ICONVIEW \ + QM_EXPORT_NETWORK \ + QM_EXPORT_OPENGL \ + QM_EXPORT_SQL \ + QM_EXPORT_TABLE \ + QM_EXPORT_WORKSPACE \ + QM_EXPORT_XML \ + QT_ASCII_CAST_WARN \ + QT_ASCII_CAST_WARN_CONSTRUCTOR \ + QT_BEGIN_HEADER \ + QT_DESIGNER_STATIC \ + QT_END_HEADER \ + QT_FASTCALL \ + QT_WIDGET_PLUGIN_EXPORT \ + Q_COMPAT_EXPORT \ + Q_CORE_EXPORT \ + Q_EXPLICIT \ + Q_EXPORT \ + Q_EXPORT_CODECS_CN \ + Q_EXPORT_CODECS_JP \ + Q_EXPORT_CODECS_KR \ + Q_EXPORT_PLUGIN \ + Q_GFX_INLINE \ + Q_GUI_EXPORT \ + Q_GUI_EXPORT_INLINE \ + Q_GUI_EXPORT_STYLE_CDE \ + Q_GUI_EXPORT_STYLE_COMPACT \ + Q_GUI_EXPORT_STYLE_MAC \ + Q_GUI_EXPORT_STYLE_MOTIF \ + Q_GUI_EXPORT_STYLE_MOTIFPLUS \ + Q_GUI_EXPORT_STYLE_PLATINUM \ + Q_GUI_EXPORT_STYLE_POCKETPC \ + Q_GUI_EXPORT_STYLE_SGI \ + Q_GUI_EXPORT_STYLE_WINDOWS \ + Q_GUI_EXPORT_STYLE_WINDOWSXP \ + QHELP_EXPORT \ + Q_INLINE_TEMPLATE \ + Q_INTERNAL_WIN_NO_THROW \ + Q_NETWORK_EXPORT \ + Q_OPENGL_EXPORT \ + Q_OUTOFLINE_TEMPLATE \ + Q_SQL_EXPORT \ + Q_SVG_EXPORT \ + Q_SCRIPT_EXPORT \ + Q_TESTLIB_EXPORT \ + Q_TYPENAME \ + Q_XML_EXPORT \ + Q_XMLSTREAM_EXPORT \ + Q_XMLPATTERNS_EXPORT \ + QDBUS_EXPORT \ + QT_BEGIN_NAMESPACE \ + QT_BEGIN_INCLUDE_NAMESPACE \ + QT_END_NAMESPACE \ + QT_END_INCLUDE_NAMESPACE \ + PHONON_EXPORT \ + EXTENSIONSYSTEM_EXPORT +Cpp.ignoredirectives = Q_DECLARE_HANDLE \ + Q_DECLARE_INTERFACE \ + Q_DECLARE_METATYPE \ + Q_DECLARE_OPERATORS_FOR_FLAGS \ + Q_DECLARE_PRIVATE \ + Q_DECLARE_PUBLIC \ + Q_DECLARE_SHARED \ + Q_DECLARE_TR_FUNCTIONS \ + Q_DECLARE_TYPEINFO \ + Q_DISABLE_COPY \ + QT_FORWARD_DECLARE_CLASS \ + Q_DUMMY_COMPARISON_OPERATOR \ + Q_ENUMS \ + Q_FLAGS \ + Q_INTERFACES \ + __attribute__ \ + K_DECLARE_PRIVATE \ + PHONON_OBJECT \ + PHONON_HEIR + + + +HTML.style = "" \ + "h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }"\ + "a:link { color: #004faf; text-decoration: none }"\ + "a:visited { color: #672967; text-decoration: none }"\ + "td.postheader { font-family: sans-serif }"\ + "tr.address { font-family: sans-serif }"\ + "body { background: #ffffff; color: black }"\ + "table tr.odd { background: #f0f0f0; color: black; }"\ + "table tr.even { background: #e4e4e4; color: black; }"\ + "table.annotated th { padding: 3px; text-align: left }"\ + "table.annotated td { padding: 3px; } "\ + "table tr pre { padding-top: none; padding-bottom: none; padding-left: none; padding-right: none; border: none; background: none }"\ + "tr.qt-style { background: #a2c511; color: black }"\ + "body pre { padding: 0.2em; border: #e7e7e7 1px solid; background: #f1f1f1; color: black }"\ + "span.preprocessor, span.preprocessor a { color: darkblue; }"\ + "span.comment { color: darkred; font-style: italic }"\ + "span.string,span.char { color: darkgreen; }"\ + ".title { text-align: center }"\ + ".subtitle { font-size: 0.8em }"\ + ".small-subtitle { font-size: 0.65em }" + +HTML.postheader = "" + +HTML.footer = "" diff --git a/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_build_snippet.qdoc b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_build_snippet.qdoc new file mode 100644 index 0000000..d4fc2bd --- /dev/null +++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_build_snippet.qdoc @@ -0,0 +1,8 @@ +//! [0] +QT += webkit +//! [0] + + +//! [1] +#include +//! [1] diff --git a/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_qwebview_snippet.cpp b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_qwebview_snippet.cpp new file mode 100644 index 0000000..f04cd29 --- /dev/null +++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_qwebview_snippet.cpp @@ -0,0 +1,35 @@ + +void wrapInFunction() +{ + +//! [0] + view->page()->history(); +//! [0] + + +//! [1] + view->page()->settings(); +//! [1] + + +//! [2] + view->triggerAction(QWebPage::Copy); +//! [2] + + +//! [3] + view->page()->triggerPageAction(QWebPage::Stop); +//! [3] + + +//! [4] + view->page()->triggerPageAction(QWebPage::GoBack); +//! [4] + + +//! [5] + view->page()->triggerPageAction(QWebPage::GoForward); +//! [5] + +} + diff --git a/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/main.cpp b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/main.cpp new file mode 100644 index 0000000..82f5b6c --- /dev/null +++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/main.cpp @@ -0,0 +1,34 @@ +/* + Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies) + + 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. +*/ + +#include +#include +#include + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + QWidget *parent = 0; +//! [Using QWebView] + QWebView *view = new QWebView(parent); + view->load(QUrl("http://qtsoftware.com/")); + view->show(); +//! [Using QWebView] + return app.exec(); +} diff --git a/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/simple.pro b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/simple.pro new file mode 100644 index 0000000..61cd3bf --- /dev/null +++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/simple.pro @@ -0,0 +1,2 @@ +QT += webkit +SOURCES = main.cpp diff --git a/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/main.cpp b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/main.cpp new file mode 100644 index 0000000..b91bc30 --- /dev/null +++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/main.cpp @@ -0,0 +1,81 @@ +/* + Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies) + + 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. +*/ + +#include +#include +#include + +//! [0] +class Thumbnailer : public QObject +{ + Q_OBJECT + +public: + Thumbnailer(const QUrl &url); + +signals: + void finished(); + +private slots: + void render(); + +private: + QWebPage page; + +}; +//! [0] + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + Thumbnailer thumbnail(QUrl("http://qtsoftware.com")); + + QObject::connect(&thumbnail, SIGNAL(finished()), + &app, SLOT(quit())); + + return app.exec(); +} + +//! [1] +Thumbnailer::Thumbnailer(const QUrl &url) +{ + page.mainFrame()->load(url); + connect(&page, SIGNAL(loadFinished(bool)), + this, SLOT(render())); +} +//! [1] + +//! [2] +void Thumbnailer::render() +{ + page.setViewportSize(page.mainFrame()->contentsSize()); + QImage image(page.viewportSize(), QImage::Format_ARGB32); + QPainter painter(&image); + + page.mainFrame()->render(&painter); + painter.end(); + + QImage thumbnail = image.scaled(400, 400); + thumbnail.save("thumbnail.png"); + + emit finished(); +} +//! [2] +#include "main.moc" diff --git a/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/webpage.pro b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/webpage.pro new file mode 100644 index 0000000..fcad03b --- /dev/null +++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/webpage.pro @@ -0,0 +1,3 @@ +CONFIG += console +QT += webkit +SOURCES = main.cpp \ No newline at end of file diff --git a/tools/qdoc3/test/qt-build-docs.qdocconf b/tools/qdoc3/test/qt-build-docs.qdocconf index 14e48a9..a1baf2f 100644 --- a/tools/qdoc3/test/qt-build-docs.qdocconf +++ b/tools/qdoc3/test/qt-build-docs.qdocconf @@ -105,7 +105,8 @@ exampledirs = $QT_SOURCE_TREE/doc/src \ $QT_SOURCE_TREE/examples \ $QT_SOURCE_TREE/examples/tutorials \ $QT_SOURCE_TREE \ - $QT_SOURCE_TREE/qmake/examples + $QT_SOURCE_TREE/qmake/examples \ + $QT_SOURCE_TREE/src/3rdparty/webkit/WebKit/qt/docs imagedirs = $QT_SOURCE_TREE/doc/src/images \ $QT_SOURCE_TREE/examples outputdir = $QT_BUILD_TREE/doc/html diff --git a/tools/qdoc3/test/qt-inc.qdocconf b/tools/qdoc3/test/qt-inc.qdocconf index 18d3faf..7255a67 100644 --- a/tools/qdoc3/test/qt-inc.qdocconf +++ b/tools/qdoc3/test/qt-inc.qdocconf @@ -20,7 +20,8 @@ headerdirs = $QDOC_CURRENT_DIR exampledirs = $QTDIR/doc/src \ $QTDIR/examples \ $QTDIR \ - $QTDIR/qmake/examples + $QTDIR/qmake/examples \ + $QTDIR/src/3rdparty/webkit/WebKit/qt/docs imagedirs = $QTDIR/doc/src/images \ $QTDIR/examples outputdir = $QTDIR/doc/html diff --git a/tools/qdoc3/test/qt.qdocconf b/tools/qdoc3/test/qt.qdocconf index f7e774d..8859511 100644 --- a/tools/qdoc3/test/qt.qdocconf +++ b/tools/qdoc3/test/qt.qdocconf @@ -107,7 +107,8 @@ exampledirs = $QTDIR/doc/src \ $QTDIR/examples \ $QTDIR/examples/tutorials \ $QTDIR \ - $QTDIR/qmake/examples + $QTDIR/qmake/examples \ + $QTDIR/src/3rdparty/webkit/WebKit/qt/docs imagedirs = $QTDIR/doc/src/images \ $QTDIR/examples outputdir = $QTDIR/doc/html -- cgit v0.12