15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_BROWSER_RENDER_WIDGET_HOST_DELEGATE_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_BROWSER_RENDER_WIDGET_HOST_DELEGATE_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/basictypes.h"
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "build/build_config.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h"
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ui/gfx/native_widget_types.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace blink {
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebMouseWheelEvent;
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class WebGestureEvent;
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass BrowserAccessibilityManager;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderWidgetHostImpl;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct NativeWebKeyboardEvent;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RenderWidgetHostDelegate
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  An interface implemented by an object interested in knowing about the state
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  of the RenderWidgetHost.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CONTENT_EXPORT RenderWidgetHostDelegate {
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The RenderWidgetHost is going to be deleted.
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RenderWidgetDeleted(RenderWidgetHostImpl* render_widget_host) {}
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Callback to give the browser a chance to handle the specified keyboard
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // event before sending it to the renderer.
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if the |event| was handled. Otherwise, if the |event| would
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // be handled in HandleKeyboardEvent() method as a normal keyboard shortcut,
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // |*is_keyboard_shortcut| should be set to true.
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event,
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      bool* is_keyboard_shortcut);
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Callback to inform the browser that the renderer did not process the
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // specified events. This gives an opportunity to the browser to process the
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // event (used for keyboard shortcuts).
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void HandleKeyboardEvent(const NativeWebKeyboardEvent& event) {}
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Callback to inform the browser that the renderer did not process the
48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // specified mouse wheel event.  Returns true if the browser has handled
49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // the event itself.
50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual bool HandleWheelEvent(const blink::WebMouseWheelEvent& event);
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Callback to give the browser a chance to handle the specified gesture
535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // event before sending it to the renderer.
545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Returns true if the |event| was handled.
555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual bool PreHandleGestureEvent(const blink::WebGestureEvent& event);
565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
57effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  // Callback to inform the browser that the renderer did not process the
58effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  // specified gesture event.  Returns true if the |event| was handled.
59effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual bool HandleGestureEvent(const blink::WebGestureEvent& event);
60effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Notifies that screen rects were sent to renderer process.
6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void DidSendScreenRects(RenderWidgetHostImpl* rwh) {}
6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Get the root BrowserAccessibilityManager for this frame tree.
65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual BrowserAccessibilityManager* GetRootBrowserAccessibilityManager();
66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Get the root BrowserAccessibilityManager for this frame tree,
68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // or create it if it doesn't exist.
69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual BrowserAccessibilityManager*
70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      GetOrCreateRootBrowserAccessibilityManager();
71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_WIN)
73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual gfx::NativeViewAccessible GetParentNativeViewAccessible();
74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif
75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~RenderWidgetHostDelegate() {}
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CONTENT_BROWSER_RENDER_WIDGET_HOST_DELEGATE_H_
83