Changeset 67362 in webkit


Ignore:
Timestamp:
Sep 12, 2010 9:21:00 PM (14 years ago)
Author:
morrita@google.com
Message:

2010-09-10 MORITA Hajime <morrita@google.com>

Reviewed by Tony Chang.

[Chromium] Implement textInputController.hasSpellingMarker() for Chromium
https://bugs.webkit.org/show_bug.cgi?id=45441

Add an note for API readiness.

  • platform/chromium/test_expectations.txt:

2010-09-10 MORITA Hajime <morrita@google.com>

Reviewed by Tony Chang.

[Chromium] Implement textInputController.hasSpellingMarker() for Chromium
https://bugs.webkit.org/show_bug.cgi?id=45441

Added an API for testing marker state.
We locate this here instead of DRT for sharing the logic between
multiple ports.

  • WebCore.exp.in:
  • editing/Editor.cpp: (WebCore::Editor::selectionStartHasSpellingMarkerFor):
  • editing/Editor.h:

2010-09-10 MORITA Hajime <morrita@google.com>

Reviewed by Tony Chang.

[Chromium] Implement textInputController.hasSpellingMarker() for Chromium
https://bugs.webkit.org/show_bug.cgi?id=45441

Exported Frame::selectionStartHasSpellingMarkerFor() for DRT use.

  • public/WebFrame.h:
  • src/WebFrameImpl.cpp: (WebKit::WebFrameImpl::selectionStartHasSpellingMarkerFor):
  • src/WebFrameImpl.h:

2010-09-10 MORITA Hajime <morrita@google.com>

Reviewed by Tony Chang.

[Chromium] Implement textInputController.hasSpellingMarker() for Chromium
https://bugs.webkit.org/show_bug.cgi?id=45441

Moved the actual logic of hasSpellingMarker into WebCore to share
it with other ports.

  • WebView/WebFrame.mm: (-[WebFrame hasSpellingMarker:length:]):

2010-09-10 MORITA Hajime <morrita@google.com>

Reviewed by Tony Chang.

[Chromium] Implement textInputController.hasSpellingMarker() for Chromium
https://bugs.webkit.org/show_bug.cgi?id=45441

Added TextInputController::hasSpellingMarker().

  • DumpRenderTree/chromium/TextInputController.cpp: (TextInputController::TextInputController): (TextInputController::hasSpellingMarker):
  • DumpRenderTree/chromium/TextInputController.h:
