[SCM] WebKit Debian packaging branch, debian/unstable, updated. 0+svn29752-1-1645-gd3fe478

Mike Hommey glandium at debian.org
Sat Apr 12 19:56:54 UTC 2008


The following commit has been merged in the debian/unstable branch:
commit 857668d36ed877517cea292fb78ce124ade06eec
Merge: 24180a9e2b7396b161c6fdae08ba9e3c56d395f2 c77f42765c0a6cd82cafa8c88ab158c064b34a6e
Author: Mike Hommey <glandium at debian.org>
Date:   Sun Apr 6 17:59:39 2008 +0200

    Merge branch 'debian/experimental' into debian/unstable
    
    Conflicts:
    
    	JavaScriptCore/kjs/interpreter.cpp
    	WebCore/ksvg2/svg/SVGFontFaceElement.cpp
    	WebCore/loader/icon/IconDatabase.cpp
    	WebKit.pro

diff --combined JavaScriptCore/wtf/ASCIICType.h
index 3e61a87,8f8e357..3c4489f
--- a/JavaScriptCore/wtf/ASCIICType.h
+++ b/JavaScriptCore/wtf/ASCIICType.h
@@@ -48,48 -48,63 +48,63 @@@ namespace WTF 
  #if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED)
      inline bool isASCIIAlpha(wchar_t c) { return (c | 0x20) >= 'a' && (c | 0x20) <= 'z'; }
  #endif
+     inline bool isASCIIAlpha(int c) { return (c | 0x20) >= 'a' && (c | 0x20) <= 'z'; }
  
 -    inline bool isASCIIAlphanumeric(char c) { return c >= '0' && c <= '9' || (c | 0x20) >= 'a' && (c | 0x20) <= 'z'; }
 -    inline bool isASCIIAlphanumeric(unsigned short c) { return c >= '0' && c <= '9' || (c | 0x20) >= 'a' && (c | 0x20) <= 'z'; }
 +    inline bool isASCIIAlphanumeric(char c) { return (c >= '0' && c <= '9') || ((c | 0x20) >= 'a' && (c | 0x20) <= 'z'); }
 +    inline bool isASCIIAlphanumeric(unsigned short c) { return (c >= '0' && c <= '9') || ((c | 0x20) >= 'a' && (c | 0x20) <= 'z'); }
  #if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED)
 -    inline bool isASCIIAlphanumeric(wchar_t c) { return c >= '0' && c <= '9' || (c | 0x20) >= 'a' && (c | 0x20) <= 'z'; }
 +    inline bool isASCIIAlphanumeric(wchar_t c) { return (c >= '0' && c <= '9') || ((c | 0x20) >= 'a' && (c | 0x20) <= 'z'); }
  #endif
+     inline bool isASCIIAlphanumeric(int c) { return c >= '0' && c <= '9' || (c | 0x20) >= 'a' && (c | 0x20) <= 'z'; }
  
-     inline bool isASCIIDigit(char c) { return c >= '0' && c <= '9'; }
-     inline bool isASCIIDigit(unsigned short c) { return c >= '0' && c <= '9'; }
+     inline bool isASCIIDigit(char c) { return (c >= '0') & (c <= '9'); }
+     inline bool isASCIIDigit(unsigned short c) { return (c >= '0') & (c <= '9'); }
  #if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED)
-     inline bool isASCIIDigit(wchar_t c) { return c >= '0' && c <= '9'; }
+     inline bool isASCIIDigit(wchar_t c) { return (c >= '0') & (c <= '9'); }
  #endif
+     inline bool isASCIIDigit(int c) { return (c >= '0') & (c <= '9'); }
  
 -    inline bool isASCIIHexDigit(char c) { return c >= '0' && c <= '9' || (c | 0x20) >= 'a' && (c | 0x20) <= 'f'; }
 -    inline bool isASCIIHexDigit(unsigned short c) { return c >= '0' && c <= '9' || (c | 0x20) >= 'a' && (c | 0x20) <= 'f'; }
 +    inline bool isASCIIHexDigit(char c) { return (c >= '0' && c <= '9') || ((c | 0x20) >= 'a' && (c | 0x20) <= 'f'); }
 +    inline bool isASCIIHexDigit(unsigned short c) { return (c >= '0' && c <= '9') || ((c | 0x20) >= 'a' && (c | 0x20) <= 'f'); }
  #if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED)
 -    inline bool isASCIIHexDigit(wchar_t c) { return c >= '0' && c <= '9' || (c | 0x20) >= 'a' && (c | 0x20) <= 'f'; }
 +    inline bool isASCIIHexDigit(wchar_t c) { return (c >= '0' && c <= '9') || ((c | 0x20) >= 'a' && (c | 0x20) <= 'f'); }
  #endif
+     inline bool isASCIIHexDigit(int c) { return c >= '0' && c <= '9' || (c | 0x20) >= 'a' && (c | 0x20) <= 'f'; }
  
      inline bool isASCIILower(char c) { return c >= 'a' && c <= 'z'; }
      inline bool isASCIILower(unsigned short c) { return c >= 'a' && c <= 'z'; }
  #if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED)
      inline bool isASCIILower(wchar_t c) { return c >= 'a' && c <= 'z'; }
  #endif
+     inline bool isASCIILower(int c) { return c >= 'a' && c <= 'z'; }
+ 
+     inline bool isASCIIUpper(char c) { return c >= 'A' && c <= 'Z'; }
+     inline bool isASCIIUpper(unsigned short c) { return c >= 'A' && c <= 'Z'; }
+ #if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED)
+     inline bool isASCIIUpper(wchar_t c) { return c >= 'A' && c <= 'Z'; }
+ #endif
+     inline bool isASCIIUpper(int c) { return c >= 'A' && c <= 'Z'; }
  
      inline bool isASCIISpace(char c) { return c == '\t' || c == '\n' || c == '\v' || c =='\f' || c == '\r' || c == ' '; }
      inline bool isASCIISpace(unsigned short c) { return c == '\t' || c == '\n' || c == '\v' || c =='\f' || c == '\r' || c == ' '; }
  #if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED)
      inline bool isASCIISpace(wchar_t c) { return c == '\t' || c == '\n' || c == '\v' || c =='\f' || c == '\r' || c == ' '; }
  #endif
+     inline bool isASCIISpace(int c) { return c == '\t' || c == '\n' || c == '\v' || c =='\f' || c == '\r' || c == ' '; }
  
      inline char toASCIILower(char c) { return c | ((c >= 'A' && c <= 'Z') << 5); }
      inline unsigned short toASCIILower(unsigned short c) { return c | ((c >= 'A' && c <= 'Z') << 5); }
  #if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED)
      inline wchar_t toASCIILower(wchar_t c) { return c | ((c >= 'A' && c <= 'Z') << 5); }
  #endif
+     inline int toASCIILower(int c) { return c | ((c >= 'A' && c <= 'Z') << 5); }
  
      inline char toASCIIUpper(char c) { return static_cast<char>(c & ~((c >= 'a' && c <= 'z') << 5)); }
      inline unsigned short toASCIIUpper(unsigned short c) { return static_cast<unsigned short>(c & ~((c >= 'a' && c <= 'z') << 5)); }
  #if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED)
      inline wchar_t toASCIIUpper(wchar_t c) { return static_cast<wchar_t>(c & ~((c >= 'a' && c <= 'z') << 5)); }
  #endif
+     inline int toASCIIUpper(int c) { return static_cast<int>(c & ~((c >= 'a' && c <= 'z') << 5)); }
  
  }
  
diff --combined WebCore/dom/Position.cpp
index 0c9ae73,bfed910..f2898c1
--- a/WebCore/dom/Position.cpp
+++ b/WebCore/dom/Position.cpp
@@@ -38,8 -38,6 +38,8 @@@
  #include "Text.h"
  #include "TextIterator.h"
  #include "visible_units.h"
 +
 +#include <cstdio>
    
  namespace WebCore {
  
@@@ -135,7 -133,7 +135,7 @@@ Position Position::previous(EUsingCompo
          //      Going backward one character at a time is correct.
          //   2) The old offset was a bogus offset like (<br>, 1), and there is no child.
          //      Going from 1 to 0 is correct.
-         return Position(n, usingComposedCharacters ? n->previousOffset(o) : o - 1);
+         return Position(n, usingComposedCharacters ? uncheckedPreviousOffset(n, o) : o - 1);
      }
  
      Node *parent = n->parentNode();
@@@ -165,7 -163,7 +165,7 @@@ Position Position::next(EUsingComposedC
          //      Going forward one character at a time is correct.
          //   2) The new offset is a bogus offset like (<br>, 1), and there is no child.
          //      Going from 0 to 1 is correct.
-         return Position(n, usingComposedCharacters ? n->nextOffset(o) : o + 1);
+         return Position(n, usingComposedCharacters ? uncheckedNextOffset(n, o) : o + 1);
      }
  
      Node *parent = n->parentNode();
@@@ -175,6 -173,16 +175,16 @@@
      return Position(parent, n->nodeIndex() + 1);
  }
  
