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