Changeset 150712 in webkit


Ignore:
Timestamp:
May 26, 2013 4:39:01 AM (11 years ago)
Author:
akling@apple.com
Message:

FocusController::setFocusedNode() should be setFocusedElement().
<http://webkit.org/b/116780>

Reviewed by Antti Koivisto.

Source/WebCore:

Only Elements can have focus, so make the public API of FocusController take Element*.

  • WebCore.exp.in:
  • page/FocusController.h:
  • page/FocusController.cpp:

(WebCore::FocusController::setFocusedElement):

Out with the setFocusedNode(), in with the setFocusedElement().

  • dom/Element.cpp:

(WebCore::Element::focus):
(WebCore::Element::blur):

  • page/EventHandler.cpp:

(WebCore::EventHandler::dispatchMouseEvent):

  • plugins/PluginView.cpp:

(WebCore::PluginView::focusPluginElement):

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::setFocusedNodeIfNeeded):

Tweak for FocusController taking Element* instead of Node*.

(WebCore::FrameSelection::setFocusedElementIfNeeded):

Renamed from setFocusedNodeIfNeeded().

  • editing/htmlediting.h:
  • editing/htmlediting.cpp:

(WebCore::enclosingAnchorElement):

Cleaned up the loop for readability and made it return an Element.

Source/WebKit/blackberry:

  • Api/WebPage.cpp:

(BlackBerry::WebKit::WebPagePrivate::clearFocusNode):
(BlackBerry::WebKit::WebPage::setNodeFocus):

  • WebKitSupport/SelectionHandler.cpp:

(BlackBerry::WebKit::SelectionHandler::selectObject):

Source/WebKit/win:

  • WebView.cpp:

(WebView::clearFocusNode):

Source/WebKit2:

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::focusPluginElement):

Location:
trunk/Source
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r150711 r150712  
     12013-05-26  Andreas Kling  <akling@apple.com>
     2
     3        FocusController::setFocusedNode() should be setFocusedElement().
     4        <http://webkit.org/b/116780>
     5
     6        Reviewed by Antti Koivisto.
     7
     8        Only Elements can have focus, so make the public API of FocusController take Element*.
     9
     10        * WebCore.exp.in:
     11        * page/FocusController.h:
     12        * page/FocusController.cpp:
     13        (WebCore::FocusController::setFocusedElement):
     14
     15            Out with the setFocusedNode(), in with the setFocusedElement().
     16
     17        * dom/Element.cpp:
     18        (WebCore::Element::focus):
     19        (WebCore::Element::blur):
     20        * page/EventHandler.cpp:
     21        (WebCore::EventHandler::dispatchMouseEvent):
     22        * plugins/PluginView.cpp:
     23        (WebCore::PluginView::focusPluginElement):
     24        * editing/FrameSelection.cpp:
     25        (WebCore::FrameSelection::setFocusedNodeIfNeeded):
     26
     27            Tweak for FocusController taking Element* instead of Node*.
     28
     29        (WebCore::FrameSelection::setFocusedElementIfNeeded):
     30
     31            Renamed from setFocusedNodeIfNeeded().
     32
     33        * editing/htmlediting.h:
     34        * editing/htmlediting.cpp:
     35        (WebCore::enclosingAnchorElement):
     36
     37            Cleaned up the loop for readability and made it return an Element.
     38
    1392013-05-26  Andreas Kling  <akling@apple.com>
    240
  • trunk/Source/WebCore/WebCore.exp.in

    r150700 r150712  
    433433__ZN7WebCore15DatabaseManager9setClientEPNS_21DatabaseManagerClientE
    434434__ZN7WebCore15FocusController10setFocusedEb
    435 __ZN7WebCore15FocusController14setFocusedNodeEPNS_4NodeEN3WTF10PassRefPtrINS_5FrameEEENS_14FocusDirectionE
     435__ZN7WebCore15FocusController17setFocusedElementEPNS_7ElementEN3WTF10PassRefPtrINS_5FrameEEENS_14FocusDirectionE
    436436__ZN7WebCore15FocusController15setFocusedFrameEN3WTF10PassRefPtrINS_5FrameEEE
    437437__ZN7WebCore15FocusController15setInitialFocusENS_14FocusDirectionEPNS_13KeyboardEventE
  • trunk/Source/WebCore/dom/Element.cpp

    r150711 r150712  
    20352035        // does not make sense to continue and update appearence.
    20362036        protect = this;
    2037         if (!page->focusController()->setFocusedNode(this, doc->frame(), direction))
     2037        if (!page->focusController()->setFocusedElement(this, doc->frame(), direction))
    20382038            return;
    20392039    }
     
    20792079    if (treeScope()->focusedNode() == this) {
    20802080        if (doc->frame())
    2081             doc->frame()->page()->focusController()->setFocusedNode(0, doc->frame());
     2081            doc->frame()->page()->focusController()->setFocusedElement(0, doc->frame());
    20822082        else
    20832083            doc->setFocusedNode(0);
  • trunk/Source/WebCore/editing/FrameSelection.cpp

    r150692 r150712  
    312312   
    313313    if (!s.isNone() && !(options & DoNotSetFocus))
    314         setFocusedNodeIfNeeded();
     314        setFocusedElementIfNeeded();
    315315
    316316    if (!(options & DoNotUpdateAppearance)) {
     
    18771877}
    18781878
    1879 void FrameSelection::setFocusedNodeIfNeeded()
     1879void FrameSelection::setFocusedElementIfNeeded()
    18801880{
    18811881    if (isNone() || !isFocused())
     
    18841884    bool caretBrowsing = m_frame->settings() && m_frame->settings()->caretBrowsingEnabled();
    18851885    if (caretBrowsing) {
    1886         if (Node* anchor = enclosingAnchorElement(base())) {
    1887             m_frame->page()->focusController()->setFocusedNode(anchor, m_frame);
     1886        if (Element* anchor = enclosingAnchorElement(base())) {
     1887            m_frame->page()->focusController()->setFocusedElement(anchor, m_frame);
    18881888            return;
    18891889        }
     
    18971897            // work in the long term, but this is the safest fix at this time.
    18981898            if (target->isMouseFocusable() && !isFrameElement(target)) {
    1899                 m_frame->page()->focusController()->setFocusedNode(target, m_frame);
     1899                m_frame->page()->focusController()->setFocusedElement(target, m_frame);
    19001900                return;
    19011901            }
     
    19061906
    19071907    if (caretBrowsing)
    1908         m_frame->page()->focusController()->setFocusedNode(0, m_frame);
     1908        m_frame->page()->focusController()->setFocusedElement(0, m_frame);
    19091909}
    19101910
  • trunk/Source/WebCore/editing/FrameSelection.h

    r149432 r150712  
    237237    enum EndPointsAdjustmentMode { AdjustEndpointsAtBidiBoundary, DoNotAdjsutEndpoints };
    238238    void setNonDirectionalSelectionIfNeeded(const VisibleSelection&, TextGranularity, EndPointsAdjustmentMode = DoNotAdjsutEndpoints);
    239     void setFocusedNodeIfNeeded();
    240239    void notifyRendererOfSelectionChange(EUserTriggered);
    241240
     
    286285#endif
    287286
     287    void setFocusedElementIfNeeded();
    288288    void focusedOrActiveStateChanged();
    289289
  • trunk/Source/WebCore/editing/htmlediting.cpp

    r150140 r150712  
    675675}
    676676
    677 Node* enclosingAnchorElement(const Position& p)
     677Element* enclosingAnchorElement(const Position& p)
    678678{
    679679    if (p.isNull())
    680680        return 0;
    681    
    682     Node* node = p.deprecatedNode();
    683     while (node && !(node->isElementNode() && node->isLink()))
    684         node = node->parentNode();
    685     return node;
     681
     682    for (Node* node = p.deprecatedNode(); node; node = node->parentNode()) {
     683        if (node->isElementNode() && node->isLink())
     684            return toElement(node);
     685    }
     686    return 0;
    686687}
    687688
  • trunk/Source/WebCore/editing/htmlediting.h

    r145195 r150712  
    6565Node* enclosingTableCell(const Position&);
    6666Node* enclosingEmptyListItem(const VisiblePosition&);
    67 Node* enclosingAnchorElement(const Position&);
     67Element* enclosingAnchorElement(const Position&);
    6868Node* enclosingNodeWithTag(const Position&, const QualifiedName&);
    6969Node* enclosingNodeOfType(const Position&, bool (*nodeIsOfType)(const Node*), EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
  • trunk/Source/WebCore/page/EventHandler.cpp

    r150692 r150712  
    23632363        if (Page* page = m_frame->page()) {
    23642364            if (element && element->isMouseFocusable()) {
    2365                 if (!page->focusController()->setFocusedNode(element, m_frame))
     2365                if (!page->focusController()->setFocusedElement(element, m_frame))
    23662366                    swallowEvent = true;
    23672367            } else if (!element || !element->focused()) {
    2368                 if (!page->focusController()->setFocusedNode(0, m_frame))
     2368                if (!page->focusController()->setFocusedElement(0, m_frame))
    23692369                    swallowEvent = true;
    23702370            }
  • trunk/Source/WebCore/page/FocusController.cpp

    r150707 r150712  
    591591}
    592592
    593 bool FocusController::setFocusedNode(Node* node, PassRefPtr<Frame> newFocusedFrame, FocusDirection direction)
     593bool FocusController::setFocusedElement(Element* element, PassRefPtr<Frame> newFocusedFrame, FocusDirection direction)
    594594{
    595595    RefPtr<Frame> oldFocusedFrame = focusedFrame();
     
    597597   
    598598    Node* oldFocusedNode = oldDocument ? oldDocument->focusedNode() : 0;
    599     if (oldFocusedNode == node)
     599    if (oldFocusedNode == element)
    600600        return true;
    601601
     
    606606    m_page->editorClient()->willSetInputMethodState();
    607607
    608     clearSelectionIfNeeded(oldFocusedFrame.get(), newFocusedFrame.get(), node);
    609 
    610     if (!node) {
     608    clearSelectionIfNeeded(oldFocusedFrame.get(), newFocusedFrame.get(), element);
     609
     610    if (!element) {
    611611        if (oldDocument)
    612612            oldDocument->setFocusedNode(0);
     
    615615    }
    616616
    617     RefPtr<Document> newDocument = node->document();
    618 
    619     if (newDocument && newDocument->focusedNode() == node) {
    620         m_page->editorClient()->setInputMethodState(node->shouldUseInputMethod());
     617    RefPtr<Document> newDocument = element->document();
     618
     619    if (newDocument && newDocument->focusedNode() == element) {
     620        m_page->editorClient()->setInputMethodState(element->shouldUseInputMethod());
    621621        return true;
    622622    }
     
    631631    setFocusedFrame(newFocusedFrame);
    632632
    633     // Setting the focused node can result in losing our last reft to node when JS event handlers fire.
    634     RefPtr<Node> protect = node;
     633    RefPtr<Element> protect(element);
    635634    if (newDocument) {
    636         bool successfullyFocused = newDocument->setFocusedNode(node, direction);
     635        bool successfullyFocused = newDocument->setFocusedNode(element, direction);
    637636        if (!successfullyFocused)
    638637            return false;
    639638    }
    640639
    641     if (newDocument->focusedNode() == node)
    642         m_page->editorClient()->setInputMethodState(node->shouldUseInputMethod());
     640    if (newDocument->focusedNode() == element)
     641        m_page->editorClient()->setInputMethodState(element->shouldUseInputMethod());
    643642
    644643    return true;
  • trunk/Source/WebCore/page/FocusController.h

    r150707 r150712  
    7070    bool setInitialFocus(FocusDirection, KeyboardEvent*);
    7171    bool advanceFocus(FocusDirection, KeyboardEvent*, bool initialFocus = false);
    72        
    73     bool setFocusedNode(Node*, PassRefPtr<Frame>, FocusDirection = FocusDirectionNone);
     72
     73    bool setFocusedElement(Element*, PassRefPtr<Frame>, FocusDirection = FocusDirectionNone);
    7474
    7575    void setActive(bool);
  • trunk/Source/WebCore/plugins/PluginView.cpp

    r150214 r150712  
    890890    // Focus the plugin
    891891    if (Page* page = m_parentFrame->page())
    892         page->focusController()->setFocusedNode(m_element, m_parentFrame);
     892        page->focusController()->setFocusedElement(m_element, m_parentFrame);
    893893    else
    894894        m_parentFrame->document()->setFocusedNode(m_element);
  • trunk/Source/WebKit/blackberry/Api/WebPage.cpp

    r150634 r150712  
    41684168
    41694169    if (frame->document()->focusedNode())
    4170         frame->page()->focusController()->setFocusedNode(0, frame);
     4170        frame->page()->focusController()->setFocusedElement(0, frame);
    41714171}
    41724172
     
    49084908            // Modify if focusing on node or turning off focused node.
    49094909            if (on) {
    4910                 page->focusController()->setFocusedNode(nodeImpl, doc->frame());
     4910                page->focusController()->setFocusedElement(toElement(nodeImpl), doc->frame());
    49114911                if (nodeImpl->isElementNode())
    49124912                    toElement(nodeImpl)->updateFocusAppearance(true);
    49134913                d->m_inputHandler->didNodeOpenPopup(nodeImpl);
    49144914            } else if (doc->focusedNode() == nodeImpl) // && !on
    4915                 page->focusController()->setFocusedNode(0, doc->frame());
     4915                page->focusController()->setFocusedElement(0, doc->frame());
    49164916
    49174917            return true;
  • trunk/Source/WebKit/blackberry/ChangeLog

    r150652 r150712  
     12013-05-26  Andreas Kling  <akling@apple.com>
     2
     3        FocusController::setFocusedNode() should be setFocusedElement().
     4        <http://webkit.org/b/116780>
     5
     6        Reviewed by Antti Koivisto.
     7
     8        * Api/WebPage.cpp:
     9        (BlackBerry::WebKit::WebPagePrivate::clearFocusNode):
     10        (BlackBerry::WebKit::WebPage::setNodeFocus):
     11        * WebKitSupport/SelectionHandler.cpp:
     12        (BlackBerry::WebKit::SelectionHandler::selectObject):
     13
    1142013-05-24  Anders Carlsson  <andersca@apple.com>
    215
  • trunk/Source/WebKit/blackberry/WebKitSupport/SelectionHandler.cpp

    r150233 r150712  
    892892
    893893    // Move focus to the new node if we're not selecting in old input field.
    894     if (!m_webPage->m_inputHandler->boundingBoxForInputField().contains(relativePoint))
    895         m_webPage->m_page->focusController()->setFocusedNode(selection.start().anchorNode(), focusedFrame);
     894    if (!m_webPage->m_inputHandler->boundingBoxForInputField().contains(relativePoint)) {
     895        Node* anchorNode = selection.start().anchorNode();
     896        if (!anchorNode || anchorNode->isElementNode())
     897            m_webPage->m_page->focusController()->setFocusedElement(toElement(anchorNode), focusedFrame);
     898    }
    896899
    897900    m_selectionActive = expandSelectionToGranularity(focusedFrame, selection, granularity, m_webPage->m_inputHandler->isInputMode());
  • trunk/Source/WebKit/win/ChangeLog

    r150670 r150712  
     12013-05-26  Andreas Kling  <akling@apple.com>
     2
     3        FocusController::setFocusedNode() should be setFocusedElement().
     4        <http://webkit.org/b/116780>
     5
     6        Reviewed by Antti Koivisto.
     7
     8        * WebView.cpp:
     9        (WebView::clearFocusNode):
     10
    1112013-05-24  Brent Fulgham  <bfulgham@apple.com>
    212
  • trunk/Source/WebKit/win/WebView.cpp

    r150670 r150712  
    52755275{
    52765276    if (m_page && m_page->focusController())
    5277         m_page->focusController()->setFocusedNode(0, 0);
     5277        m_page->focusController()->setFocusedElement(0, 0);
    52785278    return S_OK;
    52795279}
  • trunk/Source/WebKit2/ChangeLog

    r150700 r150712  
     12013-05-26  Andreas Kling  <akling@apple.com>
     2
     3        FocusController::setFocusedNode() should be setFocusedElement().
     4        <http://webkit.org/b/116780>
     5
     6        Reviewed by Antti Koivisto.
     7
     8        * WebProcess/Plugins/PluginView.cpp:
     9        (WebKit::PluginView::focusPluginElement):
     10
    1112013-05-25  Andreas Kling  <akling@apple.com>
    212
  • trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp

    r150556 r150712  
    10331033   
    10341034    if (Page* page = frame()->page())
    1035        page->focusController()->setFocusedNode(m_pluginElement.get(), frame());
     1035        page->focusController()->setFocusedElement(m_pluginElement.get(), frame());
    10361036    else
    10371037       frame()->document()->setFocusedNode(m_pluginElement);
Note: See TracChangeset for help on using the changeset viewer.