+ int Position::uncheckedPreviousOffset(const Node* n, int current)
+ {
+     return n->renderer() ? n->renderer()->previousOffset(current) : current - 1;
+ }
+ 
+ int Position::uncheckedNextOffset(const Node* n, int current)
+ {
+     return n->renderer() ? n->renderer()->nextOffset(current) : current + 1;
+ }
+ 
  bool Position::atStart() const
  {
      Node *n = node();
@@@ -322,9 -330,9 +332,9 @@@ Position Position::upstream() cons
          // return lastVisible on the next iteration, but we terminate early.
          if (currentNode == enclosingBlock(currentNode) && currentPos.atStartOfNode())
              return lastVisible;
-             
-         // Return position after brs, tables, and nodes which have content that can be ignored.
-         if (editingIgnoresContent(currentNode) || renderer->isBR() || isTableElement(currentNode)) {
+ 
+         // Return position after tables and nodes which have content that can be ignored.
+         if (editingIgnoresContent(currentNode) || isTableElement(currentNode)) {
              if (currentPos.atEndOfNode())
                  return Position(currentNode, maxDeepOffset(currentNode));
              continue;
@@@ -394,8 -402,8 +404,8 @@@ Position Position::downstream() cons
          if (isStreamer(currentPos))
              lastVisible = currentPos;
  
-         // Return position before brs, tables, and nodes which have content that can be ignored.
-         if (editingIgnoresContent(currentNode) || renderer->isBR() || isTableElement(currentNode)) {
+         // Return position before tables and nodes which have content that can be ignored.
+         if (editingIgnoresContent(currentNode) || isTableElement(currentNode)) {
              if (currentPos.offsetInLeafNode() <= renderer->caretMinOffset())
                  return Position(currentNode, renderer->caretMinOffset());
              continue;
@@@ -495,6 -503,17 +505,17 @@@ bool Position::inRenderedText() cons
      return false;
  }
  
+ static unsigned caretMaxRenderedOffset(const Node* n)
+ {
+     RenderObject* r = n->renderer();
+     if (r)
+         return r->caretMaxRenderedOffset();
+     
+     if (n->isCharacterDataNode())
+         return static_cast<const CharacterData*>(n)->length();
+     return 1;
+ }
+ 
  bool Position::isRenderedCharacter() const
  {
      if (isNull() || !node()->isTextNode())
@@@ -574,8 -593,8 +595,8 @@@ bool Position::rendersInDifferentPositi
      LOG(Editing, "thisRenderedOffset:         %d\n", thisRenderedOffset);
      LOG(Editing, "posRenderer:            %p [%p]\n", posRenderer, posRenderer ? posRenderer->inlineBox(offset()) : 0);
      LOG(Editing, "posRenderedOffset:      %d\n", posRenderedOffset);
-     LOG(Editing, "node min/max:           %d:%d\n", node()->caretMinOffset(), node()->caretMaxRenderedOffset());
-     LOG(Editing, "pos node min/max:       %d:%d\n", pos.node()->caretMinOffset(), pos.node()->caretMaxRenderedOffset());
+     LOG(Editing, "node min/max:           %d:%d\n", caretMinOffset(node()), caretMaxRenderedOffset(node()));
+     LOG(Editing, "pos node min/max:       %d:%d\n", caretMinOffset(pos.node()), caretMaxRenderedOffset(pos.node()));
      LOG(Editing, "----------------------------------------------------------------------\n");
  
      InlineBox *b1 = renderer ? renderer->inlineBox(offset()) : 0;
@@@ -590,19 -609,19 +611,19 @@@
      }
  
      if (nextRenderedEditable(node()) == pos.node() && 
-         thisRenderedOffset == (int)node()->caretMaxRenderedOffset() && posRenderedOffset == 0) {
+         thisRenderedOffset == (int)caretMaxRenderedOffset(node()) && posRenderedOffset == 0) {
          return false;
      }
      
      if (previousRenderedEditable(node()) == pos.node() && 
-         thisRenderedOffset == 0 && posRenderedOffset == (int)pos.node()->caretMaxRenderedOffset()) {
+         thisRenderedOffset == 0 && posRenderedOffset == (int)caretMaxRenderedOffset(pos.node())) {
          return false;
      }
  
      return true;
  }
  
- // This is only called from DeleteSelectionCommand and assumes that it starts in editable content.
+ // This assumes that it starts in editable content.
  Position Position::leadingWhitespacePosition(EAffinity affinity, bool considerNonCollapsibleWhitespace) const
  {
      ASSERT(isEditablePosition(*this));
@@@ -624,7 -643,7 +645,7 @@@
      return Position();
  }
  
- // This is only called from DeleteSelectionCommand and assumes that it starts in editable content.
+ // This assumes that it starts in editable content.
  Position Position::trailingWhitespacePosition(EAffinity affinity, bool considerNonCollapsibleWhitespace) const
  {
      ASSERT(isEditablePosition(*this));
diff --combined WebCore/editing/Selection.cpp
index d69bc49,32f6500..0a36c2b
--- a/WebCore/editing/Selection.cpp
+++ b/WebCore/editing/Selection.cpp
@@@ -33,7 -33,6 +33,7 @@@
  #include "visible_units.h"
  #include "Range.h"
  #include <wtf/Assertions.h>
 +#include <cstdio>
  
  namespace WebCore {
  
@@@ -130,6 -129,10 +130,10 @@@ PassRefPtr<Range> Selection::toRange() 
      // incorrect results.
      m_start.node()->document()->updateLayout();
  
+     // Check again, because updating layout can clear the selection.
+     if (isNone())
+         return 0;
+ 
      Position s, e;
      if (isCaret()) {
          // If the selection is a caret, move the range start upstream. This helps us match
diff --combined WebCore/editing/SelectionController.cpp
index 0afe3e4,880876a..3816a68
--- a/WebCore/editing/SelectionController.cpp
+++ b/WebCore/editing/SelectionController.cpp
@@@ -30,6 -30,7 +30,7 @@@
  #include "Document.h"
  #include "Editor.h"
  #include "Element.h"
+ #include "EventHandler.h"
  #include "EventNames.h"
  #include "ExceptionCode.h"
  #include "FocusController.h"
@@@ -43,14 -44,13 +44,15 @@@
  #include "HitTestResult.h"
  #include "Page.h"
  #include "Range.h"
+ #include "RenderTheme.h"
  #include "RenderView.h"
  #include "TextIterator.h"
  #include "TypingCommand.h"
  #include "htmlediting.h"
  #include "visible_units.h"
  
 +#include <cstdio>
 +
  #define EDIT_DEBUG 0
  
  namespace WebCore {
@@@ -67,6 -67,7 +69,7 @@@ SelectionController::SelectionControlle
      , m_isDragCaretController(isDragCaretController)
      , m_isCaretBlinkingSuspended(false)
      , m_xPosForVerticalArrowNavigation(NoXPosForVerticalArrowNavigation)
+     , m_focused(false)
  {
  }
  
@@@ -152,11 -153,14 +155,14 @@@ static bool removingNodeRemovesPosition
      if (!position.node())
          return false;
          
-     if (position.node() == node || position.node()->isDescendantOf(node))
+     if (position.node() == node)
          return true;
      
-     Node* shadowAncestorNode = position.node()->shadowAncestorNode();
-     return shadowAncestorNode && shadowAncestorNode->isDescendantOf(node);
+     if (!node->isElementNode())
+         return false;
+     
+     Element* element = static_cast<Element*>(node);
+     return element->contains(position.node()) || element->contains(position.node()->shadowAncestorNode());
  }
  
  void SelectionController::nodeWillBeRemoved(Node *node)
@@@ -164,8 -168,8 +170,8 @@@
      if (isNone())
          return;
      
-     bool baseRemoved = removingNodeRemovesPosition(node, m_sel.base());
-     bool extentRemoved = removingNodeRemovesPosition(node, m_sel.extent());
+     bool baseRemoved = !m_sel.base().isCandidate() || removingNodeRemovesPosition(node, m_sel.base());
+     bool extentRemoved = !m_sel.extent().isCandidate() || removingNodeRemovesPosition(node, m_sel.extent());
      bool startRemoved = removingNodeRemovesPosition(node, m_sel.start());
      bool endRemoved = removingNodeRemovesPosition(node, m_sel.end());
      
@@@ -409,56 -413,6 +415,6 @@@ VisiblePosition SelectionController::mo
      return pos;
  }
  
- bool SelectionController::modify(const String &alterString, const String &directionString, const String &granularityString, bool userTriggered)
- {
-     String alterStringLower = alterString.lower();
-     EAlteration alter;
-     if (alterStringLower == "extend")
-         alter = EXTEND;
-     else if (alterStringLower == "move")
-         alter = MOVE;
-     else 
-         return false;
-     
-     String directionStringLower = directionString.lower();
-     EDirection direction;
-     if (directionStringLower == "forward")
-         direction = FORWARD;
-     else if (directionStringLower == "backward")
-         direction = BACKWARD;
-     else if (directionStringLower == "left")
-         direction = LEFT;
-     else if (directionStringLower == "right")
-         direction = RIGHT;
-     else
-         return false;
-         
-     String granularityStringLower = granularityString.lower();
-     TextGranularity granularity;
-     if (granularityStringLower == "character")
-         granularity = CharacterGranularity;
-     else if (granularityStringLower == "word")
-         granularity = WordGranularity;
-     else if (granularityStringLower == "sentence")
-         granularity = SentenceGranularity;
-     else if (granularityStringLower == "line")
-         granularity = LineGranularity;
-     else if (granularityStringLower == "paragraph")
-         granularity = ParagraphGranularity;
-     else if (granularityStringLower == "lineboundary")
-         granularity = LineBoundary;
-     else if (granularityStringLower == "sentenceboundary")
-         granularity = SentenceBoundary;
-     else if (granularityStringLower == "paragraphboundary")
-         granularity = ParagraphBoundary;
-     else if (granularityStringLower == "documentboundary")
-         granularity = DocumentBoundary;
-     else
-         return false;
-                 
-     return modify(alter, direction, granularity, userTriggered);
- }
- 
  bool SelectionController::modify(EAlteration alter, EDirection dir, TextGranularity granularity, bool userTriggered)
  {
      if (userTriggered) {
@@@ -708,240 -662,6 +664,6 @@@ void SelectionController::setNeedsLayou
      m_needsLayout = flag;
  }
  
- String SelectionController::type() const
- {
-     if (isNone())
-         return "None";
-     else if (isCaret())
-         return "Caret";
-     else
-         return "Range";
- }
- 
- // These methods are accessible via JS (and are not used internally), so they must return valid DOM positions.
- Node* SelectionController::baseNode() const
- {
-     Position base = rangeCompliantEquivalent(m_sel.base());
-     return base.node();
- }
- 
- int SelectionController::baseOffset() const
- {
-     Position base = rangeCompliantEquivalent(m_sel.base());
-     return base.offset();
- }
- 
- Node* SelectionController::extentNode() const
- {
-     Position extent = rangeCompliantEquivalent(m_sel.extent());
-     return extent.node();
- }
- 
- int SelectionController::extentOffset() const
- {
-     Position extent = rangeCompliantEquivalent(m_sel.extent());
-     return extent.offset();
- }
- 
- Node* SelectionController::anchorNode() const
- {
-     Position anchor = m_sel.isBaseFirst() ? m_sel.start() : m_sel.end();
-     anchor = rangeCompliantEquivalent(anchor);
-     return anchor.node();
- }
- 
- int SelectionController::anchorOffset() const
- {
-     Position anchor = m_sel.isBaseFirst() ? m_sel.start() : m_sel.end();
-     anchor = rangeCompliantEquivalent(anchor);
-     return anchor.offset();
- }
- 
- Node* SelectionController::focusNode() const
- {
-     Position focus = m_sel.isBaseFirst() ? m_sel.end() : m_sel.start();
-     focus = rangeCompliantEquivalent(focus);
-     return focus.node();
- }
- 
- int SelectionController::focusOffset() const
- {
-     Position focus = m_sel.isBaseFirst() ? m_sel.end() : m_sel.start();
-     focus = rangeCompliantEquivalent(focus);
-     return focus.offset();
- }
- 
- String SelectionController::toString() const
- {
-     return plainText(m_sel.toRange().get());
- }
- 
- PassRefPtr<Range> SelectionController::getRangeAt(int index, ExceptionCode& ec) const
- {
-     if (index < 0 || index >= rangeCount()) {
-         ec = INDEX_SIZE_ERR;
-         return 0;
-     }   
-     return m_sel.toRange();
- }
- 
- void SelectionController::removeAllRanges()
- {
-     clear();
- }
- 
- // Adds r to the currently selected range.
- void SelectionController::addRange(const Range* r)
- {
-     if (!r)
-         return;
-     
-     if (isNone()) {
-         setSelection(Selection(r));
-         return;
-     }
- 
-     RefPtr<Range> range = m_sel.toRange();
-     ExceptionCode ec = 0;
-     if (r->compareBoundaryPoints(Range::START_TO_START, range.get(), ec) == -1) {
-         // We don't support discontiguous selection. We don't do anything if r and range don't intersect.
-         if (r->compareBoundaryPoints(Range::END_TO_START, range.get(), ec) > -1) {
-             if (r->compareBoundaryPoints(Range::END_TO_END, range.get(), ec) == -1)
-                 // The original range and r intersect.
-                 setSelection(Selection(r->startPosition(), range->endPosition(), DOWNSTREAM));
-             else
-                 // r contains the original range.
-                 setSelection(Selection(r));
-         }
-     } else {
-         // We don't support discontiguous selection. We don't do anything if r and range don't intersect.
-         if (r->compareBoundaryPoints(Range::START_TO_END, range.get(), ec) < 1) {
-             if (r->compareBoundaryPoints(Range::END_TO_END, range.get(), ec) == -1)
-                 // The original range contains r.
-                 setSelection(Selection(range.get()));
-             else
-                 // The original range and r intersect.
-                 setSelection(Selection(range->startPosition(), r->endPosition(), DOWNSTREAM));
-         }
-     }
- }
- 
- void SelectionController::deleteFromDocument()
- {
-     if (isNone())
-         return;
- 
-     if (isCollapsed())
-         modify(EXTEND, BACKWARD, CharacterGranularity);
- 
-     RefPtr<Range> selectedRange = m_sel.toRange();
- 
-     ExceptionCode ec = 0;
-     selectedRange->deleteContents(ec);
-     ASSERT(!ec);
-     
-     setBaseAndExtent(selectedRange->startContainer(ec), selectedRange->startOffset(ec), selectedRange->startContainer(ec), selectedRange->startOffset(ec), ec);
-     ASSERT(!ec);
- }
- 
- bool SelectionController::containsNode(const Node* n, bool allowPartial) const
- {
-     if (!n || isNone())
-         return false;
- 
-     Node* parentNode = n->parentNode();
-     unsigned nodeIndex = n->nodeIndex();
-     RefPtr<Range> selectedRange = m_sel.toRange();
- 
-     if (!parentNode)
-         return false;
- 
-     ExceptionCode ec = 0;
-     bool nodeFullySelected = Range::compareBoundaryPoints(parentNode, nodeIndex, selectedRange->startContainer(ec), selectedRange->startOffset(ec)) >= 0
-         && Range::compareBoundaryPoints(parentNode, nodeIndex + 1, selectedRange->endContainer(ec), selectedRange->endOffset(ec)) <= 0;
-     ASSERT(!ec);
-     if (nodeFullySelected)
-         return true;
- 
-     bool nodeFullyUnselected = Range::compareBoundaryPoints(parentNode, nodeIndex, selectedRange->endContainer(ec), selectedRange->endOffset(ec)) > 0
-         || Range::compareBoundaryPoints(parentNode, nodeIndex + 1, selectedRange->startContainer(ec), selectedRange->startOffset(ec)) < 0;
-     ASSERT(!ec);
-     if (nodeFullyUnselected)
-         return false;
- 
-     return allowPartial || n->isTextNode();
- }
- 
- void SelectionController::selectAllChildren(Node* n, ExceptionCode& ec)
- {
-     if (!n)
-         return;
- 
-     // This doesn't (and shouldn't) select text node characters.
-     setBaseAndExtent(n, 0, n, n->childNodeCount(), ec);
- }
- 
- void SelectionController::setBaseAndExtent(Node *baseNode, int baseOffset, Node *extentNode, int extentOffset, ExceptionCode& ec)
- {
-     if (baseOffset < 0 || extentOffset < 0) {
-         ec = INDEX_SIZE_ERR;
-         return;
-     }
-     VisiblePosition visibleBase = VisiblePosition(baseNode, baseOffset, DOWNSTREAM);
-     VisiblePosition visibleExtent = VisiblePosition(extentNode, extentOffset, DOWNSTREAM);
-     
-     moveTo(visibleBase, visibleExtent);
- }
- 
- void SelectionController::setPosition(Node *node, int offset, ExceptionCode& ec)
- {
-     if (offset < 0) {
-         ec = INDEX_SIZE_ERR;
-         return;
-     }
-     moveTo(VisiblePosition(node, offset, DOWNSTREAM));
- }
- 
- void SelectionController::collapse(Node *node, int offset, ExceptionCode& ec)
- {
-     if (offset < 0) {
-         ec = INDEX_SIZE_ERR;
-         return;
-     }
-     moveTo(VisiblePosition(node, offset, DOWNSTREAM));
- }
- 
- void SelectionController::collapseToEnd()
- {
-     moveTo(VisiblePosition(m_sel.end(), DOWNSTREAM));
- }
- 
- void SelectionController::collapseToStart()
- {
-     moveTo(VisiblePosition(m_sel.start(), DOWNSTREAM));
- }
- 
- void SelectionController::empty()
- {
-     moveTo(VisiblePosition());
- }
- 
- void SelectionController::extend(Node* node, int offset, ExceptionCode& ec)
- {
-     if (!node) {
-         ec = TYPE_MISMATCH_ERR;
-         return;
-     }
-     if (offset < 0
-         || node->offsetInCharacters() && offset > node->caretMaxOffset()
-         || !node->offsetInCharacters() && offset > (int)node->childNodeCount()) {
-         ec = INDEX_SIZE_ERR;
-         return;
-     }
-     m_sel.expandUsingGranularity(CharacterGranularity);
-     setExtent(VisiblePosition(node, offset, DOWNSTREAM));
- }
- 
  void SelectionController::layout()
  {
      if (isNone() || !m_sel.start().node()->inDocument() || !m_sel.end().node()->inDocument()) {
@@@ -987,17 -707,9 +709,9 @@@ IntRect SelectionController::caretRect(
      return caret;
  }
  
- static IntRect repaintRectForCaret(IntRect caret)
- {
-     if (caret.isEmpty())
-         return IntRect();
-     caret.inflate(1);
-     return caret;
- }
- 
  IntRect SelectionController::caretRepaintRect() const
  {
-     return repaintRectForCaret(caretRect());
+     return caretRect();
  }
  
  bool SelectionController::recomputeCaretRect()
@@@ -1018,8 -730,8 +732,8 @@@
      if (oldRect == newRect)
          return false;
  
-     v->updateContents(repaintRectForCaret(oldRect), false);
-     v->updateContents(repaintRectForCaret(newRect), false);
+     v->updateContents(oldRect, false);
+     v->updateContents(newRect, false);
      return true;
  }
  
@@@ -1246,22 -958,19 +960,19 @@@ void SelectionController::selectAll(
      m_frame->notifyRendererOfSelectionChange(true);
  }
  
- void SelectionController::setSelectedRange(Range* range, EAffinity affinity, bool closeTyping, ExceptionCode& ec)
+ bool SelectionController::setSelectedRange(Range* range, EAffinity affinity, bool closeTyping)
  {
-     ec = 0;
-     
-     if (!range) {
-         ec = INVALID_STATE_ERR;
-         return;
-     }
-     
+     if (!range)
+         return false;
+ 
+     ExceptionCode ec = 0;
      Node* startContainer = range->startContainer(ec);
      if (ec)
-         return;
+         return false;
  
      Node* endContainer = range->endContainer(ec);
      if (ec)
-         return;
+         return false;
      
      ASSERT(startContainer);
      ASSERT(endContainer);
@@@ -1273,20 -982,21 +984,21 @@@
      // they start at the beginning of the next line instead
      bool collapsed = range->collapsed(ec);
      if (ec)
-         return;
+         return false;
      
      int startOffset = range->startOffset(ec);
      if (ec)
-         return;
+         return false;
  
      int endOffset = range->endOffset(ec);
      if (ec)
-         return;
+         return false;
      
      // FIXME: Can we provide extentAffinity?
      VisiblePosition visibleStart(startContainer, startOffset, collapsed ? affinity : DOWNSTREAM);
      VisiblePosition visibleEnd(endContainer, endOffset, SEL_DEFAULT_AFFINITY);
      setSelection(Selection(visibleStart, visibleEnd), closeTyping);
+     return true;
  }
  
  bool SelectionController::isInPasswordField() const
@@@ -1312,6 -1022,61 +1024,61 @@@ bool SelectionController::isInsideNode(
          return false;
      return !isTableElement(startNode) && !editingIgnoresContent(startNode);
  }
+ 
+ void SelectionController::focusedOrActiveStateChanged()
+ {
+     bool activeAndFocused = isFocusedAndActive();
+ 
+     // Because RenderObject::selectionBackgroundColor() and
+     // RenderObject::selectionForegroundColor() check if the frame is active,
+     // we have to update places those colors were painted.
+     if (m_frame->view())
+         m_frame->view()->updateContents(enclosingIntRect(m_frame->selectionRect()));
+ 
+     // Caret appears in the active frame.
+     if (activeAndFocused)
+         m_frame->setSelectionFromNone();
+     m_frame->setCaretVisible(activeAndFocused);
+ 
+     // Update for caps lock state
+     m_frame->eventHandler()->capsLockStateMayHaveChanged();
+ 
+     // Because CSSStyleSelector::checkOneSelector() and
+     // RenderTheme::isFocused() check if the frame is active, we have to
+     // update style and theme state that depended on those.
+     if (Node* node = m_frame->document()->focusedNode()) {
+         node->setChanged();
+         if (RenderObject* renderer = node->renderer())
+             if (renderer && renderer->style()->hasAppearance())
+                 theme()->stateChanged(renderer, FocusState);
+     }
+ 
+     // Secure keyboard entry is set by the active frame.
+     if (m_frame->document()->useSecureKeyboardEntryWhenActive())
+         m_frame->setUseSecureKeyboardEntry(activeAndFocused);
+ }
+ 
+ void SelectionController::pageActivationChanged()
+ {
+     focusedOrActiveStateChanged();
+ }
+ 
+ void SelectionController::setFocused(bool flag)
+ {
+     if (m_focused == flag)
+         return;
+     m_focused = flag;
+ 
+     focusedOrActiveStateChanged();
+ 
+     if (Document* doc = m_frame->document())
+         doc->dispatchWindowEvent(flag ? focusEvent : blurEvent, false, false);
+ }
+ 
+ bool SelectionController::isFocusedAndActive() const
+ {
+     return m_focused && m_frame->page() && m_frame->page()->focusController()->isActive();
+ }
    
  #ifndef NDEBUG
  
diff --combined WebCore/loader/FTPDirectoryParser.cpp
index e36013d,fdda0b6..f350e95
--- a/WebCore/loader/FTPDirectoryParser.cpp
+++ b/WebCore/loader/FTPDirectoryParser.cpp
@@@ -24,12 -24,34 +24,35 @@@
  #if ENABLE(FTPDIR)
  #include "FTPDirectoryParser.h"
  
+ // On Win, the threadsafe *_r functions need to be gotten from pthreads. 
+ #if COMPILER(MSVC) && USE(PTHREADS)
+ #include <pthread.h>
+ #endif
+ 
  #include <wtf/ASCIICType.h>
 +#include <cstdio>
  
  using namespace WTF;
  
+ #if PLATFORM(QT)
+ #include <QDateTime>
+ #endif
+ 
  namespace WebCore {
+ #if PLATFORM(QT) && defined(Q_WS_WIN32)
+ // Defined in FTPDirectoryDocument.cpp.
+ struct tm gmtimeQt(const QDateTime &input);
+ 
+ static struct tm *gmtimeQt(const time_t *const timep, struct tm *result)
+ {
+     const QDateTime dt(QDateTime::fromTime_t(*timep));
+     *result = WebCore::gmtimeQt(dt);
+     return result;
+ }
+ 
+ #define gmtime_r(x, y) gmtimeQt(x, y)
+ #endif
+ 
  
  FTPEntryType parseOneFTPLine(const char* line, ListState& state, ListResult& result)
  {
@@@ -110,10 -132,6 +133,6 @@@
      }
  
      /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
- #if PLATFORM(QT) && defined(Q_WS_WIN32)
- #define gmtime_r(x, y) gmtime_s(y, x)
- #endif
- 
  #if defined(SUPPORT_EPLF)
      /* EPLF handling must come somewhere before /bin/dls handling. */
      if (!lstyle && (!state.listStyle || state.listStyle == 'E'))
diff --combined WebCore/loader/icon/IconDatabase.cpp
index e4502a3,f7431e1..0358e91
--- a/WebCore/loader/icon/IconDatabase.cpp
+++ b/WebCore/loader/icon/IconDatabase.cpp
@@@ -1,5 -1,6 +1,6 @@@
  /*
   * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+  * Copyright (C) 2007 Justin Haygood (jhaygood at reaktix.com)
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
@@@ -49,7 -50,9 +50,7 @@@
  #include <sys/stat.h>
  #endif
  
 -#if PLATFORM(DARWIN)
  #include <pthread.h>
 -#endif
  
  #include <errno.h>
  
@@@ -57,7 -60,7 +58,7 @@@
  #define ASSERT_NOT_SYNC_THREAD() ASSERT(!m_syncThreadRunning || !IS_ICON_SYNC_THREAD())
  
  // For methods that are meant to support the sync thread ONLY
- #define IS_ICON_SYNC_THREAD() pthread_equal(pthread_self(), m_syncThread)
+ #define IS_ICON_SYNC_THREAD() (m_syncThread == currentThread())
  #define ASSERT_ICON_SYNC_THREAD() ASSERT(IS_ICON_SYNC_THREAD())
  
  namespace WebCore {
@@@ -138,13 -141,14 +139,14 @@@ bool IconDatabase::open(const String& d
      // Formulate the full path for the database file
      m_completeDatabasePath = pathByAppendingComponent(m_databaseDirectory, defaultDatabaseFilename());
  
-     // Lock here as well as first thing in the thread so the tread doesn't actually commence until the pthread_create() call 
+     // Lock here as well as first thing in the thread so the thread doesn't actually commence until the createThread() call 
      // completes and m_syncThreadRunning is properly set
      m_syncLock.lock();
-     m_syncThreadRunning = !pthread_create(&m_syncThread, NULL, IconDatabase::iconDatabaseSyncThreadStart, this);
+     m_syncThread = createThread(IconDatabase::iconDatabaseSyncThreadStart, this);
      m_syncLock.unlock();
- 
-     return m_syncThreadRunning;
+     if (!m_syncThread)
+         return false;
+     return true;
  }
  
  void IconDatabase::close()
@@@ -159,8 -163,7 +161,7 @@@
          wakeSyncThread();
          
          // Wait for the sync thread to terminate
-         if (pthread_join(m_syncThread, NULL) == EDEADLK)
-             LOG_ERROR("m_syncThread was found to be deadlocked trying to quit");
+         waitForThreadCompletion(m_syncThread, 0);
      }
  
      m_syncThreadRunning = false;    
@@@ -1115,7 -1118,7 +1116,7 @@@ void IconDatabase::performOpenInitializ
      }
      
      if (!isValidDatabase(m_syncDB)) {
-         LOG(IconDatabase, "%s is missing or in an invalid state - reconstructing", m_syncDB.path().ascii().data());
+         LOG(IconDatabase, "%s is missing or in an invalid state - reconstructing", m_completeDatabasePath.ascii().data());
          m_syncDB.clearAllTables();
          createDatabaseTables(m_syncDB);
      }
@@@ -1284,7 -1287,7 +1285,7 @@@ void IconDatabase::performURLImport(
          }
      }
  
-     LOG(IconDatabase, "Notifying %i interested page URLs that their icon URL is known due to the import", urlsToNotify.size());
+     LOG(IconDatabase, "Notifying %zu interested page URLs that their icon URL is known due to the import", urlsToNotify.size());
      // Now that we don't hold any locks, perform the actual notifications
      for (unsigned i = 0; i < urlsToNotify.size(); ++i) {
          LOG(IconDatabase, "Notifying icon info known for pageURL %s", urlsToNotify[i].ascii().data());
@@@ -1524,7 -1527,7 +1525,7 @@@ bool IconDatabase::writeToDatabase(
      
      for (unsigned i = 0; i < iconSnapshots.size(); ++i) {
          writeIconSnapshotToSQLDatabase(iconSnapshots[i]);
-         LOG(IconDatabase, "Wrote IconRecord for IconURL %s with timeStamp of %li to the DB", urlForLogging(iconSnapshots[i].iconURL).ascii().data(), iconSnapshots[i].timestamp);
+         LOG(IconDatabase, "Wrote IconRecord for IconURL %s with timeStamp of %i to the DB", urlForLogging(iconSnapshots[i].iconURL).ascii().data(), iconSnapshots[i].timestamp);
      }
      
      for (unsigned i = 0; i < pageSnapshots.size(); ++i) {
@@@ -1806,7 -1809,7 +1807,7 @@@ void IconDatabase::setIconIDForPageURLI
      ASSERT_ICON_SYNC_THREAD();
      
      readySQLiteStatement(m_setIconIDForPageURLStatement, m_syncDB, "INSERT INTO PageURL (url, iconID) VALUES ((?), ?);");
-     m_setIconIDForPageURLStatement->bindText16(1, pageURL, false);
+     m_setIconIDForPageURLStatement->bindText(1, pageURL);
      m_setIconIDForPageURLStatement->bindInt64(2, iconID);
  
      int result = m_setIconIDForPageURLStatement->step();
@@@ -1823,7 -1826,7 +1824,7 @@@ void IconDatabase::removePageURLFromSQL
      ASSERT_ICON_SYNC_THREAD();
      
      readySQLiteStatement(m_removePageURLStatement, m_syncDB, "DELETE FROM PageURL WHERE url = (?);");
-     m_removePageURLStatement->bindText16(1, pageURL, false);
+     m_removePageURLStatement->bindText(1, pageURL);
  
      if (m_removePageURLStatement->step() != SQLResultDone)
          LOG_ERROR("removePageURLFromSQLDatabase failed for url %s", urlForLogging(pageURL).ascii().data());
@@@ -1837,7 -1840,7 +1838,7 @@@ int64_t IconDatabase::getIconIDForIconU
      ASSERT_ICON_SYNC_THREAD();
      
      readySQLiteStatement(m_getIconIDForIconURLStatement, m_syncDB, "SELECT IconInfo.iconID FROM IconInfo WHERE IconInfo.url = (?);");
-     m_getIconIDForIconURLStatement->bindText16(1, iconURL, false);
+     m_getIconIDForIconURLStatement->bindText(1, iconURL);
      
      int64_t result = m_getIconIDForIconURLStatement->step();
      if (result == SQLResultRow)
@@@ -1861,7 -1864,7 +1862,7 @@@ int64_t IconDatabase::addIconURLToSQLDa
      // here is unnecessary
      
      readySQLiteStatement(m_addIconToIconInfoStatement, m_syncDB, "INSERT INTO IconInfo (url, stamp) VALUES (?, 0);");
-     m_addIconToIconInfoStatement->bindText16(1, iconURL);
+     m_addIconToIconInfoStatement->bindText(1, iconURL);
      
      int result = m_addIconToIconInfoStatement->step();
      m_addIconToIconInfoStatement->reset();
@@@ -1891,7 -1894,7 +1892,7 @@@ PassRefPtr<SharedBuffer> IconDatabase::
      RefPtr<SharedBuffer> imageData;
      
      readySQLiteStatement(m_getImageDataForIconURLStatement, m_syncDB, "SELECT IconData.data FROM IconData WHERE IconData.iconID IN (SELECT iconID FROM IconInfo WHERE IconInfo.url = (?));");
-     m_getImageDataForIconURLStatement->bindText16(1, iconURL, false);
+     m_getImageDataForIconURLStatement->bindText(1, iconURL);
      
      int result = m_getImageDataForIconURLStatement->step();
      if (result == SQLResultRow) {
@@@ -1971,7 -1974,7 +1972,7 @@@ void IconDatabase::writeIconSnapshotToS
      if (iconID) {    
          readySQLiteStatement(m_updateIconInfoStatement, m_syncDB, "UPDATE IconInfo SET stamp = ?, url = ? WHERE iconID = ?;");
          m_updateIconInfoStatement->bindInt64(1, snapshot.timestamp);
-         m_updateIconInfoStatement->bindText16(2, snapshot.iconURL);
+         m_updateIconInfoStatement->bindText(2, snapshot.iconURL);
          m_updateIconInfoStatement->bindInt64(3, iconID);
  
          if (m_updateIconInfoStatement->step() != SQLResultDone)
@@@ -1995,7 -1998,7 +1996,7 @@@
          m_updateIconDataStatement->reset();
      } else {    
          readySQLiteStatement(m_setIconInfoStatement, m_syncDB, "INSERT INTO IconInfo (url,stamp) VALUES (?, ?);");
-         m_setIconInfoStatement->bindText16(1, snapshot.iconURL);
+         m_setIconInfoStatement->bindText(1, snapshot.iconURL);
          m_setIconInfoStatement->bindInt64(2, snapshot.timestamp);
  
          if (m_setIconInfoStatement->step() != SQLResultDone)
diff --combined WebCore/platform/text/TextCodecLatin1.cpp
index 0000000,a687235..ad01511
mode 000000,100644..100644
--- a/WebCore/platform/text/TextCodecLatin1.cpp
+++ b/WebCore/platform/text/TextCodecLatin1.cpp
@@@ -1,0 -1,202 +1,204 @@@
+ /*
+  * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions
+  * are met:
+  * 1. Redistributions of source code must retain the above copyright
+  *    notice, this list of conditions and the following disclaimer.
+  * 2. Redistributions in binary form must reproduce the above copyright
+  *    notice, this list of conditions and the following disclaimer in the
+  *    documentation and/or other materials provided with the distribution.
+  *
+  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+  */
+ 
+ #include "config.h"
+ #include "TextCodecLatin1.h"
+ 
+ #include "CString.h"
+ #include "PlatformString.h"
+ #include "StringBuffer.h"
+ 
++#include <cstdio>
++
+ using std::auto_ptr;
+ 
+ namespace WebCore {
+ 
+ static const UChar table[256] = {
+     0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, // 00-07
+     0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, // 08-0F
+     0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, // 10-17
+     0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, // 18-1F
+     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, // 20-27
+     0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, // 28-2F
+     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, // 30-37
+     0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, // 38-3F
+     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, // 40-47
+     0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, // 48-4F
+     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, // 50-57
+     0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, // 58-5F
+     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, // 60-67
+     0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, // 68-6F
+     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, // 70-77
+     0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, // 78-7F
+     0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, // 80-87
+     0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008D, 0x017D, 0x008F, // 88-8F
+     0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, // 90-97
+     0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x009D, 0x017E, 0x0178, // 98-9F
+     0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, // A0-A7
+     0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, // A8-AF
+     0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, // B0-B7
+     0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, // B8-BF
+     0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, // C0-C7
+     0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, // C8-CF
+     0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, // D0-D7
+     0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, // D8-DF
+     0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, // E0-E7
+     0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, // E8-EF
+     0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, // F0-F7
+     0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF  // F8-FF
+ };
+ 
+ void TextCodecLatin1::registerEncodingNames(EncodingNameRegistrar registrar)
+ {
+     registrar("windows-1252", "windows-1252");
+     registrar("ISO-8859-1", "ISO-8859-1");
+     registrar("US-ASCII", "US-ASCII");
+ 
+     registrar("WinLatin1", "windows-1252");
+     registrar("ibm-1252", "windows-1252");
+     registrar("ibm-1252_P100-2000", "windows-1252");
+ 
+     registrar("8859-1", "ISO-8859-1");
+     registrar("CP819", "ISO-8859-1");
+     registrar("IBM819", "ISO-8859-1");
+     registrar("csISOLatin1", "ISO-8859-1");
+     registrar("iso-ir-100", "ISO-8859-1");
+     registrar("iso_8859-1:1987", "ISO-8859-1");
+     registrar("l1", "ISO-8859-1");
+     registrar("latin1", "ISO-8859-1");
+ 
+     registrar("ANSI_X3.4-1968", "US-ASCII");
+     registrar("ANSI_X3.4-1986", "US-ASCII");
+     registrar("ASCII", "US-ASCII");
+     registrar("IBM367", "US-ASCII");
+     registrar("ISO646-US", "US-ASCII");
+     registrar("ISO_646.irv:1991", "US-ASCII");
+     registrar("cp367", "US-ASCII");
+     registrar("csASCII", "US-ASCII");
+     registrar("ibm-367_P100-1995", "US-ASCII");
+     registrar("iso-ir-6", "US-ASCII");
+     registrar("iso-ir-6-us", "US-ASCII");
+     registrar("us", "US-ASCII");
+     registrar("x-ansi", "US-ASCII");
+ }
+ 
+ static auto_ptr<TextCodec> newStreamingTextDecoderWindowsLatin1(const TextEncoding&, const void*)
+ {
+     return auto_ptr<TextCodec>(new TextCodecLatin1);
+ }
+ 
+ void TextCodecLatin1::registerCodecs(TextCodecRegistrar registrar)
+ {
+     registrar("windows-1252", newStreamingTextDecoderWindowsLatin1, 0);
+ 
+     // ASCII and Latin-1 both decode as Windows Latin-1 although they retain unique identities.
+     registrar("ISO-8859-1", newStreamingTextDecoderWindowsLatin1, 0);
+     registrar("US-ASCII", newStreamingTextDecoderWindowsLatin1, 0);
+ }
+ 
+ String TextCodecLatin1::decode(const char* bytes, size_t length, bool)
+ {
+     StringBuffer characters(length);
+ 
+     // Convert the string a fast way and simultaneously do an efficient check to see if it's all ASCII.
+     unsigned char ored = 0;
+     for (size_t i = 0; i < length; ++i) {
+         unsigned char c = bytes[i];
+         characters[i] = c;
+         ored |= c;
+     }
+ 
+     if (!(ored & 0x80))
+         return String::adopt(characters);
+ 
+     // Convert the slightly slower way when there are non-ASCII characters.
+     for (size_t i = 0; i < length; ++i) {
+         unsigned char c = bytes[i];
+         characters[i] = table[c];
+     }
+ 
+     return String::adopt(characters);
+ }
+ 
+ static CString encodeComplexWindowsLatin1(const UChar* characters, size_t length, bool allowEntities)
+ {
+     Vector<char> result(length);
+     char* bytes = result.data();
+ 
+     size_t resultLength = 0;
+     for (size_t i = 0; i < length; ) {
+         UChar32 c;
+         U16_NEXT(characters, i, length, c);
+         unsigned char b = c;
+         // Do an efficient check to detect characters other than 00-7F and A0-FF.
+         if (b != c || (c & 0xE0) == 0x80) {
+             // Look for a way to encode this with Windows Latin-1.
+             for (b = 0x80; b < 0xA0; ++b)
+                 if (table[b] == c)
+                     goto gotByte;
+             // No way to encode this character with Windows Latin-1.
+             if (allowEntities) {
+                 char entityBuffer[16];
+                 sprintf(entityBuffer, "&#%u;", c);
+                 size_t entityLength = strlen(entityBuffer);
+                 result.grow(resultLength + entityLength + length - i);
+                 bytes = result.data();
+                 memcpy(bytes + resultLength, entityBuffer, entityLength);
+                 resultLength += entityLength;
+                 continue;
+             }
+             b = '?';
+         }
+     gotByte:
+         bytes[resultLength++] = b;
+     }
+ 
+     return CString(bytes, resultLength);
+ }
+ 
+ CString TextCodecLatin1::encode(const UChar* characters, size_t length, bool allowEntities)
+ {
+     {
+         char* bytes;
+         CString string = CString::newUninitialized(length, bytes);
+ 
+         // Convert the string a fast way and simultaneously do an efficient check to see if it's all ASCII.
+         UChar ored = 0;
+         for (size_t i = 0; i < length; ++i) {
+             UChar c = characters[i];
+             bytes[i] = c;
+             ored |= c;
+         }
+ 
+         if (!(ored & 0xFF80))
+             return string;
+     }
+ 
+     // If it wasn't all ASCII, call the function that handles more-complex cases.
+     return encodeComplexWindowsLatin1(characters, length, allowEntities);
+ }
+ 
+ } // namespace WebCore
diff --combined WebCore/platform/text/TextCodecUserDefined.cpp
index 0000000,a420992..54af7ba
mode 000000,100644..100644
--- a/WebCore/platform/text/TextCodecUserDefined.cpp
+++ b/WebCore/platform/text/TextCodecUserDefined.cpp
@@@ -1,0 -1,114 +1,116 @@@
+ /*
+  * Copyright (C) 2007, 2008 Apple, Inc. All rights reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions
+  * are met:
+  * 1. Redistributions of source code must retain the above copyright
+  *    notice, this list of conditions and the following disclaimer.
+  * 2. Redistributions in binary form must reproduce the above copyright
+  *    notice, this list of conditions and the following disclaimer in the
+  *    documentation and/or other materials provided with the distribution.
+  *
+  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+  */
+ 
+ #include "config.h"
+ #include "TextCodecUserDefined.h"
+ 
+ #include "CString.h"
+ #include "PlatformString.h"
+ #include "StringBuffer.h"
+ 
++#include <cstdio>
++
+ using std::auto_ptr;
+ 
+ namespace WebCore {
+ 
+ void TextCodecUserDefined::registerEncodingNames(EncodingNameRegistrar registrar)
+ {
+     registrar("x-user-defined", "x-user-defined");
+ }
+ 
+ static auto_ptr<TextCodec> newStreamingTextDecoderUserDefined(const TextEncoding&, const void*)
+ {
+     return auto_ptr<TextCodec>(new TextCodecUserDefined);
+ }
+ 
+ void TextCodecUserDefined::registerCodecs(TextCodecRegistrar registrar)
+ {
+     registrar("x-user-defined", newStreamingTextDecoderUserDefined, 0);
+ }
+ 
+ String TextCodecUserDefined::decode(const char* bytes, size_t length, bool)
+ {
+     StringBuffer buffer(length);
+ 
+     for (size_t i = 0; i < length; ++i) {
+         signed char c = bytes[i];
+         buffer[i] = c & 0xF7FF;
+     }
+ 
+     return String::adopt(buffer);
+ }
+ 
+ static CString encodeComplexUserDefined(const UChar* characters, size_t length, bool allowEntities)
+ {
+     Vector<char> result(length);
+     char* bytes = result.data();
+ 
+     size_t resultLength = 0;
+     for (size_t i = 0; i < length; ) {
+         UChar32 c;
+         U16_NEXT(characters, i, length, c);
+         signed char signedByte = c;
+         if ((signedByte & 0xf7ff) == c)
+             bytes[resultLength++] = signedByte;
+         else {
+             // No way to encode this character with x-user-defined.
+             if (allowEntities) {
+                 char entityBuffer[16];
+                 sprintf(entityBuffer, "&#%u;", c);
+                 size_t entityLength = strlen(entityBuffer);
+                 result.grow(resultLength + entityLength + length - i);
+                 bytes = result.data();
+                 memcpy(bytes + resultLength, entityBuffer, entityLength);
+                 resultLength += entityLength;
+             } else
+                 bytes[resultLength++] = '?';
+         }
+     }
+ 
+     return CString(bytes, resultLength);
+ }
+ 
+ CString TextCodecUserDefined::encode(const UChar* characters, size_t length, bool allowEntities)
+ {
+     char* bytes;
+     CString string = CString::newUninitialized(length, bytes);
+ 
+     // Convert the string a fast way and simultaneously do an efficient check to see if it's all ASCII.
+     UChar ored = 0;
+     for (size_t i = 0; i < length; ++i) {
+         UChar c = characters[i];
+         bytes[i] = c;
+         ored |= c;
+     }
+ 
+     if (!(ored & 0xFF80))
+         return string;
+ 
+     // If it wasn't all ASCII, call the function that handles more-complex cases.
+     return encodeComplexUserDefined(characters, length, allowEntities);
+ }
+ 
+ } // namespace WebCore
diff --combined WebCore/platform/text/TextStream.cpp
index 0000000,b23e769..e2b998e
mode 000000,100644..100644
--- a/WebCore/platform/text/TextStream.cpp
+++ b/WebCore/platform/text/TextStream.cpp
@@@ -1,0 -1,170 +1,171 @@@
+ /*
+  * Copyright (C) 2004, 2008 Apple Inc. All rights reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions
+  * are met:
+  * 1. Redistributions of source code must retain the above copyright
+  *    notice, this list of conditions and the following disclaimer.
+  * 2. Redistributions in binary form must reproduce the above copyright
+  *    notice, this list of conditions and the following disclaimer in the
+  *    documentation and/or other materials provided with the distribution.
+  *
+  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+  */
+ 
+ #include "config.h"
+ #include "TextStream.h"
+ 
+ #include "DeprecatedString.h"
+ #include "Logging.h"
+ #include "PlatformString.h"
+ #include <wtf/Vector.h>
++#include <cstdio>
+ 
+ namespace WebCore {
+ 
+ const size_t integerOrPointerAsStringBufferSize = 100; // large enough for any integer or pointer in string format, including trailing null character
+ const char* const precisionFormats[7] = { "%.0f", "%.1f", "%.2f", "%.3f", "%.4f", "%.5f", "%.6f"}; 
+ const int maxPrecision = 6; // must match size of precisionFormats
+ const int defaultPrecision = 6; // matches qt and sprintf(.., "%f", ...) behaviour
+ 
+ TextStream::TextStream(DeprecatedString* s)
+     : m_hasByteArray(false), m_string(s), m_precision(defaultPrecision)
+ {
+ }
+ 
+ TextStream& TextStream::operator<<(char c)
+ {
+     if (m_hasByteArray)
+         m_byteArray.append(c);
+ 
+     if (m_string)
+         m_string->append(DeprecatedChar(c));
+     return *this;
+ }
+ 
+ TextStream& TextStream::operator<<(short i)
+ {
+     char buffer[integerOrPointerAsStringBufferSize];
+     sprintf(buffer, "%d", i);
+     return *this << buffer;
+ }
+ 
+ TextStream& TextStream::operator<<(unsigned short i)
+ {
+     char buffer[integerOrPointerAsStringBufferSize];
+     sprintf(buffer, "%u", i);
+     return *this << buffer;
+ }
+ 
+ TextStream& TextStream::operator<<(int i)
+ {
+     char buffer[integerOrPointerAsStringBufferSize];
+     sprintf(buffer, "%d", i);
+     return *this << buffer;
+ }
+ 
+ TextStream& TextStream::operator<<(unsigned i)
+ {
+     char buffer[integerOrPointerAsStringBufferSize];
+     sprintf(buffer, "%u", i);
+     return *this << buffer;
+ }
+ 
+ TextStream& TextStream::operator<<(long i)
+ {
+     char buffer[integerOrPointerAsStringBufferSize];
+     sprintf(buffer, "%ld", i);
+     return *this << buffer;
+ }
+ 
+ TextStream& TextStream::operator<<(unsigned long i)
+ {
+     char buffer[integerOrPointerAsStringBufferSize];
+     sprintf(buffer, "%lu", i);
+     return *this << buffer;
+ }
+ 
+ TextStream& TextStream::operator<<(float f)
+ {
+     char buffer[integerOrPointerAsStringBufferSize];
+     sprintf(buffer, precisionFormats[m_precision], f);
+     return *this << buffer;
+ }
+ 
+ TextStream& TextStream::operator<<(double d)
+ {
+     char buffer[integerOrPointerAsStringBufferSize];
+     sprintf(buffer, precisionFormats[m_precision], d);
+     return *this << buffer;
+ }
+ 
+ TextStream& TextStream::operator<<(const char* s)
+ {
+     if (m_hasByteArray) {
+         unsigned length = strlen(s);
+         unsigned oldSize = m_byteArray.size();
+         m_byteArray.grow(oldSize + length);
+         memcpy(m_byteArray.data() + oldSize, s, length);
+     }
+     if (m_string)
+         m_string->append(s);
+     return *this;
+ }
+ 
+ TextStream& TextStream::operator<<(const DeprecatedString& s)
+ {
+     if (m_hasByteArray) {
+         unsigned length = s.length();
+         unsigned oldSize = m_byteArray.size();
+         m_byteArray.grow(oldSize + length);
+         memcpy(m_byteArray.data() + oldSize, s.latin1(), length);
+     }
+     if (m_string)
+         m_string->append(s);
+     return *this;
+ }
+ 
+ TextStream& TextStream::operator<<(const String& s)
+ {
+     return (*this) << s.deprecatedString();
+ }
+ 
+ TextStream& TextStream::operator<<(void* p)
+ {
+     char buffer[integerOrPointerAsStringBufferSize];
+     sprintf(buffer, "%p", p);
+     return *this << buffer;
+ }
+ 
+ TextStream& TextStream::operator<<(const TextStreamManipulator& m) 
+ {
+     return m(*this);
+ }
+ 
+ int TextStream::precision(int p) 
+ {
+     int oldPrecision = m_precision;
+     
+     if (p >= 0 && p <= maxPrecision)
+         m_precision = p;
+ 
+     return oldPrecision;
+ }
+ 
+ TextStream &endl(TextStream& stream)
+ {
+     return stream << '\n';
+ }
+ 
+ }
diff --combined WebKit.pro
index 1673736,bc14feb..9af411c
--- a/WebKit.pro
+++ b/WebKit.pro
@@@ -1,10 -1,14 +1,13 @@@
  TEMPLATE = subdirs
  CONFIG += ordered
  !gtk-port:CONFIG += qt-port
- qt-port:!win32-*:SUBDIRS += WebKit/qt/Plugins
+ qt-port {
+     lessThan(QT_MINOR_VERSION, 4) {
+         !win32-*:SUBDIRS += WebKit/qt/Plugins
+     }
+ }
  SUBDIRS += \
-         JavaScriptCore/pcre/dftables.pro \
 -        WebCore \
 -        JavaScriptCore/kjs/testkjs.pro
 +        WebCore
  
  qt-port {
      SUBDIRS += WebKit/qt/QtLauncher
@@@ -13,4 -17,5 +16,5 @@@
  }
  
  gtk-port:SUBDIRS += \
-         WebKitTools/GtkLauncher
+         WebKitTools/GtkLauncher \
+         WebKitTools/DumpRenderTree/gtk/DumpRenderTree.pro
diff --combined debian/changelog
index bdf36d3,97283ec..933c68c
--- a/debian/changelog
+++ b/debian/changelog
@@@ -1,35 -1,25 +1,57 @@@
 +webkit (0~svn27674-4) unstable; urgency=low
 +
 +  * debian/rules: Revert change from 0~svn27674-3, which was obviously not
 +    enough.
 +  * WebKit.pro: Don't build testkjs, that provokes the s390 FTBFSes ; we don't
 +    install it anyways. Closes: #466848.
 +  * JavaScriptCore/kjs/interpreter.cpp, JavaScriptCore/wtf/ASCIICType.h,
 +    WebCore/dom/Position.cpp, WebCore/editing/Selection.cpp,
 +    WebCore/editing/SelectionController.cpp,
 +    WebCore/editing/VisiblePosition.cpp,
 +    WebCore/ksvg2/svg/SVGFontFaceElement.cpp,
 +    WebCore/loader/FTPDirectoryParser.cpp,
 +    WebCore/loader/icon/IconDatabase.cpp,
 +    WebCore/platform/TextCodecLatin1.cpp,
 +    WebCore/platform/TextCodecUserDefined.cpp,
 +    WebCore/platform/TextStream.cpp,
 +    WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp: Fix FTBFS with
 +    gcc 4.3 due to missing includes. Closes: #455125.
 +
 + -- Mike Hommey <glandium at debian.org>  Thu, 21 Feb 2008 23:01:12 +0100
 +
 +webkit (0~svn27674-3) unstable; urgency=low
 +
 +  * debian/rules: Work around #466613 (FTBFS on s390) by building a little bit
 +    less optimized (-O1). Thanks to Josselin Mouette.
 +  * debian/control:
 +    - Add Vcs-Browser and Vcs-Git fields, and turn Homepage indications in
 +      descriptions into a control field.
 +    - Bumped Standards-Version to 3.7.3.0. No changes.
 +
 + -- Mike Hommey <glandium at debian.org>  Wed, 20 Feb 2008 21:49:33 +0100
 +
+ webkit (0~svn29752-1) experimental; urgency=low
+ 
+   * New upstream snapshot
+   * debian/copyright: Updated to fit additions/removals of files upstream.
+   * JavaScriptCore/wtf/TCSpinLock.h: Revert our work-around, now that a
+     proper patch has been applied upstream.
+   * WebCore/WebCore.pro: Don't use Qt version as SO version for QtWebKit.
+   * debian/control, debian/rules, debian/lib*0d.install: Bump SO version to
+     1d because of ABI incompatible changes, and change package names
+     accordingly.
+   * debian/rules: Don't remove -lqtwebico from QtWebKit.pc, since it's not
+     here anymore.
+   * debian/rules, debian/lib*1d.install:
+     - Install new Gtk port's DumpRenderTree tool.
+     - Rename both port's DumpRenderTree tools to <port name>DumpRenderTree
+       to avoid conflicting names.
+   * debian/lib*1d.postrm, debian/lib*1d.preinst: Avoid conflicting files with
+     lib*0d packages (*Launcher programs) but allow to install both new and old
+     libraries by using diversions.
+ 
+  -- Mike Hommey <glandium at debian.org>  Fri, 25 Jan 2008 00:31:51 +0100
+ 
  webkit (0~svn27674-2) unstable; urgency=low
  
    * JavaScriptCore/JavaScriptCore.pri: cherry-picked change from revision
@@@ -105,4 -95,3 +127,4 @@@ webkit (0~svn24735-1) unstable; urgency
    * Initial release. (Closes: #428855)
  
   -- Mike Hommey <glandium at debian.org>  Wed, 15 Aug 2007 14:19:46 +0200
 +
diff --combined debian/control
index 6fd0d21,1ab7a93..4a8f6f1
--- a/debian/control
+++ b/debian/control
@@@ -4,12 -4,9 +4,12 @@@ Section: we
  Maintainer: Debian WebKit Maintainers <pkg-webkit-maintainers at lists.alioth.debian.org>
  Uploaders: Mike Hommey <glandium at debian.org>
  Build-Depends: debhelper (>= 5.0), libgtk2.0-dev, libqt4-dev (>= 4.3), libicu-dev, libxslt-dev, libcurl4-dev, libsqlite3-dev, gperf, bison, flex
 -Standards-Version: 3.7.2.2
 +Standards-Version: 3.7.3.0
 +Homepage: http://webkit.org/
 +Vcs-Browser: http://git.debian.org/?p=pkg-webkit/webkit.git
 +Vcs-Git: git://git.debian.org/git/pkg-webkit/webkit.git
  
- Package: libqtwebkit0d
+ Package: libqtwebkit1d
  Section: libs
  Architecture: any
  Depends: ${shlibs:Depends}
@@@ -22,12 -19,14 +22,12 @@@ Description: Web content engine librar
   supports DOM, XMLHttpRequest, XSLT, CSS, Javascript/ECMAscript and more.
   .
   This is the library for embedding in Qt applications.
 - .
 - Homepage: http://webkit.org/
  
  Package: libqtwebkit-dev
  Section: libdevel
  Priority: extra
  Architecture: all
- Depends: libqtwebkit0d (>= ${source:Upstream-Version}), libqtwebkit0d (<< ${source:Version}.1~), libqt4-dev
+ Depends: libqtwebkit1d (>= ${source:Upstream-Version}), libqtwebkit1d (<< ${source:Version}.1~), libqt4-dev
  Description: Web content engine library for Qt - Development files
   WebKit is a web content engine, derived from KHTML and KJS from KDE, and
   used primarily in Apple's Safari browser.  It is made to be embedded in
@@@ -38,12 -37,14 +38,12 @@@
   .
   This package provides development files required to create Qt applications
   embedding WebKit.
 - .
 - Homepage: http://webkit.org/
  
- Package: libqtwebkit0d-dbg
+ Package: libqtwebkit1d-dbg
  Section: libdevel
  Priority: extra
  Architecture: any
- Depends: libqtwebkit0d (= ${binary:Version})
+ Depends: libqtwebkit1d (= ${binary:Version})
  Description: Web content engine library for Qt - Debugging symbols
   WebKit is a web content engine, derived from KHTML and KJS from KDE, and
   used primarily in Apple's Safari browser.  It is made to be embedded in
@@@ -53,8 -54,10 +53,8 @@@
   supports DOM, XMLHttpRequest, XSLT, CSS, Javascript/ECMAscript and more.
   .
   This package provides the debugging symbols for the Webkit library for Qt.
 - .
 - Homepage: http://webkit.org/
  
- Package: libwebkitgtk0d
+ Package: libwebkitgtk1d
  Section: libs
  Architecture: any
  Depends: ${shlibs:Depends}
@@@ -67,12 -70,14 +67,12 @@@ Description: Web content engine librar
   supports DOM, XMLHttpRequest, XSLT, CSS, Javascript/ECMAscript and more.
   .
   This is the library for embedding in Gtk+ applications.
 - .
 - Homepage: http://webkit.org/
  
  Package: libwebkitgtk-dev
  Section: libdevel
  Priority: extra
  Architecture: all
- Depends: libwebkitgtk0d (>= ${source:Upstream-Version}), libwebkitgtk0d (<< ${source:Version}.1~), libglib2.0-dev, libgtk2.0-dev
+ Depends: libwebkitgtk1d (>= ${source:Upstream-Version}), libwebkitgtk1d (<< ${source:Version}.1~), libglib2.0-dev, libgtk2.0-dev
  Conflicts: libwebkitgdk-dev
  Description: Web content engine library for Gtk+ - Development files
   WebKit is a web content engine, derived from KHTML and KJS from KDE, and
@@@ -84,12 -89,14 +84,12 @@@
   .
   This package provides development files required to create Gtk+ applications
   embedding WebKit.
 - .
 - Homepage: http://webkit.org/
  
- Package: libwebkitgtk0d-dbg
+ Package: libwebkitgtk1d-dbg
  Section: libdevel
  Priority: extra
  Architecture: any
- Depends: libwebkitgtk0d (= ${binary:Version})
+ Depends: libwebkitgtk1d (= ${binary:Version})
  Description: Web content engine library for Gtk+ - Debugging symbols
   WebKit is a web content engine, derived from KHTML and KJS from KDE, and
   used primarily in Apple's Safari browser.  It is made to be embedded in
@@@ -99,3 -106,5 +99,3 @@@
   supports DOM, XMLHttpRequest, XSLT, CSS, Javascript/ECMAscript and more.
   .
   This package provides the debugging symbols for the Webkit library for Gtk+.
 - .
 - Homepage: http://webkit.org/

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list