- add sources.
[platform/framework/web/crosswalk.git] / src / content / public / renderer / render_view_observer.h
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CONTENT_PUBLIC_RENDERER_RENDER_VIEW_OBSERVER_H_
6 #define CONTENT_PUBLIC_RENDERER_RENDER_VIEW_OBSERVER_H_
7
8 #include "base/basictypes.h"
9 #include "base/compiler_specific.h"
10 #include "content/common/content_export.h"
11 #include "ipc/ipc_listener.h"
12 #include "ipc/ipc_sender.h"
13 #include "third_party/WebKit/public/platform/WebVector.h"
14 #include "third_party/WebKit/public/web/WebIconURL.h"
15
16 class GURL;
17
18 namespace ppapi {
19 namespace host {
20 class PpapiHost;
21 }
22 }
23
24 namespace WebKit {
25 class WebDataSource;
26 class WebFrame;
27 class WebFormElement;
28 class WebGestureEvent;
29 class WebMediaPlayerClient;
30 class WebMouseEvent;
31 class WebNode;
32 class WebTouchEvent;
33 class WebURL;
34 struct WebContextMenuData;
35 struct WebURLError;
36 }
37
38 namespace content {
39
40 class RendererPpapiHost;
41 class RenderView;
42 class RenderViewImpl;
43
44 // Base class for objects that want to filter incoming IPCs, and also get
45 // notified of changes to the frame.
46 class CONTENT_EXPORT RenderViewObserver : public IPC::Listener,
47                                           public IPC::Sender {
48  public:
49   // By default, observers will be deleted when the RenderView goes away.  If
50   // they want to outlive it, they can override this function.
51   virtual void OnDestruct();
52
53   // These match the WebKit API notifications
54   virtual void DidStartLoading() {}
55   virtual void DidStopLoading() {}
56   virtual void DidFinishDocumentLoad(WebKit::WebFrame* frame) {}
57   virtual void DidFailLoad(WebKit::WebFrame* frame,
58                            const WebKit::WebURLError& error) {}
59   virtual void DidFinishLoad(WebKit::WebFrame* frame) {}
60   virtual void DidStartProvisionalLoad(WebKit::WebFrame* frame) {}
61   virtual void DidFailProvisionalLoad(WebKit::WebFrame* frame,
62                                       const WebKit::WebURLError& error) {}
63   virtual void DidCommitProvisionalLoad(WebKit::WebFrame* frame,
64                                         bool is_new_navigation) {}
65   virtual void DidClearWindowObject(WebKit::WebFrame* frame) {}
66   virtual void DidCreateDocumentElement(WebKit::WebFrame* frame) {}
67   virtual void FrameCreated(WebKit::WebFrame* parent,
68                             WebKit::WebFrame* frame) {}
69   virtual void FrameDetached(WebKit::WebFrame* frame) {}
70   virtual void FrameWillClose(WebKit::WebFrame* frame) {}
71   virtual void DidMatchCSS(
72       WebKit::WebFrame* frame,
73       const WebKit::WebVector<WebKit::WebString>& newly_matching_selectors,
74       const WebKit::WebVector<WebKit::WebString>& stopped_matching_selectors) {}
75   virtual void WillSendSubmitEvent(WebKit::WebFrame* frame,
76                                    const WebKit::WebFormElement& form) {}
77   virtual void WillSubmitForm(WebKit::WebFrame* frame,
78                               const WebKit::WebFormElement& form) {}
79   virtual void DidCreateDataSource(WebKit::WebFrame* frame,
80                                    WebKit::WebDataSource* ds) {}
81   virtual void PrintPage(WebKit::WebFrame* frame, bool user_initiated) {}
82   virtual void FocusedNodeChanged(const WebKit::WebNode& node) {}
83   virtual void WillCreateMediaPlayer(WebKit::WebFrame* frame,
84                                      WebKit::WebMediaPlayerClient* client) {}
85   virtual void ZoomLevelChanged() {};
86   virtual void DidChangeScrollOffset(WebKit::WebFrame* frame) {}
87   virtual void DraggableRegionsChanged(WebKit::WebFrame* frame) {}
88   virtual void DidRequestShowContextMenu(
89       WebKit::WebFrame* frame,
90       const WebKit::WebContextMenuData& data) {}
91   virtual void DidCommitCompositorFrame() {}
92   virtual void DidUpdateLayout() {}
93
94   // These match the RenderView methods.
95   virtual void DidHandleMouseEvent(const WebKit::WebMouseEvent& event) {}
96   virtual void DidHandleTouchEvent(const WebKit::WebTouchEvent& event) {}
97   virtual void DidHandleGestureEvent(const WebKit::WebGestureEvent& event) {}
98   virtual void DidCreatePepperPlugin(RendererPpapiHost* host) {}
99
100   // Called when we receive a console message from WebKit for which we requested
101   // extra details (like the stack trace). |message| is the error message,
102   // |source| is the WebKit-reported source of the error (either external or
103   // internal), and |stack_trace| is the stack trace of the error in a
104   // human-readable format (each frame is formatted as
105   // "\n    at function_name (source:line_number:column_number)").
106   virtual void DetailedConsoleMessageAdded(const base::string16& message,
107                                            const base::string16& source,
108                                            const base::string16& stack_trace,
109                                            int32 line_number,
110                                            int32 severity_level) {}
111
112   // These match incoming IPCs.
113   virtual void Navigate(const GURL& url) {}
114   virtual void ClosePage() {}
115   virtual void OrientationChangeEvent(int orientation) {}
116
117   // IPC::Listener implementation.
118   virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
119
120   // IPC::Sender implementation.
121   virtual bool Send(IPC::Message* message) OVERRIDE;
122
123   RenderView* render_view() const;
124   int routing_id() const { return routing_id_; }
125
126  protected:
127   explicit RenderViewObserver(RenderView* render_view);
128   virtual ~RenderViewObserver();
129
130  private:
131   friend class RenderViewImpl;
132
133   // This is called by the RenderView when it's going away so that this object
134   // can null out its pointer.
135   void RenderViewGone();
136
137   RenderView* render_view_;
138   // The routing ID of the associated RenderView.
139   int routing_id_;
140
141   DISALLOW_COPY_AND_ASSIGN(RenderViewObserver);
142 };
143
144 }  // namespace content
145
146 #endif  // CONTENT_PUBLIC_RENDERER_RENDER_VIEW_OBSERVER_H_