Diff
Modified: trunk/Source/WebCore/ChangeLog (150711 => 150712)
--- trunk/Source/WebCore/ChangeLog 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebCore/ChangeLog 2013-05-26 11:39:01 UTC (rev 150712)
@@ -1,5 +1,43 @@
2013-05-26 Andreas Kling <[email protected]>
+ FocusController::setFocusedNode() should be setFocusedElement().
+ <http://webkit.org/b/116780>
+
+ Reviewed by Antti Koivisto.
+
+ 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.
+
+2013-05-26 Andreas Kling <[email protected]>
+
Move some form control things from Element to HTMLFormControlElement.
<http://webkit.org/b/116779>
Modified: trunk/Source/WebCore/WebCore.exp.in (150711 => 150712)
--- trunk/Source/WebCore/WebCore.exp.in 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebCore/WebCore.exp.in 2013-05-26 11:39:01 UTC (rev 150712)
@@ -432,7 +432,7 @@
__ZN7WebCore15DatabaseManager8setQuotaEPNS_14SecurityOriginEy
__ZN7WebCore15DatabaseManager9setClientEPNS_21DatabaseManagerClientE
__ZN7WebCore15FocusController10setFocusedEb
-__ZN7WebCore15FocusController14setFocusedNodeEPNS_4NodeEN3WTF10PassRefPtrINS_5FrameEEENS_14FocusDirectionE
+__ZN7WebCore15FocusController17setFocusedElementEPNS_7ElementEN3WTF10PassRefPtrINS_5FrameEEENS_14FocusDirectionE
__ZN7WebCore15FocusController15setFocusedFrameEN3WTF10PassRefPtrINS_5FrameEEE
__ZN7WebCore15FocusController15setInitialFocusENS_14FocusDirectionEPNS_13KeyboardEventE
__ZN7WebCore15FocusController28setContainingWindowIsVisibleEb
Modified: trunk/Source/WebCore/dom/Element.cpp (150711 => 150712)
--- trunk/Source/WebCore/dom/Element.cpp 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebCore/dom/Element.cpp 2013-05-26 11:39:01 UTC (rev 150712)
@@ -2034,7 +2034,7 @@
// If a focus event handler changes the focus to a different node it
// does not make sense to continue and update appearence.
protect = this;
- if (!page->focusController()->setFocusedNode(this, doc->frame(), direction))
+ if (!page->focusController()->setFocusedElement(this, doc->frame(), direction))
return;
}
@@ -2078,7 +2078,7 @@
Document* doc = document();
if (treeScope()->focusedNode() == this) {
if (doc->frame())
- doc->frame()->page()->focusController()->setFocusedNode(0, doc->frame());
+ doc->frame()->page()->focusController()->setFocusedElement(0, doc->frame());
else
doc->setFocusedNode(0);
}
Modified: trunk/Source/WebCore/editing/FrameSelection.cpp (150711 => 150712)
--- trunk/Source/WebCore/editing/FrameSelection.cpp 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebCore/editing/FrameSelection.cpp 2013-05-26 11:39:01 UTC (rev 150712)
@@ -311,7 +311,7 @@
setCaretRectNeedsUpdate();
if (!s.isNone() && !(options & DoNotSetFocus))
- setFocusedNodeIfNeeded();
+ setFocusedElementIfNeeded();
if (!(options & DoNotUpdateAppearance)) {
#if ENABLE(TEXT_CARET)
@@ -1876,15 +1876,15 @@
return widget && widget->isFrameView();
}
-void FrameSelection::setFocusedNodeIfNeeded()
+void FrameSelection::setFocusedElementIfNeeded()
{
if (isNone() || !isFocused())
return;
bool caretBrowsing = m_frame->settings() && m_frame->settings()->caretBrowsingEnabled();
if (caretBrowsing) {
- if (Node* anchor = enclosingAnchorElement(base())) {
- m_frame->page()->focusController()->setFocusedNode(anchor, m_frame);
+ if (Element* anchor = enclosingAnchorElement(base())) {
+ m_frame->page()->focusController()->setFocusedElement(anchor, m_frame);
return;
}
}
@@ -1896,7 +1896,7 @@
// so add the !isFrameElement check here. There's probably a better way to make this
// work in the long term, but this is the safest fix at this time.
if (target->isMouseFocusable() && !isFrameElement(target)) {
- m_frame->page()->focusController()->setFocusedNode(target, m_frame);
+ m_frame->page()->focusController()->setFocusedElement(target, m_frame);
return;
}
target = target->parentOrShadowHostElement();
@@ -1905,7 +1905,7 @@
}
if (caretBrowsing)
- m_frame->page()->focusController()->setFocusedNode(0, m_frame);
+ m_frame->page()->focusController()->setFocusedElement(0, m_frame);
}
void DragCaretController::paintDragCaret(Frame* frame, GraphicsContext* p, const LayoutPoint& paintOffset, const LayoutRect& clipRect) const
Modified: trunk/Source/WebCore/editing/FrameSelection.h (150711 => 150712)
--- trunk/Source/WebCore/editing/FrameSelection.h 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebCore/editing/FrameSelection.h 2013-05-26 11:39:01 UTC (rev 150712)
@@ -236,7 +236,6 @@
bool shouldDeleteSelection(const VisibleSelection&) const;
enum EndPointsAdjustmentMode { AdjustEndpointsAtBidiBoundary, DoNotAdjsutEndpoints };
void setNonDirectionalSelectionIfNeeded(const VisibleSelection&, TextGranularity, EndPointsAdjustmentMode = DoNotAdjsutEndpoints);
- void setFocusedNodeIfNeeded();
void notifyRendererOfSelectionChange(EUserTriggered);
void paintDragCaret(GraphicsContext*, const LayoutPoint&, const LayoutRect& clipRect) const;
@@ -285,6 +284,7 @@
void notifyAccessibilityForSelectionChange();
#endif
+ void setFocusedElementIfNeeded();
void focusedOrActiveStateChanged();
void caretBlinkTimerFired(Timer<FrameSelection>*);
Modified: trunk/Source/WebCore/editing/htmlediting.cpp (150711 => 150712)
--- trunk/Source/WebCore/editing/htmlediting.cpp 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebCore/editing/htmlediting.cpp 2013-05-26 11:39:01 UTC (rev 150712)
@@ -674,15 +674,16 @@
return toElement(enclosingNodeOfType(p, isTableCell));
}
-Node* enclosingAnchorElement(const Position& p)
+Element* enclosingAnchorElement(const Position& p)
{
if (p.isNull())
return 0;
-
- Node* node = p.deprecatedNode();
- while (node && !(node->isElementNode() && node->isLink()))
- node = node->parentNode();
- return node;
+
+ for (Node* node = p.deprecatedNode(); node; node = node->parentNode()) {
+ if (node->isElementNode() && node->isLink())
+ return toElement(node);
+ }
+ return 0;
}
HTMLElement* enclosingList(Node* node)
Modified: trunk/Source/WebCore/editing/htmlediting.h (150711 => 150712)
--- trunk/Source/WebCore/editing/htmlediting.h 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebCore/editing/htmlediting.h 2013-05-26 11:39:01 UTC (rev 150712)
@@ -64,7 +64,7 @@
Element* enclosingBlock(Node*, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
Node* enclosingTableCell(const Position&);
Node* enclosingEmptyListItem(const VisiblePosition&);
-Node* enclosingAnchorElement(const Position&);
+Element* enclosingAnchorElement(const Position&);
Node* enclosingNodeWithTag(const Position&, const QualifiedName&);
Node* enclosingNodeOfType(const Position&, bool (*nodeIsOfType)(const Node*), EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
Modified: trunk/Source/WebCore/page/EventHandler.cpp (150711 => 150712)
--- trunk/Source/WebCore/page/EventHandler.cpp 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebCore/page/EventHandler.cpp 2013-05-26 11:39:01 UTC (rev 150712)
@@ -2362,10 +2362,10 @@
// if the page already set it (e.g., by canceling default behavior).
if (Page* page = m_frame->page()) {
if (element && element->isMouseFocusable()) {
- if (!page->focusController()->setFocusedNode(element, m_frame))
+ if (!page->focusController()->setFocusedElement(element, m_frame))
swallowEvent = true;
} else if (!element || !element->focused()) {
- if (!page->focusController()->setFocusedNode(0, m_frame))
+ if (!page->focusController()->setFocusedElement(0, m_frame))
swallowEvent = true;
}
}
Modified: trunk/Source/WebCore/page/FocusController.cpp (150711 => 150712)
--- trunk/Source/WebCore/page/FocusController.cpp 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebCore/page/FocusController.cpp 2013-05-26 11:39:01 UTC (rev 150712)
@@ -590,13 +590,13 @@
s->clear();
}
-bool FocusController::setFocusedNode(Node* node, PassRefPtr<Frame> newFocusedFrame, FocusDirection direction)
+bool FocusController::setFocusedElement(Element* element, PassRefPtr<Frame> newFocusedFrame, FocusDirection direction)
{
RefPtr<Frame> oldFocusedFrame = focusedFrame();
RefPtr<Document> oldDocument = oldFocusedFrame ? oldFocusedFrame->document() : 0;
Node* oldFocusedNode = oldDocument ? oldDocument->focusedNode() : 0;
- if (oldFocusedNode == node)
+ if (oldFocusedNode == element)
return true;
// FIXME: Might want to disable this check for caretBrowsing
@@ -605,19 +605,19 @@
m_page->editorClient()->willSetInputMethodState();
- clearSelectionIfNeeded(oldFocusedFrame.get(), newFocusedFrame.get(), node);
+ clearSelectionIfNeeded(oldFocusedFrame.get(), newFocusedFrame.get(), element);
- if (!node) {
+ if (!element) {
if (oldDocument)
oldDocument->setFocusedNode(0);
m_page->editorClient()->setInputMethodState(false);
return true;
}
- RefPtr<Document> newDocument = node->document();
+ RefPtr<Document> newDocument = element->document();
- if (newDocument && newDocument->focusedNode() == node) {
- m_page->editorClient()->setInputMethodState(node->shouldUseInputMethod());
+ if (newDocument && newDocument->focusedNode() == element) {
+ m_page->editorClient()->setInputMethodState(element->shouldUseInputMethod());
return true;
}
@@ -630,16 +630,15 @@
}
setFocusedFrame(newFocusedFrame);
- // Setting the focused node can result in losing our last reft to node when JS event handlers fire.
- RefPtr<Node> protect = node;
+ RefPtr<Element> protect(element);
if (newDocument) {
- bool successfullyFocused = newDocument->setFocusedNode(node, direction);
+ bool successfullyFocused = newDocument->setFocusedNode(element, direction);
if (!successfullyFocused)
return false;
}
- if (newDocument->focusedNode() == node)
- m_page->editorClient()->setInputMethodState(node->shouldUseInputMethod());
+ if (newDocument->focusedNode() == element)
+ m_page->editorClient()->setInputMethodState(element->shouldUseInputMethod());
return true;
}
Modified: trunk/Source/WebCore/page/FocusController.h (150711 => 150712)
--- trunk/Source/WebCore/page/FocusController.h 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebCore/page/FocusController.h 2013-05-26 11:39:01 UTC (rev 150712)
@@ -69,9 +69,9 @@
bool setInitialFocus(FocusDirection, KeyboardEvent*);
bool advanceFocus(FocusDirection, KeyboardEvent*, bool initialFocus = false);
-
- bool setFocusedNode(Node*, PassRefPtr<Frame>, FocusDirection = FocusDirectionNone);
+ bool setFocusedElement(Element*, PassRefPtr<Frame>, FocusDirection = FocusDirectionNone);
+
void setActive(bool);
bool isActive() const { return m_isActive; }
Modified: trunk/Source/WebCore/plugins/PluginView.cpp (150711 => 150712)
--- trunk/Source/WebCore/plugins/PluginView.cpp 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebCore/plugins/PluginView.cpp 2013-05-26 11:39:01 UTC (rev 150712)
@@ -889,7 +889,7 @@
{
// Focus the plugin
if (Page* page = m_parentFrame->page())
- page->focusController()->setFocusedNode(m_element, m_parentFrame);
+ page->focusController()->setFocusedElement(m_element, m_parentFrame);
else
m_parentFrame->document()->setFocusedNode(m_element);
}
Modified: trunk/Source/WebKit/blackberry/Api/WebPage.cpp (150711 => 150712)
--- trunk/Source/WebKit/blackberry/Api/WebPage.cpp 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebKit/blackberry/Api/WebPage.cpp 2013-05-26 11:39:01 UTC (rev 150712)
@@ -4167,7 +4167,7 @@
ASSERT(frame->document());
if (frame->document()->focusedNode())
- frame->page()->focusController()->setFocusedNode(0, frame);
+ frame->page()->focusController()->setFocusedElement(0, frame);
}
BlackBerry::Platform::String WebPage::textEncoding()
@@ -4907,12 +4907,12 @@
if (Page* page = doc->page()) {
// Modify if focusing on node or turning off focused node.
if (on) {
- page->focusController()->setFocusedNode(nodeImpl, doc->frame());
+ page->focusController()->setFocusedElement(toElement(nodeImpl), doc->frame());
if (nodeImpl->isElementNode())
toElement(nodeImpl)->updateFocusAppearance(true);
d->m_inputHandler->didNodeOpenPopup(nodeImpl);
} else if (doc->focusedNode() == nodeImpl) // && !on
- page->focusController()->setFocusedNode(0, doc->frame());
+ page->focusController()->setFocusedElement(0, doc->frame());
return true;
}
Modified: trunk/Source/WebKit/blackberry/ChangeLog (150711 => 150712)
--- trunk/Source/WebKit/blackberry/ChangeLog 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebKit/blackberry/ChangeLog 2013-05-26 11:39:01 UTC (rev 150712)
@@ -1,3 +1,16 @@
+2013-05-26 Andreas Kling <[email protected]>
+
+ FocusController::setFocusedNode() should be setFocusedElement().
+ <http://webkit.org/b/116780>
+
+ Reviewed by Antti Koivisto.
+
+ * Api/WebPage.cpp:
+ (BlackBerry::WebKit::WebPagePrivate::clearFocusNode):
+ (BlackBerry::WebKit::WebPage::setNodeFocus):
+ * WebKitSupport/SelectionHandler.cpp:
+ (BlackBerry::WebKit::SelectionHandler::selectObject):
+
2013-05-24 Anders Carlsson <[email protected]>
Remove PagePopup code
Modified: trunk/Source/WebKit/blackberry/WebKitSupport/SelectionHandler.cpp (150711 => 150712)
--- trunk/Source/WebKit/blackberry/WebKitSupport/SelectionHandler.cpp 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebKit/blackberry/WebKitSupport/SelectionHandler.cpp 2013-05-26 11:39:01 UTC (rev 150712)
@@ -891,8 +891,11 @@
VisibleSelection selection = VisibleSelection(pointLocation, pointLocation);
// Move focus to the new node if we're not selecting in old input field.
- if (!m_webPage->m_inputHandler->boundingBoxForInputField().contains(relativePoint))
- m_webPage->m_page->focusController()->setFocusedNode(selection.start().anchorNode(), focusedFrame);
+ if (!m_webPage->m_inputHandler->boundingBoxForInputField().contains(relativePoint)) {
+ Node* anchorNode = selection.start().anchorNode();
+ if (!anchorNode || anchorNode->isElementNode())
+ m_webPage->m_page->focusController()->setFocusedElement(toElement(anchorNode), focusedFrame);
+ }
m_selectionActive = expandSelectionToGranularity(focusedFrame, selection, granularity, m_webPage->m_inputHandler->isInputMode());
}
Modified: trunk/Source/WebKit/win/ChangeLog (150711 => 150712)
--- trunk/Source/WebKit/win/ChangeLog 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebKit/win/ChangeLog 2013-05-26 11:39:01 UTC (rev 150712)
@@ -1,3 +1,13 @@
+2013-05-26 Andreas Kling <[email protected]>
+
+ FocusController::setFocusedNode() should be setFocusedElement().
+ <http://webkit.org/b/116780>
+
+ Reviewed by Antti Koivisto.
+
+ * WebView.cpp:
+ (WebView::clearFocusNode):
+
2013-05-24 Brent Fulgham <[email protected]>
[Windows] Expose database storage and cache locations via preferences.
Modified: trunk/Source/WebKit/win/WebView.cpp (150711 => 150712)
--- trunk/Source/WebKit/win/WebView.cpp 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebKit/win/WebView.cpp 2013-05-26 11:39:01 UTC (rev 150712)
@@ -5274,7 +5274,7 @@
HRESULT STDMETHODCALLTYPE WebView::clearFocusNode()
{
if (m_page && m_page->focusController())
- m_page->focusController()->setFocusedNode(0, 0);
+ m_page->focusController()->setFocusedElement(0, 0);
return S_OK;
}
Modified: trunk/Source/WebKit2/ChangeLog (150711 => 150712)
--- trunk/Source/WebKit2/ChangeLog 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebKit2/ChangeLog 2013-05-26 11:39:01 UTC (rev 150712)
@@ -1,3 +1,13 @@
+2013-05-26 Andreas Kling <[email protected]>
+
+ FocusController::setFocusedNode() should be setFocusedElement().
+ <http://webkit.org/b/116780>
+
+ Reviewed by Antti Koivisto.
+
+ * WebProcess/Plugins/PluginView.cpp:
+ (WebKit::PluginView::focusPluginElement):
+
2013-05-25 Andreas Kling <[email protected]>
PluginDocument::pluginNode() should be pluginElement() instead.
Modified: trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp (150711 => 150712)
--- trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp 2013-05-26 09:43:22 UTC (rev 150711)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp 2013-05-26 11:39:01 UTC (rev 150712)
@@ -1032,7 +1032,7 @@
ASSERT(frame());
if (Page* page = frame()->page())
- page->focusController()->setFocusedNode(m_pluginElement.get(), frame());
+ page->focusController()->setFocusedElement(m_pluginElement.get(), frame());
else
frame()->document()->setFocusedNode(m_pluginElement);
}