summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/page/spatial_navigation_controller.h
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-05-24 11:40:17 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-05-24 12:42:11 +0000
commit5d87695f37678f96492b258bbab36486c59866b4 (patch)
treebe9783bbaf04fb930c4d74ca9c00b5e7954c8bc6 /chromium/third_party/blink/renderer/core/page/spatial_navigation_controller.h
parent6c11fb357ec39bf087b8b632e2b1e375aef1b38b (diff)
downloadqtwebengine-chromium-5d87695f37678f96492b258bbab36486c59866b4.tar.gz
BASELINE: Update Chromium to 75.0.3770.56
Change-Id: I86d2007fd27a45d5797eee06f4c9369b8b50ac4f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/third_party/blink/renderer/core/page/spatial_navigation_controller.h')
-rw-r--r--chromium/third_party/blink/renderer/core/page/spatial_navigation_controller.h33
1 files changed, 29 insertions, 4 deletions
diff --git a/chromium/third_party/blink/renderer/core/page/spatial_navigation_controller.h b/chromium/third_party/blink/renderer/core/page/spatial_navigation_controller.h
index 0034de06718..05ee39d5615 100644
--- a/chromium/third_party/blink/renderer/core/page/spatial_navigation_controller.h
+++ b/chromium/third_party/blink/renderer/core/page/spatial_navigation_controller.h
@@ -5,6 +5,7 @@
#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_PAGE_SPATIAL_NAVIGATION_CONTROLLER_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_PAGE_SPATIAL_NAVIGATION_CONTROLLER_H_
+#include "third_party/blink/public/mojom/page/spatial_navigation.mojom-blink.h"
#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/page/spatial_navigation.h"
#include "third_party/blink/renderer/platform/heap/handle.h"
@@ -22,10 +23,9 @@ class Page;
// way, e.g. keyboard arrows. We use the term "interest" to specify which
// element the user is currently on.
class CORE_EXPORT SpatialNavigationController
- : public GarbageCollected<SpatialNavigationController> {
+ : public GarbageCollectedFinalized<SpatialNavigationController> {
public:
- static SpatialNavigationController* Create(Page& page);
- SpatialNavigationController(Page& page);
+ explicit SpatialNavigationController(Page& page);
bool HandleArrowKeyboardEvent(KeyboardEvent* event);
bool HandleEnterKeyboardEvent(KeyboardEvent* event);
@@ -37,6 +37,11 @@ class CORE_EXPORT SpatialNavigationController
void DidDetachFrameView();
+ void OnSpatialNavigationSettingChanged();
+ void FocusedNodeChanged(Document*);
+
+ void ResetMojoBindings();
+
void Trace(blink::Visitor*);
private:
@@ -76,13 +81,33 @@ class CORE_EXPORT SpatialNavigationController
Node* StartingNode();
void MoveInterestTo(Node* next_node);
+ // Dispatches a fake mouse move event at the center of the given element to
+ // produce hover state and mouse enter/exit events. If no element is given,
+ // we dispatch a mouse event outside of the page to simulate the pointer
+ // leaving the page (and clearing hover, producing mouse leave).
+ void DispatchMouseMoveAt(Element* element);
+
// Returns true if the element should be considered for navigation.
- bool IsValidCandidate(const Element& element) const;
+ bool IsValidCandidate(const Element* element) const;
+
+ Element* GetFocusedElement() const;
+
+ void UpdateSpatialNavigationState(Element* element);
+ void OnSpatialNavigationStateChanged();
+ bool UpdateCanExitFocus(Element* element);
+ bool UpdateCanSelectInterestedElement(Element* element);
+ bool UpdateHasNextFormElement(Element* element);
+ bool UpdateHasDefaultVideoControls(Element* element);
+
+ const mojom::blink::SpatialNavigationHostPtr& GetSpatialNavigationHost();
// The currently indicated element or nullptr if no node is indicated by
// spatial navigation.
WeakMember<Element> interest_element_;
Member<Page> page_;
+
+ mojom::blink::SpatialNavigationStatePtr spatial_navigation_state_;
+ mojom::blink::SpatialNavigationHostPtr spatial_navigation_host_;
};
} // namespace blink