1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_NS_VIEW_CLIENT_H_
#define CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_NS_VIEW_CLIENT_H_
#include "base/macros.h"
#include <vector>
namespace blink {
class WebGestureEvent;
class WebMouseEvent;
class WebMouseWheelEvent;
class WebTouchEvent;
} // namespace blink
namespace ui {
class LatencyInfo;
} // namespace ui
namespace content {
class BrowserAccessibilityManager;
struct EditCommand;
struct NativeWebKeyboardEvent;
// An interface through which the NSView for a RenderWidgetHostViewMac is to
// communicate with the RenderWidgetHostViewMac (potentially in another
// process). Unlike mojom::RenderWidgetHostNSViewClient, this object is always
// instantiated in the local process. This is to implement functions that
// cannot be sent across mojo (e.g, GetRootBrowserAccessibilityManager), or
// to avoid unnecessary translation of event types.
class RenderWidgetHostNSViewLocalClient {
public:
RenderWidgetHostNSViewLocalClient() {}
virtual ~RenderWidgetHostNSViewLocalClient() {}
// Return the RenderWidget's BrowserAccessibilityManager.
// TODO(ccameron): This returns nullptr for non-local NSViews. A scheme for
// non-local accessibility needs to be developed.
virtual BrowserAccessibilityManager* GetRootBrowserAccessibilityManager() = 0;
// Forward a keyboard event to the RenderWidgetHost that is currently handling
// the key-down event.
virtual void ForwardKeyboardEvent(const NativeWebKeyboardEvent& key_event,
const ui::LatencyInfo& latency_info) = 0;
virtual void ForwardKeyboardEventWithCommands(
const NativeWebKeyboardEvent& key_event,
const ui::LatencyInfo& latency_info,
const std::vector<EditCommand>& commands) = 0;
// Forward events to the renderer or the input router, as appropriate.
virtual void RouteOrProcessMouseEvent(
const blink::WebMouseEvent& web_event) = 0;
virtual void RouteOrProcessTouchEvent(
const blink::WebTouchEvent& web_event) = 0;
virtual void RouteOrProcessWheelEvent(
const blink::WebMouseWheelEvent& web_event) = 0;
// Special case forwarding of synthetic events to the renderer.
virtual void ForwardMouseEvent(const blink::WebMouseEvent& web_event) = 0;
virtual void ForwardWheelEvent(
const blink::WebMouseWheelEvent& web_event) = 0;
// Handling pinch gesture events.
virtual void GestureBegin(blink::WebGestureEvent begin_event,
bool is_synthetically_injected) = 0;
virtual void GestureUpdate(blink::WebGestureEvent update_event) = 0;
virtual void GestureEnd(blink::WebGestureEvent end_event) = 0;
virtual void SmartMagnify(
const blink::WebGestureEvent& smart_magnify_event) = 0;
private:
DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostNSViewLocalClient);
};
} // namespace content
#endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_NS_VIEW_CLIENT_H_
|