summaryrefslogtreecommitdiffstats
path: root/webkit/glue/chrome_client_impl.h
blob: a070fd1f64f4b143e66e19d44a946444b0a13298 (plain)
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
// Copyright (c) 2006-2008 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 WEBKIT_GLUE_CHROME_CLIENT_IMPL_H__
#define WEBKIT_GLUE_CHROME_CLIENT_IMPL_H__

#include "base/compiler_specific.h"

MSVC_PUSH_WARNING_LEVEL(0);
#include "ChromeClientChromium.h"
MSVC_POP_WARNING();

class WebViewImpl;
namespace WebCore {
    class SecurityOrigin;
    struct WindowFeatures;
}

// Handles window-level notifications from WebCore on behalf of a WebView.
class ChromeClientImpl : public WebCore::ChromeClientChromium {
public:
  ChromeClientImpl(WebViewImpl* webview);
  virtual ~ChromeClientImpl();

  virtual void chromeDestroyed();

  virtual void setWindowRect(const WebCore::FloatRect&);
  virtual WebCore::FloatRect windowRect();

  virtual WebCore::FloatRect pageRect();

  virtual float scaleFactor();

  virtual void focus();
  virtual void unfocus();

  virtual bool canTakeFocus(WebCore::FocusDirection);
  virtual void takeFocus(WebCore::FocusDirection);

  virtual WebCore::Page* createWindow(WebCore::Frame*,
                                      const WebCore::FrameLoadRequest&,
                                      const WebCore::WindowFeatures&);
  virtual void show();

  virtual bool canRunModal();
  virtual void runModal();

  virtual void setToolbarsVisible(bool);
  virtual bool toolbarsVisible();

  virtual void setStatusbarVisible(bool);
  virtual bool statusbarVisible();

  virtual void setScrollbarsVisible(bool);
  virtual bool scrollbarsVisible();

  virtual void setMenubarVisible(bool);
  virtual bool menubarVisible();

  virtual void setResizable(bool);

  virtual void addMessageToConsole(const WebCore::String& message,
                                   unsigned int lineNumber,
                                   const WebCore::String& sourceID);

  virtual bool canRunBeforeUnloadConfirmPanel();
  virtual bool runBeforeUnloadConfirmPanel(const WebCore::String& message,
                                           WebCore::Frame* frame);

  virtual void closeWindowSoon();

  virtual void runJavaScriptAlert(WebCore::Frame*, const WebCore::String&);
  virtual bool runJavaScriptConfirm(WebCore::Frame*, const WebCore::String&);
  virtual bool runJavaScriptPrompt(WebCore::Frame*, const WebCore::String& message, const WebCore::String& defaultValue, WebCore::String& result);
  
  virtual void setStatusbarText(const WebCore::String&);
  virtual bool shouldInterruptJavaScript();

  // Returns true if anchors should accept keyboard focus with the tab key.
  // This method is used in a convoluted fashion by EventHandler::tabsToLinks.
  // It's a twisted path (self-evident, but more complicated than seems
  // necessary), but the net result is that returning true from here, on a
  // platform other than MAC or QT, lets anchors get keyboard focus.
  virtual bool tabsToLinks() const;

  virtual WebCore::IntRect windowResizerRect() const;
  virtual void addToDirtyRegion(const WebCore::IntRect&);
  virtual void scrollBackingStore(int dx, int dy, const WebCore::IntRect& scrollViewRect, const WebCore::IntRect& clipRect);
  virtual void updateBackingStore();

  virtual void mouseDidMoveOverElement(const WebCore::HitTestResult& result, unsigned modifierFlags);

  virtual void setToolTip(const WebCore::String& tooltip_text);

  virtual void runFileChooser(const WebCore::String&,
                              PassRefPtr<WebCore::FileChooser>);
  virtual WebCore::IntRect windowToScreen(const WebCore::IntRect& rect);

  virtual void print(WebCore::Frame*);

  virtual void exceededDatabaseQuota(WebCore::Frame*,
                                          const WebCore::String& databaseName);

private:
  WebViewImpl* webview_;  // weak pointer
  bool toolbars_visible_;
  bool statusbar_visible_;
  bool scrollbars_visible_;
  bool menubar_visible_;
  bool resizable_;
};

#endif // WEBKIT_GLUE_CHROME_CLIENT_IMPL_H__