Location:
trunk
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r67361 r67362  
     12010-09-10  MORITA Hajime  <morrita@google.com>
     2
     3        Reviewed by Tony Chang.
     4
     5        [Chromium] Implement textInputController.hasSpellingMarker() for Chromium
     6        https://bugs.webkit.org/show_bug.cgi?id=45441
     7       
     8        Add an note for API readiness.
     9
     10        * platform/chromium/test_expectations.txt:
     11
    1122010-09-12  Dirk Pranke  <dpranke@chromium.org>
    213
  • trunk/LayoutTests/platform/chromium/test_expectations.txt

    r67361 r67362  
    27192719
    27202720// Need to implement textInputController.hasSpellingMarkers().
     2721// Note that hasSpellingMarkers() is available for DRT: http://webkit.org/b/45441
    27212722BUGWK41832 : editing/spelling/spelling-textarea.html = FAIL
    27222723BUGWK41832 : editing/spelling/spelling-contenteditable.html = FAIL
  • trunk/WebCore/ChangeLog

    r67357 r67362  
     12010-09-10  MORITA Hajime  <morrita@google.com>
     2
     3        Reviewed by Tony Chang.
     4
     5        [Chromium] Implement textInputController.hasSpellingMarker() for Chromium
     6        https://bugs.webkit.org/show_bug.cgi?id=45441
     7       
     8        Added an  API for testing marker state.
     9        We locate this here instead of DRT for sharing the logic between
     10        multiple ports.
     11
     12        * WebCore.exp.in:
     13        * editing/Editor.cpp:
     14        (WebCore::Editor::selectionStartHasSpellingMarkerFor):
     15        * editing/Editor.h:
     16
    1172010-09-12  Adam Barth  <abarth@webkit.org>
    218
  • trunk/WebCore/WebCore.exp.in

    r67316 r67362  
    845845__ZNK3JSC8Bindings10RootObject12globalObjectEv
    846846__ZNK3WTF6String14createCFStringEv
     847__ZNK7WebCore6Editor34selectionStartHasSpellingMarkerForEii
    847848__ZNK7WebCore10FloatPointcv8_NSPointEv
    848849__ZNK7WebCore10PluginData16supportsMimeTypeERKN3WTF6StringE
  • trunk/WebCore/editing/Editor.cpp

    r67238 r67362  
    35923592}
    35933593
     3594bool Editor::selectionStartHasSpellingMarkerFor(int from, int length) const
     3595{
     3596    Node* node = m_frame->selection()->start().node();
     3597    if (!node || !node->renderer())
     3598        return false;
     3599    ASSERT(node->renderer()->isText());
     3600
     3601    unsigned int startOffset = static_cast<unsigned int>(from);
     3602    unsigned int endOffset = static_cast<unsigned int>(from + length);
     3603    Vector<DocumentMarker> markers = m_frame->document()->markers()->markersForNode(node);
     3604    for (size_t i = 0; i < markers.size(); ++i) {
     3605        DocumentMarker marker = markers[i];
     3606        if (marker.startOffset <= startOffset && endOffset <= marker.endOffset && marker.type == DocumentMarker::Spelling)
     3607            return true;
     3608    }
     3609
     3610    return false;
     3611}
     3612
     3613
    35943614} // namespace WebCore
  • trunk/WebCore/editing/Editor.h

    r67122 r67362  
    361361#endif
    362362
     363    bool selectionStartHasSpellingMarkerFor(int from, int length) const;
     364
    363365private:
    364366    Frame* m_frame;
  • trunk/WebKit/chromium/ChangeLog

    r67291 r67362  
     12010-09-10  MORITA Hajime  <morrita@google.com>
     2
     3        Reviewed by Tony Chang.
     4
     5        [Chromium] Implement textInputController.hasSpellingMarker() for Chromium
     6        https://bugs.webkit.org/show_bug.cgi?id=45441
     7
     8        Exported Frame::selectionStartHasSpellingMarkerFor() for DRT use.
     9
     10        * public/WebFrame.h:
     11        * src/WebFrameImpl.cpp:
     12        (WebKit::WebFrameImpl::selectionStartHasSpellingMarkerFor):
     13        * src/WebFrameImpl.h:
     14
    1152010-09-10  Jesus Sanchez-Palencia  <jesus.palencia@openbossa.org>
    216
  • trunk/WebKit/chromium/public/WebFrame.h

    r66176 r67362  
    534534    virtual WebRect selectionBoundsRect() const = 0;
    535535
     536    // Only for testing purpose:
     537    // Returns true if selection.anchorNode has a marker on range from |from| with |length|.
     538    virtual bool selectionStartHasSpellingMarkerFor(int from, int length) const = 0;
    536539protected:
    537540    ~WebFrame() { }
  • trunk/WebKit/chromium/src/WebFrameImpl.cpp

    r67253 r67362  
    17061706}
    17071707
     1708bool WebFrameImpl::selectionStartHasSpellingMarkerFor(int from, int length) const
     1709{
     1710    if (!m_frame)
     1711        return false;
     1712    return m_frame->editor()->selectionStartHasSpellingMarkerFor(from, length);
     1713}
     1714
    17081715// WebFrameImpl public ---------------------------------------------------------
    17091716
  • trunk/WebKit/chromium/src/WebFrameImpl.h

    r66176 r67362  
    183183    virtual WebRect selectionBoundsRect() const;
    184184
     185    virtual bool selectionStartHasSpellingMarkerFor(int from, int length) const;
     186
    185187    static PassRefPtr<WebFrameImpl> create(WebFrameClient* client);
    186188    ~WebFrameImpl();
  • trunk/WebKit/mac/ChangeLog

    r67316 r67362  
     12010-09-10  MORITA Hajime  <morrita@google.com>
     2
     3        Reviewed by Tony Chang.
     4
     5        [Chromium] Implement textInputController.hasSpellingMarker() for Chromium
     6        https://bugs.webkit.org/show_bug.cgi?id=45441
     7
     8        Moved the actual logic of hasSpellingMarker into WebCore to share
     9        it with other ports.
     10
     11        * WebView/WebFrame.mm:
     12        (-[WebFrame hasSpellingMarker:length:]):
     13
    1142010-09-11  Adam Barth  <abarth@webkit.org>
    215
  • trunk/WebKit/mac/WebView/WebFrame.mm

    r67316 r67362  
    13501350}
    13511351
    1352 static Node* spellingNode(Frame* coreFrame)
    1353 {
    1354     Node* focusedNode = coreFrame->selection()->start().node();
    1355     if (!focusedNode || !focusedNode->renderer())
    1356         return 0;
    1357 
    1358     for (const RenderObject* renderer = focusedNode->renderer(); renderer; renderer = renderer->childAt(0)) {
    1359         if (renderer->isText())
    1360             return renderer->node();
    1361     }
    1362     return 0;
    1363 }
    1364 
    13651352- (BOOL)hasSpellingMarker:(int)from length:(int)length
    13661353{
     
    13681355    if (!coreFrame)
    13691356        return NO;
    1370 
    1371     Node* node = spellingNode(coreFrame);
    1372     if (!node)
    1373         return NO;
    1374 
    1375     unsigned int startOffset = static_cast<unsigned int>(from);
    1376     unsigned int endOffset = static_cast<unsigned int>(from + length);
    1377     Vector<DocumentMarker> markers = coreFrame->document()->markers()->markersForNode(node);
    1378     for (size_t i = 0; i < markers.size(); ++i) {
    1379         DocumentMarker marker = markers[i];
    1380         if (marker.startOffset <= startOffset && endOffset <= marker.endOffset && marker.type == DocumentMarker::Spelling)
    1381             return YES;
    1382     }
    1383     return NO;
     1357    return coreFrame->editor()->selectionStartHasSpellingMarkerFor(from, length);
    13841358}
    13851359
  • trunk/WebKitTools/ChangeLog

    r67352 r67362  
     12010-09-10  MORITA Hajime  <morrita@google.com>
     2
     3        Reviewed by Tony Chang.
     4
     5        [Chromium] Implement textInputController.hasSpellingMarker() for Chromium
     6        https://bugs.webkit.org/show_bug.cgi?id=45441
     7
     8        Added TextInputController::hasSpellingMarker().
     9       
     10        * DumpRenderTree/chromium/TextInputController.cpp:
     11        (TextInputController::TextInputController):
     12        (TextInputController::hasSpellingMarker):
     13        * DumpRenderTree/chromium/TextInputController.h:
     14
    1152010-09-12  Dirk Pranke  <dpranke@chromium.org>
    216
  • trunk/WebKitTools/DumpRenderTree/chromium/TextInputController.cpp

    r57648 r67362  
    6666    bindMethod("validAttributesForMarkedText", &TextInputController::validAttributesForMarkedText);
    6767    bindMethod("makeAttributedString", &TextInputController::makeAttributedString);
     68    bindMethod("hasSpellingMarker", &TextInputController::hasSpellingMarker);
    6869}
    6970
     
    215216    result->setNull();
    216217}
     218
     219void TextInputController::hasSpellingMarker(const CppArgumentList& arguments, CppVariant* result)
     220{
     221    if (arguments.size() < 2 || !arguments[0].isNumber() || !arguments[1].isNumber())
     222        return;
     223    WebFrame* mainFrame = getMainFrame();
     224    if (!mainFrame)
     225        return;
     226    // Returns as a number for a compatibility reason.
     227    result->set(mainFrame->selectionStartHasSpellingMarkerFor(arguments[0].toInt32(), arguments[1].toInt32()) ? 1 : 0);
     228}
  • trunk/WebKitTools/DumpRenderTree/chromium/TextInputController.h

    r55712 r67362  
    6262    void validAttributesForMarkedText(const CppArgumentList&, CppVariant*);
    6363    void makeAttributedString(const CppArgumentList&, CppVariant*);
     64    void hasSpellingMarker(const CppArgumentList&, CppVariant*);
    6465
    6566private:
Note: See TracChangeset for help on using the changeset viewer.