1. 19 Apr, 2011 40 commits
    • commit-queue@webkit.org's avatar
      2011-04-19 Stuart Morgan <stuartmorgan@chromium.org> · 2333227c
      commit-queue@webkit.org authored
              Reviewed by Tony Chang.
      
              [chromium] Clicking on plugin for first time blocks focus shift
              https://bugs.webkit.org/show_bug.cgi?id=58419
      
              Added new test for cross-iframe focus changes on plugin clicks.
      
              * plugins/mouse-click-iframe-to-plugin-expected.txt: Added.
              * plugins/mouse-click-iframe-to-plugin.html: Added.
      2011-04-19  Stuart Morgan  <stuartmorgan@chromium.org>
      
              Reviewed by Tony Chang.
      
              [chromium] Clicking on plugin for first time blocks focus shift
              https://bugs.webkit.org/show_bug.cgi?id=58419
      
              Switched to using FocusController when moving focus to a plugin
              so that cross-frame focus changes are handled correctly.
      
              * src/WebPluginContainerImpl.cpp:
              (WebKit::WebPluginContainerImpl::handleMouseEvent):
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84270 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      2333227c
    • ojan@chromium.org's avatar
      2011-04-19 Ojan Vafai <ojan@chromium.org> · 6ee96fd4
      ojan@chromium.org authored
              Remove accidentally committed debug code.
              * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84269 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      6ee96fd4
    • bfulgham@webkit.org's avatar
      Unreviewed build correction. · 31ba91bd
      bfulgham@webkit.org authored
      Avoid duplicate stub implementation of test routine
      for WinCairo build.
      
      * WebKitTestRunner/win/TestInvocationWin.cpp: Exclude
      WinCairo from using this stub.
      
      
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84268 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      31ba91bd
    • ojan@chromium.org's avatar
      2011-04-18 Ojan Vafai <ojan@chromium.org> · 968c85ea
      ojan@chromium.org authored
              Reviewed by Eric Seidel.
      
              make results file work with audio and reftests
              https://bugs.webkit.org/show_bug.cgi?id=58860
      
              Also fix bug with timeout tests and store a bit in the JSON
              for new image tests instead of loading the image result to check if it's there.
      
              * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
              * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84267 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      968c85ea
    • commit-queue@webkit.org's avatar
      2011-04-19 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> · a3ab341b
      commit-queue@webkit.org authored
              Reviewed by Adam Roben.
      
              PrettyPatch tries to show images for deleted files
              https://bugs.webkit.org/show_bug.cgi?id=28457
      
              When the image data is empty, instead of generating an <img> tag, generate
              a text to indicate the image was deleted.
      
              * PrettyPatch/PrettyPatch.rb:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84266 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      a3ab341b
    • rniwa@webkit.org's avatar
      2011-04-19 Ryosuke Niwa <rniwa@webkit.org> · 4db7f31d
      rniwa@webkit.org authored
              Reviewed by Dimitri Glazkov.
      
              REGRESSION(r74228-75294): removing nodes is 200+ times slower when selection is inside a shadow DOM
              https://bugs.webkit.org/show_bug.cgi?id=57061
      
              The bug was caused by Range::compareNode's incorrectly returning NODE_INSIDE when the selection is inside
              a shadow DOM and the node is outside of the shadow DOM. This caused respondToNodeModification to call
              RenderView::clearSelection every time a node is removed when selection is in a shadow DOM and resulted in
              a significant performance regression.
      
              Fixed Ranged::compareNode by making Range::compareBoundaryPoints throw a WRONG_DOCUMENT_ERR when there are
              no common ancestors between containerA and containerB. This will force compareNode to also throw an exception
              and prevents respondToNodeModification from clearing selection.
      
              No new tests because this is a performance improvement and the fix in Range cannot be tested since shadow DOM
              isn't exposed to JavaScript.
      
              * dom/Range.cpp:
              (WebCore::Range::setStart): Calls compareBoundaryPoints; since we ensures that the root container noes of
              start and end nodes are same, we should never get an exception from compareBoundaryPoints.
              (WebCore::Range::setEnd): Ditto.
              (WebCore::Range::isPointInRange): Calls compareBoundaryPoints; returns false when compareBoundaryPoints
              throws an exception.
              (WebCore::Range::comparePoint): Calls compareBoundaryPoints; exit early when an exception is thrown by
              compareBoundaryPoints.
              (WebCore::Range::compareBoundaryPoints): Throws an exception when two containers do not have a common ancestor.
              (WebCore::Range::boundaryPointsValid): Calls compareBoundaryPoints and checks that it didn't throw an exception.
              * dom/Range.h:
              * editing/SelectionController.cpp:
              (WebCore::SelectionController::respondToNodeModification):
              * editing/htmlediting.cpp:
              (WebCore::comparePositions): Calls compareBoundaryPoints.
              * editing/markup.cpp:
              (WebCore::createMarkup): Calls compareBoundaryPoints; since startNode and pastEnd are both in the same document
              and neither are in a shadow DOM, it should never throw an exception.
              * page/DOMSelection.cpp:
              (WebCore::DOMSelection::containsNode): Calls compareBoundaryPoints; node is fully selected only if no exception
              was thrown.
      
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84265 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      4db7f31d
    • jshin@chromium.org's avatar
      Index: Source/JavaScriptCore/ChangeLog · 69d6b214
      jshin@chromium.org authored
      ===================================================================
      --- Source/JavaScriptCore/ChangeLog	(revision 84100)
      +++ Source/JavaScriptCore/ChangeLog	(working copy)
      @@ -1,3 +1,15 @@
      +2011-04-17  Jungshik Shin  <jshin@chromium.org>
      +
      +        Reviewed by NOBODY (OOPS!).
      +
      +        Add U+FEFF (Zero width no-break space) to CharacterNames.h.
      +        It's added to the list of characters to treat as zero-width
      +        in WebCore.
      +
      +        https://bugs.webkit.org/show_bug.cgi?id=48860
      +
      +        * wtf/unicode/CharacterNames.h:
      +
       2011-04-16  Patrick Gansterer  <paroga@webkit.org>
       
               Reviewed by Eric Seidel.
      Index: Source/JavaScriptCore/wtf/unicode/CharacterNames.h
      ===================================================================
      --- Source/JavaScriptCore/wtf/unicode/CharacterNames.h	(revision 84099)
      +++ Source/JavaScriptCore/wtf/unicode/CharacterNames.h	(working copy)
      @@ -85,6 +85,7 @@ const UChar yenSign = 0x00A5;
       const UChar zeroWidthJoiner = 0x200D;
       const UChar zeroWidthNonJoiner = 0x200C;
       const UChar zeroWidthSpace = 0x200B;
      +const UChar zeroWidthNoBreakSpace = 0xFEFF;
       
       } // namespace Unicode
       } // namespace WTF
      @@ -138,5 +139,6 @@ using WTF::Unicode::yenSign;
       using WTF::Unicode::zeroWidthJoiner;
       using WTF::Unicode::zeroWidthNonJoiner;
       using WTF::Unicode::zeroWidthSpace;
      +using WTF::Unicode::zeroWidthNoBreakSpace;
       
       #endif // CharacterNames_h
      Index: Source/WebCore/ChangeLog
      ===================================================================
      --- Source/WebCore/ChangeLog	(revision 84100)
      +++ Source/WebCore/ChangeLog	(working copy)
      @@ -1,3 +1,37 @@
      +2011-04-17  Jungshik Shin  <jshin@chromium.org>
      +
      +        Reviewed by NOBODY (OOPS!).
      +
      +        Make U+FEFF be treated as a zero-width character in both
      +        simple script and complex script code paths. In Chromium
      +        Windows, UniscribeHelper needs a rather extensive changes
      +        summarized below.  Other ports need minor changes.
      +
      +        https://bugs.webkit.org/show_bug.cgi?id=48860
      +
      +        Test: fast/text/zero-width-characters-complex-script.html
      +
      +        * platform/graphics/Font.h:
      +        (WebCore::Font::treatAsZeroWidthSpace): U+FEFF is added to the list
      +        (WebCore::Font::treatAsZeroWidthSpaceInComplexScript): Added. Same as the above except that ZWNJ and ZWJ are excluded.
      +        * platform/graphics/GlyphPageTreeNode.cpp:
      +        (WebCore::GlyphPageTreeNode::initializePage): U+FEFF is made to have zero-width characters in simple script (fast) code path.
      +        * platform/graphics/chromium/FontUtilsChromiumWin.cpp:
      +        (WebCore::FontMap::getSpaceGlyph): Added to get the gid for space glyph to use in adjustSpaceAdvance when zero-width glyph character has a non-zero width and potentially 'visible' glyph.
      +        (WebCore::FontMap::FontData::FontData): spaceGlyph member added.
      +        (WebCore::getDerivedFontData): spaceGlyph is retrieved as well.
      +        * platform/graphics/chromium/FontUtilsChromiumWin.h:
      +        * platform/graphics/chromium/UniscribeHelper.cpp:
      +        (WebCore::UniscribeHelper::UniscribeHelper): m_spaceGlyph added.
      +        (WebCore::UniscribeHelper::shape): spaceGlyph is obtained stored for a font tried for each item.
      +        (WebCore::UniscribeHelper::adjustSpaceAdvances): For zero-width complex script characters, set the advance width to zero and replace a non-zero-width/visible glyph with a space glyph.
      +        (WebCore::UniscribeHelper::applySpacing):
      +        (WebCore::UniscribeHelper::containsMissingGlyphs): turned to a member function because it cannot work on glyphs alone any more but need to take into account a character corresponding to a glyph
      +        * platform/graphics/chromium/UniscribeHelper.h: 
      +        (WebCore::UniscribeHelper::Shaping::Shaping): m_spaceGlyph is added
      +        * platform/graphics/chromium/UniscribeHelperTextRun.cpp:
      +        (WebCore::UniscribeHelperTextRun::UniscribeHelperTextRun): When calling UniscriberHelper, add a new argument for spaceGlyph.
      +
       2011-04-16  Adam Barth  <abarth@webkit.org>
       
               Reviewed by Sam Weinig.
      Index: Source/WebCore/platform/graphics/Font.h
      ===================================================================
      --- Source/WebCore/platform/graphics/Font.h	(revision 84099)
      +++ Source/WebCore/platform/graphics/Font.h	(working copy)
      @@ -203,7 +203,8 @@ public:
       
           FontSelector* fontSelector() const;
           static bool treatAsSpace(UChar c) { return c == ' ' || c == '\t' || c == '\n' || c == noBreakSpace; }
      -    static bool treatAsZeroWidthSpace(UChar c) { return c < 0x20 || (c >= 0x7F && c < 0xA0) || c == softHyphen || (c >= 0x200c && c <= 0x200f) || (c >= 0x202a && c <= 0x202e) || c == objectReplacementCharacter; }
      +    static bool treatAsZeroWidthSpace(UChar c) { return treatAsZeroWidthSpaceInComplexScript(c) || c == 0x200c || c == 0x200d; }
      +    static bool treatAsZeroWidthSpaceInComplexScript(UChar c) { return c < 0x20 || (c >= 0x7F && c < 0xA0) || c == softHyphen || (c >= 0x200e && c <= 0x200f) || (c >= 0x202a && c <= 0x202e) || c == zeroWidthNoBreakSpace || c == objectReplacementCharacter; }
           static bool canReceiveTextEmphasis(UChar32 c);
       
           static inline UChar normalizeSpaces(UChar character)
      Index: Source/WebCore/platform/graphics/GlyphPageTreeNode.cpp
      ===================================================================
      --- Source/WebCore/platform/graphics/GlyphPageTreeNode.cpp	(revision 84099)
      +++ Source/WebCore/platform/graphics/GlyphPageTreeNode.cpp	(working copy)
      @@ -191,6 +191,9 @@ void GlyphPageTreeNode::initializePage(c
                       } else if (start == (objectReplacementCharacter & ~(GlyphPage::size - 1))) {
                           // Object replacement character must not render at all.
                           buffer[objectReplacementCharacter - start] = zeroWidthSpace;
      +                } else if (start == (zeroWidthNoBreakSpace & ~(GlyphPage::size - 1))) {
      +                    // ZWNBS/BOM must not render at all.
      +                    buffer[zeroWidthNoBreakSpace - start] = zeroWidthSpace;
                       }
                   } else {
                       bufferLength = GlyphPage::size * 2;
      Index: Source/WebCore/platform/graphics/chromium/FontUtilsChromiumWin.cpp
      ===================================================================
      --- Source/WebCore/platform/graphics/chromium/FontUtilsChromiumWin.cpp	(revision 84099)
      +++ Source/WebCore/platform/graphics/chromium/FontUtilsChromiumWin.cpp	(working copy)
      @@ -250,17 +250,31 @@ int getAscent(HFONT hfont)
           return gotMetrics ? tm.tmAscent : kUndefinedAscent;
       }
       
      +WORD getSpaceGlyph(HFONT hfont) 
      +{
      +    HDC dc = GetDC(0);
      +    HGDIOBJ oldFont = SelectObject(dc, hfont);
      +    WCHAR space = L' ';
      +    WORD spaceGlyph = 0;
      +    GetGlyphIndices(dc, &space, 1, &spaceGlyph, 0);
      +    SelectObject(dc, oldFont);
      +    ReleaseDC(0, dc);
      +    return spaceGlyph;
      +}
      +
       struct FontData {
           FontData()
               : hfont(0)
               , ascent(kUndefinedAscent)
               , scriptCache(0)
      +        , spaceGlyph(0)
           {
           }
       
           HFONT hfont;
           int ascent;
           mutable SCRIPT_CACHE scriptCache;
      +    WORD spaceGlyph;
       };
       
       // Again, using hash_map does not earn us much here.  page_cycler_test intl2
      @@ -379,7 +393,8 @@ bool getDerivedFontData(const UChar* fam
                               LOGFONT* logfont,
                               int* ascent,
                               HFONT* hfont,
      -                        SCRIPT_CACHE** scriptCache)
      +                        SCRIPT_CACHE** scriptCache,
      +                        WORD* spaceGlyph)
       {
           ASSERT(logfont);
           ASSERT(family);
      @@ -408,6 +423,7 @@ bool getDerivedFontData(const UChar* fam
               // cache it so that we won't have to call CreateFontIndirect once
               // more for HFONT next time.
               derived->ascent = getAscent(derived->hfont);
      +        derived->spaceGlyph = getSpaceGlyph(derived->hfont);
           } else {
               derived = &iter->second;
               // Last time, GetAscent failed so that only HFONT was
      @@ -419,6 +435,7 @@ bool getDerivedFontData(const UChar* fam
           *hfont = derived->hfont;
           *ascent = derived->ascent;
           *scriptCache = &(derived->scriptCache);
      +    *spaceGlyph = derived->spaceGlyph;
           return *ascent != kUndefinedAscent;
       }
       
      Index: Source/WebCore/platform/graphics/chromium/FontUtilsChromiumWin.h
      ===================================================================
      --- Source/WebCore/platform/graphics/chromium/FontUtilsChromiumWin.h	(revision 84099)
      +++ Source/WebCore/platform/graphics/chromium/FontUtilsChromiumWin.h	(working copy)
      @@ -78,7 +78,7 @@ const UChar* getFallbackFamily(const UCh
       // intl2 page-cycler test is noticeably slower with one out param than
       // the current version although the subsequent 9 passes take about the
       // same time.
      -bool getDerivedFontData(const UChar* family, int style, LOGFONT*, int* ascent, HFONT*, SCRIPT_CACHE**);
      +bool getDerivedFontData(const UChar* family, int style, LOGFONT*, int* ascent, HFONT*, SCRIPT_CACHE**, WORD* spaceGlyph);
       
       enum {
           FontStyleNormal = 0,
      Index: Source/WebCore/platform/graphics/chromium/UniscribeHelper.cpp
      ===================================================================
      --- Source/WebCore/platform/graphics/chromium/UniscribeHelper.cpp	(revision 84099)
      +++ Source/WebCore/platform/graphics/chromium/UniscribeHelper.cpp	(working copy)
      @@ -31,45 +31,16 @@
       #include "config.h"
       #include "UniscribeHelper.h"
       
      -#include <windows.h>
      -
      +#include "Font.h"
       #include "FontUtilsChromiumWin.h"
       #include "PlatformContextSkia.h"
       #include "SkiaFontWin.h"
       #include "SkPoint.h"
      +#include <windows.h>
       #include <wtf/Assertions.h>
       
       namespace WebCore {
       
      -// This function is used to see where word spacing should be applied inside
      -// runs. Note that this must match Font::treatAsSpace so we all agree where
      -// and how much space this is, so we don't want to do more general Unicode
      -// "is this a word break" thing.
      -static bool treatAsSpace(UChar c)
      -{
      -    return c == ' ' || c == '\t' || c == '\n' || c == 0x00A0;
      -}
      -
      -// SCRIPT_FONTPROPERTIES contains glyph indices for default, invalid
      -// and blank glyphs. Just because ScriptShape succeeds does not mean
      -// that a text run is rendered correctly. Some characters may be rendered
      -// with default/invalid/blank glyphs. Therefore, we need to check if the glyph
      -// array returned by ScriptShape contains any of those glyphs to make
      -// sure that the text run is rendered successfully.
      -static bool containsMissingGlyphs(WORD *glyphs,
      -                                  int length,
      -                                  SCRIPT_FONTPROPERTIES* properties)
      -{
      -    for (int i = 0; i < length; ++i) {
      -        if (glyphs[i] == properties->wgDefault
      -            || (glyphs[i] == properties->wgInvalid
      -            && glyphs[i] != properties->wgBlank))
      -            return true;
      -    }
      -
      -    return false;
      -}
      -
       // HFONT is the 'incarnation' of 'everything' about font, but it's an opaque
       // handle and we can't directly query it to make a new HFONT sharing
       // its characteristics (height, style, etc) except for family name.
      @@ -102,13 +73,15 @@ UniscribeHelper::UniscribeHelper(const U
                                       bool isRtl,
                                       HFONT hfont,
                                       SCRIPT_CACHE* scriptCache,
      -                                SCRIPT_FONTPROPERTIES* fontProperties)
      +                                SCRIPT_FONTPROPERTIES* fontProperties,
      +                                WORD spaceGlyph)
           : m_input(input)
           , m_inputLength(inputLength)
           , m_isRtl(isRtl)
           , m_hfont(hfont)
           , m_scriptCache(scriptCache)
           , m_fontProperties(fontProperties)
      +    , m_spaceGlyph(spaceGlyph)
           , m_directionalOverride(false)
           , m_inhibitLigate(false)
           , m_letterSpacing(0)
      @@ -546,6 +519,7 @@ bool UniscribeHelper::shape(const UChar*
           SCRIPT_CACHE* scriptCache = m_scriptCache;
           SCRIPT_FONTPROPERTIES* fontProperties = m_fontProperties;
           int ascent = m_ascent;
      +    WORD spaceGlyph = m_spaceGlyph;
           HDC tempDC = 0;
           HGDIOBJ oldFont = 0;
           HRESULT hr;
      @@ -601,7 +575,7 @@ bool UniscribeHelper::shape(const UChar*
               } else if (hr == E_OUTOFMEMORY) {
                   numGlyphs *= 2;
                   continue;
      -        } else if (SUCCEEDED(hr) && (lastFallbackTried || !containsMissingGlyphs(&shaping.m_glyphs[0], generatedGlyphs, fontProperties)))
      +        } else if (SUCCEEDED(hr) && (lastFallbackTried || !containsMissingGlyphs(shaping, run, fontProperties)))
                   break;
       
               // The current font can't render this run. clear DC and try
      @@ -632,7 +606,9 @@ bool UniscribeHelper::shape(const UChar*
                   const UChar *family = getFallbackFamily(input, itemLength,
                       FontDescription::StandardFamily, 0, 0);
                   bool fontOk = getDerivedFontData(family, m_style, &m_logfont,
      -                                              &ascent, &hfont, &scriptCache);
      +                                             &ascent, &hfont, &scriptCache,
      +                                             &spaceGlyph);
      +                                              
       
                   if (!fontOk) {
                       // If this GetDerivedFontData is called from the renderer it
      @@ -644,7 +620,8 @@ bool UniscribeHelper::shape(const UChar*
       
                       // Try again.
                       fontOk = getDerivedFontData(family, m_style, &m_logfont,
      -                                             &ascent, &hfont, &scriptCache);
      +                                            &ascent, &hfont, &scriptCache,
      +                                            &spaceGlyph);
                       ASSERT(fontOk);
                   }
       
      @@ -673,6 +650,7 @@ bool UniscribeHelper::shape(const UChar*
           // because it's not used elsewhere.
           shaping.m_hfont = hfont;
           shaping.m_scriptCache = scriptCache;
      +    shaping.m_spaceGlyph = spaceGlyph;
       
           // The ascent of a font for this run can be different from
           // that of the primary font so that we need to keep track of
      @@ -806,22 +784,39 @@ void UniscribeHelper::adjustSpaceAdvance
           for (size_t run = 0; run < m_runs.size(); run++) {
               Shaping& shaping = m_shapes[run];
       
      +        // FIXME: This loop is not UTF-16-safe. Unicode 6.0 has a couple
      +        // of complex script blocks in Plane 1.
               for (int i = 0; i < shaping.charLength(); i++) {
      -            if (!treatAsSpace(m_input[m_runs[run].iCharPos + i]))
      +            UChar c = m_input[m_runs[run].iCharPos + i];
      +            bool treatAsSpace = Font::treatAsSpace(c);
      +            if (!treatAsSpace && !Font::treatAsZeroWidthSpaceInComplexScript(c))
                       continue;
       
                   int glyphIndex = shaping.m_logs[i];
                   int currentAdvance = shaping.m_advance[glyphIndex];
       
      -            // currentAdvance does not include additional letter-spacing, but
      -            // space_width does. Here we find out how off we are from the
      -            // correct width for the space not including letter-spacing, then
      -            // just subtract that diff.
      -            int diff = currentAdvance - spaceWidthWithoutLetterSpacing;
      -            // The shaping can consist of a run of text, so only subtract the
      -            // difference in the width of the glyph.
      -            shaping.m_advance[glyphIndex] -= diff;
      -            shaping.m_abc.abcB -= diff;
      +            if (treatAsSpace) {
      +                // currentAdvance does not include additional letter-spacing,
      +                // but m_spaceWidth does. Here we find out how off we are from
      +                // the correct width (spaceWidthWithoutLetterSpacing) and
      +                // just subtract that diff.
      +                int diff = currentAdvance - spaceWidthWithoutLetterSpacing;
      +                // The shaping can consist of a run of text, so only subtract
      +                // the difference in the width of the glyph.
      +                shaping.m_advance[glyphIndex] -= diff;
      +                shaping.m_abc.abcB -= diff;
      +                continue;
      +            }
      +
      +            // For characters treated as zero-width space in complex
      +            // scripts, set the advance width to zero, adjust
      +            // |abcB| of the current run accordingly and set 
      +            // the glyph to m_spaceGlyph (invisible).
      +            shaping.m_advance[glyphIndex] = 0;
      +            shaping.m_abc.abcB -= currentAdvance;
      +            shaping.m_offsets[glyphIndex].du = 0;
      +            shaping.m_offsets[glyphIndex].dv = 0;
      +            shaping.m_glyphs[glyphIndex] = shaping.m_spaceGlyph;
               }
           }
       }
      @@ -872,7 +867,7 @@ void UniscribeHelper::applySpacing()
               // extra wordspacing amount for the glyphs they correspond to.
               if (m_wordSpacing != 0) {
                   for (int i = 0; i < shaping.charLength(); i++) {
      -                if (!treatAsSpace(m_input[m_runs[run].iCharPos + i]))
      +                if (!Font::treatAsSpace(m_input[m_runs[run].iCharPos + i]))
                           continue;
       
                       // The char in question is a word separator...
      @@ -929,4 +924,31 @@ int UniscribeHelper::advanceForItem(int
           return shaping.m_prePadding + justification;
       }
       
      +// SCRIPT_FONTPROPERTIES contains glyph indices for default, invalid
      +// and blank glyphs. Just because ScriptShape succeeds does not mean
      +// that a text run is rendered correctly. Some characters may be rendered
      +// with default/invalid/blank glyphs. Therefore, we need to check if the glyph
      +// array returned by ScriptShape contains any of those glyphs to make
      +// sure that the text run is rendered successfully.
      +// However, we should not subject zero-width characters to this test.
      +
      +bool UniscribeHelper::containsMissingGlyphs(const Shaping& shaping,
      +                                            const SCRIPT_ITEM& run,
      +                                            const SCRIPT_FONTPROPERTIES* properties) const
      +{
      +    for (int i = 0; i < shaping.charLength(); i++) {
      +        UChar c = m_input[run.iCharPos + i];
      +        // Skip zero-width space characters because they're not considered to be missing in a font.
      +        if (Font::treatAsZeroWidthSpaceInComplexScript(c))
      +            continue;
      +        int glyphIndex = shaping.m_logs[i];
      +        WORD glyph = shaping.m_glyphs[glyphIndex];
      +        if (glyph == properties->wgDefault
      +            || (glyph == properties->wgInvalid && glyph != properties->wgBlank))
      +            return true;
      +    }
      +    return false;
      +}
      +
      +
       }  // namespace WebCore
      Index: Source/WebCore/platform/graphics/chromium/UniscribeHelper.h
      ===================================================================
      --- Source/WebCore/platform/graphics/chromium/UniscribeHelper.h	(revision 84099)
      +++ Source/WebCore/platform/graphics/chromium/UniscribeHelper.h	(working copy)
      @@ -76,7 +76,8 @@ public:
                           bool isRtl,
                           HFONT,
                           SCRIPT_CACHE*,
      -                    SCRIPT_FONTPROPERTIES*);
      +                    SCRIPT_FONTPROPERTIES*,
      +                    WORD);
       
           virtual ~UniscribeHelper();
       
      @@ -225,7 +226,9 @@ private:
                   : m_prePadding(0)
                   , m_hfont(NULL)
                   , m_scriptCache(NULL)
      -            , m_ascentOffset(0) {
      +            , m_ascentOffset(0)
      +            , m_spaceGlyph(0)
      +        {
                   m_abc.abcA = 0;
                   m_abc.abcB = 0;
                   m_abc.abcC = 0;
      @@ -319,6 +322,8 @@ private:
               // when drawing a string, to align multiple runs rendered with
               // different fonts.
               int m_ascentOffset;
      +
      +        WORD m_spaceGlyph;
           };
       
           // Computes the runs_ array from the text run.
      @@ -343,6 +348,10 @@ private:
           // Returns the total width of a single item.
           int advanceForItem(int) const;
       
      +    bool containsMissingGlyphs(const Shaping&,
      +                               const SCRIPT_ITEM&,
      +                               const SCRIPT_FONTPROPERTIES*) const;
      +
           // Shapes a run (pointed to by |input|) using |hfont| first.
           // Tries a series of fonts specified retrieved with NextWinFontData
           // and finally a font covering characters in |*input|. A string pointed
      @@ -384,6 +393,7 @@ private:
           int m_ascent;
           LOGFONT m_logfont;
           int m_style;
      +    WORD m_spaceGlyph;
       
           // Options, see the getters/setters above.
           bool m_directionalOverride;
      Index: Source/WebCore/platform/graphics/chromium/UniscribeHelperTextRun.cpp
      ===================================================================
      --- Source/WebCore/platform/graphics/chromium/UniscribeHelperTextRun.cpp	(revision 84099)
      +++ Source/WebCore/platform/graphics/chromium/UniscribeHelperTextRun.cpp	(working copy)
      @@ -43,7 +43,8 @@ UniscribeHelperTextRun::UniscribeHelperT
           : UniscribeHelper(run.characters(), run.length(), run.rtl(),
                             font.primaryFont()->platformData().hfont(),
                             font.primaryFont()->platformData().scriptCache(),
      -                      font.primaryFont()->platformData().scriptFontProperties())
      +                      font.primaryFont()->platformData().scriptFontProperties(),
      +                      font.primaryFont()->spaceGlyph())
           , m_font(&font)
           , m_fontIndex(0)
       {
      @@ -69,7 +70,7 @@ UniscribeHelperTextRun::UniscribeHelperT
           SCRIPT_CACHE* scriptCache,
           SCRIPT_FONTPROPERTIES* fontProperties)
           : UniscribeHelper(input, inputLength, isRtl, hfont,
      -                      scriptCache, fontProperties)
      +                      scriptCache, fontProperties, 0)
           , m_font(0)
           , m_fontIndex(-1)
       {
      Index: LayoutTests/ChangeLog
      ===================================================================
      --- LayoutTests/ChangeLog	(revision 84100)
      +++ LayoutTests/ChangeLog	(working copy)
      @@ -1,3 +1,21 @@
      +2011-04-17  Jungshik Shin  <jshin@chromium.org>
      +
      +        Reviewed by NOBODY (OOPS!).
      +
      +        Add a complex-script version of zero-width-characters.html.
      +        and add U+FEFF to zero-width-characters.html 
      +        Chromium Linux fails the test because U+FEFF is rendered
      +        with a non-zero width glyph.
      +        Filed http://bugs.webkit.org/show_bug.cgi?id=58741 and noted
      +        as such in test_expectation.txt.
      +        
      +        https://bugs.webkit.org/show_bug.cgi?id=48860
      +
      +        * fast/text/zero-width-characters-complex-script-expected.txt: Added.
      +        * fast/text/zero-width-characters-complex-script.html: Added.
      +        * fast/text/zero-width-characters.html:
      +        * platform/chromium/test_expectations.txt:
      +
       2011-04-16  Dan Bernstein  <mitz@apple.com>
       
               Updated results for fast/block/float/032.html after r84096. Filed http://webkit.org/b/58736 to
      Index: LayoutTests/fast/text/zero-width-characters-complex-script-expected.txt
      ===================================================================
      --- LayoutTests/fast/text/zero-width-characters-complex-script-expected.txt	(revision 0)
      +++ LayoutTests/fast/text/zero-width-characters-complex-script-expected.txt	(revision 0)
      @@ -0,0 +1,3 @@
      +This test checks various characters that should always be zero width to ensure that they are when enclosed by complex script characters. The WebKit text system ensures this in a way that's independent of the fonts installed on the system.
      +
      +PASS: All characters had zero-width.
      Index: LayoutTests/fast/text/zero-width-characters-complex-script.html
      ===================================================================
      --- LayoutTests/fast/text/zero-width-characters-complex-script.html	(revision 0)
      +++ LayoutTests/fast/text/zero-width-characters-complex-script.html	(revision 0)
      @@ -0,0 +1,66 @@
      +<head>
      +<script>
      +
      +function testChar(ch)
      +{
      +    // Strings a and b selected here do not have any 'interaction' between them.
      +    var a = "\u0915\u093E"
      +    var b = "\u0916";
      +    var span = document.getElementById("characters");
      +    span.firstChild.data = a + b;
      +    var abWidth = span.offsetWidth;
      +    span.firstChild.data = a;
      +    var aWidth = span.offsetWidth;
      +    span.firstChild.data = a + String.fromCharCode(ch) + b;
      +    var abWithChWidth = span.offsetWidth;
      +
      +    if (abWithChWidth > abWidth)
      +        return 1;
      +    if (abWidth > aWidth)
      +        return 0;
      +    return 1;
      +}
      +
      +function test()
      +{
      +    if (window.layoutTestController)
      +        layoutTestController.dumpAsText();
      +    var failedCount = 0;
      +    for (var i = 1; i < 32; ++i)
      +        if (i != 9 && i != 10 && i != 13)
      +            failedCount += testChar(i);
      +
      +    for (var i = 0x7F; i < 0xA0; ++i)
      +        failedCount += testChar(i);
      +    failedCount += testChar(0xAD);
      +    // ZWJ (U+200C) and ZWNJ (U+200D) are excluded because they
      +    // can affect the rendering in complex script text.
      +    failedCount += testChar(0x200B);
      +    failedCount += testChar(0x200E);
      +    failedCount += testChar(0x200F);
      +    failedCount += testChar(0x202A);
      +    failedCount += testChar(0x202B);
      +    failedCount += testChar(0x202C);
      +    failedCount += testChar(0x202D);
      +    failedCount += testChar(0x202E);
      +    failedCount += testChar(0xFEFF);
      +    failedCount += testChar(0xFFFC);
      +
      +    var testArea = document.getElementById("testArea");
      +    testArea.parentNode.removeChild(testArea);
      +
      +    if (failedCount > 0) 
      +        result = "FAIL: " + failedCount + " characters had non-zero width" +
      +                 " or failed to get measured.";
      +    else
      +        result = "PASS: All characters had zero-width.";
      +    document.getElementById("result").firstChild.data = result;
      +}
      +</script>
      +</head>
      +<body onload="test()">
      +<p>This test checks various characters that should always be zero width to ensure that they are when enclosed by complex script characters.
      +The WebKit text system ensures this in a way that's independent of the fonts installed on the system.</p>
      +<p id="result">FAIL: Script did not run to completion.</p>
      +<p id="testArea"><span id="characters">&#x0915;&#x093E;&#x0916;</span></p>
      +</body>
      Index: LayoutTests/fast/text/zero-width-characters.html
      ===================================================================
      --- LayoutTests/fast/text/zero-width-characters.html	(revision 84099)
      +++ LayoutTests/fast/text/zero-width-characters.html	(working copy)
      @@ -13,6 +13,7 @@ function test()
           testString += String.fromCharCode(0x200D);
           testString += String.fromCharCode(0x200E);
           testString += String.fromCharCode(0x200F);
      +    testString += String.fromCharCode(0xFEFF);
           testString += String.fromCharCode(0xFFFC);
           var span = document.getElementById("characters");
           var abWidth = span.offsetWidth;
      Index: LayoutTests/platform/chromium/test_expectations.txt
      ===================================================================
      --- LayoutTests/platform/chromium/test_expectations.txt	(revision 84099)
      +++ LayoutTests/platform/chromium/test_expectations.txt	(working copy)
      @@ -3534,4 +3534,5 @@ BUGMORRITA : fast/html/details-remove-su
       BUGMORRITA : fast/html/details-writing-mode.html = FAIL
       
       BUGWK58619 GPU LINUX WIN : media/video-volume-slider.html = IMAGE
      +BUGWK58741 LINUX : fast/text/zero-width-characters-complex-script.html = FAIL
       
      
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84264 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      69d6b214
    • commit-queue@webkit.org's avatar
      2011-04-19 Igor Oliveira <igor.oliveira@openbossa.org> · 1a6fe279
      commit-queue@webkit.org authored
              Reviewed by Andreas Kling.
      
              [Qt] X11: Text selection is causing oncopy event to be called
              https://bugs.webkit.org/show_bug.cgi?id=58656
      
              Always when text is selected the oncopy event is fired, this behavior does
              not exist in Firefox or Chrome. Now, when selecting a text, QtWebKit
              is making multi part-copies (with rich text metadata), the multi-part
              data can be obtained by data transfer items interface when supported by QtWebKit.
              Also, copies to the clipboard of a selected image, is not supported by Chrome and
              Firefox and was removed from QtWebKit.
      
              * Api/qwebpage.cpp:
              (QWebPagePrivate::handleClipboard):
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84263 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      1a6fe279
    • jer.noble@apple.com's avatar
      2011-04-19 Jer Noble <jer.noble@apple.com> · ec8f8f62
      jer.noble@apple.com authored
              Reviewed by Adam Roben.
      
              REGRESSION (r84206): 50 tests failing on SnowLeopard Intel Release (WebKit2 Tests) due to extra "supportsFullScreen() == true" output
              https://bugs.webkit.org/show_bug.cgi?id=58890
      
              Add a layoutTestController flag which controls when full screen callbacks are written to stdout.
              Defaults to false.
      
              * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl: Added dumpFullScreenCallbacks().
              * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
              (WTR::InjectedBundlePage::supportsFullScreen): Only write to stdout if shouldDumpFullScreenCallbacks is set.
              (WTR::InjectedBundlePage::enterFullScreenForElement): Ditto.
              (WTR::InjectedBundlePage::exitFullScreenForElement): Ditto.
              * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
              (WTR::LayoutTestController::LayoutTestController): Initialize new ivar.
              * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
              (WTR::LayoutTestController::dumpFullScreenCallbacks): Added.
              (WTR::LayoutTestController::shouldDumpFullScreenCallbacks): Added.
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84262 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      ec8f8f62
    • bfulgham@webkit.org's avatar
      Extend the DIBPixelData class with the facility for writing the · 34c9e243
      bfulgham@webkit.org authored
      bitmap representation to disk for debugging purposes.
      https://bugs.webkit.org/show_bug.cgi?id=58862.
      
      Reviewed by Adam Roben.
      
      * platform/graphics/win/DIBPixelData.cpp:
      (WebCore::DIBPixelData::writeToFile): New function.
      * platform/graphics/win/DIBPixelData.h:
      
      
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84261 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      34c9e243
    • commit-queue@webkit.org's avatar
      2011-04-19 Vsevolod Vlasov <vsevik@chromium.org> · 414978c6
      commit-queue@webkit.org authored
              Reviewed by Pavel Feldman.
      
              Web Inspector: Rename lengthReceived to encodedDataLength/dataLength
              https://bugs.webkit.org/show_bug.cgi?id=58883
      
              * fileapi/FileReaderLoader.cpp:
              (WebCore::FileReaderLoader::didReceiveData):
              * inspector/InspectorInstrumentation.cpp:
              (WebCore::InspectorInstrumentation::didReceiveContentLengthImpl):
              * inspector/InspectorInstrumentation.h:
              (WebCore::InspectorInstrumentation::didReceiveContentLength):
              * inspector/InspectorResourceAgent.cpp:
              (WebCore::InspectorResourceAgent::didReceiveContentLength):
              * inspector/InspectorResourceAgent.h:
              * inspector/front-end/NetworkManager.js:
              (WebInspector.NetworkDispatcher.prototype.dataReceived):
              * loader/DocumentThreadableLoader.cpp:
              (WebCore::DocumentThreadableLoader::didReceiveData):
              (WebCore::DocumentThreadableLoader::didReceiveCachedMetadata):
              * loader/DocumentThreadableLoader.h:
              * loader/FrameLoaderClient.h:
              * loader/MainResourceLoader.cpp:
              (WebCore::MainResourceLoader::didReceiveData):
              * loader/MainResourceLoader.h:
              * loader/NetscapePlugInStreamLoader.cpp:
              (WebCore::NetscapePlugInStreamLoader::didReceiveData):
              * loader/NetscapePlugInStreamLoader.h:
              * loader/ResourceLoadNotifier.cpp:
              (WebCore::ResourceLoadNotifier::didReceiveData):
              (WebCore::ResourceLoadNotifier::dispatchDidReceiveContentLength):
              (WebCore::ResourceLoadNotifier::sendRemainingDelegateMessages):
              * loader/ResourceLoadNotifier.h:
              * loader/ResourceLoader.cpp:
              (WebCore::ResourceLoader::didReceiveData):
              * loader/ResourceLoader.h:
              * loader/SubresourceLoader.cpp:
              (WebCore::SubresourceLoader::didReceiveData):
              * loader/SubresourceLoader.h:
              * loader/SubresourceLoaderClient.h:
              (WebCore::SubresourceLoaderClient::didReceiveData):
              (WebCore::SubresourceLoaderClient::didReceiveCachedMetadata):
              * loader/WorkerThreadableLoader.cpp:
              (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveData):
              (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveCachedMetadata):
              * loader/appcache/ApplicationCacheGroup.cpp:
              (WebCore::ApplicationCacheGroup::didReceiveData):
              * loader/appcache/ApplicationCacheGroup.h:
              * loader/appcache/ApplicationCacheHost.h:
              * notifications/Notification.cpp:
              (WebCore::Notification::didReceiveData):
              * notifications/Notification.h:
              * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
              (StreamingClient::didReceiveData):
              * platform/network/BlobResourceHandle.cpp:
              * platform/network/ResourceHandleClient.h:
              (WebCore::ResourceHandleClient::didReceiveData):
              * platform/network/android/ResourceHandleAndroid.cpp:
              (WebCore::SyncLoader::didReceiveData):
              * platform/network/cf/ResourceHandleCFNet.cpp:
              (WebCore::WebCoreSynchronousLoaderClient::didReceiveData):
              * platform/network/curl/ResourceHandleCurl.cpp:
              * platform/network/mac/ResourceHandleMac.mm:
              (WebCoreSynchronousLoaderClient::didReceiveData):
              * platform/network/soup/ResourceHandleSoup.cpp:
              * platform/network/win/ResourceHandleWin.cpp:
              * workers/WorkerScriptLoader.h:
              * xml/XMLHttpRequest.h:
      2011-04-19  Vsevolod Vlasov  <vsevik@chromium.org>
      
              Reviewed by Pavel Feldman.
      
              Web Inspector: Rename lengthReceived to encodedDataLength/dataLength
              https://bugs.webkit.org/show_bug.cgi?id=58883
      
              Renamed lengthReceived to encodedDataLength/dataLength.
      
              * public/WebURLLoaderClient.h:
              (WebKit::WebURLLoaderClient::didReceiveData):
              * src/AssociatedURLLoader.cpp:
              (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveCachedMetadata):
              * src/FrameLoaderClientImpl.cpp:
              (WebKit::FrameLoaderClientImpl::dispatchDidReceiveContentLength):
              * src/FrameLoaderClientImpl.h:
              * src/ResourceHandle.cpp:
              (WebCore::ResourceHandleInternal::didReceiveData):
      2011-04-19  Vsevolod Vlasov  <vsevik@chromium.org>
      
              Reviewed by Pavel Feldman.
      
              Web Inspector: Rename lengthReceived to encodedDataLength/dataLength
              https://bugs.webkit.org/show_bug.cgi?id=58883
      
              * WebCoreSupport/FrameLoaderClientEfl.cpp:
              (WebCore::FrameLoaderClientEfl::dispatchDidReceiveContentLength):
              * WebCoreSupport/FrameLoaderClientEfl.h:
      2011-04-19  Vsevolod Vlasov  <vsevik@chromium.org>
      
              Reviewed by Pavel Feldman.
      
              Web Inspector: Rename lengthReceived to encodedDataLength/dataLength
              https://bugs.webkit.org/show_bug.cgi?id=58883
      
              * WebCoreSupport/FrameLoaderClientGtk.cpp:
              (WebKit::FrameLoaderClient::dispatchDidReceiveContentLength):
              * WebCoreSupport/FrameLoaderClientGtk.h:
              * webkit/webkitdownload.cpp:
              (DownloadClient::didReceiveData):
      2011-04-19  Vsevolod Vlasov  <vsevik@chromium.org>
      
              Reviewed by Pavel Feldman.
      
              Web Inspector: Rename lengthReceived to encodedDataLength/dataLength
              https://bugs.webkit.org/show_bug.cgi?id=58883
      
              * WebCoreSupport/WebFrameLoaderClient.h:
              * WebCoreSupport/WebFrameLoaderClient.mm:
              (WebFrameLoaderClient::dispatchDidReceiveContentLength):
      2011-04-19  Vsevolod Vlasov  <vsevik@chromium.org>
      
              Reviewed by Pavel Feldman.
      
              Web Inspector: Rename lengthReceived to encodedDataLength/dataLength
              https://bugs.webkit.org/show_bug.cgi?id=58883
      
              * WebCoreSupport/WebFrameLoaderClient.h:
      2011-04-19  Vsevolod Vlasov  <vsevik@chromium.org>
      
              Reviewed by Pavel Feldman.
      
              Web Inspector: Rename lengthReceived to encodedDataLength/dataLength
              https://bugs.webkit.org/show_bug.cgi?id=58883
      
              * WebCoreSupport/FrameLoaderClientWinCE.h:
      2011-04-19  Vsevolod Vlasov  <vsevik@chromium.org>
      
              Reviewed by Pavel Feldman.
      
              Web Inspector: Rename lengthReceived to encodedDataLength/dataLength
              https://bugs.webkit.org/show_bug.cgi?id=58883
      
              * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
              (WebKit::WebFrameLoaderClient::dispatchDidReceiveContentLength):
              * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84260 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      414978c6
    • senorblanco@chromium.org's avatar
      2011-04-19 Stephen White <senorblanco@chromium.org> · 4fd54d1d
      senorblanco@chromium.org authored
              Reviewed by Eric Seidel.
      
              Pull framebuffer clearing out into its own function.
              https://bugs.webkit.org/show_bug.cgi?id=58897
      
              Covered by fast/canvas and canvas/philip tests.
      
              * platform/graphics/gpu/DrawingBuffer.cpp:
              (WebCore::DrawingBuffer::clearFramebuffer):
              (WebCore::DrawingBuffer::reset):
              * platform/graphics/gpu/DrawingBuffer.h:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84259 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      4fd54d1d
    • commit-queue@webkit.org's avatar
      2011-04-19 Vsevolod Vlasov <vsevik@chromium.org> · 39404b06
      commit-queue@webkit.org authored
              Reviewed by Pavel Feldman.
      
              Chromium DevTools: Network panel timing test is flaky
              https://bugs.webkit.org/show_bug.cgi?id=58699
      
              Fixed network timing test flakiness.
      
              * src/js/Tests.js:
              (.TestSuite.prototype.testNetworkTiming.finishResource):
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84258 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      39404b06
    • commit-queue@webkit.org's avatar
      2011-04-19 Brian Salomon <bsalomon@google.com> · 77910007
      commit-queue@webkit.org authored
              Reviewed by Eric Seidel.
      
              When flushing GrContext in ~PlatformContextSkia be sure correct GL context is set
              https://bugs.webkit.org/show_bug.cgi?id=58788
      
              Chromium browser test will be added that loads canvas page and then an
              acclerated-composited page. Test must trigger ~PlatformContextSkia()
              followed by invocation of GL compositor.
      
              * platform/graphics/skia/PlatformContextSkia.cpp:
              (WebCore::PlatformContextSkia::~PlatformContextSkia):
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84257 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      77910007
    • commit-queue@webkit.org's avatar
      2011-04-19 Kristóf Kosztyó <Kosztyo.Kristof@stud.u-szeged.hu> · 4d4bbf4f
      commit-queue@webkit.org authored
              Reviewed by Andreas Kling.
      
              [Qt] fast/xmlhttprequest/xmlhttprequest-nonexistent-file.html fails (DRT sideeffect)
              https://bugs.webkit.org/show_bug.cgi?id=35086
      
              * platform/qt/Skipped: unskip fast/xmlhttprequest/xmlhttprequest-nonexistent-file.html
      2011-04-19  Kristóf Kosztyó  <Kosztyo.Kristof@stud.u-szeged.hu>
      
              Reviewed by Andreas Kling.
      
              [Qt] fast/xmlhttprequest/xmlhttprequest-nonexistent-file.html fails (DRT sideeffect)
              https://bugs.webkit.org/show_bug.cgi?id=35086
      
              fast/xmlhttprequest/xmlhttprequest-no-file-access.html caused
              a DRT sideeffect problem, because the resetSettings didn't set
              the default value of LocalContentCanAccessFileUrls.
      
              * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
              (WebCore::WebPage::resetSettings):
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84256 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      4d4bbf4f
    • jknotten@chromium.org's avatar
      2011-04-19 John Knottenbelt <jknotten@chromium.org> · c1b0fa63
      jknotten@chromium.org authored
              Unreviewed.
      
              [Chromium] Mark fast/block/float/overhanging-tall-block.html as failing on Windows and Linux.
              https://bugs.webkit.org/show_bug.cgi?id=58901
      
              * platform/chromium/test_expectations.txt:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84255 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      c1b0fa63
    • caseq@chromium.org's avatar
      2011-04-19 Andrey Kosyakov <caseq@chromium.org> · 9b92978d
      caseq@chromium.org authored
              Reviewed by Pavel Feldman.
      
              Web Inspector: add chrome.devTools alias to webInspector namespace for chromium port
              https://bugs.webkit.org/show_bug.cgi?id=58894
      
              * src/js/DevTools.js:
              (WebInspector.platformExtensionAPI):
      
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84254 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      9b92978d
    • andreas.kling@nokia.com's avatar
      2011-04-19 Andreas Kling <andreas.kling@nokia.com> · b5f678ee
      andreas.kling@nokia.com authored
              Reviewed by Antonio Gomes.
      
              WebKit2: Typo fix in WebPopupMenu::Type.
              https://bugs.webkit.org/show_bug.cgi?id=58891
      
              Fixed a typo, Seperator -> Separator.
              Also removed m_ prefix on an argument variable name.
      
              * Shared/WebPopupItem.h:
              * UIProcess/mac/WebPopupMenuProxyMac.mm:
              (WebKit::WebPopupMenuProxyMac::populate):
              * WebProcess/WebCoreSupport/WebPopupMenu.cpp:
              (WebKit::WebPopupMenu::populateItems):
      
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84253 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      b5f678ee
    • ossy@webkit.org's avatar
      [Qt] REGRESSION(84176): http/tests/xmlhttprequest/event-listener-gc.html fails · 0b21d33e
      ossy@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=58871
      
      Unreviewed, rolling out r84176, r84178, r84186, r84212 and r84231.
      http://trac.webkit.org/changeset/84176 (original patch)
      http://trac.webkit.org/changeset/84178 (original patch - part 2)
      http://trac.webkit.org/changeset/84186 (build fix)
      http://trac.webkit.org/changeset/84212
      http://trac.webkit.org/changeset/84231 (skip failing test)
      
      original bugs:
       - https://bugs.webkit.org/show_bug.cgi?id=58718
       - https://bugs.webkit.org/show_bug.cgi?id=58853
      
      Source/JavaScriptCore:
      
      * heap/MarkStack.h:
      (JSC::MarkStack::deprecatedAppendValues):
      (JSC::MarkStack::append):
      (JSC::MarkStack::deprecatedAppend):
      * runtime/JSValue.h:
      * runtime/WriteBarrier.h:
      (JSC::DeprecatedPtr::DeprecatedPtr):
      (JSC::DeprecatedPtr::get):
      (JSC::DeprecatedPtr::operator*):
      (JSC::DeprecatedPtr::operator->):
      (JSC::DeprecatedPtr::slot):
      (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
      (JSC::DeprecatedPtr::operator!):
      (JSC::operator==):
      
      Source/WebCore:
      
      * bridge/qt/qt_class.cpp:
      (JSC::Bindings::QtClass::fallbackObject):
      * bridge/qt/qt_instance.cpp:
      (JSC::Bindings::QtInstance::removeCachedMethod):
      (JSC::Bindings::QtInstance::markAggregate):
      * bridge/qt/qt_instance.h:
      
      LayoutTests:
      
      * platform/qt/Skipped:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84252 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      0b21d33e
    • commit-queue@webkit.org's avatar
      2011-04-19 Sheriff Bot <webkit.review.bot@gmail.com> · 4b08ac89
      commit-queue@webkit.org authored
              Unreviewed, rolling out r84050.
              http://trac.webkit.org/changeset/84050
              https://bugs.webkit.org/show_bug.cgi?id=58892
      
              fast/dom/HTMLKeygenElement/keygen.html is crashing on Chromium
              (Requested by jknotten on #webkit).
      
              * dom/ContainerNode.cpp:
              (WebCore::ContainerNode::takeAllChildrenFrom):
              (WebCore::ContainerNode::removeBetween):
              (WebCore::ContainerNode::removeChildren):
              (WebCore::ContainerNode::parserAddChild):
              * dom/Document.cpp:
              (WebCore::Document::Document):
              (WebCore::Document::~Document):
              (WebCore::Document::setDocType):
              * dom/Element.h:
              * dom/Node.cpp:
              (WebCore::Node::treeScope):
              (WebCore::Node::setTreeScope):
              (WebCore::Node::setTreeScopeRecursively):
              * dom/Node.h:
              (WebCore::Node::document):
              * dom/ShadowRoot.cpp:
              (WebCore::ShadowRoot::ShadowRoot):
              * dom/ShadowRoot.h:
              * dom/TreeScope.cpp:
              (WebCore::TreeScope::TreeScope):
              (WebCore::TreeScope::setParentTreeScope):
              * dom/TreeScope.h:
              * rendering/RenderSlider.cpp:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84251 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      4b08ac89
    • kinuko@chromium.org's avatar
      2011-04-19 Kinuko Yasuda <kinuko@chromium.org> · 0a6dd69f
      kinuko@chromium.org authored
              Not reviewed; another build fix attempt.
      
              * src/StorageInfoChromium.cpp:
              (WebCore::StorageInfo::queryUsageAndQuota):
              (WebCore::StorageInfo::requestQuota):
              * src/WebStorageQuotaCallbacksImpl.cpp:
              (WebKit::WebStorageQuotaCallbacksImpl::WebStorageQuotaCallbacksImpl):
              * src/WebStorageQuotaCallbacksImpl.h:
      
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84250 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      0a6dd69f
    • kinuko@chromium.org's avatar
      2011-04-19 Kinuko Yasuda <kinuko@chromium.org> · 87cbb564
      kinuko@chromium.org authored
              Not reviewed; windows build fix attempt.
      
              * storage/StorageInfo.cpp:
              (WebCore::StorageInfo::~StorageInfo):
              * storage/StorageInfo.h:
      
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84249 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      87cbb564
    • jknotten@chromium.org's avatar
      2011-04-19 John Knottenbelt <jknotten@chromium.org> · 3696c55f
      jknotten@chromium.org authored
              Unreviewed.
      
              [Chromium] New mac snowleopard baseline for fast/overflow/003.xml
              https://bugs.webkit.org/show_bug.cgi?id=58885
      
              * platform/chromium-mac/fast/overflow/003-expected.png: Added.
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84248 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      3696c55f
    • kinuko@chromium.org's avatar
      2011-04-19 Kinuko Yasuda <kinuko@chromium.org> · 25bfae61
      kinuko@chromium.org authored
              Reviewed by David Levin.
      
              [Chromium] Enable QUOTA API at runtime if enable-quota flag is given
              https://bugs.webkit.org/show_bug.cgi?id=58784
      
              * features.gypi: Added ENABLE_QUOTA=1.
              * public/WebRuntimeFeatures.h:
              * src/WebRuntimeFeatures.cpp:
              (WebKit::WebRuntimeFeatures::enableQuota): Added.
              (WebKit::WebRuntimeFeatures::isQuotaEnabled): Added.
      2011-04-19  Kinuko Yasuda  <kinuko@chromium.org>
      
              Reviewed by David Levin.
      
              [Chromium] Enable QUOTA API at runtime if enable-quota flag is given
              https://bugs.webkit.org/show_bug.cgi?id=58784
      
              No new tests as this does not change any functionality.
      
              * bindings/generic/RuntimeEnabledFeatures.cpp:
              * bindings/generic/RuntimeEnabledFeatures.h:
              (WebCore::RuntimeEnabledFeatures::quotaEnabled):
              (WebCore::RuntimeEnabledFeatures::setQuotaEnabled):
              * page/DOMWindow.idl:
      
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84247 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      25bfae61
    • jknotten@chromium.org's avatar
      2011-04-19 John Knottenbelt <jknotten@chromium.org> · 3eb9c79b
      jknotten@chromium.org authored
              Unreviewed.
      
              [Chromium] Mark fast/css/create_element_align.xhtml as slow.
              https://bugs.webkit.org/show_bug.cgi?id=58884
      
              * platform/chromium/test_expectations.txt:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84246 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      3eb9c79b
    • jknotten@chromium.org's avatar
      2011-04-19 John Knottenbelt <jknotten@chromium.org> · 48436948
      jknotten@chromium.org authored
              Unreviewed.
      
              [Chromium] Mark fast/events/popup-blocking-timers.html as flaky on Debug Win,Mac,Linux
              https://bugs.webkit.org/show_bug.cgi?id=58882
      
              Filed chromium bug:
              http://code.google.com/p/chromium/issues/detail?id=79857
      
              * platform/chromium/test_expectations.txt:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84245 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      48436948
    • jknotten@chromium.org's avatar
      2011-04-19 John Knottenbelt <jknotten@chromium.org> · 94daa9f1
      jknotten@chromium.org authored
              Unreviewed.
      
              [Chromium] Mark fast/css/only-child-pseudo-class.html as flaky
              https://bugs.webkit.org/show_bug.cgi?id=58881
      
              Filed chromium bug:
              http://code.google.com/p/chromium/issues/detail?id=79855
      
              * platform/chromium/test_expectations.txt:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84244 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      94daa9f1
    • kbalazs@webkit.org's avatar
      Skip new eventSender dependent tests. · 99e180c0
      kbalazs@webkit.org authored
      Rubber-stamped by Csaba Osztrogonác.
      
      * platform/qt-wk2/Skipped:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84243 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      99e180c0
    • jknotten@chromium.org's avatar
      2011-04-19 John Knottenbelt <jknotten@chromium.org> · 93857577
      jknotten@chromium.org authored
              Unreviewed.
      
              [Chromium] Mark animations/play-state.html as flaky.
              https://bugs.webkit.org/show_bug.cgi?id=58880
      
      	See also existing chromium bug:
      	http://code.google.com/p/chromium/issues/detail?id=76609
      
              * platform/chromium/test_expectations.txt:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84242 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      93857577
    • jknotten@chromium.org's avatar
      2011-04-19 John Knottenbelt <jknotten@chromium.org> · 658f6cc5
      jknotten@chromium.org authored
              Unreviewed.
      
              [Chromium] Mark tables/mozilla/bugs/bug28341.html as flaky on Mac
              https://bugs.webkit.org/show_bug.cgi?id=58879
      
      	See also existing chromium bug:
      	http://code.google.com/p/chromium/issues/detail?id=32231
      
              * platform/chromium/test_expectations.txt:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84241 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      658f6cc5
    • jknotten@chromium.org's avatar
      2011-04-19 John Knottenbelt <jknotten@chromium.org> · 3fa28d66
      jknotten@chromium.org authored
              Unreviewed.
      
              [Chromium] Mark svg/text/font-size-below-point-five.svg as flaky on Linux, Mac
              https://bugs.webkit.org/show_bug.cgi?id=58878
      
      	See also existing chromium bug:
      	http://code.google.com/p/chromium/issues/detail?id=74710
      
              * platform/chromium/test_expectations.txt:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84240 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      3fa28d66
    • jknotten@chromium.org's avatar
      2011-04-19 John Knottenbelt <jknotten@chromium.org> · 79723713
      jknotten@chromium.org authored
              Unreviewed.
      
              [Chromium] Mark layout test editing/execCommand/delete-empty-container.html as flaky
              https://bugs.webkit.org/show_bug.cgi?id=58877
      
      	Chromium bug filed.
      	http://code.google.com/p/chromium/issues/detail?id=79854
      
              * platform/chromium/test_expectations.txt:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84239 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      79723713
    • johnnyg@google.com's avatar
      2011-04-19 John Gregg <johnnyg@google.com> · d2166dd3
      johnnyg@google.com authored
              Reviewed by Darin Fisher.
      
              Enable folder drag-n-drop when using a "webkitdirectory" file input
              https://bugs.webkit.org/show_bug.cgi?id=58401
      
              This uses a new ChromeClient API to enumerate the directory and
              return all the files, as if the user had selected that directory
              by clicking the control in the normal way.
      
              * loader/EmptyClients.h:
              (WebCore::EmptyChromeClient::enumerateChosenDirectory):
              * page/Chrome.cpp:
              (WebCore::Chrome::enumerateChosenDirectory):
              * page/Chrome.h:
              * page/ChromeClient.h:
              * platform/network/FormData.cpp:
              (WebCore::FormData::appendKeyValuePairItems):
              * rendering/RenderFileUploadControl.cpp:
              (WebCore::RenderFileUploadControl::receiveDropForDirectoryUpload):
              (WebCore::RenderFileUploadControl::receiveDroppedFiles):
              * rendering/RenderFileUploadControl.h:
      2011-04-19  John Gregg  <johnnyg@google.com>
      
              Reviewed by Darin Fisher.
      
              Enable folder drag-n-drop when using a "webkitdirectory" file input
              https://bugs.webkit.org/show_bug.cgi?id=58401
      
              This uses a new ChromeClient API to enumerate the directory and
              return all the files, as if the user had selected that directory
              by clicking the control in the normal way.
      
              * public/WebViewClient.h:
              (WebKit::WebViewClient::enumerateChosenDirectory):
              * src/ChromeClientImpl.cpp:
              (WebKit::ChromeClientImpl::enumerateChosenDirectory):
              * src/ChromeClientImpl.h:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84238 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      d2166dd3
    • jknotten@chromium.org's avatar
      2011-04-19 John Knottenbelt <jknotten@chromium.org> · ce17fe8d
      jknotten@chromium.org authored
              Unreviewed.
      
              [Chromium] Mark animations/combo-transform-translate+scale.html as flaky
              https://bugs.webkit.org/show_bug.cgi?id=58876
      
              Chromium bug filed.
              http://code.google.com/p/chromium/issues/detail?id=79853
      
              * platform/chromium/test_expectations.txt:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84237 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      ce17fe8d
    • commit-queue@webkit.org's avatar
      2011-04-19 Sheriff Bot <webkit.review.bot@gmail.com> · eb57fbd4
      commit-queue@webkit.org authored
              Unreviewed, rolling out r84150.
              http://trac.webkit.org/changeset/84150
              https://bugs.webkit.org/show_bug.cgi?id=58875
      
              Broken backspace in Search box of Web Inspector (Requested by
              apavlov on #webkit).
      
              * inspector/front-end/inspector.js:
              (WebInspector.documentKeyDown):
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84236 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      eb57fbd4
    • pfeldman@chromium.org's avatar
      2011-04-19 Andrey Adaikin <aandrey@google.com> · f1d26dd8
      pfeldman@chromium.org authored
              Reviewed by Pavel Feldman.
      
              Web Inspector: NPE in TextEditorModel
              https://bugs.webkit.org/show_bug.cgi?id=58870
      
              * inspector/front-end/ResourcesPanel.js:
              (WebInspector.ResourcesPanel.prototype._frameAdded):
              * inspector/front-end/TextEditorModel.js:
              (WebInspector.TextEditorModel.prototype.setText):
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84235 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      f1d26dd8
    • jknotten@chromium.org's avatar
      2011-04-19 John Knottenbelt <jknotten@chromium.org> · 46306a18
      jknotten@chromium.org authored
              Unreviewed.
      
              [Chromium] Mark fast/table/frame-and-rules.html as flaky
              https://bugs.webkit.org/show_bug.cgi?id=58874
      
              Chromium bug filed.
              http://code.google.com/p/chromium/issues/detail?id=79851
      
              * platform/chromium/test_expectations.txt:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84234 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      46306a18
    • jknotten@chromium.org's avatar
      2011-04-19 John Knottenbelt <jknotten@chromium.org> · 4252741f
      jknotten@chromium.org authored
              Unreviewed.
      
              [Chromium] Reenable layout test canvas/philip/tests/2d.gradient.interpolate.outside.html
              https://bugs.webkit.org/show_bug.cgi?id=58873
      
      	Fixed in Chromium r81956.
      	http://code.google.com/p/chromium/issues/detail?id=79725
      
              * platform/chromium/test_expectations.txt:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84233 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      4252741f
    • hans@chromium.org's avatar
      2011-04-19 Hans Wennborg <hans@chromium.org> · 601cffdd
      hans@chromium.org authored
              Reviewed by Tony Gentilcore.
      
              IndexedDB: Remove accidental header include directive from LevelDB backend.
              https://bugs.webkit.org/show_bug.cgi?id=58872
      
              No new functionality, no new tests.
      
              * storage/IDBLevelDBBackingStore.cpp:
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84232 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      601cffdd
    • ossy@webkit.org's avatar
      [Qt] REGRESSION(84194): http/tests/xmlhttprequest/event-listener-gc.html fails · 00474785
      ossy@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=58871
      
      * platform/qt/Skipped: Add http/tests/xmlhttprequest/event-listener-gc.html
      
      git-svn-id: svn://svn.chromium.org/blink/trunk@84231 bbb929c8-8fbe-4397-9dbb-9b2b20218538
      00474785