Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Side by Side Diff: webkit/tools/test_shell/test_webview_delegate.h

Issue 15028002: Delete test_shell. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add dummy test_shell build target. Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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 // TestWebViewDelegate class:
6 // This class implements the WebViewDelegate methods for the test shell. One
7 // instance is owned by each TestShell.
8
9 #ifndef WEBKIT_TOOLS_TEST_SHELL_TEST_WEBVIEW_DELEGATE_H_
10 #define WEBKIT_TOOLS_TEST_SHELL_TEST_WEBVIEW_DELEGATE_H_
11
12 #include <map>
13 #include <set>
14 #include <string>
15 #include <vector>
16
17 #include "base/basictypes.h"
18 #include "base/memory/scoped_ptr.h"
19 #include "base/memory/weak_ptr.h"
20 #include "base/string16.h"
21 #include "build/build_config.h"
22 #include "third_party/WebKit/Source/Platform/chromium/public/WebFileSystem.h"
23 #include "third_party/WebKit/Source/Platform/chromium/public/WebFileSystemType.h "
24 #include "third_party/WebKit/Source/Platform/chromium/public/WebGraphicsContext3 D.h"
25 #include "third_party/WebKit/Source/Platform/chromium/public/WebRect.h"
26 #include "third_party/WebKit/Source/WebKit/chromium/public/WebContextMenuData.h"
27 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrameClient.h"
28 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPopupType.h"
29 #include "third_party/WebKit/Source/WebKit/chromium/public/WebViewClient.h"
30 #include "webkit/glue/webcursor.h"
31 #include "webkit/plugins/npapi/webplugin_page_delegate.h"
32 #include "webkit/tools/test_shell/mock_spellcheck.h"
33 #include "webkit/tools/test_shell/test_navigation_controller.h"
34
35 #if defined(OS_MACOSX)
36 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPopupMenuInfo.h"
37 #endif
38
39 #if defined(OS_WIN)
40 #include <windows.h>
41
42 #include "webkit/tools/test_shell/drop_delegate.h"
43 #endif
44
45 #if defined(TOOLKIT_GTK)
46 #include <gdk/gdk.h>
47 #endif
48
49 class GURL;
50 class TestShell;
51 class WebWidgetHost;
52
53 namespace WebKit {
54 class WebDeviceOrientationClient;
55 class WebStorageNamespace;
56 struct WebWindowFeatures;
57 }
58
59 class TestWebViewDelegate : public WebKit::WebViewClient,
60 public WebKit::WebFrameClient,
61 public webkit::npapi::WebPluginPageDelegate,
62 public base::SupportsWeakPtr<TestWebViewDelegate> {
63 public:
64 struct CapturedContextMenuEvent {
65 CapturedContextMenuEvent(int in_node_type,
66 int in_x,
67 int in_y)
68 : node_type(in_node_type),
69 x(in_x),
70 y(in_y) {
71 }
72
73 int node_type;
74 int x;
75 int y;
76 };
77
78 typedef std::vector<CapturedContextMenuEvent> CapturedContextMenuEvents;
79
80 // WebKit::WebViewClient
81 virtual WebKit::WebView* createView(
82 WebKit::WebFrame* creator,
83 const WebKit::WebURLRequest& request,
84 const WebKit::WebWindowFeatures& features,
85 const WebKit::WebString& frame_name,
86 WebKit::WebNavigationPolicy policy);
87 virtual WebKit::WebWidget* createPopupMenu(WebKit::WebPopupType popup_type);
88 virtual WebKit::WebWidget* createPopupMenu(
89 const WebKit::WebPopupMenuInfo& info);
90 virtual WebKit::WebStorageNamespace* createSessionStorageNamespace(
91 unsigned quota);
92 virtual void didAddMessageToConsole(
93 const WebKit::WebConsoleMessage& message,
94 const WebKit::WebString& source_name, unsigned source_line);
95 virtual void didStartLoading();
96 virtual void didStopLoading();
97 virtual bool shouldBeginEditing(const WebKit::WebRange& range);
98 virtual bool shouldEndEditing(const WebKit::WebRange& range);
99 virtual bool shouldInsertNode(
100 const WebKit::WebNode& node, const WebKit::WebRange& range,
101 WebKit::WebEditingAction action);
102 virtual bool shouldInsertText(
103 const WebKit::WebString& text, const WebKit::WebRange& range,
104 WebKit::WebEditingAction action);
105 virtual bool shouldChangeSelectedRange(
106 const WebKit::WebRange& from, const WebKit::WebRange& to,
107 WebKit::WebTextAffinity affinity, bool still_selecting);
108 virtual bool shouldDeleteRange(const WebKit::WebRange& range);
109 virtual bool shouldApplyStyle(
110 const WebKit::WebString& style, const WebKit::WebRange& range);
111 virtual void didBeginEditing();
112 virtual void didChangeSelection(bool is_selection_empty);
113 virtual void didChangeContents();
114 virtual void didEndEditing();
115 virtual bool handleCurrentKeyboardEvent();
116 virtual void spellCheck(
117 const WebKit::WebString& text, int& misspelledOffset,
118 int& misspelledLength);
119 virtual WebKit::WebString autoCorrectWord(
120 const WebKit::WebString& misspelled_word);
121 virtual void runModalAlertDialog(
122 WebKit::WebFrame* frame, const WebKit::WebString& message);
123 virtual bool runModalConfirmDialog(
124 WebKit::WebFrame* frame, const WebKit::WebString& message);
125 virtual bool runModalPromptDialog(
126 WebKit::WebFrame* frame, const WebKit::WebString& message,
127 const WebKit::WebString& default_value, WebKit::WebString* actual_value);
128 virtual bool runModalBeforeUnloadDialog(
129 WebKit::WebFrame* frame, const WebKit::WebString& message);
130 virtual void setStatusText(const WebKit::WebString& text);
131 virtual void startDragging(
132 WebKit::WebFrame* frame, const WebKit::WebDragData& data,
133 WebKit::WebDragOperationsMask mask, const WebKit::WebImage& image,
134 const WebKit::WebPoint& offset);
135 virtual void navigateBackForwardSoon(int offset);
136 virtual int historyBackListCount();
137 virtual int historyForwardListCount();
138 virtual WebKit::WebNotificationPresenter* notificationPresenter();
139 virtual WebKit::WebGeolocationClient* geolocationClient();
140 virtual WebKit::WebDeviceOrientationClient* deviceOrientationClient();
141 virtual WebKit::WebSpeechInputController* speechInputController(
142 WebKit::WebSpeechInputListener*);
143
144 // WebKit::WebWidgetClient
145 virtual void didInvalidateRect(const WebKit::WebRect& rect);
146 virtual void didScrollRect(int dx, int dy,
147 const WebKit::WebRect& clip_rect);
148 virtual void scheduleComposite();
149 virtual void scheduleAnimation();
150 virtual void didFocus();
151 virtual void didBlur();
152 virtual void didChangeCursor(const WebKit::WebCursorInfo& cursor);
153 virtual void closeWidgetSoon();
154 virtual void show(WebKit::WebNavigationPolicy policy);
155 virtual void runModal();
156 virtual WebKit::WebRect windowRect();
157 virtual void setWindowRect(const WebKit::WebRect& rect);
158 virtual WebKit::WebRect rootWindowRect();
159 virtual WebKit::WebRect windowResizerRect();
160 virtual WebKit::WebScreenInfo screenInfo();
161
162 // WebKit::WebFrameClient
163 virtual WebKit::WebPlugin* createPlugin(
164 WebKit::WebFrame*, const WebKit::WebPluginParams&);
165 virtual WebKit::WebMediaPlayer* createMediaPlayer(
166 WebKit::WebFrame*, const WebKit::WebURL&, WebKit::WebMediaPlayerClient*);
167 virtual WebKit::WebApplicationCacheHost* createApplicationCacheHost(
168 WebKit::WebFrame*, WebKit::WebApplicationCacheHostClient*);
169 virtual bool allowPlugins(WebKit::WebFrame* frame, bool enabled_per_settings);
170 virtual bool allowImage(WebKit::WebFrame* frame,
171 bool enabled_per_settings,
172 const WebKit::WebURL& image_url);
173 virtual void loadURLExternally(
174 WebKit::WebFrame*, const WebKit::WebURLRequest&,
175 WebKit::WebNavigationPolicy);
176 virtual WebKit::WebNavigationPolicy decidePolicyForNavigation(
177 WebKit::WebFrame*, WebKit::WebDataSource::ExtraData*,
178 const WebKit::WebURLRequest&, WebKit::WebNavigationType,
179 WebKit::WebNavigationPolicy default_policy, bool isRedirect);
180 // DEPRECATED
181 virtual WebKit::WebNavigationPolicy decidePolicyForNavigation(
182 WebKit::WebFrame*, const WebKit::WebURLRequest&,
183 WebKit::WebNavigationType, WebKit::WebNavigationPolicy default_policy,
184 bool isRedirect);
185 virtual bool canHandleRequest(
186 WebKit::WebFrame*, const WebKit::WebURLRequest&);
187 virtual WebKit::WebURLError cannotHandleRequestError(
188 WebKit::WebFrame*, const WebKit::WebURLRequest& request);
189 virtual WebKit::WebURLError cancelledError(
190 WebKit::WebFrame*, const WebKit::WebURLRequest& request);
191 virtual void unableToImplementPolicyWithError(
192 WebKit::WebFrame*, const WebKit::WebURLError&);
193 virtual void willPerformClientRedirect(
194 WebKit::WebFrame*, const WebKit::WebURL& from, const WebKit::WebURL& to,
195 double interval, double fire_time);
196 virtual void didCancelClientRedirect(WebKit::WebFrame*);
197 virtual void didCreateDataSource(
198 WebKit::WebFrame*, WebKit::WebDataSource*);
199 virtual void didStartProvisionalLoad(WebKit::WebFrame*);
200 virtual void didReceiveServerRedirectForProvisionalLoad(WebKit::WebFrame*);
201 virtual void didFailProvisionalLoad(
202 WebKit::WebFrame*, const WebKit::WebURLError&);
203 virtual void didCommitProvisionalLoad(
204 WebKit::WebFrame*, bool is_new_navigation);
205 virtual void didReceiveTitle(
206 WebKit::WebFrame*, const WebKit::WebString& title,
207 WebKit::WebTextDirection direction);
208 virtual void didFinishDocumentLoad(WebKit::WebFrame*);
209 virtual void didHandleOnloadEvents(WebKit::WebFrame*);
210 virtual void didFinishLoad(WebKit::WebFrame*);
211 virtual void didNavigateWithinPage(
212 WebKit::WebFrame*, bool is_new_navigation);
213 virtual void didChangeLocationWithinPage(
214 WebKit::WebFrame*);
215 virtual void assignIdentifierToRequest(
216 WebKit::WebFrame*, unsigned identifier, const WebKit::WebURLRequest&);
217 virtual void willSendRequest(
218 WebKit::WebFrame*, unsigned identifier, WebKit::WebURLRequest&,
219 const WebKit::WebURLResponse& redirectResponse);
220 virtual void didReceiveResponse(
221 WebKit::WebFrame*, unsigned identifier, const WebKit::WebURLResponse&);
222 virtual void didFinishResourceLoad(
223 WebKit::WebFrame*, unsigned identifier);
224 virtual void didFailResourceLoad(
225 WebKit::WebFrame*, unsigned identifier, const WebKit::WebURLError&);
226 virtual void didDisplayInsecureContent(WebKit::WebFrame* frame);
227 virtual void didRunInsecureContent(
228 WebKit::WebFrame* frame,
229 const WebKit::WebSecurityOrigin& origin,
230 const WebKit::WebURL& target_url);
231 virtual bool allowScript(WebKit::WebFrame* frame, bool enabled_per_settings);
232 virtual void openFileSystem(
233 WebKit::WebFrame* frame,
234 WebKit::WebFileSystemType type,
235 long long size,
236 bool create,
237 WebKit::WebFileSystemCallbacks* callbacks);
238
239 // webkit::npapi::WebPluginPageDelegate
240 virtual webkit::npapi::WebPluginDelegate* CreatePluginDelegate(
241 const base::FilePath& url,
242 const std::string& mime_type) OVERRIDE;
243 virtual WebKit::WebPlugin* CreatePluginReplacement(
244 const base::FilePath& file_path) OVERRIDE;
245 virtual void CreatedPluginWindow(
246 gfx::PluginWindowHandle handle) OVERRIDE;
247 virtual void WillDestroyPluginWindow(
248 gfx::PluginWindowHandle handle) OVERRIDE;
249 virtual void DidMovePlugin(
250 const webkit::npapi::WebPluginGeometry& move) OVERRIDE;
251 virtual void DidStartLoadingForPlugin() OVERRIDE {}
252 virtual void DidStopLoadingForPlugin() OVERRIDE {}
253 virtual WebKit::WebCookieJar* GetCookieJar() OVERRIDE;
254
255 explicit TestWebViewDelegate(TestShell* shell);
256 virtual ~TestWebViewDelegate();
257 void Reset();
258
259 // Additional accessors
260 #if defined(OS_WIN)
261 IDropTarget* drop_delegate() { return drop_delegate_.get(); }
262 #endif
263
264 void set_pending_extra_data(TestShellExtraData* extra_data) {
265 pending_extra_data_.reset(extra_data);
266 }
267
268 // Methods for modifying WebPreferences
269 void SetUserStyleSheetEnabled(bool is_enabled);
270 void SetUserStyleSheetLocation(const GURL& location);
271 void SetAuthorAndUserStylesEnabled(bool is_enabled);
272
273 // Sets the webview as a drop target.
274 void RegisterDragDrop();
275 void RevokeDragDrop();
276
277 void ResetDragDrop();
278
279 void SetCustomPolicyDelegate(bool is_custom, bool is_permissive);
280 void WaitForPolicyDelegate();
281
282 void set_clear_header(const std::string& header) {
283 clear_headers_.insert(header);
284 }
285 const std::set<std::string>& clear_headers() {
286 return clear_headers_;
287 }
288
289 void set_block_redirects(bool block_redirects) {
290 block_redirects_ = block_redirects;
291 }
292 bool block_redirects() const {
293 return block_redirects_;
294 }
295
296 void set_request_return_null(bool request_return_null) {
297 request_return_null_ = request_return_null;
298 }
299 bool request_return_null() const {
300 return request_return_null_;
301 }
302
303 void SetEditCommand(const std::string& name, const std::string& value) {
304 edit_command_name_ = name;
305 edit_command_value_ = value;
306 }
307
308 void ClearEditCommand() {
309 edit_command_name_.clear();
310 edit_command_value_.clear();
311 }
312
313 void ClearContextMenuData();
314
315 const WebKit::WebContextMenuData* last_context_menu_data() const {
316 return last_context_menu_data_.get();
317 }
318
319 MockSpellCheck* mock_spellcheck() {
320 return &mock_spellcheck_;
321 }
322
323 private:
324 // Called the title of the page changes.
325 // Can be used to update the title of the window.
326 void SetPageTitle(const base::string16& title);
327
328 // Called when the URL of the page changes.
329 // Extracts the URL and forwards on to SetAddressBarURL().
330 void UpdateAddressBar(WebKit::WebView* webView);
331
332 // Called when the URL of the page changes.
333 // Should be used to update the text of the URL bar.
334 void SetAddressBarURL(const GURL& url);
335
336 // Show a JavaScript alert as a popup message.
337 // The caller should test whether we're in layout test mode and only
338 // call this function when we really want a message to pop up.
339 void ShowJavaScriptAlert(const base::string16& message);
340
341 // Tests that require moving or resizing the main window (via resizeTo() or
342 // moveTo()) pass in Chrome even though Chrome disregards move requests for
343 // non-popup windows (see TabContents::RequestMove()). These functions allow
344 // the test shell to mimic its behavior. If setWindowRect() is called for
345 // the main window, the passed in WebRect is saved as fake_rect_ and we return
346 // it instead of the real window dimensions whenever rootWindowRect() is
347 // called.
348 WebKit::WebRect fake_window_rect();
349 void set_fake_window_rect(const WebKit::WebRect&);
350
351 WebWidgetHost* GetWidgetHost();
352
353 void UpdateForCommittedLoad(WebKit::WebFrame* frame, bool is_new_navigation);
354 void UpdateURL(WebKit::WebFrame* frame);
355 void UpdateSessionHistory(WebKit::WebFrame* frame);
356 void UpdateSelectionClipboard(bool is_empty_selection);
357
358 // Get a string suitable for dumping a frame to the console.
359 base::string16 GetFrameDescription(WebKit::WebFrame* webframe);
360
361 // Causes navigation actions just printout the intended navigation instead
362 // of taking you to the page. This is used for cases like mailto, where you
363 // don't actually want to open the mail program.
364 bool policy_delegate_enabled_;
365
366 // Toggles the behavior of the policy delegate. If true, then navigations
367 // will be allowed. Otherwise, they will be ignored (dropped).
368 bool policy_delegate_is_permissive_;
369
370 // If true, the policy delegate will signal layout test completion.
371 bool policy_delegate_should_notify_done_;
372
373 // Non-owning pointer. The delegate is owned by the host.
374 TestShell* shell_;
375
376 // For tracking session history. See RenderView.
377 int page_id_;
378 int last_page_id_updated_;
379
380 scoped_ptr<TestShellExtraData> pending_extra_data_;
381
382 // Maps resource identifiers to a descriptive string.
383 typedef std::map<uint32, std::string> ResourceMap;
384 ResourceMap resource_identifier_map_;
385 std::string GetResourceDescription(uint32 identifier);
386
387 scoped_ptr<WebKit::WebContextMenuData> last_context_menu_data_;
388
389 WebCursor current_cursor_;
390
391 WebKit::WebRect fake_rect_;
392 bool using_fake_rect_;
393
394 #if defined(OS_WIN)
395 // Classes needed by drag and drop.
396 scoped_refptr<TestDropDelegate> drop_delegate_;
397 #endif
398
399 #if defined(TOOLKIT_GTK)
400 // The type of cursor the window is currently using.
401 // Used for judging whether a new SetCursor call is actually changing the
402 // cursor.
403 GdkCursorType cursor_type_;
404 #endif
405
406 #if defined(OS_MACOSX)
407 scoped_ptr<WebKit::WebPopupMenuInfo> popup_menu_info_;
408 WebKit::WebRect popup_bounds_;
409 #endif
410
411 // Set of headers to clear in willSendRequest.
412 std::set<std::string> clear_headers_;
413
414 // true if we should block any redirects
415 bool block_redirects_;
416
417 // true if we should block (set an empty request for) any requests
418 bool request_return_null_;
419
420 // Edit command associated to the current keyboard event.
421 std::string edit_command_name_;
422 std::string edit_command_value_;
423
424 // The mock spellchecker used in TestWebViewDelegate::spellCheck().
425 MockSpellCheck mock_spellcheck_;
426
427 DISALLOW_COPY_AND_ASSIGN(TestWebViewDelegate);
428 };
429
430 #endif // WEBKIT_TOOLS_TEST_SHELL_TEST_WEBVIEW_DELEGATE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698