Changeset 120918 in webkit
- Timestamp:
- Jun 21, 2012 5:08:36 AM (12 years ago)
- Location:
- trunk/Source/WebKit/gtk
- Files:
-
- 3 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/gtk/ChangeLog
r120803 r120918 1 2012-06-21 Daniel Drake <dsd@laptop.org> 2 3 [GTK] Backport run-file-chooser to WebKit1 4 https://bugs.webkit.org/show_bug.cgi?id=87283 5 6 Reviewed by Gustavo Noronha Silva. 7 8 This is a relatively straightforward backport of Mario Sanchez 9 Prada's WebKit2 run-file-chooser signal work, intended for use by 10 OLPC and others who are not quite ready to move to WebKit2. 11 12 Add a new public class to the API, WebKitFileChooserRequest, to be 13 emitted along with a new WebKitWebView::run-file-chooser signal to 14 let client applications to provide their own file chooser dialog 15 when the use interacts with HTML Input elements of type 'file'. 16 17 * GNUmakefile.am: Added new source files and headers. 18 * webkit/webkitfilechooserrequest.cpp: Added. 19 (_WebKitFileChooserRequestPrivate): 20 (webkit_file_chooser_request_init): 21 (webkit_file_chooser_request_finalize): 22 (webkit_file_chooser_request_get_property): 23 (webkit_file_chooser_request_class_init): 24 (webkit_file_chooser_request_create): 25 (webkit_file_chooser_request_get_mime_types): 26 (webkit_file_chooser_request_get_mime_types_filter): 27 (webkit_file_chooser_request_get_select_multiple): 28 (webkit_file_chooser_request_select_files): 29 (webkit_file_chooser_request_get_selected_files): 30 * webkit/webkitfilechooserrequest.h: Added. 31 (_WebKitFileChooserRequest): 32 (_WebKitFileChooserRequestClass): 33 * webkit/webkitfilechooserrequestprivate.h: Added, 34 containing the prototype of webkit_file_chooser_request_create. 35 36 Provide private API to make a file chooser request from the 37 WebView, and provide a default handler for it. 38 39 * webkit/webkitwebview.cpp: 40 (fileChooserDialogResponseCallback): Handler for the 'response' 41 signal for the GtkFileChooserDialog used in the default 42 handler. It will call to webkit_file_chooser_request_select_files 43 or webkit_file_chooser_request_cancel as needed. 44 (webkitWebViewRealRunFileChooser): Default handler for the new 45 'run-file-chooser' signal. It will create a GtkFileChooserDialog, 46 connect to the 'response' signal and show it. 47 (webkit_web_view_class_init): Connect the 'run-file-chooser' 48 signal to the default handler, webkitWebViewRunFileChooser. 49 (webkit_web_view_new): 50 (webkitWebViewRunFileChooserRequest): 51 * webkit/webkitwebview.h: 52 (_WebKitWebViewClass): Added prototype for the handler of the new 53 'run-file-chooser' signal. 54 * webkit/webkitwebviewprivate.h: Added prototype for 55 private new function webkitWebViewRunFileChooserRequest. 56 57 Update runOpenPanel to use the new API, including a default handler 58 with similar behaviour to before. 59 60 * WebCoreSupport/ChromeClientGtk.cpp: 61 (WebKit::ChromeClient::runOpenPanel): Now creates an instance of 62 WebKitFileChooserRequest and asks the WebView to emit the 63 new 'run-file-chooser' signal with it. 64 65 Added the new public header to the main header. 66 67 * webkit/webkit.h: Added webkitfilechooserrequest.h 68 69 New unit tests for the new WebKitFileChooserRequest API. 70 71 * tests/testwebview.c: Various WebKitFileChooserRequest tests, 72 including MIME type filtering and selection handling. 73 74 Updated documentation related files with the new API. 75 76 * docs/webkitgtk-docs.sgml: Added new section. 77 * docs/webkitgtk-sections.txt: Added new API. 78 * docs/webkitgtk.types: Added get_type function. 79 1 80 2012-06-19 Chang Wan Hong <jourmoon@company100.net> 2 81 -
trunk/Source/WebKit/gtk/GNUmakefile.am
r120359 r120918 115 115 $(srcdir)/Source/WebKit/gtk/webkit/webkiterror.h \ 116 116 $(srcdir)/Source/WebKit/gtk/webkit/webkitfavicondatabase.h \ 117 $(srcdir)/Source/WebKit/gtk/webkit/webkitfilechooserrequest.h \ 117 118 $(srcdir)/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.h \ 118 119 $(srcdir)/Source/WebKit/gtk/webkit/webkitglobals.h \ … … 222 223 Source/WebKit/gtk/webkit/webkitfavicondatabase.cpp \ 223 224 Source/WebKit/gtk/webkit/webkitfavicondatabaseprivate.h \ 225 Source/WebKit/gtk/webkit/webkitfilechooserrequest.cpp \ 226 Source/WebKit/gtk/webkit/webkitfilechooserrequest.h \ 227 Source/WebKit/gtk/webkit/webkitfilechooserrequestprivate.h \ 224 228 Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.cpp \ 225 229 Source/WebKit/gtk/webkit/webkitgeolocationpolicydecisionprivate.h \ -
trunk/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
r120359 r120918 56 56 #include "WebKitDOMHTMLElementPrivate.h" 57 57 #include "WindowFeatures.h" 58 #include "webkitfilechooserrequestprivate.h" 58 59 #include "webkitgeolocationpolicydecision.h" 59 60 #include "webkitgeolocationpolicydecisionprivate.h" … … 816 817 void ChromeClient::runOpenPanel(Frame*, PassRefPtr<FileChooser> prpFileChooser) 817 818 { 818 RefPtr<FileChooser> chooser = prpFileChooser; 819 820 GtkWidget* toplevel = gtk_widget_get_toplevel(GTK_WIDGET(m_webView)); 821 if (!widgetIsOnscreenToplevelWindow(toplevel)) 822 toplevel = 0; 823 824 GtkWidget* dialog = gtk_file_chooser_dialog_new(_("Upload File"), 825 toplevel ? GTK_WINDOW(toplevel) : 0, 826 GTK_FILE_CHOOSER_ACTION_OPEN, 827 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, 828 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, 829 NULL); 830 831 gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), chooser->settings().allowsMultipleFiles); 832 833 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { 834 if (gtk_file_chooser_get_select_multiple(GTK_FILE_CHOOSER(dialog))) { 835 GOwnPtr<GSList> filenames(gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog))); 836 Vector<String> names; 837 for (GSList* item = filenames.get() ; item ; item = item->next) { 838 if (!item->data) 839 continue; 840 names.append(filenameToString(static_cast<char*>(item->data))); 841 g_free(item->data); 842 } 843 chooser->chooseFiles(names); 844 } else { 845 gchar* filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); 846 if (filename) 847 chooser->chooseFile(filenameToString(filename)); 848 g_free(filename); 849 } 850 } 851 gtk_widget_destroy(dialog); 819 GRefPtr<WebKitFileChooserRequest> request = adoptGRef(webkit_file_chooser_request_create(prpFileChooser)); 820 webkitWebViewRunFileChooserRequest(m_webView, request.get()); 852 821 } 853 822 -
trunk/Source/WebKit/gtk/docs/webkitgtk-docs.sgml
r110999 r120918 42 42 <xi:include href="xml/webkitspellchecker.xml"/> 43 43 <xi:include href="xml/webkitfavicondatabase.xml"/> 44 <xi:include href="xml/webkitfilechooserrequest.xml"/> 44 45 </chapter> 45 46 -
trunk/Source/WebKit/gtk/docs/webkitgtk-sections.txt
r111847 r120918 704 704 705 705 <SECTION> 706 <FILE>webkitfilechooserrequest</FILE> 707 <TITLE>WebKitFileChooserRequest</TITLE> 708 WebKitFileChooserRequest 709 webkit_file_chooser_request_get_select_multiple 710 webkit_file_chooser_request_get_mime_types 711 webkit_file_chooser_request_get_mime_types_filter 712 webkit_file_chooser_request_get_selected_files 713 webkit_file_chooser_request_select_files 714 715 <SUBSECTION Standard> 716 WEBKIT_TYPE_FILE_CHOOSER_REQUEST 717 WEBKIT_FILE_CHOOSER_REQUEST 718 WEBKIT_IS_FILE_CHOOSER_REQUEST 719 WEBKIT_FILE_CHOOSER_REQUEST_CLASS 720 WEBKIT_IS_FILE_CHOOSER_REQUEST_CLASS 721 WEBKIT_FILE_CHOOSER_REQUEST_GET_CLASS 722 723 <SUBSECTION Private> 724 WebKitFileChooserRequestClass 725 WebKitFileChooserRequestPrivate 726 webkit_file_chooser_request_get_type 727 </SECTION> 728 729 <SECTION> 706 730 <FILE>webkitdefines</FILE> 707 731 WEBKIT_API -
trunk/Source/WebKit/gtk/docs/webkitgtk.types
r110999 r120918 2 2 webkit_download_get_type 3 3 webkit_favicon_database_get_type 4 webkit_file_chooser_request_get_type 4 5 webkit_geolocation_policy_decision_get_type 5 6 webkit_hit_test_result_get_type -
trunk/Source/WebKit/gtk/tests/testwebview.c
r108996 r120918 507 507 } 508 508 509 static gboolean checkMimeTypeForFilter(GtkFileFilter* filter, const gchar* mimeType) 510 { 511 GtkFileFilterInfo filter_info; 512 filter_info.contains = GTK_FILE_FILTER_MIME_TYPE; 513 filter_info.mime_type = mimeType; 514 return gtk_file_filter_filter(filter, &filter_info); 515 } 516 517 static gboolean runFileChooserCbNoMultiselNoMime(WebKitWebView* webview, WebKitFileChooserRequest* request, gpointer data) 518 { 519 g_assert(!webkit_file_chooser_request_get_select_multiple(request)); 520 521 const gchar* const* mimeTypes = webkit_file_chooser_request_get_mime_types(request); 522 g_assert(!mimeTypes); 523 GtkFileFilter* filter = webkit_file_chooser_request_get_mime_types_filter(request); 524 g_assert(!filter); 525 526 const gchar* const* selectedFiles = webkit_file_chooser_request_get_selected_files(request); 527 g_assert(!selectedFiles); 528 529 g_main_loop_quit(loop); 530 return TRUE; 531 } 532 533 static gboolean runFileChooserCbMultiselNoMime(WebKitWebView* webview, WebKitFileChooserRequest* request, gpointer data) 534 { 535 g_assert(webkit_file_chooser_request_get_select_multiple(request)); 536 537 const gchar* const* mimeTypes = webkit_file_chooser_request_get_mime_types(request); 538 g_assert(!mimeTypes); 539 GtkFileFilter* filter = webkit_file_chooser_request_get_mime_types_filter(request); 540 g_assert(!filter); 541 const gchar* const* selectedFiles = webkit_file_chooser_request_get_selected_files(request); 542 g_assert(!selectedFiles); 543 544 // Select some files. 545 const gchar* filesToSelect[4] = { "/foo", "/foo/bar", "/foo/bar/baz", 0 }; 546 webkit_file_chooser_request_select_files(request, filesToSelect); 547 548 // Check the files that have been just selected. 549 selectedFiles = webkit_file_chooser_request_get_selected_files(request); 550 g_assert(selectedFiles); 551 g_assert_cmpstr(selectedFiles[0], ==, "/foo"); 552 g_assert_cmpstr(selectedFiles[1], ==, "/foo/bar"); 553 g_assert_cmpstr(selectedFiles[2], ==, "/foo/bar/baz"); 554 g_assert(!selectedFiles[3]); 555 556 g_main_loop_quit(loop); 557 return TRUE; 558 } 559 560 static gboolean runFileChooserCbSelectionRetained(WebKitWebView* webview, WebKitFileChooserRequest* request, gpointer data) 561 { 562 const gchar* const* selectedFiles = webkit_file_chooser_request_get_selected_files(request); 563 g_assert(selectedFiles); 564 g_assert_cmpstr(selectedFiles[0], ==, "/foo"); 565 g_assert_cmpstr(selectedFiles[1], ==, "/foo/bar"); 566 g_assert_cmpstr(selectedFiles[2], ==, "/foo/bar/baz"); 567 g_assert(!selectedFiles[3]); 568 569 g_main_loop_quit(loop); 570 return TRUE; 571 } 572 573 static gboolean runFileChooserCbNoMultiselAcceptTypes(WebKitWebView* webview, WebKitFileChooserRequest* request, gpointer data) 574 { 575 g_assert(!webkit_file_chooser_request_get_select_multiple(request)); 576 577 const gchar* const* mimeTypes = webkit_file_chooser_request_get_mime_types(request); 578 g_assert(mimeTypes); 579 g_assert_cmpstr(mimeTypes[0], ==, "audio/*"); 580 g_assert_cmpstr(mimeTypes[1], ==, "video/*"); 581 g_assert_cmpstr(mimeTypes[2], ==, "image/*"); 582 g_assert(!mimeTypes[3]); 583 584 GtkFileFilter* filter = webkit_file_chooser_request_get_mime_types_filter(request); 585 g_assert(GTK_IS_FILE_FILTER(filter)); 586 g_assert(checkMimeTypeForFilter(filter, "audio/*")); 587 g_assert(checkMimeTypeForFilter(filter, "video/*")); 588 g_assert(checkMimeTypeForFilter(filter, "image/*")); 589 590 const gchar* const* selectedFiles = webkit_file_chooser_request_get_selected_files(request); 591 g_assert(!selectedFiles); 592 593 g_main_loop_quit(loop); 594 return TRUE; 595 } 596 597 void doMouseButtonEvent(GtkWidget* widget, GdkEventType eventType, int x, int y, unsigned int button, unsigned int modifiers) 598 { 599 g_assert(gtk_widget_get_realized(widget)); 600 601 GdkEvent* event = gdk_event_new(eventType); 602 event->button.window = gtk_widget_get_window(widget); 603 g_object_ref(event->button.window); 604 605 event->button.time = GDK_CURRENT_TIME; 606 event->button.x = x; 607 event->button.y = y; 608 event->button.axes = 0; 609 event->button.state = modifiers; 610 event->button.button = button; 611 612 event->button.device = gdk_device_manager_get_client_pointer(gdk_display_get_device_manager(gtk_widget_get_display(widget))); 613 614 int xRoot, yRoot; 615 gdk_window_get_root_coords(gtk_widget_get_window(widget), x, y, &xRoot, &yRoot); 616 event->button.x_root = xRoot; 617 event->button.y_root = yRoot; 618 gtk_main_do_event(event); 619 } 620 621 static void clickMouseButton(GtkWidget* widget, int x, int y, unsigned int button, unsigned int modifiers) 622 { 623 doMouseButtonEvent(widget, GDK_BUTTON_PRESS, x, y, button, modifiers); 624 doMouseButtonEvent(widget, GDK_BUTTON_RELEASE, x, y, button, modifiers); 625 } 626 627 static gboolean clickMouseButtonAndWaitForFileChooserRequest(WebKitWebView* webView) 628 { 629 clickMouseButton(GTK_WIDGET(webView), 5, 5, 1, 0); 630 return TRUE; 631 } 632 633 static void test_webkit_web_view_file_chooser() 634 { 635 const gchar* htmlFormatBase = "<html><body>" 636 "<input style='position:absolute;left:0;top:0;margin:0;padding:0' type='file' %s/>" 637 "</body></html>"; 638 639 GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 640 GtkWidget* webView = webkit_web_view_new(); 641 gtk_container_add(GTK_CONTAINER(window), webView); 642 gtk_widget_show_all(window); 643 644 loop = g_main_loop_new(NULL, TRUE); 645 646 // Multiple selections not allowed, no MIME filtering. 647 gulong handler = g_signal_connect(webView, "run-file-chooser", G_CALLBACK(runFileChooserCbNoMultiselNoMime), NULL); 648 gchar* htmlFormat = g_strdup_printf(htmlFormatBase, ""); 649 webkit_web_view_load_string(WEBKIT_WEB_VIEW(webView), htmlFormat, NULL, NULL, NULL); 650 g_free(htmlFormat); 651 652 g_timeout_add(100, (GSourceFunc) clickMouseButtonAndWaitForFileChooserRequest, WEBKIT_WEB_VIEW(webView)); 653 g_main_loop_run(loop); 654 655 g_signal_handler_disconnect(webView, handler); 656 657 // Multiple selections allowed, no MIME filtering, some pre-selected files. 658 handler = g_signal_connect(webView, "run-file-chooser", G_CALLBACK(runFileChooserCbMultiselNoMime), NULL); 659 htmlFormat = g_strdup_printf(htmlFormatBase, "multiple"); 660 webkit_web_view_load_string(WEBKIT_WEB_VIEW(webView), htmlFormat, NULL, NULL, NULL); 661 g_free(htmlFormat); 662 663 g_timeout_add(100, (GSourceFunc) clickMouseButtonAndWaitForFileChooserRequest, WEBKIT_WEB_VIEW(webView)); 664 g_main_loop_run(loop); 665 666 g_signal_handler_disconnect(webView, handler); 667 668 // Perform another request to check if the list of files selected 669 // in the previous step appears now as part of the new request. 670 handler = g_signal_connect(webView, "run-file-chooser", G_CALLBACK(runFileChooserCbSelectionRetained), NULL); 671 g_timeout_add(100, (GSourceFunc) clickMouseButtonAndWaitForFileChooserRequest, WEBKIT_WEB_VIEW(webView)); 672 g_main_loop_run(loop); 673 674 g_signal_handler_disconnect(webView, handler); 675 676 // Multiple selections not allowed, only accept images, audio and video files. 677 handler = g_signal_connect(webView, "run-file-chooser", G_CALLBACK(runFileChooserCbNoMultiselAcceptTypes), NULL); 678 htmlFormat = g_strdup_printf(htmlFormatBase, "accept='audio/*,video/*,image/*'"); 679 webkit_web_view_load_string(WEBKIT_WEB_VIEW(webView), htmlFormat, NULL, NULL, NULL); 680 g_free(htmlFormat); 681 682 g_timeout_add(100, (GSourceFunc) clickMouseButtonAndWaitForFileChooserRequest, WEBKIT_WEB_VIEW(webView)); 683 g_main_loop_run(loop); 684 685 g_signal_handler_disconnect(webView, handler); 686 gtk_widget_destroy(window); 687 } 688 509 689 int main(int argc, char** argv) 510 690 { … … 538 718 g_test_add_data_func("/webkit/webview/fullscreen", GINT_TO_POINTER(FALSE), test_webkit_web_view_fullscreen); 539 719 g_test_add_data_func("/webkit/webview/fullscreen-blocked", GINT_TO_POINTER(TRUE), test_webkit_web_view_fullscreen); 720 g_test_add_func("/webkit/webview/file-chooser", test_webkit_web_view_file_chooser); 540 721 541 722 return g_test_run (); -
trunk/Source/WebKit/gtk/webkit/webkit.h
r110999 r120918 29 29 #include <webkit/webkitenumtypes.h> 30 30 #include <webkit/webkitfavicondatabase.h> 31 #include <webkit/webkitfilechooserrequest.h> 31 32 #include <webkit/webkitgeolocationpolicydecision.h> 32 33 #include <webkit/webkitglobals.h> -
trunk/Source/WebKit/gtk/webkit/webkitwebview.cpp
r120359 r120918 217 217 LEAVING_FULLSCREEN, 218 218 CONTEXT_MENU, 219 RUN_FILE_CHOOSER, 219 220 220 221 LAST_SIGNAL … … 1295 1296 } 1296 1297 1298 static void fileChooserDialogResponseCallback(GtkDialog* dialog, gint responseID, WebKitFileChooserRequest* request) 1299 { 1300 GRefPtr<WebKitFileChooserRequest> adoptedRequest = adoptGRef(request); 1301 if (responseID == GTK_RESPONSE_ACCEPT) { 1302 GOwnPtr<GSList> filesList(gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog))); 1303 GRefPtr<GPtrArray> filesArray = adoptGRef(g_ptr_array_new()); 1304 for (GSList* file = filesList.get(); file; file = g_slist_next(file)) 1305 g_ptr_array_add(filesArray.get(), file->data); 1306 g_ptr_array_add(filesArray.get(), 0); 1307 webkit_file_chooser_request_select_files(adoptedRequest.get(), reinterpret_cast<const gchar* const*>(filesArray->pdata)); 1308 } 1309 1310 gtk_widget_destroy(GTK_WIDGET(dialog)); 1311 } 1312 1313 static gboolean webkitWebViewRealRunFileChooser(WebKitWebView* webView, WebKitFileChooserRequest* request) 1314 { 1315 GtkWidget* toplevel = gtk_widget_get_toplevel(GTK_WIDGET(webView)); 1316 if (!widgetIsOnscreenToplevelWindow(toplevel)) 1317 toplevel = 0; 1318 1319 gboolean allowsMultipleSelection = webkit_file_chooser_request_get_select_multiple(request); 1320 GtkWidget* dialog = gtk_file_chooser_dialog_new(allowsMultipleSelection ? _("Select Files") : _("Select File"), 1321 toplevel ? GTK_WINDOW(toplevel) : 0, 1322 GTK_FILE_CHOOSER_ACTION_OPEN, 1323 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, 1324 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, 1325 NULL); 1326 1327 if (GtkFileFilter* filter = webkit_file_chooser_request_get_mime_types_filter(request)) 1328 gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter); 1329 gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), allowsMultipleSelection); 1330 1331 if (const gchar* const* selectedFiles = webkit_file_chooser_request_get_selected_files(request)) 1332 gtk_file_chooser_select_filename(GTK_FILE_CHOOSER(dialog), selectedFiles[0]); 1333 1334 g_signal_connect(dialog, "response", G_CALLBACK(fileChooserDialogResponseCallback), g_object_ref(request)); 1335 gtk_widget_show(dialog); 1336 1337 return TRUE; 1338 } 1339 1297 1340 static void webkit_web_view_dispose(GObject* object) 1298 1341 { … … 2547 2590 G_TYPE_NONE, 1, 2548 2591 WEBKIT_TYPE_WEB_FRAME); 2592 2593 /** 2594 * WebKitWebView::run-file-chooser: 2595 * @web_view: the #WebKitWebView on which the signal is emitted 2596 * @request: a #WebKitFileChooserRequest 2597 * 2598 * This signal is emitted when the user interacts with a <input 2599 * type='file' /> HTML element, requesting from WebKit to show 2600 * a dialog to select one or more files to be uploaded. To let the 2601 * application know the details of the file chooser, as well as to 2602 * allow the client application to either cancel the request or 2603 * perform an actual selection of files, the signal will pass an 2604 * instance of the #WebKitFileChooserRequest in the @request 2605 * argument. 2606 * 2607 * The default signal handler will asynchronously run a regular 2608 * #GtkFileChooserDialog for the user to interact with. 2609 * 2610 * If this signal is to be handled asynchronously, you must 2611 * call g_object_ref() on the @request, and return %TRUE to indicate 2612 * that the request is being handled. When you are ready to complete the 2613 * request, call webkit_file_chooser_request_select_files(). 2614 * 2615 * Returns: %TRUE to stop other handlers from being invoked for the event. 2616 * %FALSE to propagate the event further. 2617 * 2618 */ 2619 webkit_web_view_signals[RUN_FILE_CHOOSER] = 2620 g_signal_new("run-file-chooser", 2621 G_TYPE_FROM_CLASS(webViewClass), 2622 G_SIGNAL_RUN_LAST, 2623 G_STRUCT_OFFSET(WebKitWebViewClass, run_file_chooser), 2624 g_signal_accumulator_true_handled, 0 /* accumulator data */, 2625 webkit_marshal_BOOLEAN__OBJECT, 2626 G_TYPE_BOOLEAN, 1, /* number of parameters */ 2627 WEBKIT_TYPE_FILE_CHOOSER_REQUEST); 2549 2628 2550 2629 webkit_web_view_signals[SHOULD_BEGIN_EDITING] = g_signal_new("should-begin-editing", … … 2857 2936 webViewClass->entering_fullscreen = webkit_web_view_real_entering_fullscreen; 2858 2937 webViewClass->leaving_fullscreen = webkit_web_view_real_leaving_fullscreen; 2938 webViewClass->run_file_chooser = webkitWebViewRealRunFileChooser; 2859 2939 2860 2940 GObjectClass* objectClass = G_OBJECT_CLASS(webViewClass); … … 3611 3691 } 3612 3692 3693 void webkitWebViewRunFileChooserRequest(WebKitWebView* webView, WebKitFileChooserRequest* request) 3694 { 3695 gboolean returnValue; 3696 g_signal_emit(webView, webkit_web_view_signals[RUN_FILE_CHOOSER], 0, request, &returnValue); 3697 } 3698 3613 3699 // for internal use only 3614 3700 void webkit_web_view_notify_ready(WebKitWebView* webView) -
trunk/Source/WebKit/gtk/webkit/webkitwebview.h
r110999 r120918 29 29 #include <webkit/webkitdefines.h> 30 30 #include <webkit/webkitdom.h> 31 #include <webkit/webkitfilechooserrequest.h> 31 32 #include <webkit/webkitwebbackforwardlist.h> 32 33 #include <webkit/webkitwebframe.h> … … 179 180 gboolean (* entering_fullscreen) (WebKitWebView *web_view); 180 181 gboolean (* leaving_fullscreen) (WebKitWebView *web_view); 181 182 /* Padding for future expansion */ 183 void (*_webkit_reserved0) (void); 182 gboolean (* run_file_chooser) (WebKitWebView *web_view, 183 WebKitFileChooserRequest *request); 184 184 }; 185 185 -
trunk/Source/WebKit/gtk/webkit/webkitwebviewprivate.h
r119397 r120918 138 138 void webViewExitFullscreen(WebKitWebView* webView); 139 139 140 void webkitWebViewRunFileChooserRequest(WebKitWebView*, WebKitFileChooserRequest*); 141 140 142 #if ENABLE(ICONDATABASE) 141 143 void webkitWebViewRegisterForIconNotification(WebKitWebView*, bool shouldRegister);
Note: See TracChangeset
for help on using the changeset viewer.