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

Side by Side Diff: webkit/tools/test_shell/test_shell_gtk.cc

Issue 200054: Hook up WebFrameClient, replacing many WebViewDelegate methods.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 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
« no previous file with comments | « webkit/tools/test_shell/test_shell.cc ('k') | webkit/tools/test_shell/test_shell_mac.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 #include "webkit/tools/test_shell/test_shell.h" 5 #include "webkit/tools/test_shell/test_shell.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <fcntl.h> 8 #include <fcntl.h>
9 #include <fontconfig/fontconfig.h> 9 #include <fontconfig/fontconfig.h>
10 #include <gtk/gtk.h> 10 #include <gtk/gtk.h>
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 } 90 }
91 91
92 // Callback for when you click the reload button. 92 // Callback for when you click the reload button.
93 void ReloadButtonClicked(GtkButton* button, TestShell* shell) { 93 void ReloadButtonClicked(GtkButton* button, TestShell* shell) {
94 shell->Reload(); 94 shell->Reload();
95 } 95 }
96 96
97 // Callback for when you press enter in the URL box. 97 // Callback for when you press enter in the URL box.
98 void URLEntryActivate(GtkEntry* entry, TestShell* shell) { 98 void URLEntryActivate(GtkEntry* entry, TestShell* shell) {
99 const gchar* url = gtk_entry_get_text(entry); 99 const gchar* url = gtk_entry_get_text(entry);
100 shell->LoadURL(UTF8ToWide(url).c_str()); 100 shell->LoadURL(GURL(url));
101 } 101 }
102 102
103 // Callback for Debug > Dump body text... menu item. 103 // Callback for Debug > Dump body text... menu item.
104 gboolean DumpBodyTextActivated(GtkWidget* widget, TestShell* shell) { 104 gboolean DumpBodyTextActivated(GtkWidget* widget, TestShell* shell) {
105 shell->DumpDocumentText(); 105 shell->DumpDocumentText();
106 return FALSE; // Don't stop this message. 106 return FALSE; // Don't stop this message.
107 } 107 }
108 108
109 // Callback for Debug > Dump render tree... menu item. 109 // Callback for Debug > Dump render tree... menu item.
110 gboolean DumpRenderTreeActivated(GtkWidget* widget, TestShell* shell) { 110 gboolean DumpRenderTreeActivated(GtkWidget* widget, TestShell* shell) {
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 void TestShell::PlatformCleanUp() { 306 void TestShell::PlatformCleanUp() {
307 if (m_mainWnd) { 307 if (m_mainWnd) {
308 // Disconnect our MainWindowDestroyed handler so that we don't go through 308 // Disconnect our MainWindowDestroyed handler so that we don't go through
309 // the shutdown process more than once. 309 // the shutdown process more than once.
310 g_signal_handlers_disconnect_by_func(m_mainWnd, 310 g_signal_handlers_disconnect_by_func(m_mainWnd,
311 reinterpret_cast<gpointer>(MainWindowDestroyed), this); 311 reinterpret_cast<gpointer>(MainWindowDestroyed), this);
312 gtk_widget_destroy(GTK_WIDGET(m_mainWnd)); 312 gtk_widget_destroy(GTK_WIDGET(m_mainWnd));
313 } 313 }
314 } 314 }
315 315
316 bool TestShell::Initialize(const std::wstring& startingURL) { 316 bool TestShell::Initialize(const GURL& starting_url) {
317 m_mainWnd = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL)); 317 m_mainWnd = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));
318 gtk_window_set_title(m_mainWnd, "Test Shell"); 318 gtk_window_set_title(m_mainWnd, "Test Shell");
319 // Null out m_mainWnd when it is destroyed so we don't destroy it twice. 319 // Null out m_mainWnd when it is destroyed so we don't destroy it twice.
320 g_signal_connect(G_OBJECT(m_mainWnd), "destroy", 320 g_signal_connect(G_OBJECT(m_mainWnd), "destroy",
321 G_CALLBACK(gtk_widget_destroyed), &m_mainWnd); 321 G_CALLBACK(gtk_widget_destroyed), &m_mainWnd);
322 g_signal_connect(G_OBJECT(m_mainWnd), "destroy", 322 g_signal_connect(G_OBJECT(m_mainWnd), "destroy",
323 G_CALLBACK(MainWindowDestroyed), this); 323 G_CALLBACK(MainWindowDestroyed), this);
324 g_signal_connect(G_OBJECT(m_mainWnd), "focus-out-event", 324 g_signal_connect(G_OBJECT(m_mainWnd), "focus-out-event",
325 G_CALLBACK(MainWindowLostFocus), this); 325 G_CALLBACK(MainWindowLostFocus), this);
326 g_object_set_data(G_OBJECT(m_mainWnd), "test-shell", this); 326 g_object_set_data(G_OBJECT(m_mainWnd), "test-shell", this);
(...skipping 24 matching lines...) Expand all
351 gtk_toolbar_insert(GTK_TOOLBAR(toolbar), reload, -1 /* append */); 351 gtk_toolbar_insert(GTK_TOOLBAR(toolbar), reload, -1 /* append */);
352 352
353 GtkToolItem* stop = gtk_tool_button_new_from_stock(GTK_STOCK_STOP); 353 GtkToolItem* stop = gtk_tool_button_new_from_stock(GTK_STOCK_STOP);
354 g_signal_connect(G_OBJECT(stop), "clicked", 354 g_signal_connect(G_OBJECT(stop), "clicked",
355 G_CALLBACK(StopButtonClicked), this); 355 G_CALLBACK(StopButtonClicked), this);
356 gtk_toolbar_insert(GTK_TOOLBAR(toolbar), stop, -1 /* append */); 356 gtk_toolbar_insert(GTK_TOOLBAR(toolbar), stop, -1 /* append */);
357 357
358 m_editWnd = gtk_entry_new(); 358 m_editWnd = gtk_entry_new();
359 g_signal_connect(G_OBJECT(m_editWnd), "activate", 359 g_signal_connect(G_OBJECT(m_editWnd), "activate",
360 G_CALLBACK(URLEntryActivate), this); 360 G_CALLBACK(URLEntryActivate), this);
361 gtk_entry_set_text(GTK_ENTRY(m_editWnd), WideToUTF8(startingURL).c_str()); 361 gtk_entry_set_text(GTK_ENTRY(m_editWnd), starting_url.spec().c_str());
362 362
363 GtkToolItem* tool_item = gtk_tool_item_new(); 363 GtkToolItem* tool_item = gtk_tool_item_new();
364 gtk_container_add(GTK_CONTAINER(tool_item), m_editWnd); 364 gtk_container_add(GTK_CONTAINER(tool_item), m_editWnd);
365 gtk_tool_item_set_expand(tool_item, TRUE); 365 gtk_tool_item_set_expand(tool_item, TRUE);
366 gtk_toolbar_insert(GTK_TOOLBAR(toolbar), tool_item, -1 /* append */); 366 gtk_toolbar_insert(GTK_TOOLBAR(toolbar), tool_item, -1 /* append */);
367 367
368 gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0); 368 gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0);
369 m_webViewHost.reset( 369 m_webViewHost.reset(
370 WebViewHost::Create(vbox, delegate_.get(), *TestShell::web_prefs_)); 370 WebViewHost::Create(vbox, delegate_.get(), *TestShell::web_prefs_));
371 371
372 gtk_container_add(GTK_CONTAINER(m_mainWnd), vbox); 372 gtk_container_add(GTK_CONTAINER(m_mainWnd), vbox);
373 gtk_widget_show_all(GTK_WIDGET(m_mainWnd)); 373 gtk_widget_show_all(GTK_WIDGET(m_mainWnd));
374 374
375 // LoadURL will do a resize, so make sure we don't call LoadURL 375 // LoadURL will do a resize, so make sure we don't call LoadURL
376 // until we've completed all of our GTK setup. 376 // until we've completed all of our GTK setup.
377 if (!startingURL.empty()) 377 if (starting_url.is_valid())
378 LoadURL(startingURL.c_str()); 378 LoadURL(starting_url);
379 379
380 bool bIsSVGTest = startingURL.find(L"W3C-SVG-1.1") != std::wstring::npos; 380 if (IsSVGTestURL(starting_url))
381 if (bIsSVGTest)
382 SizeToSVG(); 381 SizeToSVG();
383 else 382 else
384 SizeToDefault(); 383 SizeToDefault();
385 384
386 return true; 385 return true;
387 } 386 }
388 387
389 void TestShell::TestFinished() { 388 void TestShell::TestFinished() {
390 if(!test_is_pending_) 389 if(!test_is_pending_)
391 return; 390 return;
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 546
548 shell->ResizeSubViews(); 547 shell->ResizeSubViews();
549 548
550 if (strstr(params.test_url.c_str(), "loading/") || 549 if (strstr(params.test_url.c_str(), "loading/") ||
551 strstr(params.test_url.c_str(), "loading\\")) 550 strstr(params.test_url.c_str(), "loading\\"))
552 shell->layout_test_controller()->SetShouldDumpFrameLoadCallbacks(true); 551 shell->layout_test_controller()->SetShouldDumpFrameLoadCallbacks(true);
553 552
554 shell->test_is_preparing_ = true; 553 shell->test_is_preparing_ = true;
555 554
556 shell->set_test_params(&params); 555 shell->set_test_params(&params);
557 std::wstring wstr = UTF8ToWide(params.test_url.c_str()); 556 shell->LoadURL(GURL(params.test_url));
558 shell->LoadURL(wstr.c_str());
559 557
560 shell->test_is_preparing_ = false; 558 shell->test_is_preparing_ = false;
561 shell->WaitTestFinished(); 559 shell->WaitTestFinished();
562 shell->set_test_params(NULL); 560 shell->set_test_params(NULL);
563 561
564 return true; 562 return true;
565 } 563 }
566 564
567 void TestShell::LoadURLForFrame(const wchar_t* url, 565 void TestShell::LoadURLForFrame(const GURL& url,
568 const wchar_t* frame_name) { 566 const std::wstring& frame_name) {
569 if (!url) 567 if (!url.is_valid())
570 return; 568 return;
571 569
572 bool bIsSVGTest = wcsstr(url, L"W3C-SVG-1.1") > 0; 570 if (IsSVGTestURL(url)) {
573
574 if (bIsSVGTest)
575 SizeToSVG(); 571 SizeToSVG();
576 else { 572 } else {
577 // only resize back to the default when running tests 573 // only resize back to the default when running tests
578 if (layout_test_mode()) 574 if (layout_test_mode())
579 SizeToDefault(); 575 SizeToDefault();
580 } 576 }
581 577
582 std::wstring frame_string; 578 navigation_controller_->LoadEntry(
583 if (frame_name) 579 new TestNavigationEntry(-1, url, std::wstring(), frame_name));
584 frame_string = frame_name;
585
586 std::wstring path(url);
587 GURL gurl;
588 // PathExists will reject any string with no leading '/'
589 // as well as empty strings.
590 if (file_util::AbsolutePath(&path))
591 gurl = net::FilePathToFileURL(FilePath::FromWStringHack(path));
592 else
593 gurl = GURL(WideToUTF8(url));
594
595 navigation_controller_->LoadEntry(new TestNavigationEntry(
596 -1, gurl, std::wstring(), frame_string));
597 } 580 }
598 581
599 // TODO(agl): PromptForSaveFile should use FilePath 582 // TODO(agl): PromptForSaveFile should use FilePath
600 bool TestShell::PromptForSaveFile(const wchar_t* prompt_title, 583 bool TestShell::PromptForSaveFile(const wchar_t* prompt_title,
601 std::wstring* result) { 584 std::wstring* result) {
602 GtkWidget* dialog; 585 GtkWidget* dialog;
603 dialog = gtk_file_chooser_dialog_new(WideToUTF8(prompt_title).c_str(), 586 dialog = gtk_file_chooser_dialog_new(WideToUTF8(prompt_title).c_str(),
604 GTK_WINDOW(m_mainWnd), 587 GTK_WINDOW(m_mainWnd),
605 GTK_FILE_CHOOSER_ACTION_SAVE, 588 GTK_FILE_CHOOSER_ACTION_SAVE,
606 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, 589 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 break; 669 break;
687 } 670 }
688 return TestShell::NetResourceProvider(resource_id); 671 return TestShell::NetResourceProvider(resource_id);
689 } 672 }
690 673
691 void GetPlugins(bool refresh, std::vector<WebPluginInfo>* plugins) { 674 void GetPlugins(bool refresh, std::vector<WebPluginInfo>* plugins) {
692 NPAPI::PluginList::Singleton()->GetPlugins(refresh, plugins); 675 NPAPI::PluginList::Singleton()->GetPlugins(refresh, plugins);
693 } 676 }
694 677
695 } // namespace webkit_glue 678 } // namespace webkit_glue
OLDNEW
« no previous file with comments | « webkit/tools/test_shell/test_shell.cc ('k') | webkit/tools/test_shell/test_shell_